Commit graph

7556 commits

Author SHA1 Message Date
Eric House
5bdc473e02 use NBSProxy if available
Lots of work dealing with banned permissions (SEND_SMS and
RECEIVE_SMS). First, if they're banned and NBSProxy is installed, just
use it as if the permissions had been granted. When it's not there,
explain at various points where users will otherwise be confused: when
they try to invite using data sms, or when they open a game that already
uses it.)
2019-06-23 10:16:59 -07:00
Eric House
c59e86b724 support setActionPair() for okOnly alerts too 2019-06-23 10:14:16 -07:00
Eric House
4493f9d9cd cut some logging 2019-06-23 10:14:16 -07:00
Eric House
039e50ecff remove misplaced assert
It's an error to use an env with the wrong thread, but it IS possible
for more than one thread to be associated with the same env. So don't
assert to the contrary.
2019-06-23 10:14:16 -07:00
Eric House
d5ae8356b4 fixing refcounting and adding logging
Seeing the occasional crash and trying to plug leaks that might be
contributing. I think I fixed the Gameptr.finalize() assertions I've
been seeing forever but the thread match assertion remains. Logs will
help catch that.
2019-06-23 10:14:16 -07:00
Eric House
7f8b3c1820 remove logging and reformat: no change 2019-06-23 10:14:16 -07:00
Eric House
8ace884d56 return supported types as list, not set
I was seeing them displayed in different orders where I want to control
the order instead.
2019-06-23 10:14:16 -07:00
Eric House
451d2a271e use constant APPLICATION_ID instead of method call 2019-06-23 10:14:16 -07:00
Eric House
89c103ab4c remove some logging 2019-06-23 10:14:16 -07:00
Eric House
aa8296f829 make setActionPair work for confirmThen alerts too
(To be used shortly)
2019-06-23 10:14:16 -07:00
Eric House
4297b3c2c3 recast SMSService as a JobIntentService
Didn't think it was required, but once the app started getting messages
in the background it stoped working or crashed. Changes are minimal
because this service isn't responsible for receiving messages: it
doesn't have the long-lived threads of the BT and Relay services.
2019-06-23 10:14:16 -07:00
Eric House
2b87d60cba Let's test this jitpack stuff on Travis
Importing a library but not using it yet
2019-06-23 10:14:16 -07:00
Eric House
bec37536f6 more data with my SMS
And catch an exception starting SMSService in background
2019-06-23 10:14:16 -07:00
Eric House
713d2e5634 make result -1 if will otherwise trip asserts. 2019-06-23 10:13:32 -07:00
Eric House
c05d8c43d2 logging toward finding who's sending or reporting 0 2019-06-23 10:13:32 -07:00
Eric House
89a5ccf4bc pull nbs port-checking over from NBSProxy 2019-06-23 10:13:32 -07:00
Eric House
8fb1a8405a add extra explanatory text to phone number invite dialog
Set different expectations based on whether the invitation's by NBS or a
launch of the messaging app.
2019-06-23 10:13:32 -07:00
Eric House
13b789847c distinguish between NBS and SMS
What I've been calling SMS is now "data sms" (or "nbs", in
code). There's a new way of inviting, called "User Sms" or somesuch,
that launches the user's SMS app with a URL and phone number, much like
email (save that no addressing is required by the inviter.) This new way
won't be involved in the ban on SMS permissions. (But play by NBS is
still awesome and will stay where it can.)
2019-06-23 10:13:32 -07:00
Eric House
15a1dad5ea that's already done 2019-06-23 10:13:31 -07:00
Eric House
a187fdca64 put back the nbs port 2019-06-23 10:13:31 -07:00
Eric House
27e33dda62 new version code to replace bad upload 2019-06-23 10:13:31 -07:00
Eric House
a400a62753 fix broken noSMS variant
needed SMS permissions in a new xw4 manifest
2019-06-23 10:13:31 -07:00
Eric House
f5d92735be remove SMS_BANNED stuff for now 2019-06-23 10:13:31 -07:00
Eric House
3a41be0051 up changelog 2019-06-23 10:13:31 -07:00
Eric House
9baffc93e3 exit thread when BT turned off
(The test was in the thread this replaced.)
2019-06-23 10:13:31 -07:00
Eric House
23739f57b9 put back SMS permissions
March 9's the deadline, so let's not remove it yet!
2019-06-23 10:13:31 -07:00
Eric House
5897e4c59e make packet accumulator a thread that sends
Get rid of the single sender thread and the complexity of querying
individual queues for their state (and the slowdown that happened when
successful writes had to wait for those to devices that weren't
responding). Instead each PacketAccumulator does its own waiting with
timeouts and backoffs, wakes itself when appropriate, and periodically
sends if it can make a connection. Now when there are a bunch of
messages ready they'll get sent pretty quickly once connections to the
remote device start to be successful.
2019-06-23 10:13:31 -07:00
Eric House
183b221a2e each message gets a localID so logs can show progress
And rewrite toString()
2019-06-23 10:13:31 -07:00
Eric House
156c05d54c add another DeadlockWatch (and import already) 2019-06-23 10:13:31 -07:00
Eric House
614b4d3610 put Killer back: device can receive but never process
A device where the OS isn't servicing enqueueWork() requests won't write
back to sockets it accept()s, causing the sender's writer to block
forever. So give it 30 seconds then kill the socket.
2019-06-23 10:13:31 -07:00
Eric House
9bd95d2ccf fix NPE (by inspection, from crashlytics report) 2019-06-23 10:13:31 -07:00
Eric House
e73f1b5b88 don't enqueue dupes of messages already in queue
No point in giving a spot to something the receiver will drop as a
duplicate.
2019-06-23 10:13:31 -07:00
Eric House
0133459114 update status more often (as old code did) 2019-06-23 10:13:31 -07:00
Eric House
9eef188ebe fix concurrent access exception and too-slow sends
if we successfully send, we should reset the backoff so we try again
quickly. Especially at a time when only one message is sent per connection.
2019-06-23 10:13:31 -07:00
Eric House
a8241cc085 change key to force new value
fixes what was probably a crash only for me, but....
2019-06-23 10:13:31 -07:00
Eric House
0d757c605f report invitation success even if dict download needed 2019-06-23 10:13:31 -07:00
Eric House
d907b4201c use https scheme for dict downloads 2019-06-23 10:13:31 -07:00
Eric House
9915c464af Move back to old one-msg-per-connect() model
Add support for the old protocol, and define to use it. After the next
release has been adopted and everybody can read the new protocol another
release will turn it on.
2019-06-23 10:13:31 -07:00
Eric House
31d8345e6b add not-again checkbox to BAD_BT_PROTO dialog
Won't help the old-build side of the exchange of course.
2019-06-23 10:13:31 -07:00
Eric House
341293dc55 prune only those messages successfully sent
Fix race condition that would have cleared all messages including those
added after a send began. In the process, move to storing outbound
messages individually rather than concatenated in their stream format.
2019-06-23 10:13:31 -07:00
Eric House
ff2a06592f add alert to launch app when OS not scheduling service
Set a boolean every time app's upgraded, and clear it on first launch of
MainActivity. In between, if we try to launch the BTService but the OS
doesn't schedule it, post a notification asking user to launch the app.
2019-06-23 10:13:31 -07:00
Eric House
1505a443ac exit threads when BT off; add util to report deadlocks
I've seen a deadlock in the BT stuff. Now they'll be caught and reported
via Crashlytics on DEBUG builds.
2019-06-23 10:13:31 -07:00
Eric House
e23129c0e7 always increment failure count on send failure 2019-06-23 10:13:31 -07:00
Eric House
5cb2be33d2 Rewrite BT proto to batch messages
Lots of changes. Old BT proto is no longer compatible. New one
batches messages per device and sends all on a single connection.
The queue (now a single buffer) is now a static global and the thread
that services it doesn't die (but gloms onto whatever Service instance
is most recent.) Code to pack and unpack the protocol can probably be
reused for wifi-direct or any other pass-through transport.
2019-06-23 10:13:31 -07:00
Eric House
e13d90409c replace some firing asserts with log messages
I'm getting crashes on a device with an iffy wifi connection and no SIM.
May need to look into these.
2019-06-23 10:13:31 -07:00
Eric House
997aad84ff don't open game just because it was created
Posting a notification is enough. And existing code already handles the
missing dict case, so GamesListDelegate doesn't even need to know.
2019-06-23 10:13:31 -07:00
Eric House
54fb43ec62 double scan progress time
Since the BT stuff tends to timeout late when failing, this looks better.
2019-06-23 10:13:31 -07:00
Eric House
de9b0851d5 add env to map immediately, in initGame()
I'm seeing an assertion failure in cleanup that could be explained by
the cleanup happening when initGame() has been called but no subsequent
jni method that would have added the env to the map. So let's add it
immediately so that can't happen.
2019-06-23 10:13:31 -07:00
naofum
f8537c6a88 Translated using Weblate (Japanese)
Currently translated at 74.3% (568 of 764 strings)
2019-06-23 10:13:31 -07:00
Eric House
989f7524d6 unselect any game moved into a closed group
Fixes GameOver game moved via "archive" checkbox remaining selected
2019-06-23 10:12:05 -07:00
Eric House
76957fe4eb don't move selected games via context menu
Both ways of invoking move-to-group were working on the set of selected
games. Instead pass what's meant to be operated on as a parameter.
2019-06-23 10:12:05 -07:00
Eric House
682501814b put GameOver view layout into a ScrollView
When device in landscape the archive box is otherwise unreachable on a
four-player game
2019-06-23 10:12:05 -07:00
Eric House
dc1431fd08 make GamePtr AutoCloseable and use where possible 2019-06-23 10:12:05 -07:00
Eric House
c706205cd1 Make JNIThread autoclosable and use everywhere
JNIThread is somehow sticking around sometimes and holding the lock for
a game so that that game can never be opened again. On the theory that
there's some place retain() was called but not release(), use the thing
in try-with-resources wherever possible. Which is pretty much
everywhere.

Also added age to the lock-holder report being uploaded.
2019-06-23 10:12:05 -07:00
Eric House
e56770ea29 include stack of lock owner when logging failure to lock 2019-06-23 10:12:05 -07:00
Eric House
ceb68b9787 Fix NPE when url for delete game has changed
I think it's only an issue for debug builds where I've manually pointed
at a different server, but just in case.
2019-06-23 10:12:05 -07:00
Eric House
58882fe52f make text in new GameOver alert bigger
To match how it was when using the system-provided view.
2019-06-23 10:12:05 -07:00
Eric House
25509c729a report stack of lock owner to crashlytics when can't get it
I'm seeing something permanently lock a game so it can't be opened. So
add code to report the stack of the owner to Crashlytics when opening
fails 3 times in a row. It's stubbed out for non-debug builds.
2019-06-23 10:12:05 -07:00
Eric House
babca4a696 Add custom GameOver alert for GameOver with Archive checkbox
I didn't like having to re-open a game to archive it after
rematching, so now there's a checkbox that lets you archive it after
either rematching OR just using OK to dismiss the alert. Also fixed
rematch of a solo game causing new game to be created in Archive
group if that's where the source game was.

squash me
2019-06-23 10:12:05 -07:00
Eric House
0ad9b0f891 up copyright year 2019-06-23 10:12:05 -07:00
Eric House
fce0eb2acc add git rev to crashlytics reports 2019-06-23 10:12:05 -07:00
Eric House
0cd0bd4c03 plug leak 2019-06-23 10:12:05 -07:00
Eric House
2afce586a3 avoid crashes when BT turned off
Test at enqueueWork() and onHandleWorkImpl(). Seems to do it. Maybe
turning it off mid-send will still crash...
2019-06-23 10:12:05 -07:00
Eric House
601eaf395c don't create threads we won't use 2019-06-23 10:12:05 -07:00
Eric House
7ba2f92645 null listener thread ref so will be restarted
Once it died it stayed dead: bad.
2019-06-23 10:12:05 -07:00
Eric House
ef602baa18 cleanup 2019-06-23 10:12:05 -07:00
Eric House
7ccb576214 Recast BTService as a JobIntentService
Got tired of the space the forground-service notification icons were
taking. So now BT sends and receives are done via static threads and
onHandleWork(). The send thread times itself out quickly. The receive
thread doesn't yet. We'll see how long the OS lets it run and what
needs to be done to deal with that.
2019-06-23 10:12:05 -07:00
Eric House
438e134870 add debug-only option for invitee players to be robots
It's useful when testing to have the remote device play without human
interaction. So add an option, and UI to trigger it, for the players
created remotely in response to an invitation to be robots. There are
guards in place to catch the feature slipping into a release build.
2019-06-23 10:12:05 -07:00
Eric House
136fa6ac7d remove some logging 2019-06-23 10:12:05 -07:00
Eric House
842509d84a remove methods overridden just for logging
looks like I've fixed the crash I wanted to diagnose.
2019-06-23 10:12:05 -07:00
Eric House
29661d2a7e fix relay interactions again
Eliminate the writer thread, since onHandleWork() is already getting
called on a thread and can process the outbound queue itself. And get
rid of reader thread needing to wait for an instance of the RelayService
to be available to process a packet (which was taking 5-10 seconds all
the time): just post received packets via an enqueueWork() call using
the app context that's always available.
2019-06-23 10:12:05 -07:00
Eric House
34b462b97c pass context and use to post lock-failure toast 2019-06-23 10:12:05 -07:00
Eric House
888109ce4e tweak/reduce logging 2019-06-23 10:12:05 -07:00
Eric House
c4d21b7b59 move constant from XWApp to build.gradle 2019-06-23 10:12:05 -07:00
Eric House
781da8ccb6 avoid NPE (and log to root-cause it later) 2019-06-23 10:12:05 -07:00
Eric House
37085b0ba1 ensure writer gets run every time OS schedules via onHandleWork() 2019-06-23 10:12:05 -07:00
Eric House
130487f7df remove some logging 2019-06-23 10:12:05 -07:00
Eric House
122b270025 fix NPE and let GameSummary stay until replaced
GameListItem was clearing its summary when kicking off a replacement
load. Instead keep the old around in case somebody wants it (e.g. to
figure out what menus to enable) until the reload finishes.

Also add logging of how long loading takes. I think a cache might be
called for.
2019-06-23 10:12:05 -07:00
Eric House
6193c376db move invite button above button bar.
(It's more frequently used)
2019-06-23 10:12:05 -07:00
Eric House
2a5c3b11a0 add context comment for new string 2019-06-23 10:12:05 -07:00
Eric House
4ce20a49a6 cleanup via new macro 2019-06-23 10:10:49 -07:00
Eric House
1e6fdd1f70 remove logging 2019-06-23 10:10:49 -07:00
Eric House
0a50a721dd fix malformed xml string
Weblate bug?
2019-06-23 10:10:49 -07:00
Eric House
aab36efdac fix problems with RelayService
Darned thing was dropping packets, failing to connect games built in
response to invitations, and otherwise misbehaving. First was due to not
resheduling when exited with outbound packets in queue; second to not
overriding relayNoConnProc() (due to signature change.) Though it still
happens occasionally.... Also added timestamps to track how long it
takes a packet to be sent and ACK'd.
2019-06-23 10:10:00 -07:00
Eric House
0ad21783b8 add rowid to NoSuchGameException 2019-06-23 10:10:00 -07:00
Eric House
8ff23294e6 fix NPE (and tweak logging) 2019-06-23 10:10:00 -07:00
Eric House
fd122148b8 add flavor to toasted got-fcm message
So I can tell the apps apart
2019-06-23 10:10:00 -07:00
Eric House
ac5cbea83f display latest FCM receipt as part of netstats for relay 2019-06-23 10:10:00 -07:00
Eric House
c67bda8683 use a constant jobID for enqueueWork()
That each VM instance had a different id might be why I was
crashing. We'll see.
2019-06-23 10:10:00 -07:00
Eric House
b5ab8803c4 remove debug-only assert I'm seeing
Good to know it's happening; now don't crash!
2019-06-23 10:10:00 -07:00
Eric House
40eab8690b put back pref controlling whether FCM receives are Toasted 2019-06-23 10:10:00 -07:00
Eric House
272204223e make md5sum calculation available everywhere
I want to log sums to see when they arrive on relay. And also add some
missing @Overrides I noticed.
2019-06-23 10:10:00 -07:00
Eric House
f28c21206c put up toast when FCM message received
It's too useful to live without. So: tap into the static list of live
Delegates, and if any of them has an Activity available use it to run
Toast on UI thread. Otherwise there will be no display.
2019-06-23 10:10:00 -07:00
Eric House
6853b203a1 make https the default for prefs-alterable strings
And change the keys so all local changes get reset
2019-06-23 10:10:00 -07:00
Eric House
2c4ce83a5b use https everywhere. And rewrite URLs if necessary. 2019-06-23 10:10:00 -07:00
Eric House
5d36470e50 add some logging around RelayService lifecycle 2019-06-23 10:10:00 -07:00
Eric House
bbe69f6398 Revert "toward compiling with gcc8"
This reverts commit d293517e7c.
2019-06-23 10:10:00 -07:00
Eric House
e8ab9e0b8b toward compiling with gcc8
My VSIZE is no longer legal, and apparently there's no workaround (no
way to safely figure the length of an array whose size is known at
compile time.) To avoid the risk of duplicating little constants, added
macros that define length in a way a new VSIZE can pick it up. Couldn't
make that work for struct field arrays, however, so there I'm using
constants.
2019-06-23 10:10:00 -07:00
Eric House
5f9d39ef8d communicate variant to relay, and store in new column 2019-06-23 10:10:00 -07:00
Eric House
a49c8c89ba fcm config file for xw4 variant 2019-06-23 10:09:59 -07:00
Eric House
d950ad695c remove debug toast that can't work from that class 2019-06-23 10:09:59 -07:00
Eric House
0c52d4e550 remove sms permissions from play store variant
and from a new debug variant so that can be tested. Add explanation to
be shown users who try to use the now-unavailable features.
2019-06-23 10:09:59 -07:00
Eric House
6ecfd2f20b add app-side support for firebase messaging
Works for xw4d variant only so far -- xw4 builds are broken!!!
2019-06-23 10:09:00 -07:00
Eric House
305f45dfc0 add variant option to build scripts
xw4 won't build for a while...
2019-06-23 10:09:00 -07:00
Eric House
7500e2f396 track and log lock owners correctly
Was assuming LIFO behavior, but with refcounting that's wrong and so I
was likely logging the wrong leaker in the case I'm trying to
duplicate. This simplifies the class while fixing that by tracking
owners as a Set.
2019-06-22 07:16:48 -07:00
WaldiS
6aad6d259b
Translated using Weblate (Polish)
Currently translated at 89.4% (683 of 764 strings)
2019-06-20 21:00:29 +02:00
WaldiS
c612570c12
Translated using Weblate (Polish)
Currently translated at 89.1% (681 of 764 strings)
2019-06-18 21:02:46 +02:00
Julio Yagami
6bf8fcef17
Translated using Weblate (Portuguese)
Currently translated at 51.6% (394 of 764 strings)
2019-06-18 21:01:45 +02:00
AB
36927380e2
Translated using Weblate (Ukrainian)
Currently translated at 0.5% (4 of 764 strings)
2019-06-18 21:01:44 +02:00
THANOS SIOURDAKIS
800292dfee
Translated using Weblate (Greek)
Currently translated at 0.9% (7 of 764 strings)
2019-06-18 21:01:43 +02:00
Eric House
63407ce5b5 wip: don't print stats header without stats 2019-06-14 16:37:29 -07:00
Eric House
93dd92c027 up strings for new release 2019-06-13 20:53:11 -07:00
Eric House
43c349cb2c make fdroid's flag explicit for variant 2019-06-13 20:52:45 -07:00
Eric House
44612c7177 cleanup: remove logging and comment 2019-06-13 20:40:38 -07:00
WaldiS
1b2750ef4d Translated using Weblate (Polish)
Currently translated at 26.8% (205 of 764 strings)
2019-06-13 10:30:08 -07:00
THANOS SIOURDAKIS
ab82aeb2c7 Added translation using Weblate (Greek) 2019-06-13 10:30:08 -07:00
AB
92f6eefc8d Added translation using Weblate (Ukrainian) 2019-06-13 10:30:08 -07:00
WaldiS
5a38089702 Translated using Weblate (Polish)
Currently translated at 6.5% (50 of 764 strings)
2019-06-13 10:30:08 -07:00
WaldiS
315a801d1d Translated using Weblate (Polish)
Currently translated at 6.4% (49 of 764 strings)
2019-06-13 10:30:08 -07:00
WaldiS
7b4654e522 Translated using Weblate (Polish)
Currently translated at 2.7% (21 of 764 strings)
2019-06-13 10:30:08 -07:00
Eric House
a8c45ee0ae include service delay stats for DEBUG builds
A start at determining of often there's a problem with Service not
scheduling work quickly enough.
2019-06-10 18:25:36 -07:00
WaldiS
981baed19d
Translated using Weblate (Polish)
Currently translated at 26.8% (205 of 764 strings)
2019-06-09 12:01:14 +02:00
THANOS SIOURDAKIS
d610102f26
Added translation using Weblate (Greek) 2019-06-07 19:35:25 +02:00
Eric House
a90ce05cd4 fix race condition leading to NPE 2019-06-03 20:47:36 -07:00
Eric House
c211b95070 wip: cleanup (not related to duplicate) 2019-06-03 20:47:25 -07:00
Eric House
3a4a8baf70 offer to email when unable to lock game
Only on non-shipping builds. This is attempting to catch a non-repro
lock-forever I'm trying to fix.
2019-06-02 09:02:25 -07:00
AB
6688ef08f7
Added translation using Weblate (Ukrainian) 2019-06-02 09:24:42 +02:00
Eric House
52d2694bc7 add support for 64-bit ARM
Add a third processor type to the .so, and fix first compile-time
warnings and then a few dumb bugs based on assumptions about ptr sizes.
Works to play networked games and browse wordlists, but is not
extensively tested and needs to be before release.
2019-05-29 19:19:00 -07:00
Eric House
fb15039b60 assert refcount never climbs after reaching 0
Looking for a common but not-yet-reproducible situation where the
gamelock gets stuck preventing a game from being opened, usually related
to a move arriving. One thing that looked wrong is it seemed possible to
have the refcount drop to 0 then get increased again, causing somebody
to thing he has a lock when it's actually unlocked. So assert to try to
catch that case (and synchronize to make it much harder.)
2019-05-29 15:51:09 -07:00
Eric House
d92c2b87c8 show SMS status in (fixes always-red indicator)
(Not duplicate-specific)
2019-05-29 09:43:12 -07:00
Eric House
53e10ebafb add DBUtils utility for saving/restoring Serializables 2019-05-22 18:51:16 -07:00
Eric House
95bea0a13f fix npe sending relay invites to self
Needed to handle the case where both are null. Can't reproduce this in
release builds so likely doesn't justify a new release.
2019-05-21 13:18:27 -07:00
Eric House
fb88dfda8a show toast when dropping duplicate invite if DEBUG
I forget to enable that option too often. (No impact on release builds.)
2019-05-21 13:16:00 -07:00
Eric House
3aa1ed0187 remove exif data from image files
command: find . -name '*.jp*g' -o -name '*.png' | xargs exiftool -all=
Did this because fdroid is complaining about metadata and I can't see
any obvious changes in the appearance of the app, but it's not
well-considered. Back this out if there are problems.
2019-05-20 06:41:47 -07:00
Eric House
9b01d044f1 try to fix assertion by catching null UDP socket
I think there's a rare race condition here. Assuming it results from a
bad network state rather than two sends coming too quickly, respond to
not having a connection by killing the thread so the next send will
retry.
2019-05-16 12:23:33 -07:00
Eric House
107e6d0fca add more logging around failure-to-open-intent 2019-05-16 12:06:38 -07:00
Eric House
10fff616ae try harder to respond to an intent with a rowID
Failure to immediately get a lock for a rowID in an intent meant that
other intent processing kicked in, and might have done the wrong
thing. So now if there's a rowid in it we try nothing else. And we use
the GameLock callback mechanism to deal with the case where it's
temporarily unavailable, as it will be when an incoming move is being
dispatched to it.
2019-05-15 16:44:19 -07:00
WaldiS
0157cef8d5
Translated using Weblate (Polish)
Currently translated at 6.5% (50 of 764 strings)
2019-05-02 23:48:02 +02:00
WaldiS
e9a68ba7f3
Translated using Weblate (Polish)
Currently translated at 6.4% (49 of 764 strings)
2019-05-01 22:47:51 +02:00
Eric House
4919f487eb up strings for new release 2019-04-25 15:20:21 -07:00
Eric House
622fa53c64 always log stack of lock held more than 1 minute
(DEBUG only) I'm seeing deadlocks in a non-reproducible way and need to
get at the source. This should log the stacks of long-held locks, and
notify via Toast (when possible) when it occurs.
2019-04-25 11:54:11 -07:00
WaldiS
d13d8e79cb
Translated using Weblate (Polish)
Currently translated at 2.7% (21 of 764 strings)
2019-04-12 20:03:57 +02:00
Eric House
c757ba1386 use a single queue for all nbsproto threads
No point in worrying about whether a thread exists without emptying its
queue. Instead have a thread start when something's added to the queue
and exit when it's been empty for a while. Only trick is the need to
remember the phone number[s] on behalf of which a retry's necessary
because jni code is waiting to see if combining can be done.
2019-04-09 11:45:32 -07:00
Eric House
012ebe26f7 differentiate betweeen PENDING and RECENT tiles
Should not show the new you-can-lookup-uncommitted-words hint for
already-played words, so needed to be able to tell difference between
the two. Now you can -- and on the gtk side I draw them differently
because I can.
2019-04-09 09:51:04 -07:00
Eric House
fbf810444b log msgIDs (relay only for now)
I want to track and eliminate the duplication of the 0th message.
2019-04-09 08:59:57 -07:00
Eric House
fdb0e0d14b put message back in okonly dialog 2019-04-08 18:57:18 -07:00
Eric House
8f77a87a7a preserve checkmarks when invite dialogs rotate 2019-04-08 18:46:25 -07:00
Eric House
ec5162ddce trivial changes to force a build 2019-04-05 21:13:21 -07:00
Eric House
d6710622ad replace oft-firing assertion with logging
It's crashing all the time and involves a system that only exists in
debug builds. So I should understand the root cause, but other stuff
needs to get done first.
2019-04-05 13:30:23 -07:00
Eric House
4db2fd229b add hint explaining new tap-on-pending-words feature
And bring back another BoardCanvas hint that had been commented out.
2019-04-05 13:26:49 -07:00
Eric House
660cfa83a3 remove dead code 2019-04-05 12:47:07 -07:00
Eric House
48880281dc add empty invitee list string for Bluetooth too 2019-04-04 21:32:28 -07:00
Eric House
dbdfa0b46c fix invite dialogs for landscape layout
Scrolling's needed in some cases, and you can't easily put a ListView
inside a ScrollView. So replace the ListView with a LinearLayout whose
contents I manage manually, and wrap the whole layout in a ScrollView.
2019-04-04 21:26:24 -07:00
Eric House
163eaf9612 fix invite-how alert not scrolling
By setting a custom view I wasn't using I broke scrolling of the
AlertDialog's list view which I was using. Known bug apparently....
2019-04-04 18:51:11 -07:00
Eric House
19fa3fce05 get rid of DispatchNotify
All it did was forward intent's data to MainActivity. Only question is
whether making MainActivity singleTask is a problem. We'll see.
2019-04-04 12:52:28 -07:00
Eric House
326bda70e3 cleanup 2019-04-02 21:55:01 -07:00
Eric House
2fd647d0aa make it a single thread 2019-04-02 21:55:01 -07:00
Eric House
758f08c7f3 move SMSPhoneInfo into its own class/file 2019-04-02 21:54:55 -07:00
Eric House
5e1e285046 make a common superclass 2019-04-02 21:49:16 -07:00
Eric House
35bcc3910c Rename SMSService NBSProxy, and make it not a service
Just keep a thread for each
phone we're sending to or receiving from, and pass them packets and
other things to send or (incoming case) process. So far the threads
don't die, but they will soon once there's nothing in their queues. Just
need to be sure there's no racing there.

This is to work around the frequent failure of the OS to pass enqeued work
into the service within a reasonable amount of time (I expect seconds, but see
delays of minutes or even hours.)
2019-04-02 21:48:58 -07:00
Eric House
7cc4ad6f2a up strings for release
This is just to try yet again to get past the play store console's
past-permissions bug
2019-03-25 15:41:40 -07:00
Eric House
425bedf464 reflect bt receipts in how long since saw device
Made no sense to use explicit scans only since typically you only do
that to get things going.
2019-03-25 13:53:25 -07:00
Eric House
603daa447f remove separate marking of permissions as banned
It's enough to check manifest for their presence
2019-03-22 16:43:18 -07:00
Eric House
e2b7aceea7 Up version code and string to try a new play store release 2019-03-22 13:58:49 -07:00
Eric House
5f29af46e0 move SMSReceiver from main manifest to the others
Theory is that the store's buggy site is presenting its
banned-permissions interface because it's detecting a Receiver that
requires SMS_RECEIVE permission even though the permissions themselves
aren't there any more.
2019-03-22 13:22:18 -07:00
Eric House
dc5b134708 up version name (but not code)
This will NOT be released on Google Play, so no need to up code.
2019-03-22 10:51:07 -07:00
Eric House
e84f7ff960 fix broken symlink 2019-03-22 10:47:20 -07:00
Eric House
12d95fdd30 fix build script for new Play Store variant name 2019-03-22 10:15:27 -07:00
Eric House
dad649474e changelog and cleanup 2019-03-22 10:05:13 -07:00
Eric House
8a620533e5 fix multi-message aspect of smsproto
passes --run-sms-test now, and works on Android occasionally combining messages.
2019-03-21 18:49:19 -07:00
Eric House
e799474e00 always respect user's local player name 2019-03-21 09:13:38 -07:00
Eric House
eb79393dc1 fix a couple of random crashes
a race condition and a misunderstanding
2019-03-21 09:12:32 -07:00
Eric House
83b8169a6b add useful stuff to build-info.txt inside .apk 2019-03-20 15:47:20 -07:00
Eric House
9374260c59 try to address one-time assert
and remove it from shipping build
2019-03-20 15:07:04 -07:00
Eric House
a7da0e33bb show the stalled-service alert based on pref
Allow users to turn the notification on; otherwise skip it. And set
the default on/off based on DEBUG type of build.
2019-03-20 14:53:08 -07:00
Eric House
b5714fadf8 add a bool resource matching BuildConfig.DEBUG
I want to be able to have some boolean prefs default based on whether
it's a DEBUG build.
2019-03-20 14:29:37 -07:00
Eric House
52f839e899 fix null procptr crash in jni
I can't reproduce this, but while testing recovery from DatagramSocket
recreation in RelayService got enough to know that somehow a timer's
procptr's not set. So test before calling, and log instead of crashing.
2019-03-20 13:33:30 -07:00
Eric House
b03f767e6c get another DatagramSocket when ours goes bad
Fix longstanding bug triggered by something as simple as putting device
into and out of airplane mode. Once the class-variable socket was
created it was never replaced. Now respond to exceptions that mean it's
useless and set it to null so existing logic will recreate it.
2019-03-20 13:33:21 -07:00
Eric House
2916e1d6cb tweaks to logging and imports; should have no effect 2019-03-20 07:23:34 -07:00
Eric House
1eccbebb95 report inability to get locks in travis debug builds 2019-03-19 09:15:27 -07:00
Eric House
1291310a0c track all pending service Intents; warn of stalls
When enqueuing Intents for any of the three services, cache the
Intent. When onHandleWork() is called, remove the equivalent cached
intent. Then periodically check for intents that have been stored for
more than 60 seconds, and post a Notification alerting user to
stall. The user will likely have noticed that messages aren't flowing,
so this will simply explain the problem. Includes an "email author"
button.
2019-03-19 08:39:16 -07:00
Eric House
f5afba8fd4 cleanup and refactor
Move some work into superclass where instrumentation can be added to
greater effect. And remove from BTService an earlier attempt (at stall
detection.)
2019-03-19 08:16:30 -07:00
Eric House
99c6e38ff0 refactor: new constructor for common case 2019-03-19 08:06:16 -07:00
Eric House
89cb97c3bb additions for debugging
toward tracking down relay stalls, log a bit more in resend process and
add UI to support an option where there's no reliance on
polling (i.e. FCM only)
2019-03-17 21:17:36 -07:00
Eric House
aa2564114a replace assert with logging 2019-03-17 18:26:43 -07:00
Eric House
bb9facfbd2 Merge remote-tracking branch 'weblate/android_translate' into android_translate 2019-03-17 14:01:06 -07:00
Eric House
0b0e4af977 up version strings 2019-03-16 21:11:55 -07:00
Eric House
efb6a93d7c add missing AndroidManifest.xml files for new variants 2019-03-16 20:53:16 -07:00
Eric House
9ae77bce13 use latest nbsplib 2019-03-13 14:38:03 -07:00
Eric House
e01bda552e change to work with changed NBSProxy API 2019-03-13 14:35:28 -07:00
Eric House
29ebcf0c20 API's changed 2019-03-13 14:35:23 -07:00
Eric House
61395f07e9 use the latest NBSProxy dev release 2019-03-12 07:05:51 -07:00
Eric House
91ff2175f6 add logging of CurGameInfo
Trying to track down why some player names aren't preserved
2019-03-12 07:05:12 -07:00
Eric House
79aab3ead1 override toString() for debugging 2019-03-11 10:46:56 -07:00
Eric House
7e06512e54 change emacs compile command (in comment)
No point defaulting to something that no longer exists
2019-03-11 09:57:16 -07:00
Eric House
080d14a02b fix symlinks post rename 2019-03-11 09:51:23 -07:00
Eric House
3c4cc6a1b7 fix broken symlink 2019-03-10 20:38:11 -07:00
Eric House
ab491ebcb4 change name of variant -- it's not the main one anymore 2019-03-10 19:25:57 -07:00
Eric House
f8623cd407 check if permission in manifest
I got bitten when creating a new variant leaving the permission out of
the manifest but using a config flag to claim it was there. Better to
have just one place to configure that. So check for presence in the
manifest and, for now, assert that that matches the isBanned flag. Soon
the isBanned flag can be removed.
2019-03-10 19:15:30 -07:00
Eric House
116f3f4274 add retain()/release()
Seems to work but needs testing!
2019-03-10 18:42:49 -07:00
WaldiS
5e3bedc3eb
Translated using Weblate (Polish)
Currently translated at 1.8% (14 of 764 strings)
2019-03-10 18:03:01 +01:00
Eric House
21158faa71 up version code to try another gps release 2019-03-09 17:38:18 -08:00
Eric House
5cc57919f5 add new Variant for github & sourceforge releases
and log permission check results
2019-03-09 14:07:06 -08:00
Eric House
de7be6cf44 tweak UI with longer string 2019-03-09 09:20:37 -08:00
naofum
dd36d393e0 Translated using Weblate (Japanese)
Currently translated at 75.9% (580 of 764 strings)
2019-03-09 08:52:05 -08:00
Peeter Angelo
acd35c103b Translated using Weblate (Czech)
Currently translated at 14.5% (111 of 764 strings)
2019-03-09 08:51:20 -08:00
Eric House
1f195ad1e6 tweak string 2019-03-09 08:17:50 -08:00
Eric House
565f688252 don't capture lock stack in release builds 2019-03-09 06:59:31 -08:00
Eric House
085963b76c unlock lock we won't be keeping
This might fix the occasional game permalock.
2019-03-09 06:40:04 -08:00
Eric House
c2441c30f4 fix a likely-fluke NPE with a test
It seems impossible for the menu to be getting update without init()
having been called, but that must be what happened. To check for null.
2019-03-08 22:14:57 -08:00
Eric House
f890d74e63 fix invite not coming up after perms warning dismissed
or when it's not shown at all because the not-again checkbox is checked
2019-03-08 21:56:16 -08:00
Eric House
f934ac3c5c up version of NBSProxy lib 2019-03-08 20:11:19 -08:00
Eric House
dbed7e29cc fix npe 2019-03-08 17:40:27 -08:00
Eric House
eb33d18390 add not-again checkbox to remove-sms-from-game alert
Some people will decide to leave SMS comms in while I look for an
alternative. Maybe. Don't show them the same alert every time they open
the game. In the process removed what seemed to be a duplicate ivar.
2019-03-08 14:18:56 -08:00
Eric House
f05c6862f9 refactor alerts code
Should be no change here, but the goal's to make it easier to mix
functionality, e.g. adding notagain checkbox to other types.
2019-03-08 13:29:30 -08:00
Eric House
0df3889030 don't show sms-failed toast when permission is banned 2019-03-08 12:58:00 -08:00
Eric House
3fd9a066cb move constant 2019-03-08 11:16:21 -08:00
Eric House
5a8e21468f add Overrides as part of sanity check 2019-03-08 11:10:16 -08:00
Eric House
21220bc839 include name of game being deleted 2019-03-08 09:46:27 -08:00
Eric House
7f405a3a40 update web page (esp. fix style for device display) 2019-03-08 09:20:48 -08:00
Eric House
0972d3d99f cleanup 2019-03-08 09:20:22 -08:00
Eric House
69046c5f2f give new variant the right icons 2019-03-08 07:18:49 -08:00
Eric House
2ba8d83cf6 update changes log 2019-03-07 18:30:52 -08:00
Eric House
d55916f583 oops 2019-03-07 18:18:50 -08:00
Eric House
ce2ec03d3e relay tracks variantCode int, not string 2019-03-07 18:12:26 -08:00
Eric House
fbba6f3247 add a case for Signal as default SMS app 2019-03-07 17:40:16 -08:00
Eric House
5eb29a0c21 display the Banned alert from invite-choice dialog 2019-03-07 09:13:50 -08:00
Eric House
a91c0e2cbf add non-mobile number if user confirms
Fix logic error that didn't proceed with the number-add in the
non-mobile case.
2019-03-07 08:39:20 -08:00
Eric House
a561899021 try various recipes for launching SMS app
There's no one way to launch an SMS app with a ready-to-send
invitation. So try the two that work on our two phone/app combinations,
iterating until startActivity() succeeds. The code's set up to have new
recipes added easily.
2019-03-07 08:06:07 -08:00
Eric House
188a5d8387 post a tip/warning when new invite-by-sms-app chosen 2019-03-07 07:48:31 -08:00
Eric House
ef27ffaa02 send an int code rather than a name 2019-03-07 06:28:46 -08:00
Eric House
8a4d4ec5bf warn when 'sms data' selected in build where it's banned 2019-03-06 22:38:53 -08:00
Eric House
a79b18b9b7 more tweaks 2019-03-06 14:31:44 -08:00
Eric House
7ffa2ed4fc remove logging 2019-03-06 14:05:15 -08:00
Eric House
d3abd31220 new method stub to fix fdroid build crash 2019-03-06 13:26:05 -08:00
Eric House
51c2ecd48a script to build all possible variants 2019-03-06 13:19:55 -08:00
Eric House
ac8ceec656 removing permissions from the Play Store version 2019-03-06 13:09:42 -08:00
Eric House
6267eb9c4f use NBSProxy if available
Lots of work dealing with banned permissions (SEND_SMS and
RECEIVE_SMS). First, if they're banned and NBSProxy is installed, just
use it as if the permissions had been granted. When it's not there,
explain at various points where users will otherwise be confused: when
they try to invite using data sms, or when they open a game that already
uses it.)
2019-03-06 12:39:08 -08:00
Eric House
7e4313e071 support setActionPair() for okOnly alerts too 2019-03-04 10:45:15 -08:00
Eric House
17e8844378 cut some logging 2019-03-04 07:43:28 -08:00
Eric House
91b7cf8bd9 remove misplaced assert
It's an error to use an env with the wrong thread, but it IS possible
for more than one thread to be associated with the same env. So don't
assert to the contrary.
2019-03-03 21:01:23 -08:00
Eric House
eeddd8d7cb fixing refcounting and adding logging
Seeing the occasional crash and trying to plug leaks that might be
contributing. I think I fixed the Gameptr.finalize() assertions I've
been seeing forever but the thread match assertion remains. Logs will
help catch that.
2019-03-03 14:40:07 -08:00
Eric House
cec379bd02 remove logging and reformat: no change 2019-03-03 14:11:44 -08:00
Eric House
1575d70ab9 return supported types as list, not set
I was seeing them displayed in different orders where I want to control
the order instead.
2019-03-03 14:07:40 -08:00
Eric House
8336a338f8 use constant APPLICATION_ID instead of method call 2019-03-03 11:39:10 -08:00
Eric House
cae90c4c07 remove some logging 2019-03-03 11:39:10 -08:00
naofum
09affc451d
Translated using Weblate (Japanese)
Currently translated at 75.9% (580 of 764 strings)
2019-03-03 11:17:45 +01:00
Eric House
4cbfde6d95 make setActionPair work for confirmThen alerts too
(To be used shortly)
2019-02-28 16:03:46 -08:00
Eric House
415ce0f5a2 recast SMSService as a JobIntentService
Didn't think it was required, but once the app started getting messages
in the background it stoped working or crashed. Changes are minimal
because this service isn't responsible for receiving messages: it
doesn't have the long-lived threads of the BT and Relay services.
2019-02-27 07:25:33 -08:00
Eric House
5207de564a Let's test this jitpack stuff on Travis
Importing a library but not using it yet
2019-02-26 21:33:39 -08:00
Eric House
b0d3383c28 more data with my SMS
And catch an exception starting SMSService in background
2019-02-26 21:27:31 -08:00
Eric House
6eb6038935 make result -1 if will otherwise trip asserts. 2019-02-26 18:46:55 -08:00
Eric House
ac0fe68ee0 logging toward finding who's sending or reporting 0 2019-02-26 15:03:55 -08:00
Eric House
5f167e2a5e pull nbs port-checking over from NBSProxy 2019-02-26 14:43:26 -08:00
Eric House
33491a5376 add extra explanatory text to phone number invite dialog
Set different expectations based on whether the invitation's by NBS or a
launch of the messaging app.
2019-02-26 12:25:17 -08:00
Eric House
c78a3afb36 distinguish between NBS and SMS
What I've been calling SMS is now "data sms" (or "nbs", in
code). There's a new way of inviting, called "User Sms" or somesuch,
that launches the user's SMS app with a URL and phone number, much like
email (save that no addressing is required by the inviter.) This new way
won't be involved in the ban on SMS permissions. (But play by NBS is
still awesome and will stay where it can.)
2019-02-26 11:28:37 -08:00
Eric House
22711e75a5 that's already done 2019-02-23 20:55:31 -08:00
Eric House
92dde5332a put back the nbs port 2019-02-23 17:32:03 -08:00
Eric House
e1d05207b4 new version code to replace bad upload 2019-02-21 21:33:57 -08:00
Eric House
bad3274c9c fix broken noSMS variant
needed SMS permissions in a new xw4 manifest
2019-02-21 21:30:59 -08:00
Eric House
283bf2e285 remove SMS_BANNED stuff for now 2019-02-21 11:28:13 -08:00
Eric House
7df3d6ad9f up changelog 2019-02-21 10:51:11 -08:00
Eric House
f72a88f46e exit thread when BT turned off
(The test was in the thread this replaced.)
2019-02-21 10:45:50 -08:00
Eric House
cf8fe20e48 put back SMS permissions
March 9's the deadline, so let's not remove it yet!
2019-02-21 10:24:02 -08:00
Eric House
7d48fdd00a make packet accumulator a thread that sends
Get rid of the single sender thread and the complexity of querying
individual queues for their state (and the slowdown that happened when
successful writes had to wait for those to devices that weren't
responding). Instead each PacketAccumulator does its own waiting with
timeouts and backoffs, wakes itself when appropriate, and periodically
sends if it can make a connection. Now when there are a bunch of
messages ready they'll get sent pretty quickly once connections to the
remote device start to be successful.
2019-02-20 21:54:51 -08:00
Eric House
89338f43dc each message gets a localID so logs can show progress
And rewrite toString()
2019-02-20 12:50:29 -08:00
Eric House
3e1503e6a6 add another DeadlockWatch (and import already) 2019-02-20 12:20:39 -08:00
Eric House
c822f4b1a6 put Killer back: device can receive but never process
A device where the OS isn't servicing enqueueWork() requests won't write
back to sockets it accept()s, causing the sender's writer to block
forever. So give it 30 seconds then kill the socket.
2019-02-20 11:22:51 -08:00
Eric House
274e7c6c4b fix NPE (by inspection, from crashlytics report) 2019-02-20 10:38:27 -08:00
Eric House
c2a4c07746 don't enqueue dupes of messages already in queue
No point in giving a spot to something the receiver will drop as a
duplicate.
2019-02-20 10:29:24 -08:00
Eric House
87a27e7630 update status more often (as old code did) 2019-02-19 21:25:28 -08:00
Eric House
1a6b325722 fix concurrent access exception and too-slow sends
if we successfully send, we should reset the backoff so we try again
quickly. Especially at a time when only one message is sent per connection.
2019-02-19 21:25:28 -08:00
Eric House
76e8876df2 change key to force new value
fixes what was probably a crash only for me, but....
2019-02-19 21:25:20 -08:00
Eric House
68db5145ec report invitation success even if dict download needed 2019-02-19 20:56:24 -08:00
Eric House
d33593339f use https scheme for dict downloads 2019-02-19 20:55:31 -08:00
Eric House
e970659b9d Move back to old one-msg-per-connect() model
Add support for the old protocol, and define to use it. After the next
release has been adopted and everybody can read the new protocol another
release will turn it on.
2019-02-19 18:31:20 -08:00
Eric House
1d0ed70f9c add not-again checkbox to BAD_BT_PROTO dialog
Won't help the old-build side of the exchange of course.
2019-02-19 08:56:58 -08:00
Eric House
a38a31837b prune only those messages successfully sent
Fix race condition that would have cleared all messages including those
added after a send began. In the process, move to storing outbound
messages individually rather than concatenated in their stream format.
2019-02-19 08:31:49 -08:00
Peeter Angelo
54c0443856
Translated using Weblate (Czech)
Currently translated at 14.5% (111 of 764 strings)
2019-02-19 10:10:21 +01:00
Eric House
ff5d25a53c add alert to launch app when OS not scheduling service
Set a boolean every time app's upgraded, and clear it on first launch of
MainActivity. In between, if we try to launch the BTService but the OS
doesn't schedule it, post a notification asking user to launch the app.
2019-02-18 22:12:43 -08:00
Eric House
4c9f619a19 exit threads when BT off; add util to report deadlocks
I've seen a deadlock in the BT stuff. Now they'll be caught and reported
via Crashlytics on DEBUG builds.
2019-02-17 12:49:17 -08:00
Eric House
276abe6441 always increment failure count on send failure 2019-02-16 10:07:29 -08:00
Eric House
b5659f0e5c Rewrite BT proto to batch messages
Lots of changes. Old BT proto is no longer compatible. New one
batches messages per device and sends all on a single connection.
The queue (now a single buffer) is now a static global and the thread
that services it doesn't die (but gloms onto whatever Service instance
is most recent.) Code to pack and unpack the protocol can probably be
reused for wifi-direct or any other pass-through transport.
2019-02-16 09:07:20 -08:00
Eric House
4f4deec7ba replace some firing asserts with log messages
I'm getting crashes on a device with an iffy wifi connection and no SIM.
May need to look into these.
2019-02-16 07:28:14 -08:00
Eric House
41aef60878 don't open game just because it was created
Posting a notification is enough. And existing code already handles the
missing dict case, so GamesListDelegate doesn't even need to know.
2019-02-13 08:46:06 -08:00
Eric House
01533e6897 double scan progress time
Since the BT stuff tends to timeout late when failing, this looks better.
2019-02-13 07:29:18 -08:00
Eric House
273e66fd07 add env to map immediately, in initGame()
I'm seeing an assertion failure in cleanup that could be explained by
the cleanup happening when initGame() has been called but no subsequent
jni method that would have added the env to the map. So let's add it
immediately so that can't happen.
2019-02-13 07:13:54 -08:00
naofum
bd631db7d2 Translated using Weblate (Japanese)
Currently translated at 74.3% (568 of 764 strings)
2019-02-12 18:40:16 -08:00
Eric House
0a5d74ab2f unselect any game moved into a closed group
Fixes GameOver game moved via "archive" checkbox remaining selected
2019-02-12 18:14:57 -08:00
Eric House
b5ff337381 don't move selected games via context menu
Both ways of invoking move-to-group were working on the set of selected
games. Instead pass what's meant to be operated on as a parameter.
2019-02-12 07:51:21 -08:00
Eric House
0f8e55a260 put GameOver view layout into a ScrollView
When device in landscape the archive box is otherwise unreachable on a
four-player game
2019-02-12 07:47:57 -08:00
Eric House
eafe6cd06f make GamePtr AutoCloseable and use where possible 2019-02-12 06:13:36 -08:00
Eric House
b1a4b1a030 Make JNIThread autoclosable and use everywhere
JNIThread is somehow sticking around sometimes and holding the lock for
a game so that that game can never be opened again. On the theory that
there's some place retain() was called but not release(), use the thing
in try-with-resources wherever possible. Which is pretty much
everywhere.

Also added age to the lock-holder report being uploaded.
2019-02-11 20:39:17 -08:00
Eric House
9fe01047b1 include stack of lock owner when logging failure to lock 2019-02-11 07:52:22 -08:00
Eric House
88838d6c0c Fix NPE when url for delete game has changed
I think it's only an issue for debug builds where I've manually pointed
at a different server, but just in case.
2019-02-11 07:32:17 -08:00
Eric House
ec4711f3ba make text in new GameOver alert bigger
To match how it was when using the system-provided view.
2019-02-11 07:29:34 -08:00
naofum
67cc88ea4e
Translated using Weblate (Japanese)
Currently translated at 74.3% (568 of 764 strings)
2019-02-11 12:09:26 +01:00
Eric House
7f2e3207be report stack of lock owner to crashlytics when can't get it
I'm seeing something permanently lock a game so it can't be opened. So
add code to report the stack of the owner to Crashlytics when opening
fails 3 times in a row. It's stubbed out for non-debug builds.
2019-02-10 20:02:43 -08:00
Eric House
813cf4f961 Add custom GameOver alert for GameOver with Archive checkbox
I didn't like having to re-open a game to archive it after
rematching, so now there's a checkbox that lets you archive it after
either rematching OR just using OK to dismiss the alert. Also fixed
rematch of a solo game causing new game to be created in Archive
group if that's where the source game was.

squash me
2019-02-10 14:22:22 -08:00
Eric House
ab69cd8b1f Merge remote-tracking branch 'weblate/android_translate' into android_translate 2019-02-10 09:01:14 -08:00
Eric House
d53ea5c433 up copyright year 2019-02-09 16:16:54 -08:00
Eric House
2eaf86ed14 add git rev to crashlytics reports 2019-02-09 11:13:32 -08:00
Eric House
01d74e91de plug leak 2019-02-08 22:29:18 -08:00
Eric House
8f6745a308 avoid crashes when BT turned off
Test at enqueueWork() and onHandleWorkImpl(). Seems to do it. Maybe
turning it off mid-send will still crash...
2019-02-08 22:22:03 -08:00
João Vitor Ferreira Cavalcante
cfc9466efd
Translated using Weblate (Portuguese)
Currently translated at 51.6% (394 of 764 strings)
2019-02-09 02:09:26 +01:00
Eric House
30f70db59b don't create threads we won't use 2019-02-08 14:37:58 -08:00
Eric House
6b449bb079 null listener thread ref so will be restarted
Once it died it stayed dead: bad.
2019-02-08 14:11:35 -08:00
Eric House
3023ae1af6 cleanup 2019-02-08 13:48:40 -08:00
Eric House
fe721edb97 Recast BTService as a JobIntentService
Got tired of the space the forground-service notification icons were
taking. So now BT sends and receives are done via static threads and
onHandleWork(). The send thread times itself out quickly. The receive
thread doesn't yet. We'll see how long the OS lets it run and what
needs to be done to deal with that.
2019-02-08 13:23:07 -08:00
Eric House
e6b59ea11d add debug-only option for invitee players to be robots
It's useful when testing to have the remote device play without human
interaction. So add an option, and UI to trigger it, for the players
created remotely in response to an invitation to be robots. There are
guards in place to catch the feature slipping into a release build.
2019-02-07 08:17:54 -08:00
Eric House
c97e167e1e remove some logging 2019-02-06 22:55:31 -08:00
Eric House
ff45340eb8 remove methods overridden just for logging
looks like I've fixed the crash I wanted to diagnose.
2019-02-06 22:37:52 -08:00
Eric House
9a4fb44e72 fix relay interactions again
Eliminate the writer thread, since onHandleWork() is already getting
called on a thread and can process the outbound queue itself. And get
rid of reader thread needing to wait for an instance of the RelayService
to be available to process a packet (which was taking 5-10 seconds all
the time): just post received packets via an enqueueWork() call using
the app context that's always available.
2019-02-06 22:32:46 -08:00
Eric House
e62e51f9cd pass context and use to post lock-failure toast 2019-02-06 19:43:54 -08:00
Eric House
f5c9962b66 tweak/reduce logging 2019-02-06 19:36:17 -08:00
Eric House
895b19a097 move constant from XWApp to build.gradle 2019-02-06 10:44:21 -08:00
Eric House
f92b0d7ac0 avoid NPE (and log to root-cause it later) 2019-02-06 09:06:25 -08:00
Eric House
ab0469fe39 ensure writer gets run every time OS schedules via onHandleWork() 2019-02-05 09:58:39 -08:00
Eric House
bf2ab49c20 remove some logging 2019-02-05 09:37:39 -08:00
Eric House
bd35503daa fix NPE and let GameSummary stay until replaced
GameListItem was clearing its summary when kicking off a replacement
load. Instead keep the old around in case somebody wants it (e.g. to
figure out what menus to enable) until the reload finishes.

Also add logging of how long loading takes. I think a cache might be
called for.
2019-02-05 07:44:16 -08:00
Markus Enzenberger
7d8c013492
Translated using Weblate (German)
Currently translated at 100.0% (764 of 764 strings)
2019-02-05 10:09:17 +01:00
Eric House
38f0fc6fd1 move invite button above button bar.
(It's more frequently used)
2019-02-04 17:56:23 -08:00
Eric House
64c6d03392 add context comment for new string 2019-02-04 17:33:03 -08:00
Eric House
908f5a64e7 Merge branch 'android_branch' into android_translate 2019-02-04 17:28:06 -08:00
Eric House
ce03ab7532 cleanup via new macro 2019-02-04 14:38:40 -08:00
Eric House
3810d11e26 remove logging 2019-02-04 14:27:43 -08:00
Eric House
e1f03662c3 fix malformed xml string
Weblate bug?
2019-02-04 13:35:34 -08:00
Eric House
bdf1bd3b84 fix problems with RelayService
Darned thing was dropping packets, failing to connect games built in
response to invitations, and otherwise misbehaving. First was due to not
resheduling when exited with outbound packets in queue; second to not
overriding relayNoConnProc() (due to signature change.) Though it still
happens occasionally.... Also added timestamps to track how long it
takes a packet to be sent and ACK'd.
2019-02-04 13:28:05 -08:00
Eric House
328440abc3 add rowid to NoSuchGameException 2019-02-04 08:58:50 -08:00
Eric House
5886a97a53 fix NPE (and tweak logging) 2019-02-03 10:36:54 -08:00
Eric House
74cf4b0974 add flavor to toasted got-fcm message
So I can tell the apps apart
2019-02-02 22:39:57 -08:00
Eric House
49ef455e50 display latest FCM receipt as part of netstats for relay 2019-02-02 15:18:45 -08:00
Eric House
be6b74ab12 use a constant jobID for enqueueWork()
That each VM instance had a different id might be why I was
crashing. We'll see.
2019-02-02 13:35:38 -08:00
Eric House
b8dafb8178 remove debug-only assert I'm seeing
Good to know it's happening; now don't crash!
2019-02-01 19:39:23 -08:00
Eric House
1a3aa9f8d1 put back pref controlling whether FCM receives are Toasted 2019-02-01 19:27:12 -08:00
Eric House
9f7899cd7c make md5sum calculation available everywhere
I want to log sums to see when they arrive on relay. And also add some
missing @Overrides I noticed.
2019-02-01 17:01:32 -08:00
Eric House
236be21a78 put up toast when FCM message received
It's too useful to live without. So: tap into the static list of live
Delegates, and if any of them has an Activity available use it to run
Toast on UI thread. Otherwise there will be no display.
2019-02-01 16:49:12 -08:00
Eric House
f6895aacff make https the default for prefs-alterable strings
And change the keys so all local changes get reset
2019-01-31 15:22:25 -08:00
Eric House
48c331fd56 use https everywhere. And rewrite URLs if necessary. 2019-01-31 12:57:31 -08:00
Mesut Akcan
8cd31b1250
Translated using Weblate (Turkish)
Currently translated at 0.8% (6 of 764 strings)
2019-01-31 14:09:09 +01:00
Mesut Akcan
c6ac53cb3f
Added translation using Weblate (Turkish) 2019-01-29 22:44:02 +01:00
Eric House
4c2e17064c add some logging around RelayService lifecycle 2019-01-29 11:15:46 -08:00
Eric House
15a2897112 Revert "toward compiling with gcc8"
This reverts commit d293517e7c.
2019-01-29 09:05:54 -08:00
Eric House
d293517e7c toward compiling with gcc8
My VSIZE is no longer legal, and apparently there's no workaround (no
way to safely figure the length of an array whose size is known at
compile time.) To avoid the risk of duplicating little constants, added
macros that define length in a way a new VSIZE can pick it up. Couldn't
make that work for struct field arrays, however, so there I'm using
constants.
2019-01-28 17:24:53 -08:00
Eric House
a14b43bba0 communicate variant to relay, and store in new column 2019-01-27 06:31:21 -08:00
ssantos
8716832999
Translated using Weblate (Portuguese)
Currently translated at 51.6% (394 of 764 strings)
2019-01-27 10:04:36 +01:00
Eric House
316bf0060b fcm config file for xw4 variant 2019-01-25 11:36:24 -08:00
Eric House
96ad615a73 remove debug toast that can't work from that class 2019-01-25 09:24:21 -08:00
Eric House
a4152239f6 remove sms permissions from play store variant
and from a new debug variant so that can be tested. Add explanation to
be shown users who try to use the now-unavailable features.
2019-01-24 18:45:24 -08:00
Eric House
88a440acc3 add app-side support for firebase messaging
Works for xw4d variant only so far -- xw4 builds are broken!!!
2019-01-24 18:20:01 -08:00
Eric House
4ee76c72a6 add variant option to build scripts
xw4 won't build for a while...
2019-01-24 17:59:50 -08:00
Hosted Weblate
e20be83a58
Merge branch 'origin/android_translate' into Weblate. 2019-01-22 09:21:13 +01:00
Allan Nordhøy
fc9d1d2346
Translated using Weblate (Norwegian Bokmål)
Currently translated at 85.7% (655 of 764 strings)
2019-01-22 09:21:12 +01:00
Allan Nordhøy
4b8f39552f
Translated using Weblate (English)
Currently translated at 100.0% (764 of 764 strings)
2019-01-22 09:21:09 +01:00
Eric House
fb5fee3483 tweak string 2019-01-21 21:48:58 -08:00
Bernard Massot
6af47f9bc2 Translated using Weblate (French)
Currently translated at 97.6% (746 of 764 strings)
2019-01-21 21:48:58 -08:00
Louies
f45e001e7a Added translation using Weblate (Chinese (Traditional)) 2019-01-21 21:48:57 -08:00
Eric House
506ddc8f7a fix logic error in permissions callback
Somehow I forgot what params were and decided that array's length needed
to match another's.
2019-01-21 20:44:16 -08:00
Eric House
06fe5894b9 fix invitations creating a second activity stack
Looks like certain launches that went through DispatchNotify could
create a second "instance" of the app. Giving that Activity a launchMode
of singleTask fixes this (singleTop does not.)
2019-01-21 18:57:38 -08:00
Eric House
51c7752830 use same launch flags for all self-launches
Launching a game in response to a wordlist it needing being downloaded
went through a different Intent-creation path from the rest, and
resulted in a second instance of the app showing in the launcher. This
shoudl fix that. I don't *think* it's the only way I'm getting second
instances or stacked GamesLists, but it should get fixed.
2019-01-21 18:57:38 -08:00
Eric House
52d983e0d8 assert (on DEBUG builds) that MainActivity is never sublaunched
I think this might help catch the instance duplication I'm seeing very
rarely.
2019-01-21 18:57:38 -08:00
Bernard Massot
41f5c6afa2
Translated using Weblate (French)
Currently translated at 97.6% (746 of 764 strings)
2019-01-20 16:19:53 +01:00
Eric House
0754e0db8e remove hard-coded assumption about apk name
So can use the thing to sign-and-install local fdroid builds
2019-01-18 17:46:02 -08:00
Eric House
837ff1f8fc Give each variant a name, and include in About alert.
I modified existing translated strings, adding the new clause. Not doing
that would cause the existing strings to be stripped because they'd no
longer have the matching set of format specifiers.
2019-01-18 16:45:27 -08:00
Eric House
f072736bb8 need to call doResume() twice
Calling it only once on acquiring lock where before it'd been called
twice meant ConnStatusHandler never got initialized. Bad.
2019-01-18 07:32:58 -08:00
Eric House
4878afb185 remove misplaced assert 2019-01-18 06:51:23 -08:00
Hosted Weblate
03b9b3e499
Merge branch 'origin/android_translate' into Weblate. 2019-01-18 13:59:52 +01:00
Eric House
ae56f23f66 remove misguided Assert that's firing 2019-01-17 15:16:54 -08:00
Eric House
026d6d5c5e Change GameLock API (should be no behavior change) 2019-01-17 12:46:51 -08:00
Eric House
f436090c6f install listeners immediately after setting them
Fix a race condition introduced by making initing jnithread be
asynchronous: all the layout that was supposed to happen after listeners
were added instead happened before, so that they weren't there to be
installed as part of layout. So now, after adding them, get them hooked
up to the UI. (The complexity of this is all historical: at some point
the listeners were getting added BEFORE there were views to attach them
to, so they were cached and added later. Probably now they could simply
be installed as part of adding them. But I'm not doing that now.)
2019-01-17 12:28:01 -08:00
Eric House
95df560a40 update changes: sms will be ripped out alas. 2019-01-17 08:51:13 -08:00
Eric House
385f98f038 check for null 2019-01-16 22:17:54 -08:00
Eric House
d94217cc06 Make Board wait a bit for lock on opening
Was seeing frequent failure to open games as JNIThread.getRetained() was
unable to get a lock without waiting. Which it can't do on UI thread. So
added a method to GameLock that takes a callback to be called when the
lock's obtained, with the actual waiting done on a local thread. Then
fixed BoardDelegate a bit to not crash while waiting for the callback.
2019-01-16 21:45:39 -08:00
Eric House
a8872df5ed cleanup: I like the call-chain style better these days 2019-01-16 20:32:44 -08:00
Eric House
20359e50da log GameLock failure only when it's a result 2019-01-16 13:24:46 -08:00
Eric House
4c9ded77bf assertion says had race condition; fix it
Use a set instead of a singleton so a late clear doesn't overwrite an
early set.
2019-01-16 11:31:54 -08:00
Eric House
a93b1da6fa up client version
Will allow to distinguish on relay what clients can receive GCM.
2019-01-16 11:14:35 -08:00
Eric House
ddf12b6523 resend all when come to foreground 2019-01-15 22:13:46 -08:00
Eric House
c611919876 check for moves when come to foreground 2019-01-15 14:34:50 -08:00
Eric House
e61d7a5629 remove GCM -- crashes when invoked from server!
Once built for SDK 26 the old GCM support code crashes as it's calling
startService() from background. Duh! Will have to bring in Firebase's
replacement at some point. For now if I'm to release it has to be
without GCM.
2019-01-15 14:18:20 -08:00
Eric House
43b979ff46 cleanup: logging and method rename 2019-01-15 12:29:45 -08:00
Eric House
cf3d3bc156 cleanup from review of diffs (nothing significant) 2019-01-15 07:44:38 -08:00
Eric House
73a469a428 make logging respect force-on preference 2019-01-14 16:58:00 -08:00
Eric House
788113ee28 up versions strings for new release 2019-01-14 13:12:39 -08:00
Eric House
c976b3f595 show BT-troubleshooting hint when scan finds no devices 2019-01-14 12:20:27 -08:00
Eric House
23e58524a1 in invite dialog, confirm before deleting BT devices 2019-01-14 12:08:07 -08:00
Eric House
0da5d9dd28 improve gcm-debug toast message 2019-01-13 21:56:59 -08:00
Louies
1328f1a9a4
Added translation using Weblate (Chinese (Traditional)) 2019-01-13 14:15:27 +01:00
Eric House
e378647e36 put back explanatory progress text 2019-01-12 09:04:40 -08:00
Eric House
bfbf17252e use ProgressBar instead of Dialog for BT invite scans
I wanted to show progress, and it was just as easy to replace the
deprecated ProgressDialog as to add a timer to the thing.
2019-01-11 21:06:15 -08:00
Eric House
bdbd5bc1ee disable logging for tagged release builds 2019-01-09 20:00:20 -08:00
Eric House
1625ec9062 Merge branch 'android_branch' into android_translate 2019-01-09 19:03:21 -08:00
Eric House
48a9e830b8 remove empty string -- not legal 2019-01-09 19:02:29 -08:00
Eric House
d2cbcf1e71 tweak BT background notification icon and expl. text
The BT icon part was too thick. And the explanation was TMI.
2019-01-09 18:57:50 -08:00
Eric House
d257369639 use same invite prefix for all variants
I want to be able to invite one app to the other's games to better test
relay. Since I'm the only one using the Dbg variant should be no impact.
2019-01-09 18:25:52 -08:00
Eric House
011825e4a9 cleanup 2019-01-09 18:18:27 -08:00
Eric House
302a3a5025 accept invite even if same-gameID game open
more dev-only code, likely: if the game that's sending the invitation is
open when the invitation arrives, should still check if it's a dupe or
should be accepted.
2019-01-09 09:51:15 -08:00
Eric House
250583caea log when invite response comes back 2019-01-08 20:34:22 -08:00
Eric House
a665df7840 cleanup: test's done already 2019-01-08 20:31:27 -08:00
Eric House
f18a957ed5 kill progress when owner view goes away
BT Invite progress was sticking around when Board left because it wasn't
foreground.
2019-01-08 20:31:27 -08:00
Eric House
2c73f4ca77 don't handle duplicate invitations in DEBUG case
Was creating a second game in some cases in response to duplicated
invitations. Add a test for forceChannel: if there's already a game with
the same gameID *and* forceChannel assume the invitation is a dupe and
drop it.
2019-01-08 20:02:01 -08:00
Eric House
e0f4a028d1 remove a bunch of unused methods 2019-01-08 19:42:44 -08:00
Eric House
24fad52cd8 use second resolution in bt device display
Useful to see that a scan really did just happen
2019-01-08 11:52:31 -08:00
Eric House
7c7b80deae add net-stats dialog to log-tap games menu
So I don't have to open a game to see e.g. how it's connecting, refactor
the network status stuff so it can be called from both board and
gameslist views. Then add new context menuitem that calls it.
2019-01-08 11:37:57 -08:00
Eric House
e9e03a06a3 show toast when GameLock fails to lock (some cases) 2019-01-08 10:09:43 -08:00
Eric House
4fcc5fd99b turn off faker device (but make easy to enable) 2019-01-08 09:49:10 -08:00
Eric House
c87161307c When rematching an Archived game save in default new-game group 2019-01-08 09:41:23 -08:00
Eric House
7cccd1a1e6 make the fake result random 2019-01-06 17:12:11 -08:00
Eric House
0953772673 cleanup: don't need wrapper around a List<> 2019-01-06 16:58:30 -08:00
Eric House
2a845da9b6 use List instead of array 2019-01-06 16:29:52 -08:00
Eric House
83340567b2 add and implement remove button for btinvite dialog 2019-01-06 15:20:36 -08:00
Eric House
853578eb7d don't drop known BT devices on every scan
Instead, keep them forever (for now), sorted by how long since they were
last seen. A Delete button's probably needed to prevent ex-partners from
sticking around too long. :-)
2019-01-06 14:34:43 -08:00
Eric House
c7f9fc465f persist and display most recent scan time 2019-01-06 13:40:49 -08:00
Eric House
2f508c0b5c persist BT invitee dev scan results
Only launch the scan automatically when the persisted list is empty.
2019-01-06 12:30:31 -08:00
Eric House
3a0e67c7b3 remove unreachable code 2019-01-06 12:05:30 -08:00
Eric House
d868fef0d2 revert space-only change 2019-01-06 12:04:51 -08:00
Eric House
aecce2826e revert change making userError() take an enum
The set's open-ended on the C side, meaning that an int can't be
converted to an enum reliably. Yay for asserts that caught this.
2019-01-06 11:12:59 -08:00
Eric House
5da32d93f7 fix double-launch of SMSInvite activity
Adding a second permission a while back resulted in two Actions being
received and acted on. Needed instead to group the two and receive a
single Action IFF both were granted.
2019-01-06 10:58:12 -08:00
Eric House
5a64b3b92f Fix problems inviting SMS on emulator
Likely no-ops on real devices
2019-01-06 08:59:38 -08:00
Eric House
105e8e2623 add logging
Keep some stuff added to debug problem with dict checksums on server.
2019-01-05 18:54:48 -08:00
Eric House
cace99818d remove dead code 2019-01-05 18:48:26 -08:00
Eric House
3cf8d7571b fix md5sum calc for non-utf8 wordlists
And use apache logging
2019-01-05 18:46:58 -08:00
Eric House
e77b830157 replace assert with what it was to remind me to add 2019-01-01 19:43:44 -08:00
Eric House
e30497f336 catch another exception 2018-12-29 19:56:56 -08:00
Eric House
5a7d5b80da punctuation 2018-12-29 19:52:11 -08:00
Eric House
4a90792dec If game's in Spanish, don't require 7 tiles for trade.
Put up an error message if too many tiles selected for trade
(a condition that couldn't exist when the pool was guaranteed to
have at least 7 in it.) (It's a hack: there's not even an enum
giving Spanish's code, and the lang_locale stuff in info.txt isn't
making it into the .xwd format.)
2018-12-29 18:47:48 -08:00
Eric House
e58f51a523 log, rather than toast, too-frequent debug message 2018-12-28 07:15:40 -08:00
Eric House
bdd92baf55 fix NPE when game isn't connected yet 2018-12-28 07:09:15 -08:00
Eric House
37a853c8a4 oops: use the first *remote* address 2018-12-27 22:10:24 -08:00
Eric House
320db700a9 add opponent address to net stat display
(Debug builds only)
2018-12-27 19:30:34 -08:00
Eric House
24386bd8c9 catch uncaught exception 2018-12-27 18:09:18 -08:00
Eric House
b0805b0b6a use tryLock() to avoid on-ui-thread assertions 2018-12-26 21:41:47 -08:00
Eric House
62cd90c183 remove unused interface 2018-12-26 17:45:42 -08:00
Eric House
0e2af6a836 rewrite GameLock to use wait()/notifyAll()
I've learned a bit about java since writing that class. Should be faster
now without the sleep/polling. Also making it illegal to use blocking
lock() call on UI thread. There may be some assertions to fix in the
next few days.
2018-12-26 17:41:21 -08:00
Eric House
891c73a1b7 make run() wait for gamePtr before starting loop
Was seeing race condition on slowest device where JNIThread init hadn't
finished before the event loop tried to use the gamePtr. So use
wait()/notifyAll() to fix.
2018-12-18 07:07:35 -08:00
Eric House
285f6ad34a revert diagnostic changes 2018-12-17 12:57:17 -08:00
Eric House
e10b17cec0 remove logging; diagnose git/travis problem 2018-12-17 12:35:40 -08:00
Eric House
5467941d45 start stuff when package replaced
And: Don't start the foreground service with its user-visible
notification, as that's too obtrusive and the ACL_CONNECTED stuff seems
to work well enough. Launching timers on a new install is mostly for my
own dev use, but won't hurt user experience either.
2018-12-17 08:26:39 -08:00
Eric House
d8d0065e90 remove some logging 2018-12-17 08:26:00 -08:00
Eric House
3b48ee0ed8 try a different command 2018-12-16 18:48:06 -08:00
Eric House
a2fe00368e more diagnosis 2018-12-16 18:11:09 -08:00
Eric House
b88bbcf443 diagnosing travis build problems 2018-12-16 17:53:18 -08:00
Eric House
d31c2f5513 trying another fix for travis 2018-12-16 17:43:12 -08:00
Eric House
3b0a523499 send successful pings back as they occur
rather than have the user see no feedback until the slowest-to-respond
paired device times out.
2018-12-16 13:34:28 -08:00
Eric House
2d91c133a8 new file (forgotten earlier) 2018-12-16 10:41:04 -08:00
Eric House
67fa27069a add a hint for when scan shows nothing 2018-12-15 07:20:29 -08:00
Eric House
e3f862a6eb shorten timeout for scan/ping 2018-12-15 07:07:54 -08:00
Eric House
e15fb84005 ask for SMS_RECEIVE on startup if have SMS_SEND
It's free (same group) but required on SDK_26 for invitations to work.
2018-12-14 19:33:03 -08:00
Eric House
f7ef1adcb5 add settings button to foreground service notification
On O and beyond it's possible to tweak notification channels separately,
meaning users can hide the new BT-is-running notification and still get
game event notifications. So add a button that takes you to the right
Settings app page.
2018-12-14 17:12:15 -08:00
Eric House
02897f6e36 use separate channel for background service notification
Since on newer OS versions users might want to hide it
2018-12-14 16:00:36 -08:00
Eric House
2ab04901a7 scan all paired devices at same time
One thread per device: brute force, but the threads live a few seconds
and the user just triggered the action so should be ok with it.
2018-12-12 22:32:14 -08:00
Eric House
61dc8e837e cleanup 2018-12-12 22:21:02 -08:00
Eric House
c2f5949623 use AutoCloseable rather than a hack of my own 2018-12-11 15:14:51 -08:00
Eric House
f7258f29e8 saw a crash, so gather more info if it happens again. 2018-12-11 14:40:57 -08:00
Eric House
68bb8a1268 fix bluetooth bootstrapping
Separate processing of sockets from accepting them so that when an ACL
CONN notification is received and we open a socket (but don't yet have a
Service running because the ACL thing is most likely for some other app)
we can set it aside to be processed once we do have a service. Use the
same block-until-non-null thing as in RelayService to keep that thread
free of NPEs.
2018-12-11 14:38:40 -08:00
Eric House
48c06acef5 new debug util method 2018-12-11 08:28:07 -08:00
Eric House
4f8f14c83b kill thread when wait() fires InterruptedException
Rather than just dropping it and going back to a wait that will likely
last forever. I *think* wait() throwing that exception means the
thread's being killed, in which case the exception should be thrown up
to the containing loop that will then exit.
2018-12-11 06:57:59 -08:00
Eric House
f2322d7e81 cleanup (no behavior change) 2018-12-11 06:57:18 -08:00
Eric House
bfad324bb4 add stop button to notification
And keep the service alive (and the notification present) for 15
minutes.
2018-12-10 19:17:05 -08:00
Eric House
ea03c855e4 cleanup: remove logs and unneeded code
pull too much logging and stuff starting service on going into
background. RelayService isn't that type of Service.
2018-12-10 11:56:40 -08:00
Eric House
e797a28a6d cleanup: use marker instance rather than instanceof 2018-12-10 10:14:17 -08:00
Eric House
0a4b8549cf Don't block UI thread until service instances released
I thought I had to stop using a service instance before returning from
its onDestroy(), but that made the UI incredibly laggy AND appears not
to be necessary. At least in a bit of testing things still work.
2018-12-10 09:45:24 -08:00
Eric House
fe6996b663 decouple networking threads from RelayService
Oreo's creating a new service instance for every single intent passed to
enqueueWork, meaning a brand new set of threads with a new queue, empty
set of messages to be retried, etc. was created every time, and all
attempts to optimize and retry were broken. So: make the threads a
static singleton that are given a Service instance from onCreate() and
told to drop it from onDestroy(). The threads proceed until they need an
instance, then block until one's available. Seems to work on Oreo and an
older Android as well.
2018-12-09 18:26:59 -08:00
Eric House
a2fa841947 new DebugUtils method 2018-12-09 18:26:59 -08:00
Eric House
c5c081e8bd make RelayService descend from JobIntentService
Required moving most of XWService into a class to which all services
could delegate what they used to inherit.

squash me
2018-12-09 18:26:59 -08:00
Eric House
5f7e4aa1b9 refactor a tiny bit 2018-12-09 18:26:59 -08:00
Eric House
9c501b19a8 get RECEIVE_SMS permission with SEND_SMS
Apparently one of the newer Android SDK levels adds the requirement to
have RECEIVE_SMS permission in order for a broadcast receiver to get
called. Meaning receipt didn't work even if SEND_SMS had been
granted. Since they're both in the same group (for now) the OS will
grant the second silently if the first has been granted, but it still
has to be requested. So request both at the same time. This still leaves
the problem that a user who's never tried to create an SMS game won't
have been asked for either permission and so won't receive SMS
invitations, but fixing that is for a later release.
2018-12-09 18:26:59 -08:00
Eric House
3c861166de use TAG format that doesn't break logcat filtering 2018-12-09 18:26:59 -08:00
Eric House
e30466e096 include flavor in logged TAG
Tired of not being to tell variants' logs apart.
2018-12-09 18:26:59 -08:00
Eric House
7c804b9aad don't drop potential duplicate invitations after 5 seconds
Other code will take care of duplicates. This was meant to avoid a race
condition, for which 5 seconds is enough. Blocking forever complicates
testing.
2018-12-09 18:26:59 -08:00
Eric House
c4ac96ede8 fix NPE (race condition around deletion?)
Check for null. Not sure how I got it there, but there's little harm in
failing silently.
2018-12-09 18:26:59 -08:00
Eric House
95c11eec07 don't try to connect to non-phones
When a device is paired but not a phone (or computer, which is how
tablets identify), don't bother trying to scan it.
2018-12-09 18:26:59 -08:00
Eric House
051aeba57c fix crash by not creating Handler until on UI thread
Receiver is created and installed by a non-UI thread sometimes so can't
create the Handler there. onReceive() is called on an ok thread however
so create it there on demand. Fixes crash that showed when receiving
relay messages in background.
2018-12-09 18:26:59 -08:00
Eric House
68ae9790b4 launch service from ACTION_ACL_CONNECTED
Fire up the receiver thread, and start the service, on receipt of this
ACTION (if they're not already running.) On start, the service takes
over the thread and begins dispatching messages. Works to launch the app
when it's not running and in most cases, though messages received before
the service launches are currently dropped, things seem to work.
2018-12-09 18:26:59 -08:00
Eric House
3dbec328af fix NPE
It happened when too many timers were firing, but I think this code's
better anyway.
2018-12-09 18:26:59 -08:00
Eric House
271d43808f kill foreground service on a timer
reset timer on receiving meaningful data and on moving app to
background. If it fires and we're in background, kill the service.
(There's currently no way to restart it except bringing the app into the
foreground. Fixing that's coming.)
2018-12-09 18:26:59 -08:00
Eric House
c8fe57cc78 make listener thread static
remove relationship with BTService so it can be created independently.
2018-12-09 18:26:59 -08:00
Eric House
e984b10fea remove option of disabling foreground service
Since it's not going to be running all the time any more.
2018-12-09 18:26:59 -08:00
Eric House
d94821feb4 btinvite dlg shows results of scan not all paired devs
Moving toward a better BT invite experience: use BTService to scan for
ourselves on all paired devices, and only allow selecting from among
those on which we're running (and so likely to respond to an
invitation.)
2018-12-09 18:26:59 -08:00
Eric House
ece125c5dc change foreground-service notification text 2018-12-09 18:26:59 -08:00
Eric House
1e42156f4a remove assert
Constructor is called from JNI code and so not on the UI thread.
2018-12-09 18:26:59 -08:00
Eric House
faeaa60f87 replace junit's assert with my own
And have it log before throwing. Should be easier to track down asserts
coming from jni callbacks this way than in the C code.
2018-12-09 18:26:59 -08:00
Eric House
eaae9ed1c1 Always call startForeground after startForegroundService
It's an error to e.g. stopSelf() without having called startForeground,
so do it even when about to exit.
2018-12-09 18:26:59 -08:00
Eric House
0a0bd54ec7 include new permission to install third-party apks
Fixed upgrade of Dbg variant not working on Oreo.
2018-12-09 18:26:59 -08:00
Eric House
8bd4613c2a include X86 native library again
It's a pain to have to change code to run in Genymotion, and to have
upgrade not testable using Genymotion. Consider verting this change
before next release.
2018-12-09 18:26:59 -08:00
Eric House
50f448bb1f fix to contact relay in foreground on Oreo+
Background still needs a lot of work.
2018-12-09 18:26:59 -08:00
Eric House
ff2192f659 fix path name string causing JNI crash on emulator
And catch NPE that also seems to be emulator-only
2018-12-09 18:26:59 -08:00
ssantos
73ac713b89
Translated using Weblate (Portuguese)
Currently translated at 52.7% (395 of 750 strings)
2018-12-01 21:08:47 +01:00
Eric House
9eec5c37ef fix path name string causing JNI crash on emulator 2018-11-29 09:30:14 -08:00
Eric House
91828cb851 add more google()
still trying to fix travis builds
2018-11-28 21:21:48 -08:00
Eric House
b2bf3a6e80 move google() above maven (to fix travis?) 2018-11-28 20:38:43 -08:00
Eric House
ce3cb62f02 add reversed version of btservice notification icon
For the Dbg variant to match its normal notification icon.
2018-11-28 19:35:24 -08:00
Eric House
fc699caaa8 ensure channel id always setup before use 2018-11-28 19:27:32 -08:00
Eric House
7eb278033a revert change setting notifiction priority low 2018-11-28 19:20:43 -08:00
ssantos
f8c79efc60
Translated using Weblate (German)
Currently translated at 99.7% (748 of 750 strings)
2018-11-27 23:07:31 +01:00
Eric House
843c95e7ae new icon for omnipresent BTService notification 2018-11-27 11:27:18 -08:00
Eric House
988ac55eaa tweak apk-cmp script 2018-11-27 10:06:38 -08:00
Eric House
0dbc976561 Merge branch 'android_branch' into making-it-work-with-api26 2018-11-24 13:19:34 -08:00
Eric House
88fe2739c1 fix crashes (NPE and RelayService trying to run in background)
Still need to figure out what RelayService does. It needn't run for long
except where GCM isn't present.
2018-11-24 13:04:14 -08:00
Eric House
eb6831ea12 add bt-in-background preference
And clear it from a button in the alert that's posted when the
foreground service notification is selected.
2018-11-23 09:47:18 -08:00
Eric House
f8e15bd3a0 add explanation for foreground service notification 2018-11-23 08:21:52 -08:00
Eric House
2ba5982ddf use foregroundService on devices that can handle it
And show the notification regardless. Tested only on pre-Oreo device so far.
2018-11-22 15:18:57 -08:00
Eric House
6177914213 add lifecycle lib (events only logged only so far) 2018-11-22 08:13:49 -08:00
ssantos
9a80bacf66
Translated using Weblate (Portuguese)
Currently translated at 52.1% (391 of 750 strings)
2018-11-19 08:07:10 +01:00
Israa Zamzami
3eba8312d4
Translated using Weblate (Arabic)
Currently translated at 12.0% (90 of 750 strings)
2018-11-14 20:07:08 +01:00
Israa Zamzami
1b6139721d
Added translation using Weblate (Arabic) 2018-11-13 19:05:27 +01:00
WaldiS
b49e1289db
Translated using Weblate (Polish)
Currently translated at 1.2% (9 of 750 strings)
2018-10-27 20:38:05 +02:00
WaldiS
cb97fc5796
Translated using Weblate (Polish)
Currently translated at 0.9% (7 of 750 strings)
2018-10-21 21:35:02 +02:00
Allan Nordhøy
68a705a0a3
Translated using Weblate (Norwegian Bokmål)
Currently translated at 86.0% (645 of 750 strings)
2018-10-03 11:32:31 +02:00
Allan Nordhøy
1a89b2eee1
Translated using Weblate (German)
Currently translated at 99.0% (743 of 750 strings)
2018-10-03 10:28:13 +02:00
Allan Nordhøy
9ed3239fe2
Translated using Weblate (Norwegian Bokmål)
Currently translated at 81.6% (612 of 750 strings)
2018-10-02 09:31:31 +02:00
Allan Nordhøy
d6468499a3
Translated using Weblate (Norwegian Bokmål)
Currently translated at 77.3% (580 of 750 strings)
2018-09-30 10:31:48 +02:00
Allan Nordhøy
5bf337dcde
Translated using Weblate (Norwegian Bokmål)
Currently translated at 57.4% (431 of 750 strings)
2018-09-25 06:33:14 +02:00
Eric House
dfcac132c8 up strings for new translations-only release 2018-09-22 14:21:04 -07:00
Eric House
6bafbecd75 toward service working on Oreo
Did a bunch of stuff to inherit from JobIntentService and use enqueue(),
but doesn't work yet. OS is unable to bind, with this error:
09-21 17:20:51.678  3050  3050 W JobServiceContext: Time-out while trying to bind 2edee28 #u0a277/1111 org.eehouse.android.xw4dbg/org.eehouse.android.xw4.BTService, dropping.
2018-09-22 09:22:37 -07:00
Eric House
24440230ba refactor so startService can change (no behavior change yet) 2018-09-21 15:21:04 -07:00
Eric House
dbbeeb7519 Merge branch 'android_translate' into android_branch 2018-09-13 21:31:09 -07:00
Eric House
62dc885922 Merge remote-tracking branch 'weblate/android_translate' into android_translate 2018-09-13 21:29:44 -07:00
Eric House
45600a295a use NotificationChannel to work on O and beyond with SDK 26
Notifications don't work on Oreo without this change, which includes a
new Support Library in order to get NotificationChannel and creates and
uses that as docs describe. Requires that MinSDK be raised from 8 to 14,
which may lock some users out. It *should* be possible not to do this in
the fdroid variant since their app store doesn't requires SDK 26, but
I'll look at that later.
2018-09-13 19:49:49 -07:00
Eric House
6f6c3238d4 Merge branch 'android_branch' into making-it-work-with-api26 2018-09-13 14:11:30 -07:00
Eric House
54f3e57f7f Merge branch 'android_branch' into making-it-work-with-api26 2018-09-13 10:36:26 -07:00
naofum
13f617b0b5
Translated using Weblate (Japanese)
Currently translated at 74.1% (556 of 750 strings)
2018-08-27 02:42:19 +02:00
Bernard Massot
28b784fdb4
Translated using Weblate (French)
Currently translated at 98.4% (738 of 750 strings)
2018-08-26 21:37:54 +02:00
Eric House
dfa308c1f5 pull timestamp out of DB as a long
for better formatting, eventually.
2018-08-07 09:01:17 -07:00
Eric House
02781c5113 use different (older) crashlytics (untested)
For some reason my laptop wouldn't build without this change. No idea
what happened to the newer version I was using or if the change
works (beyond compiling). Should be easy to find the change later if
it's a problem.
2018-08-07 08:57:14 -07:00
Eric House
9fb8671ef0 Merge branch 'android_branch' into android_translate 2018-08-04 11:14:54 -07:00
Markus Enzenberger
5d729094c3
Translated using Weblate (German)
Currently translated at 99.0% (743 of 750 strings)
2018-08-03 09:38:07 +02:00
Eric House
d23307f0ef up strings for new release 2018-08-02 06:28:09 -07:00
Eric House
3d7d1b8ffd don't call tile picker more than once
Some devices, including my Moto, are apparently calling server_do() more
than most. When the game's supposed to be asking the user to pick tiles
that resulted in stacked TilePickAlerts. The stack of these
sending (taken together) too many picked tiles to the game made it
crash. So modify server to have only one pending tile-pick request going
at a time. Because the server can't know when the user dismisses the
alert in Android and so won't post again, respond to the dismissal by
closing the game. Reopening will put it in a state where the tile picker
can get called again.
2018-08-01 20:30:51 -07:00
Eric House
0cc7d21ecb fix race-condition NPE by inspection 2018-08-01 08:08:36 -07:00
Eric House
6a58a08bca remove redundant specifier 2018-08-01 07:50:34 -07:00
Eric House
8286c9c116 new script for when release builds required 2018-08-01 07:48:02 -07:00
Eric House
f1c2eb79d4 remove x86 from jni; that chip's dead on Android 2018-08-01 07:37:33 -07:00
Hosted Weblate
a44db6c942
Merge branch 'origin/android_translate' into Weblate 2018-07-31 08:56:08 +02:00
Eric House
803b4ff0f3 cleanup: load/initialize only when first needed 2018-07-30 08:00:00 -07:00
Eric House
bf06d4b4c2 fix not sending ACK_INVITE
Logic error meant it was never sent. Now always send on receipt of a
well-formed invitation, even if e.g. the recipient's missing a wordlist
and the game can't be started immediately.
2018-07-30 07:37:20 -07:00
Eric House
a23777bade move byte[]<->NetLaunchInfo convert into the class 2018-07-27 07:44:02 -07:00
Eric House
2f10712379 revert to old invite data format
Had inadventently changed how NetLaunchInfo was transmitted, and crashed
on receiving from older builds. Fix to not crash, and then fix to send
and recieve in the old format.
2018-07-27 07:24:27 -07:00
Joan Montané
2c9d619f71
Translated using Weblate (Catalan)
Currently translated at 96.6% (723 of 748 strings)
2018-07-27 10:35:25 +02:00
Eric House
e637f49b95 include port and proto
Pretty sure couldn't have played against an older build without this.
2018-07-26 21:13:09 -07:00
Eric House
dfd4a3f6f6 put the api-26 changes back
lost in a rebase apparently
2018-07-26 19:16:50 -07:00
Eric House
9ddc6e4b89 Move transision of cmd and gameid and port (pending) into smsproto
common code, simplifying and unifying what the platform-specific code
has to do. Seems to work.
2018-07-26 07:50:16 -07:00
Eric House
a65498c132 add missing Overrides -- in one file 2018-07-26 07:24:23 -07:00
Eric House
70b22f7d11 revert to sdk-23
Too much breaks with the upgrade and I don't have time to deal.
2018-07-21 21:36:51 -07:00
Eric House
affb13207e up sdk version in the second place 2018-07-20 08:24:48 -07:00
Eric House
e1ba676a8e Merge branch 'quick-bt-fix' into android_branch 2018-07-19 07:17:15 -07:00
Eric House
723e7d7953 update changes to include translations included 2018-07-19 06:57:21 -07:00
Allan Nordhøy
6abff25946 Translated using Weblate (Norwegian Bokmål)
Currently translated at 55.2% (413 of 748 strings)
2018-07-19 06:54:32 -07:00
Joan Montané
5ced000c8c Translated using Weblate (Catalan)
Currently translated at 94.3% (706 of 748 strings)
2018-07-19 06:54:14 -07:00
Eric House
a9701525b7 up version string for new release 2018-07-19 06:47:18 -07:00
Eric House
fcefa9ca97 dismiss the BT invite progress thing on success
Not sure how this broke in the reorg of XWService stuff, but let's be
agressive about dismissing that thing.
2018-07-19 06:33:05 -07:00
Eric House
4450a8d56c fix NPE by inspection
I'm not sure how it happened -- race condition -- but it's harmless to
drop the action when it does.
2018-07-19 06:33:00 -07:00
Eric House
7cb00b6266 fix assertion: return a f*ing sink
Messed this up in February apparently.
2018-07-19 06:32:48 -07:00
Eric House
b0cf3a795c fix NPE by inspection
fix crash reported by user. Looks like a race on the way out so check
for null first.
2018-07-19 06:32:36 -07:00
Eric House
d40b8b7cad dismiss the BT invite progress thing on success
Not sure how this broke in the reorg of XWService stuff, but let's be
agressive about dismissing that thing.
2018-07-19 06:29:59 -07:00
Eric House
e1fec99860 fix NPE by inspection
I'm not sure how it happened -- race condition -- but it's harmless to
drop the action when it does.
2018-07-19 06:29:03 -07:00
Eric House
67d09a79b5 fix assertion: return a f*ing sink
Messed this up in February apparently.
2018-07-19 06:07:26 -07:00
Eric House
a3fb82ebc4 Merge branch 'android_branch' into android_translate 2018-07-18 22:30:58 -07:00
Eric House
a3ac3c4c8a fix NPE by inspection
fix crash reported by user. Looks like a race on the way out so check
for null first.
2018-07-18 22:26:26 -07:00
Eric House
807fe8633f add forgotten file 2018-07-17 08:46:39 -07:00
Eric House
8f9c9e0623 fix crash around uri permissions for new OS version
Use a FileProvider with all the necessary xml changes to pass apk to
installer without crashing it or myself.
2018-07-17 07:02:36 -07:00
Eric House
276ef38108 use sdk26 -- will be required soon anyway 2018-07-15 10:33:09 -07:00
Joan Montané
cc714a96cb Translated using Weblate (Catalan)
Currently translated at 94.3% (706 of 748 strings)
2018-07-14 12:35:09 +02:00
Eric House
019cc628e4 fix crash figuring md5sum of null bytes
Just return null String
2018-07-13 22:35:44 -07:00
Eric House
5d6c743087 fix (I hope) null jni array dereference 2018-07-13 18:20:05 -07:00
WaldiS
cf24b1e4a0 Translated using Weblate (Polish)
Currently translated at 0.2% (2 of 748 strings)
2018-07-13 21:41:10 +02:00
WaldiS
2d53673ae5 Added translation using Weblate (Polish) 2018-07-12 20:57:43 +02:00
Eric House
bd1cc4276b cleanup and variable rename (no code changes) 2018-07-11 07:33:36 -07:00
Eric House
3477bcf7b6 fix release-build scripts for new gradle output paths 2018-07-11 06:48:42 -07:00
Eric House
af0ddaa0f7 up version code and strings 2018-07-11 06:41:36 -07:00
Eric House
6bab91803d fix release builds
(broken since 091299c 2 months ago)
2018-07-11 06:38:54 -07:00
Allan Nordhøy
3959c73a86 Translated using Weblate (Norwegian Bokmål)
Currently translated at 55.2% (413 of 748 strings)
2018-07-11 00:39:41 +02:00
Eric House
95ac66370c fix off-by-one preventing delayed messages from sending 2018-07-10 07:08:57 -07:00
Eric House
9c2a722cc5 change two method names 2018-07-10 07:07:30 -07:00
Eric House
8c14ccc0d2 add new dutil to store by ptr; use for smsproto msgID 2018-07-10 06:36:34 -07:00
Eric House
08c41ddd3e add debug preference controlling new smsproto format
Don't use the message-combining feature for sends unless this is
set. After a release the default value will switch to true.
2018-07-10 06:19:16 -07:00
Eric House
a9769efe1c implement load/store on android 2018-07-09 07:11:54 -07:00
Eric House
1941642607 add load and store to dutils, and implement with stubs 2018-07-06 06:56:54 -07:00
Eric House
3437ae2ebc use smsproto in Android 2018-07-06 06:48:56 -07:00
Eric House
ed90c9c16d implement util->dutil split for Android
So now all jni code uses a single dutil context, but also a single
mempool and jniutil instance instead of new instances of the latter two
per game and dict-iteration.
2018-07-05 08:32:19 -07:00
Eric House
9cdd5a7b72 share mpool and vtable in jni calls
A number of jni calls were "stateless", which meant they allocated their
own vtmgr and mpool instances each time invoked. Instead invoke them
with the global jni closure and add to it vtmgr (already has mpool) and
use these instead of allocating/freeing each time. To make sure no race
conditions are introduced (mpool, though debug-only, is probably not
thread-safe), guard these new uses with an in-use flag. If that fires
I'll need a mutex or something.
2018-06-27 21:17:44 -07:00
Eric House
39a5ce92ee refactor a bit (no behavior change) 2018-05-23 22:03:16 -07:00
Eric House
7fa0cb1b93 rewrite as Thread instead of AsyncTask
I want to be able to use it in contexts where AsyncTask doesn't make
sense, e.g. from timer in background.
2018-05-11 10:23:49 -07:00
Eric House
091299c030 upgrade AS and gradle and with luck travis will work 2018-05-06 14:33:10 -07:00
Eric House
32df1777d3 Merge branch 'android_branch' into android_translate 2018-05-03 06:46:44 -07:00
Eric House
82e6c5495b fix to delete dict even when loc is wrong
Somehow I got a wordlist into a location different from what was
recorded in the DB table and since the delete command matched on
location as well as name it was never deleted (which meant the checksum
was never updated and so upgrading never seemed to succeed.) Removing
the match on location fixed that problem, and since I don't see any harm
in cacheing only one version of a wordlist will simply leave it that
way.

Did a bunch of cleanup as well.
2018-05-01 07:22:59 -07:00
Eric House
a27e8c4c04 move static method into enum 2018-05-01 07:00:14 -07:00
Eric House
1e766ee52d show usage when no args provided 2018-04-29 20:12:22 -07:00
Eric House
681e2cd8a0 up version code and strings 2018-04-18 21:49:04 -07:00
Joan Montané
08e74b5dc7 Translated using Weblate (Catalan)
Currently translated at 93.3% (698 of 748 strings)
2018-04-07 09:34:52 +02:00
Eric House
8f86cf9a77 don't assert on debug builds either
I'm seeing several IllegalStateException crashes due to e.g. having an
alert posted when app's in the background. Need to fix them, but the
debug build crashing isn't helpful. Log.e() instead.
2018-03-22 06:55:49 -07:00
Eric House
ab0764fa5a hack around IllegalStateException with Wait alert
The pesky thing is back. When app's in the background with an
unconnected game open displaying the "resend/wait" alert and the game
connects get IllegalStateException because the fragment stack's being
modified after onSaveInstanceState() (or, because the dialog fragment,
saved as an instance variable in BoardDelegate, dates from an earlier
state. Anyway, catching and dropping the exception and elsewhere failing
silently to rebuild the alert seems to fix the problem, but the right
fix is likely different. I suspect hanging onto that iVar is wrong, and
that the dialog should go away when onStop() is called and then be
rebuilt later from saved state. But for now, not crashing is good.
2018-03-21 08:11:07 -07:00
Eric House
a8db820b68 change strings for new release 2018-03-14 20:07:05 -07:00
Eric House
36c9e8c93b Merge branch 'android_branch' into android_translate 2018-03-14 19:32:25 -07:00
Eric House
77e40619ce Merge branch 'android_translate' of git://git.weblate.org/xwords into android_translate 2018-03-14 19:29:13 -07:00
Markus Enzenberger
dc0436e80d Translated using Weblate (German)
Currently translated at 99.0% (743 of 750 strings)
2018-03-11 09:37:11 +01:00
Eric House
e207b1e9fa log intent contents
trying to track down why/when they wind up empty
2018-03-08 08:30:01 -08:00
Eric House
2a2558a011 add/fix utility for printing Intent contents 2018-03-08 08:17:56 -08:00
Markus Enzenberger
a47381ed53 Translated using Weblate (German)
Currently translated at 98.4% (738 of 750 strings)
2018-03-04 08:39:34 +01:00
Eric House
2c153d1b9e log pending score drawing
I'll occasionally see the pending score in tray drawn dim after hint
fails to find a move, but can't reproduce. So add logging.
2018-03-01 06:58:37 -08:00
Markus Enzenberger
a24977dddc Translated using Weblate (German)
Currently translated at 86.2% (647 of 750 strings)
2018-02-28 19:13:52 +01:00
Joan Montané
98dd664a35 Translated using Weblate (Catalan)
Currently translated at 93.0% (698 of 750 strings)
2018-02-28 11:35:02 +01:00
Eric House
b3559915e9 replace AsyncTask with Thread
It didn't even use the runOnUiThread feature!
2018-02-26 07:57:28 -08:00
Eric House
73c7494e30 move invitation handling into superclass
Remove a bunch of duplicated code, replacing with implementation in
XWService. Fixes duplicate invitation and game opening policies being
slightly different.
2018-02-24 07:56:57 -08:00
Eric House
0bccf565c6 cleanup: ivar becomes local variable 2018-02-07 07:35:25 -08:00
Eric House
c762b43047 up version strings and changelog 2018-02-06 07:25:07 -08:00
Eric House
102671398b truncate player name, not score
Try some funky layout shite to get, within a horizontal linear layout,
the first text field trucated if necessary so that the second (holding
the score) can be fully displayed. Tested on exactly one emulator so
far.
2018-02-03 20:11:03 -08:00
Eric House
9c9a19d445 truncate player name, not score
Try some funky layout shite to get, within a horizontal linear layout,
the first text field trucated if necessary so that the second (holding
the score) can be fully displayed. Tested on exactly one emulator so
far.
2018-02-03 20:08:55 -08:00
Joan Montané
a152b169e8 Translated using Weblate (Catalan)
Currently translated at 75.4% (566 of 750 strings)
2018-02-03 10:34:50 +01:00
Eric House
cf1f4a9114 replace one with other in Catalan <plurals> elem
I think there's a bug in Weblate because I've seen this before: where
the English provides only an <other> the translation comes back with
only a <one>. That's wrong. Try adding a <one> in the English case to
see if that makes a difference.
2018-02-02 21:32:30 -08:00
Eric House
9855ef55ae replace one with other in Catalan <plurals> elem
I think there's a bug in Weblate because I've seen this before: where
the English provides only an <other> the translation comes back with
only a <one>. That's wrong. Try adding a <one> in the English case to
see if that makes a difference.
2018-02-02 21:30:15 -08:00
Eric House
1b36e734a4 Merge branch 'android_branch' into android_translate 2018-02-02 21:20:43 -08:00
Joan Montané
71b959aef3 Translated using Weblate (Catalan)
Currently translated at 75.4% (566 of 750 strings)
2018-02-01 09:34:48 +01:00
Eric House
757c5b4ece cleanup: move db access into doInBackground() 2018-01-29 19:29:18 -08:00
Eric House
5326d42438 enable smart scrolling
Otherwise it takes too long to scroll if you have hundreds of
games. To make this work had to move scroller to left side of games
list display as otherwise the scroller steals events from the expander
thingies.
2018-01-29 05:33:48 -08:00
Eric House
875d956836 don't need the local threadinfo at all
I think the crash was just due to removing env from the global state
rather than just leaving it be.
2018-01-23 21:26:11 -08:00
Eric House
ffaa232dba fix dictname being an empty string early on
Likely because of something in the jni world unset per-player dict name
is empty string rather than null, so test for that too. Fixes dicts
popup in newly-created game have an empty first line " (in use)".
2018-01-23 21:14:27 -08:00
Eric House
fd0c5767e6 toast status for resend should include the "re" 2018-01-23 06:56:18 -08:00
Eric House
d809ff4f7c give dict iter its own threadmap
I like this better than the previous fix: rather than share a
thread->env map with the game world allocate a new one for each
iterator. This could cause problem if the iterator is used on threads
that don't currently call map_thread(), or if there are callbacks that
need to look up the env that I'm not aware of. Needs testing...
2018-01-22 22:02:57 -08:00
Eric House
7242a709cb fix crash (race condition?) downloading dict info
Stumbled on a NPE opening up the wordlist browser configuring the first
game on a new install. So now test for null there and init early if
necessary. Seems to work, and won't do anything in places were not
needed.
2018-01-22 21:46:04 -08:00
Eric House
ff92c4a627 update changelog 2018-01-22 21:37:43 -08:00
Eric House
9654241fcf remove ability to set a min > max or max < min
Remake the min and max spinners every time either value changes so they
can't be used to set nonsensical values. (Which leads to immediate
crashes.) I'm sure this wasn't always a problem, but...
2018-01-22 21:31:41 -08:00
Eric House
efad90dd64 update strings for new release 2018-01-22 08:31:17 -08:00
Eric House
cbb683fc74 fix env-mapping crash in jni due to race condition
As reported to google, dict iterator destruction was crashing due to a
race condition if it happened after a game using the same dict had been
closed since it needed a mapped env that the game closure would
remove. Fixed in two ways, one by adding the mapping prior to the code
that uses it (a common pattern: add happens many times, whenver it might
be needed, but remove only once), and second by passing env into the
code that was crashing.

The mapping stuff remains inherently racy and I'm not sure now how to
fix that. It depends on there being a place to unmap after which it's
guaranteed the mapped value won't be needed again. When two
objects (game and dict_iter in this case) map the same env/thread combo
there's a race.
2018-01-22 07:45:43 -08:00
Eric House
134bcbdfa4 cleanup
Add new method with default values, etc: no change in behavior
2018-01-21 21:53:04 -08:00
Eric House
5f0c3bf4bd fix DEBUG assertion: unexpected Actions are expected
Looks like the assertion was left in when adding support for dual-pane
mode, as all other onPosButton() implementations called super rather
than assert. Which this one does now too.
2018-01-21 21:39:14 -08:00
Eric House
ecd6531ce3 add comment; tweak string
best I can do to respond to a suggestion on weblate.
2018-01-19 22:54:20 -08:00
Eric House
19a6672785 don't show current players tiles in list of remaining 2018-01-18 22:02:06 -08:00
Eric House
5afd8763b4 include Catalan translation in changes 2018-01-17 21:19:57 -08:00
Eric House
cdb22defcf cleanup; don't list unack'd acks 2018-01-17 21:17:09 -08:00
Eric House
339779e88e add ip of localhost as comment
Stops having to remember it every six months....
2018-01-17 21:07:28 -08:00
Eric House
efec6aba66 Merge branch 'android_branch' into android_translate 2018-01-17 20:54:49 -08:00
Eric House
42b521f144 switch positions of two PreferenceScreens
putting more oft-used on top
2018-01-16 07:54:33 -08:00
Eric House
a83f3617de up copyright for new year 2018-01-16 07:50:02 -08:00
Weblate
0aa8874e4d Merge remote-tracking branch 'origin/android_translate' into android_translate 2018-01-08 22:20:10 +01:00
naofum
999b7c1217 Translated using Weblate (Japanese)
Currently translated at 73.8% (549 of 743 strings)
2018-01-08 22:20:09 +01:00
Joan Montané
9278179d4c Translated using Weblate (Catalan)
Currently translated at 74.0% (550 of 743 strings)
2018-01-08 22:20:08 +01:00
Eric House
8c9e79f0fc add settings for debugging/tracking GCM 2018-01-03 21:32:23 -08:00
Eric House
11be66eb3f correctly report number of pending moves resent
Was overwriting rather than accumulating.
2018-01-02 22:50:41 -08:00
Eric House
e5ae940216 use AtomicReference. 2018-01-01 20:19:24 -08:00
Eric House
b24a004cab wip: get rid of join() from main thread
Getting ANRs because (I think) the main thread's waiting for the write
thread to die and now the write thread's doing a ton of work
sometimes. So move the threads into a standalone object that can be
allowed to die on its own time without anybody waiting.
2018-01-01 20:19:16 -08:00
Eric House
ea985e2f7a tweak changelog 2017-12-31 12:20:41 -08:00
Eric House
11c3d8fdf6 skip trying UDP after five failures 2017-12-31 10:19:06 -08:00
Eric House
4f7a12f5a1 don't claim "no move" when search interrupted
I *think* the reason I'm occasionally seeing toasts about not finding a
move is that when the engine's interrupted by there being a UI event in
the queue that error is posted. Instead try posting only when at the end
of the search nothing's been found.
2017-12-31 09:54:55 -08:00
Eric House
2c5720fddc tweak icons; make and add untrade 2017-12-30 15:07:11 -08:00
Eric House
b0fe00f502 update build instruction
And include the problem with 'convert' on MacOS
2017-12-29 17:56:50 -08:00
Eric House
5e20e54638 try to speed up delivery when udp not working
Having reconfigured to use non-existent relay port as a test of falling
back to the web apis, tweak stuff: send the packets that have been
accumulated when an EOQ is found (rather than dropping all of them
immediately) before exiting the write thread; and start the threads up
when posting a packet in case they aren't (they may not be when the post
happens via timer firing.)
2017-12-27 15:03:28 -08:00
Eric House
9fd4a90ccd use currentTimeMillis() for time
Everybody else does....
2017-12-27 14:43:25 -08:00
Eric House
17f27a1b65 remove relayStatus() from jni
Making it a no-op as the only thing it did, tweaking the net status
indicator, isn't useful.
2017-12-27 14:42:15 -08:00
Eric House
de691af7ca oops: save outgoing UDP acks, not web ones
Incorrect ! meant that outbound ACKs were saved for web sends rather
than UDP and so couldn't be resent in the case where fallback to web was
needed.
2017-12-27 12:30:02 -08:00
Eric House
10df914897 ignore folders and generated file 2017-12-22 08:02:49 -08:00
Eric House
7099a7627a wip: toward being able to resend ACKs again 2017-12-21 21:22:40 -08:00
Eric House
d134077d87 move ack timer off of ui thread
Seemed to be causing ANRs. Integrate instead into outgoing message queue
by using poll(timeout) then checking for unack'd packets every time
through the loop (but not more than once/3 seconds or so.)
2017-12-21 21:22:40 -08:00
Eric House
8d9889ccc4 cleanup, e.g. use label to exit outer loop 2017-12-19 07:30:31 -08:00
Eric House
ed57a744b6 use the new built-in game_receiveMessage
I'd forgotten it...
2017-12-19 07:28:19 -08:00
Eric House
16dc1b15bd update release strings and changelog 2017-12-18 22:45:45 -08:00
Eric House
5772718537 mark packets with udp-sent time
Presence of timestamp instead of a boolean determines whether packet
should next via Web. Timestamps might also allow to process a larger
number of unacked packets in a single timer fire....
2017-12-18 18:58:19 -08:00
Eric House
2339f09557 start skipping UDP when acks aren't coming
Track ack'd and unack'd packets. When there are ten more of the latter,
skip the UDP-send step. This is probably not the algorithm I'll settle
on (an explicit PING to the relay over UDP might be simpler), but it's
simple and easy.
2017-12-18 18:13:04 -08:00
Eric House
ec698c4c62 remove empty strings (currently an error) 2017-12-17 11:17:23 -08:00
Eric House
de8993c2e5 Merge branch 'android_translate' into android_branch 2017-12-17 11:13:32 -08:00
Eric House
771c9ba4a6 add three navbar icons from The Noun Project
with attribution of course.
2017-12-17 11:07:43 -08:00
Eric House
dc964ea6c1 catch up small-board menu 2017-12-16 08:17:15 -08:00
Eric House
39dbe67929 add archive menuitem
As with Rematch, you should have the option once you've dismissed the
special alert that comes up when finished games are opened.
2017-12-16 08:06:20 -08:00
Eric House
da1c3f992a Merge branch 'android_branch' into relay_via_http 2017-12-15 07:20:53 -08:00
Eric House
b0befa62e3 remove logging 2017-12-15 07:17:14 -08:00
Eric House
2db67ed339 try send via udp, then web
Send each packet via UDP if that's thought to be working (always is,
now) and start a 10-second timer. If it hasn't been ack'd by then,
resend via Web API. Tested by configuring to use a UDP socket that the
relay isn't listening on. Only problem is that the backoff timers are
broken: never stops sending every few seconds.
2017-12-15 07:12:14 -08:00
Eric House
c7a635285c change text and names around native-vs-web choice
The plan's to use the native relay protocol first, then to fall back to
the slower but more reliable (esp. on paranoid/block-everything wifi
networks) webAPI. This is the name change without behavior
change (except that the native kill() to report deleted games is gone.)
2017-12-14 06:47:03 -08:00
Eric House
e96a982f24 get rid of moved file already 2017-12-12 06:59:31 -08:00
Bernard Massot
70aeef6c8e Translated using Weblate (French)
Currently translated at 99.1% (737 of 743 strings)
2017-12-11 17:46:23 +01:00
Eric House
4746f153e3 add assertion
Need to revisit that join() call; this'll help.
2017-12-11 06:56:53 -08:00
Eric House
4fa8079bf0 log outgoing "post" params json 2017-12-11 06:55:25 -08:00
Eric House
d1a5a94740 fix crash processing multiple packets
When grouping to allow multiple packets per outbound API call I forgot
that some are there to mark the end-of-queue: can't be sent! Trying
caused a NPE. Now if any EOQ is found in the queue that batch is dropped
and the thread's exited.
2017-12-11 06:42:35 -08:00
Eric House
701e6968de file to pull an apk
app-id is hardcoded for now.
2017-12-10 11:56:52 -08:00
Weblate
6ffd4d4a37 Merge remote-tracking branch 'origin/android_translate' into android_translate 2017-12-01 04:25:46 +01:00
Eric House
4b81b784fc Merge branch 'android_branch' into relay_via_http 2017-11-28 06:24:09 -08:00
Eric House
8e37551f8a up changelog for new release 2017-11-27 20:40:16 -08:00
Eric House
455373343a remove requirement for gcm.jar
remove from xw4d version too since it can't work anyway.
2017-11-27 20:40:16 -08:00
Eric House
af81342021 create new fdroid variant 2017-11-27 20:40:06 -08:00
Eric House
503702c0e4 log unack'd packets 2017-11-26 20:56:38 -08:00
Eric House
0d8aef06f3 keep packets until ack'd for retry and better logging 2017-11-26 20:11:25 -08:00
Allan Nordhøy
9572cdca1b Translated using Weblate (Norwegian Bokmål)
Currently translated at 55.6% (411 of 738 strings)
2017-11-26 15:49:40 +01:00
Eric House
58eafd5fd1 fix glitches in XML strings for Norwegian 2017-11-20 22:04:42 -08:00
Eric House
3216ef8a5c Merge branch 'android_branch' into android_translate 2017-11-20 06:53:34 -08:00
Eric House
b6124ca2d1 change version strings and changelog 2017-11-19 20:10:54 -08:00
Eric House
4698c0e54b add not-again explanation for new archive feature 2017-11-19 20:00:45 -08:00
Allan Nordhøy
e6a1aef7a2 Translated using Weblate (Norwegian Bokmål)
Currently translated at 11.6% (86 of 738 strings)
2017-11-14 06:48:41 +01:00
Eric House
2879055ca9 log url when response code isn't 200 2017-11-13 08:17:26 -08:00
Eric House
5166933be6 Merge branch 'android_branch' into relay_via_http 2017-11-13 07:27:17 -08:00
Eric House
607567cd35 don't allow duplicate group names
If group already exists, warn rather than create another with the same
name.
2017-11-12 22:50:45 -08:00
Eric House
c2eff7d3f2 add "archive" option to dialog on opening done game
Create the group if needed. Name's not user-editable at this
point. Should be a preference, and that preference should be changed if
user renames it.
2017-11-12 22:31:48 -08:00
Eric House
35d172225f Use AtomicInteger rather than synchronization 2017-11-12 20:10:51 -08:00
Eric House
373c0249bc start backoff timer at 5 second, not 30.
Makes the http case nearly as quick as the udp one when both games are
on the same device. Which is all I've tested so far.
2017-11-12 20:04:22 -08:00
Eric House
8650795a81 don't crash when can't reach relay via http 2017-11-12 08:53:19 -08:00
Eric House
057728c287 make gtk include an invite ID in rematch invitations
otherwise Android refuses to accept the second "" it receives.
2017-11-11 16:39:09 -08:00
Eric House
fa52c5091a fix tap down lower not opening game
Making the right_side elem match its parent height prevents the
lower-right region of game list items from falling through and
triggering a toggle-selection event.
2017-11-11 15:45:00 -08:00
Eric House
39deeeb089 fix tap down lower not opening game
Making the right_side elem match its parent height prevents the
lower-right region of game list items from falling through and
triggering a toggle-selection event.
2017-11-11 15:43:07 -08:00
Eric House
3da5f237c6 add asserts to catch non-web holdouts; don't crash
Getting nulls when e.g. the relay isn't up. Shouldn't crash in that
case.
2017-11-11 15:31:36 -08:00
Eric House
c2d5f2d253 cleanup 2017-11-11 13:05:25 -08:00
Eric House
e2c6480992 fix linux client
everything takes one param now, and post sends an array
2017-11-11 12:57:33 -08:00
Eric House
f428538afc send an array of packets to post()
Somethimes there are several on the queue, so why not send all at
once. Note: this will break the linux implementation which I'll fix next.
2017-11-11 10:47:26 -08:00
Eric House
b9800b22f5 RelayService uses web instead of UDP!
As expected, moves are no longer received instantly because the UDP
socket isn't available for the relay to write too once the URL
handler (relay.py) finishes.
2017-11-11 09:56:20 -08:00
Eric House
4a3133924a name change for clarity 2017-11-11 09:14:35 -08:00
Eric House
0831bd8022 talk to relay.py/kill, first web api use from android
And it seems to work!
2017-11-11 08:22:52 -08:00
Eric House
31123b72ce fix failure to notify relay of half-game deletion
Wasn't detecting as a relay game something registered on relay but not
yet joined by another device, a common case!
2017-11-11 08:13:29 -08:00
Eric House
da3f6db9e4 fix failure to notify relay of half-game deletion
Wasn't detecting as a relay game something registered on relay but not
yet joined by another device, a common case!
2017-11-11 08:10:48 -08:00
Eric House
acf668ae8a add new prefs controlling web api usage
Add, but don't use yet, prefs giving relay.py path and checkbox whether
to use the new APIs.
2017-11-10 22:16:15 -08:00
Eric House
f2c4c82129 a shot at no-conn connecting
Ideally the comms module wouldn't go through its connecting routine in
order to join a game. To that end I added a join() method to relay.py
and code to call it. Joins happen (pairing games, starting new ones,
etc.), but after that communication doesn't. First part of fixing that
would be to make cookieID persistent and transmit it back with the rest
of what join sends (since it's used by all the messages currently sent
in a connected state), but I suspect there's more to be done, and even
that requires a fair number of changes on the relay side. So all that's
wrapped in #ifdef RELAY_VIA_HTTP (and turned off.)
2017-11-10 21:34:02 -08:00
Eric House
d1e6a0d1d3 fix seed comparison: ints vs strings
Was coming in as a string when called via curl. This may be a problem
for other ints if I go with lots of params instead of a json, which is
looking less likely.
2017-11-09 06:47:33 -08:00
Eric House
205adf0d0f add prototype of join()
join's how devices will create or join existing games. It more
compilicated than I'd like but seems to work except that once a slot's
assigned it's unavailable to anybody else even if the other fails ever
to respond (i.e. needs the ACK function of the c++ relay.)
2017-11-08 08:04:57 -08:00
Eric House
6c8b9d5277 fix query syntax: % operator bad 2017-11-07 07:34:06 -08:00
Eric House
c661c8a74e basic join() (inserting/updating game records) works 2017-11-07 07:33:04 -08:00
Eric House
3dfd419ec7 relay returning NOTHING is a thing; deal with it 2017-11-02 07:16:11 -07:00
Eric House
a1433e5f3d add kill to relay.py; call from test script using curl
It'll eventually get called from Android and maybe linux, but for now
it's cool to have games disappear from the showinplay display when
they're done.
2017-10-31 20:05:07 -07:00
Eric House
d2897d6dc8 fix to match format of empty return case 2017-10-30 19:06:38 -07:00
Eric House
7b50c90aac pass timeoutSeconds
ACK doesn't need to wait 2 seconds for a reply, and when it does so the
next send waits too. Eventually we'll want to combine messages already
in the queue into a single send. For now, this makes things better.
2017-10-28 20:12:05 -07:00
Eric House
6787fe1406 fix length byte 2017-10-22 21:29:16 -07:00
Eric House
4583b5d88d use ! with struct instead of ntohs 2017-10-22 15:47:01 -07:00
Eric House
284888df44 add timeoutSecs param 2017-10-21 12:13:19 -07:00
Allan Nordhøy
ebe594ed1d Added translation using Weblate (Norwegian Bokmål) 2017-10-19 11:48:34 +02:00
Eric House
7414e0eeae param should be json array as string 2017-10-18 22:02:14 -07:00
Eric House
3ffef37d77 don't require myKey.py 2017-10-18 21:19:09 -07:00
Eric House
fbaa1f139e add test method and implement query() endpoint 2017-10-18 21:18:30 -07:00
Eric House
c08be98fda wip: include multiple packets in reponse json 2017-10-18 07:09:05 -07:00
Eric House
b86ffeb2b9 wip: data gets to relay and response handled
A device registers and a game can start. But we don't get to being
able to make a move yet.
2017-10-18 06:53:15 -07:00
Eric House
2dc80ac93f talk to new python script to interface with relay
So far uses curl and json-c to send b64-encoded data to new script
which is able to echo the data. Next that script will need to open a
UDP socket to the relay and return results that appear before timeout.
2017-10-17 21:32:11 -07:00
Andreas Kleinert
b7c72dd1e6 Translated using Weblate (German)
Currently translated at 8.4% (62 of 738 strings)
2017-10-17 20:45:54 +02:00
Eric House
6b0fe35c8f use readFully() rather than read()
readFully() blocks; read() can return with less than you expect.
2017-10-16 22:12:35 -07:00
Eric House
927c4f12a0 make tap on thumbnail select/deselect
Working around there being a border around the game-type image area.
With this change long-tapping works only on the right 2/3 of the
region. There might be a fix, but it's still better than there being
a hole (the border) in the thing where behavior's different.
2017-10-14 14:31:41 -07:00
Eric House
fd3220c1c2 Merge branch 'android_branch' of github.com:eehouse/xwords into android_branch 2017-10-12 21:15:08 -07:00
Eric House
1e38069b94 update script seen by those without the app installed 2017-10-12 21:14:07 -07:00
Eric House
0a774625a1 cleanup 2017-10-10 20:17:36 -07:00
Eric House
c9a86a23e0 remove GCM-related receiver from shared manifest
Duh. The .java file was removed, but the declaration that all apps can
handle an intent (that requires WakeLock they no longer all have) was
not. Should fix crashes I'm seeing.
2017-09-28 20:02:05 -07:00
Eric House
bbffe4caf1 Add assert prior to removing dead (?) code
There should no longer be a need for curThis(), but let's confim by
asserting for a while.
2017-09-28 06:51:59 -07:00
Eric House
a3bf942004 fix assertion by not handling Action
Was wrong to assert that unexpected Actions never arrived.
2017-09-28 06:51:24 -07:00
Eric House
79e852a9eb change ID of duplicate menu
Board and Games List were using same menuid which meant that even when
chosen from Board's menu it would up getting handled by GamesList (in
dual-pane mode.)
2017-09-28 06:50:16 -07:00
Eric House
d3b9a98518 fix to serve the oldest release newer than current
Removing hard-coded list of release .apks in favor of picking them from
the file system based on version code reported by aapt.
2017-09-27 20:39:58 -07:00
Eric House
7b691dfd2f offer to hide buttons when invoked from action bar 2017-09-26 07:34:54 -07:00
Eric House
604119f99b stub out GCMIntentService for d variant
Somehow the d variant was crashing without the WAKELOCK permission, the
OS having invokes something GCM-related. This should ensure nothing
GCM-related can ever happen.
2017-09-26 07:01:55 -07:00
Eric House
6fa01eb971 move GCM-related permissions into new manifest
Create an AndroidManifest.xml specific for the xw4 variant, and move the
GCM-related permissions (including WakeLock) into it.
2017-09-25 06:17:44 -07:00
Eric House
fd7f564e11 add debug menu to copy git info to clipboard
Makes it easier to find out what the diffs were.
2017-09-24 14:40:31 -07:00
Eric House
096aa3bd0f make GCM_SENDER_ID empty for xw4d variant build
This seems to fix that app, when built by me where GCM_SENDER_ID's set
in the environment, being a battery hog. Apparently google's code
doesn't handle being passed the wrong senderID very well.
2017-09-24 14:30:59 -07:00
Eric House
9bdf43a89e remove duplicated BuildConfig entry 2017-09-22 06:55:02 -07:00
Eric House
5dc9327d31 record current git-diff in assets 2017-09-22 06:46:19 -07:00
Eric House
592a6429d4 up changelog and version strings 2017-09-20 06:40:42 -07:00
Eric House
39efbaa7f5 fix timer-draw NPE due to race condition
use runOnUiThread()....
2017-09-19 22:09:57 -07:00
Eric House
a328221b63 up version codes for new release
I somehow screwed up the last release, but google got the apk so
requires me to change the version number.
2017-09-19 07:46:17 -07:00
Eric House
dc29321b28 change strings for new release 2017-09-13 08:06:08 -07:00
Eric House
e98c25a81a fix crash by removing assert I didn't need
Looks like what I was worried about wasn't an issue.
2017-09-13 07:39:07 -07:00
Eric House
ae25c6e014 fix list item breakage: no inputType for TextView
I'd added inputType="text" everywhere I added maxLines="1" but it turns
out that breaks touches being handled at least on some devices. And it
makes no sense to have an inputType for something user can't put into.
2017-09-12 07:56:40 -07:00
Eric House
058d3a7828 try to fix travis: copy over .enc file 2017-09-11 06:47:59 -07:00
Eric House
8efd608ac2 fold in (as diff, not merge) travis config 2017-09-11 06:16:47 -07:00
Eric House
54997f6db2 more EditText fixing 2017-09-07 07:51:57 -07:00
Eric House
2de54a2535 fix script for a gradle world 2017-09-07 07:45:33 -07:00
Eric House
d87a1ca7a8 fix EditText so monkey can't abuse it
Several EditText fields are configured so monkey breaks things, e.g. by
entering too much text in the default player name config. Fix. This
probably won't impact users but it lets the monkey tests move on to
other things that might.
2017-09-07 07:36:16 -07:00
Eric House
f161de2977 make menu consistent 2017-09-07 06:15:17 -07:00
Eric House
1ee5afd5cf add inputType=text to singleline EditTexts
Turns out the maxLine="1" thing needs this accompaniment or it'll let
you add carriage returns, as adb monkey found.
2017-09-07 06:13:14 -07:00
Weblate
11368df086 Merge remote-tracking branch 'origin/android_translate' into android_translate 2017-09-06 11:49:19 +02:00
Eric House
6866887438 include last commit in change notes 2017-09-05 19:23:21 -07:00
Eric House
8971837d22 fix crash on Samsung Galaxy Note 3 running 4.4
Can't repro on Nexus emulator running 4.4 nor on Samsung running 4.4.4,
but the reporter says this fixes it. And from reading it appears
expecting older devices to load Material themes without an AppCompat
library is wrong.
2017-09-05 19:17:02 -07:00
Eric House
f5e66463f9 up release strings for new version 2017-09-03 14:15:43 -07:00
naofum
406ffca333 Translated using Weblate (Japanese)
Currently translated at 73.8% (545 of 738 strings)
2017-09-03 14:15:26 -07:00
Eric House
51ca1777e2 make the have-chat icon green 2017-09-03 13:28:37 -07:00
Eric House
4549c397ae cleanup
don't check standalone games for chat messages
2017-09-03 10:38:54 -07:00
Eric House
2735144515 mark games with unread chat 2017-09-02 12:12:39 -07:00
Eric House
2616891608 remove/replace deprecated singleLine element 2017-09-02 12:12:39 -07:00
Eric House
a10dd6a314 make game sort order clearer and easier to modify
For the ORDER BY clause that governs how games are displayed within a
group, use a static string built from a list of clauses that are then
easy to move up and down. Add clause that moves games with unread chat
to the top. Another commit will modify the display so it's clear why
it's there.
2017-09-02 12:12:39 -07:00
Eric House
5ed9d2c6aa remove dead code 2017-09-02 11:24:58 -07:00
Eric House
1c3b5564b5 use same red/green for expiry as for net status
Slightly less glaring; slightly more consistency.
2017-09-01 08:12:38 -07:00
Eric House
e97dd26e6f fix missing "game in room NNNN" in games list
Looks like sometimes the TextField was GONE
2017-08-31 21:21:54 -07:00
Bernard Massot
e24f7bdba8 Translated using Weblate (French)
Currently translated at 91.1% (673 of 738 strings)
2017-08-31 21:21:54 -07:00
Eric House
a6d8708abc sort unconnected games to top of list 2017-08-31 20:07:40 -07:00
naofum
ecbfcb674c Translated using Weblate (Japanese)
Currently translated at 73.8% (545 of 738 strings)
2017-08-31 03:46:35 +02:00
Eric House
586899891d Merge remote-tracking branch 'weblate/android_translate' into android_translate 2017-08-30 07:22:36 -07:00
Eric House
79b0d38c0c tweak changelog 2017-08-30 06:30:25 -07:00
Eric House
8489d1401f only try to put up Wait/Invite alert once
Bring back the test for being null, and add an additional one via a new
boolean iVar that we haven't tried posting it already. On some devices
there's enough of a lag that the is-null test passes several times
before the first makeDialog() call, leading to a cascade of attempts to
create that hangs the UI. The test's needed, but only once should be
start the process.
2017-08-29 07:33:15 -07:00
Eric House
077159b8c4 save commitID in instanceState
When the back stack is restored commit() is not called, so the fragment
needs to save it. Without this 0 is passed to popBackStack() and
everything's dismissed, not just the one fragment.
2017-08-29 07:31:37 -07:00
Eric House
741dbf2bed fix finish() to close a specific fragment
Rather than just pop whatever's on top of the back stack, which might be
the alert whose listener called finish(), use saved commit() ids to pop
down to the fragment itself. This feels like a risky change, and it's
tested only by back-button-dismissing the Wait alert in an unconnected
game in BoardDelegate, so needs some bake time.
2017-08-29 07:10:04 -07:00
Eric House
bb4c5502c8 save commit id in fragment 2017-08-29 07:03:52 -07:00
Eric House
270df00692 use new API to offer to hide buttons
When SDK >= 19 there's an API to tell if a listview is full enough to
require scrolling. So use that, rather than the raw count of games, to
decide whether to offer new users to hide the new game buttons.
2017-08-28 07:12:10 -07:00
Eric House
db658edc67 don't add to queue once it's stopped
No point in adding something if we're not going to process it.
2017-08-28 07:06:57 -07:00
Eric House
671d345377 remove most of xw4dbg's AndroidManifest.xml
What's here is merged with the main one, so no point in duplicating and
it's just a pain to maintain. Remove as much as possible that's not
unique to the debug variant (crashlytics and wifidirect, basically.)
2017-08-27 15:55:31 -07:00
Eric House
58f828c187 up version strings and changelog 2017-08-27 15:49:57 -07:00
Eric House
54be99b635 remove logging 2017-08-27 15:49:35 -07:00
Eric House
5914ad8a1d include ActionPair in serialization of DlgState
Oops. Debug build assertion showed I was leaving an infrequently used
field out of serialization, adn then required that that object be
Serializable and implement equals() to pass more tests.
2017-08-27 11:40:26 -07:00
Eric House
9231224eea explicitly use Theme.Material as app theme
Fixed Samsung having made a white actionbar default and so my menubar
icons becoming invisible.
2017-08-27 10:12:37 -07:00
Bernard Massot
2e73a4277b Translated using Weblate (French)
Currently translated at 91.1% (673 of 738 strings)
2017-08-27 12:45:42 +02:00
Eric House
ff415640fd sync variants' AndroidManifest.xml files 2017-08-26 11:02:27 -07:00
Eric House
24a38c8f46 cleanup connection status display text
Get rid of treating 0 as a legit date (1970 being illegit). Tweak
formatting. It's not perfect, but few people see it so we'll see how it
goes during development.
2017-08-24 06:58:53 -07:00
Eric House
1a36f3286b ignore generated files 2017-08-22 07:52:15 -07:00
Eric House
33f80fbefd up version strings for new release 2017-08-16 07:34:03 -07:00
Eric House
f7d4d6b637 sort by versionCode, then by file age
revert a bit, dropping use of git revision and repo to provide an
order. Instead use aapt (which is an ubuntu package now) to pull the
version code and appID from .apk files, order by versionCode, and
secondarily by file mod time.
2017-08-16 07:29:17 -07:00
Eric House
19c7543eb3 make finding most recent apk based on git revision
Auto-update was based on my manually setting what the newest is. Better
to use the git revision stored in the .apk, or failing that (later) in
the file name, to determine "age". This is all based on forcing a linear
order on git commits, but at least at the granularity of releases that
should be ok.
2017-08-14 22:40:07 -07:00
Eric House
bb846060e9 always add "self" choice to invite-by-relay-id list
Poorly integrated: you can delete it only to have it come back, but
send-to-self is just a debugging thing anyway.
2017-08-14 07:52:18 -07:00
Eric House
f795ae6de6 use same string for both download menuitems
Mistake was putting "download more languages" at the bottom of list of
wordlists in one language. Having separate strings is a bigger change,
and in context just "Download more" works in both cases. Change name of
string so translators will notice.
2017-08-14 07:18:16 -07:00
Eric House
eb34294679 fix failure to create game after downloading dict
Wasn't setting the necessary iVar...
2017-08-14 06:49:05 -07:00
Eric House
af48fb850d update strings for new release 2017-08-13 19:37:29 -07:00
Eric House
2f6c6b0644 fix ClassCastException: 0 isn't a long; 0L is 2017-08-13 12:59:58 -07:00
Eric House
ae86378bcd don't assert on DEBUG: too frequent
I need to fix this, but crashing all the time isn't the answer.
2017-08-11 06:25:25 -07:00
Eric House
ddfa3a567f Merge remote-tracking branch 'weblate/android_translate' into android_branch 2017-08-08 21:57:04 -07:00
Eric House
ba8a5ceeb6 up version for new release 2017-08-07 21:48:50 -07:00
Eric House
635fbed719 catch and drop illegal state exception
By inspection based on report to Play store.
2017-08-06 14:08:33 -07:00
Eric House
93a8aa77bf fix NPE
It might make sense to have default value of m_params be 0-length
array....
2017-08-03 07:13:32 -07:00
Eric House
6cee0c5bca check that all params are serializable
DEBUG builds only.
2017-08-02 07:20:48 -07:00
Eric House
455b6e79f0 use TextUtils.equals in new equals() overrides 2017-08-02 07:09:38 -07:00
Eric House
4ec930d53c fix array out-of-bounds exception 2017-08-01 22:22:44 -07:00
Eric House
bb367acab3 don't pass unserializable in params[]
Was, in rarely seen case, passing an object that couldn't be
serialized. Instead pass a few of its constituents than can, and
reconstitute using them.
2017-08-01 22:21:47 -07:00
Eric House
62dd6c12f7 remove unnecessary parameter 2017-08-01 22:03:47 -07:00
Eric House
c927dbef54 fix equals() implementation 2017-08-01 21:37:02 -07:00
Eric House
9a394b2541 comment out code with RELAYINVITE_SUPPORTED
Relay-invite code may never be released, so wrap it in compile-time test
that'll get it stripped.
2017-08-01 07:33:37 -07:00
Eric House
101c2ff8f2 fix problems with params[] serialization
Was passing through DlgState params a number of classes that weren't
serializable or that didn't have equals() methods required for DEBUG
assertions to pass. Added versions of equals() that just call super in
non-DEBUG case since it's a lot of code and isn't required except for
testing. (Serialization of course is.)
2017-08-01 07:28:17 -07:00
Eric House
d55d9573e4 fix some bundling/serialization problems
Now that params[] are being bundled all objects passed that way must be
serializeable. And as long as I'm asserting bundle success using
equals() the objects being serialized must implement it.
2017-07-29 20:59:00 -07:00
Eric House
80cc12fc79 up version strings and change list for new release 2017-07-29 20:21:23 -07:00
Eric House
e2c46963d8 fix crash (by inspection) with complete parcel save
I wasn't saving/restoring params[] Object array with DlgState, and under
circumstances I can't reproduce that could cause a null object
dereference I was via the Play store. So added a test case that failed
for DlgState instances that have non-null params arrays, and fixed that.
2017-07-28 07:37:57 -07:00
Dener Luiz da Silva
af7cf8edc0 Translated using Weblate (Portuguese)
Currently translated at 53.7% (396 of 737 strings)
2017-07-26 21:46:17 +02:00
Eric House
ca93f808f3 change invite alert track/dismiss logic
Attempt to fix invite alert sticking around after game connection
finishes, which resulted from the variable pointing to the alert having
been set to null. So stop setting it in onDismiss listener. I think
trying to track it via an iVar is a mistake, that dismiss by tag or
somesuch is the right way to go. But my dialog fragment code isn't up to
that yet.
2017-07-26 07:21:27 -07:00
Eric House
c6a72b63ee make relay invite record editable 2017-07-25 07:48:54 -07:00
Eric House
32c6a5e114 don't enable remove button when nothing's checked
Copy from SMS inviter code. Really should be moving that into the
superclass.
2017-07-23 17:50:47 -07:00
Eric House
a71d60db63 implement deletion; save with new serialization util
Add new Utils methods that turn Serializable objects into B64-encoded
Strings, and vice versa. Use in place of existing code, and use anew to
store the array of DeviceID records. Implement the "Delete checked" button.
2017-07-23 17:31:59 -07:00
Eric House
7eb9458a78 get invite-by-relayid working again
In Dbg version only (with enabling boolean moved to BuildConfig.)
Currently crashes when first used, and recipient can't always connect to
relay until app rebooted. And of course there are still open questions
like how to populate the list -- how user learns the deviceID of an
opponent.
2017-07-23 16:45:14 -07:00
Eric House
41529a584c add recent changes to changelog 2017-07-19 06:35:26 -07:00
Eric House
d057de0fd3 add comment reminder of proguard problem 2017-07-19 06:27:56 -07:00
Eric House
72c624b251 track resends for each comms type
Was previously a "global" so that a resend over SMS might delay a resend
for relay games. Since communication problems tend to be
comms-type-specific that's dumb.
2017-07-19 06:26:11 -07:00
Eric House
52a1ccd4dc tweak comments 2017-07-19 06:16:22 -07:00
Eric House
64014944f3 finish: using java's base64 en/decoder from java
Added a wrapper function since for compatibility with the jni's encoding
the flags matter and need to be the same everywhere. Or at least there
should be no chance of their getting changed.
2017-07-13 07:40:28 -07:00
Eric House
94dca807ef use a singlton rather than one Time per object
De-serializing a Time formatter wasn't going well post-proguard, but it
was a dumb way to do it anyway when only one object is needed.
2017-07-13 07:20:24 -07:00
Eric House
fb91ba8608 fix (by inspection) store-reported NPE 2017-07-12 08:14:42 -07:00
Eric House
4f989c7a3e start using built-in base64 stuff
As a first step, use mine and android's and assert results are the
same. Note using built-in Base64 class requires moving the min android
version from 7 to 8.
2017-07-12 08:02:52 -07:00
Eric House
589929b3b2 enable proguard for debug builds
Copy config file into the right place, turn it on for debug builds, and
fix compile-time complaints by adding -keep clauses. Resulting builds
seem to work (after a few minutes in emulator only) except that net
status icon taps crash at first (eventually recovering somehow) likely
because of problems with base64 en/decoding which goes through jni.
2017-07-12 07:16:57 -07:00
Eric House
75488aefc0 use same SMS resend backoff for debug as release 2017-07-10 06:51:45 -07:00
Eric House
c8beefaafe tweak network status icon
Get rid of black background of center icon, instead running the green or
red all the way to the middle. For better contrast make the green and
red darker and the non-active arrows white.
2017-07-10 06:49:02 -07:00
Eric House
924dc1b37f remove assert
Looks like my theory was right. Logging is more than enough.
2017-07-05 07:53:41 -07:00
Eric House
15f50dc82a fix game config for rotation and connvia changes
The debug-only settings for disabling individual conn types weren't
kept in sync with which types were enabled, and that set of types was
lost on rotation. Fixed (including keeping the disableds across rotations.)
2017-06-30 06:34:24 -07:00
Eric House
b9d6b05d87 tweak logging 2017-06-29 07:28:15 -07:00
Eric House
d6bbccb773 let caller deal with result of message resend
Use a new interface to let caller of resendAllIf() know how many
messages were resent. If none, a new timer might not be called for.
2017-06-28 08:24:33 -07:00
Eric House
33838e6a14 don't crash when crashlytics didn't get built in correctly 2017-06-27 07:34:04 -07:00
Eric House
d454ffb3e8 up changelog/strings for release 2017-06-22 07:12:51 -07:00
Eric House
4e101862a6 get rid of old standin for missing contact name
Since it's now possible to add a name for an SMS contact added manually,
don't assuming a missing name means it was added manually. Just leave
blank if not provided.
2017-06-21 07:59:22 -07:00
Eric House
e3e7add5a9 fix (I hope) script for harvesting jni sigs
I made these changes a while ago then stashed them. They worked when I
needed them then, and seem to work now, but I haven't verified now so
don't trust 'em too far. :-)
2017-06-20 22:05:39 -07:00
Eric House
a16cc8e648 replace Crittercism with Crashlytics, suckily
Crittercism is dropping free support of FOSS apps, so I'm dropping
it. Unfortunatly integration isn't as clean: so far at least I haven't
figured out how to make it possible for others to build the 'd' variant,
which includes Crashlytics, without their having a Fabric API key.
2017-06-20 21:48:40 -07:00
Eric House
6de5d307b3 add name field to manual sms contacts entry 2017-06-20 19:35:38 -07:00
Eric House
b33df6b222 reset SMSResend timer on new data only
Resetting it on every ACK etc meant it happened forever at the most
frequent interval, at least on devices that have both sides of a game,
which is my usual test setup.
2017-06-20 19:19:03 -07:00
Eric House
e6454070a6 remove an oft-firing assert
It's definitely happening, and disruptive though debug-only. So remove
to be tracked down eventually.
2017-06-20 19:17:23 -07:00
Eric House
e3a8bef3cb add new param
It's not the case that forcing send and showing UI go together.
2017-06-20 07:49:01 -07:00
Eric House
0b2920102b tweak chat layout; use better timestamp format 2017-06-20 07:47:32 -07:00
Eric House
3aefa3a566 don't make sound/notify on standalone game moves
I'm finding the robot move beeps annoying. If others aren't maybe a
preference would be better. We'll see.
2017-06-16 19:24:04 -07:00
Eric House
7f48267397 save non-destructive changes on "Play game" button
In game config, when the play game button's hit and the changes pending don't
"matter" (require reset), apply them. The motiviation is to allow
setting the "disableds" and immediately launching a game via the button,
but I think it's the right thing to do anyway. Needs testing.
2017-06-16 19:18:30 -07:00
Eric House
7bae112077 add timer to resend sms data messages
Deal with occasional droppage of SMS data messages by running a
timer (via AlarmManager) with backoff that resends any pending moves for
games connected via SMS. Successful receipt of SMS data resets the backoff.
2017-06-16 18:56:22 -07:00
Eric House
0b0a50bd5c add timestamp to chat messages, db and display
On send, add current seconds to message. Store and display in android
code. Display layout needs work.
2017-06-10 11:36:45 -07:00
Eric House
59285aa9f4 cleanup 2017-06-06 05:46:27 -07:00
Eric House
f85f7c41be add cmdline options to generate single-abi .so
Part of getting split builds going. I think.
2017-06-06 05:45:31 -07:00
Eric House
41683f95a7 improve activity lifecycle logging 2017-06-05 07:36:47 -07:00
Eric House
5c893127de remove constants from build.gradle
cleanup, iterating over built-in data rather than my hard-coded VARIANTS
and BUILDS arrays, which now go away. Renamed obj- and libs- directories
to better fit the variables the system provides.
2017-06-01 07:41:51 -07:00
Eric House
f49aac71cf get rid of <a> -- sucks in webview 2017-05-31 20:22:13 -07:00
Eric House
c53616fd82 wrap code in if(DEBUG) 2017-05-27 13:26:57 -07:00
Eric House
9644f40659 add ui for disabling comms send and receive
Add DEBUG-builds-only UI at the bottom of GameConfig for turning on the
comms feature dropping outgoing or incoming messages. The idea's to use
this to reproduce and fix stalls. There's a noticable slowdown opening
the GameConfig fragment, but it should all be no-op in a release build.
2017-05-26 07:49:38 -07:00
Eric House
a815c466c9 up strings for new release 2017-05-25 20:13:00 -07:00
Eric House
7164ab92f6 make FirstRunDialog a DialogFragment
It was disappearing when the device rotated. Using the same
XWDialogFragment mechanism as everything else fixes that.
2017-05-25 19:58:04 -07:00
Eric House
b6665a15c4 double-check to avoid crash (by observation)
Chasing a rare play-store-reported JNI crash: test for a null ptr in C
and assert/test in Java.
2017-05-25 07:10:49 -07:00
Eric House
d584c30a43 fix (by inspection) three Play store crashes
One race condition between BT threads; two edge cases around dialog
fragments, where I've left DEBUG build asserts in place.
2017-05-24 21:27:18 -07:00
Eric House
935932f440 don't try to upgrade fdroid builds
Add BuildConfig boolean that's true when a gradle property is passed in
from the fdroid metadata/build file. Test when putting together upgrade
state and omit app info when it's true, same as if from Play store.
2017-05-24 20:16:07 -07:00
Eric House
d58c601bf3 include git revision in assets/ dir (.gitignore it)
Makes it easier to see what's been built into an apk if the file's name
has changed.
2017-05-24 07:09:11 -07:00
Eric House
340a559eb7 don't report fdroid builds as dirty
F-droid build system modifies git-controlled files so no build will ever
be clean. So look for a -P property and if that's set don't use the
--dirty flag when capturing the git revision. Requires a change to the
fdroid metadata to pass that property.
2017-05-24 06:49:09 -07:00
Eric House
222655ba58 get rid of background for expander buttons
In the gameslist view the expander buttons had a visible rectangular
background. Now that's transparent so they look like the rest.
2017-05-23 19:03:29 -07:00
Eric House
3c650ce762 fix xw4d build (shortening more xw4dbg) 2017-05-23 19:03:29 -07:00
Eric House
acf7097fda sign release apks outside of gradle
My sign-inside-gradle is an uncommon trick and unnecessary. Better to
follow the old convention of using jarsigner and zipalign.
2017-05-23 19:03:19 -07:00
Eric House
ef2da21bbe xw4dbg -> xw4d: tired of typing the extra letters
Rename the debug variant and make it work. appID stays the same and so
no longer matches. Gradle allows that.
2017-05-23 06:37:31 -07:00
Eric House
4ad7e171f6 keep db open throughout
Years back what I read said you opened and closed the database around
every query. Now I'm reading differently, that the OS will close it for
you on app shutdown and that it's ok to just leave it open. Trying
that after a few minutes on one device looks ok. Will need to test the
heck out of it, especially on older OS versions, before ship.
2017-05-18 21:20:21 -07:00
Eric House
8a4563e8ee up version strings 2017-05-18 06:53:03 -07:00
Eric House
a834a8170a catch IllegalStateException
Play store reports crashes but stack crawl doesn't tell me where
from. So try catching the exception and on debug builds logging what
dialog is responsible.
2017-05-18 06:37:58 -07:00
Eric House
7f4d8b1a44 remove firing assertion (per Play store)
Looks like clock skew or maybe even a timezone issue (I'm not doing
enough research :-) is causing an assert. Just drop the notification
instead.
2017-05-18 06:19:25 -07:00
Eric House
098de83b04 fix assertion: don't pass bundle as alert param
it's not serializable, and more's the point is already being saved
across rotations in the delegate, so just use that.
2017-05-09 07:02:12 -07:00
Eric House
a6d5f409cb include translations in changelog 2017-05-08 20:47:08 -07:00
Eric House
055f54611d catch NPE Play console reports thrown by OS
No clue why this might be happening, but perhaps catching and dropping
will prevent a bad user experience?
2017-05-07 17:06:26 -07:00
Eric House
c3bfbfb956 up version strings and changelog for release 2017-05-07 16:27:40 -07:00
Eric House
f8077785bc cleanup: remove comments and unnecessary ivar 2017-05-07 16:25:18 -07:00
Eric House
9b88279212 remove need for file
app_name.xml's contents are in generated file, so just use that. Saves a
change on each release.
2017-05-07 16:05:36 -07:00
Eric House
c637fd1eee remove not-again explanation for public rooms
When those became an advanced feature I added a warning for upgrading
players who'd miss them. That was long ago, and the warning was only
supposed to last a release or two.
2017-05-06 21:05:42 -07:00
Eric House
579a7ae5cb change emacs compile-command for java files (generated) 2017-05-06 20:59:17 -07:00
Eric House
3c2d36c5d4 Merge branch 'android_branch' into android_translate 2017-05-05 07:20:36 -07:00
Eric House
309622b592 put back a couple of words -- not dirty! 2017-05-05 06:48:52 -07:00
Eric House
252db56bba update English wordlists to bowdlerized 2017-05-04 22:48:15 -07:00
Eric House
ed781b36b5 remove dismissDialog() and removeDialog()
One's a no-op the one place it was used, and the other's not used at all
2017-05-03 07:10:26 -07:00
Eric House
77a5d9c217 remove onConfigurationChanged(); no longer called
Removing from AndroidManifest meant the overridden method is no longer
called, so remove it and the code it calls.
2017-05-03 07:01:21 -07:00
Eric House
14dd3b4950 remove one-release-only explanation
Stuff explaining change only makes sense the first release after it's
added. So remove.
2017-05-03 06:53:39 -07:00
Eric House
c6d3870365 remove dead file 2017-05-03 06:51:16 -07:00
naofum
41f8072182 Translated using Weblate (Japanese)
Currently translated at 74.4% (549 of 737 strings)
2017-05-02 12:45:40 +02:00
Eric House
8588756556 fix assertion fail
It's legit for makeDialog() to fail when e.g. committing a turn while
board and chat are visible. So remove assertion.
2017-05-01 07:37:18 -07:00
Bernard Massot
2d3c8f799b Translated using Weblate (French)
Currently translated at 89.0% (656 of 737 strings)
2017-04-30 21:44:59 +02:00
Eric House
f18b3c61bf cleanup: get rid of old dialog stuff
showDialog() goes away except for PrefsActivity which can't do
fragments. Move stuff required by PrefsDelegate into it from
DelegateBase since no other subclasses does old-style Dialogs
any more. Remove a bunch of stuff from DlgDelegate, e.g. saving
state, that no longer gets used.
2017-04-27 21:37:48 -07:00
Eric House
a1c92b6957 cleanup from review of changes 2017-04-27 21:37:27 -07:00
Eric House
6caff930e7 Merge branch 'android_branch' into android_translate 2017-04-26 19:18:50 -07:00
Eric House
7a64b6066f Merge branch 'android_translate' of git://git.weblate.org/xwords into android_translate 2017-04-26 19:16:56 -07:00
Eric House
c3f0ed692c more useful log statement 2017-04-26 06:35:48 -07:00
Eric House
6fbb701dbe post from activityResult to avoid transaction error
Was getting crash with "Can not perform this action after
onSaveInstanceState". This lets the back stack get back into shape so it
can put up another alert.
2017-04-25 07:37:12 -07:00
Eric House
52ea395ad6 put invite/wait alert on back stack
Add to DldID the ability to specify whether dialog fragments bearing
that id go on the back stack. Set INVITE alerts (only) to use that
mechanism. Having them on the back stack seems to be required by their
buttons being hacked to not dismiss them, which in turn is required
because I want them to stick around underneath other alerts their
buttons launch.
2017-04-20 22:06:49 -07:00
Eric House
e12c303f0c fix NPE 2017-04-20 07:19:06 -07:00
Eric House
3dd5ac34fd don't [re]show rematch alert on rotation
on onCreate() test for bundle being null, and only in that case put up
the alert. Keeps it from piling up on rotations.
2017-04-19 21:24:00 -07:00
Eric House
97c459d708 fix format exception in logging 2017-04-19 07:15:21 -07:00
Eric House
22e0c9f1b1 fix assertion by running on ui thread
And since all calls to showDialogFragment do that now no need to wrap calls.
2017-04-18 07:48:52 -07:00
Eric House
2453de0128 consolidate dual-pane settings
Get rid of explicit enable-dualpane boolean pref, instead relying on the
three way default/force-phone/force-tablet pref. Offer to change that
rather than the former in BoardDelegate when run on upgrade. Move the
prefs setting from Debug to Appearance since it's "real" now.
2017-04-18 07:26:45 -07:00
Eric House
f88b438a81 get rid of configChanges altogether
Recent recommendations are not to attempt to handle it myself, so don't
and we'll see how it goes. And unify notions of tablet and enabling
dual-pane: a device that isn't dual-pane should not be using the new
single-activity stuff at all.
2017-04-18 06:47:53 -07:00
Eric House
269fceddf2 cleanup around posting alerts; skip back-stack
Had to disable use of the back-stack for DialogFragments, though that
means I can't prevent duplicates from stacking up (esp. in the
pathological robot-vs-robot case, but also just when I rotate the device
while a "rematch" alert is up.) The problem seems to be in dismiss
actions being handled too late. One easy-to-duplicate case is the
tile-picker. When it's enabled and you commit a turn I post first the
confirmation and then, in response to a "yes", the picker. But the
picker gets added to the stack moments before the confirmation is
removed, and it's the nature of stack removal that everything above
what's being removed gets pulled too. So you never see the
picker. Simply post()ing a runnable to put the picker up later fixes
this one case, but a similar trick doesn't work elsewhere, so I'm
punting until I have time to root-cause the problem.
2017-04-13 08:18:07 -07:00
Eric House
3bff16193a ignore more stuff 2017-04-13 08:05:56 -07:00
Eric House
5bbfd44333 try to dismiss duplicate alerts
Each alert gets a unique name. Add to backstack, and before doing so
look for another with the same name and dismiss it. This works most of
the time, especially to prevent them from piling up with orientation
changes. But in a robot-vs-robot game, and occasionally in a game with
three robots and one not, SCORE alerts stack up. It's the removal that's
failing, not the test for a duplicate, so perhaps I need to somehow wait
for it to succeed before adding the new alert.
2017-04-12 07:37:53 -07:00
Eric House
fdd1e5c148 fix NPE in new logging code 2017-04-10 20:33:25 -07:00
Eric House
cbac691be3 fix crash on old (2.3) devices
Was already using the safe test for wifidirect everywhere else...
2017-04-10 20:32:11 -07:00
Eric House
c774780730 don't display info about disabling when disabled 2017-04-10 06:56:09 -07:00
Eric House
6c5ab3ff1a tweak changelog order 2017-04-08 14:36:30 -07:00
Eric House
f33488f020 fix release builds
Gradle'd changed the name of one of the signing-related tasks.
2017-04-08 14:29:07 -07:00
Eric House
32c264cc16 cleanup: got confused by two separated hide tests 2017-04-08 14:09:34 -07:00
Eric House
0e90286d92 tweak tile-picker alert titles 2017-04-08 13:45:42 -07:00
Eric House
832b3adfd2 cleanup; fail safely
Remove or fix some logging; in a case that rarely shows a NPE check
first but only assert on debug builds. Fail silently on release builds.
2017-04-08 13:15:24 -07:00
Eric House
4668beee78 reveal timer start field if timer's enabled
Rotation was hiding it once enabled.
2017-04-08 12:20:20 -07:00
Eric House
5b7559c223 debug-build-only logging of pane order
I'm seeing infrequent switching of panes' ordering when
rotating. Logging them hoping to see if it's in the layout or elsewhere.
2017-04-08 12:11:53 -07:00
Eric House
b07fd2699c remove incorrect assertion
DELETE_DICT Action is expected to flow through child, at least until I
fix to disable deleting a dict while it's open in the dict browser. It
may be confusing but with the assert gone does no harm.
2017-04-08 11:40:54 -07:00
Eric House
1f3d1cbb79 make force-tablet debug pref a three-way
Rather than force/don't, which doesn't let tablets force themselves to
be phones, allow choice between OS default and forcing either way.
2017-04-08 11:04:45 -07:00
Eric House
32140ff4e5 ignore generated files and build files 2017-04-08 11:04:23 -07:00
Eric House
7717272f68 Capitalize the W: Crosswords -> CrossWords
Too much confusion with crossword puzzle apps
2017-04-08 10:08:18 -07:00
Eric House
8ec48bfee8 fix typo 2017-04-08 09:26:09 -07:00
Eric House
ac932758b2 remove unused strings
fix script to search in new location and remove the strings it flags.
2017-04-07 00:58:59 -07:00
Eric House
d9944252f6 cleanup old dialog code
remove some old stuff from pre-dialogfragment dialog handling. What's
left still needs auditing, as I'm not sure whether it can get called.
2017-04-07 00:33:45 -07:00
Eric House
50fe363da9 move notice about new dual-pane feature
Make the default be that it's on, and move the new-feature notice from
app launch to board open, the point where most will see the feature for
the first time. Remove the notify-and-exit thing, which is harder to
make work from the board, instead just posting an alert, if user chooses
to disable, that the setting change takes effect after a restart.
2017-04-07 00:23:37 -07:00
Eric House
b40f938fcb fix dbg variant: remove duplicate from manifest 2017-04-06 21:11:55 -07:00
Eric House
55339b6aaf fix release compile warnings 2017-04-06 07:43:20 -07:00
Eric House
bbae0ab6ed up version strings
Easier to test dualpane upgrade notification with new version in place.

And remove version code from manifest, since it's duplicated in build.gradle.
2017-04-06 07:39:30 -07:00
Eric House
966c48bd57 fix build (forgot new file) 2017-03-28 21:45:03 -07:00
Eric House
c496cf5a1f include room name in games list when pending
I can't send a manual invitation without that information
2017-03-28 07:10:45 -07:00
Eric House
e7d4e93d12 Use Log.? instead of DbgUtils.log? everywhere
Too much trouble switching modes between work and home :-)
2017-03-28 06:54:42 -07:00
Eric House
059bf82392 redo invite/wait alert after invitation sent
Needs to show different text and buttons, so now that it isn't getting
dismissed and rebuilt every time a button's pressed force that process
manually the time it's required.
2017-03-27 07:20:32 -07:00
Eric House
a5d0d02faf pass Context fix NotSerializableException
Backgrounding with Wait/Invite alert up mean serializing something that
included a Context. Fix to pass it instead into methods that need it.
2017-03-27 07:16:13 -07:00
Eric House
e7a2657a91 override onResume not onStart to fix NPE
When game's resumed (brought from background) and Wait alert is up
onStart() is called before getDialog() has a non-null value to
return. onResume() is the place to modify the dialog.
2017-03-27 07:07:05 -07:00
Eric House
58e5145296 another try: make AlertDialog not exit from buttons
Rewrote Wait/Invite alert to use new functionality that allows it to set
its AlertDialog buttons to not exit when tapped. Turns out things are
much simpler when I don't have to hook into all the places my dialog
might need to be put up again.
2017-03-24 19:58:28 -07:00
Eric House
265818725c improve (fix?) invite/wait dialog
Override onCancel() in order to finish when the alert's closed via the
back button. Count the number of alerts and when it drops to 0 (when all
the alerts launched from the invite/wait dialog are gone) put the
invite/wait up again.
2017-03-23 08:45:47 -07:00
Eric House
d9a4783e32 fix NPE
On Nexus 5x rotation with Invite/Wait alert up confuses things, and
eventually gets a NPE. This fixes that, but I still need to fix the
other.
2017-03-21 20:56:37 -07:00
Eric House
26d96136d8 do away with different picker layout for land
Five columns works on both orientation. Six doesn't in landscape. The OS
doesn't let the alerts get all that much wider in that orientation.
2017-03-21 20:44:31 -07:00
Eric House
94a3b22266 rotation hack: dismiss alert before replacing it
I can't figure out how to prevent rotation from duplicating the wait
alert, and don't have the ability to have makeDialog() return null, so
when that happens -- when a second is being created -- dismiss the first
first. And clean up some callbacks made unnecessary by onDismiss().
2017-03-21 20:44:30 -07:00
Eric House
e3c0419e91 fix so unconnected game is never without an alert up
Try to track in local saved state enough, including a count of
sub-alerts the main Invite alert has put up, whether when something's
dismissed the alert should go back up or the game should be
closed (which is the right thing to do when the back button's pressed.)
Hack: setting a variable to null in onSaveInstanceState() then testing
it in an onDismiss() call that happens as part of rotation avoids an
exception when rotation the phone.
2017-03-21 20:44:02 -07:00
Eric House
0467121d3a move saved-state variables into Serializable POJO 2017-03-17 07:30:05 -07:00
Eric House
1ed30c79d0 fix crashing move-games alert
Move most state that needs to be saved in Bundle into a single
Serializable class so adding new is easier. Add to that the current
selected group so we don't crash when nothing's been set. (I think in
the move to DialogFragments I lost the code that would have disabled the
Move button. That's back.)
2017-03-16 21:14:53 -07:00
Eric House
19bfcfc3a2 call super.onSaveInstanceState() last
Move call to end of derived class' method. This may very well be the
solution to a bunch of random crashes logging
"java.lang.IllegalStateException: Can not perform this action after
onSaveInstanceState". Chief suspect is the change in XWActivity.java,
but I'm making it everywhere for consistency's sake: it's a good habit
to get into.
2017-03-15 19:38:57 -07:00
Eric House
df8ebaec06 use six-button bar for landscape orientation 2017-03-15 19:35:49 -07:00
Eric House
006bf2e387 hide pick-face-up checkbox for networked games
And tweak game-config layout
2017-03-15 07:25:54 -07:00
Eric House
4c9c5b3418 tweak picker; fix no-tiles-left case
Minor changes to strings and code for tile picker, and fix bug where
server.c was asking for 0 tiles (because none are left in pool.)
2017-03-15 07:12:40 -07:00
Eric House
364eec3c5c tweak picker layout 2017-03-14 19:55:49 -07:00
Eric House
fc438a4bcf tweaks to tile picker
Fix to auto-exit for blank- but not tray-picking and to not show Del
button for blank case (dumb since we're exiting anyway.)
2017-03-14 19:47:45 -07:00
Eric House
58fc0e9b81 snapshot on the way to working tile picker
New classes implement custom alert and its view, where most of the logic
for putting up one button per tile, hiding and showing buttons based on
what's left, etc. lives. Rough, but works well until rotated, when gets
redrawn without spaces for the buttons that could come back.
2017-03-14 07:23:30 -07:00
Eric House
a804983b8e fix makeIntArray to work for non-32-bit array sources 2017-03-13 19:32:20 -07:00
Eric House
aa4d7e3d97 remove blocking alert stuff
The crazy hack to get around Android's lack of modal dialogs is at long
last gone. Remove semaphore and code that uses it. Will leave the
background thread in place, at least for now, as removing it would be a
huge change.
2017-03-10 08:48:37 -08:00
Eric House
6e5973c55b toward making tile picking work through rotations
Make face-up tile picker util method return void and add mechanism for
passing in selected tiles asynchronously, as has been done recently with
the rest of the once-blocking util callbacks. Works perfectly in the gtk
case. Likely crashes in curses (if picking face-up option is on.) In
java all the callbacks are there but rather than put up a UI we pretend
the user says "pick 'em for me" each time. Putting up a UI is next.
2017-03-09 20:36:14 -08:00
Eric House
70b3aaa263 modify function to be more useful 2017-03-09 19:35:07 -08:00
Eric House
618f9cf20a toward rotation-safe invite dialog
Rewrite the overly-complex invite dialog that's posted when a game opens
and is missing players so that it doesn't crash after an orientation
change. It's still possible to dismiss it yet have the game stay open.
The goal is that a game in that state always has a dialog on top of it
so you don't get confused about e.g. why you don't have tiles, but
there's more work to be done there.

Also added a common superclass for all my DialogFragments. It may be
useful e.g. for having each DelegateBase instance able to track what
dialogs it currently has up, e.g. to have a policy about how many of the
same class can be live. I'm thinking here of how to prevent a
robot-vs-robot game from ending with a stack of 25 move reports. (The
change here is that the old activity.showDialog(int) only allowed one at
a time, and some of my logic takes that for granted.)
2017-03-07 07:48:46 -08:00
Eric House
0980bcfbe5 fix another class cast exception
But this is by inspection and, involving a dialog that is no longer
posted, could probably never occur.
2017-03-07 07:35:16 -08:00
Eric House
9211d6b765 fix class cast exception
Problem with subverting type checking is compile time errors become
runtime...
2017-03-07 07:08:48 -08:00
Eric House
83f7a9cec1 fix dismissal of invite/wait alert
There were multiple places launching it, which in a DialogFragment
world (in the absence of other per-dlg-id controls) means stacked
multiple alerts. And dismissDialog() didn't work. So use a boolean to
prevent more than one being posted and keep a reference to the
DialogFragment behind it in order to be able to call dismiss() on
it. That's the only place I was calling dismissDialog() (other
than the tile-picking stuff which has to be rewritten anyway) so this
little hack is probably ok.

This alert still gets messed up with the screen config changes. Fixing
that is next.
2017-03-01 07:23:50 -08:00
Eric House
5e23d6fc75 remove unused variable 2017-03-01 06:14:35 -08:00
Eric House
b849ad4db3 Merge branch 'android_branch' into rotation_fix 2017-02-27 18:49:57 -08:00
Eric House
d865812002 failing to find an .apk is not an error 2017-02-27 18:31:17 -08:00
Eric House
19a7b7e146 fix assertion: we do handle that case 2017-02-24 09:12:11 -08:00
Eric House
48bd5d7f1d fix posting of dialogfragments from preferences
I can't get preference fragments working in my world (mostly because
nested PreferenceScreens don't open when clicked on and the workarounds
for that are too complex) so next best thing is to fix alerts to work on
top of prefs activity. That involves creating a new transparent activity
that subclasses XWActivity and has a DelegateBase subclass. Launching an
alert is then just a matter of passing DlgState into the new activity
via an Intent, at which point everything Just Works. Button clicks are
returned via an intent as well.
2017-02-24 08:56:31 -08:00
Eric House
70a99b39fb remove dictGone dialog
There's no way to get it invoked. I think that's a bug, but when it
comes back it'll come back in different form.
2017-02-22 22:35:19 -08:00
Eric House
2a4bce4ad1 remove Context ivar from CurGameInfo
It claimed to be Serializable but wasn't: Crash. Now it is.
2017-02-22 22:29:02 -08:00
Eric House
1de838171b make sms enabling alert dialog-fragment-based 2017-02-22 22:11:24 -08:00
Eric House
56dfef828d move launch into PrefsDelegate
Following pattern for most, though may never have dual-pane option.
2017-02-22 07:46:14 -08:00
Eric House
cfd467f7d6 fix class-cast exception 2017-02-21 21:35:35 -08:00
Bernard Massot
c0c2527258 Translated using Weblate (French)
Currently translated at 99.3% (765 of 770 strings)
2017-02-21 12:44:53 +01:00
Eric House
c271202faa make bad phonies alert non-blocking
Continue conversion of alerts that required blocking the JNI thread. Now
board_commitTurn() takes a second boolean indicating whether phonies
found have been approved by user. Common code informs user, and if he
approves client code calls board_commitTurn() again. In case where
turn's lost there's no call to make back, but there's the undesirable
change that if a robot moves next its move will be reported on top of
the turn-lost alert. Ideally new alerts would appear under, not on top
of, those that have not yet been dismissed.
2017-02-20 07:20:19 -08:00
naofum
ba780692e6 Translated using Weblate (Japanese)
Currently translated at 100.0% (770 of 770 strings)
2017-02-19 12:34:43 +01:00
Weblate
380ae5bf1f Merge remote-tracking branch 'origin/android_translate' into android_translate 2017-02-19 06:39:12 +01:00
Eric House
81d428a16d fix crash by adding missing param 2017-02-18 19:20:14 -08:00
Eric House
5f12d1a03b assign faces to blanks asynchronously
Next step in converting util_ methods that required blocking: blank tile
assignment. Now post a query and add a method that the client code can
call when the user's decided. Include enough state (col, row, and
playerNum) so that it's probably pretty safe.
2017-02-18 19:16:32 -08:00
Eric House
ca6edcfc9a make trade and move confirm non-blocking
Probably breaks curses build, but for gtk and Android
turn move and trade confirmation into a two-step process, making
board_commitTurn() non-interactive when called with a second
parameter. The old blocking util methods now return void and it's up to
the client code to interact (on the main thread) then re-call
board_commitTurn() if appropriate.
2017-02-17 08:58:20 -08:00
Eric House
1f2f4506c4 remove unused query option. Less to convert. 2017-02-17 06:30:54 -08:00
Eric House
2a0b21e5e8 make password fetching non-blocking
First attempt to stop blocking the jni thread: instead of returning a
password from a util_ method, have it include enough state that the UI
can return, put up a dialog, and then pass that state and the password
back and have them matched up again. I think this will work for the
remaining blocking Alerts too.
2017-02-17 06:23:44 -08:00
Joan Montané
081fa7b0f3 Translated using Weblate (Catalan)
Currently translated at 92.9% (714 of 768 strings)
2017-02-17 09:44:16 +01:00
Eric House
c088e36113 fix crash; use params
Pass blank-picking params through rather than using instance variables.
2017-02-16 07:59:10 -08:00
Eric House
e631d57e9b convert remaining DelegateBase Alerts
Includes a hack in DBAlert that's required I think because
GameConfigDelegate is launched "for result". onCreateDialog() always
fails after a rotation the first time because GameConfigDelegate isn't
there to have its makeDialog() dispatched to. So it puts up a dummy
alert and then post()s code that is successful in calling makeDialog()
to get an alert from GameConfigDelegate that can replace the
dummy. Nothing shows on the screen on simulator anyway.

The major problem remaining is that blocking alerts in BoardDelegate are
recreated after rotation but the thread that was blocking has been freed
so nothing can be done after the new alert returns. E.g. blank tile
picker will be posted again, user will pick a tile, but the common
code's not in a state to do anything with that choice (which cannot even
be "returned.") Options are to find a way to make the JNIThread survive
the configuration change without unblocking or to rewrite all the common
code to not expect return values from util_ methods.

This commit is not well tested, and diffs don't allow a thorough check
of the conversion of each DlgID type.
2017-02-16 07:25:20 -08:00
Eric House
13adebdc51 support alert onDismiss listener
New way of adding onDismiss listener to DialogFragment-based alerts
required API change to DBAlert and the makeDialog() method.  Fixes
customizing default player name.
2017-02-15 07:28:39 -08:00
Eric House
f5c022bb72 move show(DialogFragment) to XWActivity
First of probably many bugs running new alert changes in
non-dualpane-mode: Activities get to show dialogs too!
2017-02-15 06:44:01 -08:00
Eric House
8e874fa45c fix dispatch of extra actions
Had left out dispatch of "negative" buttons populated from an
ActionPair. Tested for offer to remove redundant new game buttons at
bottom of games list.
2017-02-15 06:37:25 -08:00
Eric House
a526ec6529 new gradle version (recommended by AS) 2017-02-15 06:35:23 -08:00
Eric House
507f6001fa convert another to DialogFragment 2017-02-13 06:09:25 -08:00
Eric House
07da48db73 replace activity.show(dlgID) with fragment-based
For GamesListDelegate only so far, replace calling <activity>.show(int)
to launch an Alert with something producing and showing a
DialogFragment. Replaces passing and saving state inside the
DelegateBase subclass with saving it as part of the fragment's bundle,
and it looks as if a single class will work for nearly all of the alerts
managed by DelegateBase.{onCreateDialog,prepareDialog}(), which will
eventually go away. The beauty is that the implementations of
onCreateDialog and onPrepareDialog remain, but as the body of a new
makeDialog() that's called by the fragment's onCreateView. Less code
changes, but now it's all called every time an alert's created.
2017-02-12 15:33:35 -08:00
Eric House
c66764bd77 make lookup alert fragment-based 2017-02-10 08:41:28 -08:00
Eric House
b69eb30e9c use the recommended pattern for DialogFragment construction
Empty constructors only...
2017-02-10 07:17:53 -08:00
Eric House
8c92f2012e file/class name change 2017-02-10 06:40:56 -08:00
Eric House
92e150bb1e convert confirmThen alert 2017-02-10 06:00:26 -08:00
Eric House
c9bc7b6c49 convert ok-only dialog to fragments 2017-02-10 05:47:17 -08:00
Eric House
a724ef734f add forgotten file 2017-02-10 05:40:18 -08:00
Eric House
e69824ece0 remove Runnable from DlgState
Can't be serializing Runnables, so replace with an Action that's sent
via onPosButton.
2017-02-09 09:08:03 -08:00
Eric House
470ee6eaa4 rebase invite choices alert on fragments
And create a common superclass for alerts coming out of DlgDelegate
2017-02-09 08:14:44 -08:00
Eric House
7c39bf6064 call via activity in common case too 2017-02-09 06:41:38 -08:00
Eric House
939688e3cd change DlgClickNotify methods to return boolean
So dispatching over possible targets can stop when one has handled it.
2017-02-09 06:23:41 -08:00
Eric House
796192380f switch not-again alerts to being fragments
Since associated DlgDelegate instance doesn't survive a rotation, needed
to pipe results through a DlgClickNotify implementation on XWActivity
that then dispatches in the DualpaneDelegate case to all visible
fragments. I hope this turns out to work for all DlgClickNotify
implementations as I switch them over. We'll see.
2017-02-09 06:19:37 -08:00
Eric House
e863cc1a4b experimental on-device log-saving script
Add script that when copied to device and run from 'adb shell' captures
all app and OS logs to file. Next: add code to XWApp.java to copy it
from assets/ and run it on launch.
2017-02-08 07:01:38 -08:00
Eric House
b1f095b56e prevent loading of WiDirService on older android
On 2.3 anyway there's a java.lang.VerifyError trying to load that
class. So wrap the loading in a new class that catches the error and
sets a boolean so subsequent calls don't need it. There are other calls
that could load the class, but they may not be reachable. To be tested.
2017-02-08 06:33:06 -08:00
Eric House
683eb8e14b don't remove alerts in onStop()
Required to fix alerts going away now that orientations are handled by
the OS (which in turn is the preferred way to do things now since not
ALL config changes CAN be handled by the OS.) With this change some
alerts will probably cause crashes during a rotation. Those all need to
be fixed.
2017-02-07 07:04:27 -08:00
Eric House
0e23c191b5 convert About alert to DialogFragment
As a first experiment. Untested on non-dualpane and on older OS
versions.
2017-02-07 07:02:16 -08:00
Eric House
121c35b728 don't expect View to survive a rotation 2017-02-06 19:18:15 -08:00
Eric House
69eee734e2 cleanup: switch on ids rather than test views 2017-02-04 10:28:23 -08:00
Eric House
99664a8360 persist game config state across rotations
Make CurGameInfo serializable, make sure it's updated in onPause, and
then just add it to the bundle. Easy.
2017-02-04 10:12:34 -08:00
Eric House
b050ac5d62 update studylist display when words added
Add listener interface to DBUtils and hook StudyListDelegate into it so
that if a word is added while the list is being displayed the new word
shows up immediately.
2017-02-04 09:40:01 -08:00
Eric House
6eb4a9b09b preserve studylist selection across rotation
As elsewhere, convert to a serializable representation and save it in
instance state.
2017-02-04 09:00:40 -08:00
Eric House
6b565e2fa7 cleanup: remove some logging 2017-02-04 08:53:07 -08:00
Eric House
6270a81bfa config changes to build on different system 2017-02-04 08:12:40 -08:00
Eric House
b0cef99507 preserve wordlist selection and remote info
wordlist browser selection and downloaded info about downloadable
wordlists didn't survive rotation. They do now, the latter as a huge
serialized array. To make selection work I save the keySet() of a
mapping of selected names to the views that represent them. Now the
presence of a key, even if the value is (temporarily) null, signals that
something's selected.
2017-02-02 21:08:22 -08:00
Eric House
3ae2b41ae2 save selected games/groups across rotations 2017-02-01 06:08:33 -08:00
Eric House
ca4b3fd454 fix crash when starting in non-dualpane mode 2017-01-31 21:04:17 -08:00
Eric House
b874d25563 fix iterating over fragments
Old code that didn't rotate properly was meant to associate view IDs
with fragments so I could iterate over them, e.g. to dispatch
intents. To replace that the common superclass of all fragments now
keeps a set of active ones and provides a method that uses that to find
the fragment that owns a view. So I can iterate over fragments based on
the dualcontainer-contained views as before.
2017-01-31 19:46:51 -08:00
Eric House
0fedcf56ab fix remaining fragment view layouts
The layout_width="1" thing is critical!
2017-01-31 08:03:13 -08:00
Eric House
352508b852 start fixing problems with dual-pane
Remove the generated FrameLayout that was breaking restoration after a
config change. Set layout_weight=1 for all fragment root views so they
get half the screen in landscape mode. Remove some code. Problems
remain, first among them that notification intents aren't dispatched correctly.
2017-01-31 07:01:11 -08:00
Eric House
f9cc524028 remove configChanges for MainActivity
Makes it so simply rotating duplicates the grey-screen GamesList problem.
2017-01-28 11:03:33 -08:00
Eric House
afb0c1d3ee disable move when all games already there
When all selected games are starting in the same group and that group is
selected as the move destination, disable the move button.
2017-01-24 07:55:09 -08:00
Eric House
b8e8c176ed don't open group just because added game
A group that's closed stays closed even if a game's added to it. The
change flushed out a bug where the groups cache wasn't being invalided
on a game move, so fix that too.
2017-01-24 06:53:54 -08:00
Bernard Massot
c4e451a768 Translated using Weblate (French)
Currently translated at 99.2% (762 of 768 strings)
2017-01-23 15:44:49 +01:00
Eric House
9cab7d916c fix strings update server file requires
Name file and set internal constant sent to server to use same git rev
string so that the script will correctly identify whether the version I
have is the latest it has available. Fixes server offering to replace
with what I already have.
2017-01-22 16:22:35 -08:00
Eric House
929c4c811b tweak gradle-built apk name 2017-01-22 15:55:31 -08:00
Eric House
83fed4da91 include debug keystore directly
replace symlink silliness ant required with gradle commands to sign
debug builds with the checked-in (local file) debug keystore. Make
it possible for an environment variable to override in case somebody
wants to use his own.
2017-01-22 15:35:02 -08:00
Eric House
15d0f88187 add preference to disable wifi direct
Looks like there are battery drainage issues with the current half-done
implementation, so add option to turn it off. Only takes effect on
restart, and only matters on dbg variant now since it's compile-time
disabled on the main variant.

Also add discovery machine state to ConnState printout, stop running the
machine over and over (likely the battery problem), but add ability to
restart it triggered by the ConnState's "reconnect" button.

Also start persisting the most recently seen set of peers. If service
discovery and not connecting is the problem having these available to
try to connect to on startup might help.
2017-01-22 14:51:21 -08:00
Eric House
b96d44393a add and use boolToStr
Just to make log messages a bit more helpful. Should be no behavior
change, and no change in code generated in release builds.
2017-01-22 14:15:29 -08:00
Eric House
4a93281a2d enable wifidirect in xw4dbg variant
As it was before.... Also log rather than assert a common widir packet
forwarding error.
2017-01-20 07:56:03 -08:00
naofum
704661180d Translated using Weblate (Japanese)
Currently translated at 100.0% (768 of 768 strings)
2017-01-20 15:05:05 +01:00
Eric House
2053b234fa print less during builds 2017-01-19 19:05:10 -08:00
Eric House
eb13ea4291 add the upside-down icons for -dbg flavor 2017-01-19 08:36:27 -08:00
Eric House
9c142dd6e7 add cleanNDK task and separate jnilib dirs
Build different jni code (into different obj and libs directories) for
the different release/debug and xw4/xw4dbg combinations. This works when
only one build is done, but when doing two some later task tries to put
both multiple same-named libraries into the .apk and so fails. I still
think it's worth adding this to keep from using the wrong binary, but
that needs to be fixed.

cleanNDK just nukes all the directories. Easier than invoking build-ndk
clean...
2017-01-19 08:10:16 -08:00
Eric House
43e8c3ea64 fix release script errors and that running it finds 2017-01-19 06:22:24 -08:00
Eric House
f5ebee89da fix duplicate permissions
Merging of AndroidManifest.xml files meant the dbg flavor was getting
its C2D_MESSAGE permission and the main flavor's, which on recent OS
versions meant it couldn't be installed. Use substitution from gradle to
fix.
2017-01-19 06:22:12 -08:00
Eric House
995da3a0b2 remove last from old directories 2017-01-18 19:44:17 -08:00
Eric House
ea3a8b4034 include relay hostname in debug conn status 2017-01-18 19:30:03 -08:00
Eric House
22ca219347 Merge branch 'android_json' into android_branch
Accidentally did a bunch of gradle work on the wrong branch, but it's a
trivial merge as I hadn't done anything else with it yet.
2017-01-18 19:25:58 -08:00
Eric House
8ade997e8c remove the rest of XWords4-dbg 2017-01-18 19:24:59 -08:00
Eric House
9eed2ca608 auto-update emacs compile-command to use gradle 2017-01-18 19:22:32 -08:00
Eric House
1f5ffaa712 more cleanup. Get Crittercism stuff compiling. 2017-01-18 19:03:36 -08:00
Eric House
0d1e22fc83 move wordlists and other assets over 2017-01-18 08:47:33 -08:00
Eric House
aaf153006e move and incorporate localized strings
This will require a reconfig on the weblate side!
2017-01-18 08:44:23 -08:00
Eric House
3ac0039b4d fix jni build. Full .apk now produced.
But it gets confused about downloading wordlists.
2017-01-18 08:33:49 -08:00
Eric House
0750a771c3 move java files and get them to compile 2017-01-18 08:27:48 -08:00
Eric House
f090e86e26 move res files 2017-01-18 07:34:32 -08:00
Eric House
fcdb66eb87 forgot a file 2017-01-18 07:28:19 -08:00
Eric House
49242f78cf more script fixes; move jni code 2017-01-18 07:27:23 -08:00
Eric House
ad5d451ef3 fix image generation 2017-01-18 07:15:08 -08:00
Eric House
451e9e04ab fix path in script 2017-01-18 07:05:18 -08:00
Eric House
612ff0259c move and start processing res .xml files 2017-01-18 07:01:25 -08:00
Eric House
975d114f41 move some gradle files 2017-01-18 06:33:00 -08:00
Eric House
26b4c7da8e log values showing up in the occasional crash 2017-01-09 20:55:14 -08:00
Eric House
084a45296e invalidate menu when board destroyed; shorten rematch name
GamesList menu was in a bad state after a game closed because hadn't
been rebuilt. It's simplest to invalidate it surgically, when the
BoardDelegate notifies that the board's closed, though doing in in
onWindowFocusChanged() might catch more edge cases. We'll see. I want a
low-risk impact right now.
2017-01-09 07:04:58 -08:00
Eric House
8c680b50f7 fix mystery crash on my phone
but not on emulator running same OS version (or close). And in spite of
an exception being thrown the work being done, hiding a preference,
still succeeds. Whatever.
2017-01-08 14:40:18 -08:00
Eric House
fac8c2b943 resend all pending SMS messages on getting permission
Fixes case where user has received invitations but not allowed SMS then
decides to do so. It's a hack giving Perms23 class knowledge of how to
send moves etc. Instead I should be letting interested parties register
for perms-granted events, but that can happen later, and is less
valueable while SMS is the only "dangerous" permission and the only one
that blocks message sends.
2017-01-08 14:23:23 -08:00
Eric House
f41b77b8ee fix conversion of contacts from old format
JSONObject(<string>, null) clears out any existing entry but doesn't add
a new one. So store missing names as "" instead. Not sure how this
worked when I first tested it....
2017-01-08 13:26:29 -08:00
Eric House
8349ffc126 tweak changelog 2017-01-08 13:02:44 -08:00
Eric House
a0fffb3af6 get rid of SMS enabling on Marshmallow and later
My old asking for permission to turn on/off SMS is confusing and adds no
value when the OS separates out permissions and is confusing. So get rid
of it on Marshmallow and later, always returning true from the old API
and hiding the preference in that case.
2017-01-08 12:58:57 -08:00
Eric House
b0105888d0 sort current turn games with oldest at top 2017-01-07 16:20:15 -08:00
Eric House
449860a880 make Dbg variant's icons upside down
The write-red-on-it thing doesn't work for the notify.png file used in
notifications (I think because I can't find a color Android doesn't
strip out.) So use a rotation transform instead. Users will never see
this anyway.
2017-01-07 14:48:31 -08:00
Eric House
4f30a5be71 Merge remote-tracking branch 'weblate/android_translate' into android_branch 2017-01-07 13:15:16 -08:00
Eric House
e842e1a744 use tryGetPerms to replace a bunch of Perms23 crud -- again 2 2017-01-07 12:55:45 -08:00
Eric House
734549668c use tryGetPerms to replace a bunch of Perms23 crud -- again 2017-01-07 12:45:26 -08:00
Eric House
a453676456 use tryGetPerms to replace a bunch of Perms23 crud
This one required allowing passing in a string rather than a res id.
2017-01-07 12:16:59 -08:00
Eric House
6203012db6 use the utility for contacts permission 2017-01-07 10:55:21 -08:00
Eric House
ee81e3e6cc tweak permissions again
Move connection options READ_PHONE_STATE check from ConnViaViewLayout to
GameConfigDelegate and give it a rationale. Preferences stuff can't do
permissions because it can't override onRequestPermissionsResult (base
activity is of wrong class). Should fix that at some point, either by
moving to preference fragments or with a dummy activity to go over the
top.
2017-01-07 10:21:41 -08:00
Eric House
558a20f2db more tweaks around SMS permission
Explicit "ask again" and "skip" buttons in alert showing rationale;
check/ask for permission before sending invitation via SMS; warn each
time SMS-enabled game is opened without permission but allow it to stay
open and if necessary send an invitation.
2017-01-07 08:38:48 -08:00
Eric House
b898637666 close game that has no way to connect
add "close game" button to warning about lack of comms, and do that on
dismiss too. Nothing good can come from having the thing stay open.

Eventually the "close" should turn into "edit" and launch GameConfig on
the game with the comms selector up, but that's hard, as currently the
launch only happens from GamesList and is via
startActivityForResult. Might be easiest to close and send an intent to
GamesList to cause it to launch GameConfig that way. Not for this release.
2017-01-07 07:44:53 -08:00
Eric House
8bf65622b5 fix crash duplicating no-address network game
An edge case, but: doing "new from" on a game without any connection
types crashed because of an assertion in comms that assumed
addr_setType() was being called on zero-initialized flags, which
shouldn't have been a requirement. Pulled that as well as java code that
added RELAY-type connectivity to any game that had none. If a game has
none, leave it that way.
2017-01-07 07:41:38 -08:00
Eric House
86e7142687 split DlgDelegate interface in three
replace dlgButtonClicked() with separate methods for positive and
negative buttons and alert dismissal. I was making too many mistakes
because the old method was getting called twice (e.g. for negative and
then dismissal) and I hadn't needed to differentiate until adding that
new Action. There should be no behavior change with this, but it's
pervasive and replaces some spaghetti.
2017-01-06 07:07:17 -08:00
Andreas Kleinert
6bce7ea64d Translated using Weblate (German)
Currently translated at 8.5% (64 of 746 strings)
2017-01-05 21:44:57 +01:00
Eric House
dc7ed9bfb2 use new utility method 2017-01-05 07:42:21 -08:00
Eric House
46f69607c5 log class in XWFragment lifecycle methods 2017-01-05 07:39:06 -08:00
Eric House
d661f1d050 add another perms request/rationale 2017-01-04 07:10:45 -08:00
Eric House
7c033ccdf1 warn when unpermitted choice made
Let OS ask for STORAGE when user chooses Downloads dict storage option,
but do nothing if it's not granted. Existing code asks again when the
actual move is to done.
2017-01-04 06:46:44 -08:00
Eric House
2eaa3b82e7 inval dicts availability cache when permission changes
Along with cacheing what dicts are where cache the state of STORAGE
permission when the cache was made. If it's changed, invalidate the
cache.
2017-01-03 21:24:42 -08:00
Eric House
b505de5833 don't crash when STORAGE taken away mid-game
If an game's open that uses a wordlist kept in Downloads and permission
is revoked, close cleanly. On re-opening the user will be prompted by
existing code to download again. (Note: not prompted to turn STORAGE
permission back on. It would't be easy to detect that case, and I'm not
spending time helping people who are perverse.)
2017-01-03 21:15:08 -08:00
Eric House
9349e06747 perms: new utility to manage request flow
Add new static method that takes a request, rationale and Action, offers
the rationale if required and then, if user hasn't cancelled, asks for
permission. Eventually the Action is issued with either POSITIVE or
NEGATIVE. Use this to ask for STORAGE when downloading upgrades and
moving wordlists to the downloads area.
2017-01-03 07:25:12 -08:00
Eric House
4f2c67c331 up copyright for new year!!! 2017-01-03 07:11:06 -08:00
Eric House
59c80f8277 add special title to permissions rationale alerts 2016-12-31 16:27:17 -08:00
Eric House
8c7e1646fa get permission before downloading
Trying to download an update, and likely a wordlist, fails if STORAGE
permission isn't acquired first.
2016-12-31 15:56:24 -08:00
Eric House
503ea46ca5 fix crash rematching SMS without PHONE permission
You need PHONE permission to start and play an SMS game but not to have
started it in response to an invitation. But to rematch you need it. So
ask, including offering a rationale that differs depending on whether
there's a way for the game to communicate once SMS is removed.
2016-12-31 15:05:39 -08:00
Eric House
a24b3396b3 save rematch info across orientation changes
(and the os restarting us because a permission was changed while we're in
background.)
2016-12-31 14:31:20 -08:00
Eric House
6a363dbbd7 up revision number; new release required 2016-12-31 14:21:32 -08:00
Eric House
4990d31eda fix assertion on emulator 2016-12-31 14:21:00 -08:00
Eric House
f88ac1a9d0 another changelog tweak 2016-12-30 20:38:24 -08:00
Eric House
5260c3de90 catch -dbg build up with SDK 23 2016-12-30 20:12:23 -08:00
Eric House
250f4b0139 get rid of raw-string toast error messages
They were hacks for debugging SMS early on, probably infrequently
seen. Instead post messages. BUT: they aren't being received because of
how listeners get cleared in onPause(). Needs to be fixed, but there's
no harm in having them dangle for now.
2016-12-30 20:11:02 -08:00
Eric House
62aabc8cbc replace %{d,s} in german strings 2016-12-30 19:44:41 -08:00
Eric House
04a39f9251 force re-layout of board when toolbar populated
Sometimes when a new game is created the board winds up with the toolbar
drawn over the tray. That's because when it was laid out the game wasn't
running yet and so none of the toolbar buttons was enabled, giving the
toolbar a height of 0. So now the first time the updated toolbar reports
that at least one button is enabled we force the board to lay itself out
again.
2016-12-30 13:53:18 -08:00
Eric House
f488e727f8 fix invitations!
Little hack to dismiss a game when the invitations dialog was cancelled
broke invitations altogether. Revert that change, and simply check on
getting focus whether all players are present; if they're not, put up
the "invite or wait" dialog. This is a big change, but in 10 minutes of
testing I can't get the wrong thing to happen.
2016-12-30 13:09:51 -08:00
Eric House
ee042ff3cd better test for GSM phone
This one doesn't think a wifi-only tablet can send SMS messages.
2016-12-30 11:40:15 -08:00
Eric House
e5166a62e8 tweak string 2016-12-30 11:02:04 -08:00
Eric House
39828bfaf8 fix problems with localized files
Remove strings that no longer exist in English, add missing "other"
quantities in Japanese (taking a guess from context that it's ok to use
generic counters), and in a couple of languages fix typos in format
specifiers that would have caused crashes.
2016-12-30 11:01:51 -08:00
Eric House
fea31e9e3b fix script checking localized strings
It wasn't even checking all languages. Now it does, lets you specify
which ones if a subset's desired, and differentiates between sets of
format specifiers mismatching in a way that'll cause a
crash (e.g. expecting int in one and string in another) and just having
some missing.
2016-12-30 09:57:33 -08:00
Eric House
83fbbdc3ee fix compile-time warning
Flag has a different name in clang. Debug-only, so no risk.
2016-12-30 06:49:52 -08:00
Eric House
096fff1f4c Merge branch 'android_translate' into android_release 2016-12-30 06:49:06 -08:00
Eric House
f5db80e43f Merge android_translate
merge remote-tracking branch 'weblate/android_translate' into
android_translate
2016-12-30 06:42:14 -08:00
Eric House
7b30a0229a add button to launch BT settings
Let's make it easier to add to the set of available BT devices from the
place where the user sees the need. TODO: update the descriptive text,
but not this release since it'll break existing localizations.
2016-12-30 06:35:45 -08:00
Eric House
74d1967f23 cleanup from code review
Mostly removing TAG where isn't being used in the file, but other tweaks
too, none of which changes executed code.
2016-12-29 21:07:00 -08:00
Eric House
4cdc917cf5 tweak changelog 2016-12-29 17:27:33 -08:00
Eric House
c0784fe8b7 fix crash on Android 2.3
Channel wasn't a thing back then. Catch the ClassNotFound exception and
set the same boolean as when permissions aren't available (in manifest),
which means nothing else tries to run.
2016-12-29 17:17:27 -08:00
Eric House
531f30aae8 cleanup: use import more for new class 2016-12-28 13:52:04 -08:00
Eric House
497567ac2d check items newly imported from contacts
I figure if you just brought it in it's probably to send an invitation
to it, and this is how it worked before the refactoring anyway.
2016-12-27 13:23:39 -08:00
Eric House
0fc528a074 cleanup up logging 2016-12-27 13:22:37 -08:00
Eric House
57c71f4c82 invitations: disable remove when nothing checked
Subclass needs to do this one: overrides tryEnable() to handle its
button-bar buttons.
2016-12-27 11:46:15 -08:00
Eric House
216dc757ad up version strings and changelog for release 2016-12-27 11:17:03 -08:00
Eric House
f989212926 close pending game's board when invite cancelled
Add cancelled notification to invite choices dialog. Look for that in
board delegate and close the game. Makes the inviting experience more
consistent, the goal being that you never look at a game that's missing
players without some intervening dialog preventing you from trying to
play.
2016-12-26 16:06:44 -08:00
Eric House
84e8f0927c invitations cleanup: layout and reinvite
Fix a layout to be centered when one string not displayed. Fix to
pre-check by default the most recent device choice when re-inviting.
2016-12-26 15:21:10 -08:00
Eric House
f9f872695d improve checkbox handling in invite dialogs
Use an array of actual objects rather than indices, and add an equals()
method, so checkbox status can survive changes in the set of available
items and even be reproduced when the objects backing them change (as
happens after a new BT scan finishes.)
2016-12-24 12:51:39 -08:00
Joan Montané
b59d7bc3c9 Translated using Weblate (Catalan)
Currently translated at 70.1% (523 of 746 strings)
2016-12-24 15:44:15 +01:00
Eric House
e945bde663 Merge branch 'android_branch' into android_translate 2016-12-21 08:29:06 -08:00
Eric House
432b738257 wifi: move setting into build.xml
Control whether wifi direct is enabled from build.xml, a file that's
already different for the two variants. The point here is to do a
release with permissions changes but without having to fix everything
wrong with wifi direct.
2016-12-21 08:25:57 -08:00
Eric House
ecdec9cfd8 build system change for sdk version 23 2016-12-21 07:48:19 -08:00
Eric House
68104bcf83 remove logging 2016-12-19 22:21:51 -08:00
Eric House
994de23145 perms: use stored pairs when don't have
If user hasn't granted READ_CONTACTS permission, use the pairing of
numbers/names that's come from Contacts via the SMS invitation dialog.
Sometimes it'll have names for numbers that arrived via invitations. Do
some cleanup while at it to prevent stored BT mac addresses from being
looked up as phone numbers.
2016-12-19 22:11:26 -08:00
Eric House
f8ec19b35c perms: use remove to avoid leak 2016-12-19 21:14:45 -08:00
Eric House
2a1c7de18b permissions: get rid of instance variables
I think the params mechanism for DlgDelegate does the same thing better.
2016-12-19 06:48:13 -08:00
Eric House
f199aef738 permissions: ask for READ_CONTACTS
On launching SMS invite dialog, ask for READ_CONTACTS permission. Where
it's needed, though, is for the user-invisible process of translating
phone numbers to names (not launching the Contacts app via an
Intent). This just seems like the best place to ask since the user's
thinking about contacts and phone numbers.
2016-12-19 06:34:20 -08:00
Eric House
09188bc704 Merge branch 'android_branch' into android_sdk_23_take_3 2016-12-17 16:38:39 -08:00
Eric House
f59918bf50 cleanup: remove unnecessary methods
InviteDelegate superclass now tracks whether something is checked,
though it's not doing as well as subclasses did before, e.g. when SMS
would uncheck everything but a newly added contact.
2016-12-17 16:36:17 -08:00
Eric House
29afb19cb4 permissions: ask when opening SMS game
Add post-open test for SMS and then ask for SMS permission, giving
rationale if the OS says I should. Meant adding a new interface for
rationales and wiring that in. It's a bit spaghetti and I may think of a
cleaner way later.
2016-12-16 21:04:15 -08:00
Eric House
3a53abce52 add params option to showOKOnlyDialogThen 2016-12-16 20:57:30 -08:00
Eric House
52c2973d8f remove compile-time switch
SMS rocks and I won't be removing it.
2016-12-16 07:44:55 -08:00
Eric House
5f6cf35d93 permissions: move opening game to BoardDelegate
When opening a game that sends via SMS, check if it has permission and
offer to remove the config if it doesn't, removing a similar check from
pre-opening code. (Here it'll catch e.g. games opened from the
GameConfig process.) Sends/receives without SMS permission are already
caught by existing catch{} blocks, so there's no crash.
2016-12-16 07:35:30 -08:00
Eric House
e9d0b61254 Merge branch 'android_branch' into android_sdk_23_take_3 2016-12-15 08:10:06 -08:00
Eric House
ca0ee429bb logging and string changes 2016-12-15 08:09:28 -08:00
Eric House
9503491890 invitations: tweak file and class names
No behavior changes, just cleanup
2016-12-15 08:02:06 -08:00
Eric House
9f7975d471 rename file
And change something that was using custom layout for just its checkbox
to just use a checkbox.
2016-12-15 07:28:44 -08:00
Eric House
f8bba60798 invitations: track multiple per device in superclass 2016-12-15 07:10:54 -08:00
Eric House
502888ee03 wifi: add reset() that will help troubleshoot 2016-12-15 06:44:40 -08:00
Eric House
721ee381a5 wifi: fix invitation dialog 2016-12-15 06:40:45 -08:00
Eric House
4f43acf9cb remove unused variable 2016-12-14 08:16:05 -08:00
Eric House
cd14001db1 start rewrite of invitation dialogs
Moving stuff into superclass and trying in general to simplify
things. BT and SMS invitation work, but the option to have more than one
player per device isn't available. RelayID invitation is a mess, but was
before I think.  WiDir invitation crashes in assert because I can't
debug it on this branch. Lots of work and cleanup still required.
2016-12-14 08:14:00 -08:00
Bernard Massot
d85733f97f Translated using Weblate (French)
Currently translated at 100.0% (746 of 746 strings)
2016-12-13 15:44:46 +01:00
PapaPedro
cc2594986f Translated using Weblate (Czech)
Currently translated at 14.7% (110 of 746 strings)
2016-12-13 03:44:23 +01:00
Eric House
c398af2ac9 perms: ask for the set needed to open a game
rewrite perms23 class to use Builder pattern, making it easier to pass
more than one required permission. Use that (with hard-coded set for
now) to check and ask for permissions a game needs to communicate. Offer
to remove the comms methods the user doesn't want to permit (but that's
not implemented yet.)
2016-12-11 20:54:24 -08:00
Eric House
dfb22c13fa make gradle's suggested config changes 2016-12-11 13:33:57 -08:00
Eric House
36a0737654 fix ant build for sdk 23
pull in new version of support library .jar
2016-12-11 13:33:06 -08:00
Bernard Massot
980ac33604 Translated using Weblate (French)
Currently translated at 100.0% (746 of 746 strings)
2016-12-11 11:33:30 +01:00
Eric House
d136dd65e6 check phone permission before putting up sms choice
First, needed to remove some state caching since though a non-SMS
phone will never become one my ability to ask changes over time. Then
changed population of communication options to first ask for the
permission needed in order to find out what's supported, then to find
out what's supported via methods that will return false without
permission. Can't think of a better way right now....
2016-12-10 16:06:18 -08:00
Eric House
3389e928cc check for phone permission on boot to avoid crash
Some permission checks won't fall back to asking if it doesn't make
sense given what the user's doing at the time.
2016-12-10 15:08:09 -08:00
Eric House
39f08bd3d3 remove verbose flag 2016-12-10 14:58:24 -08:00
Eric House
bec5ad82c0 query before loading saved games too 2016-12-10 14:03:25 -08:00
Eric House
a3ccce00fa starting requesting permissions
Before writing to storage, ask permission. This adds basic ability to
query and route the OS's callback back to the code that asked.
2016-12-10 13:49:51 -08:00
Eric House
b6194f6986 Merge remote-tracking branch 'maidu2/android_branch' into android_sdk_23_take_3 2016-12-09 22:01:48 -08:00
Eric House
a1e4d4da0e pass TAG to printStack() and logex
So they'll show up when using logcat filtering
2016-12-09 07:34:51 -08:00
Eric House
25c2fd16ef use cmd strings; log discovery running or not
Add a compile-time option to send commands in json as strings rather
than ordinals (ints) for easier reading of logs. And log/keep track of
when discovery's turned off or on in case it's useful for making all
this work.
2016-12-09 07:20:27 -08:00
Eric House
2b120959ae new debug option for games list title: connection method 2016-12-06 19:39:14 -08:00
Eric House
3d5479565e wifi: send for open game too
In handling resend for a newly available transport, if the lock can't be
obtained see if that's because the game's currently open and if so post
to its thread.
2016-12-06 09:03:33 -08:00
Eric House
2c6ce5c1a8 interface name change only 2016-12-06 08:20:58 -08:00
Eric House
dc2cd239a1 wifi: send pending messages on getting connected
Each time we get a socket to a peer, try sending all pending wifi direct
messages. It's a hack, but trying to send isn't that expensive and the
experience is much improved.
2016-12-06 08:15:09 -08:00
Eric House
6eb2a7b71b wifi: pay attention to wifi being enabled
Don't keep trying to connect if wifi's off, and start trying when it's
turned on.
2016-12-05 20:23:52 -08:00
Eric House
19bb3ef7dd check standalone before iterating on addresses
New crash deleting non-networked games: needed to test first.
2016-12-05 07:35:54 -08:00
Eric House
9c14e0e858 rename method: sendResult -> postEvent 2016-12-05 07:24:25 -08:00
Eric House
aa420ce4d1 notify remote when BT game deleted 2016-12-05 07:12:22 -08:00
Eric House
ef0eeaae2e improve dead game notification
When contacting opponents, iterate over opponent addresses rather than
information cached in the summary. Start implementing for BT, but that
needs more work. Change enum names in WiDirService state machine.  P2p
opponent notification untested because apparently an open hotspot, which
you can't prevent devices from connecting to, breaks P2P connectivity.
2016-12-03 10:28:24 -08:00
Eric House
bc9baa2e79 wifi: don't crash when don't have permissions 2016-12-03 08:15:08 -08:00
Eric House
eecae536ec add missing log levels: was dropping before 2016-12-02 20:03:44 -08:00
Eric House
f9d352cb25 wifi: notify when game deleted 2016-12-02 08:17:03 -08:00
Eric House
54ed327406 wifi: notify when game missing
Rewrite to use new XWPacket class that wraps JSONObject but could later
support a binary format, and reply with new message when packet arrives
for a game that does not exist. Code already present turns that into an
invitation to delete the game.
2016-12-01 07:48:03 -08:00
Eric House
54d02e0fb2 wifi: update status on first connect
And remove the hack pretending on lack of permission that support was
compiled out.
2016-12-01 06:11:51 -08:00
Eric House
bf83741393 track and log failure counts
Later will likely want to restart when get above some threshold
2016-11-30 07:55:25 -08:00
Eric House
0a26496e73 wifi: tweaks
fix race condition in accept thread; only call wifimgr.connect() on
guest side. Connectivity now works reliably if the guest starts, or is
restarted, when the group owner is running. If owner is restarted the
guest seems never to connect (without restart.)
2016-11-30 07:06:59 -08:00
Eric House
a686541f96 merge recent manifest changes 2016-11-30 06:58:56 -08:00
Eric House
a3bc4f0a75 fix compile error from merge 2016-11-28 20:21:40 -08:00
Eric House
0237403a26 Merge branch 'android_release' into android_branch
This will probably not compile...
2016-11-28 20:19:54 -08:00
Eric House
6171d9ce90 prep a quick-fix release, with string changes
Two crashes reported on the Google Play store in the 112 version have at
least easy work-arounds: catching exceptions and doing nothing. In both
cases that should be harmless, so assuming the causes are rare it's a
good move.
2016-11-28 20:02:38 -08:00
Eric House
f415cf22ca change strings for next release 2016-11-28 19:19:03 -08:00
Eric House
1a513e8b02 add a bit of logging 2016-11-28 07:40:09 -08:00
Eric House
2fa47f057d use TAG instead of class for logging
Moving to the traditional use of Log class, with TAG defined in every
class that logs. It's just easier to use all the facilities built into
logcat.
2016-11-27 21:24:21 -08:00
Eric House
49d75d5d91 converting to use standard TAG-based logging
First files done manually: add TAG to file and pass it rather than class
to log wrapper. Rest will be done with a script.
2016-11-27 21:22:51 -08:00
Eric House
97c1091d0c add TAG everywhere
results of running a script that adds TAG to every top-level class. It
compiles, but I'm not using them yet.
2016-11-22 22:10:05 -08:00
Eric House
927c181ccc rename variable
TAG has conventional meaning I'm about to take advantage of, so rename
the one variable that would conflict.
2016-11-22 21:46:42 -08:00
Eric House
b8844a0e2d rewrite connection logic
Make it a trivial state machine that implements Runnable and
ActionListener so it can be scheduled and notified easily. Removes a
bunch of code. Connecting still happens unreliably, but it should be
easier to tweak things now.
2016-11-22 19:28:10 -08:00
Eric House
bff03617e5 wifi: hide unused buttons
Refactoring isn't perfect. Need to hide in subclass buttons that other
subclasses assume.
2016-11-22 00:17:49 -08:00
Eric House
e0f0666b1c wifi: make invitations work
Add UI, minor thanks to recent refactoring, to allow invitations via
wifi direct. Uses a mapping of all currently known device mac addresses
to names, with only the latter shown to users. Works well, though
something I changed seems to have causes devices to start losing track
of their connections to each other.
2016-11-21 21:10:16 -08:00
Eric House
3f0bef48f6 refactor invite UI
In order that wifi direct invitation dialog isn't another near-copy of
an existing file move a bunch of stuff into the common superclass.
2016-11-21 20:54:29 -08:00
Eric House
a67f2205bb log thread starts/stops 2016-11-18 20:13:48 -08:00
Eric House
930146cf11 wifi tweaks
Show net status as failing when no sockets available, and notice when
they're closed.
2016-11-17 23:22:28 -08:00
Eric House
4389c63718 wifi: fix compile; do less work on release build
The group info stuff I'm polling for is used only to log interesting
information, so drop it.
2016-11-17 22:22:08 -08:00
Eric House
14c34f3e70 wifi: get rematch working
required hooking up invitations, so the user-visible part of that should
be easy to do once device names are being communicated.
2016-11-17 22:14:36 -08:00
Eric House
9cfbb3c45b wifi: add status update on successful write 2016-11-17 20:17:13 -08:00
Eric House
822f34ac48 wifi: forward packets through group owner
Simple fix to the problem that a group owner may not be in the role of
game host: if I'm a guest and don't have a socket for the mac address to
which I need to send, slap src and dest addresses into the message and
send it to the group owner. That device can then forward it.
2016-11-17 20:03:02 -08:00
Eric House
5659fe9096 include wifi device name in status 2016-11-16 21:27:14 -08:00
Eric House
6f29b78456 wifidirect make connections much more reliable
Found a recipe for service discovery that at least in the bit of testing
I've done is much more reliable. Devices connect almost
immediately. Basically everything chains through onSuccess() handlers.
URL to recipe is in code.
2016-11-16 21:23:46 -08:00
Eric House
491432a3bb toward having debug-only component to net state for p2p 2016-11-16 20:55:32 -08:00
Eric House
93f23dd87c wifi: shorten class name 2016-11-16 08:23:25 -08:00
Eric House
1dd28855cb wifi stop service request once it's done its work
Examples kill it before calling connect(), so do the same. Seems to make
connection more reliable. (Pending: handle case where more than one
two devices are in the group!!!)
2016-11-16 08:10:51 -08:00
Eric House
d45635273d wifi start adding network status updates 2016-11-15 21:12:59 -08:00
Eric House
239beafcfa wifi: can now play a full game
Made WifiDirectService into an actual service in order to better process
incoming packets. Now works for game messages from comms, and posts
notifications when app's in background. The latter requires using the
app context from XWApp since unlike the other transports this one
doesn't involve the OS invoking us with a Context.
2016-11-15 20:50:29 -08:00
Eric House
1c4ae5fcfd wifi snapshot
Got to the point where I have an open socket for the packet I want to
send! Lots of changes to how discovery works seem to have improved
reliability though I'm still unimpressed. Much to learn.
2016-11-15 07:49:06 -08:00
Eric House
33326d38a7 wifi direct: harvest and send mac address
Grab and store the local device's mac address. Add p2p as a type of
address, represented by the mac address of the recipient. Include the
local device's address in invitations sent when specified by user. Now
the WifiDirectService class is being passed a packet and the address of
the recipient; it will next need to set up sockets with every device it
encounters and map them to their mac addresses so that it can do a send.
2016-11-14 08:06:53 -08:00
Eric House
7d8708b8fa don't crash if don't have wifi permissions
For now, -dbg version will have and non-dbg won't, so catch exception
first time we try to do wifi stuff and disable if that exception is thrown.
2016-11-13 20:48:08 -08:00
Eric House
7a1965aeaf fix Nougat-only draw bug
Starting with the release of Nougat there have been cases where the
board would not correctly redraw. It's been most evident when using the
hit feature many times in a row, with something going wrong every fifth
time or so (but not that consistently.) It's as if modifications of the
bitmap backing BoardCanvas were being done asynchronously and not
necessarily all completed when I blit the canvas to the screen via
canvas.drawBitmap(). (As evidence of this I confirmed that a tap on a
tile in the tray after a bad draw would cause the screen to correct
itself even though the only additional rendering was to the tray. So by
the time that second drawBitmap() call happened the bitmap data was
correct: all draws that hadn't completed earlier had done so by now.)

The fix is to call Bitmap.createBitmap(bitmap) and to use the copy as
the source of the canvas.drawBitmap() blit operation. I suspect that
createBitmap() waits for any pending draws into its source to complete
before making the copy. Regardless, if this hasn't fixed the problem
it's made it so rare that I'm not seeing it, and since I'm only doing
the copy on Nougat there's little risk in the change. And I can't detect
any problems coming from the considerable additional memory being used
and immediately marked available for gc.
2016-11-13 13:29:20 -08:00
Eric House
de00a6c87a fix Nougat-only draw bug
Starting with the release of Nougat there have been cases where the
board would not correctly redraw. It's been most evident when using the
hit feature many times in a row, with something going wrong every fifth
time or so (but not that consistently.) It's as if modifications of the
bitmap backing BoardCanvas were being done asynchronously and not
necessarily all completed when I blit the canvas to the screen via
canvas.drawBitmap(). (As evidence of this I confirmed that a tap on a
tile in the tray after a bad draw would cause the screen to correct
itself even though the only additional rendering was to the tray. So by
the time that second drawBitmap() call happened the bitmap data was
correct: all draws that hadn't completed earlier had done so by now.)

The fix is to call Bitmap.createBitmap(bitmap) and to use the copy as
the source of the canvas.drawBitmap() blit operation. I suspect that
createBitmap() waits for any pending draws into its source to complete
before making the copy. Regardless, if this hasn't fixed the problem
it's made it so rare that I'm not seeing it, and since I'm only doing
the copy on Nougat there's little risk in the change. And I can't detect
any problems coming from the considerable additional memory being used
and immediately marked available for gc.
2016-11-13 13:20:00 -08:00
Eric House
e6561cbcac debugging aids
commented-out logging of drawCell, with flags; debug-build checks that
static rects passed to java draw code aren't being used by multiple
threads at once.
2016-11-12 07:20:28 -08:00
Eric House
41581cbddb cleanup: remove unused variable, unnecessary final 2016-11-12 07:07:19 -08:00
Eric House
92e413fa06 make boardBegin() a no-op in C
instead of a no-op in java, which takes more work to get to.
2016-11-12 06:57:05 -08:00
Eric House
f394bcef64 use max backoff time if no relay games 2016-11-11 06:31:54 -08:00
Eric House
edcafe1c45 housekeeping
gitignore new files; try to limit projectile searches
2016-11-11 06:30:55 -08:00
Eric House
7087ae96ff cleanup: resolve diffs between AndroidManifest.xml versions 2016-11-09 08:40:17 -08:00
Eric House
6d1d4abdd5 add backoff to relay pings
Current code is hitting the relay every 60 seconds, at least on
non-google-play installs like f-droid. Switch to using a backoff timer
that maxes out at once per hour. Eventually may want to not run the
timer at all when there aren't any unfinished relay games present.
2016-11-09 07:53:24 -08:00
Eric House
154e428fa8 more work on wifi direct
Now sends and receives a single packet more often than not. Disabled for
non-DEBUG devices, and new permissions that are required are commented
out so I don't accidentally ship before the sdk-23 permissions stuff
makes additions less scary.
2016-11-07 07:02:27 -08:00
Eric House
85c12d6a85 new file to wrap sockets
Untested class that wraps a bi-directional tcp socket using a
length-plus-data stream format. Just checking it in for now.
2016-11-04 20:36:11 -07:00
Eric House
1c93d908cd progress on wifi direct
group is formed and ip addresses assigned! But fragile: need to reboot
devices occasionally before things will happen again.
2016-11-03 21:20:03 -07:00
Eric House
ff01e78dee first commit on wifi direct
Disabled at compile time, and missing permissions required, but if
enabled is able to discover other devices running same app. Next: try to
open a socket.
2016-11-03 06:25:48 -07:00
Eric House
3ccdd5a6e2 fix printStack()
logi() stuff isn't showing up, so use logd().
2016-11-01 07:51:00 -07:00
Eric House
da9ee4195c re-add lollipop-friendly notification icon
This one looks better white-on-black, but still needs work! Had been
added before, in ref 885b375a55.
2016-10-31 08:00:04 -07:00
Eric House
b56c4d13b4 build with SDK version 23
Meant using NotificationCompat, dropping FloatMath, and changing a bunch
of build config stuff. Not done for gradle builds yet. Currently crashes
on a new install until you go into Apps/Crosswords/Permissions and turn
on the four "dangerous" ones it's using. Now the work is to check for
and request missing permissions on demand.
2016-10-31 07:46:04 -07:00
Eric House
832ff8e850 Merge branch 'android_branch' into android_translate 2016-10-25 20:28:05 -07:00
Eric House
579f11613f Merge branch 'android_release' into android_branch 2016-10-25 20:15:00 -07:00
Eric House
540a720fb7 up release strings 2016-10-25 20:06:10 -07:00
Eric House
1a43ab0adb fix jni crash on Nexus 9: give boolean default value
Crash occurs when creating new game: because there's no turn set yet the
jboolean has no set value (whatever was on the stack). Apparently the
java runtime accepts only 1 and 0 for jbooleans.
2016-10-25 08:35:11 -07:00
Eric House
45a6ddf8ec fix jni crash on Nexus 9: give boolean default value
Crash occurs when creating new game: because there's no turn set yet the
jboolean has no set value (whatever was on the stack). Apparently the
java runtime accepts only 1 and 0 for jbooleans.
2016-10-25 08:03:18 -07:00
naofum
3db6abba30 Translated using Weblate (Japanese)
Currently translated at 75.8% (566 of 746 strings)
2016-10-14 18:45:24 +02:00
Sylvia van Os
953ea6aa15 Translated using Weblate (Dutch)
Currently translated at 75.2% (561 of 746 strings)
2016-10-14 15:44:27 +02:00
Eric House
abf4aa4d80 switch to clang
add option, and invoke it, to build jni code with clang rather than gcc.
2016-09-30 11:13:30 -07:00
Eric House
a710bdd46e Merge remote-tracking branch 'maidu2/android_branch' into android_branch 2016-09-28 21:46:17 -07:00
Eric House
123b3007cb get rid of remaining logf calls
This completes moving to using traditional logging. At least to having
each file provide a TAG. Class rather than TAG is passed in, and format
strings are preferred to contatenation, but now adb can work with the
output.
2016-09-28 21:42:16 -07:00
Eric House
59796c59b8 loge -> logex (so loge can be reused) 2016-09-27 19:42:48 -07:00
Eric House
68650ebfea first change toward using traditional TAGs with Log class 2016-09-27 19:35:24 -07:00
Eric House
a6992c373f fix broken notagain alert
I screwed up when converting to using builder.
2016-09-15 21:32:25 -07:00
Eric House
7994c42691 allow board cells to be wider than tall
There are some screen dimensions, especially with dual-pane mode, where
the board is just bit narrower than the screen. Rather than have narrow
white borders, allow the cells to take up the slack. The API takes an
upper bound on the ratio of width to height so things shouldn't get too
odd looking.
2016-09-15 20:37:29 -07:00
Eric House
39c49c3d8d Set AS upgrade gradle 2016-09-15 20:33:20 -07:00
Eric House
809e962765 tweak to intent handling
Change logic to always handle intent when it's safe to commit
transactions rather than when there aren't any pending. This still needs
work.
2016-09-09 05:46:08 -07:00
Eric House
95d147d9c3 add logging; fix NPE
Running into a case where views haven't been added to the layout yet but
I'm searching there for their associated fragments. Fix to NPE stops a
crash, but intents still aren't being handled. I need to try to handle
them later, but am unsure when to start trying.
2016-09-05 20:29:16 -07:00
Eric House
bd2fbdeb88 fix NPE reported by crittercism
Not sure why it's happening, but testing and dropping is a fine fix.
2016-09-05 14:11:06 -07:00
Eric House
5e90ed0073 put tiny bit of padding around the board container 2016-09-04 21:57:58 -07:00
Eric House
7358c1a185 simplify intent dispatch
Too-clever double loop had an no-exit path. Now it's simpler: find a
fragment that can handle the intent, pop all fragments to its right
until it becomes top-most (there may be none), and then give it the
intent. Use of popBackStackImmediate() is required so old fragments are
gone before intent handling wants to create new ones.
2016-09-04 16:49:40 -07:00
Eric House
c0eb827b77 generated files: should have gone with prev commit 2016-09-04 09:42:00 -07:00
Eric House
cdf22ec913 remove dual-pane toast from startup 2016-09-04 09:40:46 -07:00
Eric House
c16fda23af up strings for new release 2016-09-02 21:37:37 -07:00
Eric House
575e64ed25 reverse sort order: newer listed first 2016-09-02 21:32:31 -07:00
Eric House
8a00b1ab47 reorder list when game saved
Since display is now by whose turn it is and how recently there's been a
move in the game, the order can change on every save. So in the listener
for saves, redraw the group the saved game belongs to. The best way to
do this without flicker seems to be to mimic closing then re-expanding
the group, so that's what I'm doing.
2016-09-01 08:16:21 -07:00
Eric House
5a91b2819c cleanup: pass size to constructor 2016-09-01 07:21:13 -07:00
Eric House
4b25d17dbf sort games by whose turn it is, local at top 2016-09-01 07:14:41 -07:00
Eric House
b64bf82278 postpone searching for fragment children
Getting an NPE iterating over fragment/children of dualpane view
because, I think, committing them's been postponed. So add the iteration
as a Runnable to the same postponement mechanism. This may be wrong:
needs to be run for a while to see if it fixes the NPEs I'm seeing (on
opening an intent in the morning after the device has been idle all
night.)
2016-09-01 07:12:27 -07:00
Eric House
adf71c85a5 add turnIsLocal to android db
So we can filter on it determining the display order of games in games
list.
2016-08-31 19:37:56 -07:00
Eric House
a450aceab3 keep list of fragment transactions to run later
An assertion is firing indicating that there's sometimes more than
one. So deal with that: keep an ArrayList.
2016-08-31 19:28:46 -07:00
Eric House
7dcb5f09b1 Merge branch 'android_release' into android_branch 2016-08-30 08:14:48 -07:00
Eric House
cd0de1daa7 ready for interim release
up version strings and make a toast DEBUG-only
2016-08-29 06:33:27 -07:00
Eric House
d7acdc4a93 don't commit fragment transactions until ready
Attempt to fix crashes happening when the occasional fragment
transaction happens before the OS is ready. Keep a boolean indicating
whether we're in that state, and when it's not set create a Runnable to
be run next time it is. Temporary Toast lets me know when it's working.
2016-08-29 06:19:13 -07:00
Eric House
1c9af1bcfc fix assertions: load xml widgets on demand 2016-08-29 06:18:21 -07:00
Eric House
42488232a5 don't commit fragment transactions until ready
Attempt to fix crashes happening when the occasional fragment
transaction happens before the OS is ready. Keep a boolean indicating
whether we're in that state, and when it's not set create a Runnable to
be run next time it is. Temporary Toast lets me know when it's working.
2016-08-26 21:48:52 -07:00
Eric House
4c923ead08 add isLocal param to server_getCurrentTurn
I want to store this information separately in summaries tables so
e.g. games can be displayed sorted by whether it's the local player's
turn.
2016-08-26 06:58:55 -07:00
Eric House
926f069313 fix assertions: load xml widgets on demand 2016-08-25 21:34:33 -07:00
Eric House
f98d8db6ac don't default-uninstall from multiple devices
I'm tired of nuking from devices I didn't realize were attached.
2016-08-25 08:23:51 -07:00
Eric House
eb1e3f01d7 cleanup: use a local variable 2016-08-25 08:22:47 -07:00
Eric House
c7f33a7c8e cleanup: remove logging 2016-08-22 19:15:07 -07:00
Eric House
091854eee3 ignore new file 2016-08-22 19:13:49 -07:00
Eric House
bd3caf25eb re-create list when size limits change
Problem: brain-dead Android code (on 5.1.0 anyway) caches the
SectionIndexer separately from the ListAdapter that implements it, so
when you change the ListAdapter it keeps using the old one for its
SectionIndexer. Solution is to replace the ListView in the layout with a
FrameLayout into which a ListView is inserted at runtime on init and
whenever the data changes.
2016-08-20 13:37:35 -07:00
Eric House
9f2bc23b80 implement setTitle for GamesListDelegate
Was missing and so when other panes went away didn't always replace the
title.
2016-08-20 09:33:48 -07:00
Eric House
f23e44c56d cleanup: use chaining everywhere building alerts 2016-08-19 14:44:37 -07:00
Eric House
78c3d4c0e9 tweak changes text 2016-08-19 14:14:39 -07:00
Eric House
9517516ab3 tweak changes text 2016-08-19 14:11:03 -07:00
Eric House
54feb61bf4 Merge branch 'android_branch' into android_translate 2016-08-19 13:12:57 -07:00
Eric House
06b6091780 upgrade -Dbg version code too 2016-08-19 12:56:07 -07:00