Evolver: Add lockscreen widgets settings
Signed-off-by: minaripenguin <minaripenguin@users.noreply.github.com>
This commit is contained in:
20
res/layout/apply_change_button.xml
Normal file
20
res/layout/apply_change_button.xml
Normal file
@@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="right"
|
||||
android:orientation="horizontal" >
|
||||
|
||||
<Button
|
||||
android:id="@+id/apply_change"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:layout_marginRight="20dp"
|
||||
android:enabled="false"
|
||||
android:text="@string/apply_change_button_title"
|
||||
android:textAllCaps="false"
|
||||
style="@style/ActionPrimaryButton" />
|
||||
|
||||
</LinearLayout>
|
||||
@@ -968,4 +968,49 @@
|
||||
<item>18</item>
|
||||
<item>19</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="widget_entries">
|
||||
<item>@string/status_bar_date_none</item>
|
||||
<item>@string/calculator</item>
|
||||
<item>@string/media</item>
|
||||
<item>@string/clock_timer</item>
|
||||
<item>@string/torch</item>
|
||||
<item>@string/weather</item>
|
||||
<item>@string/wifi</item>
|
||||
<item>@string/data</item>
|
||||
<item>@string/ringer</item>
|
||||
<item>@string/bt</item>
|
||||
<item>@string/hotspot</item>
|
||||
<item>@string/wallet</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="widget_values">
|
||||
<item></item>
|
||||
<item>calculator</item>
|
||||
<item>media</item>
|
||||
<item>timer</item>
|
||||
<item>torch</item>
|
||||
<item>weather</item>
|
||||
<item>wifi</item>
|
||||
<item>data</item>
|
||||
<item>ringer</item>
|
||||
<item>bt</item>
|
||||
<item>hotspot</item>
|
||||
<item>wallet</item>
|
||||
</string-array>
|
||||
|
||||
<!-- Lockscreen widget style -->
|
||||
<string-array name="lockscreen_widgets_style_entries">
|
||||
<item>@string/lockscreen_widgets_style1</item>
|
||||
<item>@string/lockscreen_widgets_style2</item>
|
||||
<item>@string/lockscreen_widgets_style3</item>
|
||||
<item>@string/lockscreen_widgets_style4</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="lockscreen_widgets_style_values" translatable="false">
|
||||
<item>0</item>
|
||||
<item>1</item>
|
||||
<item>2</item>
|
||||
<item>3</item>
|
||||
</string-array>
|
||||
</resources>
|
||||
|
||||
@@ -126,12 +126,12 @@
|
||||
<string name="pulse_help_policy_notice_title">About Pulse</string>
|
||||
<string name="pulse_help_policy_notice_summary">Pulse is a brilliant audio graphic equalizer when music plays on the device</string>
|
||||
<string name="lock_screen_pulse_settings_title">Pulse</string>
|
||||
<string name="lock_screen_pulse_settings_summary">Audio graphic equalizer for navigation bar and lockscreen</string>
|
||||
<string name="show_navbar_pulse_title">Navbar Pulse</string>
|
||||
<string name="lock_screen_pulse_settings_summary">Audio graphic equalizer for navigation bar and lock screen</string>
|
||||
<string name="show_navbar_pulse_title">Navbar pulse</string>
|
||||
<string name="show_navbar_pulse_summary">Audio graphic equalizer on the navigation bar</string>
|
||||
<string name="show_lockscreen_pulse_title">Lockscreen Pulse</string>
|
||||
<string name="show_lockscreen_pulse_summary">Audio graphic equalizer on the lockscreen</string>
|
||||
<string name="show_ambient_pulse_title">Ambient Pulse</string>
|
||||
<string name="show_lockscreen_pulse_title">Lock screen pulse</string>
|
||||
<string name="show_lockscreen_pulse_summary">Audio graphic equalizer on the lock screen</string>
|
||||
<string name="show_ambient_pulse_title">Ambient pulse</string>
|
||||
<string name="show_ambient_pulse_summary">Audio graphic equalizer on the ambient screen</string>
|
||||
<string name="pulse_render_mode_title">Render mode</string>
|
||||
<string name="pulse_render_mode_fading_bars">Fading blocks</string>
|
||||
@@ -154,10 +154,10 @@
|
||||
<string name="pulse_filled_block_size">Block size</string>
|
||||
<string name="pulse_empty_block_size">Block spacing</string>
|
||||
|
||||
<!-- Lockscreen Clock Highlight Guide -->
|
||||
<!-- Lock screen Clock Highlight Guide -->
|
||||
<string name="ls_clock_face_highlight_text">Swipe left or right to preview clock styles</string>
|
||||
|
||||
<!-- Lockscreen Clock Revamp -->
|
||||
<!-- Lock screen Clock Revamp -->
|
||||
<string name="ls_clock_custom_font_not_supported">Selected clock does not support custom fonts</string>
|
||||
|
||||
<!-- Custom Clock Style -->
|
||||
@@ -274,8 +274,8 @@
|
||||
<string name="status_bar_location_privacy_indicator_summary">Display an indicator when an app accesses your location</string>
|
||||
<string name="status_bar_projection_privacy_indicator_title">Screen projection</string>
|
||||
<string name="status_bar_projection_privacy_indicator_summary">Display an indicator when the screen is being projected</string>
|
||||
<string name="status_bar_carrier_lock_screen_title">Carrier name on lockscreen</string>
|
||||
<string name="status_bar_carrier_lock_screen_summary">Display carrier name on lockscreen status bar</string>
|
||||
<string name="status_bar_carrier_lock_screen_title">Carrier name on lock screen</string>
|
||||
<string name="status_bar_carrier_lock_screen_summary">Display carrier name on lock screen status bar</string>
|
||||
<string name="status_bar_lyric_title">Status bar lyric</string>
|
||||
<string name="status_bar_lyric_summary">Show lyric in status bar (need app support)</string>
|
||||
<string name="status_bar_lyric_options_title">Options</string>
|
||||
@@ -669,7 +669,7 @@
|
||||
<string name="glass_blur">Glass blur</string>
|
||||
<string name="frosted_blur">Frosted blur</string>
|
||||
<string name="wallpaper_styles_footer">
|
||||
For wallpaper styles to work effectively, users must set the wallpapers for the lockscreen and homescreen at different times.\nThe same wallpaper can be used, but it should not be applied to both the lockscreen and homescreen at the same time.\nThis is optional when using the BOTH OPTION for wallpaper blur and dim styles.
|
||||
For wallpaper styles to work effectively, users must set the wallpapers for the lock screen and home screen at different times.\nThe same wallpaper can be used, but it should not be applied to both the lock screen and home screen at the same time.\nThis is optional when using the BOTH OPTION for wallpaper blur and dim styles.
|
||||
</string>
|
||||
|
||||
<!-- Compact QS Media Player-->
|
||||
@@ -686,7 +686,7 @@
|
||||
<string name="depth_wallpaper_offset_x_title">Depth wallpaper horizontal offset</string>
|
||||
<string name="depth_wallpaper_offset_y_title">Depth wallpaper vertical offset</string>
|
||||
<string name="dw_footer_text">
|
||||
The depth wallpaper feature, inspired by iOS\'s Wallpaper Subject Segmentation, enables overlaying of a subject above the lockscreen clock to show a wallpaper depth effect.\n\nTo setup Depth Wallpaper Feature:\n1. Set a wallpaper with the subject or a background you want the subject to be above of.\n2. Select a subject image to track, this image will be overlaid above the lockscreen clock.\n3. Modify the offsets and opacity according to your needs.
|
||||
The depth wallpaper feature, inspired by iOS\'s Wallpaper Subject Segmentation, enables overlaying of a subject above the lock screen clock to show a wallpaper depth effect.\n\nTo setup Depth Wallpaper Feature:\n1. Set a wallpaper with the subject or a background you want the subject to be above of.\n2. Select a subject image to track, this image will be overlaid above the lock screen clock.\n3. Modify the offsets and opacity according to your needs.
|
||||
</string>
|
||||
|
||||
<!-- Media art -->
|
||||
@@ -695,7 +695,7 @@
|
||||
<string name="ls_media_art_fade_level_title">Media cover art fade level</string>
|
||||
<string name="ls_media_art_fade_level_summary">Set media cover art fade level</string>
|
||||
|
||||
<!-- Lockscreen album art filter -->
|
||||
<!-- Lock screen album art filter -->
|
||||
<string name="lockscreen_albumart_filter_title">Media cover art filter</string>
|
||||
<string name="lockscreen_albumart_filter_none">None</string>
|
||||
<string name="lockscreen_albumart_filter_grayscale">Grayscale</string>
|
||||
@@ -743,10 +743,51 @@
|
||||
<string name="qs_widgets_enabled_title">QS widgets</string>
|
||||
<string name="qs_widgets_enabled_summary">Show widgets for quick access. \nLimits QS rows to 2 to avoid breaking AOSP QS Panel scrolling</string>
|
||||
|
||||
<!-- Lockscreen widgets -->
|
||||
<string name="lockscreen_widgets_title">Widgets</string>
|
||||
<string name="lockscreen_widgets_enabled_title">Enable lock screen widgets</string>
|
||||
<string name="lockscreen_widgets_enabled_summary">Add widgets to lock screen</string>
|
||||
<string name="lockscreen_display_widgets_title">Device info widget</string>
|
||||
<string name="lockscreen_display_widgets_summary">Show device info widget on lock screen</string>
|
||||
<string name="large_widgets_category_title">Big widgets</string>
|
||||
<string name="main_custom_widgets1">Big widget 1</string>
|
||||
<string name="main_custom_widgets2">Big widget 2</string>
|
||||
<string name="mini_widgets_category_title">Mini widgets</string>
|
||||
<string name="custom_widgets1">Mini widget 1</string>
|
||||
<string name="custom_widgets2">Mini widget 2</string>
|
||||
<string name="custom_widgets3">Mini widget 3</string>
|
||||
<string name="custom_widgets4">Mini widget 4</string>
|
||||
<string name="camera">Camera</string>
|
||||
<string name="clock_timer">Clock/Timer</string>
|
||||
<string name="calculator">Calculator</string>
|
||||
<string name="gallery">Gallery</string>
|
||||
<string name="media">Media Player</string>
|
||||
<string name="torch">Torch</string>
|
||||
<string name="controls_media_button_play">Play</string>
|
||||
<string name="weather">Weather</string>
|
||||
<string name="wifi">Wifi</string>
|
||||
<string name="data">Data</string>
|
||||
<string name="ringer">Ringer</string>
|
||||
<string name="bt">Bluetooth</string>
|
||||
<string name="hotspot">Hotspot</string>
|
||||
<string name="wallet">Wallet</string>
|
||||
|
||||
<!-- Lockscreen Widgets Styles -->
|
||||
<string name="lockscreen_widgets_style_title">Lock screen widgets style</string>
|
||||
<string name="lockscreen_widgets_style1">Material Rounded</string>
|
||||
<string name="lockscreen_widgets_style2">Material Square</string>
|
||||
<string name="lockscreen_widgets_style3">Translucent (Square)</string>
|
||||
<string name="lockscreen_widgets_style4">Translucent (Rounded)</string>
|
||||
<string name="lockscreen_widgets_transparency_title">Translucent style widget transparency</string>
|
||||
<string name="lockscreen_widgets_transparency_summary">Configure translucent style widget opacity level</string>
|
||||
|
||||
<!-- Font styles -->
|
||||
<string name="font_styles_title">Font Styles</string>
|
||||
<string name="font_styles_summary">Change system font style</string>
|
||||
<string name="font_preview_text">The quick brown\nfox jumps over the\nlazy dog\n\nABCDEFGHIJKLM\nNOPQRSTUVWXYZ\nabcdefghijkl\nmnopqrstuvwxyz\n1234567890</string>
|
||||
<string name="apply_button_text">Apply</string>
|
||||
<string name="font_picker_select_font">Select font</string>
|
||||
|
||||
<!-- Apply Button -->
|
||||
<string name="apply_change_button_title">Apply</string>
|
||||
</resources>
|
||||
|
||||
@@ -38,6 +38,18 @@
|
||||
android:dependency="custom_aod_image_enabled" />
|
||||
</PreferenceCategory>
|
||||
|
||||
<PreferenceCategory
|
||||
android:key="lockscreen_widgets"
|
||||
android:title="@string/lockscreen_widgets_title">
|
||||
|
||||
<!-- Lockscreen Widgets -->
|
||||
<Preference
|
||||
android:key="lockscreen_widgets"
|
||||
android:title="@string/lockscreen_widgets_title"
|
||||
android:summary="@string/lockscreen_widgets_enabled_summary"
|
||||
android:fragment="org.evolution.settings.fragments.lockscreen.LockScreenWidgets" />
|
||||
</PreferenceCategory>
|
||||
|
||||
<PreferenceCategory
|
||||
android:key="lock_screen_interface_category"
|
||||
android:title="@string/lock_screen_interface_category">
|
||||
|
||||
106
res/xml/evolution_settings_lock_screen_widgets.xml
Normal file
106
res/xml/evolution_settings_lock_screen_widgets.xml
Normal file
@@ -0,0 +1,106 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
Copyright (C) 2024 the risingOS 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/lockscreen_widgets_title">
|
||||
|
||||
<org.evolution.settings.preferences.SystemSettingSwitchPreference
|
||||
android:key="lockscreen_widgets_enabled"
|
||||
android:title="@string/lockscreen_widgets_enabled_title"
|
||||
android:summary="@string/lockscreen_widgets_enabled_summary"
|
||||
android:defaultValue="false" />
|
||||
|
||||
<org.evolution.settings.preferences.SystemSettingSwitchPreference
|
||||
android:key="lockscreen_info_widgets_enabled"
|
||||
android:dependency="lockscreen_widgets_enabled"
|
||||
android:title="@string/lockscreen_display_widgets_title"
|
||||
android:summary="@string/lockscreen_display_widgets_summary"
|
||||
android:defaultValue="false" />
|
||||
|
||||
<org.evolution.settings.preferences.SystemSettingListPreference
|
||||
android:key="lockscreen_widgets_style"
|
||||
android:dependency="lockscreen_widgets_enabled"
|
||||
android:title="@string/lockscreen_widgets_style_title"
|
||||
android:entries="@array/lockscreen_widgets_style_entries"
|
||||
android:entryValues="@array/lockscreen_widgets_style_values"
|
||||
android:defaultValue="0"
|
||||
android:summary="%s" />
|
||||
|
||||
<org.evolution.settings.preferences.SystemSettingSeekBarPreference
|
||||
android:key="lockscreen_widgets_transparency"
|
||||
android:title="@string/lockscreen_widgets_transparency_title"
|
||||
android:summary="@string/lockscreen_widgets_transparency_summary"
|
||||
android:defaultValue="100"
|
||||
settings:interval="1"
|
||||
settings:units="%"
|
||||
android:max="100"
|
||||
android:min="0" />
|
||||
|
||||
<org.evolution.settings.preferences.SystemSettingListPreference
|
||||
android:entries="@array/widget_entries"
|
||||
android:dependency="lockscreen_widgets_enabled"
|
||||
android:title="@string/main_custom_widgets1"
|
||||
android:key="main_custom_widgets1"
|
||||
android:entryValues="@array/widget_values"
|
||||
android:summary="%s" />
|
||||
|
||||
<org.evolution.settings.preferences.SystemSettingListPreference
|
||||
android:entries="@array/widget_entries"
|
||||
android:dependency="lockscreen_widgets_enabled"
|
||||
android:title="@string/main_custom_widgets2"
|
||||
android:key="main_custom_widgets2"
|
||||
android:entryValues="@array/widget_values"
|
||||
android:summary="%s" />
|
||||
|
||||
<org.evolution.settings.preferences.SystemSettingListPreference
|
||||
android:entries="@array/widget_entries"
|
||||
android:dependency="lockscreen_widgets_enabled"
|
||||
android:title="@string/custom_widgets1"
|
||||
android:key="custom_widgets1"
|
||||
android:entryValues="@array/widget_values"
|
||||
android:summary="%s" />
|
||||
|
||||
<org.evolution.settings.preferences.SystemSettingListPreference
|
||||
android:entries="@array/widget_entries"
|
||||
android:dependency="lockscreen_widgets_enabled"
|
||||
android:title="@string/custom_widgets2"
|
||||
android:key="custom_widgets2"
|
||||
android:entryValues="@array/widget_values"
|
||||
android:summary="%s" />
|
||||
|
||||
<org.evolution.settings.preferences.SystemSettingListPreference
|
||||
android:entries="@array/widget_entries"
|
||||
android:dependency="lockscreen_widgets_enabled"
|
||||
android:title="@string/custom_widgets3"
|
||||
android:key="custom_widgets3"
|
||||
android:entryValues="@array/widget_values"
|
||||
android:summary="%s" />
|
||||
|
||||
<org.evolution.settings.preferences.SystemSettingListPreference
|
||||
android:entries="@array/widget_entries"
|
||||
android:dependency="lockscreen_widgets_enabled"
|
||||
android:title="@string/custom_widgets4"
|
||||
android:key="custom_widgets4"
|
||||
android:entryValues="@array/widget_values"
|
||||
android:summary="%s" />
|
||||
|
||||
<com.android.settingslib.widget.LayoutPreference
|
||||
android:key="apply_change_button"
|
||||
android:layout="@layout/apply_change_button" />
|
||||
|
||||
</PreferenceScreen>
|
||||
@@ -0,0 +1,243 @@
|
||||
/*
|
||||
* Copyright (C) 2023-2024 the risingOS 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 org.evolution.settings.fragments.lockscreen;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.ContentResolver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.BitmapFactory;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.os.UserHandle;
|
||||
import android.provider.MediaStore;
|
||||
import android.provider.Settings;
|
||||
import android.text.TextUtils;
|
||||
import android.view.View;
|
||||
import android.widget.Button;
|
||||
import android.widget.Toast;
|
||||
|
||||
import androidx.preference.ListPreference;
|
||||
import androidx.preference.Preference;
|
||||
import androidx.preference.PreferenceCategory;
|
||||
import androidx.preference.PreferenceScreen;
|
||||
import androidx.preference.Preference.OnPreferenceChangeListener;
|
||||
import androidx.preference.SwitchPreferenceCompat;
|
||||
|
||||
import com.android.internal.logging.nano.MetricsProto;
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.SettingsPreferenceFragment;
|
||||
import com.android.settings.search.BaseSearchIndexProvider;
|
||||
import com.android.settingslib.search.SearchIndexable;
|
||||
import com.android.settingslib.widget.LayoutPreference;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@SearchIndexable
|
||||
public class LockScreenWidgets extends SettingsPreferenceFragment implements Preference.OnPreferenceChangeListener {
|
||||
|
||||
public static final String TAG = "LockScreenWidgets";
|
||||
|
||||
private static final String MAIN_WIDGET_1_KEY = "main_custom_widgets1";
|
||||
private static final String MAIN_WIDGET_2_KEY = "main_custom_widgets2";
|
||||
private static final String EXTRA_WIDGET_1_KEY = "custom_widgets1";
|
||||
private static final String EXTRA_WIDGET_2_KEY = "custom_widgets2";
|
||||
private static final String EXTRA_WIDGET_3_KEY = "custom_widgets3";
|
||||
private static final String EXTRA_WIDGET_4_KEY = "custom_widgets4";
|
||||
private static final String KEY_APPLY_CHANGE_BUTTON = "apply_change_button";
|
||||
|
||||
private static final String LOCKSCREEN_WIDGETS_KEY = "lockscreen_widgets";
|
||||
private static final String LOCKSCREEN_WIDGETS_EXTRAS_KEY = "lockscreen_widgets_extras";
|
||||
|
||||
private Preference mMainWidget1;
|
||||
private Preference mMainWidget2;
|
||||
private Preference mExtraWidget1;
|
||||
private Preference mExtraWidget2;
|
||||
private Preference mExtraWidget3;
|
||||
private Preference mExtraWidget4;
|
||||
private Button mApplyChange;
|
||||
|
||||
private SwitchPreferenceCompat mLockScreenWidgetsEnabledPref;
|
||||
private List<Preference> mWidgetPreferences;
|
||||
|
||||
private Map<Preference, String> widgetKeysMap = new HashMap<>();
|
||||
private Map<Preference, String> initialWidgetKeysMap = new HashMap<>();
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
addPreferencesFromResource(R.xml.evolution_settings_lock_screen_widgets);
|
||||
|
||||
initializePreferences();
|
||||
setupListeners();
|
||||
|
||||
boolean isLsWidgetsEnabled = Settings.System.getIntForUser(
|
||||
getActivity().getContentResolver(),
|
||||
"lockscreen_widgets_enabled",
|
||||
0,
|
||||
UserHandle.USER_CURRENT) != 0;
|
||||
|
||||
mLockScreenWidgetsEnabledPref.setChecked(isLsWidgetsEnabled);
|
||||
showWidgetPreferences(isLsWidgetsEnabled);
|
||||
|
||||
loadInitialPreferences();
|
||||
saveInitialPreferences();
|
||||
mApplyChange.setEnabled(false);
|
||||
}
|
||||
|
||||
private void initializePreferences() {
|
||||
mMainWidget1 = findPreference(MAIN_WIDGET_1_KEY);
|
||||
mMainWidget2 = findPreference(MAIN_WIDGET_2_KEY);
|
||||
mExtraWidget1 = findPreference(EXTRA_WIDGET_1_KEY);
|
||||
mExtraWidget2 = findPreference(EXTRA_WIDGET_2_KEY);
|
||||
mExtraWidget3 = findPreference(EXTRA_WIDGET_3_KEY);
|
||||
mExtraWidget4 = findPreference(EXTRA_WIDGET_4_KEY);
|
||||
|
||||
mWidgetPreferences = Arrays.asList(
|
||||
mMainWidget1,
|
||||
mMainWidget2,
|
||||
mExtraWidget1,
|
||||
mExtraWidget2,
|
||||
mExtraWidget3,
|
||||
mExtraWidget4);
|
||||
|
||||
mLockScreenWidgetsEnabledPref = findPreference("lockscreen_widgets_enabled");
|
||||
|
||||
LayoutPreference layoutPreference = findPreference(KEY_APPLY_CHANGE_BUTTON);
|
||||
mApplyChange = layoutPreference.findViewById(R.id.apply_change);
|
||||
}
|
||||
|
||||
private void setupListeners() {
|
||||
for (Preference widgetPref : mWidgetPreferences) {
|
||||
widgetPref.setOnPreferenceChangeListener(this);
|
||||
widgetKeysMap.put(widgetPref, "");
|
||||
}
|
||||
mLockScreenWidgetsEnabledPref.setOnPreferenceChangeListener(this);
|
||||
|
||||
mApplyChange.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
updateWidgetPreferences();
|
||||
saveInitialPreferences();
|
||||
mApplyChange.setEnabled(false);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void showWidgetPreferences(boolean isEnabled) {
|
||||
for (Preference widgetPref : mWidgetPreferences) {
|
||||
widgetPref.setVisible(isEnabled);
|
||||
}
|
||||
}
|
||||
|
||||
private void loadInitialPreferences() {
|
||||
ContentResolver resolver = getActivity().getContentResolver();
|
||||
String mainWidgets = Settings.System.getString(resolver, LOCKSCREEN_WIDGETS_KEY);
|
||||
setWidgetAndPreferenceValues(mainWidgets, mMainWidget1, mMainWidget2);
|
||||
String extraWidgets = Settings.System.getString(resolver, LOCKSCREEN_WIDGETS_EXTRAS_KEY);
|
||||
setWidgetAndPreferenceValues(extraWidgets, mExtraWidget1, mExtraWidget2, mExtraWidget3, mExtraWidget4);
|
||||
}
|
||||
|
||||
private void setWidgetAndPreferenceValues(String widgets, Preference... preferences) {
|
||||
if (widgets == null) {
|
||||
return;
|
||||
}
|
||||
List<String> widgetList = Arrays.asList(widgets.split(","));
|
||||
for (int i = 0; i < preferences.length && i < widgetList.size(); i++) {
|
||||
String value = widgetList.get(i).trim();
|
||||
Preference pref = preferences[i];
|
||||
widgetKeysMap.put(pref, value);
|
||||
if (pref instanceof ListPreference) {
|
||||
((ListPreference) pref).setValue(value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onPreferenceChange(Preference preference, Object newValue) {
|
||||
if (widgetKeysMap.containsKey(preference)) {
|
||||
widgetKeysMap.put(preference, String.valueOf(newValue));
|
||||
mApplyChange.setEnabled(hasChanges());
|
||||
return true;
|
||||
} else if (preference == mLockScreenWidgetsEnabledPref) {
|
||||
boolean isEnabled = (boolean) newValue;
|
||||
showWidgetPreferences(isEnabled);
|
||||
mLockScreenWidgetsEnabledPref.setChecked(isEnabled);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private void updateWidgetPreferences() {
|
||||
List<String> mainWidgetsList = Arrays.asList(widgetKeysMap.get(mMainWidget1), widgetKeysMap.get(mMainWidget2));
|
||||
List<String> extraWidgetsList = Arrays.asList(widgetKeysMap.get(mExtraWidget1), widgetKeysMap.get(mExtraWidget2), widgetKeysMap.get(mExtraWidget3), widgetKeysMap.get(mExtraWidget4));
|
||||
|
||||
mainWidgetsList = replaceEmptyWithNone(mainWidgetsList);
|
||||
extraWidgetsList = replaceEmptyWithNone(extraWidgetsList);
|
||||
|
||||
String mainWidgets = TextUtils.join(",", mainWidgetsList);
|
||||
String extraWidgets = TextUtils.join(",", extraWidgetsList);
|
||||
|
||||
ContentResolver resolver = getActivity().getContentResolver();
|
||||
Settings.System.putString(resolver, LOCKSCREEN_WIDGETS_KEY, mainWidgets);
|
||||
Settings.System.putString(resolver, LOCKSCREEN_WIDGETS_EXTRAS_KEY, extraWidgets);
|
||||
}
|
||||
|
||||
private List<String> replaceEmptyWithNone(List<String> inputList) {
|
||||
return inputList.stream()
|
||||
.map(s -> TextUtils.isEmpty(s) ? "none" : s)
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
private void saveInitialPreferences() {
|
||||
initialWidgetKeysMap.clear();
|
||||
for (Preference widgetPref : mWidgetPreferences) {
|
||||
String value = widgetKeysMap.get(widgetPref);
|
||||
initialWidgetKeysMap.put(widgetPref, value);
|
||||
}
|
||||
}
|
||||
|
||||
private boolean hasChanges() {
|
||||
for (Map.Entry<Preference, String> entry : initialWidgetKeysMap.entrySet()) {
|
||||
Preference pref = entry.getKey();
|
||||
String initialValue = entry.getValue();
|
||||
String currentValue = widgetKeysMap.get(pref);
|
||||
if (!TextUtils.equals(initialValue, currentValue)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMetricsCategory() {
|
||||
return MetricsProto.MetricsEvent.VIEW_UNKNOWN;
|
||||
}
|
||||
|
||||
public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
|
||||
new BaseSearchIndexProvider(R.xml.evolution_settings_lock_screen_widgets) {
|
||||
@Override
|
||||
public List<String> getNonIndexableKeys(Context context) {
|
||||
return super.getNonIndexableKeys(context);
|
||||
}
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user