Add stub controls section in main preferences screen

This commit is contained in:
Simon Hong
2019-10-03 21:32:14 +09:00
parent 55e8b565e5
commit 89a0d3647c
8 changed files with 168 additions and 4 deletions
@@ -0,0 +1,29 @@
package org.chromium.chrome.browser.preferences;
import android.os.Bundle;
import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceFragmentCompat;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.preferences.ChromeSwitchPreferenceCompat;
public class BackgroundVideoPlaybackPreference
extends PreferenceFragmentCompat implements Preference.OnPreferenceChangeListener {
private static final String BACKGROUND_VIDEO_PLAYBACK_KEY = "background_video_playback";
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
getActivity().setTitle(R.string.prefs_background_video_playback);
PreferenceUtils.addPreferencesFromResource(this, R.xml.background_video_playback_preference);
ChromeSwitchPreferenceCompat playbackPref =
(ChromeSwitchPreferenceCompat) findPreference(BACKGROUND_VIDEO_PLAYBACK_KEY);
playbackPref.setChecked(true);
playbackPref.setOnPreferenceChangeListener(this);
}
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
return true;
}
}
@@ -19,9 +19,16 @@ import java.util.HashMap;
// This exculdes some settings in main settings screen.
public class BraveMainPreferencesBase extends PreferenceFragmentCompat {
public static final String PREF_STANDARD_SEARCH_ENGINE = "standard_search_engine";
public static final String PREF_PRIVATE_SEARCH_ENGINE = "private_search_engine";
public static final String PREF_SEARCH_ENGINE_SECTION = "search_engine_section";
private static final String PREF_STANDARD_SEARCH_ENGINE = "standard_search_engine";
private static final String PREF_PRIVATE_SEARCH_ENGINE = "private_search_engine";
private static final String PREF_SEARCH_ENGINE_SECTION = "search_engine_section";
private static final String PREF_BACKGROUND_VIDEO_PLAYBACK = "background_video_playback";
private static final String PREF_CLOSING_ALL_TABS_CLOSES_BRAVE = "closing_all_tabs_closes_brave";
private static final String PREF_ADVANCED_SECTION = "advanced_section";
private static final String PREF_PRIVACY = "privacy";
private static final String PREF_ACCESSIBILITY = "accessibility";
private static final String PREF_CONTENT_SETTINGS = "content_settings";
private static final String PREF_ABOUT_CHROME = "about_chrome";
private final HashMap<String, Preference> mRemovedPreferences = new HashMap<>();
@@ -32,7 +39,7 @@ public class BraveMainPreferencesBase extends PreferenceFragmentCompat {
// Add brave's additional preferences here because |onCreatePreference| is not called
// by subclass (MainPreference::onCreatePreferences()).
// But, calling here has same effect because |onCreatePreferences()| is called by onCreate().
PreferenceUtils.addPreferencesFromResource(this, R.xml.brave_search_engine_preferences);
PreferenceUtils.addPreferencesFromResource(this, R.xml.brave_main_preferences);
}
@Override
@@ -57,6 +64,9 @@ public class BraveMainPreferencesBase extends PreferenceFragmentCompat {
removePreferenceIfPresent(MainPreferences.PREF_SEARCH_ENGINE);
updateSearchEnginePreference();
updateControlSectionPreferences();
rearrangePreferenceOrders();
}
/**
@@ -71,6 +81,26 @@ public class BraveMainPreferencesBase extends PreferenceFragmentCompat {
return result;
}
/**
* Re-arrange by resetting each preference's order.
* With this, we can insert our own preferences at any position.
*/
private void rearrangePreferenceOrders() {
// We don't need to consider search engine section because they are using 0 ~ 2 ordered
// and we deleted original 0 ~ 2 ordered preferences.
// Advanced section will be located below our controls section.
int order = findPreference(PREF_CLOSING_ALL_TABS_CLOSES_BRAVE).getOrder();
findPreference(PREF_ADVANCED_SECTION).setOrder(++order);
findPreference(PREF_PRIVACY).setOrder(++order);
findPreference(PREF_ACCESSIBILITY).setOrder(++order);
findPreference(PREF_CONTENT_SETTINGS).setOrder(++order);
findPreference(MainPreferences.PREF_LANGUAGES).setOrder(++order);
findPreference(MainPreferences.PREF_DATA_REDUCTION).setOrder(++order);
findPreference(MainPreferences.PREF_DOWNLOADS).setOrder(++order);
findPreference(MainPreferences.PREF_DEVELOPER).setOrder(++order);
findPreference(PREF_ABOUT_CHROME).setOrder(++order);
}
private void removePreferenceIfPresent(String key) {
Preference preference = getPreferenceScreen().findPreference(key);
if (preference != null) {
@@ -95,4 +125,12 @@ public class BraveMainPreferencesBase extends PreferenceFragmentCompat {
searchEnginePreference.setEnabled(true);
searchEnginePreference.setSummary(BraveSearchEngineUtils.getDSEShortName(true));
}
void updateControlSectionPreferences() {
// TODO(simonhong): Update summary properly.
Preference p = findPreference(PREF_BACKGROUND_VIDEO_PLAYBACK);
p.setSummary(R.string.prefs_background_video_playback_summary_enabled);
p = findPreference(PREF_CLOSING_ALL_TABS_CLOSES_BRAVE);
p.setSummary(R.string.prefs_closing_all_tabs_closes_brave_summary_enabled);
}
}
@@ -0,0 +1,29 @@
package org.chromium.chrome.browser.preferences;
import android.os.Bundle;
import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceFragmentCompat;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.preferences.ChromeSwitchPreferenceCompat;
public class ClosingAllTabsClosesBravePreference
extends PreferenceFragmentCompat implements Preference.OnPreferenceChangeListener {
private static final String CLOSING_ALL_TABS_CLOSES_BRAVE_KEY = "closing_all_tabs_closes_brave";
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
getActivity().setTitle(R.string.prefs_closing_all_tabs_closes_brave);
PreferenceUtils.addPreferencesFromResource(this, R.xml.closing_all_tabs_closes_brave_preference);
ChromeSwitchPreferenceCompat pref =
(ChromeSwitchPreferenceCompat) findPreference(CLOSING_ALL_TABS_CLOSES_BRAVE_KEY);
pref.setChecked(true);
pref.setOnPreferenceChangeListener(this);
}
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
return true;
}
}
@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (c) 2019 The Brave Authors. All rights reserved.
This Source Code Form is subject to the terms of the Mozilla Public
License, v. 2.0. If a copy of the MPL was not distributed with this file,
You can obtain one at http://mozilla.org/MPL/2.0/. -->
<android.support.v7.preference.PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<org.chromium.chrome.browser.preferences.ChromeSwitchPreferenceCompat
android:key="background_video_playback"
android:title="@string/prefs_background_video_playback"
android:summaryOn="@string/prefs_background_video_playback_on"
android:summaryOff="@string/prefs_background_video_playback_summary_disabled" />
</android.support.v7.preference.PreferenceScreen>
@@ -21,4 +21,18 @@
android:key="private_search_engine"
android:order="2"
android:title="@string/prefs_private_search_engine"/>
<android.support.v7.preference.PreferenceCategory
android:key="controls_section"
android:order="12"
android:title="@string/prefs_section_controls"/>
<org.chromium.chrome.browser.preferences.ChromeBasePreferenceCompat
android:fragment="org.chromium.chrome.browser.preferences.BackgroundVideoPlaybackPreference"
android:key="background_video_playback"
android:order="13"
android:title="@string/prefs_background_video_playback"/>
<org.chromium.chrome.browser.preferences.ChromeBasePreferenceCompat
android:fragment="org.chromium.chrome.browser.preferences.ClosingAllTabsClosesBravePreference"
android:key="closing_all_tabs_closes_brave"
android:order="14"
android:title="@string/prefs_closing_all_tabs_closes_brave"/>
</android.support.v7.preference.PreferenceScreen>
@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (c) 2019 The Brave Authors. All rights reserved.
This Source Code Form is subject to the terms of the Mozilla Public
License, v. 2.0. If a copy of the MPL was not distributed with this file,
You can obtain one at http://mozilla.org/MPL/2.0/. -->
<android.support.v7.preference.PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<org.chromium.chrome.browser.preferences.ChromeSwitchPreferenceCompat
android:key="closing_all_tabs_closes_brave"
android:title="@string/prefs_closing_all_tabs_closes_brave"
android:summaryOn="@string/prefs_closing_all_tabs_closes_brave_summary_enabled"
android:summaryOff="@string/prefs_closing_all_tabs_closes_brave_summary_disabled" />
</android.support.v7.preference.PreferenceScreen>
@@ -177,6 +177,30 @@ This file contains all "about" strings. It is set to NOT be translated, in tran
<message name="IDS_SETTINGS_PLAY_YT_VIDEO_IN_BROWSER_ENABLED_SUMMARY" desc="Summary for play youtube video in brave in site settings">
Enabled
</message>
<message name="IDS_PREFS_SECTION_CONTROLS" desc="Title for controls section in main preferences screen">
Controls
</message>
<message name="IDS_PREFS_BACKGROUND_VIDEO_PLAYBACK" desc="Title for background video playback preference in controls section">
Background video playback
</message>
<message name="IDS_PREFS_CLOSING_ALL_TABS_CLOSES_BRAVE" desc="Title for closing all tabs closes brave in controls section">
Closing all tabs closes Brave
</message>
<message name="IDS_PREFS_BACKGROUND_VIDEO_PLAYBACK_ON" desc="Text for background video playback is on">
Experimental. Enables play audio from video in background when tab is not active or device screen is turned off. Try to switch to desktop mode if this feature is not working.
</message>
<message name="IDS_PREFS_BACKGROUND_VIDEO_PLAYBACK_SUMMARY_ENABLED" desc="Summary for background video playback is enabled">
Enabled
</message>
<message name="IDS_PREFS_BACKGROUND_VIDEO_PLAYBACK_SUMMARY_DISABLED" desc="Summary for background video playback is disabled">
Disabled
</message>
<message name="IDS_PREFS_CLOSING_ALL_TABS_CLOSES_BRAVE_SUMMARY_ENABLED" desc="Sumamry for closing all tabs closes brave is enabled">
On
</message>
<message name="IDS_PREFS_CLOSING_ALL_TABS_CLOSES_BRAVE_SUMMARY_DISABLED" desc="Sumamry for closing all tabs closes brave is disabled">
Off
</message>
</messages>
</release>
</grit>