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