summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Fan Wu <cechkahn@google.com> 2025-03-14 02:48:16 +0000
committer Fan Wu <cechkahn@google.com> 2025-03-14 02:48:21 +0000
commit308983f4d97281a8aafae960582b1e096ffed4a8 (patch)
treee0a5fe6b605e2a41e55e0217948c8f588b621186
parent2911651fd7326f4d785282fbbc69debb63974409 (diff)
[Expressive Design] Support Loading_Indeterminate status for StatusBannerPreference
Bug: 367536673 Test: manual Flag: com.android.settingslib.widget.theme.flags.is_expressive_design_enabled Change-Id: Ic25e4c0b74c10ddd7b5d0cae0d3d3a47c11fb40c
-rw-r--r--packages/SettingsLib/StatusBannerPreference/res/layout/settingslib_expressive_preference_statusbanner.xml9
-rw-r--r--packages/SettingsLib/StatusBannerPreference/res/values/attrs.xml1
-rw-r--r--packages/SettingsLib/StatusBannerPreference/src/com/android/settingslib/widget/StatusBannerPreference.kt17
3 files changed, 24 insertions, 3 deletions
diff --git a/packages/SettingsLib/StatusBannerPreference/res/layout/settingslib_expressive_preference_statusbanner.xml b/packages/SettingsLib/StatusBannerPreference/res/layout/settingslib_expressive_preference_statusbanner.xml
index e307d8b8ccbd..c778fb03e04f 100644
--- a/packages/SettingsLib/StatusBannerPreference/res/layout/settingslib_expressive_preference_statusbanner.xml
+++ b/packages/SettingsLib/StatusBannerPreference/res/layout/settingslib_expressive_preference_statusbanner.xml
@@ -67,6 +67,15 @@
android:progress="0"
android:visibility="gone" />
+ <com.google.android.material.loadingindicator.LoadingIndicator
+ android:id="@+id/loading_indicator"
+ style="@style/Widget.Material3.LoadingIndicator"
+ android:layout_width="@dimen/settingslib_expressive_space_medium4"
+ android:layout_height="@dimen/settingslib_expressive_space_medium4"
+ android:layout_gravity="center"
+ android:scaleType="centerInside"
+ android:visibility="gone" />
+
</FrameLayout>
<LinearLayout
diff --git a/packages/SettingsLib/StatusBannerPreference/res/values/attrs.xml b/packages/SettingsLib/StatusBannerPreference/res/values/attrs.xml
index 2cb39a20d071..bb9a5ad689cd 100644
--- a/packages/SettingsLib/StatusBannerPreference/res/values/attrs.xml
+++ b/packages/SettingsLib/StatusBannerPreference/res/values/attrs.xml
@@ -23,6 +23,7 @@
<enum name="high" value="3"/>
<enum name="off" value="4"/>
<enum name="loading_determinate" value="5"/>
+ <enum name="loading_indeterminate" value="6"/>
</attr>
<attr name="buttonLevel" format="enum">
<enum name="generic" value="0"/>
diff --git a/packages/SettingsLib/StatusBannerPreference/src/com/android/settingslib/widget/StatusBannerPreference.kt b/packages/SettingsLib/StatusBannerPreference/src/com/android/settingslib/widget/StatusBannerPreference.kt
index 274e1779fdca..e6c6638f7de4 100644
--- a/packages/SettingsLib/StatusBannerPreference/src/com/android/settingslib/widget/StatusBannerPreference.kt
+++ b/packages/SettingsLib/StatusBannerPreference/src/com/android/settingslib/widget/StatusBannerPreference.kt
@@ -43,7 +43,8 @@ class StatusBannerPreference @JvmOverloads constructor(
MEDIUM,
HIGH,
OFF,
- LOADING_DETERMINATE // The loading progress is set by the caller.
+ LOADING_DETERMINATE, // The loading progress is set by the caller.
+ LOADING_INDETERMINATE // No loading progress. Just loading animation
}
var iconLevel: BannerStatus = BannerStatus.GENERIC
set(value) {
@@ -94,6 +95,7 @@ class StatusBannerPreference @JvmOverloads constructor(
3 -> BannerStatus.HIGH
4 -> BannerStatus.OFF
5 -> BannerStatus.LOADING_DETERMINATE
+ 6 -> BannerStatus.LOADING_INDETERMINATE
else -> BannerStatus.GENERIC
}
@@ -109,7 +111,8 @@ class StatusBannerPreference @JvmOverloads constructor(
holder.findViewById(android.R.id.icon_frame)?.apply {
visibility =
if (
- icon != null || iconLevel == BannerStatus.LOADING_DETERMINATE
+ icon != null || iconLevel == BannerStatus.LOADING_DETERMINATE ||
+ iconLevel == BannerStatus.LOADING_INDETERMINATE
)
View.VISIBLE
else View.GONE
@@ -117,7 +120,8 @@ class StatusBannerPreference @JvmOverloads constructor(
holder.findViewById(android.R.id.icon)?.apply {
visibility =
- if (iconLevel == BannerStatus.LOADING_DETERMINATE)
+ if (iconLevel == BannerStatus.LOADING_DETERMINATE ||
+ iconLevel == BannerStatus.LOADING_INDETERMINATE)
View.GONE
else View.VISIBLE
}
@@ -132,6 +136,13 @@ class StatusBannerPreference @JvmOverloads constructor(
else View.GONE
}
+ holder.findViewById(R.id.loading_indicator)?.apply {
+ visibility =
+ if (iconLevel == BannerStatus.LOADING_INDETERMINATE)
+ View.VISIBLE
+ else View.GONE
+ }
+
(holder.findViewById(R.id.status_banner_button) as? MaterialButton)?.apply {
setBackgroundColor(
if (buttonLevel == BannerStatus.OFF) getBackgroundColor(BannerStatus.GENERIC)