summaryrefslogtreecommitdiffstats
path: root/src/com/android/settings/inputmethod
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/settings/inputmethod')
-rw-r--r--src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java71
1 files changed, 44 insertions, 27 deletions
diff --git a/src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java b/src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java
index f796ed8..03e8cb5 100644
--- a/src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java
+++ b/src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java
@@ -27,6 +27,7 @@ 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;
@@ -43,6 +44,7 @@ import android.provider.Settings;
import android.provider.Settings.System;
import android.speech.tts.TtsEngines;
import android.text.TextUtils;
+import android.util.Log;
import android.view.InputDevice;
import android.view.inputmethod.InputMethodInfo;
import android.view.inputmethod.InputMethodManager;
@@ -74,13 +76,13 @@ import java.util.List;
import java.util.Locale;
import java.util.TreeSet;
-import org.cyanogenmod.hardware.HighTouchSensitivity;
-import org.cyanogenmod.hardware.TouchscreenHovering;
-
public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment
implements Preference.OnPreferenceChangeListener, InputManager.InputDeviceListener,
KeyboardLayoutDialogFragment.OnSetupKeyboardLayoutsListener, Indexable,
InputMethodPreference.OnSavePreferenceListener {
+
+ private static final String TAG = "InputMethodAndLanguageSettings";
+
private static final String KEY_SPELL_CHECKERS = "spellcheckers_settings";
private static final String KEY_PHONE_LANGUAGE = "phone_language";
private static final String KEY_CURRENT_INPUT_METHOD = "current_input_method";
@@ -117,6 +119,7 @@ public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment
private Intent mIntentWaitingForResult;
private InputMethodSettingValuesWrapper mInputMethodSettingValues;
private DevicePolicyManager mDpm;
+ private CmHardwareManager mCmHardwareManager;
@Override
protected int getMetricsCategory() {
@@ -133,6 +136,8 @@ public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment
mImm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
mInputMethodSettingValues = InputMethodSettingValuesWrapper.getInstance(activity);
+ mCmHardwareManager = (CmHardwareManager) getSystemService(Context.CMHW_SERVICE);
+
try {
mDefaultInputMethodSelectorVisibility = Integer.valueOf(
getString(R.string.input_method_selector_visibility_default_value));
@@ -195,18 +200,21 @@ public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment
pointerSettingsCategory.removePreference(mStylusIconEnabled);
}
- if (!isHighTouchSensitivitySupported()) {
+ if (!mCmHardwareManager.isSupported(
+ CmHardwareManager.FEATURE_HIGH_TOUCH_SENSITIVITY)) {
pointerSettingsCategory.removePreference(mHighTouchSensitivity);
mHighTouchSensitivity = null;
} else {
- mHighTouchSensitivity.setChecked(HighTouchSensitivity.isEnabled());
+ mHighTouchSensitivity.setChecked(
+ mCmHardwareManager.get(CmHardwareManager.FEATURE_HIGH_TOUCH_SENSITIVITY));
}
- if (!isTouchscreenHoveringSupported()) {
+ if (!mCmHardwareManager.isSupported(CmHardwareManager.FEATURE_TOUCH_HOVERING)) {
pointerSettingsCategory.removePreference(mTouchscreenHovering);
mTouchscreenHovering = null;
} else {
- mTouchscreenHovering.setChecked(TouchscreenHovering.isEnabled());
+ mTouchscreenHovering.setChecked(
+ mCmHardwareManager.get(CmHardwareManager.FEATURE_TOUCH_HOVERING));
}
Utils.updatePreferenceToSpecificActivityFromMetaDataOrRemove(getActivity(),
@@ -404,9 +412,11 @@ public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment
return true;
}
} else if (preference == mHighTouchSensitivity) {
- return HighTouchSensitivity.setEnabled(mHighTouchSensitivity.isChecked());
+ return mCmHardwareManager.set(CmHardwareManager.FEATURE_HIGH_TOUCH_SENSITIVITY,
+ mHighTouchSensitivity.isChecked());
} else if (preference == mTouchscreenHovering) {
- return TouchscreenHovering.setEnabled(mTouchscreenHovering.isChecked());
+ return mCmHardwareManager.set(CmHardwareManager.FEATURE_TOUCH_HOVERING,
+ mTouchscreenHovering.isChecked());
}
return super.onPreferenceTreeClick(preferenceScreen, preference);
}
@@ -684,24 +694,6 @@ public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment
}
}
- private static boolean isHighTouchSensitivitySupported() {
- try {
- return HighTouchSensitivity.isSupported();
- } catch (NoClassDefFoundError e) {
- // Hardware abstraction framework not installed
- return false;
- }
- }
-
- private static boolean isTouchscreenHoveringSupported() {
- try {
- return TouchscreenHovering.isSupported();
- } catch (NoClassDefFoundError e) {
- // Hardware abstraction framework not installed
- return false;
- }
- }
-
private static boolean haveInputDeviceWithVibrator() {
final int[] devices = InputDevice.getDeviceIds();
for (int i = 0; i < devices.length; i++) {
@@ -738,6 +730,31 @@ 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 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.");
+ }
+ }
+ }
+
public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
new BaseSearchIndexProvider() {
@Override