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

Commit a607674c authored by Michael Bestas's avatar Michael Bestas Committed by Steve Kondik
Browse files

Settings: Move home answer & power end call options

Move 'Home answers call' & 'Power ends call' options to button settings

Change-Id: I2f365a3d278b0845b7c5ffcfe70c54160a00c24e
parent 00978161
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
@@ -905,6 +905,7 @@ two in order to insert additional control points. \'Remove\' deletes the selecte

    <!-- Hardware keys -->
    <string name="button_settings">Buttons</string>
    <string name="hardware_keys_power_key_title">Power button</string>
    <string name="hardware_keys_home_key_title">Home button</string>
    <string name="hardware_keys_menu_key_title">Menu button</string>
    <string name="hardware_keys_assist_key_title">Search button</string>
@@ -921,8 +922,12 @@ two in order to insert additional control points. \'Remove\' deletes the selecte
    <string name="hardware_keys_action_voice_search">Voice search</string>
    <string name="hardware_keys_action_in_app_search">In-app search</string>
    <string name="hardware_keys_action_launch_camera">Launch Camera</string>
    <string name="power_end_call_title">End call</string>
    <string name="power_end_call_summary">Pressing the power button will end the current call</string>
    <string name="button_wake_title">Wake up</string>
    <string name="home_wake_summary">Pressing the home button will wake your device</string>
    <string name="home_answer_call_title">Answer call</string>
    <string name="home_answer_call_summary">Pressing the home button will answer the current incoming call</string>
    <string name="camera_wake_summary">Pressing the camera button will wake your device</string>
    <string name="camera_sleep_on_release_title">Screen peek</string>
    <string name="camera_sleep_on_release_summary">A half press will keep the screen on only while the button is held down</string>
@@ -959,9 +964,6 @@ two in order to insert additional control points. \'Remove\' deletes the selecte
    <string name="background_result_not_successful">Background not changed</string>
    <string name="setting_lockscreen_background">Applying background</string>

    <!-- Title for the accessibility preference to home button to answers a call. [CHAR LIMIT=35] -->
    <string name="accessibility_home_button_answers_call_prerefence_title">Home button answers call</string>

    <!-- Delete apn confirmation dialog message -->
    <string name="confirm_delete_apn">The APN will be deleted.</string>

+0 −10
Original line number Diff line number Diff line
@@ -42,16 +42,6 @@
                android:title="@string/accessibility_toggle_large_text_preference_title"
                android:persistent="false"/>

        <CheckBoxPreference
                android:key="toggle_power_button_ends_call_preference"
                android:title="@string/accessibility_power_button_ends_call_prerefence_title"
                android:persistent="false"/>

        <CheckBoxPreference
                android:key="toggle_home_button_answers_call_preference"
                android:title="@string/accessibility_home_button_answers_call_prerefence_title"
                android:persistent="false"/>

        <CheckBoxPreference
                android:key="toggle_speak_password_preference"
                android:title="@string/accessibility_toggle_speak_password_preference_title"
+23 −5
Original line number Diff line number Diff line
@@ -17,11 +17,6 @@
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:settings="http://schemas.android.com/apk/res/com.android.settings">

    <PreferenceScreen
        android:key="power_menu"
        android:title="@string/power_menu_title"
        android:fragment="com.android.settings.cyanogenmod.PowerMenu" />

    <CheckBoxPreference
        android:key="disable_nav_keys"
        android:title="@string/disable_navkeys_title"
@@ -43,6 +38,23 @@
            android:targetClass="com.cyanogenmod.settings.device.BluetoothInputSettings" />
    </Preference>

    <PreferenceCategory
        android:key="power_key"
        android:title="@string/hardware_keys_power_key_title" >

        <PreferenceScreen
            android:key="power_menu"
            android:title="@string/power_menu_title"
            android:fragment="com.android.settings.cyanogenmod.PowerMenu" />

        <CheckBoxPreference
            android:key="power_end_call"
            android:title="@string/power_end_call_title"
            android:summary="@string/power_end_call_summary"
            android:persistent="false"/>

    </PreferenceCategory>

    <PreferenceCategory
        android:key="home_key"
        android:title="@string/hardware_keys_home_key_title" >
@@ -53,6 +65,12 @@
            android:summary="@string/home_wake_summary"
            android:defaultValue="true" />

        <CheckBoxPreference
            android:key="home_answer_call"
            android:title="@string/home_answer_call_title"
            android:summary="@string/home_answer_call_summary"
            android:persistent="false"/>

        <ListPreference
            android:key="hardware_keys_home_long_press"
            android:dialogTitle="@string/hardware_keys_long_press_title"
+0 −66
Original line number Diff line number Diff line
@@ -87,10 +87,6 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements
    // Preferences
    private static final String TOGGLE_LARGE_TEXT_PREFERENCE =
            "toggle_large_text_preference";
    private static final String TOGGLE_POWER_BUTTON_ENDS_CALL_PREFERENCE =
            "toggle_power_button_ends_call_preference";
    private static final String TOGGLE_HOME_BUTTON_ANSWERS_CALL_PREFERENCE =
            "toggle_home_button_answers_call_preference";
    private static final String TOGGLE_SPEAK_PASSWORD_PREFERENCE =
            "toggle_speak_password_preference";
    private static final String SELECT_LONG_PRESS_TIMEOUT_PREFERENCE =
@@ -181,8 +177,6 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements
    private PreferenceCategory mSystemsCategory;

    private CheckBoxPreference mToggleLargeTextPreference;
    private CheckBoxPreference mTogglePowerButtonEndsCallPreference;
    private CheckBoxPreference mToggleHomeButtonAnswersCallPreference;
    private CheckBoxPreference mToggleSpeakPasswordPreference;
    private ListPreference mSelectLongPressTimeoutPreference;
    private Preference mNoServicesMessagePreference;
@@ -236,12 +230,6 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements
        if (mToggleLargeTextPreference == preference) {
            handleToggleLargeTextPreferenceClick();
            return true;
        } else if (mTogglePowerButtonEndsCallPreference == preference) {
            handleTogglePowerButtonEndsCallPreferenceClick();
            return true;
        } else if (mToggleHomeButtonAnswersCallPreference == preference) {
            handleToggleHomeButtonAnswersCallPreferenceClick();
            return true;
        } else if (mToggleSpeakPasswordPreference == preference) {
            handleToggleSpeakPasswordPreferenceClick();
            return true;
@@ -264,22 +252,6 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements
        }
    }

    private void handleTogglePowerButtonEndsCallPreferenceClick() {
        Settings.Secure.putInt(getContentResolver(),
                Settings.Secure.INCALL_POWER_BUTTON_BEHAVIOR,
                (mTogglePowerButtonEndsCallPreference.isChecked()
                        ? Settings.Secure.INCALL_POWER_BUTTON_BEHAVIOR_HANGUP
                        : Settings.Secure.INCALL_POWER_BUTTON_BEHAVIOR_SCREEN_OFF));
    }

    private void handleToggleHomeButtonAnswersCallPreferenceClick() {
        Settings.Secure.putInt(getContentResolver(),
                Settings.Secure.RING_HOME_BUTTON_BEHAVIOR,
                (mToggleHomeButtonAnswersCallPreference.isChecked()
                        ? Settings.Secure.RING_HOME_BUTTON_BEHAVIOR_ANSWER
                        : Settings.Secure.RING_HOME_BUTTON_BEHAVIOR_DO_NOTHING));
    }

    private void handleToggleSpeakPasswordPreferenceClick() {
        Settings.Secure.putInt(getContentResolver(),
                Settings.Secure.ACCESSIBILITY_SPEAK_PASSWORD,
@@ -318,22 +290,6 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements
        mToggleLargeTextPreference =
                (CheckBoxPreference) findPreference(TOGGLE_LARGE_TEXT_PREFERENCE);

        // Power button ends calls.
        mTogglePowerButtonEndsCallPreference =
                (CheckBoxPreference) findPreference(TOGGLE_POWER_BUTTON_ENDS_CALL_PREFERENCE);
        if (!KeyCharacterMap.deviceHasKey(KeyEvent.KEYCODE_POWER)
                || !Utils.isVoiceCapable(getActivity())) {
            mSystemsCategory.removePreference(mTogglePowerButtonEndsCallPreference);
        }

        // Home button answers calls.
        mToggleHomeButtonAnswersCallPreference =
            (CheckBoxPreference) findPreference(TOGGLE_HOME_BUTTON_ANSWERS_CALL_PREFERENCE);
        if (!KeyCharacterMap.deviceHasKey(KeyEvent.KEYCODE_HOME)
                || !Utils.isVoiceCapable(getActivity())) {
            mSystemsCategory.removePreference(mToggleHomeButtonAnswersCallPreference);
        }

        // Speak passwords.
        mToggleSpeakPasswordPreference =
                (CheckBoxPreference) findPreference(TOGGLE_SPEAK_PASSWORD_PREFERENCE);
@@ -479,28 +435,6 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements
        }
        mToggleLargeTextPreference.setChecked(mCurConfig.fontScale == LARGE_FONT_SCALE);

        // Power button ends calls.
        if (KeyCharacterMap.deviceHasKey(KeyEvent.KEYCODE_POWER)
                && Utils.isVoiceCapable(getActivity())) {
            final int incallPowerBehavior = Settings.Secure.getInt(getContentResolver(),
                    Settings.Secure.INCALL_POWER_BUTTON_BEHAVIOR,
                    Settings.Secure.INCALL_POWER_BUTTON_BEHAVIOR_DEFAULT);
            final boolean powerButtonEndsCall =
                    (incallPowerBehavior == Settings.Secure.INCALL_POWER_BUTTON_BEHAVIOR_HANGUP);
            mTogglePowerButtonEndsCallPreference.setChecked(powerButtonEndsCall);
        }

        // Home button answers calls.
        if (KeyCharacterMap.deviceHasKey(KeyEvent.KEYCODE_HOME)
                && Utils.isVoiceCapable(getActivity())) {
            final int incallHomeBehavior = Settings.Secure.getInt(getContentResolver(),
                    Settings.Secure.RING_HOME_BUTTON_BEHAVIOR,
                    Settings.Secure.RING_HOME_BUTTON_BEHAVIOR_DEFAULT);
            final boolean homeButtonAnswersCall =
                (incallHomeBehavior == Settings.Secure.RING_HOME_BUTTON_BEHAVIOR_ANSWER);
            mToggleHomeButtonAnswersCallPreference.setChecked(homeButtonAnswersCall);
        }

        // Speak passwords.
        final boolean speakPasswordEnabled = Settings.Secure.getInt(getContentResolver(),
                Settings.Secure.ACCESSIBILITY_SPEAK_PASSWORD, 0) != 0;
+74 −0
Original line number Diff line number Diff line
@@ -33,6 +33,8 @@ import android.preference.PreferenceScreen;
import android.provider.Settings;

import android.view.IWindowManager;
import android.view.KeyCharacterMap;
import android.view.KeyEvent;
import android.view.WindowManagerGlobal;

import com.android.settings.R;
@@ -56,7 +58,10 @@ public class ButtonSettings extends SettingsPreferenceFragment implements
    private static final String KEY_VOLUME_KEY_CURSOR_CONTROL = "volume_key_cursor_control";
    private static final String KEY_BLUETOOTH_INPUT_SETTINGS = "bluetooth_input_settings";
    private static final String DISABLE_NAV_KEYS = "disable_nav_keys";
    private static final String KEY_POWER_END_CALL = "power_end_call";
    private static final String KEY_HOME_ANSWER_CALL = "home_answer_call";

    private static final String CATEGORY_POWER = "power_key";
    private static final String CATEGORY_HOME = "home_key";
    private static final String CATEGORY_MENU = "menu_key";
    private static final String CATEGORY_ASSIST = "assist_key";
@@ -99,6 +104,8 @@ public class ButtonSettings extends SettingsPreferenceFragment implements
    private ListPreference mVolumeKeyCursorControl;
    private CheckBoxPreference mSwapVolumeButtons;
    private CheckBoxPreference mDisableNavigationKeys;
    private CheckBoxPreference mPowerEndCall;
    private CheckBoxPreference mHomeAnswerCall;

    private Handler mHandler;

@@ -115,6 +122,7 @@ public class ButtonSettings extends SettingsPreferenceFragment implements
        final int deviceKeys = getResources().getInteger(
                com.android.internal.R.integer.config_deviceHardwareKeys);

        final boolean hasPowerKey = KeyCharacterMap.deviceHasKey(KeyEvent.KEYCODE_POWER);
        final boolean hasHomeKey = (deviceKeys & KEY_MASK_HOME) != 0;
        final boolean hasMenuKey = (deviceKeys & KEY_MASK_MENU) != 0;
        final boolean hasAssistKey = (deviceKeys & KEY_MASK_ASSIST) != 0;
@@ -122,6 +130,8 @@ public class ButtonSettings extends SettingsPreferenceFragment implements
        final boolean hasCameraKey = (deviceKeys & KEY_MASK_CAMERA) != 0;

        boolean hasAnyBindableKey = false;
        final PreferenceCategory powerCategory =
                (PreferenceCategory) prefScreen.findPreference(CATEGORY_POWER);
        final PreferenceCategory homeCategory =
                (PreferenceCategory) prefScreen.findPreference(CATEGORY_HOME);
        final PreferenceCategory menuCategory =
@@ -135,6 +145,12 @@ public class ButtonSettings extends SettingsPreferenceFragment implements
        final PreferenceCategory volumeCategory =
                (PreferenceCategory) prefScreen.findPreference(CATEGORY_VOLUME);

        // Power button ends calls.
        mPowerEndCall = (CheckBoxPreference) findPreference(KEY_POWER_END_CALL);

        // Home button answers calls.
        mHomeAnswerCall = (CheckBoxPreference) findPreference(KEY_HOME_ANSWER_CALL);

        mHandler = new Handler();

        // Force Navigation bar related options
@@ -160,12 +176,25 @@ public class ButtonSettings extends SettingsPreferenceFragment implements
            prefScreen.removePreference(mDisableNavigationKeys);
        }

        if (hasPowerKey) {
            if (!Utils.isVoiceCapable(getActivity())) {
                powerCategory.removePreference(mPowerEndCall);
                mPowerEndCall = null;
            }
        } else {
            prefScreen.removePreference(powerCategory);
        }

        if (hasHomeKey) {
            if (!res.getBoolean(R.bool.config_show_homeWake)) {
                homeCategory.removePreference(findPreference(Settings.System.HOME_WAKE_SCREEN));
            }

            if (!Utils.isVoiceCapable(getActivity())) {
                homeCategory.removePreference(mHomeAnswerCall);
                mHomeAnswerCall = null;
            }

            int defaultLongPressAction = res.getInteger(
                    com.android.internal.R.integer.config_longPressOnHomeBehavior);
            if (defaultLongPressAction < ACTION_NOTHING ||
@@ -285,6 +314,31 @@ public class ButtonSettings extends SettingsPreferenceFragment implements
                getPreferenceScreen(), KEY_BLUETOOTH_INPUT_SETTINGS);
    }

    @Override
    public void onResume() {
        super.onResume();

        // Power button ends calls.
        if (mPowerEndCall != null) {
            final int incallPowerBehavior = Settings.Secure.getInt(getContentResolver(),
                    Settings.Secure.INCALL_POWER_BUTTON_BEHAVIOR,
                    Settings.Secure.INCALL_POWER_BUTTON_BEHAVIOR_DEFAULT);
            final boolean powerButtonEndsCall =
                    (incallPowerBehavior == Settings.Secure.INCALL_POWER_BUTTON_BEHAVIOR_HANGUP);
            mPowerEndCall.setChecked(powerButtonEndsCall);
        }

        // Home button answers calls.
        if (mHomeAnswerCall != null) {
            final int incallHomeBehavior = Settings.Secure.getInt(getContentResolver(),
                    Settings.Secure.RING_HOME_BUTTON_BEHAVIOR,
                    Settings.Secure.RING_HOME_BUTTON_BEHAVIOR_DEFAULT);
            final boolean homeButtonAnswersCall =
                (incallHomeBehavior == Settings.Secure.RING_HOME_BUTTON_BEHAVIOR_ANSWER);
            mHomeAnswerCall.setChecked(homeButtonAnswersCall);
        }
    }

    private ListPreference initActionList(String key, int value) {
        ListPreference list = (ListPreference) getPreferenceScreen().findPreference(key);
        list.setValue(Integer.toString(value));
@@ -447,8 +501,28 @@ public class ButtonSettings extends SettingsPreferenceFragment implements
                    mDisableNavigationKeys.setEnabled(true);
                }
            }, 1000);
        } else if (preference == mPowerEndCall) {
            handleTogglePowerButtonEndsCallPreferenceClick();
            return true;
        } else if (preference == mHomeAnswerCall) {
            handleToggleHomeButtonAnswersCallPreferenceClick();
            return true;
        }

        return super.onPreferenceTreeClick(preferenceScreen, preference);
    }

    private void handleTogglePowerButtonEndsCallPreferenceClick() {
        Settings.Secure.putInt(getContentResolver(),
                Settings.Secure.INCALL_POWER_BUTTON_BEHAVIOR, (mPowerEndCall.isChecked()
                        ? Settings.Secure.INCALL_POWER_BUTTON_BEHAVIOR_HANGUP
                        : Settings.Secure.INCALL_POWER_BUTTON_BEHAVIOR_SCREEN_OFF));
    }

    private void handleToggleHomeButtonAnswersCallPreferenceClick() {
        Settings.Secure.putInt(getContentResolver(),
                Settings.Secure.RING_HOME_BUTTON_BEHAVIOR, (mHomeAnswerCall.isChecked()
                        ? Settings.Secure.RING_HOME_BUTTON_BEHAVIOR_ANSWER
                        : Settings.Secure.RING_HOME_BUTTON_BEHAVIOR_DO_NOTHING));
    }
}