diff --git a/xwords4/android/XWords4/AndroidManifest.xml b/xwords4/android/XWords4/AndroidManifest.xml index 750012176..c254b2955 100644 --- a/xwords4/android/XWords4/AndroidManifest.xml +++ b/xwords4/android/XWords4/AndroidManifest.xml @@ -22,7 +22,7 @@ to come from a domain that you own or have control over. --> @@ -118,7 +118,9 @@ - + diff --git a/xwords4/android/XWords4/jni/xwjni.c b/xwords4/android/XWords4/jni/xwjni.c index f9a8cfc2f..698b17599 100644 --- a/xwords4/android/XWords4/jni/xwjni.c +++ b/xwords4/android/XWords4/jni/xwjni.c @@ -1450,10 +1450,9 @@ Java_org_eehouse_android_xw4_jni_XwJNI_dict_1iter_1getStartsWith XP_U16 nTiles = VSIZE(tiles); const char* prefix = (*env)->GetStringUTFChars( env, jprefix, NULL ); if ( dict_tilesForString( data->dict, prefix, tiles, &nTiles ) ) { - IndexData* idata = NULL; - DictPosition pos = dict_findStartsWith( &data->iter, idata, tiles, - nTiles ); - result = pos; + if ( dict_findStartsWith( &data->iter, NULL, tiles, nTiles ) ) { + result = dict_getPosition( &data->iter ); + } } (*env)->ReleaseStringUTFChars( env, jprefix, prefix ); } diff --git a/xwords4/android/XWords4/res/layout/board.xml b/xwords4/android/XWords4/res/layout/board.xml index 136d09a95..6e398d835 100644 --- a/xwords4/android/XWords4/res/layout/board.xml +++ b/xwords4/android/XWords4/res/layout/board.xml @@ -35,38 +35,47 @@ /> - - - - - - - - - + + + + + + + + + + + + diff --git a/xwords4/android/XWords4/res/raw/changes b/xwords4/android/XWords4/res/raw/changes index 908e38504..3d3b170a4 100644 --- a/xwords4/android/XWords4/res/raw/changes +++ b/xwords4/android/XWords4/res/raw/changes @@ -6,17 +6,29 @@ -Crosswords 4.4 beta 37 release +Crosswords 4.4 beta 38 release
    +
  • Added a wordlist browser, which you can get to by tapping a + wordlist in the Wordlist screen, or by using the wordlist + button at the bottom of the game board. Eventually you'll be + able to filter based on length, chosen tiles, etc. Right now + you can scroll through all the words (even 2.7 million of them + if you're playing in Polish.)
  • -
  • Extend ability to look up words to include those already on the - board. Hold your finger on any played tile to look up any of the - words that use it.
  • +
  • Added the "download directory" to locations I search for + wordlists. This means that if you're using a browser like + Opera that doesn't respect apps' registering for certain types + of data you can still use a wordlist you've downloaded.
  • -
  • Fix password dialog crashes
  • +
  • Added "Pick tiles face up" option, settable when you create a + game. This is primarily useful if you want to populate a + board to match a game that already exists, say in a newspaper + puzzle or online wordgame.
  • -
  • Show wordlist along with player name in Game Config screen, and - move below Language since it changes when language changes.
  • +
diff --git a/xwords4/android/XWords4/res/values/common_rsrc.xml b/xwords4/android/XWords4/res/values/common_rsrc.xml index 3c6a0ad28..4952568f9 100644 --- a/xwords4/android/XWords4/res/values/common_rsrc.xml +++ b/xwords4/android/XWords4/res/values/common_rsrc.xml @@ -3,7 +3,7 @@ - 4.4 beta 37 + 4.4 beta 38 key_color_tiles @@ -75,6 +75,7 @@ key_notagain_newfrom key_notagain_trading key_na_lookup + key_na_browse Crosswords diff --git a/xwords4/android/XWords4/res/values/strings.xml b/xwords4/android/XWords4/res/values/strings.xml index ebc1a9fc9..d282ed05a 100644 --- a/xwords4/android/XWords4/res/values/strings.xml +++ b/xwords4/android/XWords4/res/values/strings.xml @@ -1787,6 +1787,7 @@ %1$s (%2$d words) No word in %1$s starts with %2$s. + This button opens the wordlist + browser on the current player\'s wordlist. - diff --git a/xwords4/android/XWords4/src/org/eehouse/android/xw4/BoardActivity.java b/xwords4/android/XWords4/src/org/eehouse/android/xw4/BoardActivity.java index 6ad54c243..5521a720b 100644 --- a/xwords4/android/XWords4/src/org/eehouse/android/xw4/BoardActivity.java +++ b/xwords4/android/XWords4/src/org/eehouse/android/xw4/BoardActivity.java @@ -92,6 +92,7 @@ public class BoardActivity extends XWActivity private static final int CHAT_ACTION = 12; private static final int START_TRADE_ACTION = 13; private static final int LOOKUP_ACTION = 14; + private static final int BUTTON_BROWSE_ACTION = 15; private static final String DLG_TITLE = "DLG_TITLE"; private static final String DLG_TITLESTR = "DLG_TITLESTR"; @@ -620,6 +621,7 @@ public class BoardActivity extends XWActivity m_jniThread.handle( JNIThread.JNICmd.CMD_REMAINING, R.string.tiles_left_title ); break; + case R.id.board_menu_game_history: m_jniThread.handle( JNIThread.JNICmd.CMD_HISTORY, R.string.history_title ); @@ -691,6 +693,10 @@ public class BoardActivity extends XWActivity Toast.LENGTH_SHORT).show(); m_toastStr = null; break; + case BUTTON_BROWSE_ACTION: + String dictName = m_gi.dictName( m_view.getCurPlayer() ); + DictBrowseActivity.launch( this, dictName ); + break; case PREV_HINT_ACTION: cmd = JNIThread.JNICmd.CMD_PREV_HINT; break; @@ -1410,6 +1416,10 @@ public class BoardActivity extends XWActivity private void populateToolbar() { + m_toolbar.setListener( Toolbar.BUTTON_BROWSE_DICT, + R.string.not_again_browse, + R.string.key_na_browse, + BUTTON_BROWSE_ACTION ); m_toolbar.setListener( Toolbar.BUTTON_HINT_PREV, R.string.not_again_hintprev, R.string.key_notagain_hintprev, diff --git a/xwords4/android/XWords4/src/org/eehouse/android/xw4/BoardView.java b/xwords4/android/XWords4/src/org/eehouse/android/xw4/BoardView.java index 428fc8e7b..12e936dcc 100644 --- a/xwords4/android/XWords4/src/org/eehouse/android/xw4/BoardView.java +++ b/xwords4/android/XWords4/src/org/eehouse/android/xw4/BoardView.java @@ -338,6 +338,11 @@ public class BoardView extends View implements DrawCtx, BoardHandler, m_jniThread.handle( JNIThread.JNICmd.CMD_INVALALL ); } + public int getCurPlayer() + { + return m_trayOwner; + } + public int curPending() { return m_pendingScore; diff --git a/xwords4/android/XWords4/src/org/eehouse/android/xw4/DictBrowseActivity.java b/xwords4/android/XWords4/src/org/eehouse/android/xw4/DictBrowseActivity.java index 1d5290676..c0418fe38 100644 --- a/xwords4/android/XWords4/src/org/eehouse/android/xw4/DictBrowseActivity.java +++ b/xwords4/android/XWords4/src/org/eehouse/android/xw4/DictBrowseActivity.java @@ -20,6 +20,7 @@ package org.eehouse.android.xw4; +import android.content.Context; import android.content.Intent; import android.database.DataSetObserver; import android.os.Bundle; @@ -48,6 +49,7 @@ public class DictBrowseActivity extends XWListActivity private int m_lang; private String m_name; private int m_nWords; + private float m_textSize; // - Steps to reproduce the problem: // Create ListView, set custom adapter which implements ListAdapter and @@ -68,7 +70,7 @@ public class DictBrowseActivity extends XWListActivity if ( null != str ) { text.setText( str ); text.setOnClickListener( DictBrowseActivity.this ); - text.setTextSize( text.getTextSize() + 2.0f ); + text.setTextSize( m_textSize ); } return text; } @@ -123,6 +125,8 @@ public class DictBrowseActivity extends XWListActivity m_name = name; m_lang = DictLangCache.getDictLangCode( this, name ); + m_textSize = 2.0f + new TextView( this ).getTextSize(); + String[] names = { name }; DictUtils.DictPairs pairs = DictUtils.openDicts( this, names ); m_dictClosure = XwJNI.dict_iter_init( pairs.m_bytes[0], @@ -197,4 +201,11 @@ public class DictBrowseActivity extends XWListActivity } } } + + public static void launch( Context caller, String name ) + { + Intent intent = new Intent( caller, DictBrowseActivity.class ); + intent.putExtra( DICT_NAME, name ); + caller.startActivity( intent ); + } } diff --git a/xwords4/android/XWords4/src/org/eehouse/android/xw4/DictsActivity.java b/xwords4/android/XWords4/src/org/eehouse/android/xw4/DictsActivity.java index 8332169a7..989b66b6e 100644 --- a/xwords4/android/XWords4/src/org/eehouse/android/xw4/DictsActivity.java +++ b/xwords4/android/XWords4/src/org/eehouse/android/xw4/DictsActivity.java @@ -462,9 +462,7 @@ public class DictsActivity extends ExpandableListActivity askStartDownload( 0, null ); } else { XWListItem item = (XWListItem)view; - Intent intent = new Intent( this, DictBrowseActivity.class ); - intent.putExtra( DictBrowseActivity.DICT_NAME, item.getText() ); - startActivity( intent ); + DictBrowseActivity.launch( this, item.getText() ); } } diff --git a/xwords4/android/XWords4/src/org/eehouse/android/xw4/Toolbar.java b/xwords4/android/XWords4/src/org/eehouse/android/xw4/Toolbar.java index daf821c48..5d9f15097 100644 --- a/xwords4/android/XWords4/src/org/eehouse/android/xw4/Toolbar.java +++ b/xwords4/android/XWords4/src/org/eehouse/android/xw4/Toolbar.java @@ -39,15 +39,18 @@ public class Toolbar { public int m_id; } - public static final int BUTTON_HINT_PREV = 0; - public static final int BUTTON_HINT_NEXT = 1; - public static final int BUTTON_FLIP = 2; - public static final int BUTTON_JUGGLE = 3; - public static final int BUTTON_ZOOM = 4; - public static final int BUTTON_UNDO = 5; - public static final int BUTTON_CHAT = 6; + public static final int BUTTON_BROWSE_DICT = 0; + public static final int BUTTON_HINT_PREV = 1; + public static final int BUTTON_HINT_NEXT = 2; + public static final int BUTTON_FLIP = 3; + public static final int BUTTON_JUGGLE = 4; + public static final int BUTTON_ZOOM = 5; + public static final int BUTTON_UNDO = 6; + public static final int BUTTON_CHAT = 7; private static TBButtonInfo[] s_buttonInfo = { + // BUTTON_BROWSE_DICT + new TBButtonInfo(R.id.dictlist_button_horizontal ), // BUTTON_HINT_PREV new TBButtonInfo(R.id.prevhint_button_horizontal ), // BUTTON_HINT_NEXT diff --git a/xwords4/linux/linuxmain.c b/xwords4/linux/linuxmain.c index 49c89fcc3..3b2d9b703 100644 --- a/xwords4/linux/linuxmain.c +++ b/xwords4/linux/linuxmain.c @@ -951,26 +951,6 @@ walk_dict_test( const LaunchParams* params, const DictionaryCtxt* dict, long jj; XP_Bool gotOne; - /* XP_U32 count = dict_getWordCount( dict ); */ - /* XP_ASSERT( count > 0 ); */ - /* char** words = g_malloc( count * sizeof(char*) ); */ - /* XP_ASSERT( !!words ); */ - /* // # define PRINT_ALL */ - - /* /\* if ( dict_firstWord( dict, &word ) *\/ */ - /* /\* && dict_getNextWord( dict, &word ) *\/ */ - /* /\* && dict_getPrevWord( dict, &word ) ) { *\/ */ - /* /\* fprintf( stderr, "yay!: dict_getPrevWord returned\n" ); *\/ */ - /* /\* } *\/ */ - /* /\* exit( 0 ); *\/ */ - - /* dict_initIter( dict, &iter ); */ - /* for ( jj = 0, gotOne = dict_firstWord( &iter ); */ - /* gotOne; */ - /* ++jj, gotOne = dict_getNextWord( &iter ) ) { */ - /* XP_ASSERT( dict_getPosition( &iter ) == jj ); */ - /* XP_UCHAR buf[64]; */ - /* dict_wordToString( &iter, buf, VSIZE(buf) ); */ XP_U16 min, max; if ( !testMinMax || !parsePair( testMinMax, &min, &max ) ) { min = 0;