155 Commits
z ... test1

Author SHA1 Message Date
Pranav Vashi
c648d018fe Cherish: Add pixel style lockscreen weather based OmniJaws
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-05-19 00:37:48 +07:00
Pranav Vashi
db0e4181c3 Cherish: Enable lockscreen weather options properly
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-05-19 00:36:50 +07:00
Pranav Vashi
05c66c10b7 Cherish: Make weather location on lockscreen optional [2/2]
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-05-19 00:30:52 +07:00
Pranav Vashi
7f3e5ae48a Cherish: add enablement settings for OmniJaws keyguard slice provider
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-05-19 00:29:08 +07:00
Pranav Vashi
e7b1693540 Cherish: Add shortcut to configure Weather settings
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-05-19 00:10:13 +07:00
Ghosuto
b5a5e80aea Cherish: Add more clock bg chip styles [2/2]
Change-Id: I4a5b19037b78f3353da8e46089781e993c378705
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-05-11 13:35:52 +07:00
minaripenguin
04b6c575a5 Cherish: Increase QS header images max limit
Change-Id: I6578f196822ac712a6299f6eb56c21652c84aaf3
Signed-off-by: minaripenguin <minaripenguin@users.noreply.github.com>
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-05-11 13:34:24 +07:00
minaripenguin
f82405707b Cherish: Fade filter for lockscreen media artwork [2/2]
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-05-08 21:16:40 +07:00
minaripenguin
82d9c41527 Cherish: Statusbar clock background chip styles [2/2]
Signed-off-by: minaripenguin <minaripenguin@users.noreply.github.com>
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-05-01 23:45:55 +07:00
DhRV00T
6c6a9873a0 add RMX3461 maintainer
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-04-27 19:01:06 +07:00
FrEeRuNnEr4EvEr
26d3d5ec81 add Galaxy S10/ N10 series maintainer
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-04-27 19:00:46 +07:00
Pranav Vashi
287509be38 Cherish: Add support for parallel space
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-04-25 16:47:04 +07:00
Hưng Phan
e777126254 Cherish:Cleanup old applock
This reverts commit fc7a0c985e.

Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-04-25 02:06:37 +07:00
minaripenguin
374731cfbe Cherish: QS Header Image [2/2]
Signed-off-by: minaripenguin <minaripenguin@users.noreply.github.com>
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-04-21 22:16:04 +07:00
cjybyjk
d3c8ff5823 Cherish: add SystemPropertySwitchPreference
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-04-14 18:49:36 +07:00
Ido Ben-Hur
d8395c1abe Cherish: Allow choosing a custom background color seed [2/2]
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-04-14 16:27:47 +07:00
Ido Ben-Hur
8476df6a93 SystemUI: monet: Allow a more granular control over shades [2/2]
Do that by letting the user control the luminance and chroma factors of accent / background colors
Use Settings.Secure.THEME_CUSTOMIZATION_OVERLAY_PACKAGES as an existing medium to store choices

Also refactor the code here

Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-04-14 16:27:46 +07:00
Ido Ben-Hur
327de60ac2 Cherish: Add some native monet settings
Goal is to let users control monet engine more granularly
Generally all we can set solely by changing Settings.Secure.THEME_CUSTOMIZATION_OVERLAY_PACKAGES
Adds the ability to choose the accent color source, a custom accent color and the theme style
Theme styles are generally available with a preview on ThemePicker but not with custom sources nor color

Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-04-14 16:27:36 +07:00
minaripenguin
95e5208d68 Cherish: Combined signal icons toggle [2/2]
Signed-off-by: minaripenguin <minaripenguin@users.noreply.github.com>
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-04-14 08:31:02 +07:00
Hưng Phan
6a110f2c18 Cherish:Nuke QS date and Resize QS
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-04-02 09:31:30 +07:00
SuperDroidBond
f0f3eaa93f [SQUASHED] SystemUI: user selectable VoLTE/VoWifi Icons [2/2]
This reverts commit dc7f7b2ee5.

Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-03-31 17:34:01 +07:00
Pranav Vashi
af75404f90 Pulse: Implement pulse color based album art [2/2]
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-03-31 17:34:01 +07:00
adindotdev
7267758e87 Cherish: Smart Pixels [2/2]
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-03-31 17:34:01 +07:00
Pranav Vashi
e4fb9690ab Cherish: Disable lockscreen album art by default [2/2]
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-03-31 17:34:00 +07:00
Hưng Phan
1dd2eadb59 Battery styles:update correct arrays from fwb
also add more 9 styles for qs battery styles

Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-03-31 17:34:00 +07:00
Joey Huab
81b0828ac6 Cherish: Insert screen off fod toggle into UDFPS settings
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-03-31 17:34:00 +07:00
Pranav Vashi
9bc0946d11 Cherish: Update UDFPS animation string
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-03-31 17:34:00 +07:00
Pranav Vashi
ff99a44c1f Cherish: Unplug adapter when disabling UDFPS animation
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-03-31 17:34:00 +07:00
SagarMakhar
078794059e Cherish: Bring back UDFPS icons and Animations [2/3]
* FOD => UDFPS. Make everything consistent.

Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-03-31 17:33:59 +07:00
Hưng Phan
9cad4320b3 Revert "Cherish: Smart Pixels [2/2]"
This reverts commit 524e9baaaf.

Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-03-31 17:33:59 +07:00
cjh1249131356
a57d28d4a0 Cherish: Refactor qs tiles layout fragment
Signed-off-by: cjh1249131356 <cjh1249131356@gmail.com>
Signed-off-by: minaripenguin <minaripenguin@users.noreply.github.com>
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-03-24 01:54:37 +07:00
Hưng Phan
ee5ae1eb2f Add Ambient Customization:Remove support text font
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-03-24 01:54:36 +07:00
Beanstown
a5aef65c5c Cherish: Fingerprint authentication vibration [2/2]
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-03-24 01:54:36 +07:00
Hưng Phan
64d52be566 Revert "Cherish:Statusbar brightness control [2/2]"
This reverts commit b75c8ca469.

Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-03-24 01:54:36 +07:00
Hưng Phan
a9c3b0f225 Revert "Udfps authentication / error vibration [2/2]"
This reverts commit 6857a13e3e.

Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-03-24 01:54:36 +07:00
Hưng Phan
3bc5948600 Revert "Cherish: Add support for UI Styles"
This reverts commit 7df8e095af.

Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-03-20 02:18:29 +07:00
Hưng Phan
5883d3b4f3 Revert "Cherish: Introduce OOS style notification clear all button [2/2]"
This reverts commit 0c6796ecca.

Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-03-20 02:18:28 +07:00
Ansh
96cd9aa1b7 Maintainers: Update Maintainer Name for RM6785
Signed-off-by: Ansh <singhansh64321@gmail.com>
2023-03-20 02:18:28 +07:00
rdx420
f9ae3f982a Cherish:Add 6 new QS Styles
Signed-off-by: rdx420 <padraramesh420@gmail.com>
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-03-20 02:18:28 +07:00
Hưng Phan
f42b60958c New Crowdin updates (#192)
* New translations cherish_strings.xml (Japanese)

* New translations cherish_strings.xml (Russian)
2023-03-20 02:18:28 +07:00
Hưng Phan
7e8fba711e New Crowdin updates (#191)
* New translations cherish_strings.xml (Chinese Simplified)

* New translations cherish_strings.xml (Indonesian)

* New translations cherish_strings.xml (Indonesian)

* New translations cherish_strings.xml (Russian)

* New translations cherish_strings.xml (Japanese)

* New translations cherish_strings.xml (Japanese)

* New translations cherish_strings.xml (Chinese Simplified)

* New translations cherish_strings.xml (Japanese)

* New translations cherish_strings.xml (Portuguese)

* New translations cherish_strings.xml (Chinese Simplified)
2023-03-20 02:18:27 +07:00
Hưng Phan
4a48135fa1 New Crowdin updates (#190)
* New translations cherish_strings.xml (Romanian)

* New translations cherish_strings.xml (French)

* New translations cherish_strings.xml (Spanish)

* New translations cherish_strings.xml (Arabic)

* New translations cherish_strings.xml (Czech)

* New translations cherish_strings.xml (Danish)

* New translations cherish_strings.xml (German)

* New translations cherish_strings.xml (Greek)

* New translations cherish_strings.xml (Finnish)

* New translations cherish_strings.xml (Hebrew)

* New translations cherish_strings.xml (Hungarian)

* New translations cherish_strings.xml (Italian)

* New translations cherish_strings.xml (Japanese)

* New translations cherish_strings.xml (Korean)

* New translations cherish_strings.xml (Kurdish)

* New translations cherish_strings.xml (Dutch)

* New translations cherish_strings.xml (Norwegian)

* New translations cherish_strings.xml (Polish)

* New translations cherish_strings.xml (Portuguese)

* New translations cherish_strings.xml (Russian)

* New translations cherish_strings.xml (Slovak)

* New translations cherish_strings.xml (Serbian (Cyrillic))

* New translations cherish_strings.xml (Swedish)

* New translations cherish_strings.xml (Turkish)

* New translations cherish_strings.xml (Ukrainian)

* New translations cherish_strings.xml (Chinese Simplified)

* New translations cherish_strings.xml (Chinese Traditional)

* New translations cherish_strings.xml (English)

* New translations cherish_strings.xml (Vietnamese)

* New translations cherish_strings.xml (Portuguese, Brazilian)

* New translations cherish_strings.xml (Indonesian)

* New translations cherish_strings.xml (Persian)

* New translations cherish_strings.xml (Hindi)

* New translations cherish_strings.xml (Malayalam)

* New translations cherish_strings.xml (Latin)

* New translations cherish_strings.xml (Nepali)

* New translations cherish_strings.xml (Kurmanji (Kurdish))

* New translations cherish_strings.xml (Sorani (Kurdish))

* New translations cherish_strings.xml (Lao)

* New translations cherish_strings.xml (Turkish, Cyprus)

* New translations cherish_strings.xml (Russian)

* New translations cherish_strings.xml (Portuguese)

* New translations cherish_strings.xml (Indonesian)

* New translations cherish_strings.xml (Malayalam)

* New translations cherish_strings.xml (Romanian)

* New translations cherish_strings.xml (French)

* New translations cherish_strings.xml (Spanish)

* New translations cherish_strings.xml (Arabic)

* New translations cherish_strings.xml (Czech)

* New translations cherish_strings.xml (Danish)

* New translations cherish_strings.xml (German)

* New translations cherish_strings.xml (Greek)

* New translations cherish_strings.xml (Finnish)

* New translations cherish_strings.xml (Hebrew)

* New translations cherish_strings.xml (Hungarian)

* New translations cherish_strings.xml (Italian)

* New translations cherish_strings.xml (Japanese)

* New translations cherish_strings.xml (Korean)

* New translations cherish_strings.xml (Kurdish)

* New translations cherish_strings.xml (Dutch)

* New translations cherish_strings.xml (Norwegian)

* New translations cherish_strings.xml (Polish)

* New translations cherish_strings.xml (Portuguese)

* New translations cherish_strings.xml (Russian)

* New translations cherish_strings.xml (Slovak)

* New translations cherish_strings.xml (Serbian (Cyrillic))

* New translations cherish_strings.xml (Swedish)

* New translations cherish_strings.xml (Turkish)

* New translations cherish_strings.xml (Ukrainian)

* New translations cherish_strings.xml (Chinese Simplified)

* New translations cherish_strings.xml (Chinese Traditional)

* New translations cherish_strings.xml (English)

* New translations cherish_strings.xml (Vietnamese)

* New translations cherish_strings.xml (Portuguese, Brazilian)

* New translations cherish_strings.xml (Indonesian)

* New translations cherish_strings.xml (Persian)

* New translations cherish_strings.xml (Hindi)

* New translations cherish_strings.xml (Malayalam)

* New translations cherish_strings.xml (Latin)

* New translations cherish_strings.xml (Nepali)

* New translations cherish_strings.xml (Kurmanji (Kurdish))

* New translations cherish_strings.xml (Sorani (Kurdish))

* New translations cherish_strings.xml (Lao)

* New translations cherish_strings.xml (Turkish, Cyprus)

* Update source file cherish_strings.xml

* New translations cherish_strings.xml (Turkish)

* New translations cherish_strings.xml (Chinese Simplified)

* New translations cherish_strings.xml (German)

* New translations cherish_strings.xml (Chinese Simplified)

* New translations cherish_strings.xml (Japanese)

* New translations cherish_strings.xml (Romanian)

* New translations cherish_strings.xml (French)

* New translations cherish_strings.xml (Spanish)

* New translations cherish_strings.xml (Arabic)

* New translations cherish_strings.xml (Czech)

* New translations cherish_strings.xml (Danish)

* New translations cherish_strings.xml (German)

* New translations cherish_strings.xml (Greek)

* New translations cherish_strings.xml (Finnish)

* New translations cherish_strings.xml (Hebrew)

* New translations cherish_strings.xml (Hungarian)

* New translations cherish_strings.xml (Italian)

* New translations cherish_strings.xml (Japanese)

* New translations cherish_strings.xml (Korean)

* New translations cherish_strings.xml (Kurdish)

* New translations cherish_strings.xml (Dutch)

* New translations cherish_strings.xml (Norwegian)

* New translations cherish_strings.xml (Polish)

* New translations cherish_strings.xml (Portuguese)

* New translations cherish_strings.xml (Russian)

* New translations cherish_strings.xml (Slovak)

* New translations cherish_strings.xml (Serbian (Cyrillic))

* New translations cherish_strings.xml (Swedish)

* New translations cherish_strings.xml (Turkish)

* New translations cherish_strings.xml (Ukrainian)

* New translations cherish_strings.xml (Chinese Simplified)

* New translations cherish_strings.xml (Chinese Traditional)

* New translations cherish_strings.xml (English)

* New translations cherish_strings.xml (Vietnamese)

* New translations cherish_strings.xml (Portuguese, Brazilian)

* New translations cherish_strings.xml (Indonesian)

* New translations cherish_strings.xml (Persian)

* New translations cherish_strings.xml (Hindi)

* New translations cherish_strings.xml (Malayalam)

* New translations cherish_strings.xml (Latin)

* New translations cherish_strings.xml (Nepali)

* New translations cherish_strings.xml (Kurmanji (Kurdish))

* New translations cherish_strings.xml (Sorani (Kurdish))

* New translations cherish_strings.xml (Lao)

* New translations cherish_strings.xml (Turkish, Cyprus)

* Update source file cherish_strings.xml

* New translations cherish_strings.xml (Romanian)

* New translations cherish_strings.xml (French)

* New translations cherish_strings.xml (Spanish)

* New translations cherish_strings.xml (Arabic)

* New translations cherish_strings.xml (Czech)

* New translations cherish_strings.xml (Danish)

* New translations cherish_strings.xml (German)

* New translations cherish_strings.xml (Greek)

* New translations cherish_strings.xml (Finnish)

* New translations cherish_strings.xml (Hebrew)

* New translations cherish_strings.xml (Hungarian)

* New translations cherish_strings.xml (Italian)

* New translations cherish_strings.xml (Japanese)

* New translations cherish_strings.xml (Korean)

* New translations cherish_strings.xml (Kurdish)

* New translations cherish_strings.xml (Dutch)

* New translations cherish_strings.xml (Norwegian)

* New translations cherish_strings.xml (Polish)

* New translations cherish_strings.xml (Portuguese)

* New translations cherish_strings.xml (Russian)

* New translations cherish_strings.xml (Slovak)

* New translations cherish_strings.xml (Serbian (Cyrillic))

* New translations cherish_strings.xml (Swedish)

* New translations cherish_strings.xml (Turkish)

* New translations cherish_strings.xml (Ukrainian)

* New translations cherish_strings.xml (Chinese Simplified)

* New translations cherish_strings.xml (Chinese Traditional)

* New translations cherish_strings.xml (English)

* New translations cherish_strings.xml (Vietnamese)

* New translations cherish_strings.xml (Portuguese, Brazilian)

* New translations cherish_strings.xml (Indonesian)

* New translations cherish_strings.xml (Persian)

* New translations cherish_strings.xml (Hindi)

* New translations cherish_strings.xml (Malayalam)

* New translations cherish_strings.xml (Latin)

* New translations cherish_strings.xml (Nepali)

* New translations cherish_strings.xml (Kurmanji (Kurdish))

* New translations cherish_strings.xml (Sorani (Kurdish))

* New translations cherish_strings.xml (Lao)

* New translations cherish_strings.xml (Turkish, Cyprus)

* Update source file cherish_strings.xml

* New translations cherish_strings.xml (Vietnamese)
2023-03-20 02:18:27 +07:00
Hưng Phan
fd2bc76555 Cherish:Add note summary for aod customizations
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-03-20 02:18:27 +07:00
SagarMakhar
9e0db71d0c Cherish : Black theme [2/3]
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-03-20 02:18:27 +07:00
RealSchnedi
7b8678eb13 Cherish: Color picker improvements
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-03-20 02:18:27 +07:00
TikkiTikki
f868b3df49 Cherish: Add Ambient Customizations [2/2]
Co-authored-by: TikkiTikki <radstylemusic@gmail.com>
Co-authored-by: SuperDroidBond <superdroidbond@yahoo.com>
Signed-off-by: SuperDroidBond <superdroidbond@yahoo.com>
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-03-20 02:18:26 +07:00
SuperDroidBond
cdb4dbd267 Ambient Pulse Light: add layout style for top n bottom [2/2]
Signed-off-by: SuperDroidBond <superdroidbond@yahoo.com>
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-03-20 02:18:26 +07:00
Michele Bono
c9bb0bb72d Cherish: Add light width [2/2]
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-03-20 02:18:26 +07:00
Varun Date
6f4829bbc0 EdgeLighting: Add option for random colors [2/2]
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-03-20 02:18:26 +07:00
maxwen
d2889d108b [SQUASHED] Cherish: Add ambient pulse and aod notifications [2/2]
@/SKULSHADY - Clean up and adapted for A11

SDB: improvise the enabling/disabling of colorpicker preference to avoid fc

Co-authored-by: maxwen <max.weninger@gmail.com>
Co-authored-by: Ido Ben-Hur <idoybh2@gmail.com>
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-03-20 02:18:25 +07:00
Hưng Phan
0b00bfbb9f Revert "Cherish:add edge light customizations[2/2]"
This reverts commit c54c2eb6c2.

Revert "Cherish:update edge light preferences"

This reverts commit b88457ea22.

Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-03-20 02:18:25 +07:00
Hưng Phan
4cdf3ebdfd Revert "Cherish: Make combined signal icons configurable at runtime [2/2]"
This reverts commit 2581ff49a1.

Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-03-20 02:18:25 +07:00
Hưng Phan
dc7f7b2ee5 Cherish:Drop volte/vowifi features
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-03-20 02:18:25 +07:00
El Dainosor
fdb58046f4 Cherish: Add support for Lockscreen clock fonts
After r16, a commit to cleanup the KeyguardClockSwtich and unify it's structure was merged.
Also, this added a new resource into the frameworks core, which allows us to overlay the custom clock font.
So, we need to overlays now to customize this. This makes me really happy because it removes the ugly method that we were doing years ago.

[nurkeinneid]:
- adapt to our ThemeUtils
- restore original copyright header - crdroid did nothing here

Change-Id: I70590910144141a534b926f884e9f08e4e3af5bc
Signed-off-by: NurKeinNeid <mralexman3000@gmail.com>
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-03-20 02:18:24 +07:00
Hưng Phan
d18df38636 New translations cherish_strings.xml (Greek) (#188) 2023-03-20 02:18:24 +07:00
Hưng Phan
f2443f5eb3 New Crowdin updates (#187)
* New translations cherish_strings.xml (French)

* New translations cherish_strings.xml (Spanish)

* New translations cherish_strings.xml (Italian)

* New translations cherish_strings.xml (Portuguese)

* New translations cherish_strings.xml (Portuguese, Brazilian)

* New translations cherish_strings.xml (Indonesian)
2023-03-20 02:18:24 +07:00
Hưng Phan
8c9b2b2332 New translations cherish_strings.xml (Vietnamese) (#186) 2023-03-20 02:18:24 +07:00
Hưng Phan
f5a35bbf31 New Crowdin updates (#185)
* New translations cherish_strings.xml (Romanian)

* New translations cherish_strings.xml (French)

* New translations cherish_strings.xml (Spanish)

* New translations cherish_strings.xml (Arabic)

* New translations cherish_strings.xml (Czech)

* New translations cherish_strings.xml (Danish)

* New translations cherish_strings.xml (German)

* New translations cherish_strings.xml (Greek)

* New translations cherish_strings.xml (Finnish)

* New translations cherish_strings.xml (Hebrew)

* New translations cherish_strings.xml (Hungarian)

* New translations cherish_strings.xml (Italian)

* New translations cherish_strings.xml (Japanese)

* New translations cherish_strings.xml (Korean)

* New translations cherish_strings.xml (Kurdish)

* New translations cherish_strings.xml (Dutch)

* New translations cherish_strings.xml (Norwegian)

* New translations cherish_strings.xml (Polish)

* New translations cherish_strings.xml (Portuguese)

* New translations cherish_strings.xml (Russian)

* New translations cherish_strings.xml (Slovak)

* New translations cherish_strings.xml (Serbian (Cyrillic))

* New translations cherish_strings.xml (Swedish)

* New translations cherish_strings.xml (Turkish)

* New translations cherish_strings.xml (Ukrainian)

* New translations cherish_strings.xml (Chinese Simplified)

* New translations cherish_strings.xml (Chinese Traditional)

* New translations cherish_strings.xml (English)

* New translations cherish_strings.xml (Vietnamese)

* New translations cherish_strings.xml (Portuguese, Brazilian)

* New translations cherish_strings.xml (Indonesian)

* New translations cherish_strings.xml (Persian)

* New translations cherish_strings.xml (Hindi)

* New translations cherish_strings.xml (Malayalam)

* New translations cherish_strings.xml (Latin)

* New translations cherish_strings.xml (Nepali)

* New translations cherish_strings.xml (Kurmanji (Kurdish))

* New translations cherish_strings.xml (Sorani (Kurdish))

* New translations cherish_strings.xml (Lao)

* New translations cherish_strings.xml (Turkish, Cyprus)
2023-03-20 02:18:23 +07:00
Hưng Phan
469a6573bd New Crowdin updates (#184)
* New translations cherish_strings.xml (Portuguese)

* New translations cherish_strings.xml (Portuguese, Brazilian)

* New translations cherish_strings.xml (Indonesian)

* New translations cherish_strings.xml (Vietnamese)
2023-03-20 02:18:23 +07:00
Adin Kwok
9bf590b8cb Cherish: Smart Pixels [2/2]
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-03-20 02:18:23 +07:00
minaripenguin37
686384593a Cherish: Make combined signal icons configurable at runtime [2/2]
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-03-20 02:18:23 +07:00
00day0
d585c862fe Cherish: Introduce OOS style notification clear all button [2/2]
aslo bring custom style notif clear

Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-03-20 02:18:22 +07:00
travarilo
77c2ee8c48 Cherish:Toggle data usage view on QS footer [2/2]
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-03-20 02:18:22 +07:00
Hưng Phan
eb4dc21e49 Cherish:clean some changes in volte/vowifi
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-03-20 02:18:22 +07:00
Hưng Phan
816dc32004 New Crowdin updates (#182)
* New translations cherish_strings.xml (Spanish)

* New translations cherish_strings.xml (Arabic)

* New translations cherish_strings.xml (Russian)

* New translations cherish_strings.xml (Romanian)

* New translations cherish_strings.xml (French)

* New translations cherish_strings.xml (Czech)

* New translations cherish_strings.xml (Danish)

* New translations cherish_strings.xml (German)

* New translations cherish_strings.xml (Greek)

* New translations cherish_strings.xml (Finnish)

* New translations cherish_strings.xml (Hebrew)

* New translations cherish_strings.xml (Hungarian)

* New translations cherish_strings.xml (Italian)

* New translations cherish_strings.xml (Japanese)

* New translations cherish_strings.xml (Korean)

* New translations cherish_strings.xml (Kurdish)

* New translations cherish_strings.xml (Dutch)

* New translations cherish_strings.xml (Norwegian)

* New translations cherish_strings.xml (Polish)

* New translations cherish_strings.xml (Portuguese)

* New translations cherish_strings.xml (Slovak)

* New translations cherish_strings.xml (Serbian (Cyrillic))

* New translations cherish_strings.xml (Swedish)

* New translations cherish_strings.xml (Turkish)

* New translations cherish_strings.xml (Ukrainian)

* New translations cherish_strings.xml (Chinese Simplified)

* New translations cherish_strings.xml (Chinese Traditional)

* New translations cherish_strings.xml (English)

* New translations cherish_strings.xml (Vietnamese)

* New translations cherish_strings.xml (Portuguese, Brazilian)

* New translations cherish_strings.xml (Indonesian)

* New translations cherish_strings.xml (Persian)

* New translations cherish_strings.xml (Hindi)

* New translations cherish_strings.xml (Malayalam)

* New translations cherish_strings.xml (Latin)

* New translations cherish_strings.xml (Nepali)

* New translations cherish_strings.xml (Kurmanji (Kurdish))

* New translations cherish_strings.xml (Sorani (Kurdish))

* New translations cherish_strings.xml (Lao)

* New translations cherish_strings.xml (Turkish, Cyprus)

* New translations cherish_strings.xml (Spanish)

* New translations cherish_strings.xml (Russian)
2023-03-20 02:18:22 +07:00
El Dainosor
0bb076c36a Cherish: Add support for UI Styles
Not a great previewer but for now it'll do the work

[nurkeinneid]:
- adapt to our ThemeUtils
- restore original copyright header - crdroid did nothing here

Change-Id: I432578a4b3c652d7ad3e00a93e11bfb3e199b4a5
Signed-off-by: NurKeinNeid <mralexman3000@gmail.com>
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-03-20 02:18:21 +07:00
Hưng Phan
48d035e6c8 New Crowdin updates (#181)
* New translations cherish_strings.xml (Spanish)

* New translations cherish_strings.xml (Russian)

* New translations cherish_strings.xml (Arabic)

Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-03-20 02:18:21 +07:00
Hưng Phan
e4b5b5cc00 New translations cherish_strings.xml (Spanish) (#180)
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-03-20 02:18:21 +07:00
jhonboy121
8f80cc77e8 Cherish:update edge light preferences
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-03-20 02:18:21 +07:00
Hưng Phan
5df14a0546 Import some SystemSettingColorPickerPreference
This reverts commit f547af0ea1.

Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-03-20 02:18:20 +07:00
Jesse Chan
057344a855 Cherish:Implement click to take partial screenshot [2/2]
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-03-20 02:18:20 +07:00
ezio84
ded28bde05 Cherish:Less boring heads up option [2/2]
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>

Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-03-20 02:18:20 +07:00
Hưng Phan
f78ac10568 New Crowdin updates
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-03-20 02:18:20 +07:00
TikkiTikki
fe80d5f19a Pulse: Vertical mirror [2/2]
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-03-20 02:18:19 +07:00
TikkiTikki
287a6d9b01 Pulse: Custom gravity and Center mirrored [2/2]
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-03-20 02:18:19 +07:00
TikkiTikki
94ae0f8021 Cherish: Solid render: Round lines [2/2]
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-03-20 02:18:19 +07:00
Pranav Vashi
70d5bb6c71 Cherish:Pulse initial checkin for Android 12 [2/2]
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-03-20 02:18:19 +07:00
jhonboy121
2e141ae231 Cherish:add edge light customizations[2/2]
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-03-20 02:18:18 +07:00
Dil3mm4
f2dc67526c Feature: reticker [2/2]
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-03-20 02:18:18 +07:00
jhonboy121
7e9ea36502 Cherish: applock: early return in setChecked if backing field has the same value
Signed-off-by: jhonboy121 <alfredmathew05@gmail.com>
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-03-20 02:18:18 +07:00
jhonboy121
a410b4c687 AppLockSettingsPC: use DashboardFragment as the type for host
Signed-off-by: jhonboy121 <alfredmathew05@gmail.com>
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-03-20 02:18:18 +07:00
jhonboy121
da941652b3 Cherish: use a new task stack for app lock fragments
* fixes fragments staying in recents on going home
* also made other preferences do binder calls asynchronously

Signed-off-by: jhonboy121 <alfredmathew05@gmail.com>
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-03-20 02:18:17 +07:00
jhonboy121
fc7a0c985e applock: adapt for API changes
Signed-off-by: jhonboy121 <alfredmathew05@gmail.com>
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-03-20 02:18:17 +07:00
jhonboy121
54db7593c1 Cherish:introduce app lock
* AppLockCredentialActivity is a stripped down version of ConfirmDeviceCredentialActivity in Settings

Signed-off-by: jhonboy121 <alfredmathew05@gmail.com>
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-03-20 02:18:17 +07:00
Hưng Phan
5d558e3fa6 cherish: Battery Styles: Added 9 more battery styles [2/2]
Thanks to Another substratum theme for many icons:- https://t.me/AnotherTheme
Thanks to @Fakeriz for battery icon style A.
Thanks to @Ndikarizki for battery icon style B.

Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
Signed-off-by: helliscloser <mrumais@gmail.com>
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-03-20 02:18:16 +07:00
Pranav Vashi
be914d42f7 Battery Styles: Introduce Battery Landscape [2/2]
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Signed-off-by: helliscloser <mrumais@gmail.com>
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-03-20 02:18:16 +07:00
Pranav Vashi
fdc7d141b2 cherish: Smart Charging (2/4)
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-03-20 02:18:16 +07:00
Hưng Phan
947f09d0fd Udfps authentication / error vibration [2/2]
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-03-20 02:18:09 +07:00
Hưng Phan
2e6379af48 UDFPS Haptic: re-enable it
This reverts commit 060f87564a.

Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-03-20 02:17:15 +07:00
LorDClockaN
36d726583e Cherish: Power/reboot menu transparency (1/2)
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-03-20 02:16:51 +07:00
LorDClockaN
fb7620418e Cherish: Rotation anim to Power and reboot menu [1/2]
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-03-20 02:16:51 +07:00
westcripp
80b3130cf7 Cherish: Add 7 more power menu animations [2/2]
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-03-20 02:16:51 +07:00
Nico60
fe954cf9e4 Cherish: [SQUASHED] Add animations to quick settings
- Add animations to quick settings tiles [1/2]
- Add faster qs tile animation speeds (1/2)
- Add interpolators to qs tiles animation [1/2]

Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-03-20 02:16:51 +07:00
Alex Cruz
38ea21a9bb Cherish: Power Menu animations [2/2]
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-03-20 02:16:50 +07:00
Hưng Phan
d24ab995b4 Cherish:Cherish:[SQUASH]Add tunables for clock position
Cherish: Add tunables for clock position
Author: Hendrik Hagendorn <git@finnq.de>
Date:   Sun Jan 15 10:00:12 2017 +0100
    Tuner: Move clock seconds option to status bar settings

    Change-Id: I532c179f06b934009d48433e50b69660247ee295

Author: Luca Stefani <luca.stefani.ge1@gmail.com>
Date:   Sun Jul 29 14:19:08 2018 +0200
    SystemUI: Fix default clock blacklist value

    Change-Id: Ibdc4f6a707569ddb417854760cf579daca989ebb

Author: LuK1337 <priv.luk@gmail.com>
Date:   Wed Aug 1 18:10:39 2018 +0200
    SystemUI: Initialize mClockVisibleByUser to android:visibility

    * Fixes ~ triple clock ~ after leaving from Google SUW.

    Change-Id: I3ceea4400b3057e2b6b1f221f9074b1d451133ea

Author: LuK1337 <priv.luk@gmail.com>
Date:   Thu Sep 27 12:24:19 2018 +0200
    SystemUI: Fix clock icon blacklist handling

    * This makes sure clock isn't on blacklist before
      calling showClock(animate);

    Change-Id: I7f77a83aa6c109e1682d764fb22701375ae5ba1e

Author: LuK1337 <priv.luk@gmail.com>
Date:   Tue Apr 2 20:56:25 2019 +0200
    SystemUI: Don't hide right clock when heads up is visible

    * https://gitlab.com/LineageOS/issues/android/issues/436

    Change-Id: I85a6cd2dff79e6b97d8a7db552c22d611bf25dbd

Author: LuK1337 <priv.luk@gmail.com>
Date:   Wed Oct 30 15:48:38 2019 +0100
    SystemUI: Fix up right clock handling when showing heads up

    * Oops, we somehow forgot to import this code from 16.0 ;-;

    Change-Id: Ic4195a30da2870f569f07fc323e4b939320ab6c8

Author: Michael W <baddaemon87@gmail.com>
Date:   Mon Jun 1 14:43:31 2020 +0200
    SystemUI: Make clock truly invisible

    * When the clock is set to left and then hidden, the notification
      icons, which would appear on the left first transition to the
      right to make place for the clock then finally snap into place
    * The same happens when the clock was set to show right and then
      is hidden: The battery, wifi, etc. icons do leave space for the
      (not displayed) clock and then snap to the right
    * This patch fixes the behavior

    Change-Id: Ic68b1001becb91da6f1aeaca95a7312b36e1d2a1

Author: LuK1337 <priv.luk@gmail.com>
Date:   Sat Apr 10 22:52:25 2021 +0200
    SystemUI: Make center clock layout safe insets aware

    This effectively fixes wrongly centered clock layout on
    devices with side notch / hole punch.

    Change-Id: I7cb8cbbe628397c50d37e23ba1853368e61a1fc9

Author: LuK1337 <priv.luk@gmail.com>
Date:   Sun Apr 11 09:47:17 2021 +0200
    SystemUI: Move network traffic monitor under same layout as clock

    This effectively fixes wrongly network monitor layout on
    devices with side notch / hole punch.

    Change-Id: I217b886d8da75eab7636066f4822f5fd6dbc9aff

Author: Volodymyr Zhdanov <wight554@gmail.com>
Date:   Tue Nov 9 20:53:56 2021 +0200
    SystemUI: fix clock dark/light mode switching

    * move ClockController init to PhoneStatusBarView
    * move add/remove dark receiver logic to ClockController

    Change-Id: I6464af6e8aa130ea54fe7bfa19858c8930a29b1e

Change-Id: Icdc039d13fd2676c1eb979a81fb77f9a6ec59b4a
Signed-off-by: Volodymyr Zhdanov <wight554@gmail.com>
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>

Cherish:Add tunables for clock AM/PM style
Conflicts:
	packages/SystemUI/src/com/android/systemui/statusbar/policy/Clock.java

Cherish: Add support for clock auto-hiding
Hide statusbar clock when launcher is visible. Useful when you already have a clock as widget.

Change-Id: I03dfc81bc055f2f865ac704e3bf9d9d104fac272
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>

CherishAdd separate tunable for clock seconds
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
Co-authored-by: LuK1337 <priv.luk@gmail.com>
Co-authored-by: Michael Bestas <mkbestas@lineageos.org>
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-03-20 02:16:50 +07:00
jhonboy121
326d16b46c Cherish: improve app list fragment
* properly constrained image view and max lines of both label and package views
* use lifecycle scope inherent to fragments instead of creating new coroutine scopes
* fetch package list from pm every time refreshList is called
* early release locks when refreshing list
* properly annotate setDisplayCategory method
* keep AppListAdapter as a regular nested class instead of an inner class for reusability

Signed-off-by: jhonboy121 <alfredmathew05@gmail.com>
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-03-20 02:16:50 +07:00
Pranav Vashi
1e6d42be5d Cherish: QS layout customizations
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-03-20 02:16:50 +07:00
StarkDroid
11b60a3164 Cherish: Add QS Panel Styles [2/3]
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-03-20 02:16:49 +07:00
ezio84
fb3d2e57b3 Cherish: Allow doubletap/longpress power to toggle torch [2/2]
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-03-20 02:16:49 +07:00
Pranav Vashi
9fb7d1d563 Cherish:Add ability to toggle bluetooth battery level [2/2]
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-03-20 02:16:49 +07:00
spkal01
26276a9b3d Cherish:Make app icons in statusbar optional [2/2]
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-03-20 02:16:49 +07:00
Steve Kondik
4abec14f98 Cherish:Forward-port notification counters [2/2]
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-03-20 02:16:48 +07:00
jhonboy121
b996e3c204 Cherish:Allow toggling privacy indicators [2/2]
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-03-20 02:16:48 +07:00
Hưng Phan
8637958601 Cherish:Nuke udfp haptic feedback now
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-03-20 02:16:40 +07:00
Stealth1226
2557431b1c Cherish: Auth ripple toggle
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2023-03-20 02:16:04 +07:00
spkal01
1eb8840e57 Cherish: Add Udfps Settings
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2022-12-12 14:41:17 +07:00
spkal01
dee8f900dc Cherish: Settings Customization
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2022-12-12 14:39:55 +07:00
LorDClockaN
4e51d0c413 Cherish:Toast icon switch [2/2]
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2022-12-11 21:36:27 +07:00
SpiritCroc
0603dc8bbf Cherish:Add kill button to notification guts [2/2]
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2022-12-11 21:18:12 +07:00
Pranav Vashi
0d052b6a4b Cherish: [SQUASH] User toggle for unlimited photos storage and GamesProp [2/2][2/2]
Co-authored-by: spezi77 <spezi7713@gmx.net>
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2022-12-11 21:18:01 +07:00
Alex Cruz
825f83f0b8 Cherish:Pimp the power menu out [2/2]
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2022-12-11 21:16:30 +07:00
Pranav Vashi
a9d7b858b2 Alert Slider: Add toggle to disable notifications [2/2]
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2022-12-11 21:16:19 +07:00
Hưng Phan
7c3bcc8509 Cherish:Add some button settings
Hardware key: Customization support[2/2]

Volume Rocker Wake [2/2]

Volume key cursor control (2/2)

Co-authored-by: jhenrique09 <jhsv09@gmail.com>
Co-authored-by: Max <xyyx@mail.ru>
Co-authored-by: bigrushdog <randall.rushing@gmail.com>
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2022-12-11 21:15:03 +07:00
Alex
6689c20b18 Cherish:Allow enabling compact layout of navigation bar[2/2]
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2022-12-11 21:14:55 +07:00
maxwen
cc63091752 Cherish:Hide status bar on lock screen [2/2]
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2022-12-11 21:14:45 +07:00
Altaf-Mahdi
0ee31a3899 Cherish:Hide power menu on secure lockscreen [2/2]
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2022-12-11 21:14:37 +07:00
Danesh Mondegarian
b75c8ca469 Cherish:Statusbar brightness control [2/2]
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2022-12-11 21:14:26 +07:00
spkal01
77f5d7091f Cherish: Qs Transparency Settings
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2022-12-11 21:13:34 +07:00
xyyx
8876155b57 LockscreenCharging: squashed (2/3)
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2022-12-11 21:13:22 +07:00
LibXZR
e5cf1e1651 Cherish:Add window ignore secure feature
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2022-12-11 21:13:05 +07:00
Pranav Vashi
620c96ef79 Cherish: Port brightness slider changes [2/2]
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2022-12-10 21:55:03 +07:00
StarkDroid
4143f3985c Cherish: Status bar Clock background chip [2/2]
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2022-12-10 21:54:41 +07:00
Hưng Phan
8948b3f7d3 Revert "Cherish:Less boring heads up option [2/2]"
This reverts commit f76ee81981.

Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2022-12-08 15:30:58 +07:00
Hưng Phan
75097c1370 Cherish:Move double tap gestures to statusbar/lockscreen
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2022-08-28 09:34:18 +07:00
Hưng Phan
d9beb90c32 Cherish:Import translation from android 12.1
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2022-08-27 23:23:06 +07:00
Hưng Phan
341a2c58e3 Cherish:Battery styles: Add battery styles and customizations [2/2]
ezio84: Battery styles: cleanup [2/2]
neobuddy89: Simplify code and add battery percentage when charging
neobuddy89: Battery Styles: Add customization for QS [2/2]
neobuddy89: Allow setting battery percent view on left [2/2]
DennySPb: Add back big dotted and big circle battery indicator
palaych: Add a summary to battery styles and customizations

Co-authored-by: ezio84 <brabus84@gmail.com>
Co-authored-by: Pranav Vashi <neobuddy89@gmail.com>
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2022-08-27 23:18:45 +07:00
R15Hi
247cec944e Cherish: Add 14 New VoLTE icon [2/2]
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2022-08-27 22:08:52 +07:00
DennySPB
a9eeef47ba Cherish: Add volte options
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2022-08-27 10:55:54 +07:00
eldainosor
5071deb85f Cherish:Add media art customization in lockscreen
Lockscreen Album Filter: Make LS media filter blur radius configurable[2/2]

Add Lockscreen album art filter [2/2]

SystemUI: Allow to enable Lockscreen Media Art [2/2]

Co-authored-by: beanstown106 <nbenis106@gmail.com>
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2022-08-27 08:22:56 +07:00
jhonboy121
49c21b2da7 Cherish: Add some features for status bar
Statusbar icon [2/2]

Option to Display Data Disabled Indicator Icon [2/2]

Allow using 4G icon instead LTE [2/2]

Make roaming indicator optional [2/2]

old style mobile data indicators [2/2]

Co-authored-by: Pranav Vashi <neobuddy89@gmail.com>
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2022-08-27 08:22:56 +07:00
jhonboy121
f479baa3a5 Cherish: Add navbar layout inversion tuning [2/2]
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2022-08-27 08:22:55 +07:00
Bruno Martins
49bf415d75 Cherish: Introduce {Global,Secure,System}MainSwitchPreference
Change-Id: I04cf71ea60b3ecde3c8be039ab320e8730ca4b3f
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2022-08-27 08:22:54 +07:00
ezio84
afdba0599c Cherish:Status network traffic [2/2]
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2022-08-27 08:22:54 +07:00
daneshm90
0e741b0832 Cherish:Launch default music player on headset connect [2/2]
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2022-08-27 08:22:53 +07:00
beanstown106
693fa1a354 Cherish: incall vibration options [3/3]
*allow setting vibration when call is connected
*allow setting vibration when call is disconnected
*allow setting vibration for call waiting
*this works with google and aosp dialer :)

Change-Id: Id1a431124174571f8d0091825af2418971cfe35d
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2022-08-27 08:22:41 +07:00
ezio84
f76ee81981 Cherish:Less boring heads up option [2/2]
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2022-08-27 02:44:27 +07:00
ezio84
0c0da892cb Cherish:Allow to suppress notifications sound/vibration if screen is On [2/2]
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2022-08-27 02:44:26 +07:00
Pranav Vashi
a352d635a1 Cherish:Double tap to sleep on the lock screen and status bar (2/2)
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2022-08-27 02:44:20 +07:00
Roman Birg
2a091387f9 Cherish: Add quick settings pull down with one finger [2/2]
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2022-08-27 02:43:16 +07:00
xyyx
0aadfb1c94 Battery: Add option to disable led after full charging (2/2)
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2022-08-26 08:01:06 +07:00
ezio84
6579bd9853 Battery led customization: activate led light preview
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2022-08-26 08:00:53 +07:00
ezio84
72318cea27 Battery light colors: show reset to default button
Signed-off-by: xyyx <xyyx@mail.ru>
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2022-08-26 08:00:45 +07:00
ezio84
ead96ff61d Disable useless alphaslider for battery led customization
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2022-08-26 08:00:37 +07:00
ezio84
43c9ebd5d8 Cherish:Battery light customization [2/2]
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2022-08-26 08:00:24 +07:00
Hưng Phan
d957ab4bbf Cherish:fix overlay reset after reboot in preview
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2022-08-26 07:57:23 +07:00
Pranav Vashi
adeec30b04 Cherish: Add signal and wifi icon style theming
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2022-08-26 07:57:23 +07:00
SagarMakhar
a733a216f4 Cherish: Bring back icon shapes, icon packs, fonts customization
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2022-08-26 07:57:23 +07:00
Aston-Martinn
a7cb077cdb Introduce Custom Statusbar Signal & Wi-Fi icons [2/3]
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2022-08-26 07:57:23 +07:00
Pranav Vashi
f1e4eae93d Cherish: Add adaptive icon shape customization
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2022-08-26 07:57:22 +07:00
Hưng Phan
f22f3ab622 Cherish:move all theming stuffs to our Theme Settings
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2022-08-26 07:57:16 +07:00
Hưng Phan
7e26bdce09 Add string for PackageListPreference
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2022-08-25 22:31:29 +07:00
Hưng Phan
4f3f022d51 Cherish:Update Maintainer Name
Cherish:Update Maintainer

Updated device maintainer for OnePlus Nord

Signed-off-by: Sandeep-FED <sandymankara11@gmail.com>

Renamed device name

santoni: Update Maintainer in xml

Signed-off-by: Ansh <singhansh64321@gmail.com>

Add chef Maintainer
Motorola One Power

Add venus maintainer.

Device Name : Xiaomi Mi 11

RMX1851 maintainer Update

Nikhil7001 --> Cykeek

Cherish: lavender Maintainer Update

Signed-off-by: Moonitime: Ultra Romantic <moonitimeultraromantic@gmail.com>

ysl: Update device maintainer for ysl

Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>

Cherish:update OnePlus 6/6T maintainer name

Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>

Add support for relame GT ME

Signed-off-by: itsxrp <itsxrproms@gmail.com>
2022-08-25 22:31:29 +07:00
Ansh
ffa4f91d03 Update santoni Maintainer Name 2022-08-25 22:31:29 +07:00
Hưng Phan
3873d41256 Cherish:Remove Utils
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2022-08-25 22:31:17 +07:00
Hưng Phan
f90b4e512f Cherish:Add strings missing in custom seekbar preference
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
2022-08-25 17:35:49 +07:00
127 changed files with 30782 additions and 24030 deletions

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (C) 2022
SPDX-License-Identifier: Apache-2.0
-->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="@*android:dimen/config_dialogCornerRadius" />
</shape>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="@*android:dimen/config_dialogCornerRadius" />
<gradient android:type="linear" />
</shape>

View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="#FFFFFF">
<item>
<shape android:shape="oval">
<solid android:color="?android:attr/colorAccent" />
<size android:width="20dp" android:height="20dp" />
</shape>
</item>
</ripple>

View File

@@ -25,11 +25,11 @@
android:id="@+id/icon"
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_marginTop="4dp"
android:layout_marginBottom="4dp"
android:layout_marginVertical="4dp"
android:scaleType="centerInside"
settings:layout_constraintStart_toStartOf="parent"
settings:layout_constraintTop_toTopOf="parent" />
settings:layout_constraintTop_toTopOf="parent"
settings:layout_constraintBottom_toBottomOf="parent" />
<TextView
android:id="@+id/label"
@@ -38,23 +38,26 @@
android:layout_marginStart="@dimen/default_margin"
android:textAppearance="?android:attr/textAppearanceListItem"
android:textColor="?android:attr/textColorPrimary"
android:maxLines="1"
settings:layout_constraintStart_toEndOf="@id/icon"
settings:layout_constraintEnd_toStartOf="@id/checkBox"
settings:layout_constraintTop_toTopOf="@id/icon" />
settings:layout_constraintEnd_toStartOf="@id/check_box"
settings:layout_constraintTop_toTopOf="@id/icon"
settings:layout_constraintBottom_toTopOf="@id/package_name" />
<TextView
android:id="@+id/packageName"
android:id="@+id/package_name"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="?android:attr/textColorSecondary"
android:maxLines="2"
settings:layout_constraintStart_toStartOf="@id/label"
settings:layout_constraintEnd_toEndOf="@id/label"
settings:layout_constraintTop_toBottomOf="@id/label"
settings:layout_constraintBottom_toBottomOf="@id/icon" />
<CheckBox
android:id="@+id/checkBox"
android:id="@+id/check_box"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:focusable="false"

View File

@@ -0,0 +1,135 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2022 FlamingoOS 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.
-->
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:settings="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="@dimen/default_padding"
android:paddingBottom="@dimen/default_padding">
<View
android:id="@+id/color_preview"
android:layout_width="0dp"
android:layout_height="@dimen/color_picker_preview_height"
android:layout_marginStart="@dimen/default_margin"
android:layout_marginEnd="@dimen/default_margin"
android:background="@drawable/color_picker_preview_background"
settings:layout_constraintEnd_toEndOf="parent"
settings:layout_constraintStart_toStartOf="parent"
settings:layout_constraintTop_toTopOf="parent" />
<EditText
android:id="@+id/color_input"
style="@style/ColorPickerEditTextStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
settings:layout_constraintStart_toStartOf="@id/color_preview"
settings:layout_constraintTop_toTopOf="@id/color_preview"
settings:layout_constraintEnd_toEndOf="@id/color_preview"
settings:layout_constraintBottom_toBottomOf="@id/color_preview" />
<SeekBar
android:id="@+id/seekBar1"
style="@style/ColorPickerSeekBarStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
settings:layout_constraintBottom_toTopOf="@id/seekBar2"
settings:layout_constraintEnd_toEndOf="parent"
settings:layout_constraintStart_toStartOf="parent"
settings:layout_constraintTop_toBottomOf="@id/color_preview" />
<SeekBar
android:id="@+id/seekBar2"
style="@style/ColorPickerSeekBarStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
settings:layout_constraintBottom_toTopOf="@id/seekBar3"
settings:layout_constraintEnd_toEndOf="parent"
settings:layout_constraintStart_toStartOf="parent"
settings:layout_constraintTop_toBottomOf="@id/seekBar1" />
<SeekBar
android:id="@+id/seekBar3"
style="@style/ColorPickerSeekBarStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/default_margin"
settings:layout_constraintBottom_toTopOf="@id/barrier"
settings:layout_constraintEnd_toEndOf="parent"
settings:layout_constraintStart_toStartOf="parent"
settings:layout_constraintTop_toBottomOf="@id/seekBar2" />
<RadioGroup
android:id="@+id/color_model_group"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/default_margin"
android:orientation="horizontal"
settings:layout_constraintBottom_toBottomOf="@id/confirm_button"
settings:layout_constraintStart_toStartOf="parent"
settings:layout_constraintTop_toTopOf="@id/confirm_button">
<RadioButton
android:id="@+id/rgb_button"
style="@style/ColorPickerRadioButtonStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:text="@string/rgb" />
<RadioButton
android:id="@+id/hsl_button"
style="@style/ColorPickerRadioButtonStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hsl" />
<RadioButton
android:id="@+id/hsv_button"
style="@style/ColorPickerRadioButtonStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hsv" />
</RadioGroup>
<Button
android:id="@+id/cancel_button"
style="@style/ColorPickerButtonStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="12dp"
android:text="@string/cancel"
settings:layout_constraintBottom_toBottomOf="@id/confirm_button"
settings:layout_constraintEnd_toStartOf="@id/confirm_button"
settings:layout_constraintTop_toTopOf="@id/confirm_button" />
<Button
android:id="@+id/confirm_button"
style="@style/ColorPickerButtonStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/default_margin"
android:text="@string/confirm"
settings:layout_constraintBottom_toBottomOf="parent"
settings:layout_constraintEnd_toEndOf="parent" />
<androidx.constraintlayout.widget.Barrier
android:id="@+id/barrier"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
settings:barrierDirection="top"
settings:constraint_referenced_ids="color_model_group, confirm_button" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -1,70 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (C) 2019 The Android Open Source 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.
-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="horizontal"
android:background="?android:attr/selectableItemBackground"
android:paddingStart="@dimen/switchbar_subsettings_margin_start"
android:paddingEnd="@dimen/switchbar_subsettings_margin_end"
android:paddingTop="8dp"
android:paddingBottom="8dp"
android:dividerHeight="0dp"
android:clipToPadding="false">
<!-- Icon view for Heads-up BlackListing/StopListing app lists -->
<LinearLayout
android:id="@+id/icon_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="start|center_vertical"
android:dividerHeight="0dp"
android:orientation="horizontal">
<com.android.internal.widget.PreferenceImageView
android:id="@android:id/icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scaleType="centerInside"
android:maxWidth="26dp"
android:maxHeight="26dp"/>
</LinearLayout>
<!-- Text view for Heads-up BlackListing/StopListing app lists -->
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:dividerHeight="0dp">
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/title"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:paddingStart="14dp"
android:gravity="center_vertical"
android:textAppearance="?android:attr/textAppearanceListItem"
android:textColor="?android:attr/textColorSecondary"
android:textStyle="bold"
android:layout_marginBottom="8dip" />
</RelativeLayout>
</LinearLayout>

View File

@@ -0,0 +1,50 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (C) 2019 The Android Open Source 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.
-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="7dp"
android:layout_gravity="center"
android:orientation="vertical">
<FrameLayout
android:id="@+id/option_tile"
android:layout_width="match_parent"
android:layout_height="75dp"
android:gravity="center"
android:layout_gravity="center"
android:paddingHorizontal="10dp"
android:paddingVertical="10dp"
android:background="@drawable/option_border_custom">
<TextClock android:id="@+id/option_title"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:format12Hour="hh:mm"
android:format24Hour="kk:mm"
android:textAppearance="@style/OptionTitleTextAppearance"/>
</FrameLayout>
<TextView
android:id="@+id/option_label"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:textAppearance="@style/OptionTitleTextAppearance"/>
</LinearLayout>

View 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/qs_apply_change_button_title"
android:textAllCaps="false"
style="@style/ActionPrimaryButton" />
</LinearLayout>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2010 The Android Open Source 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.
-->
<resources>
<style name="ColorPickerStyle" parent="Theme.MaterialComponents.BottomSheetDialog">
<item name="colorPrimary">@*android:color/primary_device_default_dark</item>
<item name="colorPrimaryDark">@*android:color/surface_highlight_light</item>
<item name="colorAccent">@*android:color/accent_device_default_dark</item>
</style>
</resources>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,794 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2019 CherishOS
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.
-->
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<!-- App Title -->
<string name="cherish_settings_title">Cherish Settings</string>
<!-- Categories -->
<string name="button_title">Buttons</string>
<string name="button_summary">Hardware keys, Navigation bar</string>
<string name="gestures_title">Gestures</string>
<string name="gestures_summary">Jump to camera, swipe to screenshot</string>
<string name="lockscreen_title">Lock screen</string>
<string name="lockscreen_summary">Music visualizer, charging animation, clock style</string>
<string name="misc_title">Miscellaneous</string>
<string name="misc_summary">Gaming mode, volume controls</string>
<string name="animations_title">Animations</string>
<string name="animations_summary">System animations</string>
<string name="powermenu_title">Power menu</string>
<string name="powermenu_summary">Advanced restart, power menu opacity</string>
<string name="theme_title">Themes</string>
<string name="theme_summary">System theme, rounded, switch theme</string>
<string name="quicksettings_title">Quick Settings</string>
<string name="quicksettings_summary">Tile layout, blur</string>
<string name="recents_title">Recents apps</string>
<string name="recents_summary">Slim recents</string>
<string name="statusbar_title">Status bar</string>
<string name="statusbar_summary">Clock, carrier, status icons</string>
<string name="volume_title">Volume rockers</string>
<string name="volume_summary">Volume rockers</string>
<string name="notifications_title">Notifications</string>
<string name="notifications_summary">Battery light, notifications header</string>
<string name="about_summary">Learn more about CherishOS</string>
<string name="device_part_title">Device features</string>
<string name="qs_category">QS category</string>
<string name="navbar_title">Navigation bar</string>
<string name="volume_keys_title">Volume keys</string>
<string name="udfps_category">UDFPS</string>
<!-- General strings -->
<string name="ok">OK</string>
<string name="reset">Reset</string>
<string name="cancel">Cancel</string>
<string name="save">Save</string>
<string name="none_string">None</string>
<string name="default_string">Default</string>
<string name="disabled">Disabled</string>
<!-- Color Picker -->
<string name="dialog_color_picker">Color Picker</string>
<string name="press_color_to_apply">Press on color below to apply</string>
<string name="arrow_right"></string>
<string name="arrow_down"></string>
<string name="hex">Hex:</string>
<string name="hex_hint">#ff000000</string>
<string name="set">Set</string>
<string name="color_default">Default</string>
<string name="led_color_green">Green</string>
<string name="led_color_red">Red</string>
<!-- Custom seekbar -->
<string name="custom_seekbar_value">Value: <xliff:g id="v">%s</xliff:g></string>
<string name="custom_seekbar_default_value">Default</string>
<string name="custom_seekbar_default_value_to_set">Default value: <xliff:g id="v">%s</xliff:g>\nLong press to set</string>
<string name="custom_seekbar_default_value_is_set">Default value is set</string>
<string name="add_package_to_title">Add application</string>
<string name="profile_choose_app">Choose app</string>
<string name="dialog_delete_title">Delete</string>
<string name="dialog_delete_message">Remove selected item?</string>
<!-- Units -->
<string name="unit_milliseconds">milliseconds</string>
<string name="unit_seconds">seconds</string>
<!-- QS settings -->
<string name="qs_title">Quick settings</string>
<!-- Lock screen visualizer -->
<string name="visualizer_title">Display music visualizer</string>
<!-- Power menu and dialogs opacity -->
<!-- AOKP custom system animations -->
<!-- Power menu Animations -->
<string name="power_menu_animation">Power menu</string>
<!-- Color picker -->
<string name="rgb">RGB</string>
<string name="hsl">HSL</string>
<string name="hsv">HSV</string>
<string name="confirm">Confirm</string>
<string name="invalid_color">Invalid color!</string>
<!-- QS header image -->
<!-- Lockscreen -->
<string name="lockscreen_category">Lockscreen</string>
<!-- Themes -->
<string name="theme_type_title">System theme</string>
<string name="theme_type_summary">Select theme</string>
<!--Accenter -->
<string name="themes_hub_title">Themes</string>
<string name="themes_hub_summary">Accents-Gradients-Themes</string>
<string name="rgb_accent_picker_title_dark">Accent Picker</string>
<string name="rgb_accent_picker_summary">Choose the accent color yourself</string>
<string name="theme_option_reset_title">Reset Theme Options</string>
<string name="theme_option_reset_message">Are you sure you want to reset themes-accent to default?</string>
<!--ThemePicker-->
<string name="theme_select_title">Styles and Wallpapers</string>
<string name="theme_select_summary">Browse and select installed themes</string>
<string name="notification_light_settings">Notifications light</string>
<string name="search">Search</string>
<string name="search_apps">Search apps</string>
<!-- Themeing -->
<string name="dark_ui_mode_summary">Browse the dark theme options</string>
<!-- [CHAR_LIMIT=NONE] Developer Settings: Title of the settings category for theme overlays. -->
<string name="theme_customization_category">Theming</string>
<!-- [CHAR_LIMIT=NONE] Developer Settings: Title of the setting which enables overlays to customize the adaptive icon shape (e.g. launcher and quick settings icons). -->
<string name="theme_customization_icon_shape_title">Icon shape</string>
<!-- [CHAR_LIMIT=NONE] Developer Settings: Title of the setting which enables overlays to customize accent color. -->
<string name="theme_customization_icon_shape_summary">Set system icon shape style</string>
<!-- [CHAR_LIMIT=NONE] Developer Settings: Title of the setting which enables overlays to customize headline and body fonts. -->
<string name="theme_customization_font_title">Headline / Body font</string>
<string name="theme_customization_font_summary">Set system font style</string>
<!-- [CHAR_LIMIT=NONE] Developer Settings: Title of the setting which enables overlays to customize the system wide icon pack. -->
<string name="theme_customization_icon_pack_title">Icon pack</string>
<string name="theme_customization_icon_pack_summary">Set custom icon pack style</string>
<string name="theme_customization_signal_icon_title">Signal icon style</string>
<string name="theme_customization_signal_icon_summary">Set custom signal icon style</string>
<string name="theme_customization_wifi_icon_title">WiFi icon style</string>
<string name="theme_customization_wifi_icon_summary">Set custom wifi icon style</string>
<!-- Fonts -->
<string name="theme_customization_lock_clock_title">Lockscreen clock font</string>
<string name="theme_customization_lock_clock_summary">Set LS clock font style</string>
<!-- Custom Signal bar icons -->
<string name="custom_signal_bar_title">Signal</string>
<!-- Custom Wi-Fi bar icons -->
<string name="custom_wifi_bar_title">Wi-Fi</string>
<!-- Battery light -->
<string name="battery_light_settings">Battery charging light</string>
<string name="battery_light_enable">Enable</string>
<string name="battery_full_light_enabled">Battery light when full charged</string>
<string name="battery_light_allow_on_dnd_title">Battery light in Do Not Disturb mode</string>
<string name="battery_light_low_blinking_title">Blinking light on low battery</string>
<string name="battery_light_cat">Battery light color when charging</string>
<string name="battery_light_low_color">Low battery</string>
<string name="battery_light_medium_color">Medium battery</string>
<string name="battery_light_full_color">Almost full battery</string>
<string name="battery_light_reallyfull_color">Full (100) battery</string>
<string name="status_bar_quick_qs_pulldown">Quick QS pulldown</string>
<string name="quick_pulldown_none">Disabled</string>
<string name="quick_pulldown_right">Pulldown status bar from right side</string>
<string name="quick_pulldown_left">Pulldown status bar from left side</string>
<string name="quick_pulldown_always">Always show quick settings on status bar pull down</string>
<!-- Statusbar double tap to sleep -->
<string name="double_tap_to_sleep_title">Status bar double tap to sleep</string>
<string name="double_tap_to_sleep_summary">Double tap on the status bar to put the device to sleep</string>
<!-- Lockscreen double tap to sleep -->
<string name="lockscreen_gesture_title">Gestures</string>
<string name="double_tap_sleep_lockscreen_title">Lockscreen double tap to sleep</string>
<string name="double_tap_sleep_lockscreen_summary">Double tap anywhere on the lockscreen to put the device to sleep</string>
<string name="notification_sound_vib_screen_on_title">Noisy notifications if screen on</string>
<string name="notification_sound_vib_screen_on_summary">Disable to block notifications sound and vibration when the screen is awake</string>
<!-- Heads up options -->
<string name="notifications_category_title">Annoying notifications protection</string>
<string name="less_boring_heads_up_title">Make heads up less annoying</string>
<string name="less_boring_heads_up_summary">Show heads up only for dialer or messaging app if they are not in foreground</string>
<!-- Incall vibrate options -->
<string name="incall_vibration_category">In-call vibration options</string>
<string name="incall_vibrate_connect_title">Vibrate on connect</string>
<string name="incall_vibrate_call_wait_title">Vibrate on call waiting</string>
<string name="incall_vibrate_disconnect_title">Vibrate on disconnect</string>
<!-- Launch music player when headset is connected -->
<string name="headset_connect_player_title">Launch music app on headset connection</string>
<string name="headset_connect_player_summary">Launch the default music app when headset is connected</string>
<!-- Network traffic -->
<string name="network_traffic_title">Network traffic indicator</string>
<string name="network_traffic_summary">Enable or disable network speed indicator in status bar</string>
<string name="network_traffic_master_switch_title">Use Network Traffic Indicator</string>
<string name="network_options_title">Options</string>
<string name="network_traffic_autohide_title">Hide network traffic indicator if inactive</string>
<string name="network_traffic_autohide_summary">Hide when network traffic indicator is below 1 KB/s</string>
<!-- NavBar Inverse -->
<string name="navigation_bar_inverse_title">Invert 3 button navigation bar</string>
<string name="status_bar_icons_category_title">Icons</string>
<!-- Status bar - icon blocklist -->
<string name="status_bar_icons_title">Status bar icons</string>
<string name="status_bar_icons_summary">Choose which status bar icons can be shown</string>
<!-- Data disabled icon -->
<string name="data_disabled_icon_title">Show data disabled icon</string>
<string name="data_disabled_icon_summary">Display the cross sign next to signal bar when data is disabled</string>
<!-- Show old style mobile data icon -->
<string name="use_old_mobiletype_title">Use old style mobile data icons</string>
<string name="use_old_mobiletype_summary">Show mobile type icon on top of the signal indicator</string>
<!-- Show LTE/4G switch -->
<string name="show_fourg_icon_title">Show 4G instead of LTE</string>
<string name="show_fourg_icon_summary">Replace LTE indicator with 4G</string>
<!-- Roaming indicator icon -->
<string name="roaming_indicator_icon_title">Roaming indicator</string>
<string name="roaming_indicator_icon_summary">Display roaming indicator when in roaming mode</string>
<!-- Lock screen media artwork -->
<string name="lockscreen_media_art_options_title">Lock screen media art</string>
<!-- Media art -->
<string name="media_art_title">Media cover art</string>
<string name="media_art_summary">Display media cover art when available</string>
<!-- Lock screen album art filter -->
<string name="lockscreen_albumart_filter_title">Media cover art filter</string>
<string name="lockscreen_albumart_filter_grayscale">Grayscale</string>
<string name="lockscreen_albumart_filter_tint">Accent tinted</string>
<string name="lockscreen_albumart_filter_blur">Blur</string>
<string name="lockscreen_albumart_filter_grayblur">Grayscale and blurred</string>
<string name="lockscreen_albumart_filter_blur_radius_title">Blur amount for lockscreen media artwork</string>
<!-- Statusbar Battery -->
<string name="battery_style_title">Battery icon style</string>
<string name="battery_style_summary">Customize battery icons, hide or show percentage</string>
<string name="battery_style_category_title">Battery icon</string>
<string name="status_bar_battery_category_title">In Status Bar</string>
<string name="status_bar_battery_percent_title">Battery percentage</string>
<string name="status_bar_battery_style_title">Battery style</string>
<string name="status_bar_battery_style_icon_portrait">Icon portrait (default)</string>
<string name="status_bar_battery_style_icon_rlandscape">Icon landscape (Right)</string>
<string name="status_bar_battery_style_icon_landscape">Icon landscape (Left)</string>
<string name="status_bar_battery_style_icon_rlandscape_style_a">Landscape R Style A</string>
<string name="status_bar_battery_style_icon_landscape_style_a">Landscape L Style A</string>
<string name="status_bar_battery_style_icon_rlandscape_style_b">Landscape R Style B</string>
<string name="status_bar_battery_style_icon_landscape_style_b">Landscape L Style B</string>
<string name="status_bar_battery_style_icon_landscape_pill">Portrait Mx</string>
<string name="status_bar_battery_style_icon_landscape_line">Landscape Lorn</string>
<string name="status_bar_battery_style_icon_landscape_musku">Portrait IOS</string>
<string name="status_bar_battery_style_icon_landscape_signal">Landscape Airoo</string>
<string name="status_bar_battery_style_icon_landscape_buddy">Landscape Capsule</string>
<string name="status_bar_battery_style_circle">Circle</string>
<string name="status_bar_battery_style_dotted_circle">Circle (Dotted)</string>
<string name="status_bar_battery_style_filled_circle">Circle (Filled)</string>
<string name="status_bar_battery_style_big_circle">Big circle</string>
<string name="status_bar_battery_style_big_dotted_circle">Big dotted circle</string>
<string name="status_bar_battery_style_text">Text</string>
<string name="status_bar_battery_style_hidden">Hidden</string>
<string name="status_bar_battery_percentage_default">Hidden (default)</string>
<string name="status_bar_battery_percentage_text_inside">Inside the icon</string>
<string name="status_bar_battery_percent_text_next_right">Next to the icon (right)</string>
<string name="status_bar_battery_percent_text_next_left">Next to the icon (left)</string>
<string name="status_bar_battery_text_charging_title">Battery percentage when charging</string>
<string name="status_bar_battery_text_charging_summary">Always display battery percentage when charging</string>
<!-- QS battery -->
<string name="qs_battery_category_title">In QS Panel</string>
<string name="qs_use_status_bar_battery_style">Follow status bar style</string>
<!-- Statusbar Clock background chip -->
<string name="statusbar_clock_chip_title">Background chip</string>
<string name="statusbar_clock_chip_summary">Display accented chip behind clock</string>
<!-- Quick Settings brightness slider -->
<string name="qs_show_brightness_slider_title">Brightness slider</string>
<string name="qs_show_brightness_slider_never">Never show</string>
<string name="qs_show_brightness_slider_expanded">Show when expanded</string>
<string name="qs_show_brightness_slider_always">Show always</string>
<string name="qs_show_brightness_slider_not_expanded">Show when not expanded</string>
<string name="qs_brightness_slider_position_title">Position</string>
<string name="qs_brightness_slider_position_top">Top</string>
<string name="qs_brightness_slider_position_bottom">Bottom</string>
<!-- Quick Settings brightness icon -->
<string name="qs_show_auto_brightness_title">Auto brightness icon</string>
<string name="qs_show_auto_brightness_summary">Show toggle for adaptive brightness near the slider</string>
<!-- Laboratory - Ignore window secure -->
<string name="laboratory_ignore_window_secure_title">Ignore window secure flags</string>
<string name="laboratory_ignore_window_secure_summary">This removes the screenshots and screenrecords limits for all applications. Normally, special applications are replaced with black areas in records. This can be convenient in some cases but may lead to privacy leaks. After changing this toggle, you may need to restart applications for the change to take effect.</string>
<!-- Lockscreen battery info -->
<string name="lockscreen_charging_info_title">Show charging info in lockscreen</string>
<string name="lockscreen_charging_info_summary">Shows temperature, charging current and more while plugged in</string>
<!-- QS Transparency -->
<string name="qs_transparency_title">Background transparency</string>
<string name="qs_transparency_summary">Set transparency level for QS background</string>
<!-- Brightness control -->
<string name="status_bar_brightness_control_title">Brightness control</string>
<string name="status_bar_brightness_control_summary">Adjust brightness by sliding across the status bar</string>
<!-- Power menu on lockscreen -->
<string name="power_menu_hide_on_secure_title">Hide power menu on lock screen</string>
<string name="power_menu_hide_on_secure_summary">This will hide the power menu only on a secure lock screen</string>
<!-- Hide Status bar on lock screen -->
<string name="hide_lockscreen_status_bar_title">Hide status bar</string>
<string name="hide_lockscreen_status_bar_summary">Touch status bar to toggle visibility</string>
<!-- Navigation bar -->
<string name="navigation_bar_category">Navigation bar</string>
<string name="navigation_bar_title">On-screen navigation bar</string>
<string name="navigation_bar_summary">Enable on-screen navigation keys</string>
<string name="navigation_bar_arrow_keys_title">Show arrow keys while typing</string>
<string name="navigation_bar_arrow_keys_summary">Display left and right cursor buttons in navigation bar while typing</string>
<string name="navigation_bar_compact_layout_title">Compact layout</string>
<string name="navigation_bar_compact_layout_summary">Use a compact layout in the navigation bar</string>
<string name="system_navigation_summary">Choose which system navigation style to use</string>
<!-- Volume rocker wake -->
<string name="volume_rocker_wake_title">Volume rocker wake</string>
<string name="volume_rocker_wake_summary">Pressing the volume keys will wake your device</string>
<string name="volume_category">Volume rocker</string>
<!-- Volume Steps Fragment -->
<string name="volume_steps_fragment_title">Volume steps</string>
<string name="volume_steps_summary">Customize volume steps</string>
<string name="volume_steps_alarm_title">Volume steps: Alarm</string>
<string name="volume_steps_dtmf_title">Volume steps: DTMF</string>
<string name="volume_steps_music_title">Volume steps: Media</string>
<string name="volume_steps_notification_title">Volume steps: Notification</string>
<string name="volume_steps_ring_title">Volume steps: Ringer</string>
<string name="volume_steps_system_title">Volume steps: System</string>
<string name="volume_steps_voice_call_title">Volume steps: Voice Call</string>
<string name="volume_steps_reset">Reset</string>
<!-- Buttons - Enable navbar -->
<string name="disable_navkeys_title">Enable on-screen nav bar</string>
<string name="disable_navkeys_summary">Enable on-screen navigation bar and disable hardware buttons</string>
<!-- Buttons - Swap capacitive keys -->
<string name="swap_capacitive_keys_title">Swap capacitive buttons</string>
<string name="swap_capacitive_keys_summary">Swap the order of recents and back buttons</string>
<!-- HW keys -->
<string name="hardware_keys_title">Buttons</string>
<string name="hardware_keys_category">Hardware navigation buttons</string>
<string name="hardware_keys_disable_title">Disable hardware buttons</string>
<string name="hardware_keys_disable_summary">Use the device hardware keys for navigation</string>
<string name="hardware_keys_volume_keys_title">Volume rocker</string>
<!-- Hardware button navigation -->
<string name="picker_activities">Activities</string>
<string name="select_custom_app_title">Select custom app</string>
<string name="select_custom_activity_title">Select custom activity</string>
<string name="profile_applist_title">Applications</string>
<string name="choose_action_title">Choose action</string>
<string name="action_entry_default_action">Default settings</string>
<string name="action_entry_select_app">Select application</string>
<string name="action_entry_custom_action">Select custom action</string>
<string name="hardware_keys_home_key_title">Home button</string>
<string name="hardware_keys_back_key_title">Back button</string>
<string name="hardware_keys_menu_key_title">Menu button</string>
<string name="hardware_keys_assist_key_title">Search button</string>
<string name="hardware_keys_appswitch_key_title">Recents button</string>
<string name="hardware_keys_camera_key_title">Camera button</string>
<string name="hardware_keys_short_press_title">Short press action</string>
<string name="hardware_keys_double_tap_summary">Set double tap action</string>
<string name="hardware_keys_single_tap_summary">Set single tap action</string>
<string name="hardware_keys_long_press_summary">Set long press action</string>
<string name="hardware_keys_single_tap_title">Single tap action</string>
<string name="hardware_keys_long_press_title">Long press action</string>
<string name="hardware_keys_double_tap_title">Double tap action</string>
<string name="hardware_keys_action_nothing">No action</string>
<string name="hardware_keys_action_menu">Open/close menu</string>
<string name="hardware_keys_action_app_switch">Recent apps switcher</string>
<string name="hardware_keys_action_search">Search assistant</string>
<string name="hardware_keys_action_voice_search">Voice search</string>
<string name="hardware_keys_action_in_app_search">In-app search</string>
<string name="hardware_keys_action_launch_camera">Launch camera</string>
<string name="hardware_keys_action_sleep">Turn screen off</string>
<string name="hardware_keys_action_split_screen">Split screen</string>
<string name="hardware_keys_action_close_app">Kill app</string>
<string name="hardware_keys_action_torch">Flashlight</string>
<string name="hardware_keys_action_screenshot">Screenshot</string>
<string name="hardware_keys_action_volume_panel">Toggle volume panel</string>
<string name="hardware_keys_action_clear_all_notifications">Clear all notifications</string>
<string name="hardware_keys_action_notifications_panel">Toggle notifications panel</string>
<string name="hardware_keys_action_toggle_qs_panel">Toggle QS panel</string>
<string name="hardware_keys_action_ringer_modes">Ringer modes</string>
<string name="hardware_keys_swipe_right_key_title">Swipe right</string>
<string name="hardware_keys_swipe_left_key_title">Swipe left</string>
<string name="hardware_keys_long_tap_key_title">Long tap</string>
<string name="hardware_keys_swipe_tap_title">Swipe action</string>
<string name="hardware_keys_long_tap_title">Long tap action</string>
<string name="button_wake_title">Wake device</string>
<string name="button_wake_summary">Wake device by pressing the button</string>
<string name="camera_sleep_on_release_title">Screen peek</string>
<string name="camera_sleep_on_release_summary">A half press will keep the screen on only while the button is held down</string>
<string name="camera_launch_title">Launch camera</string>
<string name="camera_launch_summary">A longpress and release will launch camera</string>
<string name="cursor_section_header">Cursor</string>
<string name="volume_key_cursor_control_title">Keyboard cursor control</string>
<string name="volume_key_cursor_control_off">Disabled</string>
<string name="volume_key_cursor_control_on">Volume Up/Down - Cursor Left/Right</string>
<string name="volume_key_cursor_control_on_reverse">Volume Up/Down - Cursor Right/Left</string>
<string name="swap_volume_buttons_title">Reorient</string>
<string name="swap_volume_buttons_summary">Swap volume buttons when the screen is rotated</string>
<string name="volume_panel_on_left_title">Show volume panel on left</string>
<string name="volume_panel_on_left_summary">Display volume panel on the left side of the screen</string>
<!-- Alert Slider Notifications (OnePlus devices) -->
<string name="alert_slider_notifications_title">Alert slider notifications</string>
<string name="alert_slider_notifications_summary">Display notification when changing alert slider position</string>
<!-- Power Menu -->
<string name="power_menu_title">Power menu</string>
<string name="power_menu_title_summary">View or change power menu entries</string>
<string name="powermenu_screenshot">Screenshot</string>
<string name="powermenu_power">Power</string>
<string name="powermenu_advanced">Advanced reboot options</string>
<string name="powermenu_restart">Restart</string>
<string name="powermenu_airplane">Airplane</string>
<string name="powermenu_settings">Settings</string>
<string name="powermenu_lockdown">Lock Down</string>
<string name="powermenu_soundpanel">Sound Panel</string>
<string name="powermenu_users">Users</string>
<string name="powermenu_logout">Logout</string>
<string name="powermenu_emergency">Emergency</string>
<!-- Unlock FPS for specific games -->
<string name="use_games_spoof_title">Unlock higher FPS in games</string>
<string name="use_games_spoof_summary">Spoof your device as a different model for specific games to unlock higher FPS</string>
<!-- Unlimited google photos storage -->
<string name="use_photos_spoof_title">Unlimited Photos storage</string>
<string name="use_photos_spoof_summary">Spoof your device as Pixel XL for Google Photos app only to provide unlimited storage for backup</string>
<!-- Notification guts kill app button -->
<string name="notification_guts_kill_app_button_title">Force stop button</string>
<string name="notification_guts_kill_app_button_summary">Show force stop button in the notification\'s longpress menu</string>
<!-- Toast app icon -->
<string name="toast_icon_title">Toast app icon</string>
<string name="toast_icon_summary">Display the app\'s icon corresponding with the toast</string>
<!-- Custom settings dashboard style -->
<string name="settings_dashboard_style_title">Settings layout</string>
<string name="settings_dashboard_style_aosp">Aosp</string>
<string name="settings_dashboard_style_oos11">OxygenOS 11</string>
<string name="settings_dashboard_style_oos12">OxygenOS 12</string>
<string name="settings_dashboard_style_cherish">Cherish</string>
<string name="settings_dashboard_style_cherish_clean">Cherish Clean</string>
<string name="settings_layout_category_title">Settings UI interface</string>
<string name="settings_base_style_title">Settings Base layout</string>
<string name="settings_base_style_summary">Use an alternative layout for setting menus</string>
<string name="settings_home_style_title">Settings Home layout</string>
<string name="settings_home_style_summary">Use stock aosp layout for homepage</string>
<string name="disable_usercard_title">Settings UserCard</string>
<string name="disable_usercard_summary">Toggle in order not to show the usercard on main settings page</string>
<!-- UDFPS Haptic Feedback -->
<string name="udfps_haptic_feedback_title">UDFPS haptic feedback</string>
<string name="udfps_haptic_feedback_summary">Vibrate when touching UDFPS icon</string>
<!-- Udfps authentication / error vibration -->
<string name="udfps_success_vib_title">Udfps authentication vibration</string>
<string name="udfps_success_vib_summary">Vibrate on successful fingerprint authentication</string>
<string name="udfps_error_vib_title">Udfps error vibration</string>
<string name="udfps_error_vib_summary">Vibrate on unsuccessful fingerprint authentication</string>
<!-- UDFPS Recog Animation -->
<string name="udfps_customization">UDFPS customization</string>
<string name="udfps_recog_animation">UDFPS animation</string>
<string name="udfps_recog_animation_summary">Shows an animation while reading your finger</string>
<string name="udfps_recog_animation_effect_title">UDFPS custom animation</string>
<string name="udfps_recog_animation_effect_summary">Choose animation effect</string>
<string name="udfps_settings_title">UDFPS settings</string>
<string name="udfps_settings_summary">Settings for customizing the UDFPS</string>
<!-- UDFPS icon picker -->
<string name="udfps_icon_picker_title">UDFPS icon picker</string>
<string name="udfps_icon_picker_summary">Choose your favorite fingerprint icon</string>
<!-- Custom FOD Icon -->
<string name="custom_fp_icon_title">Custom UDFPS Icon</string>
<string name="custom_fp_icon_summary">Enable custom UDFPS Icon from files</string>
<string name="custom_fp_select_title">Select Custom UDFPS Icon</string>
<string name="custom_fp_select_summary">Select custom image from your saved files or gallery</string>
<!-- UDFPS pressed color -->
<string name="udfps_pressed_color_title">Udfps pressed color</string>
<string name="udfps_pressed_color_summary">Choose your favorite udfps pressed color</string>
<!-- Fingerprint Ripple Effect -->
<string name="enable_fingerprint_ripple_effect_title">Ripple effect</string>
<string name="enable_fingerprint_ripple_effect_summary">Show ripple effect on unlock with fingerprint</string>
<!-- Privacy Indicator -->
<string name="mic_camera_privacy_indicator_title">Mic and camera privacy indicator</string>
<string name="mic_camera_privacy_indicator_summary">Show indicator when any app uses mic or camera</string>
<string name="location_privacy_indicator_title">Location privacy indicator</string>
<string name="location_privacy_indicator_summary">Show indicator when any app uses location</string>
<string name="projection_privacy_indicator_title">Media projection privacy indicator</string>
<string name="projection_privacy_indicator_summary">Show indicator when device screen is projected</string>
<!-- Notification count -->
<string name="statusbar_notif_count_title">Show notification count</string>
<string name="statusbar_notif_count_summary">Display the number of pending notifications</string>
<!-- Statusbar colored icons -->
<string name="statusbar_colored_icons_title">Colored icons</string>
<string name="statusbar_colored_icons_summary">Use proper app icons for notification icons in statusbar</string>
<!-- Bluetooth status -->
<string name="bluetooth_battery_title">Bluetooth battery status</string>
<string name="bluetooth_battery_summary">Display battery status for the connected bluetooth device, if available</string>
<!-- Torch Power button gestures -->
<string name="torch_power_button_gesture_title">Toggle torch when screen off</string>
<string name="torch_power_button_gesture_none">Disabled</string>
<string name="torch_power_button_gesture_dt">Double tap power button (slower single tap response), Disables double power tap for camera.</string>
<string name="torch_power_button_gesture_dt_toast">Jump to camera gesture is now disabled</string>
<string name="torch_power_button_gesture_lp">Long press power button</string>
<!-- Status bar - Clock -->
<string name="status_bar_clock_title">Clock &amp; date</string>
<string name="status_bar_clock_summary">Customize clock &amp; date</string>
<string name="status_bar_clock_seconds_title">Clock seconds</string>
<string name="status_bar_clock_seconds_summary">Display seconds next to clock in status bar</string>
<string name="status_bar_clock_position_title">Clock style</string>
<string name="status_bar_clock_position_right">Right</string>
<string name="status_bar_clock_position_left">Left</string>
<string name="status_bar_clock_position_center">Center</string>
<string name="status_bar_clock_position_hidden">Hidden</string>
<string name="status_bar_clock_auto_hide_title">Auto hide</string>
<string name="status_bar_clock_auto_hide_launcher_summary">Hide clock if launcher is visible</string>
<string name="status_bar_clock_auto_hide_summary">Hide clock at regular interval</string>
<string name="status_bar_clock_auto_hide_hdur_title">Hide duration</string>
<string name="status_bar_clock_auto_hide_hdur_summary">Number of seconds to hide clock</string>
<string name="status_bar_clock_auto_hide_sdur_title">Show duration</string>
<string name="status_bar_clock_auto_hide_sdur_summary">Number of seconds to wait before hiding clock</string>
<string name="status_bar_am_pm_title">AM/PM style</string>
<string name="status_bar_am_pm_info">24-hour clock is enabled</string>
<string name="status_bar_am_pm_normal">Normal</string>
<string name="status_bar_am_pm_small">Small</string>
<string name="status_bar_am_pm_hidden">Hidden</string>
<string name="status_bar_date_title">Date</string>
<string name="status_bar_date_none">Hidden</string>
<string name="status_bar_date_small">Small</string>
<string name="status_bar_date_normal">Normal</string>
<string name="status_bar_date_format_title">Date format</string>
<string name="status_bar_date_style">Date style</string>
<string name="status_bar_date_style_normal">Normal</string>
<string name="status_bar_date_style_lowercase">Lowercase</string>
<string name="status_bar_date_style_uppercase">Uppercase</string>
<string name="status_bar_date_format_custom">Custom java format</string>
<string name="status_bar_date_string_edittext_title">Must be in DateFormat eg. MM/dd/yy</string>
<string name="status_bar_date_string_edittext_summary">Enter string</string>
<string name="clock_date_position">Date position</string>
<string name="clock_date_right">Right of time</string>
<string name="clock_date_left">Left of time</string>
<string name="clock_font_size_title">Clock font size</string>
<!-- QS clock -->
<string name="qs_clock_title">Clock</string>
<string name="qs_clock_summary">Display clock in quick status bar header</string>
<!-- QS date -->
<string name="qs_date_title">Date</string>
<string name="qs_date_summary">Display date in quick status bar header</string>
<!-- Footer -->
<string name="qs_footer_category">QS Footer</string>
<string name="qs_footer_datausage_title">Data usage</string>
<string name="qs_footer_datausage_summary">Display data usage summary in quick settings footer</string>
<!-- App lock -->
<string name="app_lock_title">App lock</string>
<string name="app_lock_summary">Apps will require fingerprint authentication to launch</string>
<string name="app_lock_authentication_dialog_title">Unlock</string>
<string name="enable_debugging">Enable debugging</string>
<string name="disable_debugging">Disable debugging</string>
<string name="app_lock_packages_title">Protected apps</string>
<string name="app_lock_packages_summary">Select the apps to protect with biometrics or device credentials</string>
<string name="app_lock_timeout_title">Auto lock timeout</string>
<string name="app_lock_timeout_summary">Duration of time after which an unlocked app in background should be locked</string>
<string name="app_lock_notifications_title">Redact notifications</string>
<string name="app_lock_notifications_summary"> Notification content will be hidden and collapsed for selected apps when they are locked.
Heads up notifications will be automatically disabled.
</string>
<string name="app_lock_notifications_disabled_summary">Protect an application first</string>
<string name="app_lock_biometrics_allowed_title">Enable biometrics for unlocking</string>
<string name="app_lock_footer_text">Bubbles will be automatically dismissed after timeout</string>
<string name="enable_protection">Enable protection</string>
<!-- Quick settings styling -->
<string name="qs_styling">Quick Settings UI</string>
<string name="qs_styles_title">QS Panel Styles</string>
<string name="qs_outline">QS Outline Style</string>
<string name="qs_two_tone">QS Two-Tone Accent</string>
<string name="qs_color_pop">QS Color Pop</string>
<!-- QS tiles layout direction: vertical or horizontal -->
<string name="qs_tile_layout_category_title">Tile layout</string>
<string name="qs_tile_layout_title">Title Alignment</string>
<string name="qs_tile_layout_summary">Enable for centered layout.</string>
<!-- QS tiles title visibility -->
<string name="qs_tile_title_visibility_title">Hide tile titles</string>
<string name="qs_tile_title_visibility_summary">Toggle to hide tile titles</string>
<!-- QS tiles layout -->
<string name="qs_layout_category_title">Tiles layout</string>
<string name="qs_tile_label_hide_title">Hide label</string>
<string name="qs_tile_label_hide_summary">Only show icon in tile</string>
<string name="qs_tile_label_size_title">Label text size</string>
<string name="qs_columns_portrait_title">Columns (portrait)</string>
<string name="qs_columns_landscape_title">Columns (landscape)</string>
<!-- Monet engine -->
<string name="monet_engine_settings_title">Monet engine</string>
<string name="monet_engine_settings_summary">Custom color, colorfulness, brightness</string>
<string name="accurate_shades_title">Use accurate shades</string>
<string name="color_override_title">Custom color picker</string>
<string name="color_override_default_summary">Using wallpaper color</string>
<string name="custom_color_override_summary_placeholder"> Choosen color: <xliff:g example="#FF0000" id="Color">%1$s</xliff:g>. Set an empty value to use wallpaper color.
</string>
<string name="invalid_color_input">Invalid color input!</string>
<string name="chroma_factor_title">Colorfulness</string>
<string name="linear_lightness_title">Use custom lightness scale</string>
<string name="white_luminance_title">Brightness</string>
<!-- Power menu Animations -->
<string name="power_menu_animation_title">Power menu animation</string>
<string name="power_menu_animation_dialog_title">Select power menu animation</string>
<string name="power_menu_animation_aosp">AOSP (default)</string>
<string name="power_menu_animation_bottom">Bottom</string>
<string name="power_menu_animation_top">Top</string>
<string name="power_menu_animation_xylon">Fly</string>
<string name="power_menu_animation_slide">Slide</string>
<string name="power_menu_animation_turn">Turn</string>
<string name="power_menu_animation_fly">Glow</string>
<string name="power_menu_animation_card">3D</string>
<string name="power_menu_animation_translucent_top">Translucent (top)</string>
<string name="power_menu_animation_translucent_bottom">Translucent (bottom)</string>
<string name="power_menu_animation_rotate">Rotate</string>
<!-- QS tiles animations category -->
<string name="qs_tile_animation_category_title">QS Tiles</string>
<!-- Tiles animation style -->
<string name="qs_tile_animation_style_title">Animation style</string>
<string name="qs_tile_animation_duration_title">Animation duration</string>
<string name="qs_tile_animation_interpolator_title">Tiles animation interpolator</string>
<string name="qs_tile_animation_style_off">No animation</string>
<string name="qs_tile_animation_style_flip">Flip</string>
<string name="qs_tile_animation_style_rotate">Rotate</string>
<string name="qs_tile_animation_duration_low">Low</string>
<string name="qs_tile_animation_duration_default">Default</string>
<string name="qs_tile_animation_duration_fast">Fast</string>
<string name="qs_tile_animation_duration_quite_fast">Quite fast</string>
<string name="qs_tile_animation_duration_super_fast">Super fast</string>
<string name="qs_tile_animation_interpolator_linearInterpolator">Linear</string>
<string name="qs_tile_animation_interpolator_accelerateInterpolator">Accelerate</string>
<string name="qs_tile_animation_interpolator_decelerateInterpolator">Decelerate</string>
<string name="qs_tile_animation_interpolator_accelerateDecelerateInterpolator">Accelerate decelerate</string>
<string name="qs_tile_animation_interpolator_bounceInterpolator">Bounce</string>
<string name="qs_tile_animation_interpolator_overshootInterpolator">Overshoot</string>
<string name="qs_tile_animation_interpolator_anticipateInterpolator">Anticipate</string>
<string name="qs_tile_animation_interpolator_anticipateOvershootInterpolator">Anticipate overshoot</string>
<string name="qs_set_animation_style">%1$s</string>
<string name="qs_set_animation_duration">%1$s</string>
<string name="qs_set_animation_interpolator">%1$s</string>
<!-- reTicker -->
<string name="reticker_title">reTicker</string>
<string name="reticker_summary">Replace heads-up notification with slim and less invasive version of redesigned ticker</string>
<string name="reticker_colored_title">Use app colored background</string>
<string name="reticker_colored_summary">Replace reTicker background color using notification app main color</string>
<!-- Power menu and dialogs opacity -->
<string name="power_menu_transparency">Power/reboot menu opacity</string>
<string name="power_menu_dialog_dim">Power/reboot dialog dim background amount</string>
<!-- Smart charging -->
<string name="smart_charging_title">Smart Charging</string>
<string name="smart_charging_summary">Set maximum charging level</string>
<string name="smart_charging_switch_title">Enable Smart Charging</string>
<string name="smart_charging_level_title">Stop trigger level</string>
<string name="smart_charging_resume_level_title">Start trigger level</string>
<string name="smart_charging_reset_stats_title">Reset battery statistics</string>
<string name="smart_charging_reset_stats_summary">Reset battery statistics after reaching user defined charging level</string>
<string name="smart_charging_footer">Smart Charging allows you to set maximum charging level to extend the lifespan of your battery. When enabled, battery stops charging at Stop trigger level and resumes charging at Start trigger level. Stop trigger level should be always greater than Start trigger level.</string>
<!-- Pulse music visualizer -->
<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="pulse_settings">Pulse</string>
<string name="pulse_settings_summary">Audio graphic equalizer for navigation bar and lockscreen</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_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>
<string name="pulse_render_mode_solid_lines">Solid lines</string>
<string name="pulse_legacy_mode_advanced_category">Fading blocks mode settings</string>
<string name="pulse_custom_fudge_factor">Sanity level</string>
<string name="pulse_lavalamp_speed_title">Lava lamp speed</string>
<string name="pulse_solid_units_count">Solid lines count</string>
<string name="pulse_solid_units_opacity">Solid lines opacity</string>
<string name="pulse_solid_units_rounded_title">Rounded corners</string>
<string name="pulse_solid_units_rounded_summary">Solid lines with rounded tip</string>
<string name="pulse_solid_dimen_category">Solid lines mode settings</string>
<string name="pulse_color_mode_title">Color</string>
<string name="pulse_color_accent">Accent</string>
<string name="pulse_color_custom">Custom</string>
<string name="pulse_color_lava_lamp">Lava lamp</string>
<string name="pulse_color_user_title">Choose color</string>
<string name="pulse_smoothing_enabled_title">Turn on smoothing</string>
<string name="pulse_smoothing_enabled_summary">Each bar is animated more smoothly</string>
<string name="pulse_custom_dimen">Bar width</string>
<string name="pulse_custom_div">Bar spacing</string>
<string name="pulse_filled_block_size">Block size</string>
<string name="pulse_empty_block_size">Block spacing</string>
<!-- Pulse Gravity n Mirror Options -->
<string name="pulse_custom_gravity_title">Gravity</string>
<string name="pulse_custom_gravity_bottom">Bottom</string>
<string name="pulse_custom_gravity_top">Top</string>
<string name="pulse_custom_gravity_center">Center</string>
<string name="visualizer_center_mirrored_title">Center mirrored</string>
<string name="visualizer_center_mirrored_summary">Set the visualizer in center mirrored mode</string>
<string name="pulse_vertical_mirror_title">Vertical Mirror</string>
<string name="pulse_vertical_mirror_summary">Create other pulse and flip vertically</string>
<string name="click_partial_screenshot_title">Click to partial screenshot</string>
<string name="click_partial_screenshot_summary">Short click Volume Down and Power to take partial screenshot</string>
<!-- UI styles -->
<string name="theme_customization_ui_style_title">UI Style</string>
<string name="theme_customization_ui_style_summary">Set custom style for your interface</string>
<!-- OOS style material dismiss all button for notifications -->
<string name="notification_material_dismiss_button_title">Material dimiss button</string>
<string name="notification_material_dismiss_button_summary">Replace clear all notification text with floating button</string>
<string name="clearall_style_title">Material dismiss button style</string>
<string name="clearall_bgstyle_title">Material dismiss background style</string>
<!-- Smart Pixels -->
<string name="smart_pixels_warning_text">Smart pixels is a power saving feature. Depending on how many pixels you decide to turn off, you could see improvement in battery life. Note that in some cases it can result in unresponsive areas on touch screen</string>
<string name="smart_pixels_title">Smart Pixels</string>
<string name="smart_pixels_summary">Save battery by shutting off extra pixels</string>
<string name="smart_pixels_enable_title">Enable Smart Pixels</string>
<string name="smart_pixels_enable_summary">Shut off pixels to reduce power consumption</string>
<string name="smart_pixels_on_power_save_title">Auto-enable on battery saver</string>
<string name="smart_pixels_on_power_save_summary">Enable Smart Pixels when battery saver is enabled</string>
<string name="smart_pixels_percent">Percent of pixels to disable</string>
<string name="smart_pixels_shift_title">Burn-in protection</string>
<string name="smart_pixels_shift_summary">Prevents burn-in on OLED devices by shifting pixels every so often</string>
<!-- Ambient edge lighting -->
<string name="pulse_ambient_light_category">Screen edge lighting</string>
<string name="pulse_ambient_light_title">Edge lighting</string>
<string name="pulse_ambient_light_summary">Light up the side edges of the screen on notification pulse</string>
<string name="pulse_ambient_light_color_title">Custom color</string>
<string name="pulse_ambient_light_color_mode_title">Light color</string>
<string name="pulse_ambient_light_color_mode_notification">Automatic (Notification Based)</string>
<string name="pulse_ambient_light_color_mode_wall">Automatic (Wallpaper Based)</string>
<string name="pulse_ambient_light_color_mode_accent">Accent</string>
<string name="pulse_ambient_light_color_mode_custom">Custom</string>
<string name="pulse_ambient_light_color_mode_random">Random Color</string>
<string name="pulse_ambient_light_duration_title">Light duration</string>
<string name="pulse_ambient_light_repeat_count_title">Light repeat count</string>
<string name="pulse_ambient_light_show_always_title">Show always</string>
<string name="pulse_ambient_light_show_always_summary">Show lights for all doze events and not just notifications</string>
<string name="pulse_ambient_light_repeat_direction_title">Light repeat mode</string>
<string name="pulse_ambient_light_repeat_direction_restart">Restart</string>
<string name="pulse_ambient_light_repeat_direction_reverse">Reverse</string>
<string name="pulse_ambient_light_layout_title">Light view</string>
<string name="pulse_ambient_light_layout_solid">Solid</string>
<string name="pulse_ambient_light_layout_faded">Faded</string>
<string name="ambient_notification_light_enabled_title">Show on AOD</string>
<string name="ambient_notification_light_enabled_summary">Show lights on Always On Display</string>
<string name="ambient_notification_light_hide_aod_title">Hide AOD content</string>
<string name="ambient_notification_light_hide_aod_summary">Hide AOD content when lights are showing</string>
<string name="ambient_notification_light_timeout_title">Timeout</string>
<string name="ambient_notification_light_timeout_forever">Forever</string>
<string name="ambient_notification_light_timeout_half_minute">30 seconds</string>
<string name="ambient_notification_light_timeout_minute">1 minute</string>
<string name="ambient_notification_light_timeout_three_minutes">3 minutes</string>
<string name="ambient_notification_light_timeout_five_minutes">5 minutes</string>
<string name="ambient_notification_light_timeout_ten_minutes">10 minutes</string>
<!-- Edge Light -->
<string name="pulse_ambient_light_width_title">Light width</string>
<!-- Pulse Light Layout Style -->
<string name="pulse_light_layout_style_title">Light Layout Style</string>
<string name="pulse_light_both">All Four Sides</string>
<string name="pulse_light_top_bottom">Only Top-Bottom</string>
<string name="pulse_light_left_right">Only Left-Right</string>
<!-- Ambient Customization -->
<string name="ambient_text_category">Text Customization</string>
<string name="ambient_image_category">Image Customization</string>
<string name="ambient_text_category_title">Ambient-AOD Customization</string>
<string name="ambient_text_category_summary">Customizing the looks of ambient-aod</string>
<string name="ambient_text_title">Ambient Text</string>
<string name="ambient_text_summary">Show Ambient Text in AoD</string>
<string name="ambient_text_animation_title">Ambient Text Animation</string>
<string name="ambient_text_animation_summary">Show a Animation when show AoD</string>
<string name="ambient_text_size_title">Ambient Text Size</string>
<string name="ambient_text_font_title">Ambient Text Font</string>
<string name="ambient_text_string_title">Set Ambient Text</string>
<string name="ambient_text_align_title">Ambient Text Align</string>
<string name="ambient_text_align_start_top">Right n Top</string>
<string name="ambient_text_align_start_center">Right n Center</string>
<string name="ambient_text_align_start_bottom">Right n Bottom</string>
<string name="ambient_text_align_center">Center</string>
<string name="ambient_text_align_end_top">Left n Top</string>
<string name="ambient_text_align_end_center">Left n Center</string>
<string name="ambient_text_align_end_bottom">Left n Bottom</string>
<string name="ambient_text_type_color_title">Ambient Text Type Color</string>
<string name="ambient_text_color_title">Ambient Text Color</string>
<string name="ambient_notification_light_color_mode_accent">System accent color</string>
<string name="ambient_notification_light_color_mode_custom">Custom color</string>
<string name="ambient_notification_light_color_mode_wall">Wallpaper color</string>
<string name="ambient_image_title">Ambient Image</string>
<string name="file_header_select_title">Select local image</string>
<string name="file_header_select_summary">Select image from storage(recommended use Gallery Go)</string>
<!-- Lock Clock Fonts -->
<string name="lock_clock_font_title">LS Clock font style</string>
<string name="lock_clock_font_dialog_title">Select lockscreen clock font</string>
<string name="lock_clock_font_stock">Normal (default)</string>
<string name="lock_clock_font_bold">Bold</string>
<string name="lock_clock_font_italic">Italic</string>
<string name="lock_clock_font_bold_italic">Bold Italic</string>
<string name="lock_clock_font_light_italic">Light Italic</string>
<string name="lock_clock_font_thin_italic">Thin Italic</string>
<string name="lock_clock_font_light">Light</string>
<string name="lock_clock_font_thin">Thin</string>
<string name="lock_clock_font_condensed_normal">Condensed</string>
<string name="lock_clock_font_condensed_italic">Condensed Italic</string>
<string name="lock_clock_font_condensed_bold">Condensed Bold</string>
<string name="lock_clock_font_condensed_bold_italic">Condensed Bold Italic</string>
<string name="lock_clock_font_condensed_light">Condensed Light</string>
<string name="lock_clock_font_condensed_light_italic">Condensed Light Italic</string>
<string name="lock_clock_font_medium_normal">Medium</string>
<string name="lock_clock_font_medium_italic">Medium Italic</string>
<string name="lock_clock_font_black">Black</string>
<string name="lock_clock_font_black_italic">Black Italic</string>
<string name="lock_clock_font_dancingscript">DancingScript</string>
<string name="lock_clock_font_dancingscript_bold">DancingScript Bold</string>
<string name="lock_clock_font_comingsoon">ComingSoon</string>
<string name="lock_clock_font_notoserif">NotoSerif Normal</string>
<string name="lock_clock_font_notoserif_italic">NotoSerif Italic</string>
<string name="lock_clock_font_notoserif_bold">NotoSerif Bold</string>
<string name="lock_clock_font_notoserif_bold_italic">NotoSerif Bold Italic</string>
<string name="lock_clock_font_gobold">GoBold Light</string>
<string name="lock_clock_font_roadrage">Road Rage</string>
<string name="lock_clock_font_snowstorm">Snowstorm</string>
<string name="lock_clock_font_googlesans">Google Sans</string>
<string name="lock_clock_font_neoneon">Neoneon</string>
<string name="lock_clock_font_themeable">Themeable (or VCR OSD Mono)</string>
<string name="lock_clock_font_samsung">Shamshung</string>
<string name="lock_clock_font_mexcellent">Mexcellent</string>
<string name="lock_clock_font_burnstown">Burnstown</string>
<string name="lock_clock_font_dumbledor">Dumbledor</string>
<string name="lock_clock_font_phantombold">PhantomBold</string>
<!-- Black theme -->
<string name="system_black_theme_title">Vivid Colors</string>
<string name="system_black_theme_summary">Use colorful and darker monet shades</string>
</resources>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -16,6 +16,7 @@
<resources>
<!-- Base attributes available to CustomSeekBarPreference. -->
<declare-styleable name="CustomSeekBarPreference">
<attr name="defaultValueText" format="string" />
<attr name="interval" format="integer" />
<attr name="min" format="integer" />
<attr name="units" format="string|reference" />

View File

@@ -23,6 +23,8 @@
<dimen name="color_preference_width">18dip</dimen>
<dimen name="color_preference_height">18dip</dimen>
<dimen name="color_picker_preview_height">80dp</dimen>
<!-- Shortcut picker -->
<dimen name="shortcut_picker_left_padding">70dip</dimen>

View File

@@ -27,7 +27,7 @@
<string name="device_lmi">Xiaomi Redmi K30 Pro</string>
<string name="lmi_maintainer">Ziad Fekry</string>
<string name="device_lavender">Xiaomi Redmi Note 7</string>
<string name="lavender_maintainer">Hung Phan</string>
<string name="lavender_maintainer">Moonitime: Ultra Romantic</string>
<string name="device_ginkgo">Xiaomi Redmi Note 8</string>
<string name="ginkgo_maintainer">Khuong Hung</string>
<string name="device_tulip">Xiaomi Redmi Note 6 Pro</string>
@@ -40,8 +40,6 @@
<string name="kenzo_maintainer">MrJarvis698</string>
<string name="device_chiron">Xiaomi Mi Mix 2</string>
<string name="chiron_maintainer">Braian Diez</string>
<string name="device_ysl">Xiaomi Redmi Y2</string>
<string name="ysl_maintainer">Sushmit</string>
<string name="device_sweet">Redmi Note 10 Pro</string>
<string name="sweet_maintainer">Niranjan</string>
<string name="device_mojito">Redmi Note 10</string>
@@ -62,6 +60,8 @@
<string name="violet_maintainer">Madhav</string>
<string name="device_umi">Xiaomi Mi 10</string>
<string name="umi_maintainer">Adrian Lam</string>
<string name="device_venus">Xiaomi Mi 11</string>
<string name="venus_maintainer">kota</string>
<string name="device_cepheus">Xiaomi Mi 9</string>
<string name="cepheus_maintainer">Freesoul</string>
<string name="device_vince">Xiaomi Redmi Note 5/5 Plus</string>
@@ -71,7 +71,7 @@
<string name="device_picasso">Xiaomi Redmi K30 5G</string>
<string name="picasso_maintainer">Dinh San</string>
<string name="device_laurel_sprout">Xiaomi Mi A3</string>
<string name="laurel_sprout_maintainer">RAYAN(BASUBHAJANTRI)</string>
<string name="laurel_sprout_maintainer">AbStRaCt_IrIs</string>
<string name="device_davinci">Xiaomi Mi 9T/K20</string>
<string name="davinci_maintainer">Luis Gonzales</string>
<string name="device_raphael">Xiaomi Mi 9T Pro/K20 Pro</string>
@@ -100,9 +100,13 @@
<string name="alioth_maintainer">revolwoc/hungphan2001</string>
<string name="device_santoni">Xiaomi Redmi 4X</string>
<string name="santoni_maintainer">EvilAnsh</string>
<string name="device_ysl">Xiaomi Redmi S2</string>
<string name="ysl_maintainer">Iris</string>
<!-- Realme Device maintainers -->
<string name="device_RMX1971">Realme 5 Pro</string>
<string name="device_RMX3461">Realme 9 SE 5g</string>
<string name="RMX3461_maintainer">Dhruv00</string>
<string name="device_RMX1971">Realme 5 Pro</string>
<string name="RMX1971_maintainer">Samba Siva Rao K</string>
<string name="device_RMX1901">Realme RMX1901</string>
<string name="RMX1901_maintainer">Ritish</string>
@@ -113,14 +117,15 @@
<string name="device_RMX1911">Realme 5 Series</string>
<string name="RMX1911_maintainer">Christopher K. Irvine</string>
<string name="device_RMX1851">Realme 3 pro</string>
<string name="RMX1851_maintainer">Nikhil7001</string>
<string name="RMX1851_maintainer">Cykeek</string>
<string name="device_RMX1801">Realme 2 pro</string>
<string name="RMX1801_maintainer">Shazu_xD</string>
<string name="device_RMX1805">Realme 2/C1</string>
<string name="RMX1805_maintainer">AbhinavVermabest</string>
<string name="device_RM6785">Realme 6/6i(Indian)/6s/7/Narzo/Narzo20Pro/Narzo30 4G</string>
<string name="RM6785_maintainer">Pain</string>
<string name="RM6785_maintainer">ꪖꪀ𝘴ꫝ|邪惡的</string>
<string name="device_RMX3360">Realme GT Master Edition</string>
<string name="RMX3360_maintainer">X-R-P</string>
<!-- Asus Device maintainers -->
<string name="device_X00T">Asus ZenFone Max Pro M1</string>
<string name="X00T_maintainer">NotHarshhaa</string>
@@ -131,9 +136,9 @@
<!-- Oneplus Device maintainers -->
<string name="device_enchilada">Oneplus 6</string>
<string name="enchilada_maintainer">Zahid M</string>
<string name="enchilada_maintainer">Vikas yaduvanshi</string>
<string name="device_fajita">Oneplus 6T</string>
<string name="fajita_maintainer">Chandu</string>
<string name="fajita_maintainer">Vikas yaduvanshi</string>
<string name="device_hotdogb">Oneplus 7T</string>
<string name="hotdogb_maintainer">Addy</string>
<string name="device_guacamole">Oneplus 7 Pro</string>
@@ -152,4 +157,9 @@
<!-- Motorola Device maintainers -->
<string name="device_chef">Motorola One Power</string>
<string name="chef_maintainer">Rushi Ranpise</string>
<!-- Samsung Device maintainers -->
<string name="samsung_devices">Samsung</string>
<string name="device_s10_n10_series">Galaxy S10 / Galaxy N10 Series</string>
<string name="s10_n10_series_maintainer">FrEeRuNnEr4EvEr</string>
</resources>

File diff suppressed because it is too large Load Diff

View File

@@ -23,4 +23,46 @@
<dimen name="fod_picker_item_padding">20dp</dimen>
<color name="option_border_default">#5f6368</color>
<style name="ColorPickerStyle" parent="Theme.MaterialComponents.BottomSheetDialog">
<item name="colorPrimary">@*android:color/surface_highlight_light</item>
<item name="colorPrimaryDark">@*android:color/primary_device_default_dark</item>
<item name="colorAccent">@*android:color/accent_device_default_light</item>
<item name="android:fontFamily">@*android:string/config_headlineFontFamilyMedium</item>
<item name="android:textColor">?android:attr/textColorSecondary</item>
</style>
<style name="ColorPickerSeekBarStyle" parent="Widget.AppCompat.SeekBar">
<item name="android:layout_marginTop">30dp</item>
<item name="android:paddingStart">16dp</item>
<item name="android:paddingEnd">18dp</item>
<item name="android:maxHeight">8dp</item>
<item name="android:progressDrawable">@drawable/color_picker_seekbar_background</item>
<item name="android:thumb">@drawable/color_picker_seekbar_thumb</item>
<item name="android:splitTrack">false</item>
</style>
<style name="ColorPickerRadioButtonStyle">
<item name="android:paddingTop">12dp</item>
<item name="android:paddingBottom">12dp</item>
<item name="android:buttonTint">?android:attr/colorAccent</item>
<item name="android:textColor">?android:attr/textColorSecondary</item>
</style>
<style name="ColorPickerButtonStyle">
<item name="android:background">@android:color/transparent</item>
<item name="android:minWidth">0dp</item>
<item name="android:minHeight">0dp</item>
<item name="android:padding">8dp</item>
<item name="android:textColor">?android:attr/textColorSecondary</item>
</style>
<style name="ColorPickerEditTextStyle">
<item name="android:gravity">center</item>
<item name="android:inputType">textCapCharacters|textNoSuggestions</item>
<item name="android:importantForAutofill">no</item>
<item name="android:textCursorDrawable">@null</item>
<item name="android:imeOptions">actionDone</item>
<item name="android:singleLine">true</item>
</style>
</resources>

View File

@@ -1,34 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2021 Yet Another AOSP 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"
android:title="@string/always_on_display_schedule_title"
xmlns:settings="http://schemas.android.com/apk/res/com.android.settings">
<com.cherish.settings.preferences.SecureSettingListPreference
android:key="doze_always_on_auto_mode"
android:title="@string/night_display_auto_mode_title"
android:dialogTitle="@string/night_display_auto_mode_title"
android:entries="@array/doze_always_on_auto_mode_entries"
android:entryValues="@array/doze_always_on_auto_mode_values"
android:persistent="false" />
<Preference
android:key="doze_always_on_auto_since"
android:title="@string/night_display_start_time_title" />
<Preference
android:key="doze_always_on_auto_till"
android:title="@string/night_display_end_time_title" />
</PreferenceScreen>

View File

@@ -0,0 +1,94 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (C) 2017 - 2021 The Project-Xtended
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/ambient_text_category_title">
<PreferenceCategory
android:title="@string/ambient_text_category" />
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="ambient_text"
android:title="@string/ambient_text_title"
android:summary="@string/ambient_text_summary"
android:defaultValue="false" />
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="ambient_text_animation"
android:title="@string/ambient_text_animation_title"
android:summary="@string/ambient_text_animation_summary"
android:dependency="ambient_text"
android:defaultValue="false" />
<com.cherish.settings.preferences.SystemSettingEditTextPreference
android:key="ambient_text_string"
android:title="@string/ambient_text_string_title"
android:dependency="ambient_text"
android:defaultValue="#Welcome To Cherish" />
<ListPreference
android:key="ambient_text_type_color"
android:title="@string/ambient_text_type_color_title"
android:dialogTitle="@string/ambient_text_type_color_title"
android:entries="@array/ambient_text_type_color_entries"
android:entryValues="@array/ambient_text_type_color_values"
android:summary="%s"
android:defaultValue="0"
android:dependency="ambient_text"
android:persistent="false" />
<net.margaritov.preference.colorpicker.ColorPickerPreference
android:key="ambient_text_color"
android:title="@string/ambient_text_color_title"
android:persistent="false"
settings:defaultColorValue="0xFF880000" />
<com.cherish.settings.preferences.SystemSettingSeekBarPreference
android:key="ambient_text_size"
android:title="@string/ambient_text_size_title"
android:max="100"
android:min="1"
android:dependency="ambient_text"
settings:units="dp"
android:defaultValue="30" />
<ListPreference
android:key="ambient_text_alignment"
android:title="@string/ambient_text_align_title"
android:summary="%s"
android:dialogTitle="@string/ambient_text_align_title"
android:entries="@array/ambient_text_alignment_entries"
android:entryValues="@array/ambient_text_alignment_values"
android:defaultValue="3"
android:dependency="ambient_text"
android:persistent="false" />
<PreferenceCategory
android:title="@string/ambient_image_category" />
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="ambient_image"
android:title="@string/ambient_image_title"
android:defaultValue="false" />
<Preference
android:key="file_ambient_select"
android:title="@string/file_header_select_title"
android:summary="@string/file_header_select_summary"
android:persistent="false"
android:dependency="ambient_image" >
</Preference>
</PreferenceScreen>

View File

@@ -1,35 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (C) 2020 The CherishOS 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_shortcuts">
<PreferenceCategory
android:key="lockscreen_tuner"
android:title="@string/ls_tuner">
<Preference
android:title="@string/lockscreen_tuner_title" >
<intent android:action="android.intent.action.MAIN"
android:targetPackage="com.android.systemui"
android:targetClass="com.android.systemui.tuner.LockscreenActivity" />
</Preference>
</PreferenceCategory>
</PreferenceScreen>

View File

@@ -66,6 +66,15 @@
android:data="https://t.me/P4042" />
</Preference>
<Preference
android:title="@string/venus_maintainer"
android:summary="@string/device_venus"
android:icon="@drawable/ic_devs_phone" >
<intent
android:action="android.intent.action.VIEW"
android:data="https://t.me/kota15th" />
</Preference>
<Preference
android:title="@string/beryllium_maintainer"
android:summary="@string/device_beryllium"
@@ -197,7 +206,7 @@
android:icon="@drawable/ic_devs_phone" >
<intent
android:action="android.intent.action.VIEW"
android:data="https://github.com/hungphan2001" />
android:data="https://t.me/moonichanwa" />
</Preference>
<Preference
@@ -344,15 +353,6 @@
android:data="https://t.me/bruh_its_your_brother" />
</Preference>
<Preference
android:title="@string/ysl_maintainer"
android:summary="@string/device_ysl"
android:icon="@drawable/ic_devs_phone" >
<intent
android:action="android.intent.action.VIEW"
android:data="https://t.me/uchihasushmit" />
</Preference>
</PreferenceCategory>
<PreferenceCategory
@@ -395,7 +395,7 @@
android:icon="@drawable/ic_devs_phone" >
<intent
android:action="android.intent.action.VIEW"
android:data="https://t.me/zahidmgsk" />
android:data="https://t.me/OptimussPriime" />
</Preference>
<Preference
android:title="@string/fajita_maintainer"
@@ -403,7 +403,7 @@
android:icon="@drawable/ic_devs_phone" >
<intent
android:action="android.intent.action.VIEW"
android:data="https://t.me/zahidmgsk" />
android:data="https://t.me/OptimussPriime" />
</Preference>
<Preference
@@ -462,9 +462,18 @@
android:icon="@drawable/ic_devs_phone" >
<intent
android:action="android.intent.action.VIEW"
android:data="https://t.me/P_AA_ii_N" />
android:data="https://t.me/EvilAnsh" />
</Preference>
<Preference
android:title="@string/RMX3461_maintainer"
android:summary="@string/device_RMX3461"
android:icon="@drawable/ic_devs_phone">
<intent
android:action="android.intent.action.VIEW"
android:data="https://t.me/DRvP00" />
</Preference>
<Preference
android:title="@string/RMX1971_maintainer"
android:summary="@string/device_RMX1971"
@@ -516,7 +525,7 @@
android:icon="@drawable/ic_devs_phone" >
<intent
android:action="android.intent.action.VIEW"
android:data="https://t.me/Nikhil7001" />
android:data="https://t.me/CykeekBuilds" />
</Preference>
<Preference
@@ -536,6 +545,14 @@
android:action="android.intent.action.VIEW"
android:data="https://t.me/RMX1801" />
</Preference>
<Preference
android:title="@string/RMX3360_maintainer"
android:summary="@string/device_RMX3360"
android:icon="@drawable/ic_devs_phone" >
<intent
android:action="android.intent.action.VIEW"
android:data="https://t.me/itsXRP" />
</Preference>
</PreferenceCategory>
<PreferenceCategory
@@ -564,5 +581,27 @@
android:action="android.intent.action.VIEW"
android:data="https://t.me/saucefinder" />
</Preference>
<Preference
android:title="@string/ysl_maintainer"
android:summary="@string/device_ysl"
android:icon="@drawable/ic_devs_phone" >
<intent
android:action="android.intent.action.VIEW"
android:data="https://t.me/Iris041" />
</Preference>
</PreferenceCategory>
<PreferenceCategory
android:key="samsung_devices"
android:title="@string/samsung_devices" >
<Preference
android:title="@string/s10_n10_series_maintainer"
android:summary="@string/device_s10_n10_series"
android:icon="@drawable/ic_devs_phone" >
<intent
android:action="android.intent.action.VIEW"
android:data="https://t.me/FreeRunner4ever" />
</Preference>
</PreferenceCategory>
</PreferenceScreen>

View File

@@ -20,37 +20,42 @@
android:title="@string/animations_title"
xmlns:settings="http://schemas.android.com/apk/res/com.android.settings" >
<PreferenceCategory
android:key="quick_settings_animations"
android:title="@string/qs_tile_animation_title">
<ListPreference
android:key="power_menu_animations"
android:title="@string/power_menu_animation_title"
android:dialogTitle="@string/power_menu_animation_dialog_title"
android:entries="@array/power_menu_animations_entries"
android:entryValues="@array/power_menu_animations_values"
android:summary="%s"
android:persistent="false" />
<ListPreference
android:key="qs_tile_animation_style"
<PreferenceCategory
android:title="@string/qs_tile_animation_category_title">
<com.cherish.settings.preferences.SystemSettingIntListPreference
android:key="anim_tile_style"
android:title="@string/qs_tile_animation_style_title"
android:entries="@array/qs_tile_animation_style_entries"
android:entryValues="@array/qs_tile_animation_style_values"
android:persistent="false" />
android:summary="%s"
android:defaultValue="0" />
<ListPreference
android:key="qs_tile_animation_duration"
<com.cherish.settings.preferences.SystemSettingIntListPreference
android:key="anim_tile_duration"
android:title="@string/qs_tile_animation_duration_title"
android:entries="@array/qs_tile_animation_duration_entries"
android:entryValues="@array/qs_tile_animation_duration_values"
android:persistent="false" />
android:summary="%s"
android:defaultValue="2000" />
<ListPreference
android:key="qs_tile_animation_interpolator"
<com.cherish.settings.preferences.SystemSettingIntListPreference
android:key="anim_tile_interpolator"
android:title="@string/qs_tile_animation_interpolator_title"
android:entries="@array/qs_tile_animation_interpolator_entries"
android:entryValues="@array/qs_tile_animation_interpolator_values"
android:persistent="false" />
</PreferenceCategory>
<com.cherish.settings.preferences.SystemSettingListPreference
android:key="screen_off_animation"
android:title="@string/screen_off_animation_title"
android:entries="@array/screen_off_animation_entries"
android:entryValues="@array/screen_off_animation_values"
android:summary="%s"
android:defaultValue="0" />
</PreferenceCategory>
</PreferenceScreen>

View File

@@ -18,15 +18,14 @@
android:title="@string/button_title"
xmlns:settings="http://schemas.android.com/apk/res/com.android.settings">
<SwitchPreference
<!-- SwitchPreference
android:key="navbar_visibility"
android:title="@string/navigation_bar_title"
android:summary="@string/navigation_bar_summary" />
android:summary="@string/navigation_bar_summary" />-->
<PreferenceCategory
android:key="navigation_keys"
android:title="@string/navigation_title"
android:dependency="navbar_visibility">
android:title="@string/navigation_bar_category">
<Preference
android:key="gesture_system_navigation_input_summary"
@@ -35,11 +34,17 @@
settings:controller="com.android.settings.gestures.SystemNavigationPreferenceController"
settings:keywords="@string/keywords_system_navigation" />
<com.cherish.settings.preferences.SystemSettingSwitchPreference
<!-- com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="navigation_bar_menu_arrow_keys"
android:title="@string/navigation_bar_arrow_keys_title"
android:summary="@string/navigation_bar_arrow_keys_summary"
android:defaultValue="false" />
android:defaultValue="false" />-->
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="navigation_bar_compact_layout"
android:title="@string/navigation_bar_compact_layout_title"
android:summary="@string/navigation_bar_compact_layout_summary"
android:defaultValue="false" />-->
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="navigation_bar_inverse"
@@ -47,34 +52,38 @@
android:defaultValue="0"
settings:controller="com.cherish.settings.fragments.NavBarInversePreferenceController" />
<com.android.settingslib.widget.FooterPreference
android:key="navigation_bar_footer_preference"
android:selectable="false"
android:title="@string/navigation_bar_help_text" />
</PreferenceCategory>
<PreferenceCategory
android:key="volume_category"
android:title="@string/volume_category">
<com.cherish.settings.preferences.SecureSettingSwitchPreference
android:key="volume_panel_on_left"
android:title="@string/volume_panel_on_left_title"
android:summary="@string/volume_panel_on_left_summary"
android:defaultValue="false" />
<Preference
android:key="vol_steps"
android:title="@string/volume_steps_fragment_title"
android:summary="@string/volume_steps_summary"
android:fragment="com.cherish.settings.fragments.VolumeStepsFragment" />
android:fragment="com.cherish.settings.fragments.VolumeRockerSettings" />
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="swap_volume_buttons"
android:title="@string/swap_volume_buttons_title"
android:summary="@string/swap_volume_buttons_summary"
android:defaultValue="false" />
android:key="volume_rocker_wake"
android:summary="@string/volume_rocker_wake_summary"
android:title="@string/volume_rocker_wake_title"
android:defaultValue="false" />
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="volume_rocker_wake"
android:summary="@string/volume_rocker_wake_summary"
android:title="@string/volume_rocker_wake_title"
android:defaultValue="false" />
<com.cherish.settings.preferences.SystemSettingListPreference
android:key="volume_key_cursor_control"
android:summary="%s"
android:title="@string/volume_key_cursor_control_title"
android:dialogTitle="@string/volume_key_cursor_control_title"
android:entries="@array/volume_key_cursor_control_entries"
android:entryValues="@array/volume_key_cursor_control_values"
android:defaultValue="0" />
</PreferenceCategory>
@@ -86,17 +95,21 @@
android:key="hardware_keys_disable"
android:title="@string/hardware_keys_disable_title" />
<com.cherish.settings.preferences.SecureSettingSwitchPreference
android:key="swap_capacitive_keys"
android:title="@string/swap_capacitive_keys_title"
android:summary="@string/swap_capacitive_keys_summary"
android:defaultValue="false" />
</PreferenceCategory>
<PreferenceCategory
<!-- PreferenceCategory
android:key="button_backlight_options_category"
android:title="@string/button_backlight_options_category">
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="button_backlight_enable"
android:title="@string/button_backlight_enable_title"
android:defaultValue="true" />
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="custom_button_use_screen_brightness"
android:title="@string/button_link_brightness"
@@ -104,7 +117,6 @@
android:defaultValue="false"
android:dependency="button_backlight_enable"
android:disableDependentsState="true" />
<com.cherish.settings.preferences.CustomSeekBarPreference
android:key="button_manual_brightness_new"
android:title="@string/button_manual_brightness"
@@ -112,7 +124,6 @@
settings:min="1"
android:persistent="false"
android:dependency="custom_button_use_screen_brightness" />
<com.cherish.settings.preferences.CustomSeekBarPreference
android:key="button_timeout"
android:title="@string/button_timeout_title"
@@ -120,15 +131,13 @@
settings:min="0"
android:persistent="false"
android:dependency="button_backlight_enable" />
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="button_backlight_on_touch_only"
android:title="@string/button_backlight_on_touch_only_title"
android:summary="@string/button_backlight_on_touch_only_summary"
android:defaultValue="false"
android:dependency="button_backlight_enable" />
</PreferenceCategory>
</PreferenceCategory>-->
<PreferenceCategory
android:key="back_key"
@@ -250,11 +259,5 @@
</PreferenceCategory>
<ListPreference
android:key="torch_power_button_gesture"
android:title="@string/torch_power_button_gesture_title"
android:entries="@array/torch_power_button_gesture_entries"
android:entryValues="@array/torch_power_button_gesture_values" />
</PreferenceScreen>

View File

@@ -21,42 +21,105 @@
<PreferenceCategory
android:title="@string/lockscreen_gesture_title">
<com.cherish.settings.preferences.SystemSettingSwitchPreference
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="double_tap_sleep_lockscreen"
android:title="@string/double_tap_to_sleep_lockscreen_title"
android:summary="@string/double_tap_to_sleep_lockscreen_summary"
android:title="@string/double_tap_sleep_lockscreen_title"
android:summary="@string/double_tap_sleep_lockscreen_summary"
android:defaultValue="true" />
<com.cherish.settings.preferences.SecureSettingSwitchPreference
android:key="doze_pulse_on_double_tap"
android:title="@string/double_tap_on_doze_to_wake_title"
android:summary="@string/double_tap_on_doze_to_wake_summary"
<ListPreference
android:key="torch_power_button_gesture"
android:title="@string/torch_power_button_gesture_title"
android:entries="@array/torch_power_button_gesture_entries"
android:entryValues="@array/torch_power_button_gesture_values" />
<com.cherish.settings.preferences.SecureSettingSwitchPreference
android:key="power_menu_hide_on_secure"
android:title="@string/power_menu_hide_on_secure_title"
android:summary="@string/power_menu_hide_on_secure_summary"
android:defaultValue="false" />
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="hide_lockscreen_status_bar"
android:title="@string/hide_lockscreen_status_bar_title"
android:summary="@string/hide_lockscreen_status_bar_summary"
android:defaultValue="false" />
</PreferenceCategory>
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="lockscreen_battery_info"
android:title="@string/lockscreen_charging_info_title"
android:summary="@string/lockscreen_charging_info_summary"
android:defaultValue="true" />
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="lockscreen_weather_enabled"
android:title="@string/lockscreen_weather_title"
android:summary="@string/lockscreen_weather_summary"/>
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="lockscreen_weather_location"
android:title="@string/lockscreen_weather_location_title"
android:summary="@string/lockscreen_weather_location_summary"
android:dependency="lockscreen_weather_enabled" />
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="lockscreen_weather_style"
android:title="@string/lockscreen_weather_style_title"
android:summary="@string/lockscreen_weather_style_summary"
android:dependency="lockscreen_weather_enabled" />
<!-- Udfps options -->
<PreferenceCategory
android:key="udfps_category"
android:title="@string/udfps_category">
<Preference
android:key="udfps_settings"
android:title="@string/udfps_settings_title"
android:summary="@string/udfps_settings_summary"
android:fragment="com.cherish.settings.fragments.Udfps" />
</PreferenceCategory>
<Preference
android:key="always_on_display_schedule"
android:title="@string/always_on_display_schedule_title"
android:fragment="com.cherish.settings.fragments.AODSchedule" />
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="enable_ripple_effect"
android:title="@string/enable_fingerprint_ripple_effect_title"
android:summary="@string/enable_fingerprint_ripple_effect_summary"
android:defaultValue="true" />
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="lockscreen_battery_info"
android:title="@string/lockscreen_battery_info_title"
android:summary="@string/lockscreen_battery_info_summary"
android:defaultValue="true" />
<PreferenceCategory
android:key="lockscreen_ui_finterprint_category"
android:title="@string/fingerprint_category">
<SwitchPreference
android:key="fingerprint_success_vib"
android:title="@string/fprint_success_vib_title"
android:summary="@string/fprint_success_vib_summary"
android:persistent="true" />
<SwitchPreference
android:key="fingerprint_error_vib"
android:title="@string/fprint_error_vib_title"
android:summary="@string/fprint_error_vib_summary"
android:persistent="true" />
</PreferenceCategory>
<PreferenceCategory
android:key="lockscreen_media_category"
android:title="@string/lockscreen_media_category">
android:key="lockscreen_media_art_options"
android:title="@string/lockscreen_media_art_options_title">
<com.cherish.settings.preferences.SecureSettingSwitchPreference
android:key="lockscreen_media_metadata"
android:title="@string/media_art_title"
android:summary="@string/media_art_summary"
android:defaultValue="true" />
android:defaultValue="false" />
<com.cherish.settings.preferences.SystemSettingListPreference
<com.cherish.settings.preferences.SystemSettingListPreference
android:key="lockscreen_albumart_filter"
android:title="@string/lockscreen_albumart_filter_title"
android:entries="@array/lockscreen_albumart_filter_entries"
@@ -71,29 +134,22 @@
android:summary="@string/pulse_settings_summary"
android:fragment="com.cherish.settings.fragments.sound.PulseSettings" />
<com.cherish.settings.preferences.SystemSettingSeekBarPreference
android:key="ls_media_filter_blur_radius"
android:title="@string/lockscreen_albumart_filter_blur_radius_title"
android:dependency="lockscreen_media_metadata"
android:defaultValue="125"
android:max="125"
settings:min="2" />
<com.cherish.settings.preferences.SystemSettingSeekBarPreference
android:key="ls_media_artwork_fade_percent"
android:title="@string/ls_media_artwork_fade_percent_title"
android:dependency="lockscreen_media_metadata"
android:defaultValue="30"
android:max="80"
settings:min="1" />
</PreferenceCategory>
<!-- <PreferenceCategory
android:key="lockscreen_category"
android:title="@string/ls_category">
<Preference
android:key="lockscreen_shortcuts"
android:fragment="com.cherish.settings.fragments.LockscreenShortcuts"
android:title="@string/lockscreen_shortcuts"
android:summary="@string/ls_shortcut_summary" />
</PreferenceCategory> -->
<PreferenceCategory
android:key="udfps_category"
android:title="@string/udfps_category">
<Preference
android:key="udfps_settings"
android:title="@string/udfps_settings_title"
android:summary="@string/udfps_settings_summary"
android:fragment="com.cherish.settings.fragments.UdfpsSettings" />
</PreferenceCategory>
</PreferenceScreen>

View File

@@ -18,11 +18,12 @@
android:title="@string/misc_title"
xmlns:settings="http://schemas.android.com/apk/res/com.android.settings">
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="charging_animation"
android:title="@string/charging_animation_title"
android:summary="@string/charging_animation_summary"
android:defaultValue="false" />
<!-- Launch music player when headset is connected -->
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="headset_connect_player"
android:title="@string/headset_connect_player_title"
android:summary="@string/headset_connect_player_summary"
android:defaultValue="false" />
<com.cherish.settings.preferences.SecureSettingSwitchPreference
android:key="window_ignore_secure"
@@ -30,48 +31,56 @@
android:summary="@string/laboratory_ignore_window_secure_summary"
android:defaultValue="false"/>
<com.cherish.settings.preferences.SecureSettingSwitchPreference
android:key="pm_downgrade_allowed"
android:title="@string/laboratory_app_downgrade_title"
android:summary="@string/laboratory_app_downgrade_summary"
android:defaultValue="false"/>
<!-- Gaming mode -->
<!-- Smart Charging -->
<Preference
android:key="gaming_mode"
android:title="@string/gaming_mode_title"
android:summary="@string/gaming_mode_summary">
android:key="smart_charging"
android:title="@string/smart_charging_title"
android:summary="@string/smart_charging_summary"
android:fragment="com.cherish.settings.fragments.SmartCharging"/>
<!-- Smart Pixels -->
<Preference
android:key="smart_pixels"
android:title="@string/smart_pixels_title"
android:summary="@string/smart_pixels_summary"
android:fragment="com.cherish.settings.fragments.SmartPixels" />
<!-- Unlock FPS for specific games -->
<SwitchPreference
android:key="use_games_spoof"
android:title="@string/use_games_spoof_title"
android:summary="@string/use_games_spoof_summary" />
<!-- Unlimited Photos storage -->
<SwitchPreference
android:key="use_photos_spoof"
android:title="@string/use_photos_spoof_title"
android:summary="@string/use_photos_spoof_summary"
android:defaultValue="true" />
<!-- Weather -->
<Preference
android:title="@string/weather_settings_title"
android:summary="@string/weather_settings_summary">
<intent
android:action="android.intent.action.MAIN"
android:targetPackage="org.exthmui.game"
android:targetClass="org.exthmui.game.ui.MainActivity" />
android:targetPackage="org.omnirom.omnijaws"
android:targetClass="org.omnirom.omnijaws.SettingsActivity" />
</Preference>
<PreferenceCategory
android:key="spoof_category"
android:title="@string/spoof_title">
<!-- Unlimited Photos storage -->
<SwitchPreference
android:key="use_photos_spoof"
android:title="@string/use_photos_spoof_title"
android:summary="@string/use_photos_spoof_summary"
android:defaultValue="true" />
<!-- Unlock FPS for specific games -->
<SwitchPreference
android:key="use_games_spoof"
android:title="@string/use_games_spoof_title"
android:summary="@string/use_games_spoof_summary" />
<!-- Unlock higher quality streams for specific apps -->
<SwitchPreference
android:key="use_stream_spoof"
android:title="@string/use_stream_spoof_title"
android:summary="@string/use_stream_spoof_summary"
android:defaultValue="true" />
</PreferenceCategory>
<!-- Parallel space -->
<Preference
android:key="parallel_space"
android:title="@string/laboratory_parallel_space_title"
android:summary="@string/laboratory_parallel_space_summary">
<intent
android:targetPackage="ink.kscope.parallelspace"
android:targetClass="ink.kscope.parallelspace.MainActivity" />
</Preference>
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="click_partial_screenshot"
android:title="@string/click_partial_screenshot_title"
android:summary="@string/click_partial_screenshot_summary"
android:defaultValue="false" />
</PreferenceScreen>

View File

@@ -1,48 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (C) 2020-22 The CherishOS Project
SPDX-License-Identifier: Apache-2.0
-->
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:settings="http://schemas.android.com/apk/res/com.android.settings"
android:title="@string/monet_engine_title">
<com.cherish.settings.preferences.SecureSettingSwitchPreference
android:key="monet_engine_custom_color"
android:title="@string/monet_engine_custom_color_title"
android:summary="@string/monet_engine_custom_color_summary"
android:defaultValue="false" />
<net.margaritov.preference.colorpicker.ColorPickerPreference
android:key="monet_engine_color_override"
android:title="@string/monet_engine_color_override_title"
android:dependency="monet_engine_custom_color"
android:defaultValue="0xffffff" />
<com.cherish.settings.preferences.SecureSettingSeekBarPreference
android:key="monet_engine_white_luminance_user"
android:title="@string/monet_engine_white_luminance_user_title"
android:defaultValue="425"
android:max="1000"
settings:min="200"
settings:interval="25"/>
<com.cherish.settings.preferences.SecureSettingSwitchPreference
android:key="monet_engine_accurate_shades"
android:title="@string/monet_engine_accurate_shades_title"
android:defaultValue="true" />
<com.cherish.settings.preferences.SecureSettingSeekBarPreference
android:key="monet_engine_chroma_factor"
android:title="@string/monet_engine_chroma_factor_title"
android:defaultValue="100"
android:max="400"
settings:min="50"
settings:interval="25"/>
<com.cherish.settings.preferences.SecureSettingSwitchPreference
android:key="monet_engine_linear_lightness"
android:title="@string/monet_engine_linear_lightness_title"
android:defaultValue="false" />
</PreferenceScreen>

View File

@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (C) 2019-2022 The CherishOS
SPDX-License-Identifier: Apache-2.0
-->
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:settings="http://schemas.android.com/apk/res/com.android.settings"
android:title="@string/network_traffic_title">
<com.cherish.settings.preferences.SystemSettingMainSwitchPreference
android:key="network_traffic_state"
android:title="@string/network_traffic_master_switch_title"
android:defaultValue="false" />
<PreferenceCategory
android:title="@string/network_options_title">
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="network_traffic_autohide_threshold"
android:title="@string/network_traffic_autohide_title"
android:summary="@string/network_traffic_autohide_summary"
android:dependency="network_traffic_state"
android:defaultValue="false" />
</PreferenceCategory>
</PreferenceScreen>

View File

@@ -18,65 +18,110 @@
android:title="@string/notifications_title"
xmlns:settings="http://schemas.android.com/apk/res/com.android.settings">
<PreferenceCategory
android:key="incall_vib_options"
android:title="@string/incall_vibration_category">
<PreferenceCategory
android:key="pulse_ambient_light_category"
android:title="@string/pulse_ambient_light_category" >
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="vibrate_on_connect"
android:icon="@drawable/ic_vibrate"
android:title="@string/incall_vibrate_connect_title"
android:defaultValue="true" />
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="vibrate_on_callwaiting"
android:icon="@drawable/ic_vibrate"
android:title="@string/incall_vibrate_call_wait_title"
android:defaultValue="true" />
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="vibrate_on_disconnect"
android:icon="@drawable/ic_vibrate"
android:title="@string/incall_vibrate_disconnect_title"
android:defaultValue="true" />
</PreferenceCategory>
<PreferenceCategory
android:title="@string/flashlight_category">
<com.cherish.settings.preferences.SystemSettingListPreference
android:key="flashlight_on_call"
android:title="@string/flashlight_on_call_title"
android:entries="@array/flashlight_on_call_entries"
android:entryValues="@array/flashlight_on_call_values"
android:defaultValue="0" />
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="flashlight_on_call_ignore_dnd"
android:title="@string/flashlight_on_call_ignore_dnd_title"
android:summary="@string/flashlight_on_call_ignore_dnd_summary"
android:key="pulse_ambient_light"
android:title="@string/pulse_ambient_light_title"
android:summary="@string/pulse_ambient_light_summary"
android:defaultValue="false" />
<com.cherish.settings.preferences.CustomSeekBarPreference
android:key="flashlight_on_call_rate"
android:title="@string/flashlight_on_call_rate_title"
android:summary="@string/flashlight_on_call_rate_summary"
android:max="5"
settings:min="1"
settings:defaultValue="1"
settings:units="Hz" />
</PreferenceCategory>
<PreferenceCategory
android:key="notifications_general_category"
android:title="@string/general_category">
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="ambient_light_pulse_for_all"
android:title="@string/pulse_ambient_light_show_always_title"
android:summary="@string/pulse_ambient_light_show_always_summary"
android:defaultValue="false" />
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="notification_guts_kill_app_button"
android:title="@string/notification_guts_kill_app_button_title"
android:summary="@string/notification_guts_kill_app_button_summary"
android:defaultValue="false" />
android:key="ambient_notification_light_enabled"
android:title="@string/ambient_notification_light_enabled_title"
android:summary="@string/ambient_notification_light_enabled_summary"
android:defaultValue="false" />
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="ambient_notification_light_hide_aod"
android:title="@string/ambient_notification_light_hide_aod_title"
android:summary="@string/ambient_notification_light_hide_aod_summary"
android:defaultValue="false"
android:dependency="ambient_notification_light_enabled" />
<com.cherish.settings.preferences.SystemSettingListPreference
android:key="ambient_notification_color_mode"
android:title="@string/pulse_ambient_light_color_mode_title"
android:entries="@array/pulse_ambient_light_color_mode_entries"
android:entryValues="@array/pulse_ambient_light_color_mode_values"
android:summary="%s"
android:defaultValue="0" />
<net.margaritov.preference.colorpicker.ColorPickerPreference
android:key="ambient_notification_light_color"
android:title="@string/pulse_ambient_light_color_title"
android:defaultValue="0xFFFFFFFF" />
<com.cherish.settings.preferences.SystemSettingListPreference
android:key="pulse_light_layout_style"
android:title="@string/pulse_light_layout_style_title"
android:entries="@array/pulse_light_layout_style_entries"
android:entryValues="@array/pulse_light_layout_style_values"
android:summary="%s"
android:defaultValue="0" />
<com.cherish.settings.preferences.SystemSettingListPreference
android:key="ambient_light_layout"
android:title="@string/pulse_ambient_light_layout_title"
android:entries="@array/pulse_ambient_light_layout_entries"
android:entryValues="@array/pulse_ambient_light_layout_values"
android:summary="%s"
android:defaultValue="1" />
<com.cherish.settings.preferences.SystemSettingSeekBarPreference
android:key="pulse_ambient_light_width"
android:title="@string/pulse_ambient_light_width_title"
android:max="150"
android:min="1"
settings:unitsLeft=""
settings:unitsRight="px"
android:defaultValue="125" />
<com.cherish.settings.preferences.CustomSeekBarPreference
android:key="ambient_notification_light_duration"
android:title="@string/pulse_ambient_light_duration_title"
android:max="5"
settings:min="1"
settings:defaultValue="2"
settings:units="sec" />
<com.cherish.settings.preferences.CustomSeekBarPreference
android:key="ambient_notification_light_repeats"
android:title="@string/pulse_ambient_light_repeat_count_title"
android:max="10"
settings:min="0"
settings:defaultValue="0" />
<com.cherish.settings.preferences.SystemSettingListPreference
android:key="ambient_light_repeat_direction"
android:title="@string/pulse_ambient_light_repeat_direction_title"
android:entries="@array/pulse_ambient_light_repeat_direction_entries"
android:entryValues="@array/pulse_ambient_light_repeat_direction_values"
android:summary="%s"
android:defaultValue="0" />
<com.cherish.settings.preferences.SystemSettingListPreference
android:key="ambient_notification_light_timeout"
android:title="@string/ambient_notification_light_timeout_title"
android:entries="@array/ambient_notification_light_timeout_entries"
android:entryValues="@array/ambient_notification_light_timeout_values"
android:summary="%s"
android:defaultValue="0" />
<Preference
android:key="ambient_customization"
android:title="@string/ambient_text_category_title"
android:summary="@string/ambient_text_category_summary"
android:fragment="com.cherish.settings.fragments.AmbientCustomizations" />
</PreferenceCategory>
<Preference
@@ -84,49 +129,76 @@
android:fragment="com.cherish.settings.fragments.BatteryLightSettings"
android:title="@string/battery_light_settings" />
<!-- Pulse notifications lightning -->
<com.cherish.settings.preferences.SystemSettingMasterSwitchPreference
android:key="pulse_ambient_light"
android:title="@string/pulse_ambient_light_title"
android:summary="@string/pulse_ambient_light_summary"
android:fragment="com.cherish.settings.fragments.EdgeLightningSettings"
android:defaultValue="false" />
<PreferenceCategory
android:key="notifications_category"
android:title="@string/notifications_category_title">
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="pulse_on_new_tracks"
android:title="@string/pulse_on_new_tracks_title"
android:summary="@string/pulse_on_new_tracks_summary"
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="less_boring_heads_up"
android:title="@string/less_boring_heads_up_title"
android:summary="@string/less_boring_heads_up_summary"
android:defaultValue="false" />
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="notification_sound_vib_screen_on"
android:title="@string/notification_sound_vib_screen_on_title"
android:summary="@string/notification_sound_vib_screen_on_summary"
android:defaultValue="true" />
<!-- Alert Slider Notifications -->
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="alert_slider_notifications"
android:title="@string/alert_slider_notifications_title"
android:summary="@string/alert_slider_notifications_summary"
android:defaultValue="true" />
<PreferenceCategory
android:key="headsup_notifications_category"
android:title="@string/headsup_category">
<Preference
android:key="heads_up_notifications"
android:summary="@string/heads_up_notifications_summary"
android:title="@string/heads_up_notifications"
android:fragment="com.cherish.settings.fragments.HeadsUpSettings"/>
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="notification_guts_kill_app_button"
android:title="@string/notification_guts_kill_app_button_title"
android:summary="@string/notification_guts_kill_app_button_summary"
android:defaultValue="false" />
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="less_boring_heads_up"
android:title="@string/less_boring_heads_up_title"
android:summary="@string/less_boring_heads_up_summary"
android:key="toast_icon"
android:order="24"
android:title="@string/toast_icon_title"
android:summary="@string/toast_icon_summary"
android:defaultValue="true"/>
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="reticker_status"
android:title="@string/reticker_title"
android:summary="@string/reticker_summary"
android:defaultValue="false" />
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:dependency="reticker_status"
android:key="reticker_colored"
android:title="@string/reticker_colored_title"
android:summary="@string/reticker_colored_summary"
android:defaultValue="false" />
</PreferenceCategory>
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="notification_headers"
android:title="@string/notification_headers_title"
android:summary="@string/notification_headers_summary"
android:defaultValue="true" />
<PreferenceCategory
android:key="incall_vib_options"
android:title="@string/incall_vibration_category" >
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="toast_icon"
android:title="@string/toast_icon_title"
android:summary="@string/toast_icon_summary"
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="vibrate_on_connect"
android:title="@string/incall_vibrate_connect_title"
android:defaultValue="false" />
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="vibrate_on_callwaiting"
android:title="@string/incall_vibrate_call_wait_title"
android:defaultValue="false" />
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="vibrate_on_disconnect"
android:title="@string/incall_vibrate_disconnect_title"
android:defaultValue="false" />
</PreferenceCategory>
</PreferenceScreen>

View File

@@ -18,11 +18,19 @@
android:title="@string/powermenu_title"
xmlns:settings="http://schemas.android.com/apk/res/com.android.settings">
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="lockscreen_power_menu_disabled"
android:title="@string/lockscreen_power_menu_disabled_title"
android:summary="@string/lockscreen_power_menu_disabled_summary"
android:defaultValue="true" />
<com.cherish.settings.preferences.SystemSettingSeekBarPreference
android:key="transparent_power_menu"
android:title="@string/power_menu_transparency"
android:max="100"
android:min="0"
android:defaultValue="100" />
<com.cherish.settings.preferences.SystemSettingSeekBarPreference
android:key="transparent_power_dialog_dim"
android:title="@string/power_menu_dialog_dim"
android:max="100"
android:min="0"
android:defaultValue="50" />
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="powermenu_power"

View File

@@ -19,62 +19,17 @@
xmlns:settings="http://schemas.android.com/apk/res/com.android.settings">
<PreferenceCategory
android:title="@string/qs_title">
android:title="@string/qs_category">
<com.cherish.settings.preferences.SystemSettingSeekBarPreference
android:key="qs_transparency"
android:title="@string/qs_transparency_title"
android:summary="@string/qs_transparency_summary"
android:defaultValue="10"
settings:interval="1"
android:max="10"
android:min="1" />
<!-- QS date -->
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="show_qs_date"
android:title="@string/qs_date_title"
android:summary="@string/qs_date_summary"
android:defaultValue="true" />
<!-- QS footer text toggle -->
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="qs_footer_text_show"
android:title="@string/qs_footer_text_show_title"
android:defaultValue="false" />
<!-- QS footer text string -->
<com.cherish.settings.preferences.SystemSettingEditTextPreference
android:key="qs_footer_text_string"
android:title="@string/qs_footer_text_string_title"
android:summary="@string/qs_footer_text_string_summary"
android:dependency="qs_footer_text_show"
android:defaultValue="TheKeepLove" />
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="qs_show_battery_estimate"
android:title="@string/qs_show_battery_estimate_title"
android:summary="@string/qs_show_battery_estimate_summary"
android:defaultValue="true"/>
<com.cherish.settings.preferences.SecureSettingSwitchPreference
android:key="enable_camera_privacy_indicator"
android:title="@string/mic_camera_privacy_indicator_title"
android:summary="@string/mic_camera_privacy_indicator_summary"
android:defaultValue="true" />
<com.cherish.settings.preferences.SecureSettingSwitchPreference
android:key="enable_location_privacy_indicator"
android:title="@string/location_privacy_indicator_title"
android:summary="@string/location_privacy_indicator_summary"
android:defaultValue="false" />
<com.cherish.settings.preferences.SecureSettingSwitchPreference
android:key="quick_settings_vibrate"
android:title="@string/quick_settings_vibrate_title"
android:summary="@string/quick_settings_vibrate_summary"
android:defaultValue="false"/>
<com.cherish.settings.preferences.SystemSettingSeekBarPreference
android:key="qs_transparency"
android:title="@string/qs_transparency_title"
android:summary="@string/qs_transparency_summary"
android:defaultValue="100"
settings:interval="1"
settings:units="%"
android:max="100"
android:min="1" />
<ListPreference
android:key="status_bar_quick_qs_pulldown"
@@ -83,33 +38,12 @@
android:entryValues="@array/quick_pulldown_values"
android:defaultValue="0" />
</PreferenceCategory>
<PreferenceCategory
android:key="qs_header_category"
android:title="@string/qs_header_category_title">
<com.cherish.settings.preferences.SystemSettingIntListPreference
android:key="qs_system_info"
android:title="@string/qs_system_info_title"
android:entries="@array/qs_system_info_entries"
android:entryValues="@array/qs_system_info_values"
android:defaultValue="0"
android:summary="%s" />
<com.cherish.settings.preferences.SystemSettingListPreference
android:key="qs_datausage"
android:title="@string/qs_datausage_title"
android:entries="@array/qs_datausage_entries"
android:entryValues="@array/qs_datausage_values"
android:defaultValue="0" />
</PreferenceCategory>
<PreferenceCategory
android:key="quick_settings_brighness_category"
android:title="@string/qs_brightness_slider_category">
android:title="@string/qs_show_brightness_slider_title">
<!-- Brightness slider -->
<com.cherish.settings.preferences.SecureSettingListPreference
android:key="qs_show_brightness_slider"
android:title="@string/qs_show_brightness_slider_title"
@@ -132,4 +66,36 @@
</PreferenceCategory>
<PreferenceCategory
android:title="@string/qs_footer_category">
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="qs_footer_data_usage"
android:title="@string/qs_footer_datausage_title"
android:summary="@string/qs_footer_datausage_summary"
android:defaultValue="false" />
</PreferenceCategory>
<PreferenceCategory
android:key="qs_layout_category"
android:title="@string/qs_layout_category_title">
<com.cherish.settings.preferences.SystemSettingSeekBarPreference
android:key="qs_header_image"
android:title="@string/qs_header_image_title"
android:defaultValue="0"
settings:interval="1"
android:max="74"
android:min="0" />
<Preference
android:key="qs_tile_layout"
android:icon="@drawable/ic_qs_tile"
android:title="@string/qs_tile_layout_title"
android:summary="@string/qs_tile_layout_summary"
android:fragment="com.cherish.settings.fragments.QsTileLayoutSettings" />
</PreferenceCategory>
</PreferenceScreen>

View File

@@ -0,0 +1,56 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (C) 2018-2022 crDroid 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/smart_pixels_title" >
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="smart_pixels_enable"
android:title="@string/smart_pixels_enable_title"
android:summary="@string/smart_pixels_enable_summary"
android:defaultValue="false" />
<com.cherish.settings.preferences.SystemSettingListPreference
android:key="smart_pixels_pattern"
android:entries="@array/smart_pixels_percent_strings"
android:entryValues="@array/smart_pixels_percent_values"
android:defaultValue="5"
android:dependency="smart_pixels_enable"
android:title="@string/smart_pixels_percent"
android:dialogTitle="@string/smart_pixels_percent" />
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="smart_pixels_on_power_save"
android:title="@string/smart_pixels_on_power_save_title"
android:summary="@string/smart_pixels_on_power_save_summary"
android:defaultValue="false" />
<com.cherish.settings.preferences.SystemSettingListPreference
android:key="smart_pixels_shift_timeout"
android:entries="@array/smart_pixels_shift_times"
android:entryValues="@array/smart_pixels_shift_values"
android:defaultValue="4"
android:title="@string/smart_pixels_shift_title"
android:summary="@string/smart_pixels_shift_summary"
android:dialogTitle="@string/smart_pixels_shift_title" />
<com.android.settingslib.widget.FooterPreference
android:key="smart_pixels_footer"
android:selectable="false"
settings:searchable="false" />
</PreferenceScreen>

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (C) 2020-2022 The CherishOS Project
Copyright (C) 2019-2022 The CherishOS Projects
SPDX-License-Identifier: Apache-2.0
-->
<PreferenceScreen

View File

@@ -15,26 +15,40 @@
android:title="@string/statusbar_title"
xmlns:settings="http://schemas.android.com/apk/res/com.android.settings">
<PreferenceCategory
android:title="@string/statusbar_gesture_title">
<com.cherish.settings.preferences.SystemSettingSwitchPreference
<PreferenceCategory
android:title="@string/lockscreen_gesture_title">
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="double_tap_sleep_gesture"
android:title="@string/double_tap_to_sleep_statusbar_title"
android:summary="@string/double_tap_to_sleep_statusbar_summary"
android:title="@string/double_tap_to_sleep_title"
android:summary="@string/double_tap_to_sleep_summary"
android:defaultValue="true" />
</PreferenceCategory>
</PreferenceCategory>
<com.cherish.settings.preferences.SystemSettingListPreference
android:key="statusbar_clock_chip"
android:title="@string/statusbar_clock_chip_title"
android:entries="@array/statusbar_clock_chip_entries"
android:entryValues="@array/statusbar_clock_chip_values"
android:summary="%s"
android:defaultValue="0" />
<Preference
android:key="network_traffic_settings"
android:title="@string/network_traffic_title"
android:summary="@string/network_traffic_summary"
android:fragment="com.cherish.settings.fragments.NetworkTrafficSettings" />
<Preference
android:key="battery_settings"
android:fragment="com.cherish.settings.fragments.StatusBarBattery"
android:title="@string/battery_style_title"
android:summary="@string/battery_style_summary" />
<PreferenceCategory
android:key="statusbar_icons"
android:title="@string/sb_icons">
<Preference
android:key="traffic"
android:fragment="com.cherish.settings.fragments.Traffic"
android:title="@string/traffic_title"
android:summary="@string/traffic_summary" />
android:title="@string/status_bar_icons_category_title">
<com.cherish.settings.preferences.SystemSettingListPreference
android:key="status_bar_clock"
@@ -45,91 +59,102 @@
android:entryValues="@array/status_bar_clock_position_values"
android:defaultValue="2" />
<Preference
<Preference
android:key="clock"
android:title="@string/status_bar_clock_title"
android:summary="@string/status_bar_clock_summary"
android:fragment="com.cherish.settings.fragments.Clock" />
<com.cherish.settings.preferences.SystemSettingSwitchPreference
<Preference
android:key="status_bar_icons"
android:title="@string/status_bar_icons_title"
android:summary="@string/status_bar_icons_summary">
<intent android:action="android.intent.action.MAIN"
android:targetPackage="com.android.systemui"
android:targetClass="com.android.systemui.tuner.StatusbarItemsActivity" />
</Preference>
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="data_disabled_icon"
android:title="@string/data_disabled_icon_title"
android:summary="@string/data_disabled_icon_summary"
android:defaultValue="true"/>
android:defaultValue="true" />
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="show_fourg_icon"
android:title="@string/show_fourg_icon_title"
android:summary="@string/show_fourg_icon_summary"
android:defaultValue="false"/>
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="show_volte_icon"
android:title="@string/volte_switch_title"
android:summary="@string/volte_switch_summary"
android:defaultValue="true" />
<com.cherish.settings.preferences.SystemPropertySwitchPreference
android:key="persist.sys.flags.combined_signal_icons"
android:title="@string/combined_status_bar_signal_icons_title"
android:summary="@string/combined_status_bar_signal_icons_summary"
android:defaultValue="false" />
<com.cherish.settings.preferences.SystemSettingListPreference
android:key="volte_icon_style"
android:title="@string/volte_icon_style_title"
android:entries="@array/volte_icon_type_entries"
android:entryValues="@array/volte_icon_type_values"
android:summary="%s"
android:defaultValue="0"
android:dependency="show_volte_icon"/>
android:key="volte_icon_style"
android:title="@string/volte_icon_style_title"
android:entries="@array/volte_icon_type_entries"
android:entryValues="@array/volte_icon_type_values"
android:summary="%s"
android:defaultValue="1"/>
<com.cherish.settings.preferences.SystemSettingListPreference
android:key="vowifi_icon"
android:title="@string/vowifi_icon_title"
android:entries="@array/vowifi_icon_entries"
android:entryValues="@array/vowifi_icon_values"
android:summary="%s"
android:defaultValue="0"/>
<com.cherish.settings.preferences.SystemSettingListPreference
android:key="vowifi_icon_style"
android:title="@string/vowifi_icon_title"
android:entries="@array/vowifi_icon_type_entries"
android:entryValues="@array/vowifi_icon_type_values"
android:summary="%s"
android:defaultValue="1"/>
<com.cherish.settings.preferences.SystemSettingListPreference
android:key="vowifi_icon_style"
android:title="@string/vowifi_icon_style_title"
android:entries="@array/vowifi_icon_style_entries"
android:entryValues="@array/vowifi_icon_style_values"
android:summary="%s"
android:defaultValue="0"/>
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="roaming_indicator_icon"
android:title="@string/roaming_indicator_icon_title"
android:summary="@string/roaming_indicator_icon_summary"
android:defaultValue="true"/>
<com.cherish.settings.preferences.SystemSettingSwitchPreference
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="use_old_mobiletype"
android:title="@string/use_old_mobiletype_title"
android:summary="@string/use_old_mobiletype_summary"
android:defaultValue="false" />
<com.cherish.settings.preferences.SecureSettingSwitchPreference
android:key="show_combined_status_bar_signal_icons"
android:title="@string/combined_status_bar_signal_icons"
android:summary="@string/combined_status_bar_signal_icons_summary"
android:defaultValue="false" />
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="show_fourg_icon"
android:title="@string/show_fourg_icon_title"
android:summary="@string/show_fourg_icon_summary"
android:defaultValue="false" />
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="statusbar_icons_style"
android:title="@string/statusbar_icons_style"
android:summary="@string/statusbar_icons_style_summary"
android:defaultValue="true" />
android:key="roaming_indicator_icon"
android:title="@string/roaming_indicator_icon_title"
android:summary="@string/roaming_indicator_icon_summary"
android:defaultValue="false" />
<Preference
android:key="battery_settings"
android:title="@string/battery_style_category_title"
android:fragment="com.cherish.settings.fragments.StatusBarBattery" />
<com.cherish.settings.preferences.SecureSettingSwitchPreference
android:key="enable_camera_privacy_indicator"
android:title="@string/mic_camera_privacy_indicator_title"
android:summary="@string/mic_camera_privacy_indicator_summary"
android:defaultValue="true" />
<Preference
android:key="systemui_tuner_statusbar"
android:title="@string/statusbar_items_category" >
<intent android:action="android.intent.action.MAIN"
android:targetPackage="com.android.systemui"
android:targetClass="com.android.systemui.tuner.StatusbarItemsActivity" />
</Preference>
<com.cherish.settings.preferences.SecureSettingSwitchPreference
android:key="enable_location_privacy_indicator"
android:title="@string/location_privacy_indicator_title"
android:summary="@string/location_privacy_indicator_summary"
android:defaultValue="true" />
<com.cherish.settings.preferences.SecureSettingSwitchPreference
android:key="enable_projection_privacy_indicator"
android:title="@string/projection_privacy_indicator_title"
android:summary="@string/projection_privacy_indicator_summary"
android:defaultValue="true" />
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="statusbar_notif_count"
android:title="@string/statusbar_notif_count_title"
android:summary="@string/statusbar_notif_count_summary"
android:defaultValue="false" />
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="statusbar_colored_icons"
android:title="@string/statusbar_colored_icons_title"
android:summary="@string/statusbar_colored_icons_summary"
android:defaultValue="false" />
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="bluetooth_show_battery"
android:title="@string/bluetooth_battery_title"
android:summary="@string/bluetooth_battery_summary"
android:defaultValue="true"/>
</PreferenceCategory>

View File

@@ -18,7 +18,7 @@
android:title="@string/theme_title"
xmlns:settings="http://schemas.android.com/apk/res/com.android.settings">
<PreferenceCategory
<PreferenceCategory
android:key="settings_layout_category"
android:title="@string/settings_layout_category_title">
@@ -48,50 +48,11 @@
android:summary="@string/disable_usercard_summary"
android:defaultValue="false" />
</PreferenceCategory>
<com.cherish.settings.preferences.SecureSettingSwitchPreference
android:key="system_black_theme"
android:title="@string/system_black_theme_title"
android:summary="@string/system_black_theme_summary"
android:defaultValue="false" />
<PreferenceCategory
android:title="@string/notification_material_dismiss_button_title">
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="notification_material_dismiss"
android:title="@string/notification_material_dismiss_button_title"
android:summary="@string/notification_material_dismiss_button_summary"
android:defaultValue="false" />
<com.cherish.settings.preferences.SystemSettingSeekBarPreference
android:key="notification_material_dismiss_style"
android:title="@string/clearall_style_title"
android:dependency="notification_material_dismiss"
android:defaultValue="0"
android:max="9"
android:min="0" />
<com.cherish.settings.preferences.SystemSettingSeekBarPreference
android:key="notification_material_dismiss_bgstyle"
android:title="@string/clearall_bgstyle_title"
android:dependency="notification_material_dismiss"
android:defaultValue="0"
android:max="4"
android:min="0" />
</PreferenceCategory>
<PreferenceCategory
android:title="@string/theme_customization_category">
<Preference
android:key="monet_engine"
android:title="@string/monet_engine_title"
android:summary="@string/monet_engine_summary"
android:fragment="com.cherish.settings.fragments.MonetEngine" />
<Preference
android:key="dark_ui_mode"
android:title="@string/dark_ui_mode"
@@ -99,6 +60,37 @@
android:fragment="com.android.settings.display.darkmode.DarkModeSettingsFragment"
settings:controller="com.android.settings.display.DarkUIPreferenceController" />
<!-- Monet settings -->
<Preference
android:key="monet_settings"
android:title="@string/monet_settings_title"
android:summary="@string/monet_settings_sammary"
android:fragment="com.cherish.settings.fragments.MonetSettings" />
<Preference
android:key="android.theme.customization.lockscreen_clock_font"
android:title="@string/theme_customization_lock_clock_title"
android:summary="@string/theme_customization_lock_clock_summary"
android:fragment="com.cherish.settings.fragments.ui.LockClockFonts"/>
<!-- QS style -->
<com.cherish.settings.preferences.SystemSettingListPreference
android:key="qs_panel_style"
android:title="@string/qs_styles_title"
android:dialogTitle="@string/qs_styles_title"
android:entries="@array/qs_styles_entries"
android:entryValues="@array/qs_styles_values"
android:summary="%s"
android:defaultValue="0" />
<!-- Black Theme -->
<com.cherish.settings.preferences.SecureSettingSwitchPreference
android:key="system_black_theme"
android:title="@string/system_black_theme_title"
android:summary="@string/system_black_theme_summary"
android:dependency="dark_ui_mode"
android:defaultValue="false" />
<!-- Font style -->
<Preference
android:key="android.theme.customization.font"

View File

@@ -1,81 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Copyright (C) 2020-2022 The CherishOS 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
android:title="@string/traffic_title"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:settings="http://schemas.android.com/apk/res/com.android.settings">
<com.cherish.settings.preferences.SystemSettingListPreference
android:key="network_traffic_location"
android:title="@string/network_traffic_location_title"
android:summary="%s"
android:entries="@array/network_traffic_location_entries"
android:entryValues="@array/network_traffic_location_values"
android:defaultValue="0" />
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="network_traffic_autohide"
android:title="@string/network_traffic_autohide"
android:summary="@string/network_traffic_autohide_summary"
android:defaultValue="true" />
<com.cherish.settings.preferences.SystemSettingSeekBarPreference
android:key="network_traffic_autohide_threshold"
android:title="@string/network_traffic_autohide_threshold_title"
android:defaultValue="0"
android:max="10000"
settings:min="0"
settings:units="@string/network_traffic_autohide_kilobytes"
settings:interval="10"
android:dependency="network_traffic_autohide" />
<com.cherish.settings.preferences.SystemSettingListPreference
android:key="network_traffic_mode"
android:title="@string/network_traffic_mode_title"
android:entries="@array/network_traffic_mode_entries"
android:entryValues="@array/network_traffic_mode_values"
android:summary="%s"
android:defaultValue="0" />
<com.cherish.settings.preferences.SystemSettingSeekBarPreference
android:key="network_traffic_refresh_interval"
android:title="@string/network_traffic_refresh_interval_title"
android:summary="@string/network_traffic_refresh_interval_summary"
android:defaultValue="2"
android:max="10"
settings:min="1"
settings:units="@string/unit_seconds" />
<com.cherish.settings.preferences.SystemSettingListPreference
android:key="network_traffic_units"
android:title="@string/network_traffic_units_title"
android:entries="@array/network_traffic_units_entries"
android:entryValues="@array/network_traffic_units_values"
android:summary="%s"
android:defaultValue="1" />
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="network_traffic_hidearrow"
android:title="@string/network_traffic_hidearrow"
android:summary="@string/network_traffic_hidearrow_summary" />
<com.cherish.settings.preferences.SystemSettingSeekBarPreference
android:key="network_traffic_font_size"
android:title="@string/network_traffic_font_size"
android:max="24"
settings:min="14"
settings:defaultValue="18"
settings:units="dp" />
</PreferenceScreen>

View File

@@ -1,19 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2020-22 The CherishOS Projects
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.
<!--
Copyright (C) 2019-2022 The CherishOS Projects
SPDX-License-Identifier: Apache-2.0
-->
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:settings="http://schemas.android.com/apk/res/com.android.settings"
android:title="@string/udfps_category">
android:title="@string/udfps_category">
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="udfps_haptic_feedback"
@@ -21,42 +14,25 @@
android:summary="@string/udfps_haptic_feedback_summary"
android:defaultValue="true" />
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="screen_off_fod"
android:title="@string/screen_off_fod_title"
android:summary="@string/screen_off_fod_summary"
android:defaultValue="true" />
<!-- Screen OFF FOD -->
<com.cherish.settings.preferences.SecureSettingSwitchPreference
android:key="screen_off_udfps_enabled"
android:title="@string/screen_off_udfps_title"
android:summary="@string/screen_off_udfps_summary"
android:defaultValue="false"
settings:controller="com.android.settings.security.UdfpsGesturePreferenceController" />
<PreferenceCategory
android:key="udfps_customization"
android:title="UDFPS Customization">
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="custom_fp_icon_enabled"
android:title="@string/custom_fp_icon_title"
android:summary="@string/custom_fp_icon_summary"
android:defaultValue="false" />
<Preference
android:key="custom_fp_file_select"
android:title="@string/custom_fp_select_title"
android:summary="@string/custom_fp_select_summary"
android:dependency="custom_fp_icon_enabled"
android:persistent="false" >
</Preference>
<Preference
android:key="udfps_icon_picker"
android:title="@string/udfps_icon_picker_title"
android:summary="@string/udfps_icon_picker_summary"
android:fragment="com.cherish.settings.fragments.UdfpsIconPicker" />
<Preference
android:key="udfps_recognizing_animation_preview"
android:title="@string/udfps_recog_animation_effect_title"
android:summary="@string/udfps_recog_animation_effect_summary"
android:fragment="com.cherish.settings.fragments.UdfpsAnimation"/>
</PreferenceCategory>
<!-- UDFPS ICON PICKER -->
<Preference
android:key="udfps_icon_picker"
android:title="@string/udfps_icon_picker_title"
android:summary="@string/udfps_icon_picker_summary"
android:fragment="com.cherish.settings.fragments.UdfpsIconPicker" />
<!-- UDFPS ANIMATIONS -->
<Preference
android:key="udfps_recognizing_animation_preview"
android:title="@string/udfps_recog_animation_effect_title"
android:summary="@string/udfps_recog_animation_effect_summary"
android:fragment="com.cherish.settings.fragments.UdfpsAnimation" />
</PreferenceScreen>

View File

@@ -15,6 +15,49 @@
-->
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:settings="http://schemas.android.com/apk/res/com.android.settings">
xmlns:settings="http://schemas.android.com/apk/res/com.android.settings"
android:title="@string/volume_steps_fragment_title">
<ListPreference
android:key="volume_steps_alarm"
android:title="@string/volume_steps_alarm_title"
android:entries="@array/volume_steps_entries"
android:entryValues="@array/volume_steps_entries" />
<ListPreference
android:key="volume_steps_dtmf"
android:title="@string/volume_steps_dtmf_title"
android:entries="@array/volume_steps_entries"
android:entryValues="@array/volume_steps_entries" />
<ListPreference
android:key="volume_steps_music"
android:title="@string/volume_steps_music_title"
android:entries="@array/volume_steps_entries"
android:entryValues="@array/volume_steps_entries" />
<ListPreference
android:key="volume_steps_notification"
android:title="@string/volume_steps_notification_title"
android:entries="@array/volume_steps_entries"
android:entryValues="@array/volume_steps_entries" />
<ListPreference
android:key="volume_steps_ring"
android:title="@string/volume_steps_ring_title"
android:entries="@array/volume_steps_entries"
android:entryValues="@array/volume_steps_entries" />
<ListPreference
android:key="volume_steps_system"
android:title="@string/volume_steps_system_title"
android:entries="@array/volume_steps_entries"
android:entryValues="@array/volume_steps_entries" />
<ListPreference
android:key="volume_steps_voice_call"
android:title="@string/volume_steps_voice_call_title"
android:entries="@array/volume_steps_entries"
android:entryValues="@array/volume_steps_entries" />
</PreferenceScreen>

View File

@@ -1,62 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2015 The Pure Nexus 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"
android:title="@string/volume_steps_fragment_title">
<ListPreference
android:key="volume_steps_alarm"
android:title="@string/volume_steps_alarm_title"
android:entries="@array/volume_steps_entries"
android:entryValues="@array/volume_steps_entries" />
<ListPreference
android:key="volume_steps_dtmf"
android:title="@string/volume_steps_dtmf_title"
android:entries="@array/volume_steps_entries"
android:entryValues="@array/volume_steps_entries" />
<ListPreference
android:key="volume_steps_music"
android:title="@string/volume_steps_music_title"
android:entries="@array/volume_steps_entries"
android:entryValues="@array/volume_steps_entries" />
<ListPreference
android:key="volume_steps_notification"
android:title="@string/volume_steps_notification_title"
android:entries="@array/volume_steps_entries"
android:entryValues="@array/volume_steps_entries" />
<ListPreference
android:key="volume_steps_ring"
android:title="@string/volume_steps_ring_title"
android:entries="@array/volume_steps_entries"
android:entryValues="@array/volume_steps_entries" />
<ListPreference
android:key="volume_steps_system"
android:title="@string/volume_steps_system_title"
android:entries="@array/volume_steps_entries"
android:entryValues="@array/volume_steps_entries" />
<ListPreference
android:key="volume_steps_voice_call"
android:title="@string/volume_steps_voice_call_title"
android:entries="@array/volume_steps_entries"
android:entryValues="@array/volume_steps_entries" />
</PreferenceScreen>

View File

@@ -1,105 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2020 Yet Another AOSP 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"
android:title="@string/pulse_ambient_light_title"
xmlns:settings="http://schemas.android.com/apk/res/com.android.settings">
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="ambient_notification_light_enabled"
android:title="@string/ambient_notification_light_enabled_title"
android:summary="@string/ambient_notification_light_enabled_summary"
android:defaultValue="false" />
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="ambient_light_pulse_for_all"
android:title="@string/pulse_ambient_light_show_always_title"
android:summary="@string/pulse_ambient_light_show_always_summary"
android:defaultValue="false" />
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="ambient_notification_light_hide_aod"
android:title="@string/ambient_notification_light_hide_aod_title"
android:summary="@string/ambient_notification_light_hide_aod_summary"
android:defaultValue="false"
android:dependency="ambient_notification_light_enabled" />
<com.cherish.settings.preferences.CustomSeekBarPreference
android:key="ambient_notification_light_duration"
android:title="@string/ambient_notification_light_duration_title"
android:summary="@string/ambient_notification_light_duration_summary"
android:max="5"
settings:min="1"
settings:defaultValue="2"
settings:units="@string/unit_seconds" />
<com.cherish.settings.preferences.CustomSeekBarPreference
android:key="ambient_notification_light_repeats"
android:title="@string/ambient_notification_light_repeats_title"
android:summary="@string/ambient_notification_light_repeats_summary"
android:max="10"
settings:min="0"
settings:defaultValue="0" />
<com.cherish.settings.preferences.SystemSettingListPreference
android:key="ambient_notification_light_timeout"
android:title="@string/ambient_notification_light_timeout_title"
android:entries="@array/ambient_notification_light_timeout_entries"
android:entryValues="@array/ambient_notification_light_timeout_values"
android:defaultValue="0" />
<com.cherish.settings.preferences.SystemSettingListPreference
android:key="ambient_notification_color_mode"
android:title="@string/ambient_notification_color_mode_title"
android:entries="@array/ambient_notification_color_mode_entries"
android:entryValues="@array/ambient_notification_color_mode_values"
android:defaultValue="0" />
<net.margaritov.preference.colorpicker.ColorPickerPreference
android:key="ambient_notification_light_color"
android:title="@string/ambient_notification_light_color_title" />
<com.cherish.settings.preferences.SystemSettingListPreference
android:key="ambient_light_repeat_direction"
android:title="@string/pulse_ambient_light_repeat_direction_title"
android:entries="@array/pulse_ambient_light_repeat_direction_entries"
android:entryValues="@array/pulse_ambient_light_repeat_direction_values"
android:summary="%s"
android:defaultValue="0" />
<com.cherish.settings.preferences.SystemSettingListPreference
android:key="ambient_light_layout"
android:title="@string/pulse_ambient_light_layout_title"
android:entries="@array/pulse_ambient_light_layout_entries"
android:entryValues="@array/pulse_ambient_light_layout_values"
android:summary="%s"
android:defaultValue="1" />
<com.cherish.settings.preferences.SystemSettingListPreference
android:key="pulse_light_layout_style"
android:title="@string/pulse_light_layout_style_title"
android:entries="@array/pulse_light_layout_style_entries"
android:entryValues="@array/pulse_light_layout_style_values"
android:summary="%s"
android:defaultValue="0" />
<com.cherish.settings.preferences.SystemSettingSeekBarPreference
android:key="pulse_ambient_light_width"
android:title="@string/pulse_ambient_light_width_title"
android:max="150"
android:min="1"
settings:unitsLeft=""
settings:unitsRight="px"
android:defaultValue="125" />
</PreferenceScreen>

View File

@@ -1,61 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2014 The CyanogenMod 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">
<com.cherish.settings.preferences.GlobalSettingSwitchPreference
android:key="heads_up_notifications_enabled"
android:title="@string/heads_up_notifications"
android:summaryOn="@string/summary_heads_up_enabled"
android:summaryOff="@string/summary_heads_up_disabled"
android:defaultValue="true" />
<ListPreference
android:key="heads_up_time_out"
android:title="@string/heads_up_time_out_title"
android:entries="@array/heads_up_time_out_entries"
android:entryValues="@array/heads_up_time_out_values"
android:persistent="false" />
<ListPreference
android:key="heads_up_snooze_time"
android:title="@string/heads_up_snooze_title"
android:entries="@array/heads_up_snooze_entries"
android:entryValues="@array/heads_up_snooze_values"
android:persistent="false" />
<PreferenceCategory
android:title="@string/heads_up_stoplist_title"
android:key="stoplist_applications"
android:dependency="heads_up_notifications_enabled" >
<Preference
android:key="add_stoplist_packages"
android:icon="@drawable/ic_menu_add_activated_tint"
android:title="@string/add_heads_up_package"
android:summary="@string/add_heads_up_stoplist_summary" />
</PreferenceCategory>
<PreferenceCategory
android:title="@string/heads_up_blacklist_title"
android:key="blacklist_applications"
android:dependency="heads_up_notifications_enabled" >
<Preference
android:key="add_blacklist_packages"
android:icon="@drawable/ic_menu_add_activated_tint"
android:title="@string/add_heads_up_package"
android:summary="@string/add_heads_up_blacklist_summary" />
</PreferenceCategory>
</PreferenceScreen>

View File

@@ -0,0 +1,79 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2022 Yet Another AOSP 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"
android:title="@string/monet_settings_title"
xmlns:settings="http://schemas.android.com/apk/res/com.android.settings">
<ListPreference
android:key="theme_style"
android:title="@string/theme_style_title"
android:entries="@array/theme_style_entries"
android:entryValues="@array/theme_style_values"
android:defaultValue="0" />
<ListPreference
android:key="color_source"
android:title="@string/color_source_title"
android:entries="@array/color_source_entries"
android:entryValues="@array/color_source_values"
android:defaultValue="0" />
<net.margaritov.preference.colorpicker.ColorPickerPreference
android:key="accent_color"
android:title="@string/accent_color_title"
android:summary="@string/accent_color_summary" />
<SwitchPreference
android:key="accent_background"
android:title="@string/accent_background_title"
android:summary="@string/accent_background_summary"
android:defaultValue="false" />
<net.margaritov.preference.colorpicker.ColorPickerPreference
android:key="bg_color"
android:title="@string/bg_color_title"
android:summary="@string/bg_color_summary" />
<com.cherish.settings.preferences.CustomSeekBarPreference
android:key="luminance_factor"
android:title="@string/luminance_factor_title"
android:summary="@string/luminance_factor_summary"
android:max="100"
settings:min="-95"
settings:interval="5"
settings:defaultValue="0"
settings:units="%"
settings:showSign="true" />
<com.cherish.settings.preferences.CustomSeekBarPreference
android:key="chroma_factor"
android:title="@string/chroma_factor_title"
android:summary="@string/chroma_factor_summary"
android:max="100"
settings:min="-95"
settings:interval="5"
settings:defaultValue="0"
settings:units="%"
settings:showSign="true" />
<SwitchPreference
android:key="tint_background"
android:title="@string/tint_background_title"
android:summary="@string/tint_background_summary"
android:defaultValue="false" />
</PreferenceScreen>

View File

@@ -42,6 +42,26 @@
android:entryValues="@array/pulse_render_mode_values"
android:defaultValue="1"/>
<com.cherish.settings.preferences.SecureSettingListPreference
android:key="pulse_custom_gravity"
android:title="@string/pulse_custom_gravity_title"
android:entries="@array/pulse_custom_gravity_entries"
android:entryValues="@array/pulse_custom_gravity_values"
android:summary="%s"
android:defaultValue="0"/>
<com.cherish.settings.preferences.SecureSettingSwitchPreference
android:key="visualizer_center_mirrored"
android:title="@string/visualizer_center_mirrored_title"
android:summary="@string/visualizer_center_mirrored_summary"
android:defaultValue="false"/>
<com.cherish.settings.preferences.SecureSettingSwitchPreference
android:key="pulse_vertical_mirror"
android:title="@string/pulse_vertical_mirror_title"
android:summary="@string/pulse_vertical_mirror_summary"
android:defaultValue="false"/>
<com.cherish.settings.preferences.SecureSettingSwitchPreference
android:key="pulse_smoothing_enabled"
android:title="@string/pulse_smoothing_enabled_title"

View File

@@ -0,0 +1,49 @@
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:settings="http://schemas.android.com/apk/res/com.android.settings"
android:title="@string/qs_tile_layout_title">
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="qs_tile_label_hide"
android:title="@string/qs_tile_hide_label_title"
android:summary="@string/qs_tile_hide_label_summary"
android:defaultValue="false" />
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="qs_tile_vertical_layout"
android:title="@string/qs_tile_vertical_layout_title"
android:summary="@string/qs_tile_vertical_layout_summary"
android:defaultValue="false" />
<PreferenceCategory
android:key="tiles_layout"
android:title="@string/qs_tiles_layout_category">
<com.cherish.settings.preferences.CustomSeekBarPreference
android:key="qs_layout_columns"
android:title="@string/qs_columns_portrait_title"
android:defaultValue="2"
android:max="6"
settings:min="2" />
<com.cherish.settings.preferences.CustomSeekBarPreference
android:key="qs_layout_rows"
android:title="@string/qs_rows_portrait_title"
android:defaultValue="4"
android:max="6"
settings:min="2" />
<com.cherish.settings.preferences.CustomSeekBarPreference
android:key="qqs_layout_rows"
android:title="@string/qqs_rows_portrait_title"
android:defaultValue="2"
android:max="5"
settings:min="1" />
<com.android.settingslib.widget.LayoutPreference
android:key="apply_change_button"
android:layout="@layout/qs_tile_apply_change_button" />
</PreferenceCategory>
</PreferenceScreen>

View File

@@ -0,0 +1,57 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (C) 2020-2022 The CherishOS 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/smart_charging_title">
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="smart_charging"
android:title="@string/smart_charging_switch_title"
android:summary="@string/smart_charging_summary"
android:defaultValue="false" />
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="smart_charging_reset_stats"
android:title="@string/smart_charging_reset_stats_title"
android:summary="@string/smart_charging_reset_stats_summary"
android:defaultValue="false"
android:dependency="smart_charging" />
<com.cherish.settings.preferences.SystemSettingSeekBarPreference
android:key="smart_charging_level"
android:title="@string/smart_charging_level_title"
android:max="100"
settings:min="65"
settings:units="%"
android:defaultValue="80"
android:dependency="smart_charging" />
<com.cherish.settings.preferences.SystemSettingSeekBarPreference
android:key="smart_charging_resume_level"
android:title="@string/smart_charging_resume_level_title"
android:max="99"
settings:min="15"
settings:units="%"
android:defaultValue="60"
android:dependency="smart_charging" />
<com.android.settingslib.widget.FooterPreference
android:key="smart_charging_footer"
android:selectable="false"
settings:searchable="false"
android:dependency="smart_charging" />
</PreferenceScreen>

View File

@@ -1,41 +1,68 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2016 Nitrogen Project
<!-- Copyright (C) 2017-2019 The Dirty Unicorns 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"
android:title="@string/battery_style_category_title"
xmlns:settings="http://schemas.android.com/apk/res/com.android.settings">
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="battery_level_colors"
android:title="@string/battery_level_colors_title"
android:summary="@string/battery_level_colors_summary"
android:defaultValue="false" />
<!-- Status bar battery customizations -->
<PreferenceCategory
android:title="@string/status_bar_battery_category_title">
<ListPreference
android:key="status_bar_battery_style"
android:dialogTitle="@string/status_bar_battery_style_title"
android:title="@string/status_bar_battery_style_title"
android:entries="@array/entries_status_bar_battery"
android:entryValues="@array/values_status_bar_battery" />
<com.cherish.settings.preferences.SystemSettingListPreference
android:key="status_bar_battery_style"
android:title="@string/status_bar_battery_style_title"
android:summary="%s"
android:dialogTitle="@string/status_bar_battery_style_title"
android:entries="@array/status_bar_battery_style_entries"
android:entryValues="@array/status_bar_battery_style_values"
android:defaultValue="0" />
<ListPreference
android:key="status_bar_show_battery_percent"
android:title="@string/status_bar_battery_percentage_title"
android:dialogTitle="@string/status_bar_battery_percentage_title"
android:entries="@array/status_bar_battery_percentage_entries"
android:entryValues="@array/status_bar_battery_percentage_values" />
<com.cherish.settings.preferences.SystemSettingListPreference
android:key="status_bar_show_battery_percent"
android:title="@string/status_bar_battery_percent_title"
android:dialogTitle="@string/status_bar_battery_percent_title"
android:entries="@array/status_bar_battery_percent_entries"
android:entryValues="@array/status_bar_battery_percent_values"
android:defaultValue="0" />
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="status_bar_battery_text_charging"
android:title="@string/status_bar_battery_text_charging_title"
android:summary="@string/status_bar_battery_text_charging_summary"
android:defaultValue="true" />
</PreferenceCategory>
<!-- QS panel battery customizations -->
<PreferenceCategory
android:title="@string/qs_battery_category_title">
<com.cherish.settings.preferences.SystemSettingListPreference
android:key="qs_battery_style"
android:title="@string/status_bar_battery_style_title"
android:entries="@array/qs_battery_style_entries"
android:entryValues="@array/qs_battery_style_values"
android:defaultValue="-1" />
<com.cherish.settings.preferences.SystemSettingListPreference
android:key="qs_show_battery_percent"
android:title="@string/qs_battery_percent_title"
android:entries="@array/status_bar_battery_percent_entries"
android:entryValues="@array/status_bar_battery_percent_values"
android:defaultValue="2" />
</PreferenceCategory>
</PreferenceScreen>

View File

@@ -1,186 +0,0 @@
/*
* Copyright (C) 2021 Yet Another AOSP 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 com.cherish.settings.fragments;
import static com.cherish.settings.fragments.LockScreenSettings.MODE_DISABLED;
import static com.cherish.settings.fragments.LockScreenSettings.MODE_NIGHT;
import static com.cherish.settings.fragments.LockScreenSettings.MODE_TIME;
import static com.cherish.settings.fragments.LockScreenSettings.MODE_MIXED_SUNSET;
import static com.cherish.settings.fragments.LockScreenSettings.MODE_MIXED_SUNRISE;
import android.app.TimePickerDialog;
import android.content.ContentResolver;
import android.content.Context;
import android.os.Bundle;
import android.os.UserHandle;
import android.provider.Settings;
import android.text.format.DateFormat;
import android.widget.TimePicker;
import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;
import com.android.internal.logging.nano.MetricsProto;
import com.android.settings.R;
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settings.SettingsPreferenceFragment;
import com.android.settingslib.search.SearchIndexable;
import com.cherish.settings.preferences.SecureSettingListPreference;
import java.time.format.DateTimeFormatter;
import java.time.LocalTime;
@SearchIndexable
public class AODSchedule extends SettingsPreferenceFragment implements
Preference.OnPreferenceClickListener, Preference.OnPreferenceChangeListener {
private static final String MODE_KEY = "doze_always_on_auto_mode";
private static final String SINCE_PREF_KEY = "doze_always_on_auto_since";
private static final String TILL_PREF_KEY = "doze_always_on_auto_till";
private SecureSettingListPreference mModePref;
private Preference mSincePref;
private Preference mTillPref;
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
addPreferencesFromResource(R.xml.always_on_display_schedule);
PreferenceScreen screen = getPreferenceScreen();
ContentResolver resolver = getActivity().getContentResolver();
mSincePref = findPreference(SINCE_PREF_KEY);
mSincePref.setOnPreferenceClickListener(this);
mTillPref = findPreference(TILL_PREF_KEY);
mTillPref.setOnPreferenceClickListener(this);
int mode = Settings.Secure.getIntForUser(resolver,
MODE_KEY, MODE_DISABLED, UserHandle.USER_CURRENT);
mModePref = (SecureSettingListPreference) findPreference(MODE_KEY);
mModePref.setValue(String.valueOf(mode));
mModePref.setSummary(mModePref.getEntry());
mModePref.setOnPreferenceChangeListener(this);
updateTimeEnablement(mode);
updateTimeSummary(mode);
}
@Override
public boolean onPreferenceChange(Preference preference, Object objValue) {
int value = Integer.parseInt((String) objValue);
int index = mModePref.findIndexOfValue((String) objValue);
mModePref.setSummary(mModePref.getEntries()[index]);
Settings.Secure.putIntForUser(getActivity().getContentResolver(),
MODE_KEY, value, UserHandle.USER_CURRENT);
updateTimeEnablement(value);
updateTimeSummary(value);
return true;
}
@Override
public boolean onPreferenceClick(Preference preference) {
String[] times = getCustomTimeSetting();
boolean isSince = preference == mSincePref;
int hour, minute;
TimePickerDialog.OnTimeSetListener listener = (view, hourOfDay, minute1) -> {
updateTimeSetting(isSince, hourOfDay, minute1);
};
if (isSince) {
String[] sinceValues = times[0].split(":", 0);
hour = Integer.parseInt(sinceValues[0]);
minute = Integer.parseInt(sinceValues[1]);
} else {
String[] tillValues = times[1].split(":", 0);
hour = Integer.parseInt(tillValues[0]);
minute = Integer.parseInt(tillValues[1]);
}
TimePickerDialog dialog = new TimePickerDialog(getContext(), listener,
hour, minute, DateFormat.is24HourFormat(getContext()));
dialog.show();
return true;
}
private String[] getCustomTimeSetting() {
String value = Settings.Secure.getStringForUser(getActivity().getContentResolver(),
Settings.Secure.DOZE_ALWAYS_ON_AUTO_TIME, UserHandle.USER_CURRENT);
if (value == null || value.equals("")) value = "20:00,07:00";
return value.split(",", 0);
}
private void updateTimeEnablement(int mode) {
mSincePref.setEnabled(mode == MODE_TIME || mode == MODE_MIXED_SUNRISE);
mTillPref.setEnabled(mode == MODE_TIME || mode == MODE_MIXED_SUNSET);
}
private void updateTimeSummary(int mode) {
updateTimeSummary(getCustomTimeSetting(), mode);
}
private void updateTimeSummary(String[] times, int mode) {
if (mode == MODE_DISABLED) {
mSincePref.setSummary("-");
mTillPref.setSummary("-");
return;
}
if (mode == MODE_NIGHT) {
mSincePref.setSummary(R.string.always_on_display_schedule_sunset);
mTillPref.setSummary(R.string.always_on_display_schedule_sunrise);
return;
}
String outputFormat = DateFormat.is24HourFormat(getContext()) ? "HH:mm" : "hh:mm a";
DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern(outputFormat);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm");
LocalTime sinceDT = LocalTime.parse(times[0], formatter);
LocalTime tillDT = LocalTime.parse(times[1], formatter);
if (mode == MODE_MIXED_SUNSET) {
mSincePref.setSummary(R.string.always_on_display_schedule_sunset);
mTillPref.setSummary(tillDT.format(outputFormatter));
} else if (mode == MODE_MIXED_SUNRISE) {
mTillPref.setSummary(R.string.always_on_display_schedule_sunrise);
mSincePref.setSummary(sinceDT.format(outputFormatter));
} else {
mSincePref.setSummary(sinceDT.format(outputFormatter));
mTillPref.setSummary(tillDT.format(outputFormatter));
}
}
private void updateTimeSetting(boolean since, int hour, int minute) {
String[] times = getCustomTimeSetting();
String nHour = "";
String nMinute = "";
if (hour < 10) nHour += "0";
if (minute < 10) nMinute += "0";
nHour += String.valueOf(hour);
nMinute += String.valueOf(minute);
times[since ? 0 : 1] = nHour + ":" + nMinute;
Settings.Secure.putStringForUser(getActivity().getContentResolver(),
Settings.Secure.DOZE_ALWAYS_ON_AUTO_TIME,
times[0] + "," + times[1], UserHandle.USER_CURRENT);
updateTimeSummary(times, Integer.parseInt(mModePref.getValue()));
}
@Override
public int getMetricsCategory() {
return MetricsProto.MetricsEvent.CHERISH_SETTINGS;
}
public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
new BaseSearchIndexProvider(R.xml.always_on_display_schedule);
}

View File

@@ -0,0 +1,211 @@
/**
* Copyright (C) 2014 The Android Open Source 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 com.cherish.settings.fragments;
import android.app.Activity;
import android.content.Context;
import android.content.ContentResolver;
import android.app.WallpaperManager;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.content.pm.ResolveInfo;
import android.content.res.Resources;
import android.hardware.fingerprint.FingerprintManager;
import android.net.Uri;
import android.os.Bundle;
import androidx.preference.SwitchPreference;
import androidx.preference.ListPreference;
import androidx.preference.Preference;
import androidx.preference.PreferenceCategory;
import androidx.preference.PreferenceScreen;
import android.provider.SearchIndexableResource;
import android.provider.Settings;
import com.android.internal.logging.nano.MetricsProto;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.settings.R;
import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settingslib.search.SearchIndexable;
import android.provider.SearchIndexableResource;
import com.cherish.settings.preferences.CustomSeekBarPreference;
import com.cherish.settings.preferences.SystemSettingListPreference;
import com.cherish.settings.preferences.SystemSettingEditTextPreference;
import net.margaritov.preference.colorpicker.ColorPickerPreference;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Set;
@SearchIndexable(forTarget = SearchIndexable.ALL & ~SearchIndexable.ARC)
public class AmbientCustomizations extends SettingsPreferenceFragment implements
Preference.OnPreferenceChangeListener {
private static final String AMBIENT_TEXT_STRING = "ambient_text_string";
private static final String AMBIENT_TEXT_ALIGNMENT = "ambient_text_alignment";
private static final String AMBIENT_TEXT_TYPE_COLOR = "ambient_text_type_color";
private static final String AMBIENT_TEXT_COLOR = "ambient_text_color";
private static final String FILE_AMBIENT_SELECT = "file_ambient_select";
private static final int REQUEST_PICK_IMAGE = 0;
private SystemSettingEditTextPreference mAmbientText;
private ListPreference mAmbientTextAlign;
private ListPreference mAmbientTextFonts;
private ListPreference mAmbientTextTypeColor;
private ColorPickerPreference mAmbientTextColor;
private Preference mAmbientImage;
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
addPreferencesFromResource(R.xml.cherish_ambient_customization);
final PreferenceScreen prefScreen = getPreferenceScreen();
ContentResolver resolver = getActivity().getContentResolver();
Resources resources = getResources();
// set ambient text alignment
mAmbientTextAlign = (ListPreference) findPreference(AMBIENT_TEXT_ALIGNMENT);
int align = Settings.System.getInt(resolver,
Settings.System.AMBIENT_TEXT_ALIGNMENT, 3);
mAmbientTextAlign.setValue(String.valueOf(align));
mAmbientTextAlign.setSummary(mAmbientTextAlign.getEntry());
mAmbientTextAlign.setOnPreferenceChangeListener(this);
// ambient text color type
mAmbientTextTypeColor = (ListPreference) findPreference(AMBIENT_TEXT_TYPE_COLOR);
mAmbientTextTypeColor.setValue(String.valueOf(Settings.System.getInt(
getContentResolver(), Settings.System.AMBIENT_TEXT_TYPE_COLOR, 0)));
mAmbientTextTypeColor.setSummary(mAmbientTextTypeColor.getEntry());
mAmbientTextTypeColor.setOnPreferenceChangeListener(this);
mAmbientTextColor = (ColorPickerPreference) findPreference(AMBIENT_TEXT_COLOR);
mAmbientTextColor.setOnPreferenceChangeListener(this);
int ambientTextColor = Settings.System.getInt(getContentResolver(),
Settings.System.AMBIENT_TEXT_COLOR, 0xFF3980FF);
String ambientTextColorHex = String.format("#%08x", (0xFF3980FF & ambientTextColor));
if (ambientTextColorHex.equals("#ff3980ff")) {
mAmbientTextColor.setSummary(R.string.default_string);
} else {
mAmbientTextColor.setSummary(ambientTextColorHex);
}
mAmbientTextColor.setNewPreviewColor(ambientTextColor);
mAmbientImage = findPreference(FILE_AMBIENT_SELECT);
}
@Override
public boolean onPreferenceTreeClick(Preference preference) {
if (preference == mAmbientImage) {
Intent intent = new Intent(Intent.ACTION_PICK);
intent.setType("image/*");
startActivityForResult(intent, REQUEST_PICK_IMAGE);
return true;
}
return super.onPreferenceTreeClick(preference);
}
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
ContentResolver resolver = getActivity().getContentResolver();
if (preference == mAmbientText) {
String value = (String) newValue;
Settings.System.putString(resolver,
Settings.System.AMBIENT_TEXT_STRING, value);
return true;
} else if (preference == mAmbientTextAlign) {
int align = Integer.valueOf((String) newValue);
int index = mAmbientTextAlign.findIndexOfValue((String) newValue);
Settings.System.putInt(getActivity().getContentResolver(),
Settings.System.AMBIENT_TEXT_ALIGNMENT, align);
mAmbientTextAlign.setSummary(mAmbientTextAlign.getEntries()[index]);
return true;
} else if (preference == mAmbientTextTypeColor) {
int value = Integer.valueOf((String) newValue);
int vIndex = mAmbientTextTypeColor.findIndexOfValue((String) newValue);
mAmbientTextTypeColor.setSummary(mAmbientTextTypeColor.getEntries()[vIndex]);
Settings.System.putInt(getActivity().getContentResolver(),
Settings.System.AMBIENT_TEXT_TYPE_COLOR, value);
if (value == 2) {
mAmbientTextColor.setEnabled(true);
} else {
mAmbientTextColor.setEnabled(false);
}
return true;
} else if (preference == mAmbientTextColor) {
String hex = ColorPickerPreference.convertToARGB(
Integer.valueOf(String.valueOf(newValue)));
if (hex.equals("#ff3980ff")) {
preference.setSummary(R.string.default_string);
} else {
preference.setSummary(hex);
}
int intHex = ColorPickerPreference.convertToColorInt(hex);
Settings.System.putInt(getContentResolver(),
Settings.System.AMBIENT_TEXT_COLOR, intHex);
return true;
}
return false;
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent result) {
if (requestCode == REQUEST_PICK_IMAGE) {
if (resultCode != Activity.RESULT_OK) {
return;
}
final Uri imageUri = result.getData();
Settings.System.putString(getContentResolver(), Settings.System.AMBIENT_CUSTOM_IMAGE, imageUri.toString());
}
}
@Override
public int getMetricsCategory() {
return MetricsProto.MetricsEvent.CHERISH_SETTINGS;
}
public static final SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
new BaseSearchIndexProvider() {
@Override
public List<SearchIndexableResource> getXmlResourcesToIndex(Context context,
boolean enabled) {
ArrayList<SearchIndexableResource> result =
new ArrayList<SearchIndexableResource>();
SearchIndexableResource sir = new SearchIndexableResource(context);
sir.xmlResId = R.xml.cherish_ambient_customization;
result.add(sir);
return result;
}
@Override
public List<String> getNonIndexableKeys(Context context) {
List<String> keys = super.getNonIndexableKeys(context);
return keys;
}
};
}

View File

@@ -55,13 +55,9 @@ import java.util.List;
public class AnimationsSettings extends SettingsPreferenceFragment
implements OnPreferenceChangeListener {
private static final String PREF_TILE_ANIM_STYLE = "qs_tile_animation_style";
private static final String PREF_TILE_ANIM_DURATION = "qs_tile_animation_duration";
private static final String PREF_TILE_ANIM_INTERPOLATOR = "qs_tile_animation_interpolator";
private static final String POWER_MENU_ANIMATIONS = "power_menu_animations";
private ListPreference mTileAnimationStyle;
private ListPreference mTileAnimationDuration;
private ListPreference mTileAnimationInterpolator;
private ListPreference mPowerMenuAnimations;
@Override
public int getMetricsCategory() {
@@ -75,28 +71,11 @@ public class AnimationsSettings extends SettingsPreferenceFragment
ContentResolver resolver = getActivity().getContentResolver();
PreferenceScreen prefs = getPreferenceScreen();
// QS animation
mTileAnimationStyle = (ListPreference) findPreference(PREF_TILE_ANIM_STYLE);
int tileAnimationStyle = Settings.System.getIntForUser(resolver,
Settings.System.ANIM_TILE_STYLE, 0, UserHandle.USER_CURRENT);
mTileAnimationStyle.setValue(String.valueOf(tileAnimationStyle));
updateTileAnimationStyleSummary(tileAnimationStyle);
updateAnimTileStyle(tileAnimationStyle);
mTileAnimationStyle.setOnPreferenceChangeListener(this);
mTileAnimationDuration = (ListPreference) findPreference(PREF_TILE_ANIM_DURATION);
int tileAnimationDuration = Settings.System.getIntForUser(resolver,
Settings.System.ANIM_TILE_DURATION, 2000, UserHandle.USER_CURRENT);
mTileAnimationDuration.setValue(String.valueOf(tileAnimationDuration));
updateTileAnimationDurationSummary(tileAnimationDuration);
mTileAnimationDuration.setOnPreferenceChangeListener(this);
mTileAnimationInterpolator = (ListPreference) findPreference(PREF_TILE_ANIM_INTERPOLATOR);
int tileAnimationInterpolator = Settings.System.getIntForUser(getContentResolver(),
Settings.System.ANIM_TILE_INTERPOLATOR, 0, UserHandle.USER_CURRENT);
mTileAnimationInterpolator.setValue(String.valueOf(tileAnimationInterpolator));
updateTileAnimationInterpolatorSummary(tileAnimationInterpolator);
mTileAnimationInterpolator.setOnPreferenceChangeListener(this);
mPowerMenuAnimations = (ListPreference) findPreference(POWER_MENU_ANIMATIONS);
mPowerMenuAnimations.setValue(String.valueOf(Settings.System.getInt(
getContentResolver(), Settings.System.POWER_MENU_ANIMATIONS, 0)));
mPowerMenuAnimations.setSummary(mPowerMenuAnimations.getEntry());
mPowerMenuAnimations.setOnPreferenceChangeListener(this);
}
@Override
@@ -106,59 +85,17 @@ public class AnimationsSettings extends SettingsPreferenceFragment
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
ContentResolver resolver = getActivity().getContentResolver();
if (preference == mTileAnimationStyle) {
int tileAnimationStyle = Integer.valueOf((String) newValue);
Settings.System.putIntForUser(resolver, Settings.System.ANIM_TILE_STYLE,
tileAnimationStyle, UserHandle.USER_CURRENT);
updateTileAnimationStyleSummary(tileAnimationStyle);
updateAnimTileStyle(tileAnimationStyle);
return true;
} else if (preference == mTileAnimationDuration) {
int tileAnimationDuration = Integer.valueOf((String) newValue);
Settings.System.putIntForUser(resolver, Settings.System.ANIM_TILE_DURATION,
tileAnimationDuration, UserHandle.USER_CURRENT);
updateTileAnimationDurationSummary(tileAnimationDuration);
return true;
} else if (preference == mTileAnimationInterpolator) {
int tileAnimationInterpolator = Integer.valueOf((String) newValue);
Settings.System.putIntForUser(resolver, Settings.System.ANIM_TILE_INTERPOLATOR,
tileAnimationInterpolator, UserHandle.USER_CURRENT);
updateTileAnimationInterpolatorSummary(tileAnimationInterpolator);
ContentResolver resolver = getActivity().getContentResolver();
if (preference == mPowerMenuAnimations) {
Settings.System.putInt(getContentResolver(), Settings.System.POWER_MENU_ANIMATIONS,
Integer.valueOf((String) newValue));
mPowerMenuAnimations.setValue(String.valueOf(newValue));
mPowerMenuAnimations.setSummary(mPowerMenuAnimations.getEntry());
return true;
}
return false;
}
return false;
}
private void updateTileAnimationStyleSummary(int tileAnimationStyle) {
String prefix = (String) mTileAnimationStyle.getEntries()[mTileAnimationStyle.findIndexOfValue(String
.valueOf(tileAnimationStyle))];
mTileAnimationStyle.setSummary(getResources().getString(R.string.qs_set_animation_style, prefix));
}
private void updateTileAnimationDurationSummary(int tileAnimationDuration) {
String prefix = (String) mTileAnimationDuration.getEntries()[mTileAnimationDuration.findIndexOfValue(String
.valueOf(tileAnimationDuration))];
mTileAnimationDuration.setSummary(getResources().getString(R.string.qs_set_animation_duration, prefix));
}
private void updateTileAnimationInterpolatorSummary(int tileAnimationInterpolator) {
String prefix = (String) mTileAnimationInterpolator.getEntries()[mTileAnimationInterpolator.findIndexOfValue(String
.valueOf(tileAnimationInterpolator))];
mTileAnimationInterpolator.setSummary(getResources().getString(R.string.qs_set_animation_interpolator, prefix));
}
private void updateAnimTileStyle(int tileAnimationStyle) {
if (mTileAnimationDuration != null) {
if (tileAnimationStyle == 0) {
mTileAnimationDuration.setSelectable(false);
mTileAnimationInterpolator.setSelectable(false);
} else {
mTileAnimationDuration.setSelectable(true);
mTileAnimationInterpolator.setSelectable(true);
}
}
}
/**
* For Search.
*/

View File

@@ -16,7 +16,7 @@
package com.cherish.settings.fragment
import android.content.Context
import android.annotation.IntDef
import android.content.pm.PackageInfo
import android.content.pm.PackageManager
import android.graphics.drawable.Drawable
@@ -35,6 +35,7 @@ import android.widget.TextView
import androidx.core.view.ViewCompat
import androidx.fragment.app.Fragment
import androidx.lifecycle.lifecycleScope
import androidx.recyclerview.widget.DiffUtil
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.ListAdapter
@@ -43,8 +44,6 @@ import androidx.recyclerview.widget.RecyclerView
import com.android.settings.R
import com.google.android.material.appbar.AppBarLayout
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.cancel
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.sync.Mutex
@@ -57,38 +56,29 @@ import kotlinx.coroutines.withContext
* and package name of the application, along with a [CheckBox]
* indicating whether the item is selected or not.
*/
abstract class AppListFragment: Fragment(R.layout.app_list_layout), MenuItem.OnActionExpandListener {
abstract class AppListFragment : Fragment(R.layout.app_list_layout),
MenuItem.OnActionExpandListener {
private val mutex = Mutex()
private lateinit var fragmentScope: CoroutineScope
private lateinit var progressBar: ProgressBar
private lateinit var appBarLayout: AppBarLayout
private lateinit var packageManager: PackageManager
private lateinit var recyclerView: RecyclerView
private lateinit var pm: PackageManager
private lateinit var adapter: AppListAdapter
private val packageList = mutableListOf<PackageInfo>()
private var appBarLayout: AppBarLayout? = null
private var recyclerView: RecyclerView? = null
private var progressBar: ProgressBar? = null
private var searchText = ""
private var displayCategory: Int = CATEGORY_USER_ONLY
private var packageFilter: ((PackageInfo) -> Boolean) = { true }
private var packageComparator: ((PackageInfo, PackageInfo) -> Int) = { a, b ->
getLabel(a).compareTo(getLabel(b))
}
private var needsToHideProgressBar = false
override fun onAttach(context: Context) {
super.onAttach(context)
fragmentScope = CoroutineScope(Dispatchers.Main)
private var packageFilter: (PackageInfo) -> Boolean = { true }
private var packageComparator: (PackageInfo, PackageInfo) -> Int = { first, second ->
getLabel(first).compareTo(getLabel(second))
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setHasOptionsMenu(true)
packageManager = requireContext().packageManager
packageList.addAll(packageManager.getInstalledPackages(0))
pm = requireContext().packageManager
}
/**
@@ -97,15 +87,19 @@ abstract class AppListFragment: Fragment(R.layout.app_list_layout), MenuItem.OnA
abstract protected fun getTitle(): Int
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
requireActivity().setTitle(getTitle())
appBarLayout = requireActivity().findViewById(R.id.app_bar)
val activity = requireActivity()
activity.setTitle(getTitle())
appBarLayout = activity.findViewById(R.id.app_bar)
progressBar = view.findViewById(R.id.loading_progress)
adapter = AppListAdapter()
recyclerView = view.findViewById<RecyclerView>(R.id.apps_list).also {
adapter = AppListAdapter(getInitialCheckedList(), layoutInflater).apply {
setOnAppSelectListener { onAppSelected(it) }
setOnAppDeselectListener { onAppDeselected(it) }
setOnListUpdateListener { onListUpdate(it) }
}
recyclerView = view.findViewById<RecyclerView>(R.id.apps_list)?.also {
it.layoutManager = LinearLayoutManager(context)
it.adapter = adapter
}
needsToHideProgressBar = true
refreshList()
}
@@ -118,19 +112,21 @@ abstract class AppListFragment: Fragment(R.layout.app_list_layout), MenuItem.OnA
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
inflater.inflate(R.menu.app_list_menu, menu)
val searchItem = menu.findItem(R.id.search).also {
it.setOnActionExpandListener(this)
if (appBarLayout != null) {
it.setOnActionExpandListener(this)
}
}
val searchView = searchItem.actionView as SearchView
searchView.setQueryHint(getString(R.string.search_apps));
searchView.setOnQueryTextListener(object: SearchView.OnQueryTextListener {
searchView.setQueryHint(getString(R.string.search_apps))
searchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener {
override fun onQueryTextSubmit(query: String) = false
override fun onQueryTextChange(newText: String): Boolean {
fragmentScope.launch {
lifecycleScope.launch {
mutex.withLock {
searchText = newText
}
refreshList()
refreshListInternal()
}
return true
}
@@ -139,34 +135,29 @@ abstract class AppListFragment: Fragment(R.layout.app_list_layout), MenuItem.OnA
override fun onMenuItemActionExpand(item: MenuItem): Boolean {
// To prevent a large space on tool bar.
appBarLayout.setExpanded(false /*expanded*/, false /*animate*/)
appBarLayout?.setExpanded(false /*expanded*/, false /*animate*/)
// To prevent user expanding the collapsing tool bar view.
ViewCompat.setNestedScrollingEnabled(recyclerView, false)
recyclerView?.let { ViewCompat.setNestedScrollingEnabled(it, false) }
return true
}
override fun onMenuItemActionCollapse(item: MenuItem): Boolean {
// We keep the collapsed status after user cancel the search function.
appBarLayout.setExpanded(false /*expanded*/, false /*animate*/)
appBarLayout?.setExpanded(false /*expanded*/, false /*animate*/)
// Allow user to expande the tool bar view.
ViewCompat.setNestedScrollingEnabled(recyclerView, true)
recyclerView?.let { ViewCompat.setNestedScrollingEnabled(it, true) }
return true
}
override fun onDetach() {
fragmentScope.cancel()
super.onDetach()
}
/**
* Set the type of apps that should be displayed in the list.
* Defaults to [CATEGORY_USER_ONLY].
*
* @param category one of [CATEGORY_SYSTEM_ONLY],
* [CATEGORY_USER_ONLY], [CATEGORY_BOTH]
* [CATEGORY_USER_ONLY], [CATEGORY_BOTH]
*/
fun setDisplayCategory(category: Int) {
fragmentScope.launch {
fun setDisplayCategory(@Category category: Int) {
lifecycleScope.launch {
mutex.withLock {
displayCategory = category
}
@@ -177,10 +168,10 @@ abstract class AppListFragment: Fragment(R.layout.app_list_layout), MenuItem.OnA
* Set a custom filter to filter out items from the list.
*
* @param customFilter a function that takes a [PackageInfo] and
* returns a [Boolean] indicating whether to show the item or not.
* returns a [Boolean] indicating whether to show the item or not.
*/
fun setCustomFilter(customFilter: ((packageInfo: PackageInfo) -> Boolean)) {
fragmentScope.launch {
fun setCustomFilter(customFilter: (PackageInfo) -> Boolean) {
lifecycleScope.launch {
mutex.withLock {
packageFilter = customFilter
}
@@ -188,13 +179,13 @@ abstract class AppListFragment: Fragment(R.layout.app_list_layout), MenuItem.OnA
}
/**
* Set a [Comparator] for sorting the elements in the list..
* Set a [Comparator] for sorting the elements in the list.
*
* @param comparator a function that takes two [PackageInfo]'s and returns
* an [Int] representing their relative priority.
* an [Int] representing their relative priority.
*/
fun setComparator(comparator: ((a: PackageInfo, b: PackageInfo) -> Int)) {
fragmentScope.launch {
fun setComparator(comparator: (PackageInfo, PackageInfo) -> Int) {
lifecycleScope.launch {
mutex.withLock {
packageComparator = comparator
}
@@ -222,75 +213,111 @@ abstract class AppListFragment: Fragment(R.layout.app_list_layout), MenuItem.OnA
*/
open protected fun onAppDeselected(packageName: String) {}
protected fun refreshList() {
fragmentScope.launch {
val list = withContext(Dispatchers.Default) {
mutex.withLock {
packageList.filter {
when (displayCategory) {
CATEGORY_SYSTEM_ONLY -> it.applicationInfo.isSystemApp()
CATEGORY_USER_ONLY -> !it.applicationInfo.isSystemApp()
else -> true
} &&
getLabel(it).contains(searchText, true) &&
packageFilter(it)
}.sortedWith(packageComparator).map { appInfofromPackage(it) }
}
}
adapter.submitList(list)
if (needsToHideProgressBar) {
progressBar.visibility = View.GONE
needsToHideProgressBar = false
}
fun refreshList() {
lifecycleScope.launch {
refreshListInternal()
}
}
private fun appInfofromPackage(packageInfo: PackageInfo): AppInfo =
AppInfo(
packageInfo.packageName,
getLabel(packageInfo),
packageInfo.applicationInfo.loadIcon(packageManager),
)
private suspend fun refreshListInternal() {
val list = withContext(Dispatchers.Default) {
val sortedList = mutex.withLock {
pm.getInstalledPackages(PackageManager.MATCH_ALL).filter {
val categoryMatches = when (displayCategory) {
CATEGORY_SYSTEM_ONLY -> it.applicationInfo.isSystemApp()
CATEGORY_USER_ONLY -> !it.applicationInfo.isSystemApp()
else -> true
}
categoryMatches && packageFilter(it) &&
getLabel(it).contains(searchText, true)
}.sortedWith(packageComparator)
}
sortedList.map {
AppInfo(
it.packageName,
getLabel(it),
it.applicationInfo.loadIcon(pm),
)
}
}
adapter.submitList(list)
progressBar?.visibility = View.GONE
}
private fun getLabel(packageInfo: PackageInfo) =
packageInfo.applicationInfo.loadLabel(packageManager).toString()
packageInfo.applicationInfo.loadLabel(pm).toString()
private inner class AppListAdapter :
ListAdapter<AppInfo, AppListViewHolder>(itemCallback)
{
private val checkedList = getInitialCheckedList().toMutableList()
private class AppListAdapter(
initialCheckedList: List<String>,
private val layoutInflater: LayoutInflater
) : ListAdapter<AppInfo, AppListViewHolder>(itemCallback) {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) =
AppListViewHolder(layoutInflater.inflate(
R.layout.app_list_item, parent, false))
private val checkedList = initialCheckedList.toMutableList()
private var appSelectListener: (String) -> Unit = {}
private var appDeselectListener: (String) -> Unit = {}
private var listUpdateListener: (List<String>) -> Unit = {}
override fun onCreateViewHolder(
parent: ViewGroup,
viewType: Int
) = AppListViewHolder(
layoutInflater.inflate(
R.layout.app_list_item,
parent,
false /* attachToParent */
)
)
override fun onBindViewHolder(holder: AppListViewHolder, position: Int) {
val item = getItem(position)
val pkg = item.packageName
holder.label.setText(item.label)
holder.packageName.setText(pkg)
holder.label.text = item.label
holder.packageName.text = item.packageName
holder.icon.setImageDrawable(item.icon)
holder.checkBox.setChecked(checkedList.contains(pkg))
holder.checkBox.isChecked = checkedList.contains(item.packageName)
holder.itemView.setOnClickListener {
if (checkedList.contains(pkg)){
checkedList.remove(pkg)
onAppDeselected(pkg)
if (checkedList.contains(item.packageName)) {
checkedList.remove(item.packageName)
appDeselectListener(item.packageName)
} else {
checkedList.add(pkg)
onAppSelected(pkg)
checkedList.add(item.packageName)
appSelectListener(item.packageName)
}
notifyItemChanged(position)
onListUpdate(checkedList.toList())
listUpdateListener(checkedList.toList())
}
}
fun setOnAppSelectListener(listener: (String) -> Unit) {
appSelectListener = listener
}
fun setOnAppDeselectListener(listener: (String) -> Unit) {
appDeselectListener = listener
}
fun setOnListUpdateListener(listener: (List<String>) -> Unit) {
listUpdateListener = listener
}
companion object {
private val itemCallback = object : DiffUtil.ItemCallback<AppInfo>() {
override fun areItemsTheSame(oldInfo: AppInfo, newInfo: AppInfo) =
oldInfo.packageName == newInfo.packageName
override fun areContentsTheSame(oldInfo: AppInfo, newInfo: AppInfo) =
oldInfo == newInfo
}
}
}
private class AppListViewHolder(itemView: View) :
RecyclerView.ViewHolder(itemView) {
private class AppListViewHolder(
itemView: View
) : RecyclerView.ViewHolder(itemView) {
val icon: ImageView = itemView.findViewById(R.id.icon)
val label: TextView = itemView.findViewById(R.id.label)
val packageName: TextView = itemView.findViewById(R.id.packageName)
val checkBox: CheckBox = itemView.findViewById(R.id.checkBox)
val packageName: TextView = itemView.findViewById(R.id.package_name)
val checkBox: CheckBox = itemView.findViewById(R.id.check_box)
}
private data class AppInfo(
@@ -300,18 +327,16 @@ abstract class AppListFragment: Fragment(R.layout.app_list_layout), MenuItem.OnA
)
companion object {
private const val TAG = "AppListFragment"
const val CATEGORY_SYSTEM_ONLY = 0
const val CATEGORY_USER_ONLY = 1
const val CATEGORY_BOTH = 2
private val itemCallback = object : DiffUtil.ItemCallback<AppInfo>() {
override fun areItemsTheSame(oldInfo: AppInfo, newInfo: AppInfo) =
oldInfo.packageName == newInfo.packageName
override fun areContentsTheSame(oldInfo: AppInfo, newInfo: AppInfo) =
oldInfo == newInfo
}
@IntDef(value = intArrayOf(
CATEGORY_SYSTEM_ONLY,
CATEGORY_USER_ONLY,
CATEGORY_BOTH
))
@Retention(AnnotationRetention.SOURCE)
annotation class Category
}
}

View File

@@ -18,58 +18,49 @@
package com.cherish.settings.fragments;
import android.content.ContentResolver;
import android.content.res.Resources;
import android.content.Context;
import android.content.res.Resources;
import android.database.ContentObserver;
import android.os.Bundle;
import android.os.Handler;
import android.os.SystemProperties;
import android.os.UserHandle;
import android.os.Vibrator;
import android.os.RemoteException;
import android.os.PowerManager;
import android.os.ServiceManager;
import androidx.preference.PreferenceCategory;
import android.provider.Settings;
import android.view.View;
import androidx.preference.ListPreference;
import androidx.preference.Preference;
import androidx.preference.PreferenceCategory;
import androidx.preference.PreferenceScreen;
import androidx.preference.Preference.OnPreferenceChangeListener;
import androidx.preference.SwitchPreference;
import android.provider.Settings;
import android.widget.Toast;
import com.android.settings.R;
import com.cherish.settings.preferences.SystemSettingSwitchPreference;
import com.cherish.settings.preferences.SecureSettingSwitchPreference;
import com.android.internal.custom.hardware.LineageHardwareManager;
import com.android.internal.logging.nano.MetricsProto;
import com.android.internal.util.cherish.CherishUtils;
import com.android.settings.SettingsPreferenceFragment;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.settings.Utils;
import com.cherish.settings.preferences.CustomSeekBarPreference;
import com.android.internal.lineage.hardware.LineageHardwareManager;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.internal.util.cherish.CherishUtils;
import com.android.internal.util.hwkeys.ActionConstants;
import com.android.internal.util.hwkeys.ActionUtils;
import com.cherish.settings.preferences.CustomSeekBarPreference;
import com.cherish.settings.preferences.ActionFragment;
import com.android.settings.R;
import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.Utils;
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settingslib.search.SearchIndexable;
import android.provider.SearchIndexableResource;
import com.cherish.settings.preferences.ActionFragment;
import com.cherish.settings.preferences.SecureSettingSwitchPreference;
import com.cherish.settings.preferences.SystemSettingSwitchPreference;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@SearchIndexable(forTarget = SearchIndexable.ALL & ~SearchIndexable.ARC)
public class ButtonSettings extends ActionFragment implements OnPreferenceChangeListener {
public class ButtonSettings extends ActionFragment implements
Preference.OnPreferenceChangeListener {
private static final String HWKEY_DISABLE = "hardware_keys_disable";
private static final String NAVBAR_VISIBILITY = "navbar_visibility";
private static final String KEY_LAYOUT_SETTINGS = "layout_settings";
private static final String KEY_NAVIGATION_BAR_ARROWS = "navigation_bar_menu_arrow_keys";
private static final String KEY_NAVBAR_INVERSE = "navigation_bar_inverse";
private static final String KEY_NAVIGATION_COMPACT_LAYOUT = "navigation_bar_compact_layout";
private static final String KEY_SWAP_CAPACITIVE_KEYS = "swap_capacitive_keys";
// category keys
private static final String CATEGORY_HWKEY = "hardware_keys";
@@ -81,11 +72,7 @@ public class ButtonSettings extends ActionFragment implements OnPreferenceChange
private static final String CATEGORY_VOLUME = "volume_keys";
private static final String CATEGORY_POWER = "power_key";
private static final String KEY_BUTTON_MANUAL_BRIGHTNESS_NEW = "button_manual_brightness_new";
private static final String KEY_BUTTON_TIMEOUT = "button_timeout";
private static final String KEY_BUTON_BACKLIGHT_OPTIONS = "button_backlight_options_category";
// Masks for checking presence of hardware keys.
// Masks for checking presence of hardware keys.
// Must match values in frameworks/base/core/res/res/values/config.xml
public static final int KEY_MASK_HOME = 0x01;
public static final int KEY_MASK_BACK = 0x02;
@@ -95,20 +82,12 @@ public class ButtonSettings extends ActionFragment implements OnPreferenceChange
public static final int KEY_MASK_CAMERA = 0x20;
public static final int KEY_MASK_VOLUME = 0x40;
private static final String TORCH_POWER_BUTTON_GESTURE = "torch_power_button_gesture";
private SwitchPreference mHwKeyDisable;
private ListPreference mTorchPowerButton;
private CustomSeekBarPreference mButtonTimoutBar;
private CustomSeekBarPreference mManualButtonBrightness;
private PreferenceCategory mButtonBackLightCategory;
private SwitchPreference mNavbarVisibility;
private Preference mLayoutSettings;
private SystemSettingSwitchPreference mNavigationArrows;
private boolean mIsNavSwitchingMode = false;
private Handler mHandler;
private PreferenceCategory mHwKeyCategory;
private SecureSettingSwitchPreference mSwapCapacitiveKeys;
private SwitchPreference mHwKeyDisable;
private SystemSettingSwitchPreference mNavbarInverse;
private SystemSettingSwitchPreference mNavigationCompactLayout;
@Override
public void onCreate(Bundle icicle) {
@@ -119,8 +98,14 @@ public class ButtonSettings extends ActionFragment implements OnPreferenceChange
final ContentResolver resolver = getActivity().getContentResolver();
final PreferenceScreen prefScreen = getPreferenceScreen();
mSwapCapacitiveKeys = findPreference(KEY_SWAP_CAPACITIVE_KEYS);
if (mSwapCapacitiveKeys != null && !isKeySwapperSupported(getActivity())) {
prefScreen.removePreference(mSwapCapacitiveKeys);
mSwapCapacitiveKeys = null;
}
final boolean needsNavbar = ActionUtils.hasNavbarByDefault(getActivity());
final PreferenceCategory hwkeyCat = (PreferenceCategory) prefScreen
mHwKeyCategory = (PreferenceCategory) prefScreen
.findPreference(CATEGORY_HWKEY);
int keysDisabled = 0;
if (!needsNavbar) {
@@ -131,19 +116,19 @@ public class ButtonSettings extends ActionFragment implements OnPreferenceChange
mHwKeyDisable.setChecked(keysDisabled != 0);
mHwKeyDisable.setOnPreferenceChangeListener(this);
} else {
prefScreen.removePreference(hwkeyCat);
prefScreen.removePreference(mHwKeyCategory);
}
// bits for hardware keys present on device
// bits for hardware keys present on device
final int deviceKeys = getResources().getInteger(
com.android.internal.R.integer.config_deviceHardwareKeys);
// read bits for present hardware keys
// read bits for present hardware keys
final boolean hasHomeKey = (deviceKeys & KEY_MASK_HOME) != 0;
final boolean hasBackKey = (deviceKeys & KEY_MASK_BACK) != 0;
final boolean hasMenuKey = (deviceKeys & KEY_MASK_MENU) != 0;
final boolean hasAssistKey = (deviceKeys & KEY_MASK_ASSIST) != 0;
final boolean hasAppSwitchKey = (deviceKeys & KEY_MASK_APP_SWITCH) != 0;
// load categories and init/remove preferences based on device
// load categories and init/remove preferences based on device
// configuration
final PreferenceCategory backCategory = (PreferenceCategory) prefScreen
.findPreference(CATEGORY_BACK);
@@ -155,121 +140,57 @@ public class ButtonSettings extends ActionFragment implements OnPreferenceChange
.findPreference(CATEGORY_ASSIST);
final PreferenceCategory appSwitchCategory = (PreferenceCategory) prefScreen
.findPreference(CATEGORY_APPSWITCH);
// back key
// back key
if (!hasBackKey) {
prefScreen.removePreference(backCategory);
}
// home key
// home key
if (!hasHomeKey) {
prefScreen.removePreference(homeCategory);
}
// App switch key (recents)
// App switch key (recents)
if (!hasAppSwitchKey) {
prefScreen.removePreference(appSwitchCategory);
}
// menu key
// menu key
if (!hasMenuKey) {
prefScreen.removePreference(menuCategory);
}
// search/assist key
// search/assist key
if (!hasAssistKey) {
prefScreen.removePreference(assistCategory);
}
// let super know we can load ActionPreferences
// let super know we can load ActionPreferences
onPreferenceScreenLoaded(ActionConstants.getDefaults(ActionConstants.HWKEYS));
// load preferences first
setActionPreferencesEnabled(keysDisabled == 0);
// screen off torch
mTorchPowerButton = (ListPreference) findPreference(TORCH_POWER_BUTTON_GESTURE);
int mTorchPowerButtonValue = Settings.System.getInt(resolver,
Settings.System.TORCH_POWER_BUTTON_GESTURE, 0);
mTorchPowerButton.setValue(Integer.toString(mTorchPowerButtonValue));
mTorchPowerButton.setSummary(mTorchPowerButton.getEntry());
mTorchPowerButton.setOnPreferenceChangeListener(this);
mManualButtonBrightness = (CustomSeekBarPreference) findPreference(
KEY_BUTTON_MANUAL_BRIGHTNESS_NEW);
final int customButtonBrightness = getResources().getInteger(
com.android.internal.R.integer.config_button_brightness_default);
final int currentBrightness = Settings.System.getInt(resolver,
Settings.System.CUSTOM_BUTTON_BRIGHTNESS, customButtonBrightness);
PowerManager pm = (PowerManager)getActivity().getSystemService(Context.POWER_SERVICE);
mManualButtonBrightness.setMax(pm.getMaximumScreenBrightnessSetting());
mManualButtonBrightness.setValue(currentBrightness);
mManualButtonBrightness.setOnPreferenceChangeListener(this);
mNavbarVisibility = (SwitchPreference) findPreference(NAVBAR_VISIBILITY);
boolean showing = Settings.System.getIntForUser(resolver,
Settings.System.FORCE_SHOW_NAVBAR,
CherishUtils.hasNavbarByDefault(getActivity()) ? 1 : 0, UserHandle.USER_CURRENT) != 0;
mNavbarVisibility.setChecked(showing);
mNavbarVisibility.setOnPreferenceChangeListener(this);
mHandler = new Handler();
mButtonTimoutBar = (CustomSeekBarPreference) findPreference(KEY_BUTTON_TIMEOUT);
int currentTimeout = Settings.System.getInt(resolver,
Settings.System.BUTTON_BACKLIGHT_TIMEOUT, 0);
mButtonTimoutBar.setValue(currentTimeout);
mButtonTimoutBar.setOnPreferenceChangeListener(this);
final boolean enableBacklightOptions = getResources().getBoolean(
com.android.internal.R.bool.config_button_brightness_support);
mButtonBackLightCategory = (PreferenceCategory) findPreference(KEY_BUTON_BACKLIGHT_OPTIONS);
if (!enableBacklightOptions) {
prefScreen.removePreference(mButtonBackLightCategory);
}
mLayoutSettings = (Preference) findPreference(KEY_LAYOUT_SETTINGS);
mNavigationArrows = (SystemSettingSwitchPreference) findPreference(KEY_NAVIGATION_BAR_ARROWS);
final boolean isThreeButtonNavbarEnabled = CherishUtils.isThemeEnabled("com.android.internal.systemui.navbar.threebutton");
mNavbarInverse = (SystemSettingSwitchPreference) findPreference(KEY_NAVBAR_INVERSE);
mNavbarInverse.setEnabled(isThreeButtonNavbarEnabled);
mNavigationCompactLayout = (SystemSettingSwitchPreference) findPreference(KEY_NAVIGATION_COMPACT_LAYOUT);
mNavigationCompactLayout.setEnabled(isThreeButtonNavbarEnabled);
}
private static boolean isKeyDisablerSupported(Context context) {
final LineageHardwareManager hardware = LineageHardwareManager.getInstance(context);
return hardware.isSupported(LineageHardwareManager.FEATURE_KEY_DISABLE);
}
private static boolean isKeySwapperSupported(Context context) {
final LineageHardwareManager hardware = LineageHardwareManager.getInstance(context);
return hardware.isSupported(LineageHardwareManager.FEATURE_KEY_SWAP);
}
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
ContentResolver resolver = getActivity().getContentResolver();
if (preference == mTorchPowerButton) {
int mTorchPowerButtonValue = Integer.valueOf((String) newValue);
int index = mTorchPowerButton.findIndexOfValue((String) newValue);
mTorchPowerButton.setSummary(
mTorchPowerButton.getEntries()[index]);
Settings.System.putInt(resolver, Settings.System.TORCH_POWER_BUTTON_GESTURE,
mTorchPowerButtonValue);
return true;
} else if (preference == mHwKeyDisable) {
if (preference == mHwKeyDisable) {
boolean value = (Boolean) newValue;
Settings.System.putInt(getContentResolver(), Settings.System.HARDWARE_KEYS_DISABLE,
value ? 1 : 0);
return true;
} else if (preference == mButtonTimoutBar) {
int buttonTimeout = (Integer) newValue;
Settings.System.putInt(getContentResolver(),
Settings.System.BUTTON_BACKLIGHT_TIMEOUT, buttonTimeout);
return true;
} else if (preference == mManualButtonBrightness) {
int buttonBrightness = (Integer) newValue;
Settings.System.putInt(getContentResolver(),
Settings.System.CUSTOM_BUTTON_BRIGHTNESS, buttonBrightness);
return true;
} else if (preference == mNavbarVisibility) {
if (mIsNavSwitchingMode) {
return false;
}
mIsNavSwitchingMode = true;
boolean showing = ((Boolean)newValue);
Settings.System.putIntForUser(resolver, Settings.System.FORCE_SHOW_NAVBAR,
showing ? 1 : 0, UserHandle.USER_CURRENT);
mNavbarVisibility.setChecked(showing);
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
mIsNavSwitchingMode = false;
}
}, 1500);
setActionPreferencesEnabled(!value);
return true;
}
return false;
@@ -277,42 +198,32 @@ public class ButtonSettings extends ActionFragment implements OnPreferenceChange
@Override
public int getMetricsCategory() {
return MetricsProto.MetricsEvent.CHERISH_SETTINGS;
return MetricsEvent.CHERISH_SETTINGS;
}
private static boolean isKeyDisablerSupported(Context context) {
final LineageHardwareManager hardware = LineageHardwareManager.getInstance(context);
return hardware.isSupported(LineageHardwareManager.FEATURE_KEY_DISABLE);
}
@Override
protected boolean usesExtendedActionsList() {
return true;
}
/**
/**
* For Search.
*/
public static final SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
new BaseSearchIndexProvider() {
@Override
public List<SearchIndexableResource> getXmlResourcesToIndex(Context context,
boolean enabled) {
ArrayList<SearchIndexableResource> result =
new ArrayList<SearchIndexableResource>();
SearchIndexableResource sir = new SearchIndexableResource(context);
sir.xmlResId = R.xml.cherish_settings_button;
result.add(sir);
return result;
}
public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
new BaseSearchIndexProvider(R.xml.cherish_settings_button) {
@Override
public List<String> getNonIndexableKeys(Context context) {
List<String> keys = super.getNonIndexableKeys(context);
LineageHardwareManager mLineageHardware = LineageHardwareManager.getInstance(context);
if (!isKeyDisablerSupported(context)) {
keys.add(HWKEY_DISABLE);
keys.add(CATEGORY_HWKEY);
keys.add(CATEGORY_BACK);
keys.add(CATEGORY_HOME);
keys.add(CATEGORY_MENU);
keys.add(CATEGORY_ASSIST);
keys.add(CATEGORY_APPSWITCH);
}
return keys;
}
};
};
}

View File

@@ -14,21 +14,32 @@
* limitations under the License.
*/
package com.cherish.settings.fragment
package com.cherish.settings.fragments
import androidx.preference.Preference
import com.android.internal.logging.nano.MetricsProto
import com.android.settings.dashboard.DashboardFragment
import com.cherish.settings.fragments.ColorPickerFragment
import com.cherish.settings.preferences.ColorPickerPreference
abstract class CherishDashboardFragment: DashboardFragment() {
override fun getMetricsCategory(): Int = MetricsProto.MetricsEvent.CHERISH_SETTINGS
override fun onDisplayPreferenceDialog(preference: Preference) {
super.onDisplayPreferenceDialog(preference)
if (preference is ColorPickerPreference) {
ColorPickerFragment(preference.color).apply {
setOnConfirmListener {
preference.setColor(it)
}
}.show(childFragmentManager, COLOR_PICKER_DIALOG_KEY)
} else {
super.onDisplayPreferenceDialog(preference)
}
}
companion object {
const val REQUEST_KEY = "CherishDashboardFragment#RequestKey"
const val COLOR_PICKER_DIALOG_KEY = "color_picker_dialog"
}
}

View File

@@ -1,5 +1,5 @@
/*
* Copyright (C) 2020-2022 The CherishOS Project
* Copyright (C) 2019-2022 The CherishOS Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -15,35 +15,44 @@
*/
package com.cherish.settings.fragments;
import android.app.AlertDialog;
import android.content.ContentResolver;
import android.content.Context;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.content.pm.ResolveInfo;
import android.content.DialogInterface;
import android.content.DialogInterface.OnCancelListener;
import android.content.res.Resources;
import android.database.ContentObserver;
import android.os.Bundle;
import android.os.Handler;
import android.os.SystemProperties;
import android.os.UserHandle;
import android.provider.Settings;
import android.text.format.DateFormat;
import android.view.View;
import android.widget.EditText;
import androidx.preference.ListPreference;
import androidx.preference.Preference.OnPreferenceChangeListener;
import androidx.preference.Preference;
import androidx.preference.PreferenceCategory;
import androidx.preference.PreferenceScreen;
import androidx.preference.Preference.OnPreferenceChangeListener;
import androidx.preference.SwitchPreference;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.internal.util.cherish.CherishUtils;
import com.android.settings.R;
import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.Utils;
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settingslib.search.SearchIndexable;
import com.cherish.settings.fragments.Clock;
import com.cherish.settings.preferences.SecureSettingSwitchPreference;
import com.cherish.settings.preferences.SystemSettingListPreference;
import com.cherish.settings.preferences.SystemSettingSeekBarPreference;
import com.cherish.settings.preferences.SystemSettingSwitchPreference;
import java.util.Date;
@SearchIndexable(forTarget = SearchIndexable.ALL & ~SearchIndexable.ARC)
public class Clock extends SettingsPreferenceFragment implements
Preference.OnPreferenceChangeListener {
@@ -51,13 +60,26 @@ public class Clock extends SettingsPreferenceFragment implements
private static final String TAG = "Clock";
private static final String STATUS_BAR_AM_PM = "status_bar_am_pm";
private static final String CLOCK_DATE_DISPLAY = "status_bar_clock_date_display";
private static final String CLOCK_DATE_POSITION = "status_bar_clock_date_position";
private static final String CLOCK_DATE_STYLE = "status_bar_clock_date_style";
private static final String CLOCK_DATE_FORMAT = "status_bar_clock_date_format";
private static final int CLOCK_DATE_STYLE_LOWERCASE = 1;
private static final int CLOCK_DATE_STYLE_UPPERCASE = 2;
private static final int CUSTOM_CLOCK_DATE_FORMAT_INDEX = 18;
private SystemSettingListPreference mStatusBarAmPm;
private SystemSettingListPreference mClockDateDisplay;
private SystemSettingListPreference mClockDatePosition;
private SystemSettingListPreference mClockDateStyle;
private ListPreference mClockDateFormat;
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
addPreferencesFromResource(R.xml.cherish_settings_status_bar_clock);
final ContentResolver resolver = getActivity().getContentResolver();
final Context mContext = getActivity().getApplicationContext();
final PreferenceScreen prefScreen = getPreferenceScreen();
@@ -69,14 +91,131 @@ public class Clock extends SettingsPreferenceFragment implements
mStatusBarAmPm.setEnabled(false);
mStatusBarAmPm.setSummary(R.string.status_bar_am_pm_info);
}
int dateDisplay = Settings.System.getIntForUser(resolver,
Settings.System.STATUS_BAR_CLOCK_DATE_DISPLAY, 0, UserHandle.USER_CURRENT);
mClockDateDisplay = (SystemSettingListPreference) findPreference(CLOCK_DATE_DISPLAY);
mClockDateDisplay.setOnPreferenceChangeListener(this);
mClockDatePosition = (SystemSettingListPreference) findPreference(CLOCK_DATE_POSITION);
mClockDatePosition.setEnabled(dateDisplay > 0);
mClockDatePosition.setOnPreferenceChangeListener(this);
mClockDateStyle = (SystemSettingListPreference) findPreference(CLOCK_DATE_STYLE);
mClockDateStyle.setEnabled(dateDisplay > 0);
mClockDateStyle.setOnPreferenceChangeListener(this);
mClockDateFormat = (ListPreference) findPreference(CLOCK_DATE_FORMAT);
if (mClockDateFormat.getValue() == null) {
mClockDateFormat.setValue("EEE");
}
parseClockDateFormats();
mClockDateFormat.setEnabled(dateDisplay > 0);
mClockDateFormat.setOnPreferenceChangeListener(this);
}
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
AlertDialog dialog;
ContentResolver resolver = getActivity().getContentResolver();
if (preference == mClockDateDisplay) {
int val = Integer.parseInt((String) newValue);
if (val == 0) {
mClockDatePosition.setEnabled(false);
mClockDateStyle.setEnabled(false);
mClockDateFormat.setEnabled(false);
} else {
mClockDatePosition.setEnabled(true);
mClockDateStyle.setEnabled(true);
mClockDateFormat.setEnabled(true);
}
return true;
} else if (preference == mClockDatePosition) {
parseClockDateFormats();
return true;
} else if (preference == mClockDateStyle) {
parseClockDateFormats();
return true;
} else if (preference == mClockDateFormat) {
int index = mClockDateFormat.findIndexOfValue((String) newValue);
if (index == CUSTOM_CLOCK_DATE_FORMAT_INDEX) {
AlertDialog.Builder alert = new AlertDialog.Builder(getActivity());
alert.setTitle(R.string.status_bar_date_string_edittext_title);
alert.setMessage(R.string.status_bar_date_string_edittext_summary);
final EditText input = new EditText(getActivity());
String oldText = Settings.System.getString(
resolver,
Settings.System.STATUS_BAR_CLOCK_DATE_FORMAT);
if (oldText != null) {
input.setText(oldText);
}
alert.setView(input);
alert.setPositiveButton(R.string.menu_save, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialogInterface, int whichButton) {
String value = input.getText().toString();
if (value.equals("")) {
return;
}
Settings.System.putString(resolver,
Settings.System.STATUS_BAR_CLOCK_DATE_FORMAT, value);
return;
}
});
alert.setNegativeButton(R.string.menu_cancel,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialogInterface, int which) {
return;
}
});
dialog = alert.create();
dialog.show();
} else {
if ((String) newValue != null) {
Settings.System.putString(resolver,
Settings.System.STATUS_BAR_CLOCK_DATE_FORMAT, (String) newValue);
}
}
return true;
}
return false;
}
private void parseClockDateFormats() {
String[] dateEntries = getResources().getStringArray(
R.array.status_bar_date_format_entries_values);
CharSequence parsedDateEntries[];
parsedDateEntries = new String[dateEntries.length];
Date now = new Date();
int lastEntry = dateEntries.length - 1;
int dateFormat = Settings.System.getIntForUser(getActivity()
.getContentResolver(), Settings.System.STATUS_BAR_CLOCK_DATE_STYLE, 0, UserHandle.USER_CURRENT);
for (int i = 0; i < dateEntries.length; i++) {
if (i == lastEntry) {
parsedDateEntries[i] = dateEntries[i];
} else {
String newDate;
CharSequence dateString = DateFormat.format(dateEntries[i], now);
if (dateFormat == CLOCK_DATE_STYLE_LOWERCASE) {
newDate = dateString.toString().toLowerCase();
} else if (dateFormat == CLOCK_DATE_STYLE_UPPERCASE) {
newDate = dateString.toString().toUpperCase();
} else {
newDate = dateString.toString();
}
parsedDateEntries[i] = newDate;
}
}
mClockDateFormat.setEntries(parsedDateEntries);
}
@Override
public int getMetricsCategory() {
return MetricsEvent.CHERISH_SETTINGS;

View File

@@ -0,0 +1,418 @@
/*
* Copyright (C) 2022 FlamingoOS 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 com.cherish.settings.fragments
import android.annotation.ColorInt
import android.content.pm.ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
import android.content.res.ColorStateList
import android.graphics.Color
import android.graphics.drawable.Drawable
import android.graphics.drawable.GradientDrawable
import android.os.Bundle
import android.text.Editable
import android.text.Spanned
import android.text.InputFilter
import android.view.HapticFeedbackConstants.KEYBOARD_PRESS
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Button
import android.widget.EditText
import android.widget.RadioGroup
import android.widget.SeekBar
import android.widget.TextView
import android.widget.Toast
import androidx.core.graphics.ColorUtils
import androidx.core.widget.doAfterTextChanged
import androidx.fragment.app.DialogFragment.STYLE_NORMAL
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
import com.android.settings.R
class ColorPickerFragment(
defaultColor: String? = "#FFFFFF",
) : BottomSheetDialogFragment(),
RadioGroup.OnCheckedChangeListener,
SeekBar.OnSeekBarChangeListener {
private lateinit var colorPreview: View
private lateinit var colorInput: EditText
private lateinit var seekBarOne: SeekBar
private lateinit var seekBarTwo: SeekBar
private lateinit var seekBarThree: SeekBar
private var colorModel = ColorModel.RGB
private var textInputChangedInternal = false // Internal variable to prevent loops with TextWatcher
private var confirmListener: (String) -> Unit = {}
@ColorInt
private var color: Int
init {
color = if (defaultColor == null || defaultColor.isEmpty()) {
Color.WHITE
} else {
try {
Color.parseColor(defaultColor)
} catch (e: IllegalArgumentException) {
Color.WHITE
}
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
activity?.requestedOrientation = SCREEN_ORIENTATION_PORTRAIT
setStyle(STYLE_NORMAL, R.style.ColorPickerStyle)
}
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View = inflater.inflate(R.layout.color_picker_layout, container, false)
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
colorPreview = view.findViewById(R.id.color_preview)
colorInput = view.findViewById(R.id.color_input)
colorInput.doAfterTextChanged {
if (textInputChangedInternal) {
// Reset it here
textInputChangedInternal = false
return@doAfterTextChanged
}
if (it?.length != 7) return@doAfterTextChanged
color = try {
Color.parseColor(it.toString())
} catch (e: IllegalArgumentException) {
Toast.makeText(
context,
R.string.invalid_color,
Toast.LENGTH_SHORT
)
Color.WHITE
}
updateSliders()
updateSliderGradients(false)
previewColor(true)
}
colorInput.filters = arrayOf(
InputFilter.LengthFilter(7),
InputFilter filter@ { source, start, end, _, dstart, dend ->
// Deletion
if (start == 0 && end == 0) {
return@filter null
}
if (dstart == 0) {
// First character has to be # and rest of them
// (if present) be a valid hex char
if (!source.startsWith("#")) {
return@filter ""
}
// Just a single char
if (dstart == dend) return@filter null
if (!HEX_PATTERN.matches(source.subSequence(1, end))) {
return@filter ""
}
} else {
// Does not start from 0, so every char has to be valid hex
if (!HEX_PATTERN.matches(source)) {
return@filter ""
}
}
if ((end - start) == 7) { // Full hex input
if (!COLOR_HEX_PATTERN.matches(source)) {
return@filter ""
}
}
null
}
)
view.findViewById<Button>(R.id.cancel_button).setOnClickListener {
it.performHapticFeedback(KEYBOARD_PRESS)
dialog?.dismiss()
}
view.findViewById<Button>(R.id.confirm_button).setOnClickListener {
it.performHapticFeedback(KEYBOARD_PRESS)
dialog?.dismiss()
val colorHex = colorInput.text.toString()
if (colorHex.isEmpty() || colorHex.length == 7) {
confirmListener(colorHex)
}
}
/*
* Set the drawables as mutable so that they
* do not share a constant state or else all
* three slider gradients will look alike
*/
seekBarOne = view.findViewById<SeekBar>(R.id.seekBar1).also {
it.progressDrawable.mutate()
it.setOnSeekBarChangeListener(this)
}
seekBarTwo = view.findViewById<SeekBar>(R.id.seekBar2).also {
it.progressDrawable.mutate()
it.setOnSeekBarChangeListener(this)
}
seekBarThree = view.findViewById<SeekBar>(R.id.seekBar3).also {
it.progressDrawable.mutate()
it.setOnSeekBarChangeListener(this)
}
// Register listener for color model change
view.findViewById<RadioGroup>(R.id.color_model_group).also {
it.setOnCheckedChangeListener(this)
}
// Update sliders and preview
updateSliderMax()
updateSliders()
updateSliderGradients(true)
previewColor(false)
}
override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) {
if (!fromUser) return
color = when (colorModel) {
ColorModel.RGB -> {
Color.rgb(
seekBarOne.progress,
seekBarTwo.progress,
seekBarThree.progress
)
}
ColorModel.HSV -> {
HSVToColor(
seekBarOne.progress.toFloat(),
seekBarTwo.progress / 100f,
seekBarThree.progress / 100f
)
}
ColorModel.HSL -> {
HSLToColor(
seekBarOne.progress.toFloat(),
seekBarTwo.progress / 100f,
seekBarThree.progress / 100f
)
}
}
if (colorModel != ColorModel.RGB) {
updateSliderGradients(false)
}
previewColor(false)
}
override fun onStartTrackingTouch(seekBar: SeekBar) {
// Not implemented
}
override fun onStopTrackingTouch(seekBar: SeekBar) {
// Not implemented
}
override fun onCheckedChanged(group: RadioGroup, checkedId: Int) {
colorModel = when (checkedId) {
R.id.rgb_button -> ColorModel.RGB
R.id.hsv_button -> ColorModel.HSV
R.id.hsl_button -> ColorModel.HSL
else -> ColorModel.RGB
}
updateSliderMax()
updateSliders()
updateSliderGradients(true)
}
/*
* Set a confirmation listener that will be invoked when confirm
* button of the dialog is pressed.
*
* @param listener the listener to be invoked. Hex value of the
* color (including # prefix and RGB) will be the type parameter
* of the listener. Do note that the parameter can also be empty.
*/
fun setOnConfirmListener(listener: (String) -> Unit) {
confirmListener = listener
}
/**
* Used to update sliders if color model changes or
* user inputs a color hex. For the latter it must be called
* only after the accent colors are updated.
*/
private fun updateSliders() {
when (colorModel) {
ColorModel.RGB -> updateSliderProgressFromColor()
ColorModel.HSV -> {
val array = FloatArray(3)
Color.colorToHSV(color, array)
updateSliderProgressFromHSVorHSL(array)
}
ColorModel.HSL -> {
val array = FloatArray(3)
ColorUtils.colorToHSL(color, array)
updateSliderProgressFromHSVorHSL(array)
}
}
}
// For updating RGB slider progress
private fun updateSliderProgressFromColor() {
seekBarOne.progress = Color.red(color)
seekBarTwo.progress = Color.green(color)
seekBarThree.progress = Color.blue(color)
}
// For updating HSV / HSL slider progress
private fun updateSliderProgressFromHSVorHSL(hsvOrHSL: FloatArray) {
seekBarOne.progress = hsvOrHSL[0].toInt()
seekBarTwo.progress = (hsvOrHSL[1] * 100).toInt()
seekBarThree.progress = (hsvOrHSL[2] * 100).toInt()
}
// For updating the slider GradientDrawable's based on ColorModel
private fun updateSliderGradients(colorModelChanged: Boolean) {
if (colorModel == ColorModel.RGB) {
if (colorModelChanged) {
updateRGBGradient(seekBarOne.progressDrawable, Color.RED)
updateRGBGradient(seekBarTwo.progressDrawable, Color.GREEN)
updateRGBGradient(seekBarThree.progressDrawable, Color.BLUE)
}
} else {
if (colorModelChanged) {
updateHueGradient()
}
updateSaturationGradient()
if (colorModel == ColorModel.HSV) {
updateValueGradient()
} else {
updateLuminanceGradient()
}
}
}
private fun updateLuminanceGradient() {
val drawable = seekBarThree.progressDrawable as GradientDrawable
drawable.colors = intArrayOf(
Color.BLACK,
HSLToColor(
seekBarOne.progress.toFloat(),
seekBarTwo.progress / 100f,
0.5f
),
Color.WHITE,
)
}
private fun updateValueGradient() {
val drawable = seekBarThree.progressDrawable as GradientDrawable
drawable.colors = intArrayOf(
Color.BLACK,
HSVToColor(
seekBarOne.progress.toFloat(),
seekBarTwo.progress / 100f,
1f
),
)
}
private fun updateSaturationGradient() {
val drawable = seekBarTwo.progressDrawable as GradientDrawable
drawable.colors = intArrayOf(
Color.WHITE,
if (colorModel == ColorModel.HSV) {
HSVToColor(
seekBarOne.progress.toFloat(),
1f,
seekBarThree.progress / 100f
)
} else {
HSLToColor(
seekBarOne.progress.toFloat(),
1f,
seekBarThree.progress / 100f
)
}
)
}
private fun updateHueGradient() {
val drawable = seekBarOne.progressDrawable as GradientDrawable
drawable.colors = hueGradientColors
}
private fun updateRGBGradient(progressDrawable: Drawable, color: Int) {
val drawable = progressDrawable as GradientDrawable
drawable.colors = intArrayOf(Color.BLACK, color)
}
// inputFromUser should be set to true when user has entered a hex color
private fun previewColor(inputFromUser: Boolean) {
colorPreview.backgroundTintList = ColorStateList.valueOf(color)
colorInput.setTextColor(
if (ColorUtils.calculateLuminance(color) > 0.5) {
Color.BLACK
} else {
Color.WHITE
}
)
textInputChangedInternal = true
if (!inputFromUser) {
colorInput.setText(colorToHex(color))
}
}
private fun updateSliderMax() {
val isRGB = colorModel == ColorModel.RGB
seekBarOne.max = if (isRGB) 255 else 360
seekBarTwo.max = if (isRGB) 255 else 100
seekBarThree.max = if (isRGB) 255 else 100
}
private enum class ColorModel {
RGB,
HSL,
HSV
}
companion object {
private val HEX_PATTERN = Regex("[0-9a-fA-F]+")
private val COLOR_HEX_PATTERN = Regex("^[#][0-9a-fA-F]{6}")
private val hueGradientColors = IntArray(7) {
HSVToColor(it * 60f, 1f, 1f)
}
private fun HSVToColor(
hue: Float,
sat: Float,
value: Float,
): Int = Color.HSVToColor(floatArrayOf(hue, sat, value))
private fun HSLToColor(
hue: Float,
sat: Float,
lum: Float,
): Int = ColorUtils.HSLToColor(floatArrayOf(hue, sat, lum))
private fun colorToHex(color: Int) = String.format("#%06X", (0xFFFFFF and color))
}
}

View File

@@ -1,170 +0,0 @@
/*
* Copyright (C) 2020 Yet Another AOSP 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 com.cherish.settings.fragments;
import android.content.ContentResolver;
import android.content.res.Resources;
import android.os.Bundle;
import android.os.UserHandle;
import androidx.preference.ListPreference;
import androidx.preference.Preference;
import androidx.preference.PreferenceCategory;
import androidx.preference.PreferenceScreen;
import android.provider.Settings;
import android.util.TypedValue;
import com.android.internal.logging.nano.MetricsProto;
import com.android.settings.R;
import com.android.settings.SettingsPreferenceFragment;
import net.margaritov.preference.colorpicker.ColorPickerPreference;
import com.cherish.settings.preferences.CustomSeekBarPreference;
import com.cherish.settings.preferences.SystemSettingListPreference;
import com.cherish.settings.preferences.SystemSettingSwitchPreference;
public class EdgeLightningSettings extends SettingsPreferenceFragment implements
Preference.OnPreferenceChangeListener {
private static String KEY_DURATION = "ambient_notification_light_duration";
private static String KEY_REPEATS = "ambient_notification_light_repeats";
private static String KEY_TIMEOUT = "ambient_notification_light_timeout";
private static String KEY_COLOR_MODE = "ambient_notification_color_mode";
private static String KEY_COLOR = "ambient_notification_light_color";
private CustomSeekBarPreference mDurationPref;
private CustomSeekBarPreference mRepeatsPref;
private SystemSettingListPreference mTimeoutPref;
private SystemSettingListPreference mColorModePref;
private ColorPickerPreference mColorPref;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.edge_lightning_settings);
final ContentResolver resolver = getContentResolver();
final int accentColor = getAccentColor();
mDurationPref = (CustomSeekBarPreference) findPreference(KEY_DURATION);
int value = Settings.System.getIntForUser(resolver,
KEY_DURATION, 2, UserHandle.USER_CURRENT);
mDurationPref.setValue(value);
mDurationPref.setOnPreferenceChangeListener(this);
mRepeatsPref = (CustomSeekBarPreference) findPreference(KEY_REPEATS);
int repeats = Settings.System.getIntForUser(resolver,
KEY_REPEATS, 0, UserHandle.USER_CURRENT);
mRepeatsPref.setValue(repeats);
mRepeatsPref.setOnPreferenceChangeListener(this);
mTimeoutPref = (SystemSettingListPreference) findPreference(KEY_TIMEOUT);
value = Settings.System.getIntForUser(resolver,
KEY_TIMEOUT, accentColor, UserHandle.USER_CURRENT);
mTimeoutPref.setValue(Integer.toString(value));
mTimeoutPref.setSummary(mTimeoutPref.getEntry());
mTimeoutPref.setOnPreferenceChangeListener(this);
updateTimeoutEnablement(repeats);
mColorPref = (ColorPickerPreference) findPreference(KEY_COLOR);
value = Settings.System.getIntForUser(resolver,
KEY_COLOR, accentColor, UserHandle.USER_CURRENT);
mColorPref.setDefaultColor(accentColor);
String colorHex = String.format("#%08x", (0xFFFFFFFF & value));
if (value == accentColor) {
mColorPref.setSummary(R.string.default_string);
} else {
mColorPref.setSummary(colorHex);
}
mColorPref.setNewPreviewColor(value);
mColorPref.setOnPreferenceChangeListener(this);
mColorModePref = (SystemSettingListPreference) findPreference(KEY_COLOR_MODE);
value = Settings.System.getIntForUser(resolver,
KEY_COLOR_MODE, 0, UserHandle.USER_CURRENT);
mColorModePref.setValue(Integer.toString(value));
mColorModePref.setSummary(mColorModePref.getEntry());
mColorModePref.setOnPreferenceChangeListener(this);
mColorPref.setEnabled(value == 3);
}
@Override
public int getMetricsCategory() {
return MetricsProto.MetricsEvent.CHERISH_SETTINGS;
}
public boolean onPreferenceChange(Preference preference, Object newValue) {
final ContentResolver resolver = getContentResolver();
if (preference == mDurationPref) {
int value = (Integer) newValue;
Settings.System.putIntForUser(resolver,
KEY_DURATION, value, UserHandle.USER_CURRENT);
return true;
} else if (preference == mRepeatsPref) {
int value = (Integer) newValue;
Settings.System.putIntForUser(resolver,
KEY_REPEATS, value, UserHandle.USER_CURRENT);
updateTimeoutEnablement(value);
return true;
} else if (preference == mTimeoutPref) {
int value = Integer.valueOf((String) newValue);
int index = mTimeoutPref.findIndexOfValue((String) newValue);
mTimeoutPref.setSummary(mTimeoutPref.getEntries()[index]);
Settings.System.putIntForUser(resolver,
KEY_TIMEOUT, value, UserHandle.USER_CURRENT);
return true;
} else if (preference == mColorModePref) {
int value = Integer.valueOf((String) newValue);
int index = mColorModePref.findIndexOfValue((String) newValue);
mColorModePref.setSummary(mColorModePref.getEntries()[index]);
Settings.System.putIntForUser(resolver,
KEY_COLOR_MODE, value, UserHandle.USER_CURRENT);
mColorPref.setEnabled(value == 3);
return true;
} else if (preference == mColorPref) {
int accentColor = getAccentColor();
String hex = ColorPickerPreference.convertToARGB(
Integer.valueOf(String.valueOf(newValue)));
if (hex.equals(String.format("#%08x", (0xFFFFFFFF & accentColor)))) {
preference.setSummary(R.string.default_string);
} else {
preference.setSummary(hex);
}
int color = ColorPickerPreference.convertToColorInt(hex);
Settings.System.putIntForUser(resolver,
KEY_COLOR, color, UserHandle.USER_CURRENT);
return true;
}
return false;
}
private int getAccentColor() {
final TypedValue value = new TypedValue();
getContext().getTheme().resolveAttribute(android.R.attr.colorAccent, value, true);
return value.data;
}
private void updateTimeoutEnablement(int repeats) {
if (repeats == 0) {
int value = Settings.System.getIntForUser(getContentResolver(),
KEY_TIMEOUT, 0, UserHandle.USER_CURRENT);
mTimeoutPref.setValue(Integer.toString(value));
mTimeoutPref.setSummary(mTimeoutPref.getEntry());
mTimeoutPref.setEnabled(true);
} else {
mTimeoutPref.setSummary(R.string.set_to_zero);
mTimeoutPref.setEnabled(false);
}
}
}

View File

@@ -1,412 +0,0 @@
/*
* Copyright (C) 2017 AospExtended ROM
*
* 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.cherish.settings.fragments;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.content.res.Resources;
import android.os.Bundle;
import androidx.preference.ListPreference;
import androidx.preference.Preference;
import androidx.preference.PreferenceGroup;
import androidx.preference.PreferenceScreen;
import androidx.preference.PreferenceViewHolder;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import com.android.internal.logging.nano.MetricsProto;
import com.android.settings.R;
import com.android.settings.SettingsPreferenceFragment;
import com.cherish.settings.preferences.PackageListAdapter;
import com.cherish.settings.preferences.PackageListAdapter.PackageItem;
import android.provider.Settings;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class HeadsUpSettings extends SettingsPreferenceFragment
implements Preference.OnPreferenceClickListener, Preference.OnPreferenceChangeListener {
private static final int DIALOG_STOPLIST_APPS = 0;
private static final int DIALOG_BLACKLIST_APPS = 1;
private static final String PREF_HEADS_UP_TIME_OUT = "heads_up_time_out";
private static final String PREF_HEADS_UP_SNOOZE_TIME = "heads_up_snooze_time";
private PackageListAdapter mPackageAdapter;
private PackageManager mPackageManager;
private PreferenceGroup mStoplistPrefList;
private PreferenceGroup mBlacklistPrefList;
private Preference mAddStoplistPref;
private Preference mAddBlacklistPref;
private ListPreference mHeadsUpTimeOut;
private ListPreference mHeadsUpSnoozeTime;
private String mStoplistPackageList;
private String mBlacklistPackageList;
private Map<String, Package> mStoplistPackages;
private Map<String, Package> mBlacklistPackages;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Get launch-able applications
addPreferencesFromResource(R.xml.heads_up_settings);
mPackageManager = getPackageManager();
mPackageAdapter = new PackageListAdapter(getActivity());
mStoplistPrefList = (PreferenceGroup) findPreference("stoplist_applications");
mStoplistPrefList.setOrderingAsAdded(false);
mBlacklistPrefList = (PreferenceGroup) findPreference("blacklist_applications");
mBlacklistPrefList.setOrderingAsAdded(false);
mStoplistPackages = new HashMap<String, Package>();
mBlacklistPackages = new HashMap<String, Package>();
mAddStoplistPref = findPreference("add_stoplist_packages");
mAddBlacklistPref = findPreference("add_blacklist_packages");
mAddStoplistPref.setOnPreferenceClickListener(this);
mAddBlacklistPref.setOnPreferenceClickListener(this);
Resources systemUiResources;
try {
systemUiResources = getPackageManager().getResourcesForApplication("com.android.systemui");
} catch (Exception e) {
return;
}
int defaultTimeOut = systemUiResources.getInteger(systemUiResources.getIdentifier(
"com.android.systemui:integer/heads_up_notification_decay", null, null));
mHeadsUpTimeOut = (ListPreference) findPreference(PREF_HEADS_UP_TIME_OUT);
mHeadsUpTimeOut.setOnPreferenceChangeListener(this);
int headsUpTimeOut = Settings.System.getInt(getContentResolver(),
Settings.System.HEADS_UP_TIMEOUT, defaultTimeOut);
mHeadsUpTimeOut.setValue(String.valueOf(headsUpTimeOut));
updateHeadsUpTimeOutSummary(headsUpTimeOut);
int defaultSnooze = systemUiResources.getInteger(systemUiResources.getIdentifier(
"com.android.systemui:integer/heads_up_default_snooze_length_ms", null, null));
mHeadsUpSnoozeTime = (ListPreference) findPreference(PREF_HEADS_UP_SNOOZE_TIME);
mHeadsUpSnoozeTime.setOnPreferenceChangeListener(this);
int headsUpSnooze = Settings.System.getInt(getContentResolver(),
Settings.System.HEADS_UP_NOTIFICATION_SNOOZE, defaultSnooze);
mHeadsUpSnoozeTime.setValue(String.valueOf(headsUpSnooze));
updateHeadsUpSnoozeTimeSummary(headsUpSnooze);
}
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
if (preference == mHeadsUpTimeOut) {
int headsUpTimeOut = Integer.valueOf((String) newValue);
Settings.System.putInt(getContentResolver(),
Settings.System.HEADS_UP_TIMEOUT,
headsUpTimeOut);
updateHeadsUpTimeOutSummary(headsUpTimeOut);
return true;
} else if (preference == mHeadsUpSnoozeTime) {
int headsUpSnooze = Integer.valueOf((String) newValue);
Settings.System.putInt(getContentResolver(),
Settings.System.HEADS_UP_NOTIFICATION_SNOOZE,
headsUpSnooze);
updateHeadsUpSnoozeTimeSummary(headsUpSnooze);
return true;
}
return false;
}
private void updateHeadsUpTimeOutSummary(int value) {
String summary = getResources().getString(R.string.heads_up_time_out_summary,
value / 1000);
mHeadsUpTimeOut.setSummary(summary);
}
private void updateHeadsUpSnoozeTimeSummary(int value) {
if (value == 0) {
mHeadsUpSnoozeTime.setSummary(getResources().getString(R.string.heads_up_snooze_disabled_summary));
} else if (value == 60000) {
mHeadsUpSnoozeTime.setSummary(getResources().getString(R.string.heads_up_snooze_summary_one_minute));
} else {
String summary = getResources().getString(R.string.heads_up_snooze_summary, value / 60 / 1000);
mHeadsUpSnoozeTime.setSummary(summary);
}
}
@Override
public void onResume() {
super.onResume();
refreshCustomApplicationPrefs();
}
@Override
public int getMetricsCategory() {
return MetricsProto.MetricsEvent.CHERISH_SETTINGS;
}
@Override
public int getDialogMetricsCategory(int dialogId) {
if (dialogId == DIALOG_STOPLIST_APPS || dialogId == DIALOG_BLACKLIST_APPS) {
return MetricsProto.MetricsEvent.CHERISH_SETTINGS;
}
return 0;
}
/**
* Utility classes and supporting methods
*/
@Override
public Dialog onCreateDialog(int id) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
final Dialog dialog;
final ListView list = new ListView(getActivity());
list.setAdapter(mPackageAdapter);
builder.setTitle(R.string.profile_choose_app);
builder.setView(list);
dialog = builder.create();
switch (id) {
case DIALOG_STOPLIST_APPS:
list.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// Add empty application definition, the user will be able to edit it later
PackageItem info = (PackageItem) parent.getItemAtPosition(position);
addCustomApplicationPref(info.packageName, mStoplistPackages);
dialog.cancel();
}
});
break;
case DIALOG_BLACKLIST_APPS:
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent,
View view, int position, long id) {
PackageItem info = (PackageItem) parent.getItemAtPosition(position);
addCustomApplicationPref(info.packageName, mBlacklistPackages);
dialog.cancel();
}
});
}
return dialog;
}
/**
* Application class
*/
private static class Package {
public String name;
/**
* Stores all the application values in one call
* @param name
*/
public Package(String name) {
this.name = name;
}
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append(name);
return builder.toString();
}
public static Package fromString(String value) {
if (TextUtils.isEmpty(value)) {
return null;
}
try {
Package item = new Package(value);
return item;
} catch (NumberFormatException e) {
return null;
}
}
};
private void refreshCustomApplicationPrefs() {
if (!parsePackageList()) {
return;
}
// Add the Application Preferences
if (mStoplistPrefList != null && mBlacklistPrefList != null) {
mStoplistPrefList.removeAll();
mBlacklistPrefList.removeAll();
for (Package pkg : mStoplistPackages.values()) {
try {
Preference pref = createPreferenceFromInfo(pkg);
mStoplistPrefList.addPreference(pref);
} catch (PackageManager.NameNotFoundException e) {
// Do nothing
}
}
for (Package pkg : mBlacklistPackages.values()) {
try {
Preference pref = createPreferenceFromInfo(pkg);
mBlacklistPrefList.addPreference(pref);
} catch (PackageManager.NameNotFoundException e) {
// Do nothing
}
}
}
// Keep these at the top
mAddStoplistPref.setOrder(0);
mAddBlacklistPref.setOrder(0);
// Add 'add' options
mStoplistPrefList.addPreference(mAddStoplistPref);
mBlacklistPrefList.addPreference(mAddBlacklistPref);
}
@Override
public boolean onPreferenceClick(Preference preference) {
if (preference == mAddStoplistPref) {
showDialog(DIALOG_STOPLIST_APPS);
} else if (preference == mAddBlacklistPref) {
showDialog(DIALOG_BLACKLIST_APPS);
} else {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity())
.setTitle(R.string.dialog_delete_title)
.setMessage(R.string.dialog_delete_message)
.setIconAttribute(android.R.attr.alertDialogIcon)
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if (preference == mBlacklistPrefList.findPreference(preference.getKey())) {
removeApplicationPref(preference.getKey(), mBlacklistPackages);
} else if (preference == mStoplistPrefList.findPreference(preference.getKey())) {
removeApplicationPref(preference.getKey(), mStoplistPackages);
}
}
})
.setNegativeButton(android.R.string.cancel, null);
builder.show();
}
return true;
}
private void addCustomApplicationPref(String packageName, Map<String,Package> map) {
Package pkg = map.get(packageName);
if (pkg == null) {
pkg = new Package(packageName);
map.put(packageName, pkg);
savePackageList(false, map);
refreshCustomApplicationPrefs();
}
}
private Preference createPreferenceFromInfo(Package pkg)
throws PackageManager.NameNotFoundException {
PackageInfo info = mPackageManager.getPackageInfo(pkg.name,
PackageManager.GET_META_DATA);
Preference pref =
new Preference(getActivity());
pref.setKey(pkg.name);
pref.setTitle(info.applicationInfo.loadLabel(mPackageManager));
pref.setIcon(info.applicationInfo.loadIcon(mPackageManager));
pref.setPersistent(false);
pref.setLayoutResource(R.layout.headsup_preference_applist);
pref.setOnPreferenceClickListener(this);
return pref;
}
private void removeApplicationPref(String packageName, Map<String,Package> map) {
if (map.remove(packageName) != null) {
savePackageList(false, map);
refreshCustomApplicationPrefs();
}
}
private boolean parsePackageList() {
boolean parsed = false;
final String stoplistString = Settings.System.getString(getContentResolver(),
Settings.System.HEADS_UP_STOPLIST_VALUES);
final String blacklistString = Settings.System.getString(getContentResolver(),
Settings.System.HEADS_UP_BLACKLIST_VALUES);
if (!TextUtils.equals(mStoplistPackageList, stoplistString)) {
mStoplistPackageList = stoplistString;
mStoplistPackages.clear();
parseAndAddToMap(stoplistString, mStoplistPackages);
parsed = true;
}
if (!TextUtils.equals(mBlacklistPackageList, blacklistString)) {
mBlacklistPackageList = blacklistString;
mBlacklistPackages.clear();
parseAndAddToMap(blacklistString, mBlacklistPackages);
parsed = true;
}
return parsed;
}
private void parseAndAddToMap(String baseString, Map<String,Package> map) {
if (baseString == null) {
return;
}
final String[] array = TextUtils.split(baseString, "\\|");
for (String item : array) {
if (TextUtils.isEmpty(item)) {
continue;
}
Package pkg = Package.fromString(item);
map.put(pkg.name, pkg);
}
}
private void savePackageList(boolean preferencesUpdated, Map<String,Package> map) {
String setting = map == mStoplistPackages
? Settings.System.HEADS_UP_STOPLIST_VALUES
: Settings.System.HEADS_UP_BLACKLIST_VALUES;
List<String> settings = new ArrayList<String>();
for (Package app : map.values()) {
settings.add(app.toString());
}
final String value = TextUtils.join("|", settings);
if (preferencesUpdated) {
if (TextUtils.equals(setting, Settings.System.HEADS_UP_STOPLIST_VALUES)) {
mStoplistPackageList = value;
} else {
mBlacklistPackageList = value;
}
}
Settings.System.putString(getContentResolver(),
setting, value);
}
}

View File

@@ -41,7 +41,9 @@ import android.os.SystemProperties;
import android.provider.Settings;
import com.android.settings.R;
import com.android.settings.SettingsPreferenceFragment;
import com.android.internal.util.cherish.udfps.UdfpsUtils;
import com.android.internal.util.cherish.CherishUtils;
import com.android.internal.util.cherish.OmniJawsClient;
import com.cherish.settings.preferences.SystemSettingListPreference;
import com.cherish.settings.preferences.CustomSeekBarPreference;
import com.cherish.settings.preferences.SecureSettingListPreference;
@@ -50,8 +52,8 @@ import com.cherish.settings.preferences.SystemSettingListPreference;
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settingslib.search.SearchIndexable;
import android.provider.SearchIndexableResource;
import com.android.internal.util.cherish.fod.FodUtils;
import com.android.internal.util.cherish.CherishUtils;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;
@@ -59,25 +61,32 @@ import java.util.List;
public class LockScreenSettings extends SettingsPreferenceFragment implements
Preference.OnPreferenceChangeListener {
private static final String AOD_SCHEDULE_KEY = "always_on_display_schedule";
private static final String UDFPS_CATEGORY = "udfps_category";
private static final String TORCH_POWER_BUTTON_GESTURE = "torch_power_button_gesture";
static final int MODE_DISABLED = 0;
static final int MODE_NIGHT = 1;
static final int MODE_TIME = 2;
static final int MODE_MIXED_SUNSET = 3;
static final int MODE_MIXED_SUNRISE = 4;
private static final String FINGERPRINT_SUCCESS_VIB = "fingerprint_success_vib";
private static final String FINGERPRINT_ERROR_VIB = "fingerprint_error_vib";
private static final String KEY_WEATHER = "lockscreen_weather_enabled";
Preference mAODPref;
Preference mFODPref;
private FingerprintManager mFingerprintManager;
private SwitchPreference mFingerprintSuccessVib;
private SwitchPreference mFingerprintErrorVib;
private ListPreference mLockClockStyles;
private OmniJawsClient mWeatherClient;
private Preference mWeather;
private PreferenceCategory mUdfpsCategory;
private Context mContext;
private ListPreference mTorchPowerButton;
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
addPreferencesFromResource(R.xml.cherish_settings_lockscreen);
ContentResolver resolver = getActivity().getContentResolver();
PreferenceScreen prefScreen = getPreferenceScreen();
Resources resources = getResources();
final ContentResolver resolver = getActivity().getContentResolver();
final PreferenceScreen prefSet = getPreferenceScreen();
final PackageManager mPm = getActivity().getPackageManager();
Resources res = null;
Context ctx = getContext();
@@ -89,48 +98,82 @@ public class LockScreenSettings extends SettingsPreferenceFragment implements
e.printStackTrace();
}
PreferenceCategory udfps = (PreferenceCategory) prefScreen.findPreference("udfps_category");
if (!FodUtils.hasFodSupport(getContext())) {
prefScreen.removePreference(udfps);
mUdfpsCategory = findPreference(UDFPS_CATEGORY);
if (!UdfpsUtils.hasUdfpsSupport(getContext())) {
prefSet.removePreference(mUdfpsCategory);
}
mAODPref = findPreference(AOD_SCHEDULE_KEY);
updateAlwaysOnSummary();
// screen off torch
mTorchPowerButton = (ListPreference) findPreference(TORCH_POWER_BUTTON_GESTURE);
int mTorchPowerButtonValue = Settings.System.getInt(resolver,
Settings.System.TORCH_POWER_BUTTON_GESTURE, 0);
mTorchPowerButton.setValue(Integer.toString(mTorchPowerButtonValue));
mTorchPowerButton.setSummary(mTorchPowerButton.getEntry());
mTorchPowerButton.setOnPreferenceChangeListener(this);
mFingerprintManager = (FingerprintManager) getActivity().getSystemService(Context.FINGERPRINT_SERVICE);
mFingerprintSuccessVib = (SwitchPreference) findPreference(FINGERPRINT_SUCCESS_VIB);
mFingerprintErrorVib = (SwitchPreference) findPreference(FINGERPRINT_ERROR_VIB);
if (mPm.hasSystemFeature(PackageManager.FEATURE_FINGERPRINT) &&
mFingerprintManager != null) {
if (!mFingerprintManager.isHardwareDetected()){
prefSet.removePreference(mFingerprintSuccessVib);
prefSet.removePreference(mFingerprintErrorVib);
} else {
mFingerprintSuccessVib.setChecked((Settings.System.getInt(getContentResolver(),
Settings.System.FP_SUCCESS_VIBRATE, 1) == 1));
mFingerprintSuccessVib.setOnPreferenceChangeListener(this);
mFingerprintErrorVib.setChecked((Settings.System.getInt(getContentResolver(),
Settings.System.FP_ERROR_VIBRATE, 1) == 1));
mFingerprintErrorVib.setOnPreferenceChangeListener(this);
}
} else {
prefSet.removePreference(mFingerprintSuccessVib);
prefSet.removePreference(mFingerprintErrorVib);
}
mWeather = (Preference) findPreference(KEY_WEATHER);
mWeatherClient = new OmniJawsClient(getContext());
updateWeatherSettings();
}
public boolean onPreferenceChange(Preference preference, Object newValue) {
ContentResolver resolver = getActivity().getContentResolver();
if (preference == mTorchPowerButton) {
int mTorchPowerButtonValue = Integer.valueOf((String) newValue);
int index = mTorchPowerButton.findIndexOfValue((String) newValue);
mTorchPowerButton.setSummary(
mTorchPowerButton.getEntries()[index]);
Settings.System.putInt(resolver, Settings.System.TORCH_POWER_BUTTON_GESTURE,
mTorchPowerButtonValue);
return true;
} else if (preference == mFingerprintSuccessVib) {
boolean value = (Boolean) newValue;
Settings.System.putInt(getActivity().getContentResolver(),
Settings.System.FP_SUCCESS_VIBRATE, value ? 1 : 0);
return true;
} else if (preference == mFingerprintErrorVib) {
boolean value = (Boolean) newValue;
Settings.System.putInt(getActivity().getContentResolver(),
Settings.System.FP_ERROR_VIBRATE, value ? 1 : 0);
return true;
}
return false;
}
private void updateWeatherSettings() {
if (mWeatherClient == null || mWeather == null) return;
boolean weatherEnabled = mWeatherClient.isOmniJawsEnabled();
mWeather.setEnabled(weatherEnabled);
mWeather.setSummary(weatherEnabled ? R.string.lockscreen_weather_summary :
R.string.lockscreen_weather_enabled_info);
}
@Override
public void onResume() {
super.onResume();
updateAlwaysOnSummary();
}
private void updateAlwaysOnSummary() {
if (mAODPref == null) return;
int mode = Settings.Secure.getIntForUser(getActivity().getContentResolver(),
Settings.Secure.DOZE_ALWAYS_ON_AUTO_MODE, 0, UserHandle.USER_CURRENT);
switch (mode) {
default:
case MODE_DISABLED:
mAODPref.setSummary(R.string.disabled);
break;
case MODE_NIGHT:
mAODPref.setSummary(R.string.night_display_auto_mode_twilight);
break;
case MODE_TIME:
mAODPref.setSummary(R.string.night_display_auto_mode_custom);
break;
case MODE_MIXED_SUNSET:
mAODPref.setSummary(R.string.always_on_display_schedule_mixed_sunset);
break;
case MODE_MIXED_SUNRISE:
mAODPref.setSummary(R.string.always_on_display_schedule_mixed_sunrise);
break;
}
}
public boolean onPreferenceChange(Preference preference, Object newValue) {
ContentResolver resolver = getActivity().getContentResolver();
return false;
updateWeatherSettings();
}
@Override

View File

@@ -39,71 +39,70 @@ import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settingslib.search.SearchIndexable;
import android.provider.SearchIndexableResource;
import com.cherish.settings.fragments.SmartCharging;
import com.cherish.settings.fragments.SmartPixels;
import java.util.ArrayList;
import java.util.List;
@SearchIndexable(forTarget = SearchIndexable.ALL & ~SearchIndexable.ARC)
@SearchIndexable
public class MiscSettings extends SettingsPreferenceFragment implements
OnPreferenceChangeListener {
private static final String KEY_GAMES_SPOOF = "use_games_spoof";
private static final String KEY_PHOTOS_SPOOF = "use_photos_spoof";
private static final String KEY_STREAM_SPOOF = "use_stream_spoof";
private static final String SYS_GAMES_SPOOF = "persist.sys.pixelprops.games";
private static final String SYS_PHOTOS_SPOOF = "persist.sys.pixelprops.gphotos";
private static final String SYS_STREAM_SPOOF = "persist.sys.pixelprops.streaming";
private static final String SMART_CHARGING = "smart_charging";
private static final String SMART_PIXELS = "smart_pixels";
private SwitchPreference mGamesSpoof;
private SwitchPreference mPhotosSpoof;
private SwitchPreference mStreamSpoof;
private Preference mSmartCharging;
private Preference mSmartPixels;
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
ContentResolver resolver = getActivity().getContentResolver();
PreferenceScreen prefSet = getPreferenceScreen();
addPreferencesFromResource(R.xml.cherish_settings_misc);
Resources res = null;
Context ctx = getContext();
float density = Resources.getSystem().getDisplayMetrics().density;
try {
res = ctx.getPackageManager().getResourcesForApplication("com.android.systemui");
} catch (NameNotFoundException e) {
e.printStackTrace();
}
final PreferenceScreen prefScreen = getPreferenceScreen();
final Resources res = getResources();
mGamesSpoof = (SwitchPreference) findPreference(KEY_GAMES_SPOOF);
mGamesSpoof.setChecked(SystemProperties.getBoolean(SYS_GAMES_SPOOF, false));
mGamesSpoof.setOnPreferenceChangeListener(this);
mPhotosSpoof = (SwitchPreference) findPreference(KEY_PHOTOS_SPOOF);
mPhotosSpoof = (SwitchPreference) findPreference(KEY_PHOTOS_SPOOF);
mPhotosSpoof.setChecked(SystemProperties.getBoolean(SYS_PHOTOS_SPOOF, true));
mPhotosSpoof.setOnPreferenceChangeListener(this);
mStreamSpoof = (SwitchPreference) findPreference(KEY_STREAM_SPOOF);
mStreamSpoof.setChecked(SystemProperties.getBoolean(SYS_STREAM_SPOOF, true));
mStreamSpoof.setOnPreferenceChangeListener(this);
mSmartCharging = (Preference) prefScreen.findPreference(SMART_CHARGING);
boolean mSmartChargingSupported = res.getBoolean(
com.android.internal.R.bool.config_smartChargingAvailable);
if (!mSmartChargingSupported)
prefScreen.removePreference(mSmartCharging);
mSmartPixels = (Preference) prefScreen.findPreference(SMART_PIXELS);
boolean mSmartPixelsSupported = getResources().getBoolean(
com.android.internal.R.bool.config_supportSmartPixels);
if (!mSmartPixelsSupported)
prefScreen.removePreference(mSmartPixels);
}
@Override
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
if (preference == mGamesSpoof) {
boolean value = (Boolean) newValue;
SystemProperties.set(SYS_GAMES_SPOOF, value ? "true" : "false");
return true;
} else if (preference == mPhotosSpoof) {
} else if (preference == mPhotosSpoof) {
boolean value = (Boolean) newValue;
SystemProperties.set(SYS_PHOTOS_SPOOF, value ? "true" : "false");
return true;
} else if (preference == mStreamSpoof) {
boolean value = (Boolean) newValue;
SystemProperties.set(SYS_STREAM_SPOOF, value ? "true" : "false");
return true;
}
return false;
}
@@ -114,28 +113,22 @@ public class MiscSettings extends SettingsPreferenceFragment implements
return MetricsProto.MetricsEvent.CHERISH_SETTINGS;
}
/**
* For Search.
*/
public static final SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
new BaseSearchIndexProvider() {
@Override
public List<SearchIndexableResource> getXmlResourcesToIndex(Context context,
boolean enabled) {
ArrayList<SearchIndexableResource> result =
new ArrayList<SearchIndexableResource>();
SearchIndexableResource sir = new SearchIndexableResource(context);
sir.xmlResId = R.xml.cherish_settings_misc;
result.add(sir);
return result;
}
public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
new BaseSearchIndexProvider(R.xml.cherish_settings_misc) {
@Override
public List<String> getNonIndexableKeys(Context context) {
List<String> keys = super.getNonIndexableKeys(context);
boolean mSmartChargingSupported = context.getResources().getBoolean(
com.android.internal.R.bool.config_smartChargingAvailable);
boolean mSmartPixelsSupported = context.getResources().getBoolean(
com.android.internal.R.bool.config_supportSmartPixels);
if (!mSmartChargingSupported)
keys.add(SMART_CHARGING);
if (!mSmartPixelsSupported)
keys.add(SMART_PIXELS);
return keys;
}
};
};
}

View File

@@ -0,0 +1,350 @@
/*
* Copyright (C) 2022 Yet Another AOSP 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 com.cherish.settings.fragments;
import android.content.ContentResolver;
import android.os.Bundle;
import android.os.UserHandle;
import android.provider.Settings;
import androidx.preference.ListPreference;
import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;
import androidx.preference.Preference.OnPreferenceChangeListener;
import androidx.preference.SwitchPreference;
import com.android.internal.logging.nano.MetricsProto;
import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settings.R;
import com.android.settingslib.search.SearchIndexable;
import net.margaritov.preference.colorpicker.ColorPickerPreference;
import com.cherish.settings.preferences.CustomSeekBarPreference;
import java.lang.CharSequence;
import org.json.JSONException;
import org.json.JSONObject;
@SearchIndexable
public class MonetSettings extends SettingsPreferenceFragment implements
OnPreferenceChangeListener {
private static final String OVERLAY_CATEGORY_ACCENT_COLOR =
"android.theme.customization.accent_color";
private static final String OVERLAY_CATEGORY_SYSTEM_PALETTE =
"android.theme.customization.system_palette";
private static final String OVERLAY_CATEGORY_THEME_STYLE =
"android.theme.customization.theme_style";
private static final String OVERLAY_CATEGORY_BG_COLOR =
"android.theme.customization.bg_color";
private static final String OVERLAY_COLOR_SOURCE =
"android.theme.customization.color_source";
private static final String OVERLAY_COLOR_BOTH =
"android.theme.customization.color_both";
private static final String OVERLAY_LUMINANCE_FACTOR =
"android.theme.customization.luminance_factor";
private static final String OVERLAY_CHROMA_FACTOR =
"android.theme.customization.chroma_factor";
private static final String OVERLAY_TINT_BACKGROUND =
"android.theme.customization.tint_background";
private static final String COLOR_SOURCE_PRESET = "preset";
private static final String COLOR_SOURCE_HOME = "home_wallpaper";
private static final String COLOR_SOURCE_LOCK = "lock_wallpaper";
private static final String PREF_THEME_STYLE = "theme_style";
private static final String PREF_COLOR_SOURCE = "color_source";
private static final String PREF_ACCENT_COLOR = "accent_color";
private static final String PREF_ACCENT_BACKGROUND = "accent_background";
private static final String PREF_BG_COLOR = "bg_color";
private static final String PREF_LUMINANCE_FACTOR = "luminance_factor";
private static final String PREF_CHROMA_FACTOR = "chroma_factor";
private static final String PREF_TINT_BACKGROUND = "tint_background";
private ListPreference mThemeStylePref;
private ListPreference mColorSourcePref;
private ColorPickerPreference mAccentColorPref;
private SwitchPreference mAccentBackgroundPref;
private ColorPickerPreference mBgColorPref;
private CustomSeekBarPreference mLuminancePref;
private CustomSeekBarPreference mChromaPref;
private SwitchPreference mTintBackgroundPref;
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
addPreferencesFromResource(R.xml.monet_settings);
mThemeStylePref = findPreference(PREF_THEME_STYLE);
mColorSourcePref = findPreference(PREF_COLOR_SOURCE);
mAccentColorPref = findPreference(PREF_ACCENT_COLOR);
mAccentBackgroundPref = findPreference(PREF_ACCENT_BACKGROUND);
mBgColorPref = findPreference(PREF_BG_COLOR);
mLuminancePref = findPreference(PREF_LUMINANCE_FACTOR);
mChromaPref = findPreference(PREF_CHROMA_FACTOR);
mTintBackgroundPref = findPreference(PREF_TINT_BACKGROUND);
updatePreferences();
mThemeStylePref.setOnPreferenceChangeListener(this);
mColorSourcePref.setOnPreferenceChangeListener(this);
mAccentColorPref.setOnPreferenceChangeListener(this);
mAccentBackgroundPref.setOnPreferenceChangeListener(this);
mBgColorPref.setOnPreferenceChangeListener(this);
mLuminancePref.setOnPreferenceChangeListener(this);
mChromaPref.setOnPreferenceChangeListener(this);
mTintBackgroundPref.setOnPreferenceChangeListener(this);
}
@Override
public void onResume() {
super.onResume();
updatePreferences();
}
private void updatePreferences() {
final String overlayPackageJson = Settings.Secure.getStringForUser(
getActivity().getContentResolver(),
Settings.Secure.THEME_CUSTOMIZATION_OVERLAY_PACKAGES,
UserHandle.USER_CURRENT);
if (overlayPackageJson != null && !overlayPackageJson.isEmpty()) {
try {
final JSONObject object = new JSONObject(overlayPackageJson);
final String style = object.optString(OVERLAY_CATEGORY_THEME_STYLE, null);
final String source = object.optString(OVERLAY_COLOR_SOURCE, null);
final String color = object.optString(OVERLAY_CATEGORY_SYSTEM_PALETTE, null);
final int bgColor = object.optInt(OVERLAY_CATEGORY_BG_COLOR);
final boolean both = object.optInt(OVERLAY_COLOR_BOTH, 0) == 1;
final boolean tintBG = object.optInt(OVERLAY_TINT_BACKGROUND, 0) == 1;
final float lumin = (float) object.optDouble(OVERLAY_LUMINANCE_FACTOR, 1d);
final float chroma = (float) object.optDouble(OVERLAY_CHROMA_FACTOR, 1d);
// style handling
boolean styleUpdated = false;
if (style != null && !style.isEmpty()) {
for (CharSequence value : mThemeStylePref.getEntryValues()) {
if (value.toString().equals(style)) {
styleUpdated = true;
break;
}
}
if (styleUpdated) {
updateListByValue(mThemeStylePref, style);
}
}
if (!styleUpdated) {
updateListByValue(mThemeStylePref,
mThemeStylePref.getEntryValues()[0].toString());
}
// color handling
final String sourceVal = (source == null || source.isEmpty() ||
(source.equals(COLOR_SOURCE_HOME) && both)) ? "both" : source;
updateListByValue(mColorSourcePref, sourceVal);
final boolean enabled = updateAccentEnablement(sourceVal);
if (enabled && color != null && !color.isEmpty()) {
mAccentColorPref.setNewPreviewColor(
ColorPickerPreference.convertToColorInt(color));
}
final boolean bgEnabled = enabled && bgColor != 0;
if (bgEnabled) {
mBgColorPref.setNewPreviewColor(bgColor);
} else if (!enabled) {
mAccentBackgroundPref.setEnabled(false);
}
mAccentBackgroundPref.setChecked(bgEnabled);
mBgColorPref.setEnabled(bgEnabled);
// etc
int luminV = 0;
if (lumin > 1d) luminV = Math.round((lumin - 1f) * 100f);
else if (lumin < 1d) luminV = -1 * Math.round((1f - lumin) * 100f);
mLuminancePref.setValue(luminV);
int chromaV = 0;
if (chroma > 1d) chromaV = Math.round((chroma - 1f) * 100f);
else if (chroma < 1d) chromaV = -1 * Math.round((1f - chroma) * 100f);
mChromaPref.setValue(chromaV);
mTintBackgroundPref.setChecked(tintBG);
} catch (JSONException | IllegalArgumentException ignored) {}
}
}
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
final ContentResolver resolver = getActivity().getContentResolver();
if (preference == mThemeStylePref) {
String value = (String) newValue;
setStyleValue(value);
updateListByValue(mThemeStylePref, value, false);
return true;
} else if (preference == mColorSourcePref) {
String value = (String) newValue;
setSourceValue(value);
updateListByValue(mColorSourcePref, value, false);
updateAccentEnablement(value);
return true;
} else if (preference == mAccentColorPref) {
int value = (Integer) newValue;
setColorValue(value);
return true;
} else if (preference == mAccentBackgroundPref) {
boolean value = (Boolean) newValue;
if (!value) setBgColorValue(0);
mBgColorPref.setEnabled(value);
return true;
} else if (preference == mBgColorPref) {
int value = (Integer) newValue;
setBgColorValue(value);
return true;
} else if (preference == mLuminancePref) {
int value = (Integer) newValue;
setLuminanceValue(value);
return true;
} else if (preference == mChromaPref) {
int value = (Integer) newValue;
setChromaValue(value);
return true;
} else if (preference == mTintBackgroundPref) {
boolean value = (Boolean) newValue;
setTintBackgroundValue(value);
return true;
}
return false;
}
private void updateListByValue(ListPreference pref, String value) {
updateListByValue(pref, value, true);
}
private void updateListByValue(ListPreference pref, String value, boolean set) {
if (set) pref.setValue(value);
final int index = pref.findIndexOfValue(value);
pref.setSummary(pref.getEntries()[index]);
}
private boolean updateAccentEnablement(String source) {
final boolean shouldEnable = source != null && source.equals(COLOR_SOURCE_PRESET);
mAccentColorPref.setEnabled(shouldEnable);
mAccentBackgroundPref.setEnabled(shouldEnable);
if (!shouldEnable) {
mBgColorPref.setEnabled(false);
mAccentBackgroundPref.setEnabled(false);
mAccentBackgroundPref.setChecked(false);
}
return shouldEnable;
}
private JSONObject getSettingsJson() throws JSONException {
final String overlayPackageJson = Settings.Secure.getStringForUser(
getActivity().getContentResolver(),
Settings.Secure.THEME_CUSTOMIZATION_OVERLAY_PACKAGES,
UserHandle.USER_CURRENT);
JSONObject object;
if (overlayPackageJson == null || overlayPackageJson.isEmpty())
return new JSONObject();
return new JSONObject(overlayPackageJson);
}
private void putSettingsJson(JSONObject object) {
Settings.Secure.putStringForUser(
getActivity().getContentResolver(),
Settings.Secure.THEME_CUSTOMIZATION_OVERLAY_PACKAGES,
object.toString(), UserHandle.USER_CURRENT);
}
private void setStyleValue(String style) {
try {
JSONObject object = getSettingsJson();
object.putOpt(OVERLAY_CATEGORY_THEME_STYLE, style);
putSettingsJson(object);
} catch (JSONException | IllegalArgumentException ignored) {}
}
private void setSourceValue(String source) {
try {
JSONObject object = getSettingsJson();
if (source.equals("both")) {
object.putOpt(OVERLAY_COLOR_BOTH, 1);
object.putOpt(OVERLAY_COLOR_SOURCE, COLOR_SOURCE_HOME);
} else {
object.remove(OVERLAY_COLOR_BOTH);
object.putOpt(OVERLAY_COLOR_SOURCE, source);
}
if (!source.equals(COLOR_SOURCE_PRESET)) {
object.remove(OVERLAY_CATEGORY_ACCENT_COLOR);
object.remove(OVERLAY_CATEGORY_SYSTEM_PALETTE);
}
putSettingsJson(object);
} catch (JSONException | IllegalArgumentException ignored) {}
}
private void setColorValue(int color) {
try {
JSONObject object = getSettingsJson();
final String rgbColor = ColorPickerPreference.convertToRGB(color).replace("#", "");
object.putOpt(OVERLAY_CATEGORY_ACCENT_COLOR, rgbColor);
object.putOpt(OVERLAY_CATEGORY_SYSTEM_PALETTE, rgbColor);
object.putOpt(OVERLAY_COLOR_SOURCE, COLOR_SOURCE_PRESET);
putSettingsJson(object);
} catch (JSONException | IllegalArgumentException ignored) {}
}
private void setBgColorValue(int color) {
try {
JSONObject object = getSettingsJson();
if (color != 0) object.putOpt(OVERLAY_CATEGORY_BG_COLOR, color);
else object.remove(OVERLAY_CATEGORY_BG_COLOR);
putSettingsJson(object);
} catch (JSONException | IllegalArgumentException ignored) {}
}
private void setLuminanceValue(int lumin) {
try {
JSONObject object = getSettingsJson();
if (lumin == 0)
object.remove(OVERLAY_LUMINANCE_FACTOR);
else
object.putOpt(OVERLAY_LUMINANCE_FACTOR, 1d + ((double) lumin / 100d));
putSettingsJson(object);
} catch (JSONException | IllegalArgumentException ignored) {}
}
private void setChromaValue(int chroma) {
try {
JSONObject object = getSettingsJson();
if (chroma == 0)
object.remove(OVERLAY_CHROMA_FACTOR);
else
object.putOpt(OVERLAY_CHROMA_FACTOR, 1d + ((double) chroma / 100d));
putSettingsJson(object);
} catch (JSONException | IllegalArgumentException ignored) {}
}
private void setTintBackgroundValue(boolean tint) {
try {
JSONObject object = getSettingsJson();
if (!tint) object.remove(OVERLAY_TINT_BACKGROUND);
else object.putOpt(OVERLAY_TINT_BACKGROUND, 1);
putSettingsJson(object);
} catch (JSONException | IllegalArgumentException ignored) {}
}
@Override
public int getMetricsCategory() {
return MetricsProto.MetricsEvent.CHERISH_SETTINGS;
}
public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
new BaseSearchIndexProvider(R.xml.monet_settings);
}

View File

@@ -1,5 +1,5 @@
/*
* Copyright (C) 2021 AOSP-Krypton Project
* Copyright (C) 2022 PixelPlusUI Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.

View File

@@ -0,0 +1,108 @@
/*
* Copyright (C) 2019-22 The CherishOS
*
* 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.cherish.settings.fragments;
import android.content.ContentResolver;
import android.content.Context;
import android.content.res.Resources;
import android.database.ContentObserver;
import android.os.Bundle;
import android.os.Handler;
import android.os.SystemProperties;
import android.os.UserHandle;
import android.provider.Settings;
import android.view.View;
import androidx.preference.ListPreference;
import androidx.preference.Preference;
import androidx.preference.PreferenceCategory;
import androidx.preference.PreferenceScreen;
import androidx.preference.Preference.OnPreferenceChangeListener;
import androidx.preference.SwitchPreference;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.settings.R;
import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.Utils;
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settingslib.search.SearchIndexable;
import java.util.ArrayList;
import java.util.List;
import com.cherish.settings.preferences.SystemSettingSwitchPreference;
import com.cherish.settings.preferences.SystemSettingMainSwitchPreference;
@SearchIndexable(forTarget = SearchIndexable.ALL & ~SearchIndexable.ARC)
public class NetworkTrafficSettings extends SettingsPreferenceFragment implements
Preference.OnPreferenceChangeListener {
private SystemSettingSwitchPreference mThreshold;
private SystemSettingMainSwitchPreference mNetMonitor;
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
addPreferencesFromResource(R.xml.cherish_settings_network_traffic);
final ContentResolver resolver = getActivity().getContentResolver();
boolean isNetMonitorEnabled = Settings.System.getIntForUser(resolver,
Settings.System.NETWORK_TRAFFIC_STATE, 1, UserHandle.USER_CURRENT) == 1;
mNetMonitor = (SystemSettingMainSwitchPreference) findPreference("network_traffic_state");
mNetMonitor.setChecked(isNetMonitorEnabled);
mNetMonitor.setOnPreferenceChangeListener(this);
boolean isThresholdEnabled = Settings.System.getIntForUser(resolver,
Settings.System.NETWORK_TRAFFIC_AUTOHIDE_THRESHOLD, 0, UserHandle.USER_CURRENT) == 1;
mThreshold = (SystemSettingSwitchPreference) findPreference("network_traffic_autohide_threshold");
mThreshold.setChecked(isThresholdEnabled);
mThreshold.setOnPreferenceChangeListener(this);
}
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
ContentResolver resolver = getActivity().getContentResolver();
if (preference == mNetMonitor) {
boolean value = (Boolean) newValue;
Settings.System.putIntForUser(resolver,
Settings.System.NETWORK_TRAFFIC_STATE, value ? 1 : 0,
UserHandle.USER_CURRENT);
mNetMonitor.setChecked(value);
mThreshold.setChecked(value);
return true;
} else if (preference == mThreshold) {
boolean value = (Boolean) newValue;
Settings.System.putIntForUser(resolver,
Settings.System.NETWORK_TRAFFIC_AUTOHIDE_THRESHOLD, value ? 1 : 0,
UserHandle.USER_CURRENT);
return true;
}
return false;
}
@Override
public int getMetricsCategory() {
return MetricsEvent.CHERISH_SETTINGS;
}
/**
* For Search.
*/
public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
new BaseSearchIndexProvider(R.xml.cherish_settings_network_traffic);
}

View File

@@ -31,8 +31,6 @@ import com.cherish.settings.preferences.SystemSettingListPreference;
import com.cherish.settings.preferences.SystemSettingSwitchPreference;
import net.margaritov.preference.colorpicker.ColorPickerPreference;
import com.android.internal.util.cherish.CherishUtils;
import com.cherish.settings.preferences.Utils;
import java.util.ArrayList;
import java.util.List;
@@ -40,16 +38,20 @@ import java.util.List;
public class NotificationSettings extends SettingsPreferenceFragment implements Preference.OnPreferenceChangeListener{
private static final String INCALL_VIB_OPTIONS = "incall_vib_options";
private static final String PREF_FLASH_ON_CALL = "flashlight_on_call";
private static final String PREF_FLASH_ON_CALL_DND = "flashlight_on_call_ignore_dnd";
private static final String PREF_FLASH_ON_CALL_RATE = "flashlight_on_call_rate";
private static final String KEY_EDGE_LIGHTNING = "pulse_ambient_light";
private static final String ALERT_SLIDER_PREF = "alert_slider_notifications";
private SystemSettingMasterSwitchPreference mEdgeLightning;
private SystemSettingListPreference mFlashOnCall;
private SystemSettingSwitchPreference mFlashOnCallIgnoreDND;
private CustomSeekBarPreference mFlashOnCallRate;
private Preference mChargingLeds;
private static final String AMBIENT_LIGHT_COLOR = "ambient_notification_color_mode";
private static final String AMBIENT_LIGHT_CUSTOM_COLOR = "ambient_notification_light_color";
private static final String AMBIENT_LIGHT_DURATION = "ambient_notification_light_duration";
private static final String AMBIENT_LIGHT_REPEAT_COUNT = "ambient_notification_light_repeats";
private SystemSettingListPreference mEdgeLightColorMode;
private ColorPickerPreference mEdgeLightColor;
private CustomSeekBarPreference mEdgeLightDuration;
private CustomSeekBarPreference mEdgeLightRepeatCount;
private Preference mChargingLeds;
private Preference mAlertSlider;
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
@@ -59,36 +61,11 @@ public class NotificationSettings extends SettingsPreferenceFragment implements
final PreferenceScreen prefScreen = getPreferenceScreen();
final Resources res = getResources();
PreferenceCategory incallVibCategory = (PreferenceCategory) findPreference(INCALL_VIB_OPTIONS);
if (!Utils.isVoiceCapable(getActivity())) {
prefScreen.removePreference(incallVibCategory);
}
mFlashOnCallRate = (CustomSeekBarPreference)
findPreference(PREF_FLASH_ON_CALL_RATE);
int value = Settings.System.getInt(resolver,
Settings.System.FLASHLIGHT_ON_CALL_RATE, 1);
mFlashOnCallRate.setValue(value);
mFlashOnCallRate.setOnPreferenceChangeListener(this);
mFlashOnCallIgnoreDND = (SystemSettingSwitchPreference)
findPreference(PREF_FLASH_ON_CALL_DND);
value = Settings.System.getInt(resolver,
Settings.System.FLASHLIGHT_ON_CALL, 0);
mFlashOnCallIgnoreDND.setVisible(value > 1);
mFlashOnCallRate.setVisible(value != 0);
mFlashOnCall = (SystemSettingListPreference)
findPreference(PREF_FLASH_ON_CALL);
mFlashOnCall.setSummary(mFlashOnCall.getEntries()[value]);
mFlashOnCall.setOnPreferenceChangeListener(this);
mEdgeLightning = (SystemSettingMasterSwitchPreference)
findPreference(KEY_EDGE_LIGHTNING);
boolean enabled = Settings.System.getIntForUser(resolver,
KEY_EDGE_LIGHTNING, 0, UserHandle.USER_CURRENT) == 1;
mEdgeLightning.setChecked(enabled);
mEdgeLightning.setOnPreferenceChangeListener(this);
mAlertSlider = (Preference) prefScreen.findPreference(ALERT_SLIDER_PREF);
boolean mAlertSliderAvailable = res.getBoolean(
com.android.internal.R.bool.config_hasAlertSlider);
if (!mAlertSliderAvailable)
prefScreen.removePreference(mAlertSlider);
mChargingLeds = (Preference) findPreference("charging_light");
if (mChargingLeds != null
@@ -97,30 +74,84 @@ public class NotificationSettings extends SettingsPreferenceFragment implements
prefScreen.removePreference(mChargingLeds);
}
Context context = getContext();
mEdgeLightColorMode = (SystemSettingListPreference) findPreference(AMBIENT_LIGHT_COLOR);
int edgeLightColorMode = Settings.System.getIntForUser(getContentResolver(),
Settings.System.NOTIFICATION_PULSE_COLOR_MODE, 0, UserHandle.USER_CURRENT);
mEdgeLightColorMode.setValue(String.valueOf(edgeLightColorMode));
mEdgeLightColorMode.setSummary(mEdgeLightColorMode.getEntry());
mEdgeLightColorMode.setOnPreferenceChangeListener(this);
mEdgeLightColor = (ColorPickerPreference) findPreference(AMBIENT_LIGHT_CUSTOM_COLOR);
int edgeLightColor = Settings.System.getInt(getContentResolver(),
Settings.System.NOTIFICATION_PULSE_COLOR, 0xFFFFFFFF);
mEdgeLightColor.setNewPreviewColor(edgeLightColor);
String edgeLightColorHex = String.format("#%08x", (0xFFFFFFFF & edgeLightColor));
if (edgeLightColorHex.equals("#ffffffff")) {
mEdgeLightColor.setSummary(R.string.default_string);
} else {
mEdgeLightColor.setSummary(edgeLightColorHex);
}
mEdgeLightColor.setOnPreferenceChangeListener(this);
mEdgeLightDuration = (CustomSeekBarPreference) findPreference(AMBIENT_LIGHT_DURATION);
int lightDuration = Settings.System.getIntForUser(getContentResolver(),
Settings.System.NOTIFICATION_PULSE_DURATION, 2, UserHandle.USER_CURRENT);
mEdgeLightDuration.setValue(lightDuration);
mEdgeLightDuration.setOnPreferenceChangeListener(this);
mEdgeLightRepeatCount = (CustomSeekBarPreference) findPreference(AMBIENT_LIGHT_REPEAT_COUNT);
int edgeLightRepeatCount = Settings.System.getIntForUser(getContentResolver(),
Settings.System.NOTIFICATION_PULSE_REPEATS, 0, UserHandle.USER_CURRENT);
mEdgeLightRepeatCount.setValue(edgeLightRepeatCount);
mEdgeLightRepeatCount.setOnPreferenceChangeListener(this);
PreferenceCategory incallVibCategory = (PreferenceCategory) findPreference(INCALL_VIB_OPTIONS);
if (!CherishUtils.isVoiceCapable(getActivity())) {
prefScreen.removePreference(incallVibCategory);
}
}
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
final ContentResolver resolver = getActivity().getContentResolver();
if (preference == mFlashOnCall) {
int value = Integer.parseInt((String) newValue);
Settings.System.putInt(resolver,
Settings.System.FLASHLIGHT_ON_CALL, value);
mFlashOnCall.setSummary(mFlashOnCall.getEntries()[value]);
mFlashOnCallIgnoreDND.setVisible(value > 1);
mFlashOnCallRate.setVisible(value != 0);
ContentResolver resolver = getActivity().getContentResolver();
if (preference == mEdgeLightColorMode) {
int edgeLightColorMode = Integer.valueOf((String) newValue);
int index = mEdgeLightColorMode.findIndexOfValue((String) newValue);
Settings.System.putIntForUser(getContentResolver(),
Settings.System.NOTIFICATION_PULSE_COLOR_MODE, edgeLightColorMode, UserHandle.USER_CURRENT);
mEdgeLightColorMode.setSummary(mEdgeLightColorMode.getEntries()[index]);
if (edgeLightColorMode == 3) {
mEdgeLightColor.setEnabled(true);
} else {
mEdgeLightColor.setEnabled(false);
}
return true;
} else if (preference == mFlashOnCallRate) {
} else if (preference == mEdgeLightColor) {
String hex = ColorPickerPreference.convertToARGB(
Integer.valueOf(String.valueOf(newValue)));
if (hex.equals("#ffffffff")) {
preference.setSummary(R.string.default_string);
} else {
preference.setSummary(hex);
}
int intHex = ColorPickerPreference.convertToColorInt(hex);
Settings.System.putInt(getContentResolver(),
Settings.System.NOTIFICATION_PULSE_COLOR, intHex);
return true;
} else if (preference == mEdgeLightDuration) {
int value = (Integer) newValue;
Settings.System.putInt(resolver,
Settings.System.FLASHLIGHT_ON_CALL_RATE, value);
Settings.System.putIntForUser(getContentResolver(),
Settings.System.NOTIFICATION_PULSE_DURATION, value, UserHandle.USER_CURRENT);
return true;
} else if (preference == mEdgeLightning) {
boolean value = (Boolean) newValue;
Settings.System.putIntForUser(resolver, KEY_EDGE_LIGHTNING,
value ? 1 : 0, UserHandle.USER_CURRENT);
} else if (preference == mEdgeLightRepeatCount) {
int value = (Integer) newValue;
Settings.System.putIntForUser(getContentResolver(),
Settings.System.NOTIFICATION_PULSE_REPEATS, value, UserHandle.USER_CURRENT);
return true;
}
}
return false;
}
@@ -151,6 +182,10 @@ public class NotificationSettings extends SettingsPreferenceFragment implements
public List<String> getNonIndexableKeys(Context context) {
List<String> keys = super.getNonIndexableKeys(context);
final Resources res = context.getResources();
boolean mAlertSliderAvailable = res.getBoolean(
com.android.internal.R.bool.config_hasAlertSlider);
if (!mAlertSliderAvailable)
keys.add(ALERT_SLIDER_PREF);
return keys;
}
};

View File

@@ -0,0 +1,171 @@
/*
* Copyright (C) 2022 The Nameless-AOSP 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 com.cherish.settings.fragments;
import android.content.Context;
import android.os.Bundle;
import android.os.UserHandle;
import android.provider.Settings;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import androidx.preference.Preference;
import com.android.internal.logging.nano.MetricsProto;
import com.android.internal.util.systemui.qs.QSLayoutUtils;
import com.android.settings.R;
import com.android.settings.SettingsPreferenceFragment;
import com.android.settingslib.widget.LayoutPreference;
import com.cherish.settings.preferences.CustomSeekBarPreference;
import com.cherish.settings.preferences.SystemSettingSwitchPreference;
public class QsTileLayoutSettings extends SettingsPreferenceFragment
implements Preference.OnPreferenceChangeListener {
private static final String KEY_QS_HIDE_LABEL = "qs_tile_label_hide";
private static final String KEY_QS_VERTICAL_LAYOUT = "qs_tile_vertical_layout";
private static final String KEY_QS_COLUMN_PORTRAIT = "qs_layout_columns";
private static final String KEY_QS_ROW_PORTRAIT = "qs_layout_rows";
private static final String KEY_QQS_ROW_PORTRAIT = "qqs_layout_rows";
private static final String KEY_APPLY_CHANGE_BUTTON = "apply_change_button";
private Context mContext;
private CustomSeekBarPreference mQsColumns;
private CustomSeekBarPreference mQsRows;
private CustomSeekBarPreference mQqsRows;
private Button mApplyChange;
private SystemSettingSwitchPreference mHide;
private SystemSettingSwitchPreference mVertical;
private int[] currentValue = new int[2];
@Override
public void onCreate(Bundle savedInstance) {
super.onCreate(savedInstance);
addPreferencesFromResource(R.xml.qs_tile_layout);
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
mQsColumns = (CustomSeekBarPreference) findPreference(KEY_QS_COLUMN_PORTRAIT);
mQsColumns.setOnPreferenceChangeListener(this);
mQsRows = (CustomSeekBarPreference) findPreference(KEY_QS_ROW_PORTRAIT);
mQsRows.setOnPreferenceChangeListener(this);
mQqsRows = (CustomSeekBarPreference) findPreference(KEY_QQS_ROW_PORTRAIT);
mQqsRows.setOnPreferenceChangeListener(this);
mContext = getContext();
LayoutPreference preference = findPreference(KEY_APPLY_CHANGE_BUTTON);
mApplyChange = (Button) preference.findViewById(R.id.apply_change);
mApplyChange.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mApplyChange.isEnabled()) {
final int[] newValue = {
mQsRows.getValue() * 10 + mQsColumns.getValue(),
mQqsRows.getValue() * 10 + mQsColumns.getValue()
};
Settings.System.putIntForUser(getContentResolver(),
Settings.System.QS_LAYOUT, newValue[0], UserHandle.USER_CURRENT);
Settings.System.putIntForUser(getContentResolver(),
Settings.System.QQS_LAYOUT, newValue[1], UserHandle.USER_CURRENT);
if (QSLayoutUtils.updateLayout(mContext)) {
currentValue[0] = newValue[0];
currentValue[1] = newValue[1];
mApplyChange.setEnabled(false);
} else {
Settings.System.putIntForUser(getContentResolver(),
Settings.System.QS_LAYOUT, currentValue[0], UserHandle.USER_CURRENT);
Settings.System.putIntForUser(getContentResolver(),
Settings.System.QQS_LAYOUT, currentValue[1], UserHandle.USER_CURRENT);
Toast.makeText(mContext, R.string.qs_apply_change_failed, Toast.LENGTH_LONG).show();
}
}
}
});
initPreference();
final boolean hideLabel = Settings.System.getIntForUser(getContentResolver(),
Settings.System.QS_TILE_LABEL_HIDE, 0, UserHandle.USER_CURRENT) == 1;
mHide = (SystemSettingSwitchPreference) findPreference(KEY_QS_HIDE_LABEL);
mHide.setOnPreferenceChangeListener(this);
mVertical = (SystemSettingSwitchPreference) findPreference(KEY_QS_VERTICAL_LAYOUT);
mVertical.setEnabled(!hideLabel);
}
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
if (preference == mHide) {
boolean hideLabel = (Boolean) newValue;
mVertical.setEnabled(!hideLabel);
} else if (preference == mQsColumns) {
int qs_columns = Integer.parseInt(newValue.toString());
mApplyChange.setEnabled(
currentValue[0] != mQsRows.getValue() * 10 + qs_columns ||
currentValue[1] != mQqsRows.getValue() * 10 + qs_columns
);
} else if (preference == mQsRows) {
int qs_rows = Integer.parseInt(newValue.toString());
mQqsRows.setMax(qs_rows - 1);
if (mQqsRows.getValue() > qs_rows - 1) {
mQqsRows.setValue(qs_rows - 1);
}
mApplyChange.setEnabled(
currentValue[0] != qs_rows * 10 + mQsColumns.getValue() ||
currentValue[1] != mQqsRows.getValue() * 10 + mQsColumns.getValue()
);
} else if (preference == mQqsRows) {
int qqs_rows = Integer.parseInt(newValue.toString());
mApplyChange.setEnabled(
currentValue[0] != mQsRows.getValue() * 10 + mQsColumns.getValue() ||
currentValue[1] != qqs_rows * 10 + mQsColumns.getValue()
);
}
return true;
}
@Override
public int getMetricsCategory() {
return MetricsProto.MetricsEvent.CHERISH_SETTINGS;
}
private void initPreference() {
final int index_qs = Settings.System.getIntForUser(getContentResolver(),
Settings.System.QS_LAYOUT, 42, UserHandle.USER_CURRENT);
final int index_qqs = Settings.System.getIntForUser(getContentResolver(),
Settings.System.QQS_LAYOUT, 22, UserHandle.USER_CURRENT);
mQsColumns.setValue(index_qs % 10);
mQsRows.setValue(index_qs / 10);
mQqsRows.setValue(index_qqs / 10);
mQqsRows.setMax(mQsRows.getValue() - 1);
currentValue[0] = index_qs;
currentValue[1] = index_qqs;
}
}

Some files were not shown because too many files have changed in this diff Show More