Cherish:[QUASH]Revert Gaming Mode

Revert "Cherish: Option to disable all headsup notifications for Gaming mode [2/2]"

This reverts commit bda00a0719.

Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>

Revert "Prevent NPE in gaming mode settings"

This reverts commit 568bd02088.

Revert "Gaming mode: stop using masterswitch preference"

This reverts commit f58718e4ae.

Revert "GameMode: remove hwkeys toggle on non-hwkeys devices"

This reverts commit 7a5e86f2e5.

Revert "Cherish:Bring back Gaming mode [3/3]"

This reverts commit c1e9a0df45.

Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
This commit is contained in:
Hưng Phan
2021-08-17 11:30:12 +07:00
parent 8532503387
commit f47e3db4c0
7 changed files with 0 additions and 592 deletions

View File

@@ -620,33 +620,6 @@
<item>@string/file_header_provider</item>
</string-array>
<!-- Gaming mode -->
<string-array name="gaming_mode_ringer_entries">
<item>@string/gaming_mode_ringer_off_title</item>
<item>@string/gaming_mode_ringer_vibrate_title</item>
<item>@string/gaming_mode_ringer_dnd_title</item>
<item>@string/gaming_mode_ringer_silent_title</item>
</string-array>
<string-array name="gaming_mode_ringer_values" translatable="false">
<item>0</item>
<item>1</item>
<item>2</item>
<item>3</item>
</string-array>
<string-array name="gaming_mode_notifications_entries">
<item>@string/gaming_mode_notifications_off_title</item>
<item>@string/gaming_mode_notifications_notif_title</item>
<item>@string/gaming_mode_notifications_toast_title</item>
<item>@string/gaming_mode_notifications_all_title</item>
</string-array>
<string-array name="gaming_mode_notifications_values" translatable="false">
<item>0</item>
<item>1</item>
<item>2</item>
<item>3</item>
</string-array>
<string-array name="ambient_notification_light_timeout_entries" translatable="false">
<item>@string/entry_infinite</item>
<item>@string/entry_five_minute</item>
@@ -1071,23 +1044,6 @@
<item>3</item>
</string-array>
<!-- Gaming mode-->
<string-array name="gaming_mode_headsup_toggle_entries">
<item>@string/gaming_mode_headsup_allow</item>
<item>@string/gaming_mode_headsup_dnc</item>
<item>@string/gaming_mode_headsup_clock</item>
<item>@string/gaming_mode_headsup_dialer</item>
<item>@string/gaming_mode_headsup_stop</item>
</string-array>
<string-array name="gaming_mode_headsup_toggle_values">
<item>0</item>
<item>1</item>
<item>2</item>
<item>3</item>
<item>4</item>
</string-array>
<!-- Settings dashboard icon style -->
<string-array name="theming_settings_dashboard_icons_entries" translatable="false">
<item>@string/theming_settings_dashboard_icons_default</item>
@@ -1397,5 +1353,4 @@
<item>@string/monet_5</item>
<item>@string/monet_6</item>
</string-array>
</resources>

View File

@@ -683,37 +683,6 @@
<string name="status_bar_custom_header_shadow_title">Darken image</string>
<string name="status_bar_custom_header_height_title">Image height offset</string>
<!-- Gaming mode -->
<string name="gaming_mode_title">Gaming Mode</string>
<string name="gaming_mode_summary">Customize gaming mode preferences</string>
<string name="gaming_mode_enable_title">Enable Gaming Mode</string>
<string name="gaming_mode_enable_summary">Master switch for Gaming Mode</string>
<string name="gaming_mode_app_picker_title">Automatically turn on for these apps</string>
<string name="add_gaming_mode_package_title">Add apps for Gaming mode</string>
<string name="add_gaming_mode_package_summary">Gaming mode will turn on automatically when these apps are opened and turn off when they are closed</string>
<string name="gaming_mode_headsup_title">Heads-up Notifications</string>
<string name="gaming_mode_headsup_allow">Allow all headsup notifications</string>
<string name="gaming_mode_headsup_dnc">Block all headsup notifications except calls &amp; alarms</string>
<string name="gaming_mode_headsup_clock">Block all headsup notifications except alarms</string>
<string name="gaming_mode_headsup_dialer">Block all headsup notifications except calls</string>
<string name="gaming_mode_headsup_stop">Block all headsup notifications</string>
<string name="gaming_mode_hardware_keys_title">Lock buttons</string>
<string name="gaming_mode_hardware_keys_summary">Disable hardware buttons when Gaming mode is turned on</string>
<string name="gaming_mode_brightness_title">Disable automatic brightness</string>
<string name="gaming_mode_brightness_summary">Lock screen brightness when Gaming mode is turned on</string>
<string name="gaming_mode_ringer_title">Ringer in gaming mode</string>
<string name="gaming_mode_ringer_off_title">Do not change</string>
<string name="gaming_mode_ringer_vibrate_title">Vibrate</string>
<string name="gaming_mode_ringer_dnd_title">Do Not Disturb</string>
<string name="gaming_mode_ringer_silent_title">Silent</string>
<string name="gaming_mode_notifications_title">Gaming mode indication</string>
<string name="gaming_mode_notifications_off_title">Disabled</string>
<string name="gaming_mode_notifications_notif_title">Show notification</string>
<string name="gaming_mode_notifications_toast_title">Show toasts</string>
<string name="gaming_mode_notifications_all_title">Show toasts and notification</string>
<string name="gaming_mode_dynamic_title">Dynamic mode</string>
<string name="gaming_mode_dynamic_summary">Try detecting and adding gaming apps automatically</string>
<!-- Ambient edge lighting -->
<string name="pulse_ambient_light_category">Screen edge lighting</string>
<string name="pulse_ambient_light_title">Show on new notifcation</string>

View File

@@ -17,14 +17,6 @@
xmlns:android="http://schemas.android.com/apk/res/android"
android:title="@string/misc_title"
xmlns:settings="http://schemas.android.com/apk/res/com.android.settings">
<Preference
android:key="gaming_mode"
android:icon="@drawable/ic_gaming_mode"
android:fragment="com.cherish.settings.fragments.GamingMode"
android:title="@string/gaming_mode_title"
android:summary="@string/gaming_mode_summary"
android:defaultValue="false" />
<PreferenceCategory
android:title="@string/doze_brightness_category">

View File

@@ -1,85 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (C) 2016-2019 crDroid Android 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.
-->
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:settings="http://schemas.android.com/apk/res/com.android.settings"
android:title="@string/gaming_mode_title">
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="gaming_mode_enabled"
android:title="@string/gaming_mode_enable_title"
android:summary="@string/gaming_mode_enable_summary"
android:defaultValue="false" />
<com.cherish.settings.preferences.SystemSettingListPreference
android:key="gaming_mode_headsup_toggle"
android:title="@string/gaming_mode_headsup_title"
android:entries="@array/gaming_mode_headsup_toggle_entries"
android:entryValues="@array/gaming_mode_headsup_toggle_values"
android:summary="%s"
android:dependency="gaming_mode_enabled"
android:defaultValue="1" />
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="gaming_mode_hw_keys_toggle"
android:title="@string/gaming_mode_hardware_keys_title"
android:summary="@string/gaming_mode_hardware_keys_summary"
android:dependency="gaming_mode_enabled"
android:defaultValue="false" />
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="gaming_mode_manual_brightness_toggle"
android:title="@string/gaming_mode_brightness_title"
android:summary="@string/gaming_mode_brightness_summary"
android:dependency="gaming_mode_enabled"
android:defaultValue="true" />
<com.cherish.settings.preferences.SystemSettingListPreference
android:key="gaming_mode_ringer_mode"
android:title="@string/gaming_mode_ringer_title"
android:entries="@array/gaming_mode_ringer_entries"
android:entryValues="@array/gaming_mode_ringer_values"
android:defaultValue="0"
android:dependency="gaming_mode_enabled"
android:summary="%s" />
<com.cherish.settings.preferences.SystemSettingListPreference
android:key="gaming_mode_notifications"
android:title="@string/gaming_mode_notifications_title"
android:entries="@array/gaming_mode_notifications_entries"
android:entryValues="@array/gaming_mode_notifications_values"
android:defaultValue="3"
android:dependency="gaming_mode_enabled"
android:summary="%s" />
<!-- <com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="gaming_mode_dynamic_state"
android:title="@string/gaming_mode_dynamic_title"
android:summary="@string/gaming_mode_dynamic_summary"
android:dependency="gaming_mode_enabled"
android:defaultValue="false" />
-->
<PreferenceCategory
android:dependency="gaming_mode_enabled"
android:title="@string/gaming_mode_app_picker_title"
android:key="gamingmode_applications">
<Preference
android:key="add_gamingmode_packages"
android:icon="@drawable/ic_menu_add_white"
android:title="@string/add_gaming_mode_package_title" />
</PreferenceCategory>
</PreferenceScreen>

View File

@@ -79,14 +79,6 @@
android:title="@string/sleep_mode_aggressive_toggle_title"
android:summary="@string/sleep_mode_aggressive_toggle_summary"
android:defaultValue="true" />
<com.cherish.settings.preferences.SecureSettingListPreference
android:key="sleep_mode_ringer_mode"
android:title="@string/gaming_mode_ringer_title"
android:entries="@array/gaming_mode_ringer_entries"
android:entryValues="@array/gaming_mode_ringer_values"
android:defaultValue="0"
android:summary="%s" />
</PreferenceCategory>
<com.android.settingslib.widget.LayoutPreference

View File

@@ -1,364 +0,0 @@
/*
* Copyright (C) 2019 crDroid Android 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.cherish.settings.fragments;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.ContentResolver;
import android.content.Context;
import android.content.DialogInterface;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.database.ContentObserver;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.UserHandle;
import android.provider.Settings;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import androidx.preference.ListPreference;
import androidx.preference.Preference;
import androidx.preference.PreferenceCategory;
import androidx.preference.PreferenceGroup;
import androidx.preference.PreferenceScreen;
import androidx.preference.SwitchPreference;
import com.android.internal.logging.nano.MetricsProto;
import com.android.settings.R;
import com.android.settings.SettingsPreferenceFragment;
import com.cherish.settings.preferences.PackageListAdapter;
import com.cherish.settings.preferences.PackageListAdapter.PackageItem;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class GamingMode extends SettingsPreferenceFragment
implements Preference.OnPreferenceClickListener {
private static final int DIALOG_GAMING_APPS = 1;
private static final String GAMING_MODE_HW_KEYS = "gaming_mode_hw_keys_toggle";
private SwitchPreference mHardwareKeysDisable;
private PackageListAdapter mPackageAdapter;
private PackageManager mPackageManager;
private PreferenceGroup mGamingPrefList;
private Preference mAddGamingPref;
private String mGamingPackageList;
private Map<String, Package> mGamingPackages;
private Context mContext;
private static final int KEY_MASK_HOME = 0x01;
private static final int KEY_MASK_BACK = 0x02;
private static final int KEY_MASK_MENU = 0x04;
private static final int KEY_MASK_APP_SWITCH = 0x10;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Get launch-able applications
addPreferencesFromResource(R.xml.gaming_mode_settings);
// mFooterPreferenceMixin.createFooterPreference().setTitle(R.string.add_gaming_mode_package_summary);
final PreferenceScreen prefScreen = getPreferenceScreen();
mHardwareKeysDisable = (SwitchPreference) findPreference(GAMING_MODE_HW_KEYS);
if (!haveHWkeys()) {
prefScreen.removePreference(mHardwareKeysDisable);
}
mPackageManager = getPackageManager();
mPackageAdapter = new PackageListAdapter(getActivity());
mGamingPrefList = (PreferenceGroup) findPreference("gamingmode_applications");
mGamingPrefList.setOrderingAsAdded(false);
mGamingPackages = new HashMap<String, Package>();
mAddGamingPref = findPreference("add_gamingmode_packages");
mAddGamingPref.setOnPreferenceClickListener(this);
mContext = getActivity().getApplicationContext();
SettingsObserver observer = new SettingsObserver(new Handler(Looper.getMainLooper()));
observer.observe();
}
@Override
public void onResume() {
super.onResume();
refreshCustomApplicationPrefs();
}
@Override
public int getMetricsCategory() {
return MetricsProto.MetricsEvent.CHERISH_SETTINGS;
}
@Override
public int getDialogMetricsCategory(int dialogId) {
if (dialogId == DIALOG_GAMING_APPS) {
return MetricsProto.MetricsEvent.CHERISH_SETTINGS;
}
return 0;
}
/**
* Utility classes and supporting methods
*/
@Override
public Dialog onCreateDialog(int id) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
final Dialog dialog;
final ListView list = new ListView(getActivity());
list.setAdapter(mPackageAdapter);
builder.setTitle(R.string.profile_choose_app);
builder.setView(list);
dialog = builder.create();
switch (id) {
case DIALOG_GAMING_APPS:
list.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// Add empty application definition, the user will be able to edit it later
PackageItem info = (PackageItem) parent.getItemAtPosition(position);
addCustomApplicationPref(info.packageName, mGamingPackages);
dialog.cancel();
}
});
}
return dialog;
}
class SettingsObserver extends ContentObserver {
SettingsObserver(Handler handler) {
super(handler);
}
void observe() {
ContentResolver resolver = mContext.getContentResolver();
resolver.registerContentObserver(Settings.System.getUriFor(
Settings.System.GAMING_MODE_ACTIVE), false, this,
UserHandle.USER_ALL);
}
@Override
public void onChange(boolean selfChange, Uri uri) {
if (uri.equals(Settings.System.getUriFor(
Settings.System.GAMING_MODE_ACTIVE))) {
boolean enable = Settings.System.getInt(mContext.getContentResolver(),
Settings.System.GAMING_MODE_ACTIVE, 0) == 1;
}
}
}
/**
* Application class
*/
private static class Package {
public String name;
/**
* Stores all the application values in one call
* @param name
*/
public Package(String name) {
this.name = name;
}
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append(name);
return builder.toString();
}
public static Package fromString(String value) {
if (TextUtils.isEmpty(value)) {
return null;
}
try {
Package item = new Package(value);
return item;
} catch (NumberFormatException e) {
return null;
}
}
};
private void refreshCustomApplicationPrefs() {
if (!parsePackageList()) {
return;
}
// Add the Application Preferences
if (mGamingPrefList != null) {
mGamingPrefList.removeAll();
for (Package pkg : mGamingPackages.values()) {
try {
Preference pref = createPreferenceFromInfo(pkg);
mGamingPrefList.addPreference(pref);
} catch (PackageManager.NameNotFoundException e) {
// Do nothing
}
}
// Keep these at the top
mAddGamingPref.setOrder(0);
// Add 'add' options
mGamingPrefList.addPreference(mAddGamingPref);
}
}
@Override
public boolean onPreferenceClick(Preference preference) {
if (preference == mAddGamingPref) {
showDialog(DIALOG_GAMING_APPS);
} else {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity())
.setTitle(R.string.dialog_delete_title)
.setMessage(R.string.dialog_delete_message)
.setIconAttribute(android.R.attr.alertDialogIcon)
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if (preference == mGamingPrefList.findPreference(preference.getKey())) {
removeApplicationPref(preference.getKey(), mGamingPackages);
}
}
})
.setNegativeButton(android.R.string.cancel, null);
builder.show();
}
return true;
}
private void addCustomApplicationPref(String packageName, Map<String,Package> map) {
Package pkg = map.get(packageName);
if (pkg == null) {
pkg = new Package(packageName);
map.put(packageName, pkg);
savePackageList(false, map);
refreshCustomApplicationPrefs();
}
}
private Preference createPreferenceFromInfo(Package pkg)
throws PackageManager.NameNotFoundException {
PackageInfo info = mPackageManager.getPackageInfo(pkg.name,
PackageManager.GET_META_DATA);
Preference pref =
new Preference(getActivity());
pref.setKey(pkg.name);
pref.setTitle(info.applicationInfo.loadLabel(mPackageManager));
pref.setIcon(info.applicationInfo.loadIcon(mPackageManager));
pref.setPersistent(false);
pref.setOnPreferenceClickListener(this);
return pref;
}
private void removeApplicationPref(String packageName, Map<String,Package> map) {
if (map.remove(packageName) != null) {
savePackageList(false, map);
refreshCustomApplicationPrefs();
}
}
private boolean parsePackageList() {
boolean parsed = false;
final String gamingModeString = Settings.System.getString(getContentResolver(),
Settings.System.GAMING_MODE_VALUES);
if (!TextUtils.equals(mGamingPackageList, gamingModeString)) {
mGamingPackageList = gamingModeString;
mGamingPackages.clear();
parseAndAddToMap(gamingModeString, mGamingPackages);
parsed = true;
}
return parsed;
}
private void parseAndAddToMap(String baseString, Map<String,Package> map) {
if (baseString == null) {
return;
}
final String[] array = TextUtils.split(baseString, "\\|");
for (String item : array) {
if (TextUtils.isEmpty(item)) {
continue;
}
Package pkg = Package.fromString(item);
map.put(pkg.name, pkg);
}
}
private void savePackageList(boolean preferencesUpdated, Map<String,Package> map) {
String setting = map == mGamingPackages ? Settings.System.GAMING_MODE_VALUES : Settings.System.GAMING_MODE_DUMMY;
List<String> settings = new ArrayList<String>();
for (Package app : map.values()) {
settings.add(app.toString());
}
final String value = TextUtils.join("|", settings);
if (preferencesUpdated) {
if (TextUtils.equals(setting, Settings.System.GAMING_MODE_VALUES)) {
mGamingPackageList = value;
}
}
Settings.System.putString(getContentResolver(),
setting, value);
}
private boolean haveHWkeys() {
final int deviceKeys = getContext().getResources().getInteger(
com.android.internal.R.integer.config_deviceHardwareKeys);
// read bits for present hardware keys
final boolean hasHomeKey = (deviceKeys & KEY_MASK_HOME) != 0;
final boolean hasBackKey = (deviceKeys & KEY_MASK_BACK) != 0;
final boolean hasMenuKey = (deviceKeys & KEY_MASK_MENU) != 0;
final boolean hasAppSwitchKey = (deviceKeys & KEY_MASK_APP_SWITCH) != 0;
return (hasHomeKey || hasBackKey || hasMenuKey || hasAppSwitchKey);
}
}

View File

@@ -1,51 +0,0 @@
/*
* Copyright (c) 2019 crDroid Android 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.cherish.settings.fragments;
import android.app.AlertDialog;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.provider.Settings;
import android.util.Log;
import android.text.TextUtils;
import com.android.settings.R;
import com.android.internal.util.cherish.GamingModeController;
public class GamingModeReceiver extends BroadcastReceiver {
private static final String TAG = "GamingModeReceiver";
private static final boolean DEBUG = false;
public GamingModeReceiver() {
}
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction() != null &&
intent.getAction().equals(GamingModeController.GAMING_MODE_TURN_OFF)) {
if (DEBUG) Log.d(TAG, "Received " + GamingModeController.GAMING_MODE_TURN_OFF);
Settings.System.putInt(context.getContentResolver(), Settings.System.GAMING_MODE_ACTIVE, 0);
} else if (intent.getAction() != null &&
intent.getAction().equals(GamingModeController.GAMING_MODE_TURN_ON)) {
if (DEBUG) Log.d(TAG, "Received " + GamingModeController.GAMING_MODE_TURN_ON);
Settings.System.putInt(context.getContentResolver(), Settings.System.GAMING_MODE_ACTIVE, 1);
}
}
}