Cherish: Add QS Panel Styles [2/3]

Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
This commit is contained in:
StarkDroid
2022-09-20 09:31:46 +08:00
committed by Hưng Phan
parent 921a98fac0
commit ac8a497722
4 changed files with 117 additions and 1 deletions

View File

@@ -616,4 +616,18 @@
<item>2</item>
<item>3</item>
</string-array>
<string-array name="qs_styles_entries" translatable="false">
<item>@string/default_string</item>
<item>@string/qs_outline</item>
<item>@string/qs_two_tone</item>
<item>@string/qs_color_pop</item>
</string-array>
<string-array name="qs_styles_values" translatable="false">
<item>0</item>
<item>1</item>
<item>2</item>
<item>3</item>
</string-array>
</resources>

View File

@@ -808,4 +808,10 @@
<string name="smart_charging_reset_stats_summary">Reset battery statistics after reaching user defined charging level</string>
<string name="smart_charging_footer">Smart Charging allows you to set maximum charging level to extend the lifespan of your battery. When enabled, battery stops charging at Stop trigger level and resumes charging at Start trigger level. Stop trigger level should be always greater than Start trigger level.</string>
<!-- Quick settings styling -->
<string name="qs_styling">Quick Settings UI</string>
<string name="qs_styles_title">QS Panel Styles</string>
<string name="qs_outline">QS Outline Style</string>
<string name="qs_two_tone">QS Two-Tone Accent</string>
<string name="qs_color_pop">QS Color Pop</string>
</resources>

View File

@@ -67,6 +67,16 @@
android:defaultValue="0"
android:entries="@array/custom_theme_entries"
android:entryValues="@array/custom_theme_values" />
<!-- QS style -->
<com.cherish.settings.preferences.SystemSettingListPreference
android:key="qs_panel_style"
android:title="@string/qs_styles_title"
android:dialogTitle="@string/qs_styles_title"
android:entries="@array/qs_styles_entries"
android:entryValues="@array/qs_styles_values"
android:summary="%s"
android:defaultValue="0" />
<!-- Font style -->
<Preference

View File

@@ -2,6 +2,7 @@ package com.cherish.settings.fragments;
import com.android.internal.logging.nano.MetricsProto;
import static android.os.UserHandle.USER_SYSTEM;
import static android.os.UserHandle.USER_CURRENT;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
@@ -59,7 +60,9 @@ import android.provider.SearchIndexableResource;
import java.util.List;
import java.util.ArrayList;
import java.util.Objects;
import android.database.ContentObserver;
import android.net.Uri;
import android.os.Handler;
import com.android.internal.util.cherish.CherishUtils;
import com.android.settings.dashboard.DashboardFragment;
import com.cherish.settings.preferences.SystemSettingListPreference;
@@ -73,13 +76,17 @@ public class ThemeSettings extends DashboardFragment implements OnPreferenceChan
private static final String SETTINGS_DASHBOARD_STYLE = "settings_dashboard_style";
private static final String USE_STOCK_LAYOUT = "use_stock_layout";
private static final String DISABLE_USERCARD = "disable_usercard";
private static final String QS_PANEL_STYLE = "qs_panel_style";
public static final String TAG = "ThemeSettings";
static final int DEFAULT_QS_PANEL_COLOR = 0xffffffff;
static final int DEFAULT = 0xff1a73e8;
private Context mContext;
private Handler mHandler;
private IOverlayManager mOverlayManager;
private IOverlayManager mOverlayService;
private SystemSettingListPreference mQsStyle;
private UiModeManager mUiModeManager;
private SystemSettingListPreference mSettingsDashBoardStyle;
private SystemSettingSwitchPreference mAltSettingsLayout;
@@ -125,12 +132,41 @@ public class ThemeSettings extends DashboardFragment implements OnPreferenceChan
mUseStockLayout.setOnPreferenceChangeListener(this);
mDisableUserCard = (SystemSettingSwitchPreference) findPreference(DISABLE_USERCARD);
mDisableUserCard.setOnPreferenceChangeListener(this);
mOverlayService = IOverlayManager.Stub
.asInterface(ServiceManager.getService(Context.OVERLAY_SERVICE));
mQsStyle = (SystemSettingListPreference) findPreference(QS_PANEL_STYLE);
mCustomSettingsObserver.observe();
}
public boolean isAvailable() {
return true;
}
private CustomSettingsObserver mCustomSettingsObserver = new CustomSettingsObserver(mHandler);
private class CustomSettingsObserver extends ContentObserver {
CustomSettingsObserver(Handler handler) {
super(handler);
}
void observe() {
Context mContext = getContext();
ContentResolver resolver = mContext.getContentResolver();
resolver.registerContentObserver(Settings.System.getUriFor(
Settings.System.QS_PANEL_STYLE),
false, this, UserHandle.USER_ALL);
}
@Override
public void onChange(boolean selfChange, Uri uri) {
if (uri.equals(Settings.System.getUriFor(Settings.System.QS_PANEL_STYLE))) {
updateQsStyle();
}
}
}
@Override
public boolean onPreferenceChange(Preference preference, Object objValue) {
ContentResolver resolver = getActivity().getContentResolver();
@@ -145,10 +181,60 @@ public class ThemeSettings extends DashboardFragment implements OnPreferenceChan
return true;
} else if (preference == mDisableUserCard) {
CherishUtils.showSettingsRestartDialog(getContext());
return true;
} else if (preference == mQsStyle) {
mCustomSettingsObserver.observe();
return true;
}
return false;
}
private void updateQsStyle() {
ContentResolver resolver = getActivity().getContentResolver();
int qsPanelStyle = Settings.System.getIntForUser(getContext().getContentResolver(),
Settings.System.QS_PANEL_STYLE , 0, UserHandle.USER_CURRENT);
if (qsPanelStyle == 0) {
setDefaultStyle(mOverlayService);
} else if (qsPanelStyle == 1) {
setQsStyle(mOverlayService, "com.android.system.qs.outline");
} else if (qsPanelStyle == 2 || qsPanelStyle == 3) {
setQsStyle(mOverlayService, "com.android.system.qs.twotoneaccent");
}
}
public static void setDefaultStyle(IOverlayManager overlayManager) {
for (int i = 0; i < QS_STYLES.length; i++) {
String qsStyles = QS_STYLES[i];
try {
overlayManager.setEnabled(qsStyles, false, USER_SYSTEM);
} catch (RemoteException e) {
e.printStackTrace();
}
}
}
public static void setQsStyle(IOverlayManager overlayManager, String overlayName) {
try {
for (int i = 0; i < QS_STYLES.length; i++) {
String qsStyles = QS_STYLES[i];
try {
overlayManager.setEnabled(qsStyles, false, USER_SYSTEM);
} catch (RemoteException e) {
e.printStackTrace();
}
}
overlayManager.setEnabled(overlayName, true, USER_SYSTEM);
} catch (RemoteException e) {
e.printStackTrace();
}
}
public static final String[] QS_STYLES = {
"com.android.system.qs.outline",
"com.android.system.qs.twotoneaccent"
};
@Override
public int getMetricsCategory() {