Merge "OmniGears: FR translation" into android-4.4
diff --git a/src/org/omnirom/omnigears/chameleonos/ActiveDisplaySettings.java b/src/org/omnirom/omnigears/chameleonos/ActiveDisplaySettings.java
index 6b40642..b13c80b 100644
--- a/src/org/omnirom/omnigears/chameleonos/ActiveDisplaySettings.java
+++ b/src/org/omnirom/omnigears/chameleonos/ActiveDisplaySettings.java
@@ -19,7 +19,6 @@
 import android.app.Activity;
 import android.content.ContentResolver;
 import android.content.Context;
-import android.hardware.SensorManager;
 import android.os.Bundle;
 import android.os.PowerManager;
 import android.preference.CheckBoxPreference;
@@ -30,17 +29,17 @@
 import android.preference.SwitchPreference;
 import android.provider.Settings;
 import android.provider.Settings.SettingNotFoundException;
+import android.text.format.DateFormat;
 import android.text.TextUtils;
 import com.android.settings.R;
 import com.android.settings.SettingsPreferenceFragment;
 
+import com.android.internal.util.omni.DeviceUtils;
+
 import java.util.Arrays;
 import java.util.HashSet;
 import java.util.Set;
 
-import static android.hardware.Sensor.TYPE_LIGHT;
-import static android.hardware.Sensor.TYPE_PROXIMITY;
-
 public class ActiveDisplaySettings extends SettingsPreferenceFragment implements
         OnPreferenceChangeListener {
     private static final String TAG = "ActiveDisplaySettings";
@@ -92,84 +91,103 @@
 
         mContext = getActivity().getApplicationContext();
         mResolver = mContext.getContentResolver();
+        PreferenceScreen prefSet = getPreferenceScreen();
 
-        mEnabledPref = (SwitchPreference) findPreference(KEY_ENABLED);
+        mEnabledPref = (SwitchPreference) prefSet.findPreference(KEY_ENABLED);
         mEnabledPref.setChecked((Settings.System.getInt(mResolver,
                 Settings.System.ENABLE_ACTIVE_DISPLAY, 0) == 1));
         mEnabledPref.setOnPreferenceChangeListener(this);
 
-        mShowTextPref = (CheckBoxPreference) findPreference(KEY_SHOW_TEXT);
+        mShowTextPref = (CheckBoxPreference) prefSet.findPreference(KEY_SHOW_TEXT);
         mShowTextPref.setChecked((Settings.System.getInt(mResolver,
                 Settings.System.ACTIVE_DISPLAY_TEXT, 0) == 1));
 
-        mShowContentPref = (CheckBoxPreference) findPreference(KEY_SHOW_CONTENT);
+        mShowContentPref = (CheckBoxPreference) prefSet.findPreference(KEY_SHOW_CONTENT);
         mShowContentPref.setChecked((Settings.System.getInt(mResolver,
                 Settings.System.ACTIVE_DISPLAY_CONTENT, 1) != 0));
 
-        mBypassPref = (CheckBoxPreference) findPreference(KEY_BYPASS_CONTENT);
-        mBypassPref.setChecked((Settings.System.getInt(mResolver,
+        mBypassPref = (CheckBoxPreference) prefSet.findPreference(KEY_BYPASS_CONTENT);
+        mPocketModePref = (ListPreference) prefSet.findPreference(KEY_POCKET_MODE);
+        mProximityThreshold = (ListPreference) prefSet.findPreference(KEY_THRESHOLD);
+        mTurnOffModePref = (CheckBoxPreference) prefSet.findPreference(KEY_TURNOFF_MODE);
+
+        if (!DeviceUtils.deviceSupportsProximitySensor(mContext)) {
+            prefSet.removePreference(mPocketModePref);
+            prefSet.removePreference(mBypassPref);
+            prefSet.removePreference(mProximityThreshold);
+            prefSet.removePreference(mTurnOffModePref);
+        } else {
+            mBypassPref.setChecked((Settings.System.getInt(mResolver,
                 Settings.System.ACTIVE_DISPLAY_BYPASS, 1) != 0));
 
-        mAllNotificationsPref = (CheckBoxPreference) findPreference(KEY_ALL_NOTIFICATIONS);
+            int mode = Settings.System.getInt(mResolver,
+                    Settings.System.ACTIVE_DISPLAY_POCKET_MODE, 0);
+            mPocketModePref.setValue(String.valueOf(mode));
+            updatePocketModeSummary(mode);
+            mPocketModePref.setOnPreferenceChangeListener(this);
+
+            long threshold = Settings.System.getLong(mResolver,
+                Settings.System.ACTIVE_DISPLAY_THRESHOLD, 5000L);
+            mProximityThreshold.setValue(String.valueOf(threshold));
+            updateThresholdSummary(threshold);
+            mProximityThreshold.setOnPreferenceChangeListener(this);
+
+            mTurnOffModePref.setChecked((Settings.System.getInt(mResolver,
+                Settings.System.ACTIVE_DISPLAY_TURNOFF_MODE, 0) == 1));
+        }
+
+        mAllNotificationsPref = (CheckBoxPreference) prefSet.findPreference(KEY_ALL_NOTIFICATIONS);
         mAllNotificationsPref.setChecked((Settings.System.getInt(mResolver,
                 Settings.System.ACTIVE_DISPLAY_ALL_NOTIFICATIONS, 0) == 1));
 
-        mHideLowPriorityPref = (CheckBoxPreference) findPreference(KEY_HIDE_LOW_PRIORITY);
+        mHideLowPriorityPref = (CheckBoxPreference) prefSet.findPreference(KEY_HIDE_LOW_PRIORITY);
         mHideLowPriorityPref.setChecked((Settings.System.getInt(mResolver,
                 Settings.System.ACTIVE_DISPLAY_HIDE_LOW_PRIORITY_NOTIFICATIONS, 0) == 1));
 
-        mPocketModePref = (ListPreference) findPreference(KEY_POCKET_MODE);
-        mPocketModePref.setOnPreferenceChangeListener(this);
-        int mode = Settings.System.getInt(mResolver,
-                    Settings.System.ACTIVE_DISPLAY_POCKET_MODE, 0);
-        mPocketModePref.setValue(String.valueOf(mode));
-        updatePocketModeSummary(mode);
-        if (!hasProximitySensor()) {
-            getPreferenceScreen().removePreference(mPocketModePref);
-        }
+        mSunlightModePref = (CheckBoxPreference) prefSet.findPreference(KEY_SUNLIGHT_MODE);
 
-        mSunlightModePref = (CheckBoxPreference) findPreference(KEY_SUNLIGHT_MODE);
-        mSunlightModePref.setChecked((Settings.System.getInt(mResolver,
+        if (!DeviceUtils.deviceSupportsLightSensor(mContext)) {
+            prefSet.removePreference(mSunlightModePref);
+        } else {
+            mSunlightModePref.setChecked((Settings.System.getInt(mResolver,
                 Settings.System.ACTIVE_DISPLAY_SUNLIGHT_MODE, 0) == 1));
-        if (!hasLightSensor()) {
-            getPreferenceScreen().removePreference(mSunlightModePref);
         }
 
-        PreferenceScreen prefSet = getPreferenceScreen();
         mRedisplayPref = (ListPreference) prefSet.findPreference(KEY_REDISPLAY);
-        mRedisplayPref.setOnPreferenceChangeListener(this);
         long timeout = Settings.System.getLong(mResolver,
                 Settings.System.ACTIVE_DISPLAY_REDISPLAY, 0);
         mRedisplayPref.setValue(String.valueOf(timeout));
         updateRedisplaySummary(timeout);
+        mRedisplayPref.setOnPreferenceChangeListener(this);
 
-        mExcludedAppsPref = (AppMultiSelectListPreference) findPreference(KEY_EXCLUDED_APPS);
+        mExcludedAppsPref = (AppMultiSelectListPreference) prefSet.findPreference(KEY_EXCLUDED_APPS);
         Set<String> excludedApps = getExcludedApps();
         if (excludedApps != null) mExcludedAppsPref.setValues(excludedApps);
         mExcludedAppsPref.setOnPreferenceChangeListener(this);
 
-        mPrivacyAppsPref = (AppMultiSelectListPreference) findPreference(KEY_PRIVACY_APPS);
+        mPrivacyAppsPref = (AppMultiSelectListPreference) prefSet.findPreference(KEY_PRIVACY_APPS);
         Set<String> privacyApps = getPrivacyApps();
         if (privacyApps != null) mPrivacyAppsPref.setValues(privacyApps);
         mPrivacyAppsPref.setOnPreferenceChangeListener(this);
 
-        mShowDatePref = (CheckBoxPreference) findPreference(KEY_SHOW_DATE);
+        mShowDatePref = (CheckBoxPreference) prefSet.findPreference(KEY_SHOW_DATE);
         mShowDatePref.setChecked((Settings.System.getInt(mResolver,
                 Settings.System.ACTIVE_DISPLAY_SHOW_DATE, 0) == 1));
 
-        mShowAmPmPref = (CheckBoxPreference) findPreference(KEY_SHOW_AMPM);
+        mShowAmPmPref = (CheckBoxPreference) prefSet.findPreference(KEY_SHOW_AMPM);
         mShowAmPmPref.setChecked((Settings.System.getInt(mResolver,
                 Settings.System.ACTIVE_DISPLAY_SHOW_AMPM, 0) == 1));
+        mShowAmPmPref.setEnabled(!is24Hour());
 
         PowerManager pm = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE);
         int minimumBacklight = pm.getMinimumScreenBrightnessSetting();
         int maximumBacklight = pm.getMaximumScreenBrightnessSetting();
 
-        mBrightnessLevel = (SeekBarPreference) findPreference(KEY_BRIGHTNESS);
+        mBrightnessLevel = (SeekBarPreference) prefSet.findPreference(KEY_BRIGHTNESS);
         mBrightnessLevel.setMaxValue(maximumBacklight - minimumBacklight);
         mBrightnessLevel.setMinValue(minimumBacklight);
         mBrightnessLevel.setValue(Settings.System.getInt(mResolver,
-                Settings.System.ACTIVE_DISPLAY_BRIGHTNESS, maximumBacklight));
+                Settings.System.ACTIVE_DISPLAY_BRIGHTNESS, maximumBacklight) - minimumBacklight);
         mBrightnessLevel.setOnPreferenceChangeListener(this);
 
         try {
@@ -187,17 +205,6 @@
                 Settings.System.ACTIVE_DISPLAY_TIMEOUT, 8000L);
         mDisplayTimeout.setValue(String.valueOf(timeout));
         updateTimeoutSummary(timeout);
-
-        mProximityThreshold = (ListPreference) prefSet.findPreference(KEY_THRESHOLD);
-        mProximityThreshold.setOnPreferenceChangeListener(this);
-        long threshold = Settings.System.getLong(mResolver,
-                Settings.System.ACTIVE_DISPLAY_THRESHOLD, 5000L);
-        mProximityThreshold.setValue(String.valueOf(threshold));
-        updateThresholdSummary(threshold);
-
-        mTurnOffModePref = (CheckBoxPreference) findPreference(KEY_TURNOFF_MODE);
-        mTurnOffModePref.setChecked((Settings.System.getInt(mResolver,
-                Settings.System.ACTIVE_DISPLAY_TURNOFF_MODE, 0) == 1));
     }
 
     @Override
@@ -324,16 +331,6 @@
         }
     }
 
-    private boolean hasProximitySensor() {
-        SensorManager sm = (SensorManager) mContext.getSystemService(Context.SENSOR_SERVICE);
-        return sm.getDefaultSensor(TYPE_PROXIMITY) != null;
-    }
-
-    private boolean hasLightSensor() {
-        SensorManager sm = (SensorManager) mContext.getSystemService(Context.SENSOR_SERVICE);
-        return sm.getDefaultSensor(TYPE_LIGHT) != null;
-    }
-
     private Set<String> getExcludedApps() {
         String excluded = Settings.System.getString(mResolver,
                 Settings.System.ACTIVE_DISPLAY_EXCLUDED_APPS);
@@ -375,4 +372,8 @@
         Settings.System.putString(mResolver,
                 Settings.System.ACTIVE_DISPLAY_PRIVACY_APPS, builder.toString());
     }
+
+    private boolean is24Hour() {
+        return DateFormat.is24HourFormat(mContext);
+    }
 }
diff --git a/src/org/omnirom/omnigears/preference/GlobalCheckBoxPreference.java b/src/org/omnirom/omnigears/preference/GlobalCheckBoxPreference.java
new file mode 100644
index 0000000..0ba460f
--- /dev/null
+++ b/src/org/omnirom/omnigears/preference/GlobalCheckBoxPreference.java
@@ -0,0 +1,67 @@
+/*
+ * Copyright (C) 2013 The CyanogenMod project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.omnirom.omnigears.preference;
+
+import android.content.Context;
+import android.preference.CheckBoxPreference;
+import android.provider.Settings;
+import android.util.AttributeSet;
+
+public class GlobalCheckBoxPreference extends CheckBoxPreference {
+    public GlobalCheckBoxPreference(Context context, AttributeSet attrs, int defStyle) {
+        super(context, attrs, defStyle);
+    }
+
+    public GlobalCheckBoxPreference(Context context, AttributeSet attrs) {
+        super(context, attrs);
+    }
+
+    public GlobalCheckBoxPreference(Context context) {
+        super(context, null);
+    }
+
+    @Override
+    protected boolean persistBoolean(boolean value) {
+        if (shouldPersist()) {
+            if (value == getPersistedBoolean(!value)) {
+                // It's already there, so the same as persisting
+                return true;
+            }
+
+            Settings.Global.putInt(getContext().getContentResolver(), getKey(), value ? 1 : 0);
+            return true;
+        }
+        return false;
+    }
+
+    @Override
+    protected boolean getPersistedBoolean(boolean defaultReturnValue) {
+        if (!shouldPersist()) {
+            return defaultReturnValue;
+        }
+
+        return Settings.Global.getInt(getContext().getContentResolver(),
+                getKey(), defaultReturnValue ? 1 : 0) != 0;
+    }
+
+    @Override
+    protected boolean isPersisted() {
+        // Using getString instead of getInt so we can simply check for null
+        // instead of catching an exception. (All values are stored as strings.)
+        return Settings.Global.getString(getContext().getContentResolver(), getKey()) != null;
+    }
+}
diff --git a/src/org/omnirom/omnigears/preference/SecureCheckBoxPreference.java b/src/org/omnirom/omnigears/preference/SecureCheckBoxPreference.java
new file mode 100644
index 0000000..8f4e3f9
--- /dev/null
+++ b/src/org/omnirom/omnigears/preference/SecureCheckBoxPreference.java
@@ -0,0 +1,67 @@
+/*
+ * Copyright (C) 2013 The CyanogenMod project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.omnirom.omnigears.preference;
+
+import android.content.Context;
+import android.preference.CheckBoxPreference;
+import android.provider.Settings;
+import android.util.AttributeSet;
+
+public class SecureCheckBoxPreference extends CheckBoxPreference {
+    public SecureCheckBoxPreference(Context context, AttributeSet attrs, int defStyle) {
+        super(context, attrs, defStyle);
+    }
+
+    public SecureCheckBoxPreference(Context context, AttributeSet attrs) {
+        super(context, attrs);
+    }
+
+    public SecureCheckBoxPreference(Context context) {
+        super(context, null);
+    }
+
+    @Override
+    protected boolean persistBoolean(boolean value) {
+        if (shouldPersist()) {
+            if (value == getPersistedBoolean(!value)) {
+                // It's already there, so the same as persisting
+                return true;
+            }
+
+            Settings.Secure.putInt(getContext().getContentResolver(), getKey(), value ? 1 : 0);
+            return true;
+        }
+        return false;
+    }
+
+    @Override
+    protected boolean getPersistedBoolean(boolean defaultReturnValue) {
+        if (!shouldPersist()) {
+            return defaultReturnValue;
+        }
+
+        return Settings.Secure.getInt(getContext().getContentResolver(),
+                getKey(), defaultReturnValue ? 1 : 0) != 0;
+    }
+
+    @Override
+    protected boolean isPersisted() {
+        // Using getString instead of getInt so we can simply check for null
+        // instead of catching an exception. (All values are stored as strings.)
+        return Settings.Secure.getString(getContext().getContentResolver(), getKey()) != null;
+    }
+}
diff --git a/src/org/omnirom/omnigears/preference/SystemCheckBoxPreference.java b/src/org/omnirom/omnigears/preference/SystemCheckBoxPreference.java
new file mode 100644
index 0000000..8a099e7
--- /dev/null
+++ b/src/org/omnirom/omnigears/preference/SystemCheckBoxPreference.java
@@ -0,0 +1,67 @@
+/*
+ * Copyright (C) 2013 The CyanogenMod project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.omnirom.omnigears.preference;
+
+import android.content.Context;
+import android.preference.CheckBoxPreference;
+import android.provider.Settings;
+import android.util.AttributeSet;
+
+public class SystemCheckBoxPreference extends CheckBoxPreference {
+    public SystemCheckBoxPreference(Context context, AttributeSet attrs, int defStyle) {
+        super(context, attrs, defStyle);
+    }
+
+    public SystemCheckBoxPreference(Context context, AttributeSet attrs) {
+        super(context, attrs);
+    }
+
+    public SystemCheckBoxPreference(Context context) {
+        super(context, null);
+    }
+
+    @Override
+    protected boolean persistBoolean(boolean value) {
+        if (shouldPersist()) {
+            if (value == getPersistedBoolean(!value)) {
+                // It's already there, so the same as persisting
+                return true;
+            }
+
+            Settings.System.putInt(getContext().getContentResolver(), getKey(), value ? 1 : 0);
+            return true;
+        }
+        return false;
+    }
+
+    @Override
+    protected boolean getPersistedBoolean(boolean defaultReturnValue) {
+        if (!shouldPersist()) {
+            return defaultReturnValue;
+        }
+
+        return Settings.System.getInt(getContext().getContentResolver(),
+                getKey(), defaultReturnValue ? 1 : 0) != 0;
+    }
+
+    @Override
+    protected boolean isPersisted() {
+        // Using getString instead of getInt so we can simply check for null
+        // instead of catching an exception. (All values are stored as strings.)
+        return Settings.System.getString(getContext().getContentResolver(), getKey()) != null;
+    }
+}