summaryrefslogtreecommitdiffstats
path: root/src/com/android/settings/ButtonSettings.java
diff options
context:
space:
mode:
authorOleksandr Byelkin <sanja.byelkin@gmail.com>2012-12-27 19:28:31 +0100
committerAdnan Begovic <adnan@cyngn.com>2015-10-29 17:36:25 -0700
commit3d2a1042dd5187bbe1a43798670ab8e9bda42cea (patch)
treeaa71dd00dcac528f8a18cb00d13304d93b8c7e8e /src/com/android/settings/ButtonSettings.java
parentaf657790a5cec1ff0e7d3004f252db65172e7628 (diff)
downloadpackages_apps_Settings-3d2a1042dd5187bbe1a43798670ab8e9bda42cea.zip
packages_apps_Settings-3d2a1042dd5187bbe1a43798670ab8e9bda42cea.tar.gz
packages_apps_Settings-3d2a1042dd5187bbe1a43798670ab8e9bda42cea.tar.bz2
Answer call with hardware HOME button (1/2)
Squashed commit of the following: Author: Oleksandr Byelkin <sanja.byelkin@gmail.com> Adds ability to answer call with hardware HOME button preparation to winter time Change-Id: I0d22a6fbb92a61f08b50cae5c14d0030b81ee6ec Author: Michael Bestas <mikeioannina@gmail.com> Settings: Move home answer & power end call options Move 'Home answers call' & 'Power ends call' options to button settings Change-Id: I2f365a3d278b0845b7c5ffcfe70c54160a00c24e
Diffstat (limited to 'src/com/android/settings/ButtonSettings.java')
-rw-r--r--src/com/android/settings/ButtonSettings.java74
1 files changed, 72 insertions, 2 deletions
diff --git a/src/com/android/settings/ButtonSettings.java b/src/com/android/settings/ButtonSettings.java
index 227f5cb..df7623c 100644
--- a/src/com/android/settings/ButtonSettings.java
+++ b/src/com/android/settings/ButtonSettings.java
@@ -36,7 +36,6 @@ import android.util.Log;
import android.view.IWindowManager;
import android.view.KeyCharacterMap;
import android.view.KeyEvent;
-import android.view.IWindowManager;
import android.view.WindowManagerGlobal;
import com.android.internal.logging.MetricsLogger;
@@ -56,6 +55,8 @@ public class ButtonSettings extends SettingsPreferenceFragment implements
private static final String KEY_MENU_LONG_PRESS = "hardware_keys_menu_long_press";
private static final String KEY_VOLUME_KEY_CURSOR_CONTROL = "volume_key_cursor_control";
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";
@@ -94,11 +95,13 @@ public class ButtonSettings extends SettingsPreferenceFragment implements
private ListPreference mMenuPressAction;
private ListPreference mMenuLongPressAction;
private ListPreference mVolumeKeyCursorControl;
+ private CheckBoxPreference mDisableNavigationKeys;
+ private CheckBoxPreference mPowerEndCall;
+ private CheckBoxPreference mHomeAnswerCall;
private PreferenceCategory mNavigationPreferencesCat;
private Handler mHandler;
- private CheckBoxPreference mDisableNavigationKeys;
@Override
public void onCreate(Bundle savedInstanceState) {
@@ -119,6 +122,8 @@ public class ButtonSettings extends SettingsPreferenceFragment implements
final boolean hasAssistKey = (deviceKeys & KEY_MASK_ASSIST) != 0;
boolean hasAnyBindableKey = false;
+ final PreferenceCategory powerCategory =
+ (PreferenceCategory) prefScreen.findPreference(CATEGORY_POWER);
final PreferenceCategory homeCategory =
(PreferenceCategory) prefScreen.findPreference(CATEGORY_HOME);
final PreferenceCategory menuCategory =
@@ -126,6 +131,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
@@ -151,11 +162,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 ||
@@ -210,6 +235,31 @@ public class ButtonSettings extends SettingsPreferenceFragment implements
}
}
+ @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));
@@ -334,8 +384,28 @@ public class ButtonSettings extends SettingsPreferenceFragment implements
if (preference == mDisableNavigationKeys) {
writeDisableNavkeysOption(getActivity(), mDisableNavigationKeys.isChecked());
updateDisableNavkeysOption();
+ } 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));
+ }
}