Merge changes from topic "vibrate-setting" into sc-v2-dev-plus-aosp

* changes:
  [automerge] Add setting for showing the vibrate icon in status bar 2p: 16148d2c8c
  Add setting for showing the vibrate icon in status bar
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 21d52b5..25b93fe 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -8507,6 +8507,9 @@
     <!-- Sound: Other sounds: Title for the option enabling touch sounds. [CHAR LIMIT=30] -->
     <string name="touch_sounds_title">Touch sounds</string>
 
+    <!-- Sound: Other sounds: Title for the option enabling the vibrate icon. [CHAR LIMIT=50] -->
+    <string name="vibrate_icon_title">Always show icon when in vibrate mode</string>
+
     <!-- Sound: Other sounds: Title for the option enabling haptic feedback on touch. [CHAR LIMIT=30] -->
     <string name="vibrate_on_touch_title">Touch vibration</string>
 
diff --git a/res/xml/other_sound_settings.xml b/res/xml/other_sound_settings.xml
index 7b3f362..35444b3 100644
--- a/res/xml/other_sound_settings.xml
+++ b/res/xml/other_sound_settings.xml
@@ -44,6 +44,11 @@
             android:key="touch_sounds"
             android:title="@string/touch_sounds_title" />
 
+    <!-- Vibrate icon in status bar -->
+    <SwitchPreference
+            android:key="vibrate_icon"
+            android:title="@string/vibrate_icon_title" />
+
     <!-- Vibrate on touch -->
     <SwitchPreference
             android:key="vibrate_on_touch"
diff --git a/res/xml/sound_settings.xml b/res/xml/sound_settings.xml
index e30f139..a447bf7 100644
--- a/res/xml/sound_settings.xml
+++ b/res/xml/sound_settings.xml
@@ -191,6 +191,12 @@
         android:title="@string/touch_sounds_title"
         android:order="-30"/>
 
+    <!-- Show vibrate icon in status bar -->
+    <SwitchPreference
+        android:key="vibrate_icon"
+        android:title="@string/vibrate_icon_title"
+        android:order="-27"/>
+
     <!-- Vibrate on touch -->
     <SwitchPreference
         android:key="vibrate_on_touch"
diff --git a/src/com/android/settings/notification/SoundSettings.java b/src/com/android/settings/notification/SoundSettings.java
index 85623b8..20081b3 100644
--- a/src/com/android/settings/notification/SoundSettings.java
+++ b/src/com/android/settings/notification/SoundSettings.java
@@ -264,12 +264,15 @@
                 new BootSoundPreferenceController(context);
         final EmergencyTonePreferenceController emergencyTonePreferenceController =
                 new EmergencyTonePreferenceController(context, fragment, lifecycle);
+        final VibrateIconPreferenceController vibrateIconPreferenceController =
+                new VibrateIconPreferenceController(context, fragment, lifecycle);
 
         controllers.add(dialPadTonePreferenceController);
         controllers.add(screenLockSoundPreferenceController);
         controllers.add(chargingSoundPreferenceController);
         controllers.add(dockingSoundPreferenceController);
         controllers.add(touchSoundPreferenceController);
+        controllers.add(vibrateIconPreferenceController);
         controllers.add(vibrateOnTouchPreferenceController);
         controllers.add(dockAudioMediaPreferenceController);
         controllers.add(bootSoundPreferenceController);
@@ -281,6 +284,7 @@
                         chargingSoundPreferenceController,
                         dockingSoundPreferenceController,
                         touchSoundPreferenceController,
+                        vibrateIconPreferenceController,
                         vibrateOnTouchPreferenceController,
                         dockAudioMediaPreferenceController,
                         bootSoundPreferenceController,
diff --git a/src/com/android/settings/notification/VibrateIconPreferenceController.java b/src/com/android/settings/notification/VibrateIconPreferenceController.java
new file mode 100644
index 0000000..25d2326
--- /dev/null
+++ b/src/com/android/settings/notification/VibrateIconPreferenceController.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2021 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_SECURE;
+
+import android.content.Context;
+import android.provider.Settings.Secure;
+
+import com.android.settings.SettingsPreferenceFragment;
+import com.android.settingslib.core.lifecycle.Lifecycle;
+
+public class VibrateIconPreferenceController extends SettingPrefController {
+
+    private static final String KEY_VIBRATE_ICON = "vibrate_icon";
+
+    public VibrateIconPreferenceController(Context context, SettingsPreferenceFragment parent,
+            Lifecycle lifecycle) {
+        super(context, parent, lifecycle);
+        mPreference = new SettingPref(
+            TYPE_SECURE, KEY_VIBRATE_ICON, Secure.STATUS_BAR_SHOW_VIBRATE_ICON, 0 /*default off*/);
+    }
+
+    @Override
+    public boolean isAvailable() {
+        return true;
+    }
+}