17514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam/*
27514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam * Copyright (C) 2017 The Android Open Source Project
37514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam *
47514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam * Licensed under the Apache License, Version 2.0 (the "License");
57514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam * you may not use this file except in compliance with the License.
67514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam * You may obtain a copy of the License at
77514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam *
87514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam *      http://www.apache.org/licenses/LICENSE-2.0
97514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam *
107514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam * Unless required by applicable law or agreed to in writing, software
117514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam * distributed under the License is distributed on an "AS IS" BASIS,
127514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
137514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam * See the License for the specific language governing permissions and
147514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam * limitations under the License.
157514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam */
167514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam
177514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lampackage com.android.setupwizardlib.template;
187514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam
197514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lamimport android.content.res.ColorStateList;
207514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lamimport android.content.res.TypedArray;
217514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lamimport android.util.AttributeSet;
227514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lamimport android.widget.TextView;
237514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam
247514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lamimport com.android.setupwizardlib.R;
257514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lamimport com.android.setupwizardlib.TemplateLayout;
267514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam
277514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam/**
287514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam * A {@link Mixin} displaying a header text that can be set to different colors. This Mixin is
297514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam * registered to the tempalte using HeaderMixin.class, and can be retrieved using:
307514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam * {@code (ColoredHeaderMixin) templateLayout.getMixin(HeaderMixin.class}.
317514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam */
327514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lampublic class ColoredHeaderMixin extends HeaderMixin {
337514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam
347514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam    /**
357514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam     * {@inheritDoc}
367514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam     */
377514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam    public ColoredHeaderMixin(TemplateLayout layout, AttributeSet attrs, int defStyleAttr) {
387514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam        super(layout, attrs, defStyleAttr);
397514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam
407514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam        final TypedArray a = layout.getContext().obtainStyledAttributes(
417514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam                attrs, R.styleable.SuwColoredHeaderMixin, defStyleAttr, 0);
427514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam
437514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam        // Set the header color
447514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam        final ColorStateList headerColor =
457514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam                a.getColorStateList(R.styleable.SuwColoredHeaderMixin_suwHeaderColor);
467514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam        if (headerColor != null) {
477514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam            setColor(headerColor);
487514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam        }
497514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam
507514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam        a.recycle();
517514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam    }
527514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam
537514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam    /**
547514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam     * Sets the color of the header text. This can also be set via XML using
557514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam     * {@code app:suwHeaderColor}.
567514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam     *
577514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam     * @param color The text color of the header.
587514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam     */
597514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam    public void setColor(ColorStateList color) {
607514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam        final TextView titleView = getTextView();
617514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam        if (titleView != null) {
627514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam            titleView.setTextColor(color);
637514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam        }
647514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam    }
657514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam
667514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam    /**
677514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam     * @return The current text color of the header.
687514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam     */
697514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam    public ColorStateList getColor() {
707514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam        final TextView titleView = getTextView();
717514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam        return titleView != null ? titleView.getTextColors() : null;
727514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam    }
737514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam}
74