Merge remote-tracking branch 'origin/android_translate' into android_translate

This commit is contained in:
Weblate 2015-08-26 07:42:41 +02:00
commit d1b25999a3
11 changed files with 47 additions and 99 deletions

View file

@ -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"
> >

View file

@ -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"
> >

View file

@ -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&apos;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&apos;t connected yet, warn, and <li>Add sms to the list of ways you can invite somebody</li>
don&apos;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&apos;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&apos;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&apos;t sort tiles to left of
tray divider</li>
<li>Remove &quot;Reconnect&quot; 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 &quot;Rematch&quot; when game&apos;s over (Easy via <li>Offer &quot;Rematch&quot; when game&apos;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>

View 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

View file

@ -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>

View file

@ -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>

View file

@ -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 );
} }

View file

@ -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 );
} }
} }

View file

@ -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();

View file

@ -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;
} }

View file

@ -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