LineageParts: Add new PreferenceCategory and RemotePreference for Hardware Switch
Description
LineageParts: Add new PreferenceCategory and RemotePreference for Hardware Switch.
This feature is fully overlayable from device-side and can house any kind of custom setting fragment.
Screenshots
Technical details
Following diff is an example change to move an option from Settings > System (SettingsLib) into Settings > System > Buttons (LineageParts):
diff --git a/parts/AndroidManifest.xml b/parts/AndroidManifest.xml
index 76ed5ec..5a850cd 100644
--- a/parts/AndroidManifest.xml
+++ b/parts/AndroidManifest.xml
@@ -25,24 +25,9 @@
android:label="@string/switch_settings_title"
android:theme="@style/Theme.SubSettingsBase">
<intent-filter>
- <action android:name="com.android.settings.action.IA_SETTINGS" />
+ <action android:name="org.lineageos.settings.device.HARDWARE_SWITCH_SETTINGS" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
- <meta-data
- android:name="com.android.settings.category"
- android:value="com.android.settings.category.ia.system" />
- <meta-data
- android:name="com.android.settings.icon_tintable"
- android:value="true" />
- <meta-data
- android:name="com.android.settings.icon"
- android:resource="@drawable/ic_settings_switch_button" />
- <meta-data
- android:name="com.android.settings.summary"
- android:resource="@string/switch_settings_summary" />
- <meta-data
- android:name="com.android.settings.order"
- android:value="-256" />
</activity>
<activity
The section title, option title, icon and description are all overlayable from device side:
diff --git a/parts/res/drawable/ic_settings_switch_button.xml b/overlay-lineage/packages/apps/LineageParts/res/drawable/ic_hardware_switch.xml
similarity index 100%
rename from parts/res/drawable/ic_settings_switch_button.xml
rename to overlay-lineage/packages/apps/LineageParts/res/drawable/ic_hardware_switch.xml
diff --git a/overlay-lineage/packages/apps/LineageParts/res/values/strings.xml b/overlay-lineage/packages/apps/LineageParts/res/values/strings.xml
new file mode 100644
index 0000000..321eef6
--- /dev/null
+++ b/overlay-lineage/packages/apps/LineageParts/res/values/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <!-- Switch Settings -->
+ <string name="hardware_switch_category_title">Switch</string>
+ <string name="hardware_switch_title">Switch action</string>
+ <string name="hardware_switch_summary">Configure hardware switch function</string>
+</resources>
To enable overlays:
# Overlays
DEVICE_PACKAGE_OVERLAYS += \
$(LOCAL_PATH)/overlay-lineage
Tests
- Ensure section is not visible by default
-
Ensure section and option are visible when an app registers
org.lineageos.settings.device.HARDWARE_SWITCH_SETTINGS -
Ensure pressing on option opens the custom fragment defined on device-side (or external app) when it registers
org.lineageos.settings.device.HARDWARE_SWITCH_SETTINGS
Issues
https://gitlab.e.foundation/e/devices/backlog/-/issues/1686
