Merge "Merge RP1A.200518.001" into r-keystone-qcom-dev
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index da1be563..653b9f8 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -3302,6 +3302,7 @@
     <string name="other_sound_settings" msgid="5468360269346162072">"其他提示音"</string>
     <string name="dial_pad_tones_title" msgid="3536945335367914892">"拨号键盘提示音"</string>
     <string name="screen_locking_sounds_title" msgid="5695030983872787321">"屏幕锁定提示音"</string>
+    <string name="call_connected_tones_title" msgid="1999293510400911558">"通话接通提示音"</string>
     <string name="charging_sounds_title" msgid="5261683808537783668">"充电提示音和振动"</string>
     <string name="docking_sounds_title" msgid="5341616179210436159">"基座提示音"</string>
     <string name="touch_sounds_title" msgid="2200734041857425078">"触摸提示音"</string>
diff --git a/res/values/config.xml b/res/values/config.xml
index 7b3449a..21190af 100755
--- a/res/values/config.xml
+++ b/res/values/config.xml
@@ -465,4 +465,8 @@
 
     <!-- Whether to show Enhanced Connectivity switch in Developer Options -->
     <bool name="config_show_enhanced_connectivity">false</bool>
+
+    <!-- Playing tone setting -->
+    <bool name="config_show_connect_tone_ui">false</bool>
+    <integer name="config_default_tone_after_connected">0</integer>
 </resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index f86190a..64d177f 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -7804,6 +7804,9 @@
     <!-- Sound: Other sounds: Title for the option enabling touch sounds for dial pad tones. [CHAR LIMIT=30] -->
     <string name="dial_pad_tones_title">Dial pad tones</string>
 
+    <!-- Sound: Other sounds: Title for the option enabling tones after call connected. [CHAR LIMIT=30] -->
+    <string name="call_connected_tones_title">Call connected tones</string>
+
     <!-- Sound: Other sounds: Title for the option enabling touch sounds for screen locking sounds. [CHAR LIMIT=30] -->
     <string name="screen_locking_sounds_title">Screen locking sound</string>
 
diff --git a/res/xml/other_sound_settings.xml b/res/xml/other_sound_settings.xml
index 7b3f362..d0ddc22 100644
--- a/res/xml/other_sound_settings.xml
+++ b/res/xml/other_sound_settings.xml
@@ -24,6 +24,11 @@
             android:key="dial_pad_tones"
             android:title="@string/dial_pad_tones_title" />
 
+    <!-- Call connected tones -->
+    <SwitchPreference
+            android:key="call_connected_tones"
+            android:title="@string/call_connected_tones_title" />
+
     <!-- Screen locking sounds -->
     <SwitchPreference
             android:key="screen_locking_sounds"
diff --git a/res/xml/sound_settings.xml b/res/xml/sound_settings.xml
index 92f8a3e..c1254dc 100644
--- a/res/xml/sound_settings.xml
+++ b/res/xml/sound_settings.xml
@@ -156,6 +156,11 @@
           android:key="dial_pad_tones"
           android:title="@string/dial_pad_tones_title"/>
 
+        <!-- Call connected tones -->
+        <SwitchPreference
+          android:key="call_connected_tones"
+          android:title="@string/call_connected_tones_title" />
+
         <!-- Screen locking sounds -->
         <SwitchPreference
           android:key="screen_locking_sounds"
diff --git a/src/com/android/settings/notification/CallConnectedTonePreferenceController.java b/src/com/android/settings/notification/CallConnectedTonePreferenceController.java
new file mode 100644
index 0000000..9498485
--- /dev/null
+++ b/src/com/android/settings/notification/CallConnectedTonePreferenceController.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.notification;
+
+import static com.android.settings.notification.SettingPref.TYPE_SYSTEM;
+
+import android.content.Context;
+import android.provider.Settings.System;
+
+import com.android.settings.R;
+import com.android.settings.SettingsPreferenceFragment;
+import com.android.settings.Utils;
+import com.android.settingslib.core.lifecycle.Lifecycle;
+
+public class CallConnectedTonePreferenceController extends SettingPrefController {
+
+    private static final String KEY_CALL_CONNECTED_TONES = "call_connected_tones";
+
+    public CallConnectedTonePreferenceController(Context context, SettingsPreferenceFragment parent,
+            Lifecycle lifecycle) {
+        super(context, parent, lifecycle);
+
+        int defaultOn =  mContext.getResources().getInteger(R.integer.
+                config_default_tone_after_connected);
+        mPreference = new SettingPref(
+            TYPE_SYSTEM, KEY_CALL_CONNECTED_TONES, System.CALL_CONNECTED_TONE_ENABLED,
+            defaultOn) {
+            @Override
+            public boolean isApplicable(Context context) {
+                return context.getResources().getBoolean(R.bool.config_show_connect_tone_ui);
+            }
+        };
+    }
+
+}
diff --git a/src/com/android/settings/notification/SoundSettings.java b/src/com/android/settings/notification/SoundSettings.java
index 9e7f3ed..040948b 100644
--- a/src/com/android/settings/notification/SoundSettings.java
+++ b/src/com/android/settings/notification/SoundSettings.java
@@ -241,6 +241,8 @@
         // === Other Sound Settings ===
         final DialPadTonePreferenceController dialPadTonePreferenceController =
                 new DialPadTonePreferenceController(context, fragment, lifecycle);
+        final CallConnectedTonePreferenceController callConnectedTonePreferenceController =
+                new CallConnectedTonePreferenceController(context, fragment, lifecycle);
         final ScreenLockSoundPreferenceController screenLockSoundPreferenceController =
                 new ScreenLockSoundPreferenceController(context, fragment, lifecycle);
         final ChargingSoundPreferenceController chargingSoundPreferenceController =
@@ -259,6 +261,7 @@
                 new EmergencyTonePreferenceController(context, fragment, lifecycle);
 
         controllers.add(dialPadTonePreferenceController);
+        controllers.add(callConnectedTonePreferenceController);
         controllers.add(screenLockSoundPreferenceController);
         controllers.add(chargingSoundPreferenceController);
         controllers.add(dockingSoundPreferenceController);
@@ -270,6 +273,7 @@
         controllers.add(new PreferenceCategoryController(context,
                 "other_sounds_and_vibrations_category").setChildren(
                 Arrays.asList(dialPadTonePreferenceController,
+                        callConnectedTonePreferenceController,
                         screenLockSoundPreferenceController,
                         chargingSoundPreferenceController,
                         dockingSoundPreferenceController,
@@ -310,4 +314,4 @@
             mDialogFragment.onListPreferenceUpdated(preference);
         }
     }
-}
\ No newline at end of file
+}