Commit graph

9790 commits

Author SHA1 Message Date
Eric House
25823aec74 cleanup: "Then" implies Action 2016-08-15 12:11:17 -07:00
Eric House
c36adeebbd refactor: use builder for notAgain dialogs too 2016-08-15 12:10:36 -07:00
Eric House
7f211c6cb5 more cleanup: replace overloads with builder
There were too many versions of showConfirmThen(). Now there's one
builder with a bunch of optional parameters.
2016-08-15 10:15:35 -07:00
Eric House
ecdd453698 major cleanup: first use of ConfirmThenBuilder 2016-08-15 09:15:39 -07:00
Eric House
bf93189313 cleanup: Map.remove() does a get 2016-08-15 08:25:36 -07:00
Eric House
34b7f9de4d tweak string 2016-08-15 08:18:11 -07:00
Eric House
b17dfc91cc fix to compile! (bad commit) 2016-08-15 08:17:33 -07:00
Eric House
e6cb693c3c launch dict download pane from config as fragment
One of the last to be converted. But missing dict functionality still
needs testing.
2016-08-15 07:59:49 -07:00
Eric House
10a0e33ee4 send cancel if no dict's been chosen
Fix crash when game config opens dict download for result and nothing's
chosen. Was sending Activity.RESULT_OK in that case instead of
RESULT_CANCELED.
2016-08-15 07:19:05 -07:00
Eric House
87150c7d91 replace assertion with logging and dropping event
Until I figure out why I'm see it, as it's getting in the way of other
things.
2016-08-13 17:16:20 -07:00
Eric House
6bdfae23cb add no-args constructors to all fragments
Docs and some logcat crash statements from the OS say I need no-args
constructors for fragments. So rework initialization and use bundling so
parent name doesn't have to be passed into the constructor. Seems to
work, and fixes the crash I was seeing (happened when sending an
invitation via SMS) but requires more testing.
2016-08-13 17:02:18 -07:00
Eric House
94e5b30d94 fix long-tap rematch of open game
Needed to do the usual JNIThread.getRetained() recipe, slightly
modified.
2016-08-12 19:14:23 -07:00
Eric House
80e1f588d0 remove a delegate's alerts when it stops
Fixing a crash when a game offers both to create a rematch and to delete
itself because its opponent has been deleted. Deleting and then hitting
rematch would crash because the rematch alert referred to a dead
game. Now onStop() for delegates removes any pending alerts. In
dual-pane mode only since when there's an activity going away the alerts
go automatically.
2016-08-12 18:06:11 -07:00
Eric House
a7795dd160 remove REMATCH_SUPPORTED build-time option
It's always on now.
2016-08-12 12:25:38 -07:00
Eric House
2220db9dfa cleanup: use consistent terms even in DEBUG build 2016-08-12 12:09:23 -07:00
Eric House
4d1fc6524c cleanup: fold two methods together 2016-08-12 12:07:14 -07:00
Eric House
16d6b7cccc move use of JNIThread's lock into getSummary()
Rather than have callers of getSummary() try JNIThread for the lock, do
that check inside getSummary(), and move it to GameUtils from DBUtils
since it's using higher-level knowledge now.
2016-08-12 11:48:39 -07:00
Eric House
3baeb79a45 cleanup: "message" => either "chat" or "move" 2016-08-12 11:18:56 -07:00
Eric House
1c59f1e002 replace window title when pane goes away
Add new parameterless setTitle() method on delegates, and call it when a
fragment is removed so the new right-most pane can restore a title that
makes sense. So far only board and gameconfig delegates implement this
new method.
2016-08-12 11:00:51 -07:00
Eric House
76a7aeb93c fix dupeGame for dual-pane case
Current GameLock implementation means you can't get a lock for an open
game, so try getting one from an existing JNIThread instance
first. Which is a hack that's start to appear in lots of places.... Also
fix so just in case we are unable to lock a game we drop the rematch
process rather than crash in an assert later. The test case: rematch a
solo game that's currently open in the right pane.
2016-08-12 08:55:54 -07:00
Eric House
16a622d22c cleanup: rename method 2016-08-12 08:50:26 -07:00
Eric House
dfe79a2d97 move game loading into GameLock
Fixed race conditions revealed by dual-pane mode where GameLock could be
instantiated and then attempts made to reference its game (jni calls)
before it had been loaded. So now loading happens inside the same
synchronized methods as opening or creating a game.
2016-08-12 08:33:36 -07:00
Eric House
90e7cbd2ed cleanup: use constants 2016-08-12 08:08:53 -07:00
Eric House
8e399ef9b7 assert from java that jni code has an env
Rare crashes are happening inside the jni, in game_dispose(), when a
game's double-disposed. Adding a jni call to check if the thread about
to do a game_dispose() will fail then asserting its result in java
allows useful stack traces to come via Crittercism. Or should.
2016-08-11 16:42:18 -07:00
Eric House
5d9423f317 fix rematch crash: don't call finish()
There was a race condition between finish() and the popping of fragments
that happens inside dispatchNewIntent(). If dispatchNewIntent() won then
later finish() would pop the GamesListFragment and we'd crash. Ideally
finish() would pass a fragment to finishFragment() which would then do
nothing if that fragment wasn't on the stack. Later....
2016-08-11 16:33:12 -07:00
Eric House
457970b2d2 gtk: the tiniest bit of cleanup
Trying and failing to get just the content area of the tree view to
scroll, whether by putting it in its own container or hooking into the
scrollable interface tree view allegedly supports.
2016-08-10 14:53:44 -07:00
Eric House
06fb4ef0ee improve experience switching dualpane mode
better strings, and explain when pref changed that user must restart for
it to take effect. Actually restarting from inside prefs delegate is
hard enough I'm not doing it for what should be advanced users.
2016-08-10 11:56:05 -07:00
Eric House
01d45df3ae use WeakReference to prevent "leak" of static member 2016-08-10 11:46:38 -07:00
Eric House
bece9183f9 remove restart notification on start 2016-08-10 11:32:23 -07:00
Eric House
43b76d24cc add commented out thread assertion
I want to use ReentrantLock instead of my implementation but I'm
breaking its rule that the thread that locks a lock must be the one to
unlock it. Add commented-out assertion for some later time when I might
want to fix this. No change for now.
2016-08-10 09:42:19 -07:00
Eric House
dddfa2e269 keep INVITE alert up for rematch game
Game created for rematch was coming up unconnected and without
explanation if recipient of invitation hadn't responded. Don't dismiss
the INVITE alert in that case.
2016-08-07 11:54:45 -07:00
Eric House
9909750605 don't show the loading view except the first time 2016-08-06 09:32:13 -07:00
Eric House
3140df2f37 wrap loading and loaded views in FrameLayout
This to prevent the game list item from resizing (and so reflowing the
whole list) when it's reloading game info. Better would be to set a
timer and only show the reloading view if it seems likely to take a
minute.
2016-08-06 09:27:11 -07:00
Eric House
c2305dafff let android studio "optimize imports" 2016-08-05 22:16:04 -07:00
Eric House
b9bb1e2684 cleanup: use new board_drawSnapshot on existing game 2016-08-05 22:04:30 -07:00
Eric House
bf7a38da08 copy more state into board being used for snapshot 2016-08-05 21:19:49 -07:00
Eric House
a275730824 gtk: fix crash when hit rematch button
Not all games have a draw context. Check!
2016-08-05 18:37:35 -07:00
Eric House
012b015f82 gtk: save games list window size and position 2016-08-05 18:31:17 -07:00
Eric House
25723bbb0f put main games window in a scrolling container 2016-08-05 12:02:05 -07:00
Eric House
8b142e4a56 use new board_drawSnapshot() from android
BoardCanvas wouldn't render anything without an associated dict via
dictChanged()
2016-08-05 11:51:47 -07:00
Eric House
7f513313b0 fix crash loading new game before snapshot exists 2016-08-05 10:37:42 -07:00
Eric House
0c6283ea63 add board_drawSnapshot
Toward something that should work with android: pass a potentially
unique draw context into new method that creates a new board just for
the draw and makes its scoreboard and tray disappear.
2016-08-05 10:23:39 -07:00
Eric House
3c0a128266 produce, store and display actual snapshot
Done in a way that won't work for Android just to try out the gtk
way. Tweaks and reuses the existing draw context and board, which is
precisely what the android version can't easily do.
2016-08-05 09:42:55 -07:00
Eric House
aeee2d801a toward snapshots in gtk version
Add new "snap" blob to db and pixbuf column to games display table, and
add code to store and retrieve from db. What's stored now is a
hard-coded file, so next up is generating an actual snapshot from the
game.
2016-08-05 08:29:25 -07:00
Eric House
b4393d5965 fix cursor-hiliting of player in scoreboard 2016-08-04 16:13:54 -07:00
Eric House
df6c1e0d3a make beginDraw return a boolean so can abort
When a gtk3 window's shutting down it appears we can't get a cairo_t*
for it. This change makes it possible to turn that fact into aborting
the whole draw operation.
2016-08-04 15:12:05 -07:00
Eric House
3c7af0023e fix curses drawtable fallback 2016-08-04 14:16:52 -07:00
Eric House
80f894b869 fix remaining gtk dialogs 2016-08-04 12:43:33 -07:00
Eric House
66e26c1489 hook up draw signal
Whenver we get the draw signal, invalidate the whole board and draw
it. This is resulting in a lot of wasted effort that might be mitigated
if I figured out how to get the invalid region out of the cairo_t*
that's passed in, but this is a test app and my machine's pleny fast. So
go with it for now.
2016-08-04 11:41:43 -07:00
Eric House
33f904fa1e provide no-op implementations of new draw methods 2016-08-04 07:07:52 -07:00