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

Commit 0d2da0e5 authored by Stefan Maftei's avatar Stefan Maftei
Browse files

[Expressive design] Use Zero State view in ManageApplications



Bug: 418934712
Test: atest ManageApplicationsTest, and visual
Flag: EXEMPT resource update

Change-Id: Iacc111654c99db62a509136d455b524f30e8d02d
Signed-off-by: default avatarStefan Maftei <smaftei@google.com>
parent c223527f
Loading
Loading
Loading
Loading
+46 −0
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:settings="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

@@ -49,6 +50,51 @@
        settings:layout_constraintTop_toBottomOf="@id/pinned_header"
        settings:layout_constraintBottom_toBottomOf="parent"/>

    <!-- Zero State Preference as a BC25 empty view replacement -->
    <LinearLayout
        android:id="@+id/zero_state"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:paddingStart="?android:attr/listPreferredItemPaddingStart"
        android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
        android:paddingTop="@dimen/settingslib_expressive_space_small1"
        android:paddingBottom="@dimen/settingslib_expressive_space_small1"
        android:layout_gravity="center"
        android:gravity="center_horizontal"
        android:orientation="vertical"
        settings:layout_constraintTop_toBottomOf="@id/pinned_header"
        settings:layout_constraintBottom_toBottomOf="parent">

        <FrameLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            tools:ignore="ContentDescription">

            <ImageView
                android:layout_width="@dimen/settingslib_expressive_zero_state_background_size"
                android:layout_height="@dimen/settingslib_expressive_zero_state_background_size"
                android:src="@drawable/settingslib_expressive_zerostate_background"/>

            <ImageView
                android:id="@android:id/icon"
                android:layout_width="@dimen/settingslib_expressive_space_large2"
                android:layout_height="@dimen/settingslib_expressive_space_large2"
                android:layout_gravity="center"
                android:src="@drawable/ic_apps_alt"/>

        </FrameLayout>
        <TextView
            android:id="@android:id/title"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:textAppearance="@style/TextAppearance.SettingsLib.TitleMedium.Emphasized"
            android:textColor="@color/settingslib_text_color_primary"
            android:text="@string/no_applications"
            android:layout_marginHorizontal="@dimen/settingslib_expressive_space_medium1"
            android:layout_marginTop="@dimen/settingslib_expressive_space_small4"/>
    </LinearLayout>

    <include layout="@layout/loading_container"
        settings:layout_constraintTop_toBottomOf="@id/pinned_header"
        settings:layout_constraintBottom_toBottomOf="parent"/>
+16 −1
Original line number Diff line number Diff line
@@ -49,6 +49,7 @@ import android.content.pm.ApplicationInfo;
import android.content.pm.PackageItemInfo;
import android.content.pm.UserInfo;
import android.content.res.Configuration;
import android.graphics.PorterDuff;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Build;
@@ -78,6 +79,7 @@ import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.Filter;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.SearchView;
import android.widget.Spinner;
import android.widget.Toast;
@@ -172,6 +174,7 @@ import com.android.settingslib.applications.ApplicationsState.VolumeFilter;
import com.android.settingslib.fuelgauge.PowerAllowlistBackend;
import com.android.settingslib.utils.ThreadUtils;
import com.android.settingslib.widget.SettingsSpinnerAdapter;
import com.android.settingslib.widget.SettingsThemeHelper;

import com.google.android.material.appbar.AppBarLayout;

@@ -446,7 +449,19 @@ public class ManageApplications extends InstrumentedFragment

        mRootView = inflater.inflate(R.layout.manage_applications_apps, null);
        mLoadingContainer = mRootView.findViewById(R.id.loading_container);
        if (!SettingsThemeHelper.isExpressiveTheme(getContext())) {
            mEmptyView = mRootView.findViewById(android.R.id.empty);
            mRootView.findViewById(R.id.zero_state).setVisibility(View.INVISIBLE);
        } else {
            mEmptyView = mRootView.findViewById(R.id.zero_state);
            mRootView.findViewById(android.R.id.empty).setVisibility(View.INVISIBLE);

            ImageView emptyViewIcon = mRootView.findViewById(android.R.id.icon);
            int iconTint = getContext().getColor(
                    com.android.settingslib.widget.theme.R.color.settingslib_materialColorOnSurface
            );
            emptyViewIcon.setColorFilter(iconTint, PorterDuff.Mode.SRC_IN);
        }
        mRecyclerView = mRootView.findViewById(R.id.apps_list);

        mApplications = new ApplicationsAdapter(mApplicationsState, this, mFilter,