rough out UI for adding selected or played words to study list DB. Next: add a UI for displaying it etc.

This commit is contained in:
Eric House 2014-01-27 21:24:57 -08:00
parent af035962e6
commit 49d26dab07
9 changed files with 98 additions and 10 deletions

View file

@ -19,6 +19,10 @@
android:layout_weight="1"
/>
<Button android:id="@+id/button_study"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<Button android:id="@+id/button_done"
android:layout_width="fill_parent"
android:layout_height="wrap_content"

View file

@ -58,6 +58,7 @@
<string name="key_enable_sms">key_enable_sms</string>
<string name="key_keep_screenon">key_keep_screenon</string>
<string name="key_thumbsize">key_thumbsize3</string>
<string name="key_studyon">key_studyon</string>
<string name="key_summary_field">key_summary_field</string>
<string name="key_default_loc">key_default_loc</string>

View file

@ -1788,10 +1788,13 @@
<!-- New strings that need to be documented and found a home
above. -->
<string name="button_lookup">Look up words</string>
<string name="button_lookup_study">Look up/study words</string>
<!-- -->
<string name="button_lookupf">Look up %s</string>
<string name="button_lookup_studyf">Look up/study %s</string>
<!-- -->
<string name="title_lookup">Tap to look up</string>
<string name="title_lookup_study">Tap to look up or study</string>
<!-- -->
<string name="button_done">Done</string>
<!-- -->
@ -2200,4 +2203,10 @@
<string name="menu_rateme">Rate Crosswords</string>
<string name="no_market">Google Play app not found</string>
<string name="add_to_studyf">Add %s to study list</string>
<string name="title_studyon">Enable study lists</string>
<string name="summary_studyon">Offer to add to and display lists
of words to remember</string>
</resources>

View file

@ -246,6 +246,11 @@
android:summary="@string/summary_sort_tiles"
android:defaultValue="true"
/>
<CheckBoxPreference android:key="@string/key_studyon"
android:title="@string/title_studyon"
android:summary="@string/summary_studyon"
android:defaultValue="false"
/>
<CheckBoxPreference android:key="@string/key_ringer_zoom"
android:title="@string/ringer_zoom"
android:summary="@string/ringer_zoom_summary"

View file

@ -393,12 +393,16 @@ public class BoardActivity extends XWActivity
} else if ( DLG_SCORES_BLK == id ) {
if ( null != m_words && m_words.length > 0 ) {
String buttonTxt;
boolean studyOn = XWPrefs.getStudyEnabled( this );
if ( m_words.length == 1 ) {
buttonTxt = Utils.format( this,
R.string.button_lookupf,
m_words[0] );
int resID = studyOn
? R.string.button_lookup_studyf
: R.string.button_lookupf;
buttonTxt = Utils.format( this, resID, m_words[0] );
} else {
buttonTxt = getString( R.string.button_lookup );
int resID = studyOn ? R.string.button_lookup_study
: R.string.button_lookup;
buttonTxt = getString( resID );
}
lstnr = new DialogInterface.OnClickListener() {
public void onClick( DialogInterface dialog,

View file

@ -36,8 +36,9 @@ public class DBHelper extends SQLiteOpenHelper {
public static final String TABLE_NAME_DICTBROWSE = "dictbrowse";
public static final String TABLE_NAME_DICTINFO = "dictinfo";
public static final String TABLE_NAME_GROUPS = "groups";
public static final String TABLE_NAME_STUDYLIST = "study";
private static final String DB_NAME = "xwdb";
private static final int DB_VERSION = 18;
private static final int DB_VERSION = 19;
public static final String GAME_NAME = "GAME_NAME";
public static final String VISID = "VISID";
@ -87,6 +88,9 @@ public class DBHelper extends SQLiteOpenHelper {
public static final String GROUPNAME = "GROUPNAME";
public static final String EXPANDED = "EXPANDED";
public static final String WORD = "WORD";
public static final String LANGUAGE = "LANGUAGE";
private Context m_context;
private static final String[][] s_summaryColsAndTypes = {
@ -153,6 +157,12 @@ public class DBHelper extends SQLiteOpenHelper {
,{ EXPANDED, "INTEGER(1)" }
};
private static final String[][] s_studySchema = {
{ WORD, "TEXT" }
,{ LANGUAGE, "INTEGER(1)" }
,{ "UNIQUE", "(" + WORD + ", " + LANGUAGE + ")" }
};
public DBHelper( Context context )
{
super( context, DB_NAME, null, DB_VERSION );
@ -173,6 +183,7 @@ public class DBHelper extends SQLiteOpenHelper {
createTable( db, TABLE_NAME_DICTBROWSE, s_dictBrowseColsAndTypes );
forceRowidHigh( db, TABLE_NAME_SUM );
createGroupsTable( db );
createStudyTable( db );
}
@Override
@ -217,6 +228,9 @@ public class DBHelper extends SQLiteOpenHelper {
addSumColumn( db, THUMBNAIL );
// nothing yet
break;
case 18:
createStudyTable( db );
break;
default:
db.execSQL( "DROP TABLE " + TABLE_NAME_SUM + ";" );
if ( oldVersion >= 6 ) {
@ -278,6 +292,11 @@ public class DBHelper extends SQLiteOpenHelper {
XWPrefs.setDefaultNewGameGroup( m_context, newGroup );
}
private void createStudyTable( SQLiteDatabase db )
{
createTable( db, TABLE_NAME_STUDYLIST, s_studySchema );
}
// Move all existing games to the row previously named "cur games'
private void moveToCurGames( SQLiteDatabase db )
{

View file

@ -1565,6 +1565,21 @@ public class DBUtils {
return colNames;
}
public static void addToStudyList( Context context, String word,
int lang )
{
ContentValues values = new ContentValues();
values.put( DBHelper.WORD, word );
values.put( DBHelper.LANGUAGE, lang );
initDB( context );
synchronized( s_dbHelper ) {
SQLiteDatabase db = s_dbHelper.getWritableDatabase();
db.insert( DBHelper.TABLE_NAME_STUDYLIST, null, values );
db.close();
}
}
private static void copyGameDB( Context context, boolean toSDCard )
{
String name = DBHelper.getDBName();

View file

@ -41,7 +41,7 @@ public class LookupActivity extends XWListActivity
public static final String WORDS = "WORDS";
public static final String LANG = "LANG";
public static final String FORCELIST = "FORCELIST";
private static final String FORCELIST = "FORCELIST";
private static final String STATE = "STATE";
private static final String WORDINDEX = "WORDINDEX";
private static final String URLINDEX = "URLINDEX";
@ -62,11 +62,13 @@ public class LookupActivity extends XWListActivity
private String[] m_words;
private boolean m_forceList;
private boolean m_studyOn;
private int m_wordIndex = 0;
private int m_urlIndex = 0;
private int m_state;
private ArrayAdapter<String> m_wordsAdapter;
private Button m_doneButton;
private Button m_studyButton;
private TextView m_summary;
@Override
@ -80,6 +82,7 @@ public class LookupActivity extends XWListActivity
m_words = intent.getStringArrayExtra( WORDS );
setLang( intent.getIntExtra( LANG, -1 ) );
m_forceList = intent.getBooleanExtra( FORCELIST, false );
m_studyOn = XWPrefs.getStudyEnabled( this );
m_state = STATE_DONE;
adjustState( 1 );
@ -90,6 +93,12 @@ public class LookupActivity extends XWListActivity
m_doneButton = (Button)findViewById( R.id.button_done );
m_doneButton.setOnClickListener( this );
m_studyButton = (Button)findViewById( R.id.button_study );
if ( m_studyOn ) {
m_studyButton.setOnClickListener( this );
} else {
m_studyButton.setVisibility( View.GONE );
}
m_summary = (TextView)findViewById( R.id.summary );
@ -120,7 +129,11 @@ public class LookupActivity extends XWListActivity
/* View.OnClickListener -- just the Done button */
public void onClick( View view )
{
switchState( -1 );
if ( view == m_doneButton ) {
switchState( -1 );
} else if ( view == m_studyButton ) {
addToList( m_words[m_wordIndex] );
}
}
/* AdapterView.OnItemClickListener */
@ -146,7 +159,7 @@ public class LookupActivity extends XWListActivity
m_state += incr;
}
if ( STATE_URLS == m_state &&
( 1 >= s_lookupUrls.length && !m_forceList ) ) {
( 1 >= s_lookupUrls.length && !m_forceList && !m_studyOn ) ) {
m_state += incr;
}
if ( m_state == curState ) {
@ -169,8 +182,10 @@ public class LookupActivity extends XWListActivity
break;
case STATE_WORDS:
getListView().setAdapter( m_wordsAdapter );
setSummary( R.string.title_lookup );
setSummary( m_studyOn ?
R.string.title_lookup_study : R.string.title_lookup );
m_doneButton.setText( R.string.button_done );
m_studyButton.setVisibility( View.GONE );
break;
case STATE_URLS:
getListView().setAdapter( s_urlsAdapter );
@ -178,6 +193,10 @@ public class LookupActivity extends XWListActivity
String txt = Utils.format( this, R.string.button_donef,
m_words[m_wordIndex] );
m_doneButton.setText( txt );
txt = Utils.format( this, R.string.add_to_studyf,
m_words[m_wordIndex] );
m_studyButton.setVisibility( View.VISIBLE );
m_studyButton.setText( txt );
break;
case STATE_LOOKUP:
lookupWord( m_words[m_wordIndex], s_lookupUrls[m_urlIndex] );
@ -244,4 +263,11 @@ public class LookupActivity extends XWListActivity
String title = Utils.format( this, R.string.pick_url_titlef, word );
m_summary.setText( title );
}
private void addToList( String word )
{
String msg = String.format("Wants to study %s", word );
Utils.showToast( this, msg );
DBUtils.addToStudyList( this, word, s_lang );
}
}

View file

@ -370,6 +370,11 @@ public class XWPrefs {
return result;
}
public static boolean getStudyEnabled( Context context )
{
return getPrefsBoolean( context, R.string.key_studyon, false );
}
protected static String getPrefsString( Context context, int keyID )
{
String key = context.getString( keyID );
@ -424,4 +429,4 @@ public class XWPrefs {
{
setPrefsString( context, keyID, TextUtils.join( "\n", value ) );
}
}
}