diff --git a/xwords4/android/XWords4-dbg/AndroidManifest.xml b/xwords4/android/XWords4-dbg/AndroidManifest.xml index bc8a109d6..d12be4963 100644 --- a/xwords4/android/XWords4-dbg/AndroidManifest.xml +++ b/xwords4/android/XWords4-dbg/AndroidManifest.xml @@ -22,7 +22,7 @@ to come from a domain that you own or have control over. --> diff --git a/xwords4/android/XWords4/AndroidManifest.xml b/xwords4/android/XWords4/AndroidManifest.xml index 20c206b94..f711fbee6 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/assets/changes.html b/xwords4/android/XWords4/assets/changes.html index 050cd73d2..2119df2b6 100644 --- a/xwords4/android/XWords4/assets/changes.html +++ b/xwords4/android/XWords4/assets/changes.html @@ -13,10 +13,10 @@ -

Crosswords 4.4 beta 97 release

+

Crosswords 4.4 beta 98 release

-

This release changes how networked games are started and - communicate.

+

This release is mostly to get the new Dutch translation out + there, and to catch up Catalan and French.

Please take @@ -26,63 +26,23 @@

New with this release

    -
  • Change how games communicate: instead of using only one - means (e.g. Bluetooth, SMS, or the internet/relay) a game can - use all three, switching based on what works at the time
  • +
  • Complete and up-to-date translations into Dutch, French and + Catalan. What langauge is next?
  • -
  • Game creation requires only picking whether you're - networked or not, not how to communicate (though you can - still control that if you like)
  • +
  • Allow copying invitation URL to clipboard so you can paste + it into any messaging app you like
  • -
  • Separate inviting from playing: e.g. you can invite via - Bluetooth to a game that will be played via SMS
  • +
  • Improvements to in-game chat experience (but more are coming)
  • -
  • A game that needs remote players has a dialog on top of it - at all times you can use to invite players. The dialog goes - away when invited players connect.
  • +
  • Show a "toast" when hint button can't find any moves
  • -
  • But when a game hasn't connected yet, warn, and - don't let it send an invitation
  • +
  • Add sms to the list of ways you can invite somebody
  • -
  • On startup, if on a phone configured for other than English, - offer to download an appropriate wordlist
  • - -
  • New games are placed in the selected group (if any, - otherwise in default as before)
  • - -
  • Add new-games buttons to main screen, and offer to hide them - after a while
  • - -
  • Offer to turn Bluetooth and SMS on directly rather than just - take you to the Android prefs app
  • - -
  • Hide public rooms interface by default, and add a preference - to turn it back on
  • - -
  • Remove option to invite using SMS, since invitations are too - large now. (Will address in a release soon.)
  • - -
  • Kill play-via-SMS for non-GSM phones. (Google's making - it too hard to support this, and non-GSM phones are only - found in one country anyway.)
  • - -
  • Deal with deletion of dictionary that's been set as - default
  • - -
  • In popup menu from in-game wordlist button, show only - wordlists in same language as game
  • - -
  • When assigning new tiles, don't sort tiles to left of - tray divider
  • - -
  • Remove "Reconnect" button from network status info
  • - -
  • Include info for all communication means being used in - network status, and only show an icon in networked games
  • - -
  • Show status message after writing to SD card
  • - -
  • Fix a few crashes
  • +
  • When displaying Bluetooth-connected devices to invite, skip + stuff like headphones
  • +
  • Turn off email invite attachments. They didn't seem to work anyway, + and aren't needed on modern Android.
  • +
  • Fix very old memory leak

(The full changelog @@ -92,7 +52,6 @@

  • Offer "Rematch" when game's over (Easy via SMS and Bluetooth; harder via the internet/relay)
  • -
  • Fix invite-by-SMS (and then re-enable)
  • Look into supporting play via peer-to-peer wifi
diff --git a/xwords4/android/XWords4/img_src/send.svg b/xwords4/android/XWords4/img_src/send.svg new file mode 100644 index 000000000..1488968ee --- /dev/null +++ b/xwords4/android/XWords4/img_src/send.svg @@ -0,0 +1,11 @@ + + + + + + + + diff --git a/xwords4/android/XWords4/res/values/app_name.xml b/xwords4/android/XWords4/res/values/app_name.xml index 849edadf9..6cb1ce6b9 100644 --- a/xwords4/android/XWords4/res/values/app_name.xml +++ b/xwords4/android/XWords4/res/values/app_name.xml @@ -1,5 +1,5 @@ - 4.4 beta 97 + 4.4 beta 98 diff --git a/xwords4/android/XWords4/res/values/strings.xml b/xwords4/android/XWords4/res/values/strings.xml index efea39e97..b306a679d 100644 --- a/xwords4/android/XWords4/res/values/strings.xml +++ b/xwords4/android/XWords4/res/values/strings.xml @@ -1256,7 +1256,7 @@ --> - %1$s message history + %1$s messages Me:\u0020 @@ -2548,23 +2548,18 @@ %1$s messages sent - - I\'ll choose - + Are you sure you want to delete + all chat history for this game?\n\n(This action cannot be + undone.) + Invitation ready to paste - Invitation URL - The \"%1$s\" option copies an invitation URL to the clipboard. Paste it into the app of your choice and send it to your friend. - - Are you sure you want to delete - all chat history for this game?\n\n(This action cannot be - undone.) - diff --git a/xwords4/android/XWords4/src/org/eehouse/android/xw4/DBUtils.java b/xwords4/android/XWords4/src/org/eehouse/android/xw4/DBUtils.java index 3921beb53..f582ccab3 100644 --- a/xwords4/android/XWords4/src/org/eehouse/android/xw4/DBUtils.java +++ b/xwords4/android/XWords4/src/org/eehouse/android/xw4/DBUtils.java @@ -142,7 +142,7 @@ public class DBUtils { DBHelper.ROOMNAME, DBHelper.RELAYID, /*DBHelper.SMSPHONE,*/ DBHelper.SEED, DBHelper.DICTLANG, DBHelper.GAMEID, - DBHelper.SCORES, DBHelper.HASMSGS, + DBHelper.SCORES, DBHelper.LASTPLAY_TIME, DBHelper.REMOTEDEVS, DBHelper.LASTMOVE, DBHelper.NPACKETSPENDING, DBHelper.EXTRAS, @@ -255,11 +255,6 @@ public class DBUtils { col = cursor.getColumnIndex( DBHelper.SERVERROLE ); tmp = cursor.getInt( col ); summary.serverRole = CurGameInfo.DeviceRole.values()[tmp]; - - col = cursor.getColumnIndex( DBHelper.HASMSGS ); - if ( col >= 0 ) { - summary.pendingMsgLevel = cursor.getInt( col ); - } } cursor.close(); db.close(); @@ -307,7 +302,6 @@ public class DBUtils { values.put( DBHelper.NEXTNAG, nextNag ); values.put( DBHelper.DICTLIST, summary.dictNames(DICTS_SEP) ); - values.put( DBHelper.HASMSGS, summary.pendingMsgLevel ); if ( null != inviteID ) { values.put( DBHelper.INVITEID, inviteID ); } diff --git a/xwords4/android/XWords4/src/org/eehouse/android/xw4/DlgDelegate.java b/xwords4/android/XWords4/src/org/eehouse/android/xw4/DlgDelegate.java index 6906a7a15..8c0b101b4 100644 --- a/xwords4/android/XWords4/src/org/eehouse/android/xw4/DlgDelegate.java +++ b/xwords4/android/XWords4/src/org/eehouse/android/xw4/DlgDelegate.java @@ -632,7 +632,7 @@ public class DlgDelegate { means.add( DlgClickNotify.InviteMeans.NFC ); } final int clipPos = means.size(); - items.add( getString( R.string.invite_choice_clip ) ); + items.add( getString( R.string.slmenu_copy_sel ) ); means.add( DlgClickNotify.InviteMeans.CLIPBOARD ); final int[] sel = { -1 }; @@ -649,7 +649,7 @@ public class DlgDelegate { if ( view == clipPos ) { String msg = getString( R.string.not_again_clip_expl_fmt, - getString(R.string.invite_choice_clip) ); + getString(R.string.slmenu_copy_sel) ); showNotAgainDlgThen( msg, R.string.key_na_clip_expl ); } } diff --git a/xwords4/android/XWords4/src/org/eehouse/android/xw4/GameUtils.java b/xwords4/android/XWords4/src/org/eehouse/android/xw4/GameUtils.java index 716a16860..d635ca79c 100644 --- a/xwords4/android/XWords4/src/org/eehouse/android/xw4/GameUtils.java +++ b/xwords4/android/XWords4/src/org/eehouse/android/xw4/GameUtils.java @@ -162,13 +162,6 @@ public class GameUtils { } } - private static GameSummary summarizeAndClose( Context context, - GameLock lock, - int gamePtr, CurGameInfo gi ) - { - return summarizeAndClose( context, lock, gamePtr, gi, null ); - } - private static int setFromFeedImpl( FeedUtilsImpl feedImpl ) { int result = GameSummary.MSG_FLAGS_NONE; @@ -185,17 +178,12 @@ public class GameUtils { } private static GameSummary summarizeAndClose( Context context, - GameLock lock, - int gamePtr, CurGameInfo gi, - FeedUtilsImpl feedImpl ) + GameLock lock, int gamePtr, + CurGameInfo gi ) { GameSummary summary = new GameSummary( context, gi ); XwJNI.game_summarize( gamePtr, summary ); - if ( null != feedImpl ) { - summary.pendingMsgLevel |= setFromFeedImpl( feedImpl ); - } - DBUtils.saveSummary( context, lock, summary ); XwJNI.game_dispose( gamePtr ); @@ -923,12 +911,13 @@ public class GameUtils { } saveGame( context, gamePtr, gi, lock, false ); - summarizeAndClose( context, lock, gamePtr, gi, feedImpl ); + summarizeAndClose( context, lock, gamePtr, gi ); int flags = setFromFeedImpl( feedImpl ); if ( GameSummary.MSG_FLAGS_NONE != flags ) { draw = true; - DBUtils.setMsgFlags( rowid, flags ); + int curFlags = DBUtils.getMsgFlags( context, rowid ); + DBUtils.setMsgFlags( rowid, flags | curFlags ); } } lock.unlock(); diff --git a/xwords4/android/XWords4/src/org/eehouse/android/xw4/jni/GameSummary.java b/xwords4/android/XWords4/src/org/eehouse/android/xw4/jni/GameSummary.java index 11117d820..9d496ec6a 100644 --- a/xwords4/android/XWords4/src/org/eehouse/android/xw4/jni/GameSummary.java +++ b/xwords4/android/XWords4/src/org/eehouse/android/xw4/jni/GameSummary.java @@ -63,7 +63,6 @@ public class GameSummary { public String roomName; public String relayID; public int seed; - public int pendingMsgLevel; public long modtime; public int gameID; public String[] remoteDevs; // BTAddrs and phone numbers @@ -83,7 +82,6 @@ public class GameSummary { public GameSummary( Context context ) { m_context = context; - pendingMsgLevel = 0; gameID = 0; } diff --git a/xwords4/android/scripts/mkvariant.sh b/xwords4/android/scripts/mkvariant.sh index 56ce68943..9333862fd 100755 --- a/xwords4/android/scripts/mkvariant.sh +++ b/xwords4/android/scripts/mkvariant.sh @@ -40,6 +40,8 @@ do_dir() { for FILE in $SRC_PATH/*; do if [ -d $FILE ]; then do_dir $SRC_PATH $DEST_PATH $(basename $FILE) + elif [ ! -e $FILE ]; then + : else FILE=${FILE/$SRC_PATH/$DEST_PATH} if git ls-files $FILE --error-unmatch 2>/dev/null; then