diff --git a/lawnchair/res/values/config.xml b/lawnchair/res/values/config.xml
index cb5827a882..530955f4e8 100644
--- a/lawnchair/res/values/config.xml
+++ b/lawnchair/res/values/config.xml
@@ -57,6 +57,7 @@
true
false
true
+ true
true
false
true
diff --git a/lawnchair/res/values/strings.xml b/lawnchair/res/values/strings.xml
index f92c759b49..7b11917c33 100644
--- a/lawnchair/res/values/strings.xml
+++ b/lawnchair/res/values/strings.xml
@@ -216,6 +216,8 @@
May cause Lawnchair to freeze.
Font Customization
Some text remains unchanged.
+ At a Glance Calendar Customization
+ Allow showing date in non-Gregorian calendar systems.
App Search
Google
Google Go
diff --git a/lawnchair/src/app/lawnchair/preferences2/PreferenceManager2.kt b/lawnchair/src/app/lawnchair/preferences2/PreferenceManager2.kt
index b84e97d2b9..883ff2c03e 100644
--- a/lawnchair/src/app/lawnchair/preferences2/PreferenceManager2.kt
+++ b/lawnchair/src/app/lawnchair/preferences2/PreferenceManager2.kt
@@ -155,6 +155,11 @@ class PreferenceManager2(private val context: Context) : PreferenceManager {
},
)
+ val enableSmartspaceCalendarSelection = preference(
+ key = booleanPreferencesKey(name = "enable_smartspace_calendar_selection"),
+ defaultValue = context.resources.getBoolean(R.bool.config_default_enable_smartspace_calendar_selection),
+ )
+
val dt2s = preference(
key = booleanPreferencesKey(name = "dt2s"),
defaultValue = context.resources.getBoolean(R.bool.config_default_dts2),
diff --git a/lawnchair/src/app/lawnchair/smartspace/IcuDateTextView.kt b/lawnchair/src/app/lawnchair/smartspace/IcuDateTextView.kt
index 9d446e853f..07c029edcb 100644
--- a/lawnchair/src/app/lawnchair/smartspace/IcuDateTextView.kt
+++ b/lawnchair/src/app/lawnchair/smartspace/IcuDateTextView.kt
@@ -8,11 +8,14 @@ import android.icu.text.DateFormat
import android.icu.text.DisplayContext
import android.os.SystemClock
import android.util.AttributeSet
+import app.lawnchair.preferences.getAdapter
import app.lawnchair.preferences2.PreferenceManager2
import app.lawnchair.preferences2.subscribeBlocking
import app.lawnchair.smartspace.model.SmartspaceCalendar
import app.lawnchair.util.viewAttachedScope
import com.android.launcher3.R
+import com.patrykmichalik.preferencemanager.first
+import com.patrykmichalik.preferencemanager.firstBlocking
import saman.zamani.persiandate.PersianDate
import saman.zamani.persiandate.PersianDateFormat
import java.util.*
@@ -87,8 +90,14 @@ class IcuDateTextView @JvmOverloads constructor(
override fun onFinishInflate() {
super.onFinishInflate()
preferenceManager2 = PreferenceManager2.getInstance(context)
- preferenceManager2.smartspaceCalendar.subscribeBlocking(scope = viewAttachedScope) {
- calendar = it
+ val calendarSelectionEnabled =
+ preferenceManager2.enableSmartspaceCalendarSelection.firstBlocking()
+ if (calendarSelectionEnabled) {
+ preferenceManager2.smartspaceCalendar.subscribeBlocking(scope = viewAttachedScope) {
+ calendar = it
+ }
+ } else {
+ calendar = preferenceManager2.smartspaceCalendar.defaultValue
}
}
diff --git a/lawnchair/src/app/lawnchair/ui/preferences/ExperimentalFeaturesPreferences.kt b/lawnchair/src/app/lawnchair/ui/preferences/ExperimentalFeaturesPreferences.kt
index d36aaedf75..cb8e7c9b63 100644
--- a/lawnchair/src/app/lawnchair/ui/preferences/ExperimentalFeaturesPreferences.kt
+++ b/lawnchair/src/app/lawnchair/ui/preferences/ExperimentalFeaturesPreferences.kt
@@ -24,6 +24,11 @@ fun ExperimentalFeaturesPreferences() {
label = stringResource(id = R.string.font_picker_label),
description = stringResource(id = R.string.font_picker_description),
)
+ SwitchPreference(
+ adapter = prefs.enableSmartspaceCalendarSelection.getAdapter(),
+ label = stringResource(id = R.string.smartspace_calendar_label),
+ description = stringResource(id = R.string.smartspace_calendar_description),
+ )
}
}
}
diff --git a/lawnchair/src/app/lawnchair/ui/preferences/SmartspacePreferences.kt b/lawnchair/src/app/lawnchair/ui/preferences/SmartspacePreferences.kt
index 4a9630bfd0..ced93cef90 100644
--- a/lawnchair/src/app/lawnchair/ui/preferences/SmartspacePreferences.kt
+++ b/lawnchair/src/app/lawnchair/ui/preferences/SmartspacePreferences.kt
@@ -62,7 +62,11 @@ fun SmartspacePreferences(fromWidget: Boolean) {
heading = stringResource(id = R.string.what_to_show),
modifier = Modifier.padding(top = 8.dp),
) {
- SmartspaceCalendarPreference()
+ val calendarSelectionEnabled =
+ preferenceManager2.enableSmartspaceCalendarSelection.getAdapter()
+ if (calendarSelectionEnabled.state.value) {
+ SmartspaceCalendarPreference()
+ }
smartspaceProvider.dataSources
.filter { it.isAvailable }
.forEach {