You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

130 lines
3.8 KiB

/*
* Copyright (C) 2018 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.bubble;
import android.app.PendingIntent;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.Icon;
import android.support.annotation.ColorInt;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.annotation.Px;
import com.google.auto.value.AutoValue;
import java.util.Collections;
import java.util.List;
/** Info for displaying a {@link Bubble} */
@AutoValue
public abstract class BubbleInfo {
@ColorInt
public abstract int getPrimaryColor();
public abstract Icon getPrimaryIcon();
@Nullable
public abstract Drawable getAvatar();
@Px
public abstract int getStartingYPosition();
@NonNull
public abstract List<Action> getActions();
public static Builder builder() {
return new AutoValue_BubbleInfo.Builder().setActions(Collections.emptyList());
}
public static Builder from(@NonNull BubbleInfo bubbleInfo) {
return builder()
.setPrimaryColor(bubbleInfo.getPrimaryColor())
.setPrimaryIcon(bubbleInfo.getPrimaryIcon())
.setStartingYPosition(bubbleInfo.getStartingYPosition())
.setActions(bubbleInfo.getActions())
.setAvatar(bubbleInfo.getAvatar());
}
/** Builder for {@link BubbleInfo} */
@AutoValue.Builder
public abstract static class Builder {
public abstract Builder setPrimaryColor(@ColorInt int primaryColor);
public abstract Builder setPrimaryIcon(@NonNull Icon primaryIcon);
public abstract Builder setAvatar(@Nullable Drawable avatar);
public abstract Builder setStartingYPosition(@Px int startingYPosition);
public abstract Builder setActions(List<Action> actions);
public abstract BubbleInfo build();
}
/** Represents actions to be shown in the bubble when expanded */
@AutoValue
public abstract static class Action {
public abstract Drawable getIconDrawable();
@Nullable
public abstract Drawable getSecondaryIconDrawable();
@NonNull
public abstract CharSequence getName();
@NonNull
public abstract PendingIntent getIntent();
public abstract boolean isCheckable();
public abstract boolean isChecked();
public static Builder builder() {
return new AutoValue_BubbleInfo_Action.Builder().setCheckable(true).setChecked(false);
}
public static Builder from(@NonNull Action action) {
return builder()
.setIntent(action.getIntent())
.setChecked(action.isChecked())
.setCheckable(action.isCheckable())
.setName(action.getName())
.setIconDrawable(action.getIconDrawable())
.setSecondaryIconDrawable(action.getSecondaryIconDrawable());
}
/** Builder for {@link Action} */
@AutoValue.Builder
public abstract static class Builder {
public abstract Builder setIconDrawable(Drawable iconDrawable);
public abstract Builder setSecondaryIconDrawable(@Nullable Drawable secondaryIconDrawable);
public abstract Builder setName(@NonNull CharSequence name);
public abstract Builder setIntent(@NonNull PendingIntent intent);
public abstract Builder setCheckable(boolean enabled);
public abstract Builder setChecked(boolean checked);
public abstract Action build();
}
}
}