]> hydra-www.ietfng.org Git - acmetensortoys-ctfws-android/commitdiff
Tidying as per studio inspector
authorNathaniel Wesley Filardo <nwf@cs.jhu.edu>
Tue, 21 Feb 2017 02:50:22 +0000 (21:50 -0500)
committerNathaniel Wesley Filardo <nwf@cs.jhu.edu>
Tue, 21 Feb 2017 02:50:22 +0000 (21:50 -0500)
No functionality changes, I hope

13 files changed:
lib/src/main/java/com/acmetensortoys/ctfwstimer/lib/CtFwSGameState.java
mobile/src/main/java/com/acmetensortoys/ctfwstimer/CtFwSCallbacksMQTT.java
mobile/src/main/java/com/acmetensortoys/ctfwstimer/CtFwSDisplayLocal.java
mobile/src/main/java/com/acmetensortoys/ctfwstimer/DefaultableEditTextPreference.java
mobile/src/main/java/com/acmetensortoys/ctfwstimer/MainActivity.java
mobile/src/main/java/com/acmetensortoys/ctfwstimer/MainActivityBuildHooks.java
mobile/src/main/java/com/acmetensortoys/ctfwstimer/MainService.java
mobile/src/main/java/com/acmetensortoys/ctfwstimer/MainServiceNotification.java
mobile/src/main/res/layout/activity_about.xml
mobile/src/main/res/layout/activity_main.xml
mobile/src/main/res/values/stringplurals.xml [new file with mode: 0644]
mobile/src/main/res/values/strings.xml
wear/build.gradle

index cdd78f4f9229cab6b38ca8460bc647b76c5499e7..c83b38d4b80e4366148052d156e9e9aba6a22b1f 100644 (file)
@@ -15,7 +15,7 @@ public class CtFwSGameState {
         void postDelay(Runnable r, long delayMS);
         void cancelPost(Runnable r);
     }
-    private TimerProvider mT;
+    private final TimerProvider mT;
 
     public CtFwSGameState (TimerProvider t) {
         mT = t;
@@ -168,15 +168,15 @@ public class CtFwSGameState {
     // Informative messages handling
 
     public class Msg {
-        public long when;
-        public String msg;
+        public final long when;
+        public final String msg;
 
         Msg(long when, String msg) {
             this.when = when;
             this.msg  = msg;
         }
     }
-    private List<Msg> msgs = new ArrayList<>();
+    private final List<Msg> msgs = new ArrayList<>();
     private long lastMsgTimestamp;
 
     public void onNewMessage(String str) {
index 27d06e4b797fa784423f5c49dfdd2424a2d5700f..25bf3ff0450026e29a63ee6a745d5a58d87b085b 100644 (file)
@@ -14,7 +14,7 @@ class CtFwSCallbacksMQTT {
         mCgs = cgs;
     }
 
-    IMqttMessageListener onConfig = new IMqttMessageListener() {
+    final IMqttMessageListener onConfig = new IMqttMessageListener() {
         @Override
         public void messageArrived(String topic, MqttMessage message) throws Exception {
             String tm = message.toString().trim();
@@ -23,7 +23,7 @@ class CtFwSCallbacksMQTT {
         }
     };
 
-    IMqttMessageListener onEnd = new IMqttMessageListener() {
+    final IMqttMessageListener onEnd = new IMqttMessageListener() {
         @Override
         public void messageArrived(String topic, MqttMessage message) throws Exception {
             Log.d("CtFwS", "Message(End): " + message);
@@ -37,7 +37,7 @@ class CtFwSCallbacksMQTT {
         }
     };
 
-    IMqttMessageListener onFlags = new IMqttMessageListener() {
+    final IMqttMessageListener onFlags = new IMqttMessageListener() {
         @Override
         public void messageArrived(String topic, MqttMessage message) throws Exception {
             String tm = message.toString().trim();
@@ -46,7 +46,7 @@ class CtFwSCallbacksMQTT {
         }
     };
 
-    IMqttMessageListener onMessage = new IMqttMessageListener() {
+    final IMqttMessageListener onMessage = new IMqttMessageListener() {
         @Override
         public void messageArrived(String topic, MqttMessage message) throws Exception {
             String str = message.toString();
@@ -55,7 +55,7 @@ class CtFwSCallbacksMQTT {
         }
     };
 
-    IMqttMessageListener onPlayerMessage = new IMqttMessageListener() {
+    final IMqttMessageListener onPlayerMessage = new IMqttMessageListener() {
         @Override
         public void messageArrived(String topic, MqttMessage message) throws Exception {
             String str = message.toString();
index e7805330d9af1595d97da7e939b1147ea2328f64..2fc574ca966866fd769efaaa5a4426ba238afafb 100644 (file)
@@ -1,7 +1,6 @@
 package com.acmetensortoys.ctfwstimer;
 
 import android.app.Activity;
-import android.os.Handler;
 import android.os.SystemClock;
 import android.text.format.DateUtils;
 import android.util.Log;
@@ -19,15 +18,13 @@ import static android.view.View.INVISIBLE;
 // TODO nwf is bad at UI design; someone who isn't him should improve this
 class CtFwSDisplayLocal implements CtFwSGameState.Observer {
     final private Activity mAct;
-    public String gameStateLabelText;
+    String gameStateLabelText;
 
     CtFwSDisplayLocal(Activity a) {
         mAct = a;
         gameStateLabelText = mAct.getResources().getString(R.string.header_gamestate0);
     }
 
-    private Runnable mProber;
-
     @Override
     public void onCtFwSConfigure(final CtFwSGameState gs) {
         int gameix = gs.getGameIx();
@@ -65,6 +62,7 @@ class CtFwSDisplayLocal implements CtFwSGameState.Observer {
         }
         // Otherwise, it's game on!
 
+        // Upper line text
         {
             final TextView tv_jb = (TextView) (mAct.findViewById(R.id.tv_jailbreak));
             tv_jb.post(new Runnable() {
@@ -81,7 +79,13 @@ class CtFwSDisplayLocal implements CtFwSGameState.Observer {
                     }
                 }
             });
+        }
 
+        // Upper progress bar and chronometer
+        // TODO: Older devices cannot count down in Chronometer, so will see only zeros, I
+        // think.  This should be fixed by making those devices count up (and still rendering
+        // the progress bar rotated for decreasing, one assumes).
+        {
             final ProgressBar pb_jb = (ProgressBar) (mAct.findViewById(R.id.pb_jailbreak));
             pb_jb.post(new Runnable() {
                 @Override
@@ -107,6 +111,8 @@ class CtFwSDisplayLocal implements CtFwSGameState.Observer {
                 }
             });
         }
+
+        // Lower progress bar and chronometer
         if (now.round > 0) {
             final ProgressBar pb_gp = (ProgressBar) (mAct.findViewById(R.id.pb_gameProgress));
             pb_gp.post(new Runnable() {
@@ -147,6 +153,7 @@ class CtFwSDisplayLocal implements CtFwSGameState.Observer {
             ch_gp.post(new Runnable() {
                 @Override
                 public void run() {
+                    ch_gp.setOnChronometerTickListener(null);
                     ch_gp.stop();
                     ch_gp.setVisibility(INVISIBLE);
                 }
@@ -157,8 +164,8 @@ class CtFwSDisplayLocal implements CtFwSGameState.Observer {
             tv_flags.post(new Runnable() {
                 @Override
                 public void run() {
-                    tv_flags.setText(
-                            String.format(mAct.getResources().getString(R.string.ctfws_flags), gs.flagsTotal));
+                    tv_flags.setText(mAct.getResources()
+                            .getQuantityString(R.plurals.ctfws_flags,gs.flagsTotal,gs.flagsTotal));
                 }
             });
         }
@@ -183,6 +190,7 @@ class CtFwSDisplayLocal implements CtFwSGameState.Observer {
             ch.post(new Runnable() {
                 @Override
                 public void run() {
+                    ch.setOnChronometerTickListener(null);
                     ch.stop();
                     ch.setVisibility(View.INVISIBLE);
                 }
index 33656e1cf6723abb9c6ace51254610d756fd6a26..defece145c33d00a7e3e222a8c598324e69f772c 100644 (file)
@@ -2,13 +2,11 @@ package com.acmetensortoys.ctfwstimer;
 
 import android.app.AlertDialog;
 import android.content.Context;
-import android.content.DialogInterface;
 import android.content.res.TypedArray;
 import android.os.Bundle;
 import android.preference.EditTextPreference;
 import android.util.AttributeSet;
 import android.view.View;
-import android.widget.Button;
 
 public class DefaultableEditTextPreference extends EditTextPreference {
     // GAH!  Our parent Preference has this as a private field.  Grrr Android!
index 000a98daa155a79f09a5447f01c683d0bffddd6b..55ee8a2bbf45db1c98b52d814717398a32561b8f 100644 (file)
@@ -25,10 +25,10 @@ public class MainActivity extends AppCompatActivity {
     // TODO surely this belongs somewhere else
     private static final String defserver = "tcp://ctfws-mqtt.ietfng.org:1883";
 
-    private MainActivityBuildHooks mabh = new MainActivityBuildHooksImpl();
+    private final MainActivityBuildHooks mabh = new MainActivityBuildHooksImpl();
 
     private MainService.LocalBinder mSrvBinder; // set once connection completed
-    private MainService.Observer mSrvObs = new MainService.Observer() {
+    private final MainService.Observer mSrvObs = new MainService.Observer() {
         @Override
         public void onMqttServerChanged(MainService.LocalBinder b, final String sURL) {
             mTvSU.post(new Runnable() {
@@ -82,7 +82,7 @@ public class MainActivity extends AppCompatActivity {
         mCdl = new CtFwSDisplayLocal(this);
     }
 
-    private ServiceConnection ctfwssc = new ServiceConnection() {
+    private final ServiceConnection ctfwssc = new ServiceConnection() {
         @Override
         public void onServiceConnected(ComponentName name, IBinder service) {
             mSrvBinder = (MainService.LocalBinder) service;
@@ -154,7 +154,7 @@ public class MainActivity extends AppCompatActivity {
     }
 
     // Kick the mqtt layer on a click on the status stuff
-    public void onclick_connmeta(View v) {
+    public void onclick_connmeta(@SuppressWarnings("UnusedParameters") View v) {
         mSrvBinder.connect(true);
     }
 
index 8d8098ab0885fd609c7028a81af0a7df3e1c8350..6f381f4f60071c48d1c2463fda3968b5bc37920f 100644 (file)
@@ -1,7 +1,5 @@
 package com.acmetensortoys.ctfwstimer;
 
-import com.acmetensortoys.ctfwstimer.lib.CtFwSGameState;
-
 // The MainActivity expects a "MainActivityBuildHooksImpl" class that ascribes to this interface
 // per build flavor.  This will be used when, for example, we kick on Google Play for Wear
 // interaction and want to push messages out to the wearable data network.
index 399e1b127d1bd103974579956fd554eb4a81f017..970aab5b0181d1ec286114b5e74ccb0f50859654 100644 (file)
@@ -25,7 +25,6 @@ import org.eclipse.paho.client.mqttv3.MqttException;
 import org.eclipse.paho.client.mqttv3.MqttMessage;
 
 import java.util.HashSet;
-import java.util.List;
 import java.util.Set;
 
 public class MainService extends Service {
@@ -51,8 +50,9 @@ public class MainService extends Service {
             mHandler.removeCallbacks(r);
         }
     });
-    private CtFwSCallbacksMQTT mCtfwscbs = new CtFwSCallbacksMQTT(mCgs);
+    private final CtFwSCallbacksMQTT mCtfwscbs = new CtFwSCallbacksMQTT(mCgs);
 
+    @SuppressWarnings({"FieldCanBeLocal", "unused"})
     private MainServiceNotification mMsn; // set in onCreate
 
     public MainService() { }
@@ -268,9 +268,6 @@ public class MainService extends Service {
         CtFwSGameState getGameState() {
             return mCgs;
         }
-        MqttServerEvent getServerState() {
-            return mMSE;
-        }
 
         // It should not be necessary to call this except at the beginning or to force a reconnect;
         // most everything else you might want in a connect method is handled by the
@@ -300,7 +297,7 @@ public class MainService extends Service {
             synchronized(this) { mObsvs.remove(o); }
         }
     }
-    private LocalBinder mBinder = new LocalBinder();
+    private final LocalBinder mBinder = new LocalBinder();
 
     @Override
     public IBinder onBind(Intent intent) {
index 21da30c3144757ec57d6d2655e191fe8ebbfb2a9..47e67e92c243a4e688293604b7dd836b88590f4b 100644 (file)
@@ -17,7 +17,7 @@ import java.util.List;
 
 class MainServiceNotification {
     final private MainService mService;
-    private NotificationCompat.Builder userNoteBuilder;
+    private final NotificationCompat.Builder userNoteBuilder;
 
     MainServiceNotification(MainService ms, CtFwSGameState game){
         mService = ms;
@@ -93,9 +93,9 @@ class MainServiceNotification {
         });
     }
 
-    private long[] VIBRATE_PATTERN_NOW  = {0, 100, 100, 300, 100, 300, 100, 300}; // 'J' = .---
-    private long[] VIBRATE_PATTERN_FLAG = {0, 100, 100, 100, 100, 300, 100, 100}; // 'F' = ..-.
-    private long[] VIBRATE_PATTERN_MSG  = {0, 300, 100, 300};                     // 'M' = --
+    private final long[] VIBRATE_PATTERN_NOW  = {0, 100, 100, 300, 100, 300, 100, 300}; // 'J' = .---
+    private final long[] VIBRATE_PATTERN_FLAG = {0, 100, 100, 100, 100, 300, 100, 100}; // 'F' = ..-.
+    private final long[] VIBRATE_PATTERN_MSG  = {0, 300, 100, 300};                     // 'M' = --
 
     private void vibrate(long[] pattern) {
         SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(mService.getBaseContext());
index 3ea262a1b67e339b6f30b8e0b7f55754df8226a4..2d2777d3a09dac9991bced2d52ebbdc124b0f6f1 100644 (file)
@@ -43,7 +43,8 @@
                         android:layout_height="wrap_content"
                         app:srcCompat="@drawable/shield1"
                         android:id="@+id/about_image"
-                        android:layout_above="@+id/about_text" />
+                        android:layout_above="@+id/about_text"
+                        android:contentDescription="@string/about_imagealt"/>
 
                     <WebView
                         android:layout_width="match_parent"
index ef3f4887eb80cca6edab751f9279d300729c90e2..059d4fa6ec3534bdcac591e2ea70bfbec893ae07 100644 (file)
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
                     android:text="@string/mqtt_uri_label"
-                    android:gravity="right" />
+                    android:gravity="end" />
 
                 <TextView
                     android:layout_width="wrap_content"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
                     android:text="@string/mqtt_state_label"
-                    android:gravity="right" />
+                    android:gravity="end" />
 
                 <TextView
                     android:layout_width="wrap_content"
diff --git a/mobile/src/main/res/values/stringplurals.xml b/mobile/src/main/res/values/stringplurals.xml
new file mode 100644 (file)
index 0000000..e0007fc
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <plurals name="ctfws_flags">
+        <item quantity="one">%1$d Flag:</item>
+        <item quantity="other">%1$d Flags:</item>
+    </plurals>
+</resources>
\ No newline at end of file
index a5360ab62781057b1b1c479aeed6bba9f1238fb1..e035cef73cde5c484bd289bdbe19f37e798dad87 100644 (file)
@@ -1,20 +1,19 @@
-<resources>
+<resources xmlns:tools="http://schemas.android.com/tools">
     <string name="app_name">CMUKGB CtFwS Timer</string>
 
     <string name="ctfws_gameend">Game\nEnd</string>
     <string name="ctfws_gamestart">Game\nStart</string>
     <string name="ctfws_jailbreak">Jailbreak\n%1$d of %2$d</string>
-    <string name="ctfws_flags">%1$d Flags:</string>
 
     <string name="dialog_reset">Default</string>
 
     <string name="header_gamestate0">Game State:</string>
-    <string name="header_gamestateN">Game %1$d State:</string>
+    <string name="header_gamestateN" tools:ignore="PluralsCandidate">Game %1$d State:</string>
     <string name="header_gametimeela">Game\nTime\nElapsed</string>
     <string name="header_messages">Messages:</string>
 
     <string name="notify_afoot">The game\'s afoot!</string>
-    <string name="notify_flags">Flag captured! Red:%1$d Yellow:%2$d</string>
+    <string name="notify_flags" tools:ignore="PluralsCandidate">Flag captured! Red:%1$d Yellow:%2$d</string>
     <string name="notify_gameend">Game ending soon</string>
     <string name="notify_gamestart">Setup phase</string>
     <string name="notify_jailbreak">Jailbreak %1$d of %2$d</string>
@@ -34,6 +33,7 @@
 
     <string name="string_null">&lt;&lt;null&gt;&gt;</string>
 
+    <string name="about_imagealt">The CMUKGB Shield Logo</string>
     <string name="about_text"><![CDATA[
         <center>
           <a href="http://www.cmukgb.org/activities/ctfws.php">Capture The Flag With Stuff Rules</a>
index 04d222e002d4ed97a103dd22156c9058cbac505f..00fb36aadf20501a1a526cb3f7b6e4d382e7a1ae 100644 (file)
@@ -1,7 +1,7 @@
 apply plugin: 'com.android.application'
 
 android {
-    compileSdkVersion 24
+    compileSdkVersion 25
     buildToolsVersion "25.0.2"
     defaultConfig {
         applicationId "com.acmetensortoys.ctfwstimer"