IconMixin.java revision 58195c5316855122593366bd867ed51a91bd5c11
1b565df13a9e5c7b1d7d93bdfa4a793752d66d3ccChris Craik/* 2b565df13a9e5c7b1d7d93bdfa4a793752d66d3ccChris Craik * Copyright (C) 2017 The Android Open Source Project 3b565df13a9e5c7b1d7d93bdfa4a793752d66d3ccChris Craik * 4b565df13a9e5c7b1d7d93bdfa4a793752d66d3ccChris Craik * Licensed under the Apache License, Version 2.0 (the "License"); 5b565df13a9e5c7b1d7d93bdfa4a793752d66d3ccChris Craik * you may not use this file except in compliance with the License. 6b565df13a9e5c7b1d7d93bdfa4a793752d66d3ccChris Craik * You may obtain a copy of the License at 7b565df13a9e5c7b1d7d93bdfa4a793752d66d3ccChris Craik * 8b565df13a9e5c7b1d7d93bdfa4a793752d66d3ccChris Craik * http://www.apache.org/licenses/LICENSE-2.0 9b565df13a9e5c7b1d7d93bdfa4a793752d66d3ccChris Craik * 10b565df13a9e5c7b1d7d93bdfa4a793752d66d3ccChris Craik * Unless required by applicable law or agreed to in writing, software 11b565df13a9e5c7b1d7d93bdfa4a793752d66d3ccChris Craik * distributed under the License is distributed on an "AS IS" BASIS, 12b565df13a9e5c7b1d7d93bdfa4a793752d66d3ccChris Craik * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13b565df13a9e5c7b1d7d93bdfa4a793752d66d3ccChris Craik * See the License for the specific language governing permissions and 14b565df13a9e5c7b1d7d93bdfa4a793752d66d3ccChris Craik * limitations under the License. 15b565df13a9e5c7b1d7d93bdfa4a793752d66d3ccChris Craik */ 16b565df13a9e5c7b1d7d93bdfa4a793752d66d3ccChris Craik 17b565df13a9e5c7b1d7d93bdfa4a793752d66d3ccChris Craikpackage com.android.setupwizardlib.template; 18b565df13a9e5c7b1d7d93bdfa4a793752d66d3ccChris Craik 19b565df13a9e5c7b1d7d93bdfa4a793752d66d3ccChris Craikimport android.content.Context; 20b565df13a9e5c7b1d7d93bdfa4a793752d66d3ccChris Craikimport android.content.res.TypedArray; 21b565df13a9e5c7b1d7d93bdfa4a793752d66d3ccChris Craikimport android.graphics.drawable.Drawable; 221bcacfdcab0eaa0cee92bd7f5a1b5e271dd68e52John Reckimport android.util.AttributeSet; 239fded232a9548a304e0145011df8849fba0dcda7Chris Craikimport android.view.View; 24b565df13a9e5c7b1d7d93bdfa4a793752d66d3ccChris Craikimport android.widget.ImageView; 25b565df13a9e5c7b1d7d93bdfa4a793752d66d3ccChris Craik 26b565df13a9e5c7b1d7d93bdfa4a793752d66d3ccChris Craikimport com.android.setupwizardlib.R; 27a1717271caac5e8ea3808c331d4141ac01a42134Chris Craikimport com.android.setupwizardlib.TemplateLayout; 28a1717271caac5e8ea3808c331d4141ac01a42134Chris Craik 29b565df13a9e5c7b1d7d93bdfa4a793752d66d3ccChris Craik/** 30b565df13a9e5c7b1d7d93bdfa4a793752d66d3ccChris Craik * A {@link Mixin} for setting an icon on the template layout. 31b565df13a9e5c7b1d7d93bdfa4a793752d66d3ccChris Craik */ 32d3daa3198e2212c985c634821682d5819346b653Chris Craikpublic class IconMixin implements Mixin { 339fded232a9548a304e0145011df8849fba0dcda7Chris Craik 349fded232a9548a304e0145011df8849fba0dcda7Chris Craik private TemplateLayout mTemplateLayout; 351bcacfdcab0eaa0cee92bd7f5a1b5e271dd68e52John Reck 361bcacfdcab0eaa0cee92bd7f5a1b5e271dd68e52John Reck /** 3798787e6c9b2c10b1ab7820bdac168686025b924aChris Craik * @param layout The template layout that this Mixin is a part of. 380b7e8245db728d127ada698be63d78b33fc6e4daChris Craik * @param attrs XML attributes given to the layout. 390b7e8245db728d127ada698be63d78b33fc6e4daChris Craik * @param defStyleAttr The default style attribute as given to the constructor of the layout. 400b7e8245db728d127ada698be63d78b33fc6e4daChris Craik */ 4174af6e282f8a8f75928a071e8200039517cf5c12Chris Craik public IconMixin(TemplateLayout layout, AttributeSet attrs, int defStyleAttr) { 4274af6e282f8a8f75928a071e8200039517cf5c12Chris Craik mTemplateLayout = layout; 4374af6e282f8a8f75928a071e8200039517cf5c12Chris Craik final Context context = layout.getContext(); 4474af6e282f8a8f75928a071e8200039517cf5c12Chris Craik 4598787e6c9b2c10b1ab7820bdac168686025b924aChris Craik final TypedArray a = 46d3daa3198e2212c985c634821682d5819346b653Chris Craik context.obtainStyledAttributes(attrs, R.styleable.SuwIconMixin, defStyleAttr, 0); 47d3daa3198e2212c985c634821682d5819346b653Chris Craik 4802806288d1c56475413888a934c796e6e4eb11c5Chris Craik final Drawable icon = a.getDrawable(R.styleable.SuwIconMixin_android_icon); 491bcacfdcab0eaa0cee92bd7f5a1b5e271dd68e52John Reck if (icon != null) { 501bcacfdcab0eaa0cee92bd7f5a1b5e271dd68e52John Reck setIcon(icon); 5102806288d1c56475413888a934c796e6e4eb11c5Chris Craik } 5202806288d1c56475413888a934c796e6e4eb11c5Chris Craik 5302806288d1c56475413888a934c796e6e4eb11c5Chris Craik a.recycle(); 5402806288d1c56475413888a934c796e6e4eb11c5Chris Craik } 551bcacfdcab0eaa0cee92bd7f5a1b5e271dd68e52John Reck 5602806288d1c56475413888a934c796e6e4eb11c5Chris Craik /** 5702806288d1c56475413888a934c796e6e4eb11c5Chris Craik * Sets the icon on this layout. The icon can also be set in XML using {@code android:icon}. 580b7e8245db728d127ada698be63d78b33fc6e4daChris Craik * 5937413289478a965336239c731ebfea37ac4dde28Chris Craik * @param icon A drawable icon. 60818c9fbf1d76d5df19253ba4eb964efa939ec9ecChris Craik */ 615854b34881b1a747ac80b5077869ef270a92b1f4Chris Craik public void setIcon(Drawable icon) { 620b8d0677be2289bbc9e0b48c0878fb67d1cc0ebdJohn Reck final ImageView iconView = getView(); 635854b34881b1a747ac80b5077869ef270a92b1f4Chris Craik if (iconView != null) { 64818c9fbf1d76d5df19253ba4eb964efa939ec9ecChris Craik iconView.setImageDrawable(icon); 65818c9fbf1d76d5df19253ba4eb964efa939ec9ecChris Craik iconView.setVisibility(icon != null ? View.VISIBLE : View.GONE); 66818c9fbf1d76d5df19253ba4eb964efa939ec9ecChris Craik } 671bcacfdcab0eaa0cee92bd7f5a1b5e271dd68e52John Reck } 68975591a7af883d866d86ab819e164c6004694744John Reck 69975591a7af883d866d86ab819e164c6004694744John Reck /** 70d4fe4d3b30aaefcaaae6a6d1b8dc4bf59e034768Chris Craik * @return The icon previously set in {@link #setIcon(Drawable)} or {@code android:icon} 71d4fe4d3b30aaefcaaae6a6d1b8dc4bf59e034768Chris Craik */ 721bcacfdcab0eaa0cee92bd7f5a1b5e271dd68e52John Reck public Drawable getIcon() { 731bcacfdcab0eaa0cee92bd7f5a1b5e271dd68e52John Reck final ImageView iconView = getView(); 741bcacfdcab0eaa0cee92bd7f5a1b5e271dd68e52John Reck return iconView != null ? iconView.getDrawable() : null; 75818c9fbf1d76d5df19253ba4eb964efa939ec9ecChris Craik } 76818c9fbf1d76d5df19253ba4eb964efa939ec9ecChris Craik 770b7e8245db728d127ada698be63d78b33fc6e4daChris Craik /** 7898787e6c9b2c10b1ab7820bdac168686025b924aChris Craik * @return The ImageView responsible for displaying the icon. 7998787e6c9b2c10b1ab7820bdac168686025b924aChris Craik */ 80818c9fbf1d76d5df19253ba4eb964efa939ec9ecChris Craik protected ImageView getView() { 81818c9fbf1d76d5df19253ba4eb964efa939ec9ecChris Craik return (ImageView) mTemplateLayout.findManagedViewById(R.id.suw_layout_icon); 825854b34881b1a747ac80b5077869ef270a92b1f4Chris Craik } 83e5b50197e870aa6d22c3893f5d25f4279f06e5c3Chris Craik} 84e5b50197e870aa6d22c3893f5d25f4279f06e5c3Chris Craik