/* * Copyright (C) 2020 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.systemui.statusbar.notification.icon; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import com.android.internal.statusbar.StatusBarIcon; import com.android.systemui.statusbar.StatusBarIconView; /** * Data class for storing icons associated with a notification */ public final class IconPack { private final boolean mAreIconsAvailable; @Nullable private final StatusBarIconView mStatusBarIcon; @Nullable private final StatusBarIconView mShelfIcon; @Nullable private final StatusBarIconView mAodIcon; @Nullable private final StatusBarIconView mCenteredIcon; @Nullable private StatusBarIcon mSmallIconDescriptor; @Nullable private StatusBarIcon mPeopleAvatarDescriptor; private boolean mIsImportantConversation; /** * Builds an empty instance of IconPack that doesn't have any icons (because either they * haven't been inflated yet or there was an error while inflating them). */ public static IconPack buildEmptyPack(@Nullable IconPack fromSource) { return new IconPack(false, null, null, null, null, fromSource); } /** * Builds an instance of an IconPack that contains successfully-inflated icons */ public static IconPack buildPack( @NonNull StatusBarIconView statusBarIcon, @NonNull StatusBarIconView shelfIcon, @NonNull StatusBarIconView aodIcon, @Nullable StatusBarIconView centeredIcon, @Nullable IconPack source) { return new IconPack(true, statusBarIcon, shelfIcon, aodIcon, centeredIcon, source); } private IconPack( boolean areIconsAvailable, @Nullable StatusBarIconView statusBarIcon, @Nullable StatusBarIconView shelfIcon, @Nullable StatusBarIconView aodIcon, @Nullable StatusBarIconView centeredIcon, @Nullable IconPack source) { mAreIconsAvailable = areIconsAvailable; mStatusBarIcon = statusBarIcon; mShelfIcon = shelfIcon; mCenteredIcon = centeredIcon; mAodIcon = aodIcon; if (source != null) { mIsImportantConversation = source.mIsImportantConversation; } } /** The version of the notification icon that appears in the status bar. */ @Nullable public StatusBarIconView getStatusBarIcon() { return mStatusBarIcon; } /** * The version of the icon that appears in the "shelf" at the bottom of the notification shade. * In general, this icon also appears somewhere on the notification and is "sucked" into the * shelf as the scrolls beyond it. */ @Nullable public StatusBarIconView getShelfIcon() { return mShelfIcon; } @Nullable public StatusBarIconView getCenteredIcon() { return mCenteredIcon; } /** The version of the icon that's shown when pulsing (in AOD). */ @Nullable public StatusBarIconView getAodIcon() { return mAodIcon; } @Nullable StatusBarIcon getSmallIconDescriptor() { return mSmallIconDescriptor; } void setSmallIconDescriptor(@Nullable StatusBarIcon smallIconDescriptor) { mSmallIconDescriptor = smallIconDescriptor; } @Nullable StatusBarIcon getPeopleAvatarDescriptor() { return mPeopleAvatarDescriptor; } void setPeopleAvatarDescriptor(@Nullable StatusBarIcon peopleAvatarDescriptor) { mPeopleAvatarDescriptor = peopleAvatarDescriptor; } boolean isImportantConversation() { return mIsImportantConversation; } void setImportantConversation(boolean importantConversation) { mIsImportantConversation = importantConversation; } public boolean getAreIconsAvailable() { return mAreIconsAvailable; } }