Fix Phone > Settings > Call Settings FC on MSIM
Fix Phone > Settings > Call Settings > Sub Settings fc as well
Added Non-intrusive switch
Add Proxmimity Speaker
Add Blacklist
Switch checkboxes to switches
Change-Id: I232bed5af12e693c7f4a2615c76eff9737bd3325
diff --git a/res/xml/call_feature_setting_msim.xml b/res/xml/call_feature_setting_msim.xml
index 95fad3b..f6a00c1 100644
--- a/res/xml/call_feature_setting_msim.xml
+++ b/res/xml/call_feature_setting_msim.xml
@@ -28,7 +28,7 @@
<intent android:action="android.intent.action.MAIN"
android:targetPackage="com.android.phone"
- android:targetClass="com.android.phone.SelectSubscription" />
+ android:targetClass="com.android.phone.msim.SelectSubscription" />
</PreferenceScreen>
<PreferenceCategory
@@ -46,7 +46,7 @@
</PreferenceScreen>
- <CheckBoxPreference
+ <SwitchPreference
android:key="button_auto_retry_key"
android:title="@string/auto_retry_mode_title"
android:persistent="false"
@@ -60,7 +60,7 @@
android:entries="@array/tty_mode_entries"
android:entryValues="@array/tty_mode_values"/>
- <CheckBoxPreference
+ <SwitchPreference
android:key="button_hac_key"
android:title="@string/hac_mode_title"
android:persistent="true"
@@ -73,12 +73,17 @@
android:entries="@array/dtmf_tone_entries"
android:entryValues="@array/dtmf_tone_values"/>
- <CheckBoxPreference
+ <SwitchPreference
android:key="button_enable_video_calling"
android:title="@string/enable_video_calling_title"
android:persistent="true"
android:defaultValue="true" />
+ <SwitchPreference
+ android:key="use_non_intrusive_call"
+ android:title="@string/use_non_intrusive_call_title"
+ android:persistent="false" />
+
<PreferenceScreen
android:key="button_xdivert"
android:title="@string/xdivert_title"
@@ -89,4 +94,46 @@
android:targetClass="com.qti.xdivert.XDivertSetting" />
</PreferenceScreen>
+ <PreferenceCategory
+ android:key="category_prox_auto_speaker"
+ android:title="@string/display_category_prox_auto_speaker_title" >
+
+ <SwitchPreference
+ android:key="prox_auto_speaker"
+ android:title="@string/prox_auto_speaker_title"
+ android:summary="@string/prox_auto_speaker_summary"
+ android:persistent="false"
+ android:defaultValue="false" />
+
+ <SlimSeekBarPreference
+ android:key="prox_auto_speaker_delay"
+ android:title="@string/prox_auto_speaker_delay_title"
+ android:summary="@string/prox_auto_speaker_delay_summary"
+ android:persistent="false"
+ android:dependency="prox_auto_speaker" />
+
+ <SwitchPreference
+ android:key="prox_auto_speaker_incall_only"
+ android:title="@string/prox_auto_speaker_incall_only_title"
+ android:summaryOff="@string/prox_auto_speaker_incall_only_summary_off"
+ android:summaryOn="@string/prox_auto_speaker_incall_only_summary_on"
+ android:persistent="false"
+ android:defaultValue="false"
+ android:dependency="prox_auto_speaker" />
+
+ </PreferenceCategory>
+
+ <PreferenceCategory
+ android:key="pref_advanced_settings"
+ android:title="@string/advanced_settings">
+
+ <PreferenceScreen
+ android:key="button_blacklist"
+ android:title="@string/blacklist_title"
+ android:persistent="false">
+ <intent android:action="android.intent.action.MAIN"
+ android:targetPackage="com.android.settings"
+ android:targetClass="com.android.settings.Settings$BlacklistSettingsActivity" />
+ </PreferenceScreen>
+ </PreferenceCategory>
</PreferenceScreen>
diff --git a/src/com/android/phone/msim/MSimCallFeaturesSubSetting.java b/src/com/android/phone/msim/MSimCallFeaturesSubSetting.java
index 06955e7..1e8b64d 100644
--- a/src/com/android/phone/msim/MSimCallFeaturesSubSetting.java
+++ b/src/com/android/phone/msim/MSimCallFeaturesSubSetting.java
@@ -3,6 +3,7 @@
* Not a Contribution.
*
* Copyright (C) 2008 The Android Open Source Project
+ * Copyright (C) 2014 The CyanogenMod Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -24,6 +25,7 @@
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.ProgressDialog;
+import android.content.ContentResolver;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
@@ -39,12 +41,14 @@
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
-import android.preference.CheckBoxPreference;
+import android.os.PowerManager;
import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.PreferenceActivity;
import android.preference.PreferenceManager;
import android.preference.PreferenceScreen;
+import android.preference.SlimSeekBarPreference;
+import android.preference.SwitchPreference;
import android.provider.ContactsContract.CommonDataKinds;
import android.provider.Settings;
import android.provider.Settings.SettingNotFoundException;
@@ -60,6 +64,7 @@
import com.android.internal.telephony.Phone;
import com.android.internal.telephony.PhoneConstants;
import com.android.phone.common.util.SettingsUtil;
+import com.android.internal.telephony.util.BlacklistUtils;
import java.lang.String;
import java.util.Collection;
@@ -171,12 +176,17 @@
"button_voicemail_notification_ringtone_key";
private static final String BUTTON_FDN_KEY = "button_fdn_key";
+ private static final String PROX_AUTO_SPEAKER = "prox_auto_speaker";
+ private static final String PROX_AUTO_SPEAKER_DELAY = "prox_auto_speaker_delay";
+ private static final String PROX_AUTO_SPEAKER_INCALL_ONLY = "prox_auto_speaker_incall_only";
+
private static final String BUTTON_GSM_UMTS_OPTIONS = "button_gsm_more_expand_key";
private static final String BUTTON_CDMA_OPTIONS = "button_cdma_more_expand_key";
private static final String BUTTON_CF_EXPAND_KEY = "button_cf_expand_key";
private static final String BUTTON_MORE_EXPAND_KEY = "button_more_expand_key";
+ private static final String USE_NON_INTRUSIVE_CALL_KEY = "use_non_intrusive_call";
private static final String VM_NUMBERS_SHARED_PREFERENCES_NAME = "vm_numbers";
@@ -224,12 +234,20 @@
private static final String VOICEMAIL_VIBRATION_ALWAYS = "always";
private static final String VOICEMAIL_VIBRATION_NEVER = "never";
+ // Blacklist support
+ private static final String BUTTON_BLACKLIST = "button_blacklist";
+
private PreferenceScreen mSubscriptionPrefFDN;
private PreferenceScreen mSubscriptionPrefGSM;
private PreferenceScreen mSubscriptionPrefCDMA;
private PreferenceScreen mSubscriptionPrefEXPAND;
private PreferenceScreen mSubscriptionPrefMOREEXPAND;
+ private SwitchPreference mProxSpeaker;
+ private SlimSeekBarPreference mProxSpeakerDelay;
+ private SwitchPreference mProxSpeakerIncallOnly;
+ private SwitchPreference mUseNonIntrusiveCall;
+
private EditPhoneNumberPreference mSubMenuVoicemailSettings;
private Runnable mRingtoneLookupRunnable;
@@ -252,7 +270,9 @@
private ListPreference mVoicemailProviders;
private PreferenceScreen mVoicemailSettings;
private Preference mVoicemailNotificationRingtone;
- private CheckBoxPreference mVoicemailNotificationVibrate;
+ private SwitchPreference mVoicemailNotificationVibrate;
+ private boolean isSpeedDialListStarted = false;
+ private PreferenceScreen mButtonBlacklist;
private int mSubId;
@@ -459,6 +479,13 @@
public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
if (preference == mSubMenuVoicemailSettings) {
return true;
+ } else if (preference == mProxSpeaker) {
+ Settings.System.putInt(getContentResolver(), Settings.System.PROXIMITY_AUTO_SPEAKER,
+ mProxSpeaker.isChecked() ? 1 : 0);
+ } else if (preference == mProxSpeakerIncallOnly) {
+ Settings.System.putInt(getContentResolver(),
+ Settings.System.PROXIMITY_AUTO_SPEAKER_INCALL_ONLY,
+ mProxSpeakerIncallOnly.isChecked() ? 1 : 0);
} else if (preference == mVoicemailSettings) {
if (DBG) log("onPreferenceTreeClick: Voicemail Settings Preference is clicked.");
if (preference.getIntent() != null) {
@@ -541,7 +568,15 @@
.edit()
.putBoolean(BUTTON_VOICEMAIL_NOTIFICATION_VIBRATE_KEY + mPhone.getPhoneId(),
mVoicemailNotificationVibrate.isChecked()).commit();
- }
+ } else if (preference == mProxSpeakerDelay) {
+ int delay = Integer.valueOf((String) objValue);
+ Settings.System.putInt(getContentResolver(),
+ Settings.System.PROXIMITY_AUTO_SPEAKER_DELAY, delay);
+ } else if (preference == mUseNonIntrusiveCall) {
+ final boolean val = (Boolean) objValue;
+ Settings.System.putInt(getContentResolver(),
+ Settings.System.USE_NON_INTRUSIVE_CALL, val ? 1 : 0);
+ }
// always let the preference setting proceed.
return true;
}
@@ -1489,12 +1524,61 @@
mVoicemailNotificationRingtone =
findPreference(BUTTON_VOICEMAIL_NOTIFICATION_RINGTONE_KEY);
mVoicemailNotificationVibrate =
- (CheckBoxPreference) findPreference(BUTTON_VOICEMAIL_NOTIFICATION_VIBRATE_KEY);
+ (SwitchPreference) findPreference(BUTTON_VOICEMAIL_NOTIFICATION_VIBRATE_KEY);
mVoicemailNotificationVibrate.setOnPreferenceChangeListener(this);
initVoiceMailProviders();
}
+ mProxSpeaker = (SwitchPreference) findPreference(PROX_AUTO_SPEAKER);
+ mProxSpeakerIncallOnly = (SwitchPreference) findPreference(PROX_AUTO_SPEAKER_INCALL_ONLY);
+ mProxSpeakerDelay = (SlimSeekBarPreference) findPreference(PROX_AUTO_SPEAKER_DELAY);
+ if (mProxSpeakerDelay != null) {
+ mProxSpeakerDelay.setDefault(100);
+ mProxSpeakerDelay.isMilliseconds(true);
+ mProxSpeakerDelay.setInterval(1);
+ mProxSpeakerDelay.minimumValue(100);
+ mProxSpeakerDelay.multiplyValue(100);
+ mProxSpeakerDelay.setOnPreferenceChangeListener(this);
+ }
+ mUseNonIntrusiveCall = (SwitchPreference) findPreference(USE_NON_INTRUSIVE_CALL_KEY);
+ if (mUseNonIntrusiveCall != null) {
+ mUseNonIntrusiveCall.setOnPreferenceChangeListener(this);
+ }
+
+ final ContentResolver contentResolver = getContentResolver();
+
+ if (mProxSpeaker != null) {
+ PowerManager pm = (PowerManager) this.getSystemService(Context.POWER_SERVICE);
+ if (pm.isWakeLockLevelSupported(
+ PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK)
+ && getResources().getBoolean(R.bool.config_enabled_speakerprox)) {
+ mProxSpeaker.setChecked(Settings.System.getInt(contentResolver,
+ Settings.System.PROXIMITY_AUTO_SPEAKER, 0) == 1);
+ if (mProxSpeakerIncallOnly != null) {
+ mProxSpeakerIncallOnly.setChecked(Settings.System.getInt(contentResolver,
+ Settings.System.PROXIMITY_AUTO_SPEAKER_INCALL_ONLY, 0) == 1);
+ }
+ if (mProxSpeakerDelay != null) {
+ final int proxDelay = Settings.System.getInt(getContentResolver(),
+ Settings.System.PROXIMITY_AUTO_SPEAKER_DELAY, 100);
+ // minimum 100 is 1 interval of the 100 multiplier
+ mProxSpeakerDelay.setInitValue((proxDelay / 100) - 1);
+ }
+ } else {
+ prefSet.removePreference(mProxSpeaker);
+ mProxSpeaker = null;
+ if (mProxSpeakerIncallOnly != null) {
+ prefSet.removePreference(mProxSpeakerIncallOnly);
+ mProxSpeakerIncallOnly = null;
+ }
+ if (mProxSpeakerDelay != null) {
+ prefSet.removePreference(mProxSpeakerDelay);
+ mProxSpeakerDelay = null;
+ }
+ }
+ }
+
if (!getResources().getBoolean(R.bool.world_phone)) {
Preference options = prefSet.findPreference(BUTTON_CDMA_OPTIONS);
if (options != null)
@@ -1550,6 +1634,9 @@
updateVoiceNumberField();
mVMProviderSettingsForced = false;
+ // Blacklist screen - Needed for setting summary
+ mButtonBlacklist = (PreferenceScreen) prefSet.findPreference(BUTTON_BLACKLIST);
+
mRingtoneLookupRunnable = new Runnable() {
@Override
public void run() {
@@ -1593,6 +1680,11 @@
return;
}
+ if (mUseNonIntrusiveCall != null) {
+ mUseNonIntrusiveCall.setChecked(Settings.System.getInt(getContentResolver(),
+ Settings.System.USE_NON_INTRUSIVE_CALL, 1) != 0);
+ }
+
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(
mPhone.getContext());
if (CallFeaturesSetting.migrateVoicemailVibrationSettingsIfNeeded(prefs,
@@ -1603,6 +1695,17 @@
// Look up the default/voicemail ringtone name asynchronously and update its preference.
new Thread(mRingtoneLookupRunnable).start();
+ updateBlacklistSummary();
+ }
+
+ private void updateBlacklistSummary() {
+ if (mButtonBlacklist != null) {
+ if (BlacklistUtils.isBlacklistEnabled(this)) {
+ mButtonBlacklist.setSummary(R.string.blacklist_summary);
+ } else {
+ mButtonBlacklist.setSummary(R.string.blacklist_summary_disabled);
+ }
+ }
}
private boolean isAirplaneModeOn() {