Merge changes from topic 'update mono audio' into nyc-dev

* changes:
  Add mono audio to AccessibilitySettings
  Remove mono audio from SoundSettings
diff --git a/res/values/strings.xml b/res/values/strings.xml
index b45c1d3..3f8cbb9 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -3868,6 +3868,10 @@
     <string name="accessibility_toggle_speak_password_preference_title">Speak passwords</string>
     <!-- Title for the accessibility preference for enabling/disabling large icons for mouse/trackpad pointers. [CHAR LIMIT=35] -->
     <string name="accessibility_toggle_large_pointer_icon_title">Large mouse pointer</string>
+    <!-- Title for the accessibility preference for master mono. [CHAR LIMIT=35] -->
+    <string name="accessibility_toggle_master_mono_title">Mono audio</string>
+    <!-- Summary for the accessibility preference for master mono. [CHAR LIMIT=50] -->
+    <string name="accessibility_toggle_master_mono_summary">Combine channels when playing audio</string>
     <!-- Title for accessibility preference to choose long-press delay i.e. timeout before it is detected. [CHAR LIMIT=35] -->
     <string name="accessibility_long_press_timeout_preference_title">Tap &amp; hold delay</string>
     <!-- Title for the accessibility preference to configure display color inversion. [CHAR LIMIT=NONE] -->
@@ -5823,15 +5827,6 @@
     <!-- Sound: Title for the option managing whether or not to vibrate when ringing. [CHAR LIMIT=30] -->
     <string name="vibrate_when_ringing_title">Also vibrate for calls</string>
 
-    <!-- Sound: Title for the option managing mono audio output. [CHAR LIMIT=30] -->
-    <string name="master_mono_title">Mono playback</string>
-
-    <!-- Sound: Mono audio: Summary for mono audio output when enabled.  [CHAR LIMIT=40] -->
-    <string name="master_mono_on">Always play back audio in mono</string>
-
-    <!-- Sound: Mono audio: Summary for mono audio output when disabled.  [CHAR LIMIT=40] -->
-    <string name="master_mono_off">Always play back audio in mono</string>
-
     <!-- Sound: Title for the other sounds option and associated settings page. [CHAR LIMIT=30] -->
     <string name="other_sound_settings">Other sounds</string>
 
diff --git a/res/xml/accessibility_settings.xml b/res/xml/accessibility_settings.xml
index 32b78c5..11cde5e 100644
--- a/res/xml/accessibility_settings.xml
+++ b/res/xml/accessibility_settings.xml
@@ -76,6 +76,12 @@
                 android:key="toggle_large_pointer_icon"
                 android:title="@string/accessibility_toggle_large_pointer_icon_title" />
 
+        <SwitchPreference
+                android:key="toggle_master_mono"
+                android:title="@string/accessibility_toggle_master_mono_title"
+                android:summary="@string/accessibility_toggle_master_mono_summary"
+                android:persistent="false"/>
+
         <PreferenceScreen
                 android:fragment="com.android.settings.accessibility.ToggleGlobalGesturePreferenceFragment"
                 android:key="enable_global_gesture_preference_screen"
diff --git a/res/xml/sound_settings.xml b/res/xml/sound_settings.xml
index 47b4db1..5e978f6 100644
--- a/res/xml/sound_settings.xml
+++ b/res/xml/sound_settings.xml
@@ -49,12 +49,6 @@
                 android:key="vibrate_when_ringing"
                 android:title="@string/vibrate_when_ringing_title" />
 
-        <!-- Master mono -->
-        <SwitchPreference
-                android:key="master_mono"
-                android:title="@string/master_mono_title"
-                android:summaryOn="@string/master_mono_on"
-                android:summaryOff="@string/master_mono_off" />
 
         <!-- Interruptions -->
         <com.android.settingslib.RestrictedPreference
diff --git a/src/com/android/settings/accessibility/AccessibilitySettings.java b/src/com/android/settings/accessibility/AccessibilitySettings.java
index c918831..ef841d3 100644
--- a/src/com/android/settings/accessibility/AccessibilitySettings.java
+++ b/src/com/android/settings/accessibility/AccessibilitySettings.java
@@ -86,6 +86,8 @@
             "toggle_speak_password_preference";
     private static final String TOGGLE_LARGE_POINTER_ICON =
             "toggle_large_pointer_icon";
+    private static final String TOGGLE_MASTER_MONO =
+            "toggle_master_mono";
     private static final String SELECT_LONG_PRESS_TIMEOUT_PREFERENCE =
             "select_long_press_timeout_preference";
     private static final String ENABLE_ACCESSIBILITY_GESTURE_PREFERENCE_SCREEN =
@@ -182,6 +184,7 @@
     private SwitchPreference mToggleLockScreenRotationPreference;
     private SwitchPreference mToggleSpeakPasswordPreference;
     private SwitchPreference mToggleLargePointerIconPreference;
+    private SwitchPreference mToggleMasterMonoPreference;
     private ListPreference mSelectLongPressTimeoutPreference;
     private Preference mNoServicesMessagePreference;
     private PreferenceScreen mCaptioningPreferenceScreen;
@@ -280,6 +283,9 @@
         } else if (mToggleLargePointerIconPreference == preference) {
             handleToggleLargePointerIconPreferenceClick();
             return true;
+        } else if (mToggleMasterMonoPreference == preference) {
+            handleToggleMasterMonoPreferenceClick();
+            return true;
         } else if (mGlobalGesturePreferenceScreen == preference) {
             handleToggleEnableAccessibilityGesturePreferenceClick();
             return true;
@@ -321,6 +327,11 @@
                 mToggleLargePointerIconPreference.isChecked() ? 1 : 0);
     }
 
+    private void handleToggleMasterMonoPreferenceClick() {
+        Settings.System.putIntForUser(getContentResolver(), Settings.System.MASTER_MONO,
+                mToggleMasterMonoPreference.isChecked() ? 1 : 0, UserHandle.USER_CURRENT);
+    }
+
     private void handleToggleEnableAccessibilityGesturePreferenceClick() {
         Bundle extras = mGlobalGesturePreferenceScreen.getExtras();
         extras.putString(EXTRA_TITLE, getString(
@@ -378,6 +389,10 @@
         mToggleLargePointerIconPreference =
                 (SwitchPreference) findPreference(TOGGLE_LARGE_POINTER_ICON);
 
+        // Master Mono
+        mToggleMasterMonoPreference =
+                (SwitchPreference) findPreference(TOGGLE_MASTER_MONO);
+
         // Long press timeout.
         mSelectLongPressTimeoutPreference =
                 (ListPreference) findPreference(SELECT_LONG_PRESS_TIMEOUT_PREFERENCE);
@@ -571,6 +586,9 @@
         mToggleLargePointerIconPreference.setChecked(Settings.Secure.getInt(getContentResolver(),
                 Settings.Secure.ACCESSIBILITY_LARGE_POINTER_ICON, 0) != 0);
 
+        // Master mono
+        updateMasterMono();
+
         // Long press timeout.
         final int longPressTimeout = Settings.Secure.getInt(getContentResolver(),
                 Settings.Secure.LONG_PRESS_TIMEOUT, mLongPressTimeoutDefault);
@@ -640,6 +658,13 @@
         }
     }
 
+    private void updateMasterMono() {
+        final boolean masterMono = Settings.System.getIntForUser(
+                getContentResolver(), Settings.System.MASTER_MONO,
+                0 /* default */, UserHandle.USER_CURRENT) == 1;
+        mToggleMasterMonoPreference.setChecked(masterMono);
+    }
+
     public static final SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
             new BaseSearchIndexProvider() {
         @Override
diff --git a/src/com/android/settings/notification/SoundSettings.java b/src/com/android/settings/notification/SoundSettings.java
index 274ce59..33721d7 100644
--- a/src/com/android/settings/notification/SoundSettings.java
+++ b/src/com/android/settings/notification/SoundSettings.java
@@ -80,7 +80,6 @@
     private static final String KEY_NOTIFICATION_RINGTONE = "notification_ringtone";
     private static final String KEY_ALARM_RINGTONE = "alarm_ringtone";
     private static final String KEY_VIBRATE_WHEN_RINGING = "vibrate_when_ringing";
-    private static final String KEY_MASTER_MONO = "master_mono";
     private static final String KEY_WIFI_DISPLAY = "wifi_display";
     private static final String KEY_ZEN_MODE = "zen_mode";
     private static final String KEY_CELL_BROADCAST_SETTINGS = "cell_broadcast_settings";
@@ -111,7 +110,6 @@
     private Preference mNotificationRingtonePreference;
     private Preference mAlarmRingtonePreference;
     private TwoStatePreference mVibrateWhenRinging;
-    private TwoStatePreference mMasterMono;
     private ComponentName mSuppressor;
     private int mRingerMode = -1;
 
@@ -176,7 +174,6 @@
         }
         initRingtones();
         initVibrateWhenRinging();
-        initMasterMono();
         updateRingerMode();
         updateEffectsSuppressor();
     }
@@ -451,33 +448,6 @@
                 Settings.System.VIBRATE_WHEN_RINGING, 0) != 0);
     }
 
-    // === Master mono ===
-
-    private void initMasterMono() {
-        mMasterMono =
-                (TwoStatePreference) getPreferenceScreen().findPreference(KEY_MASTER_MONO);
-        if (mMasterMono == null) {
-            Log.i(TAG, "Preference not found: " + KEY_MASTER_MONO);
-            return;
-        }
-
-        mMasterMono.setPersistent(false);
-        updateMasterMono();
-        mMasterMono.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
-            @Override
-            public boolean onPreferenceChange(Preference preference, Object newValue) {
-                final boolean val = (Boolean) newValue;
-                mAudioManager.setMasterMono(val);
-                return true;
-            }
-        });
-    }
-
-    private void updateMasterMono() {
-        if (mMasterMono == null) return;
-        mMasterMono.setChecked(mAudioManager.isMasterMono());
-    }
-
     // === Callbacks ===
 
     private final class SettingsObserver extends ContentObserver {
@@ -512,8 +482,7 @@
         private static final int STOP_SAMPLE = 3;
         private static final int UPDATE_EFFECTS_SUPPRESSOR = 4;
         private static final int UPDATE_RINGER_MODE = 5;
-        private static final int UPDATE_MASTER_MONO = 6;
-        private static final int UPDATE_ALARM_RINGTONE = 7;
+        private static final int UPDATE_ALARM_RINGTONE = 6;
 
         private H() {
             super(Looper.getMainLooper());
@@ -537,9 +506,6 @@
                 case UPDATE_RINGER_MODE:
                     updateRingerMode();
                     break;
-                case UPDATE_MASTER_MONO:
-                    updateMasterMono();
-                    break;
                 case UPDATE_ALARM_RINGTONE:
                     mAlarmRingtonePreference.setSummary((CharSequence) msg.obj);
                     break;
@@ -556,7 +522,6 @@
                 final IntentFilter filter = new IntentFilter();
                 filter.addAction(NotificationManager.ACTION_EFFECTS_SUPPRESSOR_CHANGED);
                 filter.addAction(AudioManager.INTERNAL_RINGER_MODE_CHANGED_ACTION);
-                filter.addAction(AudioManager.MASTER_MONO_CHANGED_ACTION);
                 mContext.registerReceiver(this, filter);
             } else {
                 mContext.unregisterReceiver(this);
@@ -571,8 +536,6 @@
                 mHandler.sendEmptyMessage(H.UPDATE_EFFECTS_SUPPRESSOR);
             } else if (AudioManager.INTERNAL_RINGER_MODE_CHANGED_ACTION.equals(action)) {
                 mHandler.sendEmptyMessage(H.UPDATE_RINGER_MODE);
-            } else if (AudioManager.MASTER_MONO_CHANGED_ACTION.equals(action)) {
-                mHandler.sendEmptyMessage(H.UPDATE_MASTER_MONO);
             }
         }
     }