From aa7732be060237374924a78177e36982cb2598fd Mon Sep 17 00:00:00 2001 From: Nathaniel Wesley Filardo Date: Sun, 22 Sep 2019 14:52:08 +0100 Subject: [PATCH] Main: better menu Fixes https://github.com/cmukgb/ctfws-timer-android/issues/13 --- .../ctfwstimer/MainActivity.java | 44 ++++++++++++++++--- .../res/drawable/ic_library_books_24dp.xml | 5 +++ mobile/src/main/res/menu/mainmenu.xml | 24 +++++----- mobile/src/main/res/values/strings.xml | 2 +- 4 files changed, 55 insertions(+), 20 deletions(-) create mode 100644 mobile/src/main/res/drawable/ic_library_books_24dp.xml diff --git a/mobile/src/main/java/com/acmetensortoys/ctfwstimer/MainActivity.java b/mobile/src/main/java/com/acmetensortoys/ctfwstimer/MainActivity.java index 9ef741e..093a2aa 100644 --- a/mobile/src/main/java/com/acmetensortoys/ctfwstimer/MainActivity.java +++ b/mobile/src/main/java/com/acmetensortoys/ctfwstimer/MainActivity.java @@ -26,6 +26,7 @@ public class MainActivity extends AppCompatActivity { private final MainActivityBuildHooks mabh = new MainActivityBuildHooksImpl(); private MainService.LocalBinder mSrvBinder; // set once connection completed + private MainService.MqttServerEvent mLastMSE; private final MainService.Observer mSrvObs = new MainService.Observer() { @Override public void onMqttServerChanged(MainService.LocalBinder b, final String sURL) { @@ -43,9 +44,17 @@ public class MainActivity extends AppCompatActivity { @Override public void onMqttServerEvent(MainService.LocalBinder b, MainService.MqttServerEvent mse) { + mLastMSE = mse; + if (mMenuReconn != null) { + setMenuReconnVis(mse); + } switch(mse) { - case MSE_CONN: setServerStateText(R.string.mqtt_conn); break; - case MSE_DISCONN: setServerStateText(R.string.mqtt_disconn); break; + case MSE_CONN: + setServerStateText(R.string.mqtt_conn); + break; + case MSE_DISCONN: + setServerStateText(R.string.mqtt_disconn); + break; case MSE_SUB: { long lstde = b.getLastServerTimeDeltaEstimate(); if (Math.abs(lstde) <= 5) { @@ -63,6 +72,8 @@ public class MainActivity extends AppCompatActivity { } }; + private MenuItem mMenuReconn; + private CtFwSDisplayLocal mCdl; // set in onStart private TextView mTvSU; // set in onStart private TextView mTvSS; // set in onStart @@ -122,6 +133,7 @@ public class MainActivity extends AppCompatActivity { @Override public void onServiceDisconnected(ComponentName name) { mSrvBinder = null; + mLastMSE = MainService.MqttServerEvent.MSE_DISCONN; /* sort of, anyway */ } }; @@ -217,21 +229,21 @@ public class MainActivity extends AppCompatActivity { @Override public boolean onOptionsItemSelected(MenuItem mi) { switch(mi.getItemId()) { - case R.id.menu_hand: + case R.id.mainmenu_hand: startActivity(new Intent(this, HandbookActivity.class)); return true; - case R.id.menu_reconn: + case R.id.mainmenu_reconn: if (mSrvBinder != null) { mSrvBinder.connect(true); } return true; - case R.id.menu_prf : + case R.id.mainmenu_prf : startActivity(new Intent(this, SettingsActivity.class)); return true; - case R.id.menu_about : + case R.id.mainmenu_about : startActivity(new Intent(this, AboutActivity.class)); return true; - case R.id.menu_quit: + case R.id.mainmenu_quit: if (mSrvBinder != null) { mSrvBinder.exit(); } @@ -247,6 +259,24 @@ public class MainActivity extends AppCompatActivity { public boolean onCreateOptionsMenu(Menu menu) { MenuInflater mi = getMenuInflater(); mi.inflate(R.menu.mainmenu, menu); + + mMenuReconn = menu.findItem(R.id.mainmenu_reconn); + if (mLastMSE != null) { + setMenuReconnVis(mLastMSE); + } + return true; } + + private void setMenuReconnVis(MainService.MqttServerEvent mse) { + switch(mse) { + case MSE_CONN: + case MSE_SUB: + mMenuReconn.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER); + break; + case MSE_DISCONN: + mMenuReconn.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); + break; + } + } } diff --git a/mobile/src/main/res/drawable/ic_library_books_24dp.xml b/mobile/src/main/res/drawable/ic_library_books_24dp.xml new file mode 100644 index 0000000..6fdb7fa --- /dev/null +++ b/mobile/src/main/res/drawable/ic_library_books_24dp.xml @@ -0,0 +1,5 @@ + + + diff --git a/mobile/src/main/res/menu/mainmenu.xml b/mobile/src/main/res/menu/mainmenu.xml index a88af04..ae8150d 100644 --- a/mobile/src/main/res/menu/mainmenu.xml +++ b/mobile/src/main/res/menu/mainmenu.xml @@ -4,37 +4,37 @@ xmlns:android="http://schemas.android.com/apk/res/android"> + android:icon="@android:drawable/ic_menu_manage" + android:title="@string/menutext_prf" + android:visible="true" /> \ No newline at end of file diff --git a/mobile/src/main/res/values/strings.xml b/mobile/src/main/res/values/strings.xml index bc6eeae..769e019 100644 --- a/mobile/src/main/res/values/strings.xml +++ b/mobile/src/main/res/values/strings.xml @@ -1,7 +1,7 @@ tcp://ctfws-mqtt.cmukgb.org:1883 - CMUKGB CtFwS Timer + CtFwS Timer CtFwS Handbook Handbook -- 2.50.1