Removable Google Search bar on home screen
Add toggle for Google search bar visibility in "Display"
options and added controller file.
Issue: FP4-A14#151
Change-Id: I5dbe4c46d8687741c30a5d79e75a9191a6981bee
(cherry picked from commit d9acd6d96164b6daa321df7e0274f14f19770e45)
(cherry picked from commit 17f9cd917a2c3f6bbd5053834bdf5aafcb5e922a)
(cherry picked from commit 8d5e37c05d0fbbd11b641e79406a06a2dd3ac005)
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index 52f28f3..d6afc18 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -5960,4 +5960,9 @@
<string name="find_broadcast_password_dialog_password_error" msgid="243855327674765">"Forkert adgangskode"</string>
<string name="bt_le_audio_scan_qr_code_scanner" msgid="7614569515419813053">"Centrer QR-koden nedenfor for at gå i gang med at lytte"</string>
<string name="bt_le_audio_qr_code_is_not_valid_format" msgid="7821837654128137901">"QR-koden har ikke et gyldigt format"</string>
+
+ <string name="qsb_search_bar_title">Søgelinje</string>
+ <string name="qsb_search_bar_title_description">Vis/Skjul søgelinje på startskærmen</string>
+ <string name="reboot_required_title">Genstart påkrævet</string>
+ <string name="reboot_required_message">Anvend og genstart for at anvende ændringer</string>
</resources>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index 95a66f7..2e252e4 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -5966,4 +5966,9 @@
<string name="bt_le_audio_qr_code_is_not_valid_format" msgid="7821837654128137901">"Das Format des QR-Codes ist ungültig"</string>
<string name="swap_back_recents_title">Zurück/Zuletzt verwendet wechseln</string>
<string name="swap_back_recents_summary">Die Schaltflächen "Zurück" und "Zuletzt verwendet" in der Navigationsleiste austauschen</string>
+
+ <string name="qsb_search_bar_title">Suchleiste</string>
+ <string name="qsb_search_bar_title_description">Suchleiste des Startbildschirms anzeigen/verbergen</string>
+ <string name="reboot_required_title">Neustart erforderlich</string>
+ <string name="reboot_required_message">Übernehmen und neu starten, um anzuwenden</string>
</resources>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index 009a404..e3a8e30 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -5965,4 +5965,9 @@
<string name="bt_le_audio_qr_code_is_not_valid_format" msgid="7821837654128137901">"El código QR no tiene un formato válido"</string>
<string name="swap_back_recents_title">Cambia la navegación de volver/recientes</string>
<string name="swap_back_recents_summary">Cambia los botones de volver y recientes en la barra de navegación</string>
+
+ <string name="qsb_search_bar_title">Barra de búsqueda</string>
+ <string name="qsb_search_bar_title_description">Mostrar/Ocultar la barra de búsqueda en la pantalla de inicio</string>
+ <string name="reboot_required_title">Reinicio necesario</string>
+ <string name="reboot_required_message">Aplicar y reiniciar para que los cambios tengan efecto</string>
</resources>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index a329245..8eb5439 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -5966,4 +5966,9 @@
<string name="battery_info">Batterie Information</string>
<string name="swap_back_recents_title">Échanger la navigation arrière / récentes</string>
<string name="swap_back_recents_summary">Échangez les boutons arrière et récent dans la barre de navigation</string>
+
+ <string name="qsb_search_bar_title">Barre de recherche</string>
+ <string name="qsb_search_bar_title_description">Afficher/supprimer la barre de recherche sur l\'écran d\'accueil</string>
+ <string name="reboot_required_title">Redémarrer le téléphone (obligatoire)</string>
+ <string name="reboot_required_message">Enregistrer les préférences et redémarrer</string>
</resources>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index 16629fe..7ee2fe1 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -5966,4 +5966,9 @@
<string name="data_preference">"Preferenze dati mobili"</string>
<string name="swap_back_recents_title">Inverti l\'ordine dei pulsanti Indietro e Panoramica App</string>
<string name="swap_back_recents_summary">Inverti l\'ordine dei pulsanti per tornare indietro e mostrare l\'elenco app recenti nella barra di navigazione inferiore</string>
+
+ <string name="qsb_search_bar_title">Barra di ricerca</string>
+ <string name="qsb_search_bar_title_description">Mostra/Nascondi la barra di ricerca della schermata iniziale</string>
+ <string name="reboot_required_title">Riavvio richiesto</string>
+ <string name="reboot_required_message">Applica e riavvia per applicare le modifiche</string>
</resources>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index 29636a8..c350f00 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -5966,4 +5966,9 @@
<string name="data_preference">"Gegevens en voorkeuren"</string>
<string name="swap_back_recents_title">Terug- en recent-knop omwissel</string>
<string name="swap_back_recents_summary">Wissel de terug- en recent-knop om in de navigatiebalk</string>
+
+ <string name="qsb_search_bar_title">Zoekbalk</string>
+ <string name="qsb_search_bar_title_description">Zoekbalk startscherm weergeven/verbergen</string>
+ <string name="reboot_required_title">Opnieuw opstarten vereist</string>
+ <string name="reboot_required_message">Toepassen en herstarten om toe te passen</string>
</resources>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index 178d298..aed1bc6 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -5962,4 +5962,9 @@
<string name="bt_le_audio_qr_code_is_not_valid_format" msgid="7821837654128137901">"O código QR não está em um formato válido"</string>
<string name="swap_back_recents_title">Troque a ordem de Anterior e Vista geral de apps</string>
<string name="swap_back_recents_summary">Troque a ordem dos botões Anterior e Vista geral de apps na barra de navegação</string>
+
+ <string name="qsb_search_bar_title">Barra de pesquisa</string>
+ <string name="qsb_search_bar_title_description">Mostrar/Ocultar a barra de pesquisa da tela inicial</string>
+ <string name="reboot_required_title">Reinicialização necessária</string>
+ <string name="reboot_required_message">Aplicar alterações e Reiniciar</string>
</resources>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index 6d57dd4..69ae493 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -5965,4 +5965,9 @@
<string name="find_broadcast_password_dialog_password_error" msgid="243855327674765">"Fel lösenord"</string>
<string name="bt_le_audio_scan_qr_code_scanner" msgid="7614569515419813053">"Centrera QR-koden nedan om du vill börja lyssna"</string>
<string name="bt_le_audio_qr_code_is_not_valid_format" msgid="7821837654128137901">"QR-kodens format är ogiltigt"</string>
+
+ <string name="qsb_search_bar_title">Sökfält</string>
+ <string name="qsb_search_bar_title_description">Visa/Dölj sökfältet på startskärmen</string>
+ <string name="reboot_required_title">Omstart krävs</string>
+ <string name="reboot_required_message">Tillämpa och starta om för att tillämpa ändringar</string>
</resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index e8e5c28..ec7202c 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -14603,4 +14603,10 @@
<string name="swap_back_recents_title">Swap Back/Recents Navigation</string>
<!-- Summary text for swapping the back and recents buttons in the navigation bar. [CHAR LIMIT=NONE] -->
<string name="swap_back_recents_summary">Swap the back and recents button in the navigation bar.</string>
+
+ <!--add search bar toggle-->
+ <string name="qsb_search_bar_title">Search bar</string>
+ <string name="qsb_search_bar_title_description">Show/Hide Homescreen Search Bar</string>
+ <string name="reboot_required_title">Reboot Required</string>
+ <string name="reboot_required_message">Apply & Reboot to Apply Changes</string>
</resources>
diff --git a/res/xml/display_settings.xml b/res/xml/display_settings.xml
index ad5236e..a3f0d36 100644
--- a/res/xml/display_settings.xml
+++ b/res/xml/display_settings.xml
@@ -172,5 +172,12 @@
android:key="vr_display_pref"
android:title="@string/display_vr_pref_title"
android:fragment="com.android.settings.display.VrDisplayPreferencePicker"/>
+
+ <SwitchPreference
+ android:key="qsb_search_bar"
+ android:title="@string/qsb_search_bar_title"
+ android:summary="@string/qsb_search_bar_title_description"
+ android:defaultValue="true"
+ settings:controller="com.android.settings.display.SearchModePreferenceController"/>
</PreferenceCategory>
</PreferenceScreen>
diff --git a/src/com/android/settings/DisplaySettings.java b/src/com/android/settings/DisplaySettings.java
index 97b9aae..0ff06de 100644
--- a/src/com/android/settings/DisplaySettings.java
+++ b/src/com/android/settings/DisplaySettings.java
@@ -26,6 +26,7 @@
import com.android.settings.display.LiftToWakePreferenceController;
import com.android.settings.display.ShowOperatorNamePreferenceController;
import com.android.settings.display.TapToWakePreferenceController;
+import com.android.settings.display.SearchModePreferenceController;
import com.android.settings.display.ThemePreferenceController;
import com.android.settings.display.VrDisplayPreferenceController;
import com.android.settings.search.BaseSearchIndexProvider;
@@ -76,6 +77,7 @@
controllers.add(new CameraGesturePreferenceController(context));
controllers.add(new LiftToWakePreferenceController(context));
controllers.add(new TapToWakePreferenceController(context));
+ controllers.add(new SearchModePreferenceController(context));
controllers.add(new VrDisplayPreferenceController(context));
controllers.add(new ShowOperatorNamePreferenceController(context));
controllers.add(new ThemePreferenceController(context));
diff --git a/src/com/android/settings/display/SearchModePreferenceController.java b/src/com/android/settings/display/SearchModePreferenceController.java
new file mode 100644
index 0000000..4974d9b
--- /dev/null
+++ b/src/com/android/settings/display/SearchModePreferenceController.java
@@ -0,0 +1,116 @@
+package com.android.settings.display;
+
+import android.app.AlertDialog;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.content.SharedPreferences;
+import android.util.Log;
+import android.widget.Toast;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceScreen;
+import androidx.preference.SwitchPreference;
+import com.android.settings.R;
+import com.android.settings.core.BasePreferenceController;
+import android.app.ActivityManager;
+import android.os.PowerManager;
+import android.os.UserHandle;
+
+public class SearchModePreferenceController extends BasePreferenceController {
+
+ private static final String TAG = "SearchModePreferenceController";
+ private static final String KEY_SEARCH_BAR = "qsb_search_bar";
+
+ private SharedPreferences sharedPreferences;
+ private static final String PREF_NAME = "QsbPrefs";
+ public static final int AVAILABLE = 1;
+
+ private SwitchPreference switchPreference;
+ private boolean previousState;
+
+ public SearchModePreferenceController(Context context) {
+ super(context, KEY_SEARCH_BAR);
+ // Initialize SharedPreferences
+ sharedPreferences = context.getSharedPreferences(PREF_NAME, Context.MODE_PRIVATE);
+ }
+
+ @Override
+ public int getAvailabilityStatus() {
+ return AVAILABLE;
+ }
+
+ @Override
+ public String getPreferenceKey() {
+ return KEY_SEARCH_BAR;
+ }
+
+ @Override
+ public void displayPreference(PreferenceScreen screen) {
+ super.displayPreference(screen);
+ try {
+ switchPreference = screen.findPreference(KEY_SEARCH_BAR);
+ if (switchPreference != null) {
+ boolean isSearchModeEnabled = sharedPreferences.getBoolean(KEY_SEARCH_BAR, true);
+ switchPreference.setChecked(isSearchModeEnabled);
+ switchPreference.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
+ @Override
+ public boolean onPreferenceChange(Preference preference, Object newValue) {
+ boolean isEnabled = (Boolean) newValue;
+ previousState = switchPreference.isChecked(); // Save the previous state
+ showRebootDialog(isEnabled);
+ return false; // Do not change the state immediately
+ }
+ });
+ }
+ } catch (Exception e) {
+ Log.e(TAG, "Error displaying preference", e);
+ }
+ }
+
+ private void showRebootDialog(boolean isEnabled) {
+ new AlertDialog.Builder(mContext)
+ .setTitle(mContext.getString(R.string.reboot_required_title))
+ .setMessage(mContext.getString(R.string.reboot_required_message))
+ .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int which) {
+ // Save the new value to SharedPreferences
+ sharedPreferences.edit().putBoolean(KEY_SEARCH_BAR, isEnabled).apply();
+ broadcastSwitchState(isEnabled);
+ rebootDevice();
+ }
+ })
+ .setNegativeButton(android.R.string.no, new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int which) {
+ // User cancelled the dialog
+ dialog.dismiss();
+ // Reset the toggle to its previous state
+ switchPreference.setChecked(previousState);
+ }
+ })
+ .setIcon(android.R.drawable.ic_dialog_alert)
+ .show();
+ }
+
+ private void broadcastSwitchState(boolean isEnabled) {
+ try {
+ Intent intent = new Intent("com.android.display.ACTION_SWITCH_TOGGLED");
+ intent.putExtra(KEY_SEARCH_BAR, isEnabled);
+ int userId = ActivityManager.getCurrentUser();
+ mContext.sendBroadcastAsUser(intent, new UserHandle(userId));
+ } catch (Exception e) {
+ Log.e(TAG, "Failed to broadcast switch state", e);
+ }
+ }
+
+ private void rebootDevice() {
+ try {
+ PowerManager pm = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE);
+ if (pm != null) {
+ pm.reboot(null);
+ }
+ } catch (Exception e) {
+ Log.e(TAG, "Failed to reboot the device", e);
+ Toast.makeText(mContext, "Failed to reboot the device", Toast.LENGTH_SHORT).show();
+ }
+ }
+}