Settings: Expose clipboard auto clear setting [2/2]

[someone5678]
* Adapt to current project
* Use Settings instead of DeviceConfig as GMS don't likes it
* Add switch for clipboard auto clear
* Import resources from CalyxOS and crDroid Android and adapt it
* Update summary setting logic

Ref:
72db57c966
48e00e2b81
33c49aa70c
bc81eea9cc

Issue: calyxos#2208
Change-Id: Ie101177aba90ea085d83c0cb641ffed447cceecd
Signed-off-by: someone5678 <59456192+someone5678@users.noreply.github.com>
This commit is contained in:
Oliver Scott
2024-08-27 10:26:16 -04:00
committed by Joey
parent da8ea87e85
commit 70acdc87e7
5 changed files with 163 additions and 0 deletions

View File

@@ -48,4 +48,45 @@
<item>14400000</item>
<item>28800000</item>
</string-array>
<!-- Clipboard auto clear settings. The delay before the clipboard is cleared. These are shown in a list dialog. -->
<string-array name="clipboard_auto_clear_timeout_entries">
<item>@string/clipboard_auto_clear_timeout_disable_clipboard</item>
<item>@string/custom_timeout_summary_15secs</item>
<item>@string/custom_timeout_summary_30secs</item>
<item>@string/custom_timeout_summary_1min</item>
<item>@string/custom_timeout_summary_2mins</item>
<item>@string/custom_timeout_summary_5mins</item>
<item>@string/custom_timeout_summary_10mins</item>
<item>@string/custom_timeout_summary_30mins</item>
<item>@string/custom_timeout_summary_1hour_def</item>
<item>@string/custom_timeout_summary_2hours</item>
<item>@string/custom_timeout_summary_4hours</item>
<item>@string/custom_timeout_summary_8hours</item>
<item>@string/custom_timeout_summary_12hours</item>
<item>@string/custom_timeout_summary_24hours</item>
<item>@string/custom_timeout_summary_36hours</item>
<item>@string/custom_timeout_summary_48hours</item>
<item>@string/custom_timeout_summary_72hours</item>
</string-array>
<string-array name="clipboard_auto_clear_timeout_values" translatable="false">
<item>0</item>
<item>15000</item>
<item>30000</item>
<item>60000</item>
<item>120000</item>
<item>300000</item>
<item>600000</item>
<item>1800000</item>
<item>3600000</item>
<item>7200000</item>
<item>14400000</item>
<item>28800000</item>
<item>43200000</item>
<item>86400000</item>
<item>129600000</item>
<item>172800000</item>
<item>259200000</item>
</string-array>
</resources>

View File

@@ -110,6 +110,14 @@
<string name="custom_timeout_summary_2hours">2 hours</string>
<string name="custom_timeout_summary_4hours">4 hours</string>
<string name="custom_timeout_summary_8hours">8 hours</string>
<string name="custom_timeout_summary_12hours">12 hours</string>
<string name="custom_timeout_summary_24hours">24 hours</string>
<string name="custom_timeout_summary_36hours">36 hours</string>
<string name="custom_timeout_summary_48hours">48 hours</string>
<string name="custom_timeout_summary_72hours">72 hours</string>
<!-- Default Timeouts -->
<string name="custom_timeout_summary_1hour_def">1 hour (Default)</string>
<!-- Default getTimeSpentInApp string for Wellbeing to display. [CHAR LIMIT=NONE] -->
<string name="duration_less_than_one_minute">Less than 1 Minute</string>
@@ -166,4 +174,11 @@
<string name="double_tap_title">Double tap</string>
<string name="doze_double_tap_title">Double tap to check phone</string>
<string name="doze_double_tap_summary">Pulse notifications by a double tap</string>
<!-- Clipboard auto clear -->
<string name="clipboard_auto_clear_timeout_title">Clipboard auto clear timeout</string>
<string name="clipboard_auto_clear_title">Clipboard auto clear</string>
<string name="clipboard_auto_clear_summary">Automatically clear clipboard at the scheduled time</string>
<string name="clipboard_auto_clear_enabled_title">Use clipboard auto clear</string>
<string name="clipboard_auto_clear_timeout_disable_clipboard">Disable clipboard</string>
</resources>

View File

@@ -0,0 +1,43 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (C) 2024 TheParasiteProject
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-auto"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:title="@string/clipboard_auto_clear_title">
<com.android.settingslib.widget.TopIntroPreference
android:key="clipboard_auto_clear_summary"
android:title="@string/clipboard_auto_clear_summary"
settings:searchable="false" />
<lineageos.preference.LineageSecureSettingMainSwitchPreference
android:key="clipboard_auto_clear_enabled"
android:title="@string/clipboard_auto_clear_enabled_title"
android:defaultValue="true"/>
<lineageos.preference.LineageSecureSettingListPreference
android:key="clipboard_auto_clear_timeout"
android:title="@string/clipboard_auto_clear_timeout_title"
android:summary="%s"
android:dependency="clipboard_auto_clear_enabled"
android:entries="@array/clipboard_auto_clear_timeout_entries"
android:entryValues="@array/clipboard_auto_clear_timeout_values"
android:defaultValue="3600000"
settings:controller="com.android.settings.custom.privacy.ClipboardAutoClearTimeoutPreferenceController" />
</PreferenceScreen>

View File

@@ -129,6 +129,12 @@
android:fragment="com.android.settings.network.telephony.CellularSecuritySettingsFragment"
settings:controller="com.android.settings.network.CellularSecurityPreferenceController"
settings:searchable="false"/>
<Preference
android:key="clipboard_auto_clear"
android:title="@string/clipboard_auto_clear_title"
android:summary="@string/clipboard_auto_clear_summary"
android:fragment="com.android.settings.custom.privacy.ClipboardAutoClearFragment" />
</PreferenceCategory>
<!-- Security section. -->

View File

@@ -0,0 +1,58 @@
/*
* Copyright (C) 2024 TheParasiteProject
*
* 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 com.android.settings.custom.privacy;
import android.content.Context;
import android.os.Bundle;
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 java.util.List;
@SearchIndexable
public class ClipboardAutoClearFragment extends SettingsPreferenceFragment {
public static final String TAG = "ClipboardAutoClearFragment";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.clipboard_auto_clear_settings);
}
@Override
public int getMetricsCategory() {
return MetricsProto.MetricsEvent.EVOLVER;
}
/**
* For search
*/
public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
new BaseSearchIndexProvider(R.xml.clipboard_auto_clear_settings) {
@Override
public List<String> getNonIndexableKeys(Context context) {
List<String> keys = super.getNonIndexableKeys(context);
return keys;
}
};
}