Turn on Data Matrix, including separate scan option in Android
[zxing.git] / android / src / com / google / zxing / client / android / PreferencesActivity.java
index 04e1441..480a1d3 100755 (executable)
@@ -23,6 +23,9 @@ import android.preference.CheckBoxPreference;
 import android.preference.PreferenceActivity;
 import android.preference.PreferenceScreen;
 
+import java.util.ArrayList;
+import java.util.Collection;
+
 /**
  * The main settings activity.
  *
@@ -33,6 +36,7 @@ public final class PreferencesActivity extends PreferenceActivity
 
   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_DECODE_DATA_MATRIX = "preferences_decode_Data_Matrix";
   public static final String KEY_CUSTOM_PRODUCT_SEARCH = "preferences_custom_product_search";
 
   public static final String KEY_PLAY_BEEP = "preferences_play_beep";
@@ -46,6 +50,7 @@ public final class PreferencesActivity extends PreferenceActivity
 
   private CheckBoxPreference decode1D;
   private CheckBoxPreference decodeQR;
+  private CheckBoxPreference decodeDataMatrix;
 
   @Override
   protected void onCreate(Bundle icicle) {
@@ -56,6 +61,7 @@ public final class PreferencesActivity extends PreferenceActivity
     preferences.getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
     decode1D = (CheckBoxPreference) preferences.findPreference(KEY_DECODE_1D);
     decodeQR = (CheckBoxPreference) preferences.findPreference(KEY_DECODE_QR);
+    decodeDataMatrix = (CheckBoxPreference) preferences.findPreference(KEY_DECODE_DATA_MATRIX);
     disableLastCheckedPref();
   }
 
@@ -64,17 +70,19 @@ public final class PreferencesActivity extends PreferenceActivity
   }
 
   private void disableLastCheckedPref() {
+    Collection<CheckBoxPreference> checked = new ArrayList<CheckBoxPreference>(3);
     if (decode1D.isChecked()) {
-      decodeQR.setEnabled(true);
-    } else {
-      decodeQR.setEnabled(false);
-      decodeQR.setChecked(true);
+      checked.add(decode1D);
     }
     if (decodeQR.isChecked()) {
-      decode1D.setEnabled(true);
-    } else {
-      decode1D.setEnabled(false);
-      decode1D.setChecked(true);
+      checked.add(decodeQR);
+    }
+    if (decodeDataMatrix.isChecked()) {
+      checked.add(decodeDataMatrix);
+    }
+    boolean disable = checked.size() < 2;
+    for (CheckBoxPreference pref : new CheckBoxPreference[] {decode1D, decodeQR, decodeDataMatrix}) {
+      pref.setEnabled(!(disable && checked.contains(pref)));
     }
   }