Merge branch 'master' of ssh://git.gag.com/scm/git/fw/altos
[fw/altos] / altosdroid / src / org / altusmetrum / AltosDroid / GoNoGoLights.java
index 0f95bc220a78dcf51a62ed870bec1dfd88acd5f1..267c90f8e57cc2f0df621f82959e5b9a344a4573 100644 (file)
@@ -20,9 +20,12 @@ package org.altusmetrum.AltosDroid;
 import android.content.res.Resources;
 import android.graphics.drawable.Drawable;
 import android.widget.ImageView;
+import android.view.View;
 
 public class GoNoGoLights {
        private Boolean state;
+       private Boolean missing;
+       private Boolean set;
 
        private ImageView red;
        private ImageView green;
@@ -35,21 +38,41 @@ public class GoNoGoLights {
                red = in_red;
                green = in_green;
                state = false;
+               missing = true;
+               set = false;
 
                dRed   = r.getDrawable(R.drawable.redled);
                dGreen = r.getDrawable(R.drawable.greenled);
                dGray  = r.getDrawable(R.drawable.grayled);
        }
 
-       public void set(Boolean s) {
-               if (s == state) return;
+       public void set(Boolean s, Boolean m) {
+               if (set && s == state && m == missing) return;
                state = s;
-               if (state) {
+               missing = m;
+               set = true;
+               if (missing) {
+                       hide();
+                       red.setImageDrawable(dGray);
+                       green.setImageDrawable(dGray);
+               } else if (state) {
                        red.setImageDrawable(dGray);
                        green.setImageDrawable(dGreen);
+                       show();
                } else {
                        red.setImageDrawable(dRed);
                        green.setImageDrawable(dGray);
+                       show();
                }
        }
+
+       public void show() {
+               red.setVisibility(View.VISIBLE);
+               green.setVisibility(View.VISIBLE);
+       }
+
+       public void hide() {
+               red.setVisibility(View.GONE);
+               green.setVisibility(View.GONE);
+       }
 }