]> hydra-www.ietfng.org Git - acmetensortoys-ctfws-android/commitdiff
Main: better menu
authorNathaniel Wesley Filardo <nwfilardo@gmail.com>
Sun, 22 Sep 2019 13:52:08 +0000 (14:52 +0100)
committerNathaniel Wesley Filardo <nwfilardo@gmail.com>
Sun, 22 Sep 2019 14:35:53 +0000 (15:35 +0100)
Fixes https://github.com/cmukgb/ctfws-timer-android/issues/13

mobile/src/main/java/com/acmetensortoys/ctfwstimer/MainActivity.java
mobile/src/main/res/drawable/ic_library_books_24dp.xml [new file with mode: 0644]
mobile/src/main/res/menu/mainmenu.xml
mobile/src/main/res/values/strings.xml

index 9ef741eb6889f1ea8cbea7eadcab5fec5119ce41..093a2aa0546b7169d04ad2b145f7ef0945d0b64e 100644 (file)
@@ -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 (file)
index 0000000..6fdb7fa
--- /dev/null
@@ -0,0 +1,5 @@
+<vector android:height="24dp" android:tint="#FFFFFF"
+    android:viewportHeight="24.0" android:viewportWidth="24.0"
+    android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
+    <path android:fillColor="#FF000000" android:pathData="M4,6L2,6v14c0,1.1 0.9,2 2,2h14v-2L4,20L4,6zM20,2L8,2c-1.1,0 -2,0.9 -2,2v12c0,1.1 0.9,2 2,2h12c1.1,0 2,-0.9 2,-2L22,4c0,-1.1 -0.9,-2 -2,-2zM19,11L9,11L9,9h10v2zM15,15L9,15v-2h6v2zM19,7L9,7L9,5h10v2z"/>
+</vector>
index a88af04a7a128551a5f0a56bc7a2552c8936550b..ae8150d7fa4783b90323e4d2fe98e1405857d629 100644 (file)
@@ -4,37 +4,37 @@
     xmlns:android="http://schemas.android.com/apk/res/android">
 
     <item
-        android:id="@+id/menu_hand"
-        android:icon="@android:drawable/ic_menu_directions"
+        android:id="@+id/mainmenu_hand"
+        android:icon="@drawable/ic_library_books_24dp"
         android:title="@string/menutext_handbook"
         android:visible="true"
         app:showAsAction="ifRoom" />
     <item
-        android:id="@+id/menu_reconn"
+        android:id="@+id/mainmenu_prf"
         android:checkable="false"
         android:enabled="true"
-        android:icon="@android:drawable/stat_sys_download"
-        android:title="@string/menutext_reconn"
-        android:visible="true"
-        app:showAsAction="ifRoom" />
+        android:icon="@android:drawable/ic_menu_manage"
+        android:title="@string/menutext_prf"
+        android:visible="true" />
     <item
-        android:id="@+id/menu_prf"
+        android:id="@+id/mainmenu_reconn"
         android:checkable="false"
         android:enabled="true"
-        android:icon="@android:drawable/ic_menu_manage"
-        android:title="@string/menutext_prf"
+        android:icon="@android:drawable/ic_popup_sync"
+        android:title="@string/menutext_reconn"
         android:visible="true"
         app:showAsAction="never" />
     <item
-        android:id="@+id/menu_about"
+        android:id="@+id/mainmenu_about"
         android:checkable="false"
         android:enabled="true"
         android:icon="@android:drawable/ic_menu_help"
         android:title="@string/menutext_about"
         android:visible="true" />
     <item
-        android:id="@+id/menu_quit"
+        android:id="@+id/mainmenu_quit"
         android:enabled="true"
+        android:icon="@android:drawable/ic_menu_close_clear_cancel"
         android:title="@string/menutext_quit"
         android:visible="true" />
 </menu>
\ No newline at end of file
index bc6eeae169b7a536dbbbae329893e43504bd05d9..769e0194e0c7102d6b4395ebea9438988db74948 100644 (file)
@@ -1,7 +1,7 @@
 <resources xmlns:tools="http://schemas.android.com/tools">
     <string name="server_default">tcp://ctfws-mqtt.cmukgb.org:1883</string>
 
-    <string name="app_name">CMUKGB CtFwS Timer</string>
+    <string name="app_name">CtFwS Timer</string>
     <string name="app_name_hand">CtFwS Handbook</string>
     <string name="app_name_hand_title">Handbook</string>