blob: 054e381f096a7e87d2581f95f377a52cf457ff16 [file] [log] [blame]
/*
* 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;
}
}