OSDN Git Service

Settings: move high touch sensitivity setting to Display
[android-x86/packages-apps-Settings.git] / src / com / android / settings / inputmethod / InputMethodAndLanguageSettings.java
index e1aed8c..7c531da 100644 (file)
@@ -27,7 +27,6 @@ import android.content.SharedPreferences;
 import android.content.pm.ServiceInfo;
 import android.content.res.Configuration;
 import android.database.ContentObserver;
-import android.hardware.CmHardwareManager;
 import android.hardware.input.InputDeviceIdentifier;
 import android.hardware.input.InputManager;
 import android.hardware.input.KeyboardLayout;
@@ -66,6 +65,10 @@ import com.android.settings.search.BaseSearchIndexProvider;
 import com.android.settings.search.Indexable;
 import com.android.settings.search.SearchIndexableRaw;
 
+import com.android.settings.voicewakeup.VoiceWakeupSettings;
+import cyanogenmod.hardware.CMHardwareManager;
+import cyanogenmod.providers.CMSettings;
+
 import java.text.Collator;
 import java.util.ArrayList;
 import java.util.Collections;
@@ -90,11 +93,12 @@ public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment
     private static final String KEY_USER_DICTIONARY_SETTINGS = "key_user_dictionary_settings";
     private static final String KEY_POINTER_SETTINGS_CATEGORY = "pointer_settings_category";
     private static final String KEY_PREVIOUSLY_ENABLED_SUBTYPES = "previously_enabled_subtypes";
-    private static final String KEY_HIGH_TOUCH_SENSITIVITY = "high_touch_sensitivity";
     private static final String KEY_TOUCHSCREEN_HOVERING = "touchscreen_hovering";
     private static final String KEY_TRACKPAD_SETTINGS = "gesture_pad_settings";
     private static final String KEY_STYLUS_GESTURES = "stylus_gestures";
     private static final String KEY_STYLUS_ICON_ENABLED = "stylus_icon_enabled";
+    private static final String KEY_VOICE_CATEGORY = "voice_category";
+    private static final String KEY_VOICE_WAKEUP = "voice_wakeup";
 
     // false: on ICS or later
     private static final boolean SHOW_INPUT_METHOD_SWITCHER_SETTINGS = false;
@@ -110,7 +114,6 @@ public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment
     private int mDefaultInputMethodSelectorVisibility = 0;
     private ListPreference mShowInputMethodSelectorPref;
     private SwitchPreference mStylusIconEnabled;
-    private SwitchPreference mHighTouchSensitivity;
     private SwitchPreference mTouchscreenHovering;
     private PreferenceCategory mKeyboardSettingsCategory;
     private PreferenceCategory mHardKeyboardCategory;
@@ -127,7 +130,7 @@ public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment
     private Intent mIntentWaitingForResult;
     private InputMethodSettingValuesWrapper mInputMethodSettingValues;
     private DevicePolicyManager mDpm;
-    private CmHardwareManager mCmHardwareManager;
+    private CMHardwareManager mHardware;
 
     @Override
     protected int getMetricsCategory() {
@@ -144,7 +147,7 @@ public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment
         mImm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
         mInputMethodSettingValues = InputMethodSettingValuesWrapper.getInstance(activity);
 
-        mCmHardwareManager = (CmHardwareManager) getSystemService(Context.CMHW_SERVICE);
+        mHardware = CMHardwareManager.getInstance(activity);
 
         try {
             mDefaultInputMethodSelectorVisibility = Integer.valueOf(
@@ -198,7 +201,6 @@ public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment
 
         mStylusGestures = (PreferenceScreen) findPreference(KEY_STYLUS_GESTURES);
         mStylusIconEnabled = (SwitchPreference) findPreference(KEY_STYLUS_ICON_ENABLED);
-        mHighTouchSensitivity = (SwitchPreference) findPreference(KEY_HIGH_TOUCH_SENSITIVITY);
 
         mTouchscreenHovering = (SwitchPreference) findPreference(KEY_TOUCHSCREEN_HOVERING);
 
@@ -208,21 +210,12 @@ public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment
                 pointerSettingsCategory.removePreference(mStylusIconEnabled);
             }
 
-            if (!mCmHardwareManager.isSupported(
-                    CmHardwareManager.FEATURE_HIGH_TOUCH_SENSITIVITY)) {
-                pointerSettingsCategory.removePreference(mHighTouchSensitivity);
-                mHighTouchSensitivity = null;
-            } else {
-                mHighTouchSensitivity.setChecked(
-                        mCmHardwareManager.get(CmHardwareManager.FEATURE_HIGH_TOUCH_SENSITIVITY));
-            }
-
-            if (!mCmHardwareManager.isSupported(CmHardwareManager.FEATURE_TOUCH_HOVERING)) {
+            if (!mHardware.isSupported(CMHardwareManager.FEATURE_TOUCH_HOVERING)) {
                 pointerSettingsCategory.removePreference(mTouchscreenHovering);
                 mTouchscreenHovering = null;
             } else {
                 mTouchscreenHovering.setChecked(
-                        mCmHardwareManager.get(CmHardwareManager.FEATURE_TOUCH_HOVERING));
+                        mHardware.get(CMHardwareManager.FEATURE_TOUCH_HOVERING));
             }
 
             Utils.updatePreferenceToSpecificActivityFromMetaDataOrRemove(getActivity(),
@@ -236,7 +229,7 @@ public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment
         boolean showCmImeSwitcher = getResources().getBoolean(
                 com.android.internal.R.bool.config_show_cmIMESwitcher);
         if (!showCmImeSwitcher) {
-            Preference pref = findPreference(Settings.System.STATUS_BAR_IME_SWITCHER);
+            Preference pref = findPreference(CMSettings.System.STATUS_BAR_IME_SWITCHER);
             if (pref != null) {
                 getPreferenceScreen().removePreference(pref);
             }
@@ -268,6 +261,20 @@ public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment
         if (mShowsOnlyFullImeAndKeyboardList && identifier != null) {
             showKeyboardLayoutDialog(identifier);
         }
+
+        if (!Utils.isUserOwner() ||
+                !Utils.isPackageInstalled(getActivity(),
+                        VoiceWakeupSettings.VOICE_WAKEUP_PACKAGE, false)) {
+            PreferenceCategory voiceCategory = (PreferenceCategory)
+                    findPreference(KEY_VOICE_CATEGORY);
+            if (voiceCategory != null) {
+                Preference wakeup = voiceCategory.findPreference(KEY_VOICE_WAKEUP);
+                if (wakeup != null) {
+                    voiceCategory.removePreference(wakeup);
+                }
+            }
+        }
+
     }
 
     private void updateInputMethodSelectorSummary(int value) {
@@ -413,7 +420,13 @@ public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment
         }
         if (preference == mStylusIconEnabled) {
             Settings.System.putInt(getActivity().getContentResolver(),
-                Settings.System.STYLUS_ICON_ENABLED, mStylusIconEnabled.isChecked() ? 1 : 0);
+                    Settings.System.STYLUS_ICON_ENABLED, mStylusIconEnabled.isChecked() ? 1 : 0);
+        } else if (preference == mTouchscreenHovering) {
+            boolean touchHoveringEnable = mTouchscreenHovering.isChecked();
+            CMSettings.Secure.putInt(getActivity().getContentResolver(),
+                    CMSettings.Secure.FEATURE_TOUCH_HOVERING,
+                    touchHoveringEnable ? 1 : 0);
+            return true;
         } else if (preference instanceof PreferenceScreen) {
             if (preference.getFragment() != null) {
                 // Fragment will be handled correctly by the super class.
@@ -438,12 +451,6 @@ public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment
                     }
                 }
             }
-        } else if (preference == mHighTouchSensitivity) {
-            return mCmHardwareManager.set(CmHardwareManager.FEATURE_HIGH_TOUCH_SENSITIVITY,
-                    mHighTouchSensitivity.isChecked());
-        } else if (preference == mTouchscreenHovering) {
-            return mCmHardwareManager.set(CmHardwareManager.FEATURE_TOUCH_HOVERING,
-                    mTouchscreenHovering.isChecked());
         }
         return super.onPreferenceTreeClick(preferenceScreen, preference);
     }
@@ -759,26 +766,13 @@ public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment
 
     public static void restore(Context context) {
         final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
-        final CmHardwareManager cmHardwareManager =
-                (CmHardwareManager) context.getSystemService(Context.CMHW_SERVICE);
-        if (cmHardwareManager.isSupported(CmHardwareManager.FEATURE_HIGH_TOUCH_SENSITIVITY)) {
-            final boolean enabled = prefs.getBoolean(KEY_HIGH_TOUCH_SENSITIVITY,
-                    cmHardwareManager.get(CmHardwareManager.FEATURE_HIGH_TOUCH_SENSITIVITY));
-            if (!cmHardwareManager.set(CmHardwareManager.FEATURE_HIGH_TOUCH_SENSITIVITY,
-                    enabled)) {
-                Log.e(TAG, "Failed to restore high touch sensitivity settings.");
-            } else {
-                Log.d(TAG, "High touch sensitivity settings restored.");
-            }
-        }
-        if (cmHardwareManager.isSupported(CmHardwareManager.FEATURE_TOUCH_HOVERING)) {
+        final CMHardwareManager hardware = CMHardwareManager.getInstance(context);
+        if (hardware.isSupported(CMHardwareManager.FEATURE_TOUCH_HOVERING)) {
             final boolean enabled = prefs.getBoolean(KEY_TOUCHSCREEN_HOVERING,
-                    cmHardwareManager.get(CmHardwareManager.FEATURE_TOUCH_HOVERING));
-            if (!cmHardwareManager.set(CmHardwareManager.FEATURE_TOUCH_HOVERING, enabled)) {
-                Log.e(TAG, "Failed to restore touch hovering settings.");
-            } else {
-                Log.d(TAG, "Touch hovering settings restored.");
-            }
+                    hardware.get(CMHardwareManager.FEATURE_TOUCH_HOVERING));
+            CMSettings.Secure.putInt(context.getContentResolver(),
+                    CMSettings.Secure.FEATURE_TOUCH_HOVERING,
+                    enabled ? 1 : 0);
         }
     }