From c796e7d4cc513b726e1e5d0c6ae261a68e6fabb5 Mon Sep 17 00:00:00 2001 From: Eric House Date: Fri, 17 Jul 2015 06:10:08 -0700 Subject: [PATCH 1/6] clear the net status rect for standalone games' boards to avoid ghost button effect when they're opened after a networked game. --- .../src/org/eehouse/android/xw4/ConnStatusHandler.java | 5 +++++ .../XWords4/src/org/eehouse/android/xw4/jni/JNIThread.java | 2 ++ 2 files changed, 7 insertions(+) diff --git a/xwords4/android/XWords4/src/org/eehouse/android/xw4/ConnStatusHandler.java b/xwords4/android/XWords4/src/org/eehouse/android/xw4/ConnStatusHandler.java index f030afd74..df0ca1c45 100644 --- a/xwords4/android/XWords4/src/org/eehouse/android/xw4/ConnStatusHandler.java +++ b/xwords4/android/XWords4/src/org/eehouse/android/xw4/ConnStatusHandler.java @@ -146,6 +146,11 @@ public class ConnStatusHandler { s_rect = new Rect( left, top, right, bottom ); } + public static void clearRect() + { + s_rect = null; + } + public static void setHandler( ConnStatusCBacks cbacks ) { s_cbacks = cbacks; diff --git a/xwords4/android/XWords4/src/org/eehouse/android/xw4/jni/JNIThread.java b/xwords4/android/XWords4/src/org/eehouse/android/xw4/jni/JNIThread.java index ad22c69e2..cee2eaeb3 100644 --- a/xwords4/android/XWords4/src/org/eehouse/android/xw4/jni/JNIThread.java +++ b/xwords4/android/XWords4/src/org/eehouse/android/xw4/jni/JNIThread.java @@ -250,6 +250,8 @@ public class JNIThread extends Thread { int left = dims.scoreLeft + dims.scoreWidth + dims.timerWidth; ConnStatusHandler.setRect( left, dims.top, left + statusWidth, dims.top + dims.scoreHt ); + } else { + ConnStatusHandler.clearRect(); } XwJNI.board_applyLayout( m_jniGamePtr, dims ); From f626d6ca4c38a1954138e4dbe9e64eb5cf0034f9 Mon Sep 17 00:00:00 2001 From: Eric House Date: Tue, 21 Jul 2015 06:55:15 -0700 Subject: [PATCH 2/6] remove redundant constant --- .../src/org/eehouse/android/xw4/UpdateCheckReceiver.java | 2 +- xwords4/android/scripts/genvers.sh | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/xwords4/android/XWords4/src/org/eehouse/android/xw4/UpdateCheckReceiver.java b/xwords4/android/XWords4/src/org/eehouse/android/xw4/UpdateCheckReceiver.java index 9234b5954..d190a8eb2 100644 --- a/xwords4/android/XWords4/src/org/eehouse/android/xw4/UpdateCheckReceiver.java +++ b/xwords4/android/XWords4/src/org/eehouse/android/xw4/UpdateCheckReceiver.java @@ -136,7 +136,7 @@ public class UpdateCheckReceiver extends BroadcastReceiver { appParams.put( k_AVERS, versionCode ); appParams.put( k_GVERS, BuildConstants.GIT_REV ); - appParams.put( k_GHASH, BuildConstants.GIT_HASH ); + appParams.put( k_GHASH, context.getString( R.string.git_rev ) ); appParams.put( k_INSTALLER, installer ); if ( devOK( context ) ) { appParams.put( k_DEVOK, true ); diff --git a/xwords4/android/scripts/genvers.sh b/xwords4/android/scripts/genvers.sh index 05e85bad9..7f77f5b71 100755 --- a/xwords4/android/scripts/genvers.sh +++ b/xwords4/android/scripts/genvers.sh @@ -50,7 +50,6 @@ cat < ${BUILD_DIR}/src/org/eehouse/android/${VARIANT}/BuildConstants.java package org.eehouse.android.${VARIANT}; class BuildConstants { public static final String GIT_REV = "$SHORTVERS"; - public static final String GIT_HASH = "$GITHASH"; public static final String STRINGS_HASH = "$STRINGS_HASH"; public static final short CLIENT_VERS_RELAY = $CLIENT_VERS_RELAY; public static final boolean CHAT_SUPPORTED = $CHAT_SUPPORTED; From fa00eef15141c023978ff99945ee7d5e19561c92 Mon Sep 17 00:00:00 2001 From: Eric House Date: Thu, 23 Jul 2015 06:56:12 -0700 Subject: [PATCH 3/6] convert string to plurals and add some "one" items to others to allow removing [s]. There's more to do still. --- xwords4/android/XWords4/archive/R.java | 564 +++++++++--------- .../android/XWords4/res/values/strings.xml | 36 +- .../XWords4/res_src/values-ba_CK/strings.xml | 26 +- .../XWords4/res_src/values-ca_PS/strings.xml | 26 +- .../android/xw4/SMSInviteDelegate.java | 5 +- 5 files changed, 350 insertions(+), 307 deletions(-) diff --git a/xwords4/android/XWords4/archive/R.java b/xwords4/android/XWords4/archive/R.java index b95808d60..5a982b4fe 100644 --- a/xwords4/android/XWords4/archive/R.java +++ b/xwords4/android/XWords4/archive/R.java @@ -335,7 +335,10 @@ public final class R { public static final int studylist=0x7f090006; } public static final class plurals { - public static final int bt_err_count_fmt=0x7f07001c; + public static final int bt_err_count_fmt=0x7f07001d; + /** + */ + public static final int confirm_clear_fmt=0x7f070010; /** text of confirmation dialog posted when the delete 'X' button beside the listing of a wordlist is tapped. The name of the wordlist is substituted for %1$s. Sometimes one of the two @@ -347,16 +350,16 @@ public final class R { */ public static final int confirm_reset_fmt=0x7f070002; public static final int confirm_seldeletes_fmt=0x7f070001; - public static final int confirm_studylist_clear_fmt=0x7f070013; + public static final int confirm_studylist_clear_fmt=0x7f070014; /** */ public static final int dict_browse_title1_fmt=0x7f07000d; /** */ public static final int dict_browse_title_fmt=0x7f07000c; - public static final int group_name_fmt=0x7f070012; - public static final int groups_confirm_del_fmt=0x7f070010; - public static final int groups_confirm_del_games_fmt=0x7f070011; + public static final int group_name_fmt=0x7f070013; + public static final int groups_confirm_del_fmt=0x7f070011; + public static final int groups_confirm_del_games_fmt=0x7f070012; /** */ public static final int invite_bt_desc_fmt=0x7f07000e; @@ -373,9 +376,9 @@ public final class R { /** */ public static final int invite_sms_desc_fmt=0x7f07000f; - public static final int lang_name_fmt=0x7f070016; - public static final int lmi_move_fmt=0x7f07001a; - public static final int lmi_trade_fmt=0x7f07001b; + public static final int lang_name_fmt=0x7f070017; + public static final int lmi_move_fmt=0x7f07001b; + public static final int lmi_trade_fmt=0x7f07001c; /** Otherwise they're listed with this to give some indication of how far along they are. I may list "tiles left" someday instead... @@ -389,17 +392,17 @@ public final class R { only once per game. */ public static final int msg_relay_waiting_fmt=0x7f070006; - public static final int nag_days_fmt=0x7f070019; - public static final int nag_hours_fmt=0x7f070018; + public static final int nag_days_fmt=0x7f07001a; + public static final int nag_hours_fmt=0x7f070019; /** body of warning notification reminder message. First three are used to build a string based on the length of time that's then inserted in the fourth. E.g "PlayerName moved more than 2 day[s], 4 hour[s] ago." */ - public static final int nag_minutes_fmt=0x7f070017; - public static final int new_xlations_fmt=0x7f070015; - public static final int nplayers_fmt=0x7f07001d; - public static final int paste_done_fmt=0x7f070014; + public static final int nag_minutes_fmt=0x7f070018; + public static final int new_xlations_fmt=0x7f070016; + public static final int nplayers_fmt=0x7f07001e; + public static final int paste_done_fmt=0x7f070015; /** Toast shown when players are missing, same time as above but more subtle. */ @@ -442,23 +445,23 @@ public final class R { /** Another paragraph in the about dialog */ public static final int about_web=0x7f0501bd; - public static final int add_done_fmt=0x7f050269; - public static final int add_to_study_fmt=0x7f050263; + public static final int add_done_fmt=0x7f050268; + public static final int add_to_study_fmt=0x7f050262; /** Debugging stuff. Localize if you think your langauge users will care. */ - public static final int advanced=0x7f0502ce; + public static final int advanced=0x7f0502cd; /** This button takes you to the normal Game Configure screen */ public static final int advanced_config=0x7f05017a; - public static final int advanced_summary=0x7f0502cf; + public static final int advanced_summary=0x7f0502ce; /** */ public static final int alert_empty_dict_fmt=0x7f0501d8; /** The name of the app. Not localized! */ public static final int app_name=0x7f050001; - public static final int app_not_found_fmt=0x7f0502ae; + public static final int app_not_found_fmt=0x7f0502ad; public static final int app_version=0x7f050000; /** the background color of the area outside the board, e.g. between entries in the scoreboard @@ -478,7 +481,7 @@ public final class R { public static final int blue=0x7f050144; /** board menu for small devices only */ - public static final int board_menu_dict=0x7f05020f; + public static final int board_menu_dict=0x7f05020e; /** ############################################################ # :Menus: @@ -516,7 +519,7 @@ public final class R { asking. */ public static final int board_menu_game_left=0x7f0500f5; - public static final int board_menu_game_netstats=0x7f0502d9; + public static final int board_menu_game_netstats=0x7f0502d8; /** Meaningful only for networked games, this menu causes all messages that have not yet been acknowledged by a remote device in the game to be resent. Eventually I hope to be @@ -525,7 +528,7 @@ public final class R { */ public static final int board_menu_game_resend=0x7f0500f9; public static final int board_menu_game_resign=0x7f0500f8; - public static final int board_menu_invite=0x7f05025c; + public static final int board_menu_invite=0x7f05025b; /** */ public static final int board_menu_pass=0x7f0501cb; @@ -542,7 +545,7 @@ public final class R { public static final int board_menu_tray_show=0x7f0500f1; /** */ - public static final int board_menu_undo_current=0x7f050209; + public static final int board_menu_undo_current=0x7f050208; /** Undos the last *committed* turn. Note that this is different from the undo button that undoes or redoes an in-progress not-yet-committed turn. This is disabled for networked @@ -596,7 +599,7 @@ public final class R { /** Title of device picker during invitation to a game via Bluetooth */ public static final int bt_invite_title=0x7f0501f2; - public static final int bt_no_devs=0x7f0502ad; + public static final int bt_no_devs=0x7f0502ac; /** Turn Bluetooth on In the Bluetooth invite device dialog */ @@ -613,7 +616,7 @@ public final class R { /** The only button available when the above message is displayed */ public static final int button_close_game=0x7f05018b; - public static final int button_decline=0x7f05023c; + public static final int button_decline=0x7f05023b; /** */ public static final int button_default_both=0x7f0500a7; @@ -639,7 +642,7 @@ public final class R { reset a game. */ public static final int button_discard=0x7f050198; - public static final int button_discard_changes=0x7f0502c8; + public static final int button_discard_changes=0x7f0502c7; /** */ public static final int button_done=0x7f0501c8; @@ -649,18 +652,18 @@ public final class R { /** Text of button displayed when downloading is an option */ public static final int button_download=0x7f05018e; - public static final int button_edit=0x7f0502c7; - public static final int button_enable=0x7f050307; - public static final int button_enable_bt=0x7f050227; - public static final int button_enable_sms=0x7f050226; - public static final int button_go_settings=0x7f05025e; + public static final int button_edit=0x7f0502c6; + public static final int button_enable=0x7f050306; + public static final int button_enable_bt=0x7f050226; + public static final int button_enable_sms=0x7f050225; + public static final int button_go_settings=0x7f05025d; /** */ public static final int button_invite=0x7f0501f1; /** text of button to juggle (randomly rearrange order of) players */ public static final int button_juggle_players=0x7f0500b2; - public static final int button_later=0x7f050228; + public static final int button_later=0x7f050227; /** New strings that need to be documented and found a home above. */ @@ -723,12 +726,12 @@ public final class R { above. */ public static final int button_notagain=0x7f0501a4; - public static final int button_reconnect=0x7f05024e; + public static final int button_reconnect=0x7f05024d; /** Button shown in game over dialog triggering creation of new game with the same players and parameters as the one that just ended. */ - public static final int button_rematch=0x7f05024d; + public static final int button_rematch=0x7f05024c; /** When you select the list_item_reset contextual menu, you are asked to confirm. This is the text of the first button ("Cancel" is the second). @@ -793,8 +796,8 @@ public final class R { in many places. */ public static final int button_yes=0x7f050195; - public static final int cannot_delete_default_group_fmt=0x7f05024c; - public static final int change_group=0x7f050251; + public static final int cannot_delete_default_group_fmt=0x7f05024b; + public static final int change_group=0x7f050250; /** text of button in About Crosswords dialog summoning above dialog */ @@ -840,9 +843,9 @@ public final class R { substituted for %1$s. */ public static final int chat_title_fmt=0x7f050174; - public static final int checking_for_fmt=0x7f0502fe; - public static final int checking_title=0x7f0502fd; - public static final int checkupdates_none_found=0x7f05022a; + public static final int checking_for_fmt=0x7f0502fd; + public static final int checking_title=0x7f0502fc; + public static final int checkupdates_none_found=0x7f050229; /** color of the "crosshairs", lines drawn vertically and horizontally through the square the user is currently touching in order to guide the fat-fingered (most of us) in @@ -850,20 +853,17 @@ public final class R { on the board. */ public static final int clr_crosshairs=0x7f05013d; - public static final int config_no_connvia=0x7f0502c6; - /** - */ - public static final int confirm_clear=0x7f050201; + public static final int config_no_connvia=0x7f0502c5; /** Additional text appended to text confirm_delete_dictf in the wordlist delete confiration dialog in the case where the wordlist to be deleted is the last in its language. The name of the language is substituted for %1$s. */ public static final int confirm_deleteonly_dicts_fmt=0x7f0500a3; - public static final int confirm_drop_relay=0x7f050303; - public static final int confirm_drop_relay_bt=0x7f050305; - public static final int confirm_drop_relay_sms=0x7f050306; - public static final int confirm_get_locdict_fmt=0x7f0502cd; + public static final int confirm_drop_relay=0x7f050302; + public static final int confirm_drop_relay_bt=0x7f050304; + public static final int confirm_drop_relay_sms=0x7f050305; + public static final int confirm_get_locdict_fmt=0x7f0502cc; /** Text of confirmation dialog for above */ public static final int confirm_revert_all=0x7f050112; @@ -880,22 +880,22 @@ public final class R { public static final int confirm_save_title=0x7f0500cc; /** */ - public static final int confirm_sms_expl=0x7f05021f; + public static final int confirm_sms_expl=0x7f05021e; /** */ - public static final int confirm_sms_leave=0x7f050221; + public static final int confirm_sms_leave=0x7f050220; /** */ - public static final int confirm_sms_prompt=0x7f050220; + public static final int confirm_sms_prompt=0x7f05021f; /** */ - public static final int confirm_sms_title=0x7f05021e; + public static final int confirm_sms_title=0x7f05021d; /** */ - public static final int confirm_sms_unlimited=0x7f050222; + public static final int confirm_sms_unlimited=0x7f050221; /** */ - public static final int confirm_sms_willpay=0x7f050223; + public static final int confirm_sms_willpay=0x7f050222; /** text of dialog shown when the menu item board_menu_undo_last is chosen. */ @@ -921,7 +921,7 @@ public final class R { public static final int connect_label_fmt=0x7f0500b5; /** */ - public static final int connect_label_sms=0x7f050202; + public static final int connect_label_sms=0x7f050201; /** These are the possible values for the connect_frequency setting presented as a drop-down list. */ @@ -929,52 +929,52 @@ public final class R { public static final int connect_one_hour=0x7f05015a; public static final int connect_six_hours=0x7f05015b; public static final int connect_thirty_mins=0x7f050159; - public static final int connection_via_label=0x7f0502bf; + public static final int connection_via_label=0x7f0502be; /** */ - public static final int connstat_lastother_succ_fmt=0x7f050216; + public static final int connstat_lastother_succ_fmt=0x7f050215; /** */ - public static final int connstat_lastother_unsucc_fmt=0x7f050217; + public static final int connstat_lastother_unsucc_fmt=0x7f050216; /** */ - public static final int connstat_lastreceipt_fmt=0x7f050218; + public static final int connstat_lastreceipt_fmt=0x7f050217; /** */ - public static final int connstat_lastsend_fmt=0x7f050215; + public static final int connstat_lastsend_fmt=0x7f050214; /** */ - public static final int connstat_net_fmt=0x7f050212; - public static final int connstat_net_noaddr=0x7f050211; + public static final int connstat_net_fmt=0x7f050211; + public static final int connstat_net_noaddr=0x7f050210; /** */ - public static final int connstat_noreceipt=0x7f050219; + public static final int connstat_noreceipt=0x7f050218; /** */ - public static final int connstat_relay=0x7f05021a; + public static final int connstat_relay=0x7f050219; /** */ - public static final int connstat_sms=0x7f05021b; + public static final int connstat_sms=0x7f05021a; /** */ - public static final int connstat_succ=0x7f050213; + public static final int connstat_succ=0x7f050212; /** */ - public static final int connstat_unsucc=0x7f050214; + public static final int connstat_unsucc=0x7f050213; /** title of dialog brought up in response to the board_menu_game_counts menu. The dialog lists all tiles in the language being used for the game together with how many of each there are are and how many points each is worth. */ public static final int counts_values_title=0x7f05019e; - public static final int cur_menu_marker_fmt=0x7f05025b; + public static final int cur_menu_marker_fmt=0x7f05025a; /** */ public static final int cur_tiles_fmt=0x7f0501d3; - public static final int data_gsm_only=0x7f050278; - public static final int db_store_done=0x7f0502ff; - public static final int debug_features=0x7f0502d5; - public static final int debug_features_summary=0x7f0502d6; + public static final int data_gsm_only=0x7f050277; + public static final int db_store_done=0x7f0502fe; + public static final int debug_features=0x7f0502d4; + public static final int debug_features_summary=0x7f0502d5; /** dictionary used by default for human players when creating new game */ @@ -984,9 +984,9 @@ public final class R { public static final int default_host=0x7f050076; /** label within default wordlists in app preferences */ - public static final int default_language=0x7f0502af; - public static final int default_loc=0x7f05023f; - public static final int default_loc_summary=0x7f050240; + public static final int default_language=0x7f0502ae; + public static final int default_loc=0x7f05023e; + public static final int default_loc_summary=0x7f05023f; /** Welcome dialog text */ public static final int default_name_message=0x7f0501ba; @@ -1014,7 +1014,7 @@ public final class R { */ public static final int default_robodict=0x7f050120; public static final int default_update_url=0x7f05007c; - public static final int delete_dicts=0x7f05029a; + public static final int delete_dicts=0x7f050299; /** Playing via SMS is currently disabled. You can enable it in Settings->Network game settings. @@ -1024,16 +1024,16 @@ public final class R { /** */ public static final int dict_browse_nowords_fmt=0x7f0501d5; - public static final int dict_desc_fmt=0x7f0502a1; - public static final int dict_host=0x7f0502d2; - public static final int dict_info_fmt=0x7f05029e; + public static final int dict_desc_fmt=0x7f0502a0; + public static final int dict_host=0x7f0502d1; + public static final int dict_info_fmt=0x7f05029d; /** label for dropdown by which wordlist is chosen that this player will use. The language the game will use (which constrains the choice of wordlists) is substituted in for "%1$s". */ public static final int dict_lang_label_fmt=0x7f0500d4; - public static final int dict_on_server=0x7f0502a0; + public static final int dict_on_server=0x7f05029f; /** string name="invite_mime">text/plainDisplay snapshots of games */ - public static final int dropped_dupe=0x7f05025a; + public static final int dropped_dupe=0x7f050259; /** Shown in the main screen when you launch Crosswords from an invitation (received in email or messaging app, say) and there's already a game running that matches that invitation. @@ -1104,24 +1104,24 @@ public final class R { /** Shows in SMS Invite dialog when no phone numbers have been saved previously */ public static final int empty_sms_inviter=0x7f0501ff; - public static final int enable_dupes_summary=0x7f0502e3; - public static final int enable_dupes_title=0x7f0502e1; - public static final int enable_nfc=0x7f05025d; - public static final int enable_nfc_toself_summary=0x7f0502e6; - public static final int enable_nfc_toself_title=0x7f0502e5; - public static final int enable_pubroom_summary=0x7f0502be; - public static final int enable_pubroom_title=0x7f0502bd; + public static final int enable_dupes_summary=0x7f0502e2; + public static final int enable_dupes_title=0x7f0502e0; + public static final int enable_nfc=0x7f05025c; + public static final int enable_nfc_toself_summary=0x7f0502e5; + public static final int enable_nfc_toself_title=0x7f0502e4; + public static final int enable_pubroom_summary=0x7f0502bd; + public static final int enable_pubroom_title=0x7f0502bc; /** */ - public static final int enable_sms=0x7f05021c; + public static final int enable_sms=0x7f05021b; /** */ - public static final int enable_sms_summary=0x7f05021d; - public static final int enable_sms_toself_summary=0x7f0502e8; - public static final int enable_sms_toself_title=0x7f0502e7; + public static final int enable_sms_summary=0x7f05021c; + public static final int enable_sms_toself_summary=0x7f0502e7; + public static final int enable_sms_toself_title=0x7f0502e6; public static final int entering_trade=0x7f0500da; - public static final int err_dup_invite_fmt=0x7f0502b8; - public static final int expl_update_url=0x7f0502f2; + public static final int err_dup_invite_fmt=0x7f0502b7; + public static final int expl_update_url=0x7f0502f1; /** if this preference is checked, a dialog will be posted every time a robot makes a move or a move is received from a remote player. @@ -1140,9 +1140,9 @@ public final class R { /** Explanatory text appears in the dialog */ public static final int force_expl=0x7f0500cf; - public static final int force_radio_title=0x7f0502e9; - public static final int force_tablet_summary=0x7f0502a5; - public static final int force_tablet_title=0x7f0502a4; + public static final int force_radio_title=0x7f0502e8; + public static final int force_tablet_summary=0x7f0502a4; + public static final int force_tablet_title=0x7f0502a3; /** ############################################################ # :Dialogs: @@ -1185,12 +1185,12 @@ public final class R { public static final int game_item_menu_title_fmt=0x7f050091; /** */ - public static final int game_list_tmp=0x7f050210; + public static final int game_list_tmp=0x7f05020f; /** text of checkbox at top of dialog allowing to unlock in-play game to make changes */ public static final int game_locked=0x7f0500ae; - public static final int game_name_group_title=0x7f05024b; + public static final int game_name_group_title=0x7f05024a; /** */ public static final int game_name_label=0x7f0501f6; @@ -1203,15 +1203,15 @@ public final class R { /** Put nothing in the summary space, so it just reads "Game 2" */ public static final int game_summary_field_empty=0x7f05012b; - public static final int game_summary_field_gameid=0x7f0502f0; + public static final int game_summary_field_gameid=0x7f0502ef; /** Put the language there, so it reads "Game 2 (English)" */ public static final int game_summary_field_language=0x7f05012c; - public static final int game_summary_field_npackets=0x7f0502f1; + public static final int game_summary_field_npackets=0x7f0502f0; /** List names of opponents (summarized), e.g. "Game 2 (vs Kati)" */ public static final int game_summary_field_opponents=0x7f05012d; - public static final int game_summary_field_rowid=0x7f0502ef; + public static final int game_summary_field_rowid=0x7f0502ee; /** List the state of the game, "Game over" or "10 moves made" etc. */ @@ -1224,7 +1224,7 @@ public final class R { public static final int gamel_menu_checkmoves=0x7f05008d; /** */ - public static final int gamel_menu_checkupdates=0x7f050229; + public static final int gamel_menu_checkupdates=0x7f050228; /** ############################################################ # :Menus: @@ -1237,20 +1237,20 @@ public final class R { Brings up the Wordlists (formerly Dictionaries) screen */ public static final int gamel_menu_dicts=0x7f05008b; - public static final int gamel_menu_loaddb=0x7f0502e0; - public static final int gamel_menu_storedb=0x7f0502df; - public static final int gamel_menu_study=0x7f050266; + public static final int gamel_menu_loaddb=0x7f0502df; + public static final int gamel_menu_storedb=0x7f0502de; + public static final int gamel_menu_study=0x7f050265; /** */ public static final int get_sms_number=0x7f050200; - public static final int getinfo=0x7f050299; + public static final int getinfo=0x7f050298; public static final int git_rev=0x7f05007e; - public static final int git_rev_title=0x7f0502db; - public static final int got_langdict_summary=0x7f0502f4; - public static final int got_langdict_title=0x7f0502f3; + public static final int git_rev_title=0x7f0502da; + public static final int got_langdict_summary=0x7f0502f3; + public static final int got_langdict_title=0x7f0502f2; public static final int green=0x7f050143; - public static final int group_cur_games=0x7f050248; - public static final int group_new_games=0x7f050249; + public static final int group_cur_games=0x7f050247; + public static final int group_new_games=0x7f050248; /** Used as the default name for remote players displayed within the Game configure screen */ @@ -1313,12 +1313,12 @@ public final class R { public static final int info_title=0x7f05019b; /** */ - public static final int inform_dict_diffdict_fmt=0x7f050234; + public static final int inform_dict_diffdict_fmt=0x7f050233; /** */ - public static final int inform_dict_diffversion_fmt=0x7f050232; - public static final int inform_dict_download=0x7f050235; - public static final int inform_dict_title=0x7f050233; + public static final int inform_dict_diffversion_fmt=0x7f050231; + public static final int inform_dict_download=0x7f050234; + public static final int inform_dict_title=0x7f050232; /** Will new games, on default, randomly rearrange the start order of players. */ @@ -1352,9 +1352,9 @@ public final class R { */ public static final int invite_chooser_fmt=0x7f050171; public static final int invite_chooser_sms=0x7f050173; - public static final int invite_dict_missing_body_fmt=0x7f05023a; - public static final int invite_dict_missing_body_noname_fmt=0x7f05023b; - public static final int invite_dict_missing_title=0x7f050239; + public static final int invite_dict_missing_body_fmt=0x7f050239; + public static final int invite_dict_missing_body_noname_fmt=0x7f05023a; + public static final int invite_dict_missing_title=0x7f050238; public static final int invite_host=0x7f050078; /** This is the body of the html version of the invitation. A URL is created with parameters describing the game and @@ -1367,8 +1367,8 @@ public final class R { */ public static final int invite_if_nfc=0x7f0500e0; public static final int invite_mime=0x7f05007a; - public static final int invite_multi_summary=0x7f0502bc; - public static final int invite_multi_title=0x7f0502bb; + public static final int invite_multi_summary=0x7f0502bb; + public static final int invite_multi_title=0x7f0502ba; /** Most users create games with only two players, which is the default, but Crosswords supports up to four. When I'm using the above string to encourage the opener of a game missing @@ -1381,7 +1381,7 @@ public final class R { /** */ public static final int invite_progress_title=0x7f0501e3; - public static final int invite_stays=0x7f0502c3; + public static final int invite_stays=0x7f0502c2; /** Send invitation using SMS (texting) or via email? Send invitation using NFC (Android @@ -1547,30 +1547,30 @@ public final class R { different wordlists.) */ public static final int lang_label=0x7f0500b3; - public static final int lang_name_arabic=0x7f050283; - public static final int lang_name_catalan=0x7f05028a; - public static final int lang_name_czech=0x7f05028d; - public static final int lang_name_danish=0x7f050287; - public static final int lang_name_dutch=0x7f050289; - public static final int lang_name_english=0x7f05027f; - public static final int lang_name_french=0x7f050280; - public static final int lang_name_german=0x7f050281; - public static final int lang_name_greek=0x7f05028e; - public static final int lang_name_italian=0x7f050288; - public static final int lang_name_polish=0x7f050286; - public static final int lang_name_portuguese=0x7f05028b; - public static final int lang_name_russian=0x7f05028c; - public static final int lang_name_slovak=0x7f05028f; - public static final int lang_name_spanish=0x7f050284; - public static final int lang_name_swedish=0x7f050285; - public static final int lang_name_turkish=0x7f050282; - public static final int lang_unknown=0x7f0502a2; + public static final int lang_name_arabic=0x7f050282; + public static final int lang_name_catalan=0x7f050289; + public static final int lang_name_czech=0x7f05028c; + public static final int lang_name_danish=0x7f050286; + public static final int lang_name_dutch=0x7f050288; + public static final int lang_name_english=0x7f05027e; + public static final int lang_name_french=0x7f05027f; + public static final int lang_name_german=0x7f050280; + public static final int lang_name_greek=0x7f05028d; + public static final int lang_name_italian=0x7f050287; + public static final int lang_name_polish=0x7f050285; + public static final int lang_name_portuguese=0x7f05028a; + public static final int lang_name_russian=0x7f05028b; + public static final int lang_name_slovak=0x7f05028e; + public static final int lang_name_spanish=0x7f050283; + public static final int lang_name_swedish=0x7f050284; + public static final int lang_name_turkish=0x7f050281; + public static final int lang_unknown=0x7f0502a1; public static final int langdict_label=0x7f0500b4; - public static final int list_group_default=0x7f050245; - public static final int list_group_delete=0x7f050243; - public static final int list_group_movedown=0x7f050247; - public static final int list_group_moveup=0x7f050246; - public static final int list_group_rename=0x7f050244; + public static final int list_group_default=0x7f050244; + public static final int list_group_delete=0x7f050242; + public static final int list_group_movedown=0x7f050246; + public static final int list_group_moveup=0x7f050245; + public static final int list_group_rename=0x7f050243; /** ############## menu items ############## pulls up dialog to configure the selected game */ @@ -1601,9 +1601,9 @@ public final class R { public static final int list_item_reset=0x7f050096; /** formatting for last move summary in notifications */ - public static final int lmi_pass_fmt=0x7f0502aa; - public static final int lmi_phony_fmt=0x7f0502ab; - public static final int lmi_tiles_fmt=0x7f0502ac; + public static final int lmi_pass_fmt=0x7f0502a9; + public static final int lmi_phony_fmt=0x7f0502aa; + public static final int lmi_tiles_fmt=0x7f0502ab; /** One of the strings used in the right column of the list of installed wordlists to describe those that are part of Crosswords and that cannot be uninstalled or moved. @@ -1621,32 +1621,32 @@ public final class R { /** */ public static final int loc_external=0x7f0500aa; - public static final int loc_filters_all=0x7f05027b; - public static final int loc_filters_menu=0x7f05027d; - public static final int loc_filters_modified=0x7f05027e; - public static final int loc_filters_prompt=0x7f050279; - public static final int loc_filters_screen=0x7f05027c; - public static final int loc_fmts_mismatch=0x7f050294; + public static final int loc_filters_all=0x7f05027a; + public static final int loc_filters_menu=0x7f05027c; + public static final int loc_filters_modified=0x7f05027d; + public static final int loc_filters_prompt=0x7f050278; + public static final int loc_filters_screen=0x7f05027b; + public static final int loc_fmts_mismatch=0x7f050293; /** see move_dictf above */ public static final int loc_internal=0x7f0500a9; - public static final int loc_item_check=0x7f050291; + public static final int loc_item_check=0x7f050290; /** for loc item edit menu */ - public static final int loc_item_clear=0x7f050290; - public static final int loc_item_copy_bless=0x7f050293; - public static final int loc_item_copy_eng=0x7f050292; - public static final int loc_lang_blessed=0x7f050274; - public static final int loc_lang_local=0x7f050275; - public static final int loc_menu_xlate=0x7f050273; - public static final int loc_search_prompt=0x7f05027a; + public static final int loc_item_clear=0x7f05028f; + public static final int loc_item_copy_bless=0x7f050292; + public static final int loc_item_copy_eng=0x7f050291; + public static final int loc_lang_blessed=0x7f050273; + public static final int loc_lang_local=0x7f050274; + public static final int loc_menu_xlate=0x7f050272; + public static final int loc_search_prompt=0x7f050279; /** This is the "hint" printed in light text in the empty player name field */ public static final int local_name_hint=0x7f050179; - public static final int logging_on=0x7f0502d3; - public static final int logging_on_summary=0x7f0502d4; - public static final int lookup_title=0x7f05026f; + public static final int logging_on=0x7f0502d2; + public static final int logging_on_summary=0x7f0502d3; + public static final int lookup_title=0x7f05026e; /** */ public static final int manual_owner_name=0x7f0501fd; @@ -1655,29 +1655,29 @@ public final class R { public static final int max_len=0x7f0501da; /** */ - public static final int menu_chat=0x7f05020d; + public static final int menu_chat=0x7f05020c; /** */ - public static final int menu_flip=0x7f05020b; + public static final int menu_flip=0x7f05020a; /** */ - public static final int menu_hint_next=0x7f050208; + public static final int menu_hint_next=0x7f050207; /** */ - public static final int menu_hint_prev=0x7f050207; + public static final int menu_hint_prev=0x7f050206; /** */ - public static final int menu_juggle=0x7f05020a; + public static final int menu_juggle=0x7f050209; /** text of menu that brings up the Settings (preferences) dialog */ public static final int menu_prefs=0x7f05008c; - public static final int menu_rateme=0x7f050261; + public static final int menu_rateme=0x7f050260; /** */ - public static final int menu_toggle_values=0x7f05020e; + public static final int menu_toggle_values=0x7f05020d; /** */ - public static final int menu_zoom=0x7f05020c; + public static final int menu_zoom=0x7f05020b; /** */ public static final int min_len=0x7f0501d9; @@ -1687,11 +1687,11 @@ public final class R { /** body of notification shown when invitation requires a wordslist that's not installed */ - public static final int missing_dict_detail=0x7f050238; + public static final int missing_dict_detail=0x7f050237; /** Title of notification shown when invitation requires a wordslist that's not installed */ - public static final int missing_dict_title=0x7f050237; + public static final int missing_dict_title=0x7f050236; /** Used as a substitute for the names of remote players when they aren't available yet because the connection is not complete. Displayed in the lists of players found in each @@ -1746,16 +1746,16 @@ public final class R { /** Text of progress indicator shown while check is being conducted */ public static final int msgs_progress=0x7f05008e; - public static final int nag_body_fmt=0x7f0502a7; - public static final int nag_intervals=0x7f0502e4; + public static final int nag_body_fmt=0x7f0502a6; + public static final int nag_intervals=0x7f0502e3; /** Nagging: title of notification reminder message */ - public static final int nag_title=0x7f0502a6; + public static final int nag_title=0x7f0502a5; /** above is inserted in this the last time I warn */ - public static final int nag_warn_last_fmt=0x7f0502a8; + public static final int nag_warn_last_fmt=0x7f0502a7; public static final int name_copy_fmt=0x7f0501f7; - public static final int name_dict_fmt=0x7f0502de; + public static final int name_dict_fmt=0x7f0502dd; public static final int nbs_port=0x7f05007d; /** text of checkbox. If this checkbox is checked, games created for network play will by default have the hint feature @@ -1767,19 +1767,19 @@ public final class R { elsewhere in this file) */ public static final int nethints_allowed_sum=0x7f050122; - public static final int netstats_title=0x7f0502da; - public static final int network_advanced_summary=0x7f0502ba; - public static final int network_advanced_title=0x7f0502b9; + public static final int netstats_title=0x7f0502d9; + public static final int network_advanced_summary=0x7f0502b9; + public static final int network_advanced_title=0x7f0502b8; public static final int network_behavior=0x7f050153; /** explanation of the above */ public static final int network_behavior_summary=0x7f050154; /** */ - public static final int new_app_avail=0x7f05022e; + public static final int new_app_avail=0x7f05022d; /** */ - public static final int new_app_avail_fmt=0x7f05022d; + public static final int new_app_avail_fmt=0x7f05022c; /** */ public static final int new_bt_body_fmt=0x7f0501ea; @@ -1791,15 +1791,15 @@ public final class R { public static final int new_btmove_title=0x7f0501ed; /** */ - public static final int new_dict_avail=0x7f05022b; + public static final int new_dict_avail=0x7f05022a; /** */ - public static final int new_dict_avail_fmt=0x7f05022c; - public static final int new_game=0x7f0502b1; - public static final int new_game_message=0x7f0502b3; - public static final int new_game_message_net=0x7f0502b5; - public static final int new_game_message_nodflt=0x7f0502b4; - public static final int new_game_networked=0x7f0502b2; + public static final int new_dict_avail_fmt=0x7f05022b; + public static final int new_game=0x7f0502b0; + public static final int new_game_message=0x7f0502b2; + public static final int new_game_message_net=0x7f0502b4; + public static final int new_game_message_nodflt=0x7f0502b3; + public static final int new_game_networked=0x7f0502b1; /** */ public static final int new_move_body=0x7f0501ee; @@ -1877,9 +1877,9 @@ public final class R { /** */ public static final int newgame_sms_header=0x7f0501f8; - public static final int newgroup_label=0x7f050242; - public static final int nfc_just_tap=0x7f0502c4; - public static final int nfc_to_self=0x7f0502ee; + public static final int newgroup_label=0x7f050241; + public static final int nfc_just_tap=0x7f0502c3; + public static final int nfc_to_self=0x7f0502ed; /** Title of dialog for renaming game (triggered by selecting list_item_rename) If you try to copy a networked game you get this error @@ -1925,7 +1925,7 @@ public final class R { you get this error message */ public static final int no_games_to_refresh=0x7f05008f; - public static final int no_market=0x7f050262; + public static final int no_market=0x7f050261; /** displayed when you long-tap a scoreboard entry and there's no most recent score to show */ @@ -1935,7 +1935,7 @@ public final class R { substituted. */ public static final int no_name_found_fmt=0x7f0500bb; - public static final int no_relay_conn=0x7f050301; + public static final int no_relay_conn=0x7f050300; /** This is not currently shown Crosswords wordlists, which are just compressed lists of words plus tile information, determine @@ -1949,7 +1949,7 @@ public final class R { arrow appears. This explains it. */ public static final int not_again_arrow=0x7f0501b6; - public static final int not_again_backclears=0x7f050255; + public static final int not_again_backclears=0x7f050254; /** */ public static final int not_again_browse=0x7f0501d6; @@ -1960,9 +1960,9 @@ public final class R { main Board screen */ public static final int not_again_chat=0x7f0501af; - public static final int not_again_comms_bt=0x7f05030a; - public static final int not_again_comms_relay=0x7f050308; - public static final int not_again_comms_sms=0x7f050309; + public static final int not_again_comms_bt=0x7f050309; + public static final int not_again_comms_relay=0x7f050307; + public static final int not_again_comms_sms=0x7f050308; /** This is shown in the Board screen when you successfully connecting a game to the relay and are the last device in the game to do so, i.e. the game is now complete and you should @@ -1980,19 +1980,19 @@ public final class R { for games with more than two devices, which are rare. */ public static final int not_again_conndmid=0x7f0501b4; - public static final int not_again_dicts=0x7f0502a3; + public static final int not_again_dicts=0x7f0502a2; /** This is shown when you choose the board_menu_done menu item. It's to let you know that there's a shortcut that does almost the same thing. */ public static final int not_again_done=0x7f0501b1; - public static final int not_again_enablepublic=0x7f0502ca; + public static final int not_again_enablepublic=0x7f0502c9; /** Shown when you tap the flip button on the toolbar of the main Board screen */ public static final int not_again_flip=0x7f0501ac; - public static final int not_again_fmt_expl=0x7f050295; - public static final int not_again_hidenewgamebuttons=0x7f0502c1; + public static final int not_again_fmt_expl=0x7f050294; + public static final int not_again_hidenewgamebuttons=0x7f0502c0; /** Shown when you tap the next hint button on the toolbar of the main Board screen */ @@ -2016,8 +2016,8 @@ public final class R { /** Shown when you first pick the list_item_new_from menuitem */ public static final int not_again_newfrom=0x7f0501b8; - public static final int not_again_newselect=0x7f050254; - public static final int not_again_studycopy=0x7f05026e; + public static final int not_again_newselect=0x7f050253; + public static final int not_again_studycopy=0x7f05026d; /** The following strings (all whose names start with "not_again") appear in the New user info dialog. @@ -2052,7 +2052,7 @@ public final class R { the main Board screen */ public static final int not_again_zoom=0x7f0501ad; - public static final int note_none=0x7f05029f; + public static final int note_none=0x7f05029e; /** This text is displayed as the "summary" for both of the notify choices above, as extra information. (There could be different strings if it makes more sense in your language.) @@ -2073,7 +2073,7 @@ public final class R { device */ public static final int notify_vibrate=0x7f05015e; - public static final int nplayers_prompt=0x7f0502b7; + public static final int nplayers_prompt=0x7f0502b6; /** text of label identifying the field where human players can enter an option password. The label and field disappear when the robot player checkbox is checked because it makes no @@ -2088,7 +2088,7 @@ public final class R { can tap a nearby person\'s device to invite him/her to play – if he/she is also using NFC. */ - public static final int pct_suffix=0x7f050260; + public static final int pct_suffix=0x7f05025f; /** If this preference is checked, tapping on the scoreboard entry for any player reveals that player's tiles and any pending move (after asking for his password if one is set.) @@ -2104,7 +2104,7 @@ public final class R { public static final int peek_other_summary=0x7f050150; /** */ - public static final int phone_label=0x7f050203; + public static final int phone_label=0x7f050202; /** Don't warn, but simply force to skip turn (give 0 points) when user attempts to play word not in the wordlist. */ @@ -2162,17 +2162,17 @@ public final class R { non-networked games */ public static final int players_label_standalone=0x7f0500af; - public static final int pref_group_l10n_summary=0x7f0502fa; - public static final int pref_group_l10n_title=0x7f0502f9; - public static final int pref_group_relay_summary=0x7f0502f8; - public static final int pref_group_relay_title=0x7f0502f7; - public static final int pref_group_sms_summary=0x7f0502f6; - public static final int pref_group_sms_title=0x7f0502f5; + public static final int pref_group_l10n_summary=0x7f0502f9; + public static final int pref_group_l10n_title=0x7f0502f8; + public static final int pref_group_relay_summary=0x7f0502f7; + public static final int pref_group_relay_title=0x7f0502f6; + public static final int pref_group_sms_summary=0x7f0502f5; + public static final int pref_group_sms_title=0x7f0502f4; /** Label for the first "human player" name preference */ public static final int pref_human_name=0x7f05011b; - public static final int pref_item_update_summary=0x7f0502fc; - public static final int pref_item_update_title=0x7f0502fb; + public static final int pref_item_update_summary=0x7f0502fb; + public static final int pref_item_update_title=0x7f0502fa; /** Label for the first player color preference */ public static final int pref_player1_name=0x7f050117; @@ -2249,15 +2249,15 @@ public final class R { public static final int prefs_names_summary=0x7f050116; /** Used when prev player's name can't be looked up */ - public static final int prev_player=0x7f0502a9; - public static final int progress_title=0x7f05029d; + public static final int prev_player=0x7f0502a8; + public static final int progress_title=0x7f05029c; /** */ public static final int prompt_max_len=0x7f0501dc; /** */ public static final int prompt_min_len=0x7f0501db; - public static final int proxy_port=0x7f0502dd; + public static final int proxy_port=0x7f0502dc; /** Short for "points", this is shown at the right end of the tray in place of the first tile placed along with the points the current move would earn if committed. @@ -2273,10 +2273,10 @@ public final class R { middle of a game, like "do you want to commit this move?" */ public static final int query_title=0x7f0501a2; - public static final int radio_name_cdma=0x7f0502ed; - public static final int radio_name_gsm=0x7f0502ec; - public static final int radio_name_real=0x7f0502ea; - public static final int radio_name_tablet=0x7f0502eb; + public static final int radio_name_cdma=0x7f0502ec; + public static final int radio_name_gsm=0x7f0502eb; + public static final int radio_name_real=0x7f0502e9; + public static final int radio_name_tablet=0x7f0502ea; /** ############################################################ # :Dialogs: @@ -2290,30 +2290,30 @@ public final class R { the color preferences dialog */ public static final int red=0x7f050142; - public static final int redir_host=0x7f0502d1; + public static final int redir_host=0x7f0502d0; /** Title of dialog used to alert players to relay-related problems with the current game. */ public static final int relay_alert=0x7f0500e4; - public static final int relay_alert_title=0x7f050253; - public static final int relay_host=0x7f0502d0; - public static final int relay_port=0x7f0502dc; + public static final int relay_alert_title=0x7f050252; + public static final int relay_host=0x7f0502cf; + public static final int relay_port=0x7f0502db; /** Shown in toast when relaunching after switching dicts */ - public static final int reload_new_dict_fmt=0x7f050236; - public static final int rematch_msg=0x7f0502c9; - public static final int remote_digesting=0x7f050297; - public static final int remote_empty=0x7f050296; + public static final int reload_new_dict_fmt=0x7f050235; + public static final int rematch_msg=0x7f0502c8; + public static final int remote_digesting=0x7f050296; + public static final int remote_empty=0x7f050295; /** checkbox determining of this player is on this device or remote. If remote, then the rest of the fields disappear (since they will be set by the remote device.) */ public static final int remote_label=0x7f0500d2; - public static final int remote_no_net=0x7f050298; + public static final int remote_no_net=0x7f050297; /** */ - public static final int remote_undone=0x7f050206; - public static final int rename_group_label=0x7f05024a; + public static final int remote_undone=0x7f050205; + public static final int rename_group_label=0x7f050249; /** text within rename dialog (triggered by selecting list_item_rename) */ @@ -2350,10 +2350,10 @@ public final class R { /** title for popup of public rooms found on server */ public static final int room_public_prompt=0x7f0500b9; - public static final int seeking_relay=0x7f050300; - public static final int sel_games_fmt=0x7f050256; - public static final int sel_groups_fmt=0x7f050257; - public static final int sel_items_fmt=0x7f050272; + public static final int seeking_relay=0x7f0502ff; + public static final int sel_games_fmt=0x7f050255; + public static final int sel_groups_fmt=0x7f050256; + public static final int sel_items_fmt=0x7f050271; /** ############################################################ # :Dialogs: @@ -2365,7 +2365,7 @@ public final class R { possible answers are the three button text strings below. */ public static final int set_default_message_fmt=0x7f0500a4; - public static final int set_pref=0x7f0502c0; + public static final int set_pref=0x7f0502bf; /** text of separator marking out other-setting area of the dialog */ public static final int settings_label=0x7f0500bc; @@ -2377,8 +2377,8 @@ public final class R { /** clarification of above */ public static final int show_arrow_summary=0x7f050134; - public static final int show_remote=0x7f05029b; - public static final int show_wordlist_browser=0x7f050252; + public static final int show_remote=0x7f05029a; + public static final int show_wordlist_browser=0x7f050251; /** If this preference is checked, the user will not be asked to confirm after selecting the "Turn done" menu (or tapping the points display at the right end of the tray) @@ -2387,17 +2387,17 @@ public final class R { /** explanation of the above */ public static final int skip_confirm_turn_summary=0x7f05014a; - public static final int slmenu_clear_sel=0x7f050268; - public static final int slmenu_copy_sel=0x7f050267; - public static final int slmenu_deselect_all=0x7f050271; - public static final int slmenu_select_all=0x7f050270; + public static final int slmenu_clear_sel=0x7f050267; + public static final int slmenu_copy_sel=0x7f050266; + public static final int slmenu_deselect_all=0x7f050270; + public static final int slmenu_select_all=0x7f05026f; public static final int sms_bad_proto_fmt=0x7f0501ec; /** Title of phone number picker during invitation to a game via SMS */ public static final int sms_invite_title=0x7f0501f3; - public static final int sms_ready_text=0x7f05025f; - public static final int square_tiles=0x7f05024f; - public static final int square_tiles_summary=0x7f050250; + public static final int sms_ready_text=0x7f05025e; + public static final int square_tiles=0x7f05024e; + public static final int square_tiles_summary=0x7f05024f; /** Used in formatting moves and history */ public static final int str_bonus_all=0x7f05010b; @@ -2458,7 +2458,7 @@ public final class R { */ public static final int str_phony_rejected=0x7f050107; - public static final int str_placer_fmt=0x7f050231; + public static final int str_placer_fmt=0x7f050230; /** Shown when using the the Game configure screen to configure a networked game and you try to make all players local. */ @@ -2474,7 +2474,7 @@ public final class R { /** Used in formatting remote player move summaries */ public static final int str_remote_moved_fmt=0x7f050100; - public static final int str_resigned_fmt=0x7f050230; + public static final int str_resigned_fmt=0x7f05022f; /** ############################################################ # Board info/error dialog messages @@ -2517,7 +2517,7 @@ public final class R { public static final int str_two_tiles_first_move=0x7f05017e; /** Used in formatting final scores display */ - public static final int str_winner_fmt=0x7f05022f; + public static final int str_winner_fmt=0x7f05022e; /** Used in formatting game history (not move summaries since information about the current rack is hidden then) */ @@ -2554,10 +2554,10 @@ public final class R { /** Used in formatting exchange move summaries */ public static final int strss_traded_for_fmt=0x7f050106; - public static final int study_langpick=0x7f05026b; - public static final int study_no_lang_fmt=0x7f05026c; - public static final int study_no_lists=0x7f05026d; - public static final int studylist_title_fmt=0x7f05026a; + public static final int study_langpick=0x7f05026a; + public static final int study_no_lang_fmt=0x7f05026b; + public static final int study_no_lists=0x7f05026c; + public static final int studylist_title_fmt=0x7f050269; /** If substituting an existing same-language wordlist by choosing button_substdict user gets to choose from a list of wordlists. This is the title of that list. @@ -2568,7 +2568,7 @@ public final class R { public static final int summary_conn=0x7f0501e8; /** */ - public static final int summary_conn_sms_fmt=0x7f050204; + public static final int summary_conn_sms_fmt=0x7f050203; /** Preference to control what's listed next to game name in the first line of a game summary in the main games-list screen, e.g., if the option is "Game Language", "English" in the @@ -2603,12 +2603,12 @@ public final class R { cannot happen. */ public static final int summary_relay_wait_fmt=0x7f050085; - public static final int summary_send_data_sms=0x7f0502d8; + public static final int summary_send_data_sms=0x7f0502d7; /** explanation of the above */ public static final int summary_sort_tiles=0x7f05014c; - public static final int summary_studyon=0x7f050265; - public static final int summary_thumbsize=0x7f050258; + public static final int summary_studyon=0x7f050264; + public static final int summary_thumbsize=0x7f050257; /** */ public static final int summary_wait_guest=0x7f0501e6; @@ -2619,7 +2619,7 @@ public final class R { part of the game and that the user should ignore it. */ public static final int tell_unused=0x7f05011c; - public static final int thumb_off=0x7f050259; + public static final int thumb_off=0x7f050258; /** color of the tiles' background */ public static final int tile_back=0x7f05013e; @@ -2638,7 +2638,7 @@ public final class R { /** Title of preference in which you select which addressing modes network games will use to communicate */ - public static final int title_addrs_pref=0x7f0502b0; + public static final int title_addrs_pref=0x7f0502af; /** ############################################################ # :Screens: @@ -2682,19 +2682,19 @@ public final class R { window title */ public static final int title_prefs=0x7f05010e; - public static final int title_send_data_sms=0x7f0502d7; + public static final int title_send_data_sms=0x7f0502d6; /** If this preference is checked, tiles in the rack will be re-ordered alphabetically whenever tiles are added, i.e. after ever move. */ public static final int title_sort_tiles=0x7f05014b; - public static final int title_studyon=0x7f050264; + public static final int title_studyon=0x7f050263; /** title of dialog allowing user to pick tiles "face up". (This feature is not yet supported on Android.) */ public static final int title_tile_picker=0x7f05019c; - public static final int update_dicts_fmt=0x7f05029c; - public static final int use_defaults=0x7f0502b6; + public static final int update_dicts_fmt=0x7f05029b; + public static final int use_defaults=0x7f0502b5; /** text of checkbox controlling whether there's a game timer */ public static final int use_timer=0x7f0500bf; @@ -2702,25 +2702,25 @@ public final class R { line in a game summary. The \u0020 is a space in xml. */ public static final int vs_join=0x7f05010a; - public static final int waiting_title=0x7f0502c2; - public static final int warn_bt_disabled=0x7f050225; - public static final int warn_no_comms=0x7f0502c5; + public static final int waiting_title=0x7f0502c1; + public static final int warn_bt_disabled=0x7f050224; + public static final int warn_no_comms=0x7f0502c4; /** */ public static final int warn_nomobile_fmt=0x7f0501fe; /** */ - public static final int warn_sms_disabled=0x7f050224; + public static final int warn_sms_disabled=0x7f050223; /** */ - public static final int warn_unlimited=0x7f050205; - public static final int wifi_warning=0x7f050304; + public static final int warn_unlimited=0x7f050204; + public static final int wifi_warning=0x7f050303; /** */ public static final int word_search_hint=0x7f0501d0; - public static final int xlations_enabled_summary=0x7f050277; - public static final int xlations_enabled_title=0x7f050276; - public static final int xlations_locale=0x7f0502e2; + public static final int xlations_enabled_summary=0x7f050276; + public static final int xlations_enabled_title=0x7f050275; + public static final int xlations_locale=0x7f0502e1; /** Empty in English, this should contain the name of the translator/creator of the strings.xml file for this language diff --git a/xwords4/android/XWords4/res/values/strings.xml b/xwords4/android/XWords4/res/values/strings.xml index 31269e877..dfe48c0a8 100644 --- a/xwords4/android/XWords4/res/values/strings.xml +++ b/xwords4/android/XWords4/res/values/strings.xml @@ -1916,8 +1916,12 @@ Import contact - Please check the %1$d phone - number[s] you want to invite to your new game, then tap \"%2$s\". + + Please check the phone number you want to + invite to your new game, then tap \"%2$s\". + Please check the %1$d phone numbers you + want to invite to your new game, then tap \"%2$s\". + (Not in contacts) @@ -1930,8 +1934,12 @@ Enter phone number: - Are you sure you want to delete the - checked phone number[s]? + + Are you sure you want to delete the checked + phone number? + Are you sure you want to delete the + %1$d checked phone numbers? + Connection (via SMS/text) @@ -2296,9 +2304,18 @@ are used to build a string based on the length of time that's then inserted in the fourth. E.g "PlayerName moved more than 2 day[s], 4 hour[s] ago." --> - %1$d minute[s] - %1$d hour[s] - %1$d day[s] + + %1$d minute + %1$d minutes + + + %1$d hour + %1$d hours + + + %1$d day + %1$d days + %1$s moved more than %2$s ago. Last warning: %1$s @@ -2344,7 +2361,10 @@ Use defaults Number on this device - %1$d player[s] + + One player + %1$d players + Duplicate invitation rejected: device \"%1$s\" has already accepted an invitation to this game. diff --git a/xwords4/android/XWords4/res_src/values-ba_CK/strings.xml b/xwords4/android/XWords4/res_src/values-ba_CK/strings.xml index 19fcdd157..e3b4195f7 100644 --- a/xwords4/android/XWords4/res_src/values-ba_CK/strings.xml +++ b/xwords4/android/XWords4/res_src/values-ba_CK/strings.xml @@ -1660,8 +1660,10 @@ Tropmi tcatnoc - Esaelp kcehc eht %1$d enohp - ]s[rebmun uoy tnaw ot etivni ot ruoy wen ,emag neht pat \"%2$s\". + Esaelp kcehc eht enohp rebmun uoy tnaw ot + etivni ot ruoy wen ,emag neht pat \"%2$s\". + Esaelp kcehc eht %1$d enohp srebmun uoy + tnaw ot etivni ot ruoy wen ,emag neht pat \"%2$s\". tOn( ni )stcatnoc @@ -1675,8 +1677,12 @@ Retne enohp rebmun: - Era uoy erus uoy tnaw ot eteled eht - dekcehc enohp ?]s[rebmun + + Era uoy erus uoy tnaw ot eteled eht dekcehc + enohp ?rebmun + Era uoy erus uoy tnaw ot eteled eht + %1$d dekcehc enohp ?srebmun + Noitcennoc aiv( )TXet/sms @@ -1984,13 +1990,16 @@ inserted in the fourth. E.g "PlayerName moved more than 2 day[s], 4 hour[s] ago." --> - %1$d ]s[etunim + %1$d etunim + %1$d setunim - %1$d ]s[ruoh + %1$d ruoh + %1$d sruoh - %1$d ]s[yad + %1$d yad + %1$d syad %1$s devom erom naht %2$s oga. @@ -2034,7 +2043,8 @@ Esu stluafed Rebmun no siht ecived - %1$d ]s[reyalp + Eno reyalp + %1$d sreyalp Etacilpud noitativni detcejer: ecived \"%1$s\" sah ydaerla detpecca na noitativni ot siht diff --git a/xwords4/android/XWords4/res_src/values-ca_PS/strings.xml b/xwords4/android/XWords4/res_src/values-ca_PS/strings.xml index 5cfa76ff4..ad10613b9 100644 --- a/xwords4/android/XWords4/res_src/values-ca_PS/strings.xml +++ b/xwords4/android/XWords4/res_src/values-ca_PS/strings.xml @@ -1660,8 +1660,10 @@ IMPORT CONTACT - PLEASE CHECK THE %1$d PHONE - NUMBER[S] YOU WANT TO INVITE TO YOUR NEW GAME, THEN TAP \"%2$s\". + PLEASE CHECK THE PHONE NUMBER YOU WANT TO + INVITE TO YOUR NEW GAME, THEN TAP \"%2$s\". + PLEASE CHECK THE %1$d PHONE NUMBERS YOU + WANT TO INVITE TO YOUR NEW GAME, THEN TAP \"%2$s\". (NOT IN CONTACTS) @@ -1675,8 +1677,12 @@ ENTER PHONE NUMBER: - ARE YOU SURE YOU WANT TO DELETE THE - CHECKED PHONE NUMBER[S]? + + ARE YOU SURE YOU WANT TO DELETE THE CHECKED + PHONE NUMBER? + ARE YOU SURE YOU WANT TO DELETE THE + %1$d CHECKED PHONE NUMBERS? + CONNECTION (VIA SMS/TEXT) @@ -1984,13 +1990,16 @@ inserted in the fourth. E.g "PlayerName moved more than 2 day[s], 4 hour[s] ago." --> - %1$d MINUTE[S] + %1$d MINUTE + %1$d MINUTES - %1$d HOUR[S] + %1$d HOUR + %1$d HOURS - %1$d DAY[S] + %1$d DAY + %1$d DAYS %1$s MOVED MORE THAN %2$s AGO. @@ -2034,7 +2043,8 @@ USE DEFAULTS NUMBER ON THIS DEVICE - %1$d PLAYER[S] + ONE PLAYER + %1$d PLAYERS DUPLICATE INVITATION REJECTED: DEVICE \"%1$s\" HAS ALREADY ACCEPTED AN INVITATION TO THIS diff --git a/xwords4/android/XWords4/src/org/eehouse/android/xw4/SMSInviteDelegate.java b/xwords4/android/XWords4/src/org/eehouse/android/xw4/SMSInviteDelegate.java index 2f6f00f0c..83f602b89 100644 --- a/xwords4/android/XWords4/src/org/eehouse/android/xw4/SMSInviteDelegate.java +++ b/xwords4/android/XWords4/src/org/eehouse/android/xw4/SMSInviteDelegate.java @@ -173,7 +173,10 @@ public class SMSInviteDelegate extends InviteDelegate { protected void clearSelected() { - showConfirmThen( R.string.confirm_clear, Action.CLEAR_ACTION ); + int count = countChecks(); + String msg = getQuantityString( R.plurals.confirm_clear_fmt, + count, count ); + showConfirmThen( msg, Action.CLEAR_ACTION ); } protected void listSelected( String[][] devsP, int[][] countsP ) From 0bb51e8b93f0a6adbd857776f1e62b43a6328013 Mon Sep 17 00:00:00 2001 From: Eric House Date: Sat, 11 Jul 2015 16:24:21 -0700 Subject: [PATCH 4/6] show a toast when hint can't find anything, on the principle that user should see some response to every action. Conflicts: xwords4/android/XWords4/archive/R.java --- xwords4/android/XWords4/res/values/strings.xml | 2 ++ .../XWords4/res_src/values-ba_CK/strings.xml | 1 + .../XWords4/res_src/values-ca_PS/strings.xml | 1 + .../org/eehouse/android/xw4/BoardDelegate.java | 16 +++++++++++++++- .../org/eehouse/android/xw4/jni/UtilCtxt.java | 4 +++- xwords4/common/board.c | 2 ++ xwords4/common/util.h | 1 + xwords4/linux/linuxutl.c | 4 ++++ 8 files changed, 29 insertions(+), 2 deletions(-) diff --git a/xwords4/android/XWords4/res/values/strings.xml b/xwords4/android/XWords4/res/values/strings.xml index dfe48c0a8..0627d365a 100644 --- a/xwords4/android/XWords4/res/values/strings.xml +++ b/xwords4/android/XWords4/res/values/strings.xml @@ -2529,4 +2529,6 @@ Use Bluetooth to play against a nearby device that\'s \"paired\" with yours. + Cannot find any moves + diff --git a/xwords4/android/XWords4/res_src/values-ba_CK/strings.xml b/xwords4/android/XWords4/res_src/values-ba_CK/strings.xml index e3b4195f7..4899b352d 100644 --- a/xwords4/android/XWords4/res_src/values-ba_CK/strings.xml +++ b/xwords4/android/XWords4/res_src/values-ba_CK/strings.xml @@ -2178,4 +2178,5 @@ i.e. yreve reirrac ni eht dlrow tpecxe Nozirev dna Tnirps. Esu Htooteulb ot yalp tsniaga a ybraen ecived taht\'s \"deriap\" htiw sruoy. + Tonnac dnif yna sevom diff --git a/xwords4/android/XWords4/res_src/values-ca_PS/strings.xml b/xwords4/android/XWords4/res_src/values-ca_PS/strings.xml index ad10613b9..bfb9818ba 100644 --- a/xwords4/android/XWords4/res_src/values-ca_PS/strings.xml +++ b/xwords4/android/XWords4/res_src/values-ca_PS/strings.xml @@ -2178,4 +2178,5 @@ I.E. EVERY CARRIER IN THE WORLD EXCEPT VERIZON AND SPRINT. USE BLUETOOTH TO PLAY AGAINST A NEARBY DEVICE THAT\'S \"PAIRED\" WITH YOURS. + CANNOT FIND ANY MOVES diff --git a/xwords4/android/XWords4/src/org/eehouse/android/xw4/BoardDelegate.java b/xwords4/android/XWords4/src/org/eehouse/android/xw4/BoardDelegate.java index 3bff32314..d11b650d8 100644 --- a/xwords4/android/XWords4/src/org/eehouse/android/xw4/BoardDelegate.java +++ b/xwords4/android/XWords4/src/org/eehouse/android/xw4/BoardDelegate.java @@ -1719,6 +1719,7 @@ public class BoardDelegate extends DelegateBase public void userError( int code ) { int resid = 0; + boolean asToast = false; switch( code ) { case UtilCtxt.ERR_TILES_NOT_IN_LINE: resid = R.string.str_tiles_not_in_line; @@ -1764,10 +1765,23 @@ public class BoardDelegate extends DelegateBase case ERR_REG_SERVER_SANS_REMOTE: resid = R.string.str_reg_server_sans_remote; break; + case ERR_NO_HINT_FOUND: + resid = R.string.str_no_hint_found; + asToast = true; + break; } if ( resid != 0 ) { - nonBlockingDialog( DlgID.DLG_OKONLY, getString( resid ) ); + if ( asToast ) { + final int residf = resid; + runOnUiThread( new Runnable() { + public void run() { + showToast( residf ); + } + } ); + } else { + nonBlockingDialog( DlgID.DLG_OKONLY, getString( resid ) ); + } } } // userError diff --git a/xwords4/android/XWords4/src/org/eehouse/android/xw4/jni/UtilCtxt.java b/xwords4/android/XWords4/src/org/eehouse/android/xw4/jni/UtilCtxt.java index 82c6246f8..d4bf807aa 100644 --- a/xwords4/android/XWords4/src/org/eehouse/android/xw4/jni/UtilCtxt.java +++ b/xwords4/android/XWords4/src/org/eehouse/android/xw4/jni/UtilCtxt.java @@ -125,7 +125,9 @@ public interface UtilCtxt { static final int ERR_NO_EMPTY_TRADE = 13; static final int ERR_CANT_UNDO_TILEASSIGN = 14; static final int ERR_CANT_HINT_WHILE_DISABLED = 15; - static final int ERR_RELAY_BASE = 16; + static final int ERR_NO_HINT_FOUND = 16; + + static final int ERR_RELAY_BASE = 17; void userError( int id ); void informMove( String expl, String words ); diff --git a/xwords4/common/board.c b/xwords4/common/board.c index 97003fd88..6773b1c70 100644 --- a/xwords4/common/board.c +++ b/xwords4/common/board.c @@ -2121,6 +2121,8 @@ board_requestHint( BoardCtxt* board, } setArrowVisible( board, wasVisible ); } + } else { + util_userError( board->util, ERR_NO_HINT_FOUND ); } } return result || redraw; diff --git a/xwords4/common/util.h b/xwords4/common/util.h index 06a55f4de..02f093a5f 100644 --- a/xwords4/common/util.h +++ b/xwords4/common/util.h @@ -58,6 +58,7 @@ typedef enum { /* ERR_NOT_YOUR_TURN_TO_MOVE, */ ERR_CANT_UNDO_TILEASSIGN, ERR_CANT_HINT_WHILE_DISABLED, + ERR_NO_HINT_FOUND, /* not really an error... */ ERR_RELAY_BASE, ERR_RELAY_END = ERR_RELAY_BASE + XWRELAY_ERROR_LASTERR diff --git a/xwords4/linux/linuxutl.c b/xwords4/linux/linuxutl.c index 0f16539ed..2920777a0 100644 --- a/xwords4/linux/linuxutl.c +++ b/xwords4/linux/linuxutl.c @@ -492,6 +492,10 @@ linux_getErrString( UtilErrID id, XP_Bool* silent ) message = "No tiles selected; trade cancelled."; break; + case ERR_NO_HINT_FOUND: + message = "Unable to suggest any moves."; + break; + case ERR_CANT_UNDO_TILEASSIGN: message = "Tile assignment can't be undone."; break; From 3c58267d4ea78ce7e53fa3d6c8347a3a34d45cdb Mon Sep 17 00:00:00 2001 From: Eric House Date: Sun, 26 Jul 2015 12:09:51 -0700 Subject: [PATCH 5/6] goes with cherrypick --- xwords4/android/XWords4/archive/R.java | 1 + 1 file changed, 1 insertion(+) diff --git a/xwords4/android/XWords4/archive/R.java b/xwords4/android/XWords4/archive/R.java index 5a982b4fe..418c68b86 100644 --- a/xwords4/android/XWords4/archive/R.java +++ b/xwords4/android/XWords4/archive/R.java @@ -2430,6 +2430,7 @@ public final class R { placed, i.e. they do not form a single word. */ public static final int str_no_empties_in_turn=0x7f05017d; + public static final int str_no_hint_found=0x7f05030a; /** Same as above, but used when you try to show tiles belonging to a player on another device (a remote player.) */ From 75cd6c6693d2c0cfcd3760734f5fae430f33464d Mon Sep 17 00:00:00 2001 From: Eric House Date: Sun, 26 Jul 2015 13:17:59 -0700 Subject: [PATCH 6/6] fix logic behind "unable to find move" alert --- xwords4/common/board.c | 5 ++++- xwords4/common/engine.c | 7 +++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/xwords4/common/board.c b/xwords4/common/board.c index 6773b1c70..241ae8636 100644 --- a/xwords4/common/board.c +++ b/xwords4/common/board.c @@ -2107,6 +2107,7 @@ board_requestHint( BoardCtxt* board, if ( searchComplete && canMove ) { model_makeTurnFromMoveInfo( model, selPlayer, &newMove); } else { + result = XP_FALSE; XP_STATUSF( "unable to complete hint request\n" ); } *workRemainsP = !searchComplete; @@ -2121,7 +2122,9 @@ board_requestHint( BoardCtxt* board, } setArrowVisible( board, wasVisible ); } - } else { + } + + if ( !result ) { util_userError( board->util, ERR_NO_HINT_FOUND ); } } diff --git a/xwords4/common/engine.c b/xwords4/common/engine.c index ecb7c5830..b1aa40c62 100644 --- a/xwords4/common/engine.c +++ b/xwords4/common/engine.c @@ -393,6 +393,7 @@ engine_findMove( EngineCtxt* engine, const ModelCtxt* model, { XP_Bool result = XP_TRUE; XP_U16 star_row; + XP_Bool canMove = XP_FALSE; engine->nTilesMax = XP_MIN( MAX_TRAY_TILES, nTiles ); #ifdef XWFEATURE_BONUSALL @@ -445,9 +446,9 @@ engine_findMove( EngineCtxt* engine, const ModelCtxt* model, dictionary's emtpy or there are no tiles, still return TRUE so we don't get scheduled again. Fixes infinite loop with empty dict and a robot. */ - *canMoveP = NULL != dict_getTopEdge(engine->dict) + canMove = NULL != dict_getTopEdge(engine->dict) && initTray( engine, tiles, nTiles ); - if ( *canMoveP ) { + if ( canMove ) { util_engineStarting( engine->util, engine->rack[engine->blankTile] ); @@ -528,6 +529,7 @@ engine_findMove( EngineCtxt* engine, const ModelCtxt* model, XP_MEMCPY( newMove, &move->moveInfo, sizeof(*newMove) ); } else { newMove->nTiles = 0; + canMove = XP_FALSE; } result = XP_TRUE; } @@ -540,6 +542,7 @@ engine_findMove( EngineCtxt* engine, const ModelCtxt* model, newMove->nTiles = 0; } + *canMoveP = canMove; return result; } /* engine_findMove */