chromium/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/menu_button/MenuButtonProperties.java

// Copyright 2020 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

package org.chromium.chrome.browser.toolbar.menu_button;

import android.content.res.ColorStateList;

import androidx.annotation.NonNull;

import org.chromium.base.supplier.Supplier;
import org.chromium.chrome.browser.ui.appmenu.AppMenuButtonHelper;
import org.chromium.chrome.browser.ui.theme.BrandedColorScheme;
import org.chromium.ui.modelutil.PropertyKey;
import org.chromium.ui.modelutil.PropertyModel.WritableBooleanPropertyKey;
import org.chromium.ui.modelutil.PropertyModel.WritableFloatPropertyKey;
import org.chromium.ui.modelutil.PropertyModel.WritableObjectPropertyKey;

class MenuButtonProperties {
    static class ThemeProperty {
        @NonNull public ColorStateList mColorStateList;
        public @BrandedColorScheme int mBrandedColorScheme;

        public ThemeProperty(
                @NonNull ColorStateList colorStateList,
                @BrandedColorScheme int brandedColorScheme) {
            mColorStateList = colorStateList;
            mBrandedColorScheme = brandedColorScheme;
        }
    }

    static class ShowBadgeProperty {
        public boolean mShowUpdateBadge;
        public boolean mShouldAnimate;

        public ShowBadgeProperty(boolean showUpdateBadge, boolean shouldAnimate) {
            mShowUpdateBadge = showUpdateBadge;
            mShouldAnimate = shouldAnimate;
        }
    }

    public static final WritableFloatPropertyKey ALPHA = new WritableFloatPropertyKey();
    public static final WritableObjectPropertyKey<AppMenuButtonHelper> APP_MENU_BUTTON_HELPER =
            new WritableObjectPropertyKey<>();
    public static final WritableObjectPropertyKey<String> CONTENT_DESCRIPTION =
            new WritableObjectPropertyKey<>();
    public static final WritableBooleanPropertyKey IS_CLICKABLE = new WritableBooleanPropertyKey();
    public static final WritableBooleanPropertyKey IS_HIGHLIGHTING =
            new WritableBooleanPropertyKey();
    public static final WritableBooleanPropertyKey IS_VISIBLE = new WritableBooleanPropertyKey();
    public static final WritableObjectPropertyKey<Supplier<MenuButtonState>> STATE_SUPPLIER =
            new WritableObjectPropertyKey<>();
    public static final WritableObjectPropertyKey<ShowBadgeProperty> SHOW_UPDATE_BADGE =
            new WritableObjectPropertyKey(true);
    public static final WritableObjectPropertyKey<ThemeProperty> THEME =
            new WritableObjectPropertyKey<>(true);
    public static final WritableFloatPropertyKey TRANSLATION_X = new WritableFloatPropertyKey();

    public static final PropertyKey[] ALL_KEYS =
            new PropertyKey[] {
                ALPHA,
                APP_MENU_BUTTON_HELPER,
                CONTENT_DESCRIPTION,
                IS_CLICKABLE,
                IS_HIGHLIGHTING,
                IS_VISIBLE,
                STATE_SUPPLIER,
                SHOW_UPDATE_BADGE,
                THEME,
                TRANSLATION_X
            };
}