OmniControl: Add onPreferenceDisplayDialog to ChargingControlSettings
https://github.com/LineageOS/android_packages_apps_LineageParts/blob/27cfe7882da9988e9b722898dc99cf0026287927/src/org/cyanogenmod/cmparts/SettingsPreferenceFragment.java#L565-L582
commit
https://github.com/LineageOS/android_packages_apps_LineageParts/commit/27cfe7882da9988e9b722898dc99cf0026287927#diff-7117849bb896f63cda1ab5a6e650db8627b4119cc55faf558f3cff83e40d85bcR565-R583
Change-Id: I80e589d00459ceba211359af8aa5418f5f4728e1
diff --git a/app/src/main/java/org/omnirom/control/ChargingControlSettings.java b/app/src/main/java/org/omnirom/control/ChargingControlSettings.java
index 821503a..b00be47 100644
--- a/app/src/main/java/org/omnirom/control/ChargingControlSettings.java
+++ b/app/src/main/java/org/omnirom/control/ChargingControlSettings.java
@@ -28,6 +28,7 @@
import java.lang.reflect.Array;
import java.util.Arrays;
+import java.util.UUID;
import java.util.stream.Stream;
import org.omnirom.control.R;
@@ -36,11 +37,13 @@
import org.omnirom.control.health.StartTimePreference;
import org.omnirom.control.health.TargetTimePreference;
import org.omnirom.control.health.ChargingLimitPreference;
+import org.omnirom.control.widget.CustomDialogPreference;
import omnirom.health.HealthInterface;
import androidx.annotation.DrawableRes;
import androidx.annotation.XmlRes;
import androidx.preference.ListPreference;
+import androidx.preference.Preference;
import omnirom.preference.SystemSettingSwitchPreference;
import static omnirom.health.HealthInterface.MODE_AUTO;
@@ -129,6 +132,29 @@
});
}
+ public void onDialogShowing() {
+ // override in subclass to attach a dismiss listener, for instance
+ }
+
+ @Override
+ public void onDisplayPreferenceDialog(Preference preference) {
+ if (preference.getKey() == null) {
+ // Auto-key preferences that don't have a key, so the dialog can find them.
+ preference.setKey(UUID.randomUUID().toString());
+ }
+ CustomDialogPreference.CustomPreferenceDialogFragment f = null;
+ if (preference instanceof CustomDialogPreference) {
+ f = CustomDialogPreference.CustomPreferenceDialogFragment
+ .newInstance(preference.getKey());
+ } else {
+ super.onDisplayPreferenceDialog(preference);
+ return;
+ }
+ f.setTargetFragment(this, 0);
+ f.show(getParentFragmentManager(), "dialog_preference");
+ onDialogShowing();
+ }
+
@Override
public void onResume() {
super.onResume();