diff --git a/devicesettings/Android.mk b/devicesettings/Android.mk
index 45fe428..7c1f154 100644
--- a/devicesettings/Android.mk
+++ b/devicesettings/Android.mk
@@ -14,7 +14,7 @@ LOCAL_USE_AAPT2 := true
LOCAL_STATIC_ANDROID_LIBRARIES := \
androidx.core_core \
- androidx.preference_preference \
+ androidx.preference_preference
LOCAL_STATIC_JAVA_LIBRARIES := \
org.lineageos.platform.internal \
diff --git a/devicesettings/AndroidManifest.xml b/devicesettings/AndroidManifest.xml
index adc26e0..ee7b9c8 100644
--- a/devicesettings/AndroidManifest.xml
+++ b/devicesettings/AndroidManifest.xml
@@ -11,8 +11,8 @@
android:required="false" />
+ android:minSdkVersion="30"
+ android:targetSdkVersion="30" />
@@ -47,7 +47,7 @@
+ android:theme="@style/Theme.AppCompat.DayNight">
diff --git a/devicesettings/res/mipmap-anydpi-v26/ic_launcher.xml b/devicesettings/res/mipmap-anydpi-v26/ic_launcher.xml
index 67820c5..80b730f 100644
--- a/devicesettings/res/mipmap-anydpi-v26/ic_launcher.xml
+++ b/devicesettings/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -1,5 +1,5 @@
-
-
-
-
-
\ No newline at end of file
+
+
+
+
+
diff --git a/devicesettings/res/values/arrays.xml b/devicesettings/res/values/arrays.xml
new file mode 100644
index 0000000..6a725f5
--- /dev/null
+++ b/devicesettings/res/values/arrays.xml
@@ -0,0 +1,40 @@
+
+
+
+
+ - Basic
+ - Washed
+ - Natural
+ - Vivid
+ - Night 0
+ - Night 1
+ - Night 2
+ - Night
+
+
+
+ - 0x03
+ - 0x45
+ - 0x23
+ - 0x65
+ - 0x43
+ - 0x15
+ - 0x35
+ - 0x75
+
+
+
diff --git a/devicesettings/res/values/strings.xml b/devicesettings/res/values/strings.xml
index dd1afe7..a822da6 100644
--- a/devicesettings/res/values/strings.xml
+++ b/devicesettings/res/values/strings.xml
@@ -17,7 +17,7 @@
Switch Configuration
Adjust docking, performance, and controller settings
- Customization
+ Customization
Performance Mode
Modifies CPU and GPU clocks in order to get the best possible performance at the cost of higher battery wear and usage
WARNING
diff --git a/devicesettings/res/xml/display_panel.xml b/devicesettings/res/xml/display_panel.xml
index 53ae4a3..77ce006 100644
--- a/devicesettings/res/xml/display_panel.xml
+++ b/devicesettings/res/xml/display_panel.xml
@@ -1,15 +1,38 @@
-
+
+
+
+
+
+
+
+
+
diff --git a/devicesettings/src/org/lineageos/settings/device/BootCompletedReceiver.java b/devicesettings/src/org/lineageos/settings/device/BootCompletedReceiver.java
index 8db4a8f..908b9fb 100644
--- a/devicesettings/src/org/lineageos/settings/device/BootCompletedReceiver.java
+++ b/devicesettings/src/org/lineageos/settings/device/BootCompletedReceiver.java
@@ -33,7 +33,7 @@ public class BootCompletedReceiver extends BroadcastReceiver {
// Set preferred OLED panel mode
if(SystemProperties.get("ro.boot.hardware.sku", "").equals("frig")) {
final SharedPreferences sharedPrefs = context.getSharedPreferences(
- "org.lineageos.settings.device_preferences", context.MODE_PRIVATE);
+ "org.lineageos.settings.device_preferences", Context.MODE_PRIVATE);
final String panelMode = sharedPrefs.getString("panel_color_mode", "0x23");
DisplayUtils.setPanelColorMode(panelMode);
diff --git a/devicesettings/src/org/lineageos/settings/device/DeviceSettingsSearchIndexablesProvider.java b/devicesettings/src/org/lineageos/settings/device/DeviceSettingsSearchIndexablesProvider.java
index e73900b..ec4a52b 100644
--- a/devicesettings/src/org/lineageos/settings/device/DeviceSettingsSearchIndexablesProvider.java
+++ b/devicesettings/src/org/lineageos/settings/device/DeviceSettingsSearchIndexablesProvider.java
@@ -37,7 +37,6 @@ import static android.provider.SearchIndexablesContract.NON_INDEXABLES_KEYS_COLU
public class DeviceSettingsSearchIndexablesProvider extends SearchIndexablesProvider {
public static final int SEARCH_IDX_BUTTON_PANEL = 0;
- private static final String TAG = "ConfigPanelSearchIndexablesProvider";
private static SearchIndexableResource[] INDEXABLE_RES =
new SearchIndexableResource[]{
new SearchIndexableResource(1, R.xml.display_panel,
diff --git a/devicesettings/src/org/lineageos/settings/device/DisplaySettingsActivity.java b/devicesettings/src/org/lineageos/settings/device/DisplaySettingsActivity.java
index 4c694a0..8db2d82 100644
--- a/devicesettings/src/org/lineageos/settings/device/DisplaySettingsActivity.java
+++ b/devicesettings/src/org/lineageos/settings/device/DisplaySettingsActivity.java
@@ -22,35 +22,40 @@ import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.os.SystemProperties;
-import android.preference.PreferenceActivity;
import android.view.WindowManagerPolicyConstants;
-public class DisplaySettingsActivity extends PreferenceActivity {
+import androidx.appcompat.app.AppCompatActivity;
+
+public class DisplaySettingsActivity extends AppCompatActivity {
public final Receiver mReceiver = new Receiver();
public boolean mExternalDisplayConnected;
- private DisplaySettingsFragment mFragment;
private String sku = SystemProperties.get("ro.product.name", "");
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- mFragment = new DisplaySettingsFragment();
-
- getFragmentManager().beginTransaction().replace(android.R.id.content, mFragment)
- .commit();
+ if (savedInstanceState == null) {
+ getSupportFragmentManager().beginTransaction()
+ .setReorderingAllowed(true)
+ .add(android.R.id.content, DisplaySettingsFragment.class, null)
+ .commit();
+ }
}
@Override
protected void onPause() {
super.onPause();
- if(!sku.equals("vali"))
+ if (!sku.equals("vali")) {
unregisterReceiver(mReceiver);
+ }
}
+ @Override
protected void onResume() {
super.onResume();
- if(!sku.equals("vali"))
+ if (!sku.equals("vali")) {
mReceiver.init(this);
+ }
}
final class Receiver extends BroadcastReceiver {
@@ -68,11 +73,15 @@ public class DisplaySettingsActivity extends PreferenceActivity {
public void onReceive(Context context, Intent intent) {
mExternalDisplayConnected = intent.getBooleanExtra(
- WindowManagerPolicyConstants.EXTRA_HDMI_PLUGGED_STATE, false);
+ WindowManagerPolicyConstants.EXTRA_HDMI_PLUGGED_STATE, false);
- if (mBlocked) return;
+ if (mBlocked) {
+ return;
+ }
- if (mReceivedInitialIntent) recreate();
+ if (mReceivedInitialIntent) {
+ recreate();
+ }
mReceivedInitialIntent = true;
}
diff --git a/devicesettings/src/org/lineageos/settings/device/DisplaySettingsFragment.java b/devicesettings/src/org/lineageos/settings/device/DisplaySettingsFragment.java
index 43c3fd0..524cb3d 100644
--- a/devicesettings/src/org/lineageos/settings/device/DisplaySettingsFragment.java
+++ b/devicesettings/src/org/lineageos/settings/device/DisplaySettingsFragment.java
@@ -16,11 +16,10 @@
package org.lineageos.settings.device;
-import android.app.ActionBar;
import android.app.AlertDialog;
-import android.content.Context;
import android.content.DialogInterface;
import android.content.SharedPreferences;
+import android.content.res.Resources;
import android.content.Intent;
import android.os.Bundle;
import android.os.CountDownTimer;
@@ -32,10 +31,10 @@ import android.view.MenuItem;
import androidx.preference.ListPreference;
import androidx.preference.Preference;
import androidx.preference.PreferenceCategory;
-import androidx.preference.PreferenceFragment;
+import androidx.preference.PreferenceFragmentCompat;
import androidx.preference.PreferenceManager;
import androidx.preference.PreferenceScreen;
-import androidx.preference.SwitchPreference;
+import androidx.preference.SwitchPreferenceCompat;
import java.util.ArrayList;
import java.util.Collections;
@@ -48,39 +47,17 @@ import vendor.nvidia.hardware.graphics.display.V1_0.HwcSvcDisplayType;
import vendor.nvidia.hardware.graphics.display.V1_0.HwcSvcModeType;
import vendor.nvidia.hardware.graphics.display.V1_0.INvDisplay;
-public class DisplaySettingsFragment extends PreferenceFragment
+public class DisplaySettingsFragment extends PreferenceFragmentCompat
implements SharedPreferences.OnSharedPreferenceChangeListener {
- public static String[] modes = {
- "0x03", /* DCS_SM_COLOR_MODE_BASIC */
- "0x45", /* DCS_SM_COLOR_MODE_WASHED */
- "0x23", /* DCS_SM_COLOR_MODE_NATURAL */
- "0x65", /* DCS_SM_COLOR_MODE_VIVID */
- "0x43", /* DCS_SM_COLOR_MODE_NIGHT0 */
- "0x15", /* DCS_SM_COLOR_MODE_NIGHT1 */
- "0x35", /* DCS_SM_COLOR_MODE_NIGHT2 */
- "0x75" /* DCS_SM_COLOR_MODE_NIGHT3 */
- };
-
- public static String[] modeMap = {
- "Basic",
- "Washed",
- "Natural",
- "Vivid",
- "Night 0",
- "Night 1",
- "Night 2",
- "Night 3"
- };
-
private static final String TAG = DisplaySettingsFragment.class.getSimpleName();
+ private final String sku = SystemProperties.get("ro.product.name", "");
public boolean mInModeChange = false;
private INvDisplay mDisplayService;
- private String sku = SystemProperties.get("ro.product.name", "");
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
- if(!sku.equals("vali")) {
+ if (!sku.equals("vali")) {
try {
mDisplayService = INvDisplay.getService(true /* retry */);
} catch (RemoteException e) {
@@ -91,13 +68,11 @@ public class DisplaySettingsFragment extends PreferenceFragment
addPreferencesFromResource(R.xml.display_panel);
PreferenceScreen preferenceScreen = this.getPreferenceScreen();
- createPerfSettings(preferenceScreen);
+ createPerfSettings();
- if(!sku.equals("vali"))
+ if (!sku.equals("vali")) {
createDisplaySettings(preferenceScreen);
-
- final ActionBar actionBar = getActivity().getActionBar();
- actionBar.setDisplayHomeAsUpEnabled(true);
+ }
}
@Override
@@ -234,16 +209,8 @@ public class DisplaySettingsFragment extends PreferenceFragment
}.start();
}
- private void createPerfSettings(PreferenceScreen preferenceScreen) {
- PreferenceCategory perfCategory = new PreferenceCategory(preferenceScreen
- .getContext());
- perfCategory.setTitle(R.string.perf_category_title);
-
- SwitchPreference perfPreference = new SwitchPreference(perfCategory
- .getContext());
- perfPreference.setTitle(R.string.perf_setting_title);
- perfPreference.setSummary(R.string.perf_setting_summary);
- perfPreference.setKey("perf_mode");
+ private void createPerfSettings() {
+ SwitchPreferenceCompat perfPreference = findPreference("perf_mode");
perfPreference.setOnPreferenceChangeListener(
new Preference.OnPreferenceChangeListener() {
@@ -297,16 +264,17 @@ public class DisplaySettingsFragment extends PreferenceFragment
return true;
}
});
-
- preferenceScreen.addPreference(perfCategory);
- perfCategory.addPreference(perfPreference);
}
- private void createPanelModeSettings(PreferenceCategory perfCategory) {
- ListPreference panelColorPref = new ListPreference(perfCategory.getContext());
+ private void createPanelModeSettings() {
+ ListPreference panelColorPref = findPreference("panel_color_mode");
String current = DisplayUtils.getPanelColorMode();
int index;
+ Resources res = getResources();
+ String[] modes = res.getStringArray(R.array.panel_modes);
+ String[] modeMap = res.getStringArray(R.array.panel_mode_map);
+
for(index = 0; index < modes.length; index++) {
if(current.equals(modes[index]))
break;
@@ -318,38 +286,27 @@ public class DisplaySettingsFragment extends PreferenceFragment
Log.w(TAG, "OLED Panel Mode Index: " + String.valueOf(index));
- // matches sysfs node for consistency
- panelColorPref.setKey("panel_color_mode");
- panelColorPref.setTitle(R.string.panel_color_setting_title);
- panelColorPref.setSummary(String.format(
- getString(R.string.panel_color_setting_summary), modeMap[index]));
- panelColorPref.setEntries(modeMap);
- panelColorPref.setEntryValues(modes);
panelColorPref.setValue(current);
+ panelColorPref.setSummary(modeMap[index]);
panelColorPref.setOnPreferenceChangeListener(
- new Preference.OnPreferenceChangeListener() {
- @Override
- public boolean onPreferenceChange(Preference preference,
- Object newValue) {
- int newIndex;
+ new Preference.OnPreferenceChangeListener() {
+ @Override
+ public boolean onPreferenceChange(Preference preference,
+ Object newValue) {
+ int newIndex;
- DisplayUtils.setPanelColorMode((String)newValue);
+ DisplayUtils.setPanelColorMode((String) newValue);
- for(newIndex = 0; newIndex < modes.length; newIndex++) {
- if(((String)newValue).equals(modes[newIndex]))
- break;
- }
-
- panelColorPref.setSummary(String.format(
- getString(R.string.panel_color_setting_summary),
- modeMap[newIndex]));
-
- return true;
- }
- });
-
- perfCategory.addPreference(panelColorPref);
+ for (newIndex = 0; newIndex < modes.length; newIndex++) {
+ if (((String) newValue).equals(modes[newIndex])) {
+ panelColorPref.setSummary(modeMap[newIndex]);
+ break;
+ }
+ }
+ return true;
+ }
+ });
}
}
@@ -458,23 +415,21 @@ public class DisplaySettingsFragment extends PreferenceFragment
// Show checkbox to disable internal panel when an external display is connected
if (display == HwcSvcDisplay.HWC_SVC_DISPLAY_PANEL) {
- SwitchPreference disableInternalOnExternalConnectedPreference =
- new SwitchPreference(category.getContext());
+ SwitchPreferenceCompat disableInternalOnExternalConnectedPreference =
+ new SwitchPreferenceCompat(category.getContext());
disableInternalOnExternalConnectedPreference
- .setTitle(R.string.disable_internal_on_external_connected_title);
+ .setTitle(R.string.disable_internal_on_external_connected_title);
disableInternalOnExternalConnectedPreference
- .setSummaryOn(
- R.string.disable_internal_on_external_connected_summary_on);
+ .setSummaryOn(R.string.disable_internal_on_external_connected_summary_on);
disableInternalOnExternalConnectedPreference
- .setSummaryOff(
- R.string.disable_internal_on_external_connected_summary_off);
+ .setSummaryOff(R.string.disable_internal_on_external_connected_summary_off);
disableInternalOnExternalConnectedPreference
- .setKey("disable_internal_on_external_connected");
+ .setKey("disable_internal_on_external_connected");
category.addPreference(disableInternalOnExternalConnectedPreference);
- if(sku.equals("frig")) {
- createPanelModeSettings(category);
+ if (sku.equals("frig")) {
+ createPanelModeSettings();
}
}
}
diff --git a/devicesettings/src/org/lineageos/settings/device/DisplayUtils.java b/devicesettings/src/org/lineageos/settings/device/DisplayUtils.java
index e5cf55c..57e3978 100644
--- a/devicesettings/src/org/lineageos/settings/device/DisplayUtils.java
+++ b/devicesettings/src/org/lineageos/settings/device/DisplayUtils.java
@@ -38,19 +38,24 @@ import vendor.nvidia.hardware.graphics.display.V1_0.INvDisplay;
public class DisplayUtils {
private static final String TAG = DisplayUtils.class.getSimpleName();
public static final String POWER_UPDATE_INTENT = "com.lineage.devicesettings.UPDATE_POWER";
+ public static final String PANEL_MODE_SYSFS =
+ "/sys/devices/50000000.host1x/tegradc.0/panel_color_mode";
+ public static final String PWM_FAN_PROFILE_SYSFS = "/sys/devices/pwm-fan/fan_profile";
+ public static final String EST_FAN_PROFILE_SYSFS = "/sys/devices/thermal-fan-est/fan_profile";
+ public static final String INT_DISPLAY_MODE_SYSFS =
+ "/sys/bus/platform/devices/tegradc.0/enable";
public static void setInternalDisplayState(boolean state) {
Log.d(TAG, "setInternalDisplayState: " + String.valueOf(state));
try {
- FileOutputStream colorModeFile =
- new FileOutputStream("/sys/bus/platform/devices/tegradc.0/enable");
+ FileOutputStream intModeFile = new FileOutputStream(INT_DISPLAY_MODE_SYSFS);
byte[] buf = new byte[2];
buf[0] = (byte) (state ? '1' : '0');
buf[1] = '\n';
- colorModeFile.write(buf);
- colorModeFile.close();
+ intModeFile.write(buf);
+ intModeFile.close();
} catch (IOException e) {
Log.w(TAG, "Failed to write display state");
}
@@ -156,8 +161,7 @@ public class DisplayUtils {
public static void setPanelColorMode(String mode) {
Log.d(TAG, "OLED panel mode set: " + mode);
try {
- FileOutputStream colorModeFile = new FileOutputStream(
- "/sys/devices/50000000.host1x/tegradc.0/panel_color_mode");
+ FileOutputStream colorModeFile = new FileOutputStream(PANEL_MODE_SYSFS);
byte[] buf = new byte[4];
buf = mode.getBytes(StandardCharsets.US_ASCII);
@@ -174,8 +178,7 @@ public class DisplayUtils {
String out;
try {
- FileInputStream colorModeFile = new FileInputStream(
- "/sys/devices/50000000.host1x/tegradc.0/panel_color_mode");
+ FileInputStream colorModeFile = new FileInputStream(PANEL_MODE_SYSFS);
colorModeFile.read(buf);
out = new String(buf, StandardCharsets.US_ASCII);
@@ -192,12 +195,10 @@ public class DisplayUtils {
public static void setFanProfile(String profile) {
Log.i(TAG, "Setting fan profile: " + profile);
try {
- final FileOutputStream pwmProfile = new FileOutputStream(
- "/sys/devices/pwm-fan/fan_profile");
+ final FileOutputStream pwmProfile = new FileOutputStream(PWM_FAN_PROFILE_SYSFS);
pwmProfile.write(profile.getBytes());
pwmProfile.close();
- final FileOutputStream estProfile = new FileOutputStream(
- "/sys/devices/thermal-fan-est/fan_profile");
+ final FileOutputStream estProfile = new FileOutputStream(EST_FAN_PROFILE_SYSFS);
estProfile.write(profile.getBytes());
estProfile.close();
} catch (IOException e) {
diff --git a/devicesettings/src/org/lineageos/settings/device/DockService.java b/devicesettings/src/org/lineageos/settings/device/DockService.java
index 480f8c5..8476cee 100644
--- a/devicesettings/src/org/lineageos/settings/device/DockService.java
+++ b/devicesettings/src/org/lineageos/settings/device/DockService.java
@@ -76,7 +76,7 @@ public class DockService extends Service {
private void updatePowerState(Context context, boolean connected) {
final SharedPreferences sharedPrefs = context
.getSharedPreferences("org.lineageos.settings.device_preferences",
- context.MODE_PRIVATE);
+ Context.MODE_PRIVATE);
final boolean perfMode = sharedPrefs.getBoolean("perf_mode", false);
final String sku = SystemProperties.get("ro.boot.hardware.sku", "");
@@ -117,10 +117,10 @@ public class DockService extends Service {
@Override
public void onReceive(Context context, Intent intent) {
SharedPreferences sharedPrefs = context.getSharedPreferences(
- "org.lineageos.settings.device_preferences", context.MODE_PRIVATE);
+ "org.lineageos.settings.device_preferences", Context.MODE_PRIVATE);
final String action = intent.getAction();
final boolean connected = intent.getBooleanExtra(
- WindowManagerPolicyConstants.EXTRA_HDMI_PLUGGED_STATE, false);
+ WindowManagerPolicyConstants.EXTRA_HDMI_PLUGGED_STATE, false);
switch (action) {
case WindowManagerPolicyConstants.ACTION_HDMI_PLUGGED:
@@ -138,9 +138,9 @@ public class DockService extends Service {
case Intent.ACTION_SCREEN_ON:
Log.i(TAG, "Screen on");
- DisplayUtils.setInternalDisplayState(!(mExternalDisplayConnected
- && sharedPrefs.getBoolean(
- "disable_internal_on_external_connected", false)));
+ DisplayUtils.setInternalDisplayState(!(mExternalDisplayConnected &&
+ sharedPrefs.getBoolean("disable_internal_on_external_connected",
+ false)));
// Unlock device automatically if docked and reset res otherwise to
// work around broken HWC rotation