Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5e473b91 authored by Xiao-Long Chen's avatar Xiao-Long Chen Committed by Steve Kondik
Browse files

Settings: Add HighTouchSensitivity support

refactored for CM12

Change-Id: I4e55ec992ed7b0241211e0fb36ebc877879b8e89
parent 62c224ac
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -482,6 +482,10 @@
    <string name="ime_switcher_notify">Selector notification</string>
    <string name="ime_switcher_notify_summary">Display input method selector notification</string>

    <!-- High touch sensitivity -->
    <string name="high_touch_sensitivity_title">High touch sensitivity</string>
    <string name="high_touch_sensitivity_summary">Increase touchscreen sensitivity so it can be used while wearing gloves</string>

    <!-- App ops -->
    <string name="app_ops_summaries_coarse_location">coarse location</string>
    <string name="app_ops_summaries_fine_location">fine location</string>
+6 −0
Original line number Diff line number Diff line
@@ -97,6 +97,12 @@
                android:dialogTitle="@string/pointer_speed"
                />

        <SwitchPreference
                android:key="high_touch_sensitivity"
                android:title="@string/high_touch_sensitivity_title"
                android:summary="@string/high_touch_sensitivity_summary"
                android:defaultValue="false" />

    </PreferenceCategory>

    <PreferenceCategory
+28 −0
Original line number Diff line number Diff line
@@ -43,6 +43,7 @@ import android.preference.Preference.OnPreferenceClickListener;
import android.preference.PreferenceCategory;
import android.preference.PreferenceManager;
import android.preference.PreferenceScreen;
import android.preference.SwitchPreference;
import android.provider.Settings;
import android.provider.Settings.System;
import android.speech.RecognitionService;
@@ -78,6 +79,8 @@ import java.util.List;
import java.util.Locale;
import java.util.TreeSet;

import org.cyanogenmod.hardware.HighTouchSensitivity;

public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment
        implements Preference.OnPreferenceChangeListener, InputManager.InputDeviceListener,
        KeyboardLayoutDialogFragment.OnSetupKeyboardLayoutsListener, Indexable,
@@ -87,12 +90,15 @@ public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment
    private static final String KEY_CURRENT_INPUT_METHOD = "current_input_method";
    private static final String KEY_INPUT_METHOD_SELECTOR = "input_method_selector";
    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";
    // false: on ICS or later
    private static final boolean SHOW_INPUT_METHOD_SWITCHER_SETTINGS = false;

    private int mDefaultInputMethodSelectorVisibility = 0;
    private ListPreference mShowInputMethodSelectorPref;
    private SwitchPreference mHighTouchSensitivity;
    private PreferenceCategory mKeyboardSettingsCategory;
    private PreferenceCategory mHardKeyboardCategory;
    private PreferenceCategory mGameControllerCategory;
@@ -165,6 +171,17 @@ public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment
        mIm = (InputManager)activity.getSystemService(Context.INPUT_SERVICE);
        updateInputDevices();

        PreferenceCategory pointerSettingsCategory = (PreferenceCategory)
                        findPreference(KEY_POINTER_SETTINGS_CATEGORY);

        mHighTouchSensitivity = (SwitchPreference) findPreference(KEY_HIGH_TOUCH_SENSITIVITY);
        if (!isHighTouchSensitivitySupported()) {
            pointerSettingsCategory.removePreference(mHighTouchSensitivity);
            mHighTouchSensitivity = null;
        } else {
            mHighTouchSensitivity.setChecked(HighTouchSensitivity.isEnabled());
        }

        // Enable or disable mStatusBarImeSwitcher based on boolean: config_show_cmIMESwitcher
        boolean showCmImeSwitcher = getResources().getBoolean(
                com.android.internal.R.bool.config_show_cmIMESwitcher);
@@ -341,6 +358,8 @@ public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment
                        chkPref.isChecked() ? 1 : 0);
                return true;
            }
        } else if (preference == mHighTouchSensitivity) {
            return HighTouchSensitivity.setEnabled(mHighTouchSensitivity.isChecked());
        }
        return super.onPreferenceTreeClick(preferenceScreen, preference);
    }
@@ -618,6 +637,15 @@ 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 haveInputDeviceWithVibrator() {
        final int[] devices = InputDevice.getDeviceIds();
        for (int i = 0; i < devices.length; i++) {