Skip to content

Commit 041ef77

Browse files
minaripenguinhungphan2001
authored andcommitted
Cherish: Add island notifications
Change-Id: I719958ef77bcf7ab141706d3768aecd6bc797559 Signed-off-by: Ghosuto <clash.raja10@gmail.com> Signed-off-by: hungphan2001 <phandinhhungvp2001@gmail.com>
1 parent cd8d8ca commit 041ef77

File tree

4 files changed

+110
-0
lines changed

4 files changed

+110
-0
lines changed

res/values/cherish_strings.xml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -862,4 +862,17 @@
862862
<string name="power_off_verify_footer">Power off verification protects your device by preventing others from turning it off immediately after it\'s lost, increasing the chances of recovery. You only need to enter your lock screen password when powering off or restarting the phone from the lock screen.</string>
863863
<string name="power_off_verify_summary">When your device is locked, you\'ll need to use your password to power off or restart.</string>
864864
<string name="power_off_verify_title">Power off verify</string>
865+
866+
<!-- Island Notification -->
867+
<string name="island_notification_now_playing_title">Now playing</string>
868+
<string name="island_notification_now_playing_summary">Display currently playing song in Dynamic Island style</string>
869+
<string name="island_notification_footer_text">
870+
The Island notification feature, inspired by iOS\'s Dynamic Island, transforms Android\'s heads-up notifications into quick-access and compact notification utility.\n\nIsland Quick Access Controls includes the following features:\n1. Tap island notification to quick answer phone calls.\n2. Long press island notification to reject phone calls.\n3. Long press island notification to expand the island notification preview.
871+
</string>
872+
<string name="notifications_island_notification_title">Island notification</string>
873+
<string name="notifications_island_notification_summary">Display heads-up notification in Dynamic Island style</string>
874+
<string name="island_transparent_background_title">Transparent Island Background</string>
875+
<string name="island_transparent_background_summary">Use transparent background for island notifications</string>
876+
<string name="island_margin_top_title">Island notifications top margin</string>
877+
<string name="island_margin_top_summary">Adjust the top margin of island notification</string>
865878
</resources>

res/xml/cherish_settings_notifications.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,12 @@
2727
android:title="@string/edge_light_title"
2828
android:summary="@string/edge_light_summary"
2929
android:fragment="com.cherish.settings.fragments.EdgeLightSettings" />
30+
31+
<Preference
32+
android:key="island_notification"
33+
android:title="@string/notifications_island_notification_title"
34+
android:summary="@string/notifications_island_notification_summary"
35+
android:fragment="com.cherish.settings.fragments.notifications.IslandSettings" />
3036
</PreferenceCategory>
3137

3238
<PreferenceCategory

res/xml/island_settings.xml

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<!--
3+
Copyright (C) 2023 The risingOS Android Project
4+
SPDX-License-Identifier: Apache-2.0
5+
-->
6+
7+
<PreferenceScreen
8+
xmlns:android="http://schemas.android.com/apk/res/android"
9+
xmlns:settings="http://schemas.android.com/apk/res/com.android.settings"
10+
android:title="@string/notifications_island_notification_title">
11+
12+
<com.cherish.settings.preferences.SystemSettingSwitchPreference
13+
android:key="island_notification"
14+
android:title="@string/notifications_island_notification_title"
15+
android:summary="@string/notifications_island_notification_summary"
16+
android:defaultValue="false" />
17+
18+
<com.cherish.settings.preferences.SystemSettingSwitchPreference
19+
android:key="island_notification_now_playing"
20+
android:title="@string/island_notification_now_playing_title"
21+
android:summary="@string/island_notification_now_playing_summary"
22+
android:dependency="island_notification"
23+
android:defaultValue="false" />
24+
25+
<com.cherish.settings.preferences.SystemSettingSwitchPreference
26+
android:key="island_transparent_background"
27+
android:title="@string/island_transparent_background_title"
28+
android:summary="@string/island_transparent_background_summary"
29+
android:dependency="island_notification"
30+
android:defaultValue="false" />
31+
32+
<com.cherish.settings.preferences.SystemSettingSeekBarPreference
33+
android:key="island_margin_top"
34+
android:title="@string/island_margin_top_title"
35+
android:summary="@string/island_margin_top_summary"
36+
android:dependency="island_notification"
37+
android:defaultValue="45"
38+
settings:interval="1"
39+
settings:units="dp"
40+
android:max="80"
41+
settings:min="0" />
42+
43+
<com.android.settingslib.widget.FooterPreference
44+
android:key="island_notification_footer"
45+
android:title="@string/island_notification_footer_text"
46+
android:selectable="false"
47+
settings:searchable="false" />
48+
</PreferenceScreen>
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package com.cherish.settings.fragments.notifications
2+
3+
import android.content.Context
4+
import android.os.Bundle
5+
import androidx.preference.Preference
6+
import com.android.internal.logging.nano.MetricsProto
7+
import com.android.settings.R
8+
import com.android.settings.SettingsPreferenceFragment
9+
import com.android.settings.search.BaseSearchIndexProvider
10+
import com.android.settingslib.search.SearchIndexable
11+
import com.android.internal.util.android.VibrationUtils
12+
13+
@SearchIndexable
14+
class IslandSettings : SettingsPreferenceFragment() {
15+
16+
override fun onCreate(savedInstanceState: Bundle?) {
17+
super.onCreate(savedInstanceState)
18+
addPreferencesFromResource(R.xml.island_settings)
19+
}
20+
21+
override fun onPreferenceTreeClick(preference: Preference): Boolean {
22+
if (preference.key != null) {
23+
VibrationUtils.triggerVibration(context, 3)
24+
}
25+
return super.onPreferenceTreeClick(preference)
26+
}
27+
28+
override fun getMetricsCategory(): Int {
29+
return MetricsProto.MetricsEvent.CHERISH_SETTINGS
30+
}
31+
32+
companion object {
33+
const val TAG = "IslandSettings"
34+
35+
/** For search */
36+
@JvmField
37+
val SEARCH_INDEX_DATA_PROVIDER = object : BaseSearchIndexProvider(R.xml.island_settings) {
38+
override fun getNonIndexableKeys(context: Context): List<String> {
39+
return super.getNonIndexableKeys(context)
40+
}
41+
}
42+
}
43+
}

0 commit comments

Comments
 (0)