From b3c7cb37114160ec84a4deb9df499e9ae92586d9 Mon Sep 17 00:00:00 2001 From: Eric House Date: Mon, 4 Oct 2010 05:38:05 -0700 Subject: [PATCH] start on sending chat messages. Doesn't even compile -- committing to get onto another machine. --- xwords4/android/XWords4/jni/xwjni.c | 12 +++++++++ .../android/XWords4/res/menu/board_menu.xml | 2 ++ .../android/XWords4/res/values/strings.xml | 4 ++- .../eehouse/android/xw4/BoardActivity.java | 25 +++++++++++++++++++ .../eehouse/android/xw4/jni/JNIThread.java | 5 ++++ .../org/eehouse/android/xw4/jni/XwJNI.java | 1 + 6 files changed, 48 insertions(+), 1 deletion(-) diff --git a/xwords4/android/XWords4/jni/xwjni.c b/xwords4/android/XWords4/jni/xwjni.c index be9db722e..52111d6b8 100644 --- a/xwords4/android/XWords4/jni/xwjni.c +++ b/xwords4/android/XWords4/jni/xwjni.c @@ -1184,3 +1184,15 @@ Java_org_eehouse_android_xw4_jni_XwJNI_server_1endGame server_endGame( state->game.server ); XWJNI_END(); } + +JNIEXPORT void JNICALL +Java_org_eehouse_android_xw4_jni_XwJNI_server_1sendChat +( JNIEnv* env, jclass C, jint gamePtr, jstring jmsg ) +{ + XWJNI_START(); + XP_ASSERT( !!state->game.server ); + const char* msg = (*env)->GetStringUTFChars( env, jmsg, NULL ); + server_sendChat( state->game.server, msg ); + (*env)->ReleaseStringUTFChars( env, jmsg, msg ); + XWJNI_END(); +} diff --git a/xwords4/android/XWords4/res/menu/board_menu.xml b/xwords4/android/XWords4/res/menu/board_menu.xml index 757783d4e..63eec5c59 100644 --- a/xwords4/android/XWords4/res/menu/board_menu.xml +++ b/xwords4/android/XWords4/res/menu/board_menu.xml @@ -46,6 +46,8 @@ android:title="@string/board_menu_game_final" /> + diff --git a/xwords4/android/XWords4/res/values/strings.xml b/xwords4/android/XWords4/res/values/strings.xml index 89fd85385..ccaafc7c0 100644 --- a/xwords4/android/XWords4/res/values/strings.xml +++ b/xwords4/android/XWords4/res/values/strings.xml @@ -91,6 +91,7 @@ Game history Final scores Resend messages + Send message File New game About Crosswords @@ -387,5 +388,6 @@ refreshing or creating your own. Message received - + Send + Message for all devices 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 5db821c03..d8ea1270a 100644 --- a/xwords4/android/XWords4/src/org/eehouse/android/xw4/BoardActivity.java +++ b/xwords4/android/XWords4/src/org/eehouse/android/xw4/BoardActivity.java @@ -61,6 +61,7 @@ public class BoardActivity extends Activity implements UtilCtxt { private static final int QUERY_ENDGAME = Utils.DIALOG_LAST + 6; private static final int ASK_PASSWORD_BLK = Utils.DIALOG_LAST + 7; private static final int DLG_RETRY = Utils.DIALOG_LAST + 8; + private static final int GET_MESSAGE = Utils.DIALOG_LAST + 9; private BoardView m_view; private int m_jniGamePtr; @@ -74,6 +75,7 @@ public class BoardActivity extends Activity implements UtilCtxt { private String m_dlgBytes = null; private EditText m_passwdEdit = null; + private EditText m_chatMsg = null; private int m_dlgTitle; private String m_dlgTitleStr; private String[] m_texts; @@ -213,6 +215,26 @@ public class BoardActivity extends Activity implements UtilCtxt { }) .create(); break; + + case GET_MESSAGE: + if ( null == m_chatMsg ) { + m_chatMsg = new EditText( this ); + } + dialog = new AlertDialog.Builder( this ) + .setMessage( R.string.compose_chat ) + .setPositiveButton(R.string.button_send, + new DialogInterface.OnClickListener() { + public void onClick( DialogInterface dlg, + int item ) { + m_jniThread.handle( JNICmd.CMD_SENDCHAT, + m_chatMsg.getText().toString() ); + } + }) + .setNegativeButton( R.string.button_cancel, null ) + .setView( m_chatMsg ) + .create(); + break; + default: dialog = Utils.onCreateDialog( this, id ); Assert.assertTrue( null != dialog ); @@ -467,6 +489,9 @@ public class BoardActivity extends Activity implements UtilCtxt { case R.id.board_menu_game_resend: m_jniThread.handle( JNIThread.JNICmd.CMD_RESEND ); break; + case R.id.board_menu_game_chat: + showDialog( GET_MESSAGE ); + break; case R.id.board_menu_file_prefs: m_firingPrefs = true; startActivity( new Intent( this, PrefsActivity.class ) ); diff --git a/xwords4/android/XWords4/src/org/eehouse/android/xw4/jni/JNIThread.java b/xwords4/android/XWords4/src/org/eehouse/android/xw4/jni/JNIThread.java index f6bdc77d4..a1de56675 100644 --- a/xwords4/android/XWords4/src/org/eehouse/android/xw4/jni/JNIThread.java +++ b/xwords4/android/XWords4/src/org/eehouse/android/xw4/jni/JNIThread.java @@ -77,6 +77,7 @@ public class JNIThread extends Thread { CMD_FINAL, CMD_ENDGAME, CMD_POST_OVER, + CMD_SENDCHAT, CMD_DRAW_CONNS_STATUS, }; @@ -454,6 +455,10 @@ public class JNIThread extends Thread { XwJNI.server_writeFinalScores( m_jniGamePtr ) ); break; + case CMD_SENDCHAT: + XwJNI.server_sendChat( m_jniGamePtr, (String)args[0] ); + break; + case CMD_DRAW_CONNS_STATUS: int newID = 0; switch( (TransportProcs.CommsRelayState)(args[0]) ) { diff --git a/xwords4/android/XWords4/src/org/eehouse/android/xw4/jni/XwJNI.java b/xwords4/android/XWords4/src/org/eehouse/android/xw4/jni/XwJNI.java index c28004762..ec6292ac9 100644 --- a/xwords4/android/XWords4/src/org/eehouse/android/xw4/jni/XwJNI.java +++ b/xwords4/android/XWords4/src/org/eehouse/android/xw4/jni/XwJNI.java @@ -190,6 +190,7 @@ public class XwJNI { public static native String server_writeFinalScores( int gamePtr ); public static native void server_initClientConnection( int gamePtr ); public static native void server_endGame( int gamePtr ); + public static native void server_sendChat( int gamePtr, String msg ); // hybrid to save work public static native boolean board_server_prefsChanged( int gamePtr,