add changes summary dialog shown on first launch after an upgrade.

This commit is contained in:
Andy2 2010-08-10 18:48:19 -07:00
parent 269bd15a45
commit 287ab2485f
4 changed files with 151 additions and 0 deletions

View file

@ -0,0 +1,32 @@
<html>
<head>
<style type="text/css">
body {font-size: smaller;}
</style>
</head>
<body>
<b>Crosswords 4.4 beta 14 release</b>
<ul>New features:
<li>This spiffy per-release dialog</li>
</ul>
<ul>Bugs fixed:
<li>bug 1</li>
<li>bug 2</li>
</ul>
<ul>Coming soon
<li>builtin online help</li>
<li>rewrite of gameplay via relay to make connecting easier etc.</li>
</ul>
<p>Please remember that this is beta software. Letting me know (at
eehouse@eehouse.org) what's broken and what features you'd most like
to see is the best way to help get this to release quality
quickly.</p>
<p>Thanks!<br>--Eric</p>
</body>

View file

@ -361,5 +361,6 @@
<string name="initial_player_minutes">Timer minutes per player</string>
<string name="git_rev_title">Source version id</string>
<string name="changes_title">Recent changes</string>
</resources>

View file

@ -0,0 +1,116 @@
/* -*- compile-command: "cd ../../../../../; ant install"; -*- */
/*
* Copyright 2010 by Eric House (xwords@eehouse.org). All rights
* reserved.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
package org.eehouse.android.xw4;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.content.pm.PackageInfo;
import android.app.AlertDialog;
import android.webkit.WebView;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
/* Put up a dialog greeting user after every upgrade. Based on
* similar feature in OpenSudoku, to whose author "Thanks".
*/
public class FirstRunDialog {
private static final String HIDDEN_PREFS = "xwprefs_hidden";
private static final String SHOWN_VERSION_KEY = "SHOWN_VERSION_KEY";
static void show( Context context )
{
int thisVersion = 0;
try {
thisVersion = context.getPackageManager()
.getPackageInfo(context.getPackageName(), 0)
.versionCode;
Utils.logf( "versionCode: %d", thisVersion );
} catch ( Exception e ) {
}
if ( thisVersion > 0 ) {
SharedPreferences prefs =
context.getSharedPreferences( HIDDEN_PREFS,
Context.MODE_PRIVATE );
int shownVersion = prefs.getInt( SHOWN_VERSION_KEY, 0 );
if ( shownVersion < thisVersion ) {
showDialog( context );
Editor editor = prefs.edit();
editor.putInt( SHOWN_VERSION_KEY, thisVersion );
editor.commit();
}
}
}
private static void showDialog( Context context )
{
String page = null;
InputStream inputStream = null;
try {
inputStream = context.getResources()
.openRawResource(R.raw.changes);
final char[] buf = new char[0x1000];
StringBuilder stringBuilder = new StringBuilder();
Reader reader = new InputStreamReader( inputStream, "UTF-8" );
int nRead;
do {
nRead = reader.read( buf, 0, buf.length );
if ( nRead > 0 ) {
stringBuilder.append( buf, 0, nRead );
}
} while ( nRead >= 0 );
page = stringBuilder.toString();
}
catch ( IOException ioe ) {
Utils.logf( ioe.toString() );
}
finally {
// could just catch NPE....
if ( null != inputStream ) {
try {
inputStream.close();
} catch ( IOException ioe ) {
Utils.logf( ioe.toString() );
}
}
}
// This won't support e.g mailto refs. Probably want to
// launch the browser with an intent eventually.
WebView view = new WebView( context );
view.loadData( page, "text/html", "utf-8" );
AlertDialog dialog = new AlertDialog.Builder( context )
.setIcon(android.R.drawable.ic_menu_info_details)
.setTitle( R.string.changes_title )
.setView( view )
.setPositiveButton( R.string.button_ok, null)
.create();
dialog.show();
}
}

View file

@ -127,6 +127,8 @@ public class GamesList extends ListActivity {
m_adapter = new GameListAdapter( this );
setListAdapter( m_adapter );
FirstRunDialog.show( this );
}
@Override