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

Commit 80a7e5a3 authored by Franco's avatar Franco Committed by Adnan Begovic
Browse files

Settings: Add touchscreen hovering support

Change-Id: I5e8d607cb7530e4e1addaf545f520f672cdc5c10
parent 925ea3a6
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -539,4 +539,8 @@

    <!-- Stylus gestures -->
    <string name="stylus_app_not_installed">%s is not installed</string>

    <!-- Touchscreen hovering -->
    <string name="touchscreen_hovering_title">Touchscreen hovering</string>
    <string name="touchscreen_hovering_summary">Allows you to hover the screen like a mouse in web browsers, remote desktops, etc</string>
</resources>
+6 −0
Original line number Diff line number Diff line
@@ -104,6 +104,12 @@
                android:summary="@string/high_touch_sensitivity_summary"
                android:defaultValue="false" />

        <SwitchPreference
                android:key="touchscreen_hovering"
                android:title="@string/touchscreen_hovering_title"
                android:summary="@string/touchscreen_hovering_summary"
                android:defaultValue="false" />

        <!-- Gesture pad settings -->
        <Preference
            android:key="gesture_pad_settings">
+26 −1
Original line number Diff line number Diff line
@@ -75,6 +75,7 @@ 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,
@@ -87,8 +88,9 @@ 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_TRACKPAD_SETTINGS = "gesture_pad_settings";
    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";

@@ -99,6 +101,7 @@ public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment
    private ListPreference mShowInputMethodSelectorPref;
    private SwitchPreference mStylusIconEnabled;
    private SwitchPreference mHighTouchSensitivity;
    private SwitchPreference mTouchscreenHovering;
    private PreferenceCategory mKeyboardSettingsCategory;
    private PreferenceCategory mHardKeyboardCategory;
    private PreferenceCategory mGameControllerCategory;
@@ -184,6 +187,8 @@ public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment
        mStylusIconEnabled = (SwitchPreference) findPreference(KEY_STYLUS_ICON_ENABLED);
        mHighTouchSensitivity = (SwitchPreference) findPreference(KEY_HIGH_TOUCH_SENSITIVITY);

        mTouchscreenHovering = (SwitchPreference) findPreference(KEY_TOUCHSCREEN_HOVERING);

        if (pointerSettingsCategory != null) {
            if (!getResources().getBoolean(com.android.internal.R.bool.config_stylusGestures)) {
                pointerSettingsCategory.removePreference(mStylusGestures);
@@ -197,6 +202,15 @@ public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment
                mHighTouchSensitivity.setChecked(HighTouchSensitivity.isEnabled());
            }

            if (!isTouchscreenHoveringSupported()) {
                pointerSettingsCategory.removePreference(mTouchscreenHovering);
                mTouchscreenHovering = null;
            } else {
                mTouchscreenHovering.setChecked(TouchscreenHovering.isEnabled());
            }

            Utils.updatePreferenceToSpecificActivityFromMetaDataOrRemove(getActivity(),
                            pointerSettingsCategory, KEY_TRACKPAD_SETTINGS);
            if (pointerSettingsCategory.getPreferenceCount() == 0) {
                getPreferenceScreen().removePreference(pointerSettingsCategory);
            }
@@ -391,6 +405,8 @@ public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment
            }
        } else if (preference == mHighTouchSensitivity) {
            return HighTouchSensitivity.setEnabled(mHighTouchSensitivity.isChecked());
        } else if (preference == mTouchscreenHovering) {
            return TouchscreenHovering.setEnabled(mTouchscreenHovering.isChecked());
        }
        return super.onPreferenceTreeClick(preferenceScreen, preference);
    }
@@ -677,6 +693,15 @@ public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment
        }
    }

   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++) {