Update top of modes page

* Show blurb based on mode type.
* Make the icon bigger and highlight it when mode is active.
* Increase spacing between elements.

Also eliminate some code duplication between header of mode page and header of icon picker.

Fixes: 355415875
Test: manual
Flag: android.app.modes_ui
Change-Id: I7e788b9b5920cedb791d1571b19b37e65ece6d0b
This commit is contained in:
Matías Hernández
2024-07-25 16:39:42 +02:00
parent e980a145eb
commit 246960de0c
14 changed files with 325 additions and 76 deletions

View File

@@ -15,7 +15,6 @@
*/
package com.android.settings.notification.modes;
import android.app.Flags;
import android.content.Context;
import androidx.annotation.NonNull;
@@ -23,48 +22,22 @@ import androidx.preference.Preference;
import com.android.settings.R;
import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.widget.EntityHeaderController;
import com.android.settingslib.notification.modes.ZenIconLoader;
import com.android.settingslib.notification.modes.ZenMode;
import com.android.settingslib.widget.LayoutPreference;
class ZenModeHeaderController extends AbstractZenModePreferenceController {
private final DashboardFragment mFragment;
private EntityHeaderController mHeaderController;
class ZenModeHeaderController extends AbstractZenModeHeaderController {
ZenModeHeaderController(
@NonNull Context context,
@NonNull String key,
@NonNull DashboardFragment fragment) {
super(context, key);
mFragment = fragment;
}
@Override
public boolean isAvailable() {
return Flags.modesApi();
super(context, key, fragment);
}
@Override
public void updateState(Preference preference, @NonNull ZenMode zenMode) {
if (mFragment == null) {
return;
}
preference.setSelectable(false);
if (mHeaderController == null) {
final LayoutPreference pref = (LayoutPreference) preference;
mHeaderController = EntityHeaderController.newInstance(
mFragment.getActivity(),
mFragment,
pref.findViewById(R.id.entity_header));
}
FutureUtil.whenDone(
zenMode.getIcon(mContext, ZenIconLoader.getInstance()),
icon -> mHeaderController.setIcon(IconUtil.applyNormalTint(mContext, icon))
.done(/* rebindActions= */ false),
mContext.getMainExecutor());
updateIcon(preference, zenMode,
mContext.getResources().getDimensionPixelSize(R.dimen.zen_mode_header_size),
icon -> IconUtil.makeModeHeader(mContext, icon),
iconView -> iconView.setSelected(zenMode.isActive()));
}
}