mirror of
git://xwords.git.sourceforge.net/gitroot/xwords/xwords
synced 2025-01-24 07:58:34 +01:00
Merge remote-tracking branch 'origin/android_translate' into android_translate
This commit is contained in:
commit
d1b25999a3
11 changed files with 47 additions and 99 deletions
|
@ -22,7 +22,7 @@
|
||||||
to come from a domain that you own or have control over. -->
|
to come from a domain that you own or have control over. -->
|
||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
package="org.eehouse.android.xw4dbg"
|
package="org.eehouse.android.xw4dbg"
|
||||||
android:versionCode="90"
|
android:versionCode="91"
|
||||||
android:versionName="@string/app_version"
|
android:versionName="@string/app_version"
|
||||||
>
|
>
|
||||||
|
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
to come from a domain that you own or have control over. -->
|
to come from a domain that you own or have control over. -->
|
||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
package="org.eehouse.android.xw4"
|
package="org.eehouse.android.xw4"
|
||||||
android:versionCode="90"
|
android:versionCode="91"
|
||||||
android:versionName="@string/app_version"
|
android:versionName="@string/app_version"
|
||||||
>
|
>
|
||||||
|
|
||||||
|
|
|
@ -13,10 +13,10 @@
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<h2>Crosswords 4.4 beta 97 release</h2>
|
<h2>Crosswords 4.4 beta 98 release</h2>
|
||||||
|
|
||||||
<p>This release changes how networked games are started and
|
<p>This release is mostly to get the new Dutch translation out
|
||||||
communicate.</p>
|
there, and to catch up Catalan and French.</p>
|
||||||
|
|
||||||
<div id="survey">
|
<div id="survey">
|
||||||
<p>Please <a href="https://www.surveymonkey.com/s/GX3XLHR">take
|
<p>Please <a href="https://www.surveymonkey.com/s/GX3XLHR">take
|
||||||
|
@ -26,63 +26,23 @@
|
||||||
|
|
||||||
<h3>New with this release</h3>
|
<h3>New with this release</h3>
|
||||||
<ul>
|
<ul>
|
||||||
<li>Change how games communicate: instead of using only one
|
<li>Complete and up-to-date translations into Dutch, French and
|
||||||
means (e.g. Bluetooth, SMS, or the internet/relay) a game can
|
Catalan. What langauge is next?</li>
|
||||||
use all three, switching based on what works at the time</li>
|
|
||||||
|
|
||||||
<li>Game creation requires only picking whether you're
|
<li>Allow copying invitation URL to clipboard so you can paste
|
||||||
networked or not, not how to communicate (though you can
|
it into any messaging app you like</li>
|
||||||
still control that if you like)</li>
|
|
||||||
|
|
||||||
<li>Separate inviting from playing: e.g. you can invite via
|
<li>Improvements to in-game chat experience (but more are coming)</li>
|
||||||
Bluetooth to a game that will be played via SMS</li>
|
|
||||||
|
|
||||||
<li>A game that needs remote players has a dialog on top of it
|
<li>Show a "toast" when hint button can't find any moves</li>
|
||||||
at all times you can use to invite players. The dialog goes
|
|
||||||
away when invited players connect.</li>
|
|
||||||
|
|
||||||
<li>But when a game hasn't connected yet, warn, and
|
<li>Add sms to the list of ways you can invite somebody</li>
|
||||||
don't let it send an invitation</li>
|
|
||||||
|
|
||||||
<li>On startup, if on a phone configured for other than English,
|
<li>When displaying Bluetooth-connected devices to invite, skip
|
||||||
offer to download an appropriate wordlist</li>
|
stuff like headphones</li>
|
||||||
|
<li>Turn off email invite attachments. They didn't seem to work anyway,
|
||||||
<li>New games are placed in the selected group (if any,
|
and aren't needed on modern Android.</li>
|
||||||
otherwise in default as before)</li>
|
<li>Fix very old memory leak</li>
|
||||||
|
|
||||||
<li>Add new-games buttons to main screen, and offer to hide them
|
|
||||||
after a while</li>
|
|
||||||
|
|
||||||
<li>Offer to turn Bluetooth and SMS on directly rather than just
|
|
||||||
take you to the Android prefs app</li>
|
|
||||||
|
|
||||||
<li>Hide public rooms interface by default, and add a preference
|
|
||||||
to turn it back on</li>
|
|
||||||
|
|
||||||
<li>Remove option to invite using SMS, since invitations are too
|
|
||||||
large now. (Will address in a release soon.)</li>
|
|
||||||
|
|
||||||
<li>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.)</li>
|
|
||||||
|
|
||||||
<li>Deal with deletion of dictionary that's been set as
|
|
||||||
default</li>
|
|
||||||
|
|
||||||
<li>In popup menu from in-game wordlist button, show only
|
|
||||||
wordlists in same language as game</li>
|
|
||||||
|
|
||||||
<li>When assigning new tiles, don't sort tiles to left of
|
|
||||||
tray divider</li>
|
|
||||||
|
|
||||||
<li>Remove "Reconnect" button from network status info</li>
|
|
||||||
|
|
||||||
<li>Include info for all communication means being used in
|
|
||||||
network status, and only show an icon in networked games </li>
|
|
||||||
|
|
||||||
<li>Show status message after writing to SD card</li>
|
|
||||||
|
|
||||||
<li>Fix a few crashes</li>
|
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<p>(The full changelog
|
<p>(The full changelog
|
||||||
|
@ -92,7 +52,6 @@
|
||||||
<ul>
|
<ul>
|
||||||
<li>Offer "Rematch" when game's over (Easy via
|
<li>Offer "Rematch" when game's over (Easy via
|
||||||
SMS and Bluetooth; harder via the internet/relay)</li>
|
SMS and Bluetooth; harder via the internet/relay)</li>
|
||||||
<li>Fix invite-by-SMS (and then re-enable)</li>
|
|
||||||
<li>Look into supporting play via peer-to-peer wifi</li>
|
<li>Look into supporting play via peer-to-peer wifi</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
|
11
xwords4/android/XWords4/img_src/send.svg
Normal file
11
xwords4/android/XWords4/img_src/send.svg
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||||
|
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="120"
|
||||||
|
height="120" xml:space="preserve">
|
||||||
|
<g
|
||||||
|
id="g12"
|
||||||
|
transform="matrix(1.25,0,0,-1.25,0,120)">
|
||||||
|
<g transform='translate(20.24,20.6)' id='g1090'>
|
||||||
|
<path style='fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none' d='M 0,0 5.287,24.92 38.6,27.24 38.6,27.57 5.287,29.89 0,54.81 55.52,27.4 0,0 z' id='path1092'/>
|
||||||
|
</g></g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 584 B |
|
@ -1,5 +1,5 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
|
||||||
<resources>
|
<resources>
|
||||||
<string name="app_version">4.4 beta 97</string>
|
<string name="app_version">4.4 beta 98</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
@ -1256,7 +1256,7 @@
|
||||||
-->
|
-->
|
||||||
<!-- title of the chat screen. The name of the current game is
|
<!-- title of the chat screen. The name of the current game is
|
||||||
substituted for %1$s. -->
|
substituted for %1$s. -->
|
||||||
<string name="chat_title_fmt">%1$s message history</string>
|
<string name="chat_title_fmt">%1$s messages</string>
|
||||||
<!-- Prefix for local messages -->
|
<!-- Prefix for local messages -->
|
||||||
<string name="chat_local_id">Me:\u0020</string>
|
<string name="chat_local_id">Me:\u0020</string>
|
||||||
<!-- Prefix for remote messages -->
|
<!-- Prefix for remote messages -->
|
||||||
|
@ -2548,23 +2548,18 @@
|
||||||
<item quantity="other">%1$s messages sent</item>
|
<item quantity="other">%1$s messages sent</item>
|
||||||
</plurals>
|
</plurals>
|
||||||
|
|
||||||
<!-- EXPERIMENATL: A choice of how to invite, along with SMS,
|
<string name="confirm_clear_chat">Are you sure you want to delete
|
||||||
Bluetooth, email etc -->
|
all chat history for this game?\n\n(This action cannot be
|
||||||
<string name="invite_choice_clip">I\'ll choose</string>
|
undone.)</string>
|
||||||
<!-- EXPERIMENATL: Shown as toast when user chooses "My choice" for
|
<!-- EXPERIMENTAL: Shown as toast when user chooses "Copy to
|
||||||
invitation -->
|
clipboard" for invitation -->
|
||||||
<string name="invite_copied">Invitation ready to paste</string>
|
<string name="invite_copied">Invitation ready to paste</string>
|
||||||
<!-- EXPERIMENATL: "label" for invite on clipboard. If it's shown
|
<!-- EXPERIMENTAL: "label" for invite on clipboard. If it's shown
|
||||||
it's by some Android utility -->
|
it's by some Android utility -->
|
||||||
<string name="clip_label">Invitation URL</string>
|
<string name="clip_label">Invitation URL</string>
|
||||||
<!-- EXPERIMENATL: Newbie hint next when invite_choice_clip shown
|
<!-- EXPERIMENTAL: Newbie hint next when invite_choice_clip shown
|
||||||
when chosen -->
|
when chosen -->
|
||||||
<string name="not_again_clip_expl_fmt">The \"%1$s\" option copies an
|
<string name="not_again_clip_expl_fmt">The \"%1$s\" option copies an
|
||||||
invitation URL to the clipboard. Paste it into the app of your
|
invitation URL to the clipboard. Paste it into the app of your
|
||||||
choice and send it to your friend.</string>
|
choice and send it to your friend.</string>
|
||||||
|
|
||||||
<string name="confirm_clear_chat">Are you sure you want to delete
|
|
||||||
all chat history for this game?\n\n(This action cannot be
|
|
||||||
undone.)</string>
|
|
||||||
|
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
@ -142,7 +142,7 @@ public class DBUtils {
|
||||||
DBHelper.ROOMNAME, DBHelper.RELAYID,
|
DBHelper.ROOMNAME, DBHelper.RELAYID,
|
||||||
/*DBHelper.SMSPHONE,*/ DBHelper.SEED,
|
/*DBHelper.SMSPHONE,*/ DBHelper.SEED,
|
||||||
DBHelper.DICTLANG, DBHelper.GAMEID,
|
DBHelper.DICTLANG, DBHelper.GAMEID,
|
||||||
DBHelper.SCORES, DBHelper.HASMSGS,
|
DBHelper.SCORES,
|
||||||
DBHelper.LASTPLAY_TIME, DBHelper.REMOTEDEVS,
|
DBHelper.LASTPLAY_TIME, DBHelper.REMOTEDEVS,
|
||||||
DBHelper.LASTMOVE, DBHelper.NPACKETSPENDING,
|
DBHelper.LASTMOVE, DBHelper.NPACKETSPENDING,
|
||||||
DBHelper.EXTRAS,
|
DBHelper.EXTRAS,
|
||||||
|
@ -255,11 +255,6 @@ public class DBUtils {
|
||||||
col = cursor.getColumnIndex( DBHelper.SERVERROLE );
|
col = cursor.getColumnIndex( DBHelper.SERVERROLE );
|
||||||
tmp = cursor.getInt( col );
|
tmp = cursor.getInt( col );
|
||||||
summary.serverRole = CurGameInfo.DeviceRole.values()[tmp];
|
summary.serverRole = CurGameInfo.DeviceRole.values()[tmp];
|
||||||
|
|
||||||
col = cursor.getColumnIndex( DBHelper.HASMSGS );
|
|
||||||
if ( col >= 0 ) {
|
|
||||||
summary.pendingMsgLevel = cursor.getInt( col );
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
cursor.close();
|
cursor.close();
|
||||||
db.close();
|
db.close();
|
||||||
|
@ -307,7 +302,6 @@ public class DBUtils {
|
||||||
values.put( DBHelper.NEXTNAG, nextNag );
|
values.put( DBHelper.NEXTNAG, nextNag );
|
||||||
|
|
||||||
values.put( DBHelper.DICTLIST, summary.dictNames(DICTS_SEP) );
|
values.put( DBHelper.DICTLIST, summary.dictNames(DICTS_SEP) );
|
||||||
values.put( DBHelper.HASMSGS, summary.pendingMsgLevel );
|
|
||||||
if ( null != inviteID ) {
|
if ( null != inviteID ) {
|
||||||
values.put( DBHelper.INVITEID, inviteID );
|
values.put( DBHelper.INVITEID, inviteID );
|
||||||
}
|
}
|
||||||
|
|
|
@ -632,7 +632,7 @@ public class DlgDelegate {
|
||||||
means.add( DlgClickNotify.InviteMeans.NFC );
|
means.add( DlgClickNotify.InviteMeans.NFC );
|
||||||
}
|
}
|
||||||
final int clipPos = means.size();
|
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 );
|
means.add( DlgClickNotify.InviteMeans.CLIPBOARD );
|
||||||
|
|
||||||
final int[] sel = { -1 };
|
final int[] sel = { -1 };
|
||||||
|
@ -649,7 +649,7 @@ public class DlgDelegate {
|
||||||
if ( view == clipPos ) {
|
if ( view == clipPos ) {
|
||||||
String msg =
|
String msg =
|
||||||
getString( R.string.not_again_clip_expl_fmt,
|
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 );
|
showNotAgainDlgThen( msg, R.string.key_na_clip_expl );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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 )
|
private static int setFromFeedImpl( FeedUtilsImpl feedImpl )
|
||||||
{
|
{
|
||||||
int result = GameSummary.MSG_FLAGS_NONE;
|
int result = GameSummary.MSG_FLAGS_NONE;
|
||||||
|
@ -185,17 +178,12 @@ public class GameUtils {
|
||||||
}
|
}
|
||||||
|
|
||||||
private static GameSummary summarizeAndClose( Context context,
|
private static GameSummary summarizeAndClose( Context context,
|
||||||
GameLock lock,
|
GameLock lock, int gamePtr,
|
||||||
int gamePtr, CurGameInfo gi,
|
CurGameInfo gi )
|
||||||
FeedUtilsImpl feedImpl )
|
|
||||||
{
|
{
|
||||||
GameSummary summary = new GameSummary( context, gi );
|
GameSummary summary = new GameSummary( context, gi );
|
||||||
XwJNI.game_summarize( gamePtr, summary );
|
XwJNI.game_summarize( gamePtr, summary );
|
||||||
|
|
||||||
if ( null != feedImpl ) {
|
|
||||||
summary.pendingMsgLevel |= setFromFeedImpl( feedImpl );
|
|
||||||
}
|
|
||||||
|
|
||||||
DBUtils.saveSummary( context, lock, summary );
|
DBUtils.saveSummary( context, lock, summary );
|
||||||
|
|
||||||
XwJNI.game_dispose( gamePtr );
|
XwJNI.game_dispose( gamePtr );
|
||||||
|
@ -923,12 +911,13 @@ public class GameUtils {
|
||||||
}
|
}
|
||||||
|
|
||||||
saveGame( context, gamePtr, gi, lock, false );
|
saveGame( context, gamePtr, gi, lock, false );
|
||||||
summarizeAndClose( context, lock, gamePtr, gi, feedImpl );
|
summarizeAndClose( context, lock, gamePtr, gi );
|
||||||
|
|
||||||
int flags = setFromFeedImpl( feedImpl );
|
int flags = setFromFeedImpl( feedImpl );
|
||||||
if ( GameSummary.MSG_FLAGS_NONE != flags ) {
|
if ( GameSummary.MSG_FLAGS_NONE != flags ) {
|
||||||
draw = true;
|
draw = true;
|
||||||
DBUtils.setMsgFlags( rowid, flags );
|
int curFlags = DBUtils.getMsgFlags( context, rowid );
|
||||||
|
DBUtils.setMsgFlags( rowid, flags | curFlags );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
lock.unlock();
|
lock.unlock();
|
||||||
|
|
|
@ -63,7 +63,6 @@ public class GameSummary {
|
||||||
public String roomName;
|
public String roomName;
|
||||||
public String relayID;
|
public String relayID;
|
||||||
public int seed;
|
public int seed;
|
||||||
public int pendingMsgLevel;
|
|
||||||
public long modtime;
|
public long modtime;
|
||||||
public int gameID;
|
public int gameID;
|
||||||
public String[] remoteDevs; // BTAddrs and phone numbers
|
public String[] remoteDevs; // BTAddrs and phone numbers
|
||||||
|
@ -83,7 +82,6 @@ public class GameSummary {
|
||||||
|
|
||||||
public GameSummary( Context context ) {
|
public GameSummary( Context context ) {
|
||||||
m_context = context;
|
m_context = context;
|
||||||
pendingMsgLevel = 0;
|
|
||||||
gameID = 0;
|
gameID = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -40,6 +40,8 @@ do_dir() {
|
||||||
for FILE in $SRC_PATH/*; do
|
for FILE in $SRC_PATH/*; do
|
||||||
if [ -d $FILE ]; then
|
if [ -d $FILE ]; then
|
||||||
do_dir $SRC_PATH $DEST_PATH $(basename $FILE)
|
do_dir $SRC_PATH $DEST_PATH $(basename $FILE)
|
||||||
|
elif [ ! -e $FILE ]; then
|
||||||
|
:
|
||||||
else
|
else
|
||||||
FILE=${FILE/$SRC_PATH/$DEST_PATH}
|
FILE=${FILE/$SRC_PATH/$DEST_PATH}
|
||||||
if git ls-files $FILE --error-unmatch 2>/dev/null; then
|
if git ls-files $FILE --error-unmatch 2>/dev/null; then
|
||||||
|
|
Loading…
Add table
Reference in a new issue