diff --git a/api/lineage_current.txt b/api/lineage_current.txt index 003a5023..03c9aeec 100644 --- a/api/lineage_current.txt +++ b/api/lineage_current.txt @@ -416,6 +416,12 @@ package lineageos.preference { ctor public LineageGlobalSettingSwitchPreference(android.content.Context); } + public class LineageGlobalSettingListPreference extends lineageos.preference.SelfRemovingListPreference { + ctor public LineageGlobalSettingListPreference(android.content.Context, android.util.AttributeSet, int); + ctor public LineageGlobalSettingListPreference(android.content.Context, android.util.AttributeSet); + method public int getIntValue(int); + } + public class LineageSecureSettingListPreference extends lineageos.preference.SelfRemovingListPreference { ctor public LineageSecureSettingListPreference(android.content.Context, android.util.AttributeSet, int); ctor public LineageSecureSettingListPreference(android.content.Context, android.util.AttributeSet); diff --git a/sdk/src/java/lineageos/preference/LineageGlobalSettingListPreference.java b/sdk/src/java/lineageos/preference/LineageGlobalSettingListPreference.java new file mode 100644 index 00000000..5142be55 --- /dev/null +++ b/sdk/src/java/lineageos/preference/LineageGlobalSettingListPreference.java @@ -0,0 +1,54 @@ +/* + * Copyright (C) 2022 The LineageOS 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 lineageos.preference; + +import android.content.Context; +import android.util.AttributeSet; + +import lineageos.providers.LineageSettings; + +public class LineageGlobalSettingListPreference extends SelfRemovingListPreference { + + public LineageGlobalSettingListPreference(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + } + + public LineageGlobalSettingListPreference(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public int getIntValue(int defValue) { + return getValue() == null ? defValue : Integer.valueOf(getValue()); + } + + @Override + protected boolean isPersisted() { + return LineageSettings.Global.getString(getContext().getContentResolver(), + getKey()) != null; + } + + @Override + protected void putString(String key, String value) { + LineageSettings.Global.putString(getContext().getContentResolver(), key, value); + } + + @Override + protected String getString(String key, String defaultValue) { + return LineageSettings.Global.getString(getContext().getContentResolver(), + key, defaultValue); + } +}