From 758c6a6c5cb54f6ef2e499c74d3fb7b902a0dad7 Mon Sep 17 00:00:00 2001 From: Eric House Date: Sat, 10 Aug 2013 14:25:28 -0700 Subject: [PATCH] add interface to ConnStatusHandler as part of moving UI-based response into Activity. --- .../eehouse/android/xw4/BoardActivity.java | 34 ++++++++++++++----- .../org/eehouse/android/xw4/BoardView.java | 4 +-- .../android/xw4/ConnStatusHandler.java | 17 ++++++++-- 3 files changed, 41 insertions(+), 14 deletions(-) diff --git a/xwords4/android/XWords4/src/org/eehouse/android/xw4/BoardActivity.java b/xwords4/android/XWords4/src/org/eehouse/android/xw4/BoardActivity.java index 7842d08b2..85c868f22 100644 --- a/xwords4/android/XWords4/src/org/eehouse/android/xw4/BoardActivity.java +++ b/xwords4/android/XWords4/src/org/eehouse/android/xw4/BoardActivity.java @@ -57,7 +57,8 @@ import org.eehouse.android.xw4.jni.CurGameInfo.DeviceRole; public class BoardActivity extends XWActivity implements TransportProcs.TPMsgHandler, View.OnClickListener, - DictImportActivity.DownloadFinishedListener { + DictImportActivity.DownloadFinishedListener, + ConnStatusHandler.ConnStatusCBacks { public static final String INTENT_KEY_CHAT = "chat"; @@ -560,7 +561,7 @@ public class BoardActivity extends XWActivity protected void onPause() { m_handler = null; - ConnStatusHandler.setHandler( null ); + ConnStatusHandler.setHandler( null, null ); waitCloseGame( true ); super.onPause(); } @@ -576,12 +577,7 @@ public class BoardActivity extends XWActivity loadGame(); - Handler handler = new Handler() { - public void handleMessage( Message msg ) { - m_view.invalidate(); - } - }; - ConnStatusHandler.setHandler( handler ); + ConnStatusHandler.setHandler( m_handler, this ); } @Override @@ -1127,6 +1123,28 @@ public class BoardActivity extends XWActivity } } + ////////////////////////////////////////////////// + // ConnStatusHandler.ConnStatusCBacks + ////////////////////////////////////////////////// + public void invalidateParent() + { + runOnUiThread(new Runnable() { + public void run() { + m_view.invalidate(); + } + }); + } + + public void onStatusClicked() + { + final String msg = ConnStatusHandler.getStatusText( this, m_connType ); + post( new Runnable() { + public void run() { + showOKOnlyDialog( msg ); + } + } ); + } + private void setGotGameDict( String getDict ) { m_jniThread.setSaveDict( getDict ); diff --git a/xwords4/android/XWords4/src/org/eehouse/android/xw4/BoardView.java b/xwords4/android/XWords4/src/org/eehouse/android/xw4/BoardView.java index 46167e889..6bda3c9db 100644 --- a/xwords4/android/XWords4/src/org/eehouse/android/xw4/BoardView.java +++ b/xwords4/android/XWords4/src/org/eehouse/android/xw4/BoardView.java @@ -211,9 +211,7 @@ public class BoardView extends View implements DrawCtx, BoardHandler, break; case MotionEvent.ACTION_UP: if ( ConnStatusHandler.handleUp( xx, yy ) ) { - String msg = ConnStatusHandler.getStatusText( m_context, - m_connType ); - m_parent.showOKOnlyDialog( msg ); + // do nothing } else { m_jniThread.handle( JNIThread.JNICmd.CMD_PEN_UP, xx, yy ); } diff --git a/xwords4/android/XWords4/src/org/eehouse/android/xw4/ConnStatusHandler.java b/xwords4/android/XWords4/src/org/eehouse/android/xw4/ConnStatusHandler.java index a4f78c9cc..ceddbca6d 100644 --- a/xwords4/android/XWords4/src/org/eehouse/android/xw4/ConnStatusHandler.java +++ b/xwords4/android/XWords4/src/org/eehouse/android/xw4/ConnStatusHandler.java @@ -43,6 +43,12 @@ import org.eehouse.android.xw4.jni.CommsAddrRec.CommsConnType; import org.eehouse.android.xw4.jni.XwJNI; public class ConnStatusHandler { + + public interface ConnStatusCBacks { + public void invalidateParent(); + public void onStatusClicked(); + } + // private static final int GREEN = 0x7F00FF00; // private static final int RED = 0x7FFF0000; private static final int GREEN = 0xFF00FF00; @@ -54,6 +60,7 @@ public class ConnStatusHandler { private static Rect s_rect; private static boolean s_downOnMe = false; private static Handler s_handler; + private static ConnStatusCBacks s_cbacks; private static Paint s_fillPaint = new Paint( Paint.ANTI_ALIAS_FLAG ); private static boolean[] s_showSuccesses = { false, false }; @@ -134,9 +141,10 @@ public class ConnStatusHandler { s_rect = new Rect( left, top, right, bottom ); } - public static void setHandler( Handler handler ) + public static void setHandler( Handler handler, ConnStatusCBacks cbacks ) { s_handler = handler; + s_cbacks = cbacks; } public static boolean handleDown( int xx, int yy ) @@ -148,6 +156,9 @@ public class ConnStatusHandler { public static boolean handleUp( int xx, int yy ) { boolean result = s_downOnMe && s_rect.contains( xx, yy ); + if ( result && null != s_cbacks ) { + s_cbacks.onStatusClicked(); + } s_downOnMe = false; return result; } @@ -210,8 +221,8 @@ public class ConnStatusHandler { private static void invalidateParent() { - if ( null != s_handler ) { - Message.obtain( s_handler ).sendToTarget(); + if ( null != s_cbacks ) { + s_cbacks.invalidateParent(); } }