Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 308983f4 authored by Fan Wu's avatar Fan Wu
Browse files

[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
parent 2911651f
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -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
+1 −0
Original line number Diff line number Diff line
@@ -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"/>
+14 −3
Original line number Diff line number Diff line
@@ -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)