I had a scheme where, as on WinMobile, I could download localization
data based on the local of the device I was on. Saved a lot of
space. Google didn't care about space, and I haven't for a while
either, so it's coming out except for the API that did in-place
translation of UI elements.
Attempting to stop calling the relay, but to let relay-only games finish
and issue invitations. Big changes are that relay is removed from games
if they have viable mqtt connections, and relay timers fire less often,
then eventually stop getting set if there are no active games. Result is
that a relay-only invitation won't likely be received, but there should
be few or none of those now.
Main goal is to not fire RelayService timer when mqtt timer fires and
there are not any active relay games at all. Adds new class that keeps
a timer for each client, sets the closest each time, and dispatches only
that one.
I was determining I need to check the relay for messages if I have open
games using it. But they can also use mqtt, and the goal's go stop using
the relay. So only force the connection if the games can only connect
via relay. Once I've confirmed via a study of relevant databases that
all recent relay games are also connecting via mqtt this can ship, and
should stop nearly all relay traffic .
Since ability to grok a wordlist is a function of version, might as well
have the server know about that. Requires upping versionCode
prematurely, with stubbed-out release notes.
Debug build checks for upgrades every hour, and when I don't want one
it's annoying to keep dismissing notifications. Should have no impact on
release builds.
This is a better way to do it: use separate values that user doesn't
see and so that they can be defined as defaults without worrying about
translation.
Allow user to choose a new dark-mode color scheme for the board, with
colors editable same as the old mode. Support exporting a URL
encapsulating those colors to clipboard and importing from the URL
when it's tapped e.g. in email.
When I've invited a Known Player, use that player's name in parens in
scoreboard and games list elem/summary until a remote device connects
(usually in response to an invitation) and provides an actual player
name. Makes it much easier to tell one pending game from another. And
doesn't really work (yet) where there's more than one remote player in
a game.
Play Store reports say I'm getting this event when I don't have a
valid jni game instance to work with. So test for that, and drop the
event. If it's a race condition this should fix it. If not I'll get
some other crash report that might be more useful.
This may hurt Oreo users in some other way, but I'm not taking the time
right now to figure out what's special about DwnldActivity that it
crashes when setting screen orientation on Oreo. It's only 5% of my
users anyway.
At least where QR was being used, it didn't go away. Not sure why, but a
global was getting nulled when it shouldn't have been. Race condition I
guess.
Often I want to view a different wordlist from what's in use in the
game. So make the in-board long-tap shortcut to a wordlist remember what
the short-tap gesture chose most recently and use that instead of
assuming the game's list is what's wanted. Remember the choice on a
per-language rather than per-game basis.
This seems to do what I want: cause it to be dismissed whenever the
board fragment behind it (that launched it) goes away, e.g. because the
remote deleted first and local got a deleted-elsewhere-so-delete-here?
alert.
The old API required passing dict into game creation/loading. New
doesn't, but in some places I was doing other stuff there (like checking
existance), so can't remove there. Still code goes away.
Recent change added Delete button to game-over alert, but only when no
unacked messages remained (since deleted games can't continue trying to
send messages other games might still need to know the game's over.)
Typically the alert would go up and then, if the remote device is
online, shortly after acks would arrive. Now when that happens the alert
gets updated to offer to delete and archive.
Once in the archive games don't ever send unless opened explicitly (no
resend-all-on-gained-network stuff for them). So don't offer to put a
game there if it has unsent (unacked) messages. Should prevent problem
of a host being archived before it's managed to send its final move to
all guests.
Scroller is allowed only one child and I guess I wanted the TableLayout
to suffice, but having unrelated stuff in it sucked. So wrap it in a
LinearLayout and move the unrelated stuff out.
I want to encourage people not to think there's action to be taken
between when they invite and an invitee responds, e.g. to email. So make
the "Close Game" button the "positive" one that case.
I balked at writing code consisting of a bunch of classes there only to
provide a mapping to resource file IDs, instead opting to generate them.
(The right move might have been to generate everything from the old
xwprefs.xml, but it's too late for that. :-)
I realized I'd made some mistakes and so rebuilt them from the old
xwprefs.xml file. Didn't find any new mistakes, but there are fewer
unnecessary changes so the release-to-release diff should make more
sense.
We've decided that on upgrade users shouldn't be surprised by a busy
board and unaware of how to fix it. So keep it the way it's been and let
the curious discover the new ability. Also, simplify code.
This is an experiment. I suspect the eventual fix will be to have two
modes, one of which draws the values and the other doesn't, replacing
the TILES/VALUES pref.
Use the current recommended classes and organization of app
settings. Means breaking xwprefs.xml into eight or so files and a bunch
of changes to classes derived from Preference. Seems to work, but there
will be bugs. Also got rid of most Activity subclasses that were
alternatives to Fragments, since all Android versions I'm allowed to
support now support Fragments.
commit d255dc7758
Author: Allan Nordhøy <epost@anotheragency.no>
Date: Sun Jan 17 18:26:54 2021 +0000
Translated using Weblate (Norwegian Bokmål)
Currently translated at 69.3% (619 of 892 strings)
commit 542af0a287
Author: Allan Nordhøy <epost@anotheragency.no>
Date: Sun Jan 17 18:27:24 2021 +0000
Translated using Weblate (English)
Currently translated at 100.0% (892 of 892 strings)
commit 8ced0990d0
Author: Luca De Filippo <luca.defilippo@translationcommons.org>
Date: Thu Jan 14 15:41:05 2021 +0000
Translated using Weblate (Italian)
Currently translated at 96.3% (859 of 892 strings)
Returning null from createDialog() isn't allowed, so return this as a
fallback as before. But the old code immediately dismissed it and
created another in an infinite loop. So just suck it up and display it.
And as always hope users don't see it.
Fix -- I think -- problem where game-deleted message received but not
handled by ChatDelegate would loop forever. Fix is to let non-visible
fragments take a shot, the BoardDelegate in this case. Seems to work,
but wasn't 100% reproducible AND the fix may break something else.
For some reason, in Spanish but not Catalan, filtering doesn't work with
two-letter tiles. The reason is that e.g. with RR two patterns, R.R and
RR (i.e. two R tiles, or one RR tile), are returned. The first shouldn't
be there since there are no words with RR that are spelled with two R
tiles. Until I can fix this picking the second (last) pattern seems to
work better.
If I can't figure out how to register for .xwd files, next best idea is
to encode a download in a custom url. This is one way of doing that, and
works with the urls just added to BYOD. Will likely change.
Known Players is a feature I'm devloping and right now want to keep it
capitalized as players learn what it is. It's only in debug builds at
the moment anyway.