Make sure checkboxes are enabled correctly on first load
[zxing.git] / android / src / com / google / zxing / client / android / PreferencesActivity.java
index 847f4fb..04e1441 100755 (executable)
@@ -23,21 +23,29 @@ import android.preference.CheckBoxPreference;
 import android.preference.PreferenceActivity;
 import android.preference.PreferenceScreen;
 
+/**
+ * The main settings activity.
+ *
+ * @author dswitkin@google.com (Daniel Switkin)
+ */
 public final class PreferencesActivity extends PreferenceActivity
     implements OnSharedPreferenceChangeListener {
 
-  static final String KEY_DECODE_1D = "preferences_decode_1D";
-  static final String KEY_DECODE_QR = "preferences_decode_QR";
+  public static final String KEY_DECODE_1D = "preferences_decode_1D";
+  public static final String KEY_DECODE_QR = "preferences_decode_QR";
   public static final String KEY_CUSTOM_PRODUCT_SEARCH = "preferences_custom_product_search";
 
-  static final String KEY_PLAY_BEEP = "preferences_play_beep";
-  static final String KEY_VIBRATE = "preferences_vibrate";
-  static final String KEY_COPY_TO_CLIPBOARD = "preferences_copy_to_clipboard";
+  public static final String KEY_PLAY_BEEP = "preferences_play_beep";
+  public static final String KEY_VIBRATE = "preferences_vibrate";
+  public static final String KEY_COPY_TO_CLIPBOARD = "preferences_copy_to_clipboard";
+  public static final String KEY_FRONT_LIGHT = "preferences_front_light";
+  public static final String KEY_BULK_MODE = "preferences_bulk_mode";
 
-  static final String KEY_HELP_VERSION_SHOWN = "preferences_help_version_shown";
+  public static final String KEY_HELP_VERSION_SHOWN = "preferences_help_version_shown";
+  public static final String KEY_NOT_OUR_RESULTS_SHOWN = "preferences_not_out_results_shown";
 
-  CheckBoxPreference mDecode1D;
-  CheckBoxPreference mDecodeQR;
+  private CheckBoxPreference decode1D;
+  private CheckBoxPreference decodeQR;
 
   @Override
   protected void onCreate(Bundle icicle) {
@@ -46,18 +54,27 @@ public final class PreferencesActivity extends PreferenceActivity
 
     PreferenceScreen preferences = getPreferenceScreen();
     preferences.getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
-    mDecode1D = (CheckBoxPreference) preferences.findPreference(KEY_DECODE_1D);
-    mDecodeQR = (CheckBoxPreference) preferences.findPreference(KEY_DECODE_QR);
+    decode1D = (CheckBoxPreference) preferences.findPreference(KEY_DECODE_1D);
+    decodeQR = (CheckBoxPreference) preferences.findPreference(KEY_DECODE_QR);
+    disableLastCheckedPref();
   }
 
-  // Prevent the user from turning off both decode options
   public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
-    if (key.equals(KEY_DECODE_1D)) {
-      mDecodeQR.setEnabled(mDecode1D.isChecked());
-      mDecodeQR.setChecked(true);
-    } else if (key.equals(KEY_DECODE_QR)) {
-      mDecode1D.setEnabled(mDecodeQR.isChecked());
-      mDecode1D.setChecked(true);
+    disableLastCheckedPref();
+  }
+
+  private void disableLastCheckedPref() {
+    if (decode1D.isChecked()) {
+      decodeQR.setEnabled(true);
+    } else {
+      decodeQR.setEnabled(false);
+      decodeQR.setChecked(true);
+    }
+    if (decodeQR.isChecked()) {
+      decode1D.setEnabled(true);
+    } else {
+      decode1D.setEnabled(false);
+      decode1D.setChecked(true);
     }
   }