From a5498ee33a8bff88a7d7a3bbe72cc9338c0a40cb Mon Sep 17 00:00:00 2001 From: Andy2 Date: Thu, 3 Nov 2011 05:20:11 -0700 Subject: [PATCH 01/10] fix find to return position rather than boolean --- xwords4/android/XWords4/jni/xwjni.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) 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 ); } From eace89000be9f5179a08b11923a9dabb32714fd4 Mon Sep 17 00:00:00 2001 From: Andy2 Date: Thu, 3 Nov 2011 05:20:38 -0700 Subject: [PATCH 02/10] save text size rather than figure each time --- .../src/org/eehouse/android/xw4/DictBrowseActivity.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) 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..c46c911a4 100644 --- a/xwords4/android/XWords4/src/org/eehouse/android/xw4/DictBrowseActivity.java +++ b/xwords4/android/XWords4/src/org/eehouse/android/xw4/DictBrowseActivity.java @@ -48,6 +48,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 +69,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 +124,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], From 6e58963231bd93986f73d576880d68bbf9542429 Mon Sep 17 00:00:00 2001 From: Andy2 Date: Thu, 3 Nov 2011 05:32:36 -0700 Subject: [PATCH 03/10] sign up to handle keyboard/orientation changes for dict browser --- xwords4/android/XWords4/AndroidManifest.xml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/xwords4/android/XWords4/AndroidManifest.xml b/xwords4/android/XWords4/AndroidManifest.xml index 750012176..2f3afa341 100644 --- a/xwords4/android/XWords4/AndroidManifest.xml +++ b/xwords4/android/XWords4/AndroidManifest.xml @@ -118,7 +118,9 @@ - + From d19858d6bbeebaf91b0f24fc6665030f60799291 Mon Sep 17 00:00:00 2001 From: Andy2 Date: Thu, 3 Nov 2011 05:51:38 -0700 Subject: [PATCH 04/10] add (buried) menuitem to launch dict browser from game. Required adding method to get current player from BoardView. --- xwords4/android/XWords4/res/menu/board_menu.xml | 2 ++ xwords4/android/XWords4/res/values/strings.xml | 1 + .../src/org/eehouse/android/xw4/BoardActivity.java | 6 ++++++ .../XWords4/src/org/eehouse/android/xw4/BoardView.java | 5 +++++ .../src/org/eehouse/android/xw4/DictBrowseActivity.java | 8 ++++++++ .../src/org/eehouse/android/xw4/DictsActivity.java | 4 +--- 6 files changed, 23 insertions(+), 3 deletions(-) diff --git a/xwords4/android/XWords4/res/menu/board_menu.xml b/xwords4/android/XWords4/res/menu/board_menu.xml index 8942cca64..8f4ee6d05 100644 --- a/xwords4/android/XWords4/res/menu/board_menu.xml +++ b/xwords4/android/XWords4/res/menu/board_menu.xml @@ -34,6 +34,8 @@ android:title="@string/board_menu_game_counts" /> + %1$s (%2$d words) No word in %1$s starts with %2$s. + Browse 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..35aeae9e1 100644 --- a/xwords4/android/XWords4/src/org/eehouse/android/xw4/BoardActivity.java +++ b/xwords4/android/XWords4/src/org/eehouse/android/xw4/BoardActivity.java @@ -620,6 +620,12 @@ public class BoardActivity extends XWActivity m_jniThread.handle( JNIThread.JNICmd.CMD_REMAINING, R.string.tiles_left_title ); break; + + case R.id.board_menu_browse_dict: + String dictName = m_gi.dictName( m_view.getCurPlayer() ); + DictBrowseActivity.launch( this, dictName ); + break; + case R.id.board_menu_game_history: m_jniThread.handle( JNIThread.JNICmd.CMD_HISTORY, R.string.history_title ); 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 c46c911a4..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; @@ -200,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() ); } } From 4f29f51253532d6d8f7dc1f1eeb0644718b15c2b Mon Sep 17 00:00:00 2001 From: Andy2 Date: Thu, 3 Nov 2011 06:18:15 -0700 Subject: [PATCH 05/10] turn dict iter feature on for linux for good --- xwords4/linux/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xwords4/linux/Makefile b/xwords4/linux/Makefile index 564b38571..ffb795b45 100644 --- a/xwords4/linux/Makefile +++ b/xwords4/linux/Makefile @@ -91,7 +91,7 @@ DEFINES += -DXWFEATURE_CHAT DEFINES += -DDISABLE_TILE_SEL DEFINES += -DSET_GAMESEED DEFINES += -DTEXT_MODEL -# DEFINES += -DXWFEATURE_WALKDICT +DEFINES += -DXWFEATURE_WALKDICT ifdef CURSES_CELL_HT DEFINES += -DCURSES_CELL_HT=$(CURSES_CELL_HT) From 627410250f5448d7aa77e954c78c0dd7f2ad5885 Mon Sep 17 00:00:00 2001 From: Andy2 Date: Thu, 3 Nov 2011 06:18:53 -0700 Subject: [PATCH 06/10] reuse existing code in dict_countWords() --- xwords4/common/dictiter.c | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/xwords4/common/dictiter.c b/xwords4/common/dictiter.c index c208790ab..a360bc767 100644 --- a/xwords4/common/dictiter.c +++ b/xwords4/common/dictiter.c @@ -178,18 +178,23 @@ wordsEqual( const DictIter* word1, const DictIter* word2 ) return success; } +static XP_Bool +firstWord( DictIter* iter ) +{ + iter->nEdges = 1; + iter->edges[0] = dict_getTopEdge( iter->dict ); + return ISACCEPTING( iter->dict, iter->edges[0] ) || nextWord( iter ); +} + XP_U32 dict_countWords( const DictionaryCtxt* dict ) { + XP_U32 count = 0; DictIter iter; dict_initIter( dict, &iter ); - XP_U32 count = 0; - iter.nEdges = 1; - iter.edges[0] = dict_getTopEdge( dict ); - if ( ISACCEPTING( dict, iter.edges[0] ) ) { - ++count; - } - while ( nextWord( &iter ) ) { + + XP_Bool ok; + for ( ok = firstWord( &iter ); ok; ok = nextWord( &iter ) ) { ++count; } return count; @@ -314,14 +319,6 @@ doOneDepth( const Tile* allTiles, XP_U16 nTiles, Tile* prefix, } } -static XP_Bool -firstWord( DictIter* iter ) -{ - iter->nEdges = 1; - iter->edges[0] = dict_getTopEdge( iter->dict ); - return ISACCEPTING( iter->dict, iter->edges[0] ) || nextWord( iter ); -} - void dict_makeIndex( const DictIter* iter, XP_U16 depth, IndexData* data ) { From 1de9f806e929503b9ee8afd4c18dcc9daf50e73b Mon Sep 17 00:00:00 2001 From: Andy2 Date: Thu, 3 Nov 2011 06:19:07 -0700 Subject: [PATCH 07/10] test dict_countWords() --- xwords4/linux/linuxmain.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/xwords4/linux/linuxmain.c b/xwords4/linux/linuxmain.c index 534651b94..5b357f010 100644 --- a/xwords4/linux/linuxmain.c +++ b/xwords4/linux/linuxmain.c @@ -945,6 +945,7 @@ walk_dict_test( const LaunchParams* params, const DictionaryCtxt* dict, XP_U32 count = dict_getWordCount( dict ); XP_ASSERT( count > 0 ); + XP_ASSERT( count == dict_countWords( dict ) ); char** words = g_malloc( count * sizeof(char*) ); XP_ASSERT( !!words ); // # define PRINT_ALL @@ -1071,7 +1072,7 @@ walk_dict_test( const LaunchParams* params, const DictionaryCtxt* dict, XP_FREE( params->util->mpool, data.indices ); XP_FREE( params->util->mpool, data.prefixes ); -} +} /* walk_dict_test */ static void walk_dict_test_all( const LaunchParams* params, GSList* testDicts, From 8db6b0bddd8a355bdea51d9df310602a62f70ff7 Mon Sep 17 00:00:00 2001 From: Andy2 Date: Thu, 3 Nov 2011 17:24:56 -0700 Subject: [PATCH 08/10] wrap toolbar in a HorizontalScrollView. Comes into action when all buttons are enabled. --- xwords4/android/XWords4/res/layout/board.xml | 73 +++++++++++--------- 1 file changed, 39 insertions(+), 34 deletions(-) diff --git a/xwords4/android/XWords4/res/layout/board.xml b/xwords4/android/XWords4/res/layout/board.xml index 136d09a95..86bd098f9 100644 --- a/xwords4/android/XWords4/res/layout/board.xml +++ b/xwords4/android/XWords4/res/layout/board.xml @@ -35,38 +35,43 @@ /> - - - - - - - - - + + + + + + + + + + + From 948def82237b640c1cfb11358a881d5e27763132 Mon Sep 17 00:00:00 2001 From: Andy2 Date: Thu, 3 Nov 2011 18:14:01 -0700 Subject: [PATCH 09/10] replace burried launch-dict-browser menuitem with toolbar button and newbie hint. --- xwords4/android/XWords4/res/layout/board.xml | 4 ++++ xwords4/android/XWords4/res/menu/board_menu.xml | 2 -- .../android/XWords4/res/values/common_rsrc.xml | 1 + xwords4/android/XWords4/res/values/strings.xml | 4 ++-- .../org/eehouse/android/xw4/BoardActivity.java | 14 +++++++++----- .../src/org/eehouse/android/xw4/Toolbar.java | 17 ++++++++++------- 6 files changed, 26 insertions(+), 16 deletions(-) diff --git a/xwords4/android/XWords4/res/layout/board.xml b/xwords4/android/XWords4/res/layout/board.xml index 86bd098f9..6e398d835 100644 --- a/xwords4/android/XWords4/res/layout/board.xml +++ b/xwords4/android/XWords4/res/layout/board.xml @@ -44,6 +44,10 @@ android:layout_width="fill_parent" android:layout_height="wrap_content" > + - 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 78f15c9a9..d282ed05a 100644 --- a/xwords4/android/XWords4/res/values/strings.xml +++ b/xwords4/android/XWords4/res/values/strings.xml @@ -1787,7 +1787,7 @@ %1$s (%2$d words) No word in %1$s starts with %2$s. - Browse wordlist + 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 35aeae9e1..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"; @@ -621,11 +622,6 @@ public class BoardActivity extends XWActivity R.string.tiles_left_title ); break; - case R.id.board_menu_browse_dict: - String dictName = m_gi.dictName( m_view.getCurPlayer() ); - DictBrowseActivity.launch( this, dictName ); - break; - case R.id.board_menu_game_history: m_jniThread.handle( JNIThread.JNICmd.CMD_HISTORY, R.string.history_title ); @@ -697,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; @@ -1416,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/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 From 30387bc528fdfeb049e9e216341ec366a7a94b48 Mon Sep 17 00:00:00 2001 From: Eric House Date: Thu, 3 Nov 2011 21:27:43 -0700 Subject: [PATCH 10/10] up version codes --- xwords4/android/XWords4/AndroidManifest.xml | 2 +- xwords4/android/XWords4/res/raw/changes | 26 ++++++++++++++----- .../XWords4/res/values/common_rsrc.xml | 2 +- 3 files changed, 21 insertions(+), 9 deletions(-) diff --git a/xwords4/android/XWords4/AndroidManifest.xml b/xwords4/android/XWords4/AndroidManifest.xml index 2f3afa341..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. --> 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 122009984..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