X-Git-Url: http://git.rot13.org/?p=zxing.git;a=blobdiff_plain;f=android%2Fsrc%2Fcom%2Fgoogle%2Fzxing%2Fclient%2Fandroid%2FPreferencesActivity.java;h=480a1d3b38457090e240cd76e1bf78d1772ef3db;hp=98542ee8a1ced97dfbb14aa19538657985157414;hb=5d9dd201546fdc3263d966f598b02770edba5a6d;hpb=8071bf75293c05a8ee667b2d1263278ce48b9d94 diff --git a/android/src/com/google/zxing/client/android/PreferencesActivity.java b/android/src/com/google/zxing/client/android/PreferencesActivity.java index 98542ee8..480a1d3b 100755 --- a/android/src/com/google/zxing/client/android/PreferencesActivity.java +++ b/android/src/com/google/zxing/client/android/PreferencesActivity.java @@ -20,22 +20,37 @@ import android.content.SharedPreferences; import android.content.SharedPreferences.OnSharedPreferenceChangeListener; import android.os.Bundle; import android.preference.CheckBoxPreference; +import android.preference.PreferenceActivity; import android.preference.PreferenceScreen; -public final class PreferencesActivity extends android.preference.PreferenceActivity +import java.util.ArrayList; +import java.util.Collection; + +/** + * 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_DECODE_DATA_MATRIX = "preferences_decode_Data_Matrix"; + 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; + private CheckBoxPreference decodeDataMatrix; @Override protected void onCreate(Bundle icicle) { @@ -44,18 +59,30 @@ public final class PreferencesActivity extends android.preference.PreferenceActi 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); + decodeDataMatrix = (CheckBoxPreference) preferences.findPreference(KEY_DECODE_DATA_MATRIX); + 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() { + Collection checked = new ArrayList(3); + if (decode1D.isChecked()) { + checked.add(decode1D); + } + if (decodeQR.isChecked()) { + 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))); } }