GlifLayout.java revision 7514f1cee29b3feb4822ce16945c1c312057d24f
1fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam/*
2fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam * Copyright (C) 2015 The Android Open Source Project
3fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam *
4fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam * Licensed under the Apache License, Version 2.0 (the "License");
5fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam * you may not use this file except in compliance with the License.
6fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam * You may obtain a copy of the License at
7fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam *
8fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam *      http://www.apache.org/licenses/LICENSE-2.0
9fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam *
10fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam * Unless required by applicable law or agreed to in writing, software
11fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam * distributed under the License is distributed on an "AS IS" BASIS,
12fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam * See the License for the specific language governing permissions and
14fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam * limitations under the License.
15fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam */
16fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam
17fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lampackage com.android.setupwizardlib;
18fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam
1963cdc5ccb7f1f61d0e752e38d7e57c690658a0acMaurice Lamimport android.annotation.SuppressLint;
20fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lamimport android.annotation.TargetApi;
21fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lamimport android.content.Context;
22fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lamimport android.content.res.ColorStateList;
23fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lamimport android.content.res.TypedArray;
24fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lamimport android.graphics.drawable.Drawable;
25c3eebe9f664af4b77e5948a14bf266b25dc25cc8Maurice Lamimport android.os.Build;
26fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lamimport android.os.Build.VERSION_CODES;
27fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lamimport android.util.AttributeSet;
2899586481628659cd2982a0248bc0d09a6ec4590eMaurice Lamimport android.view.InflateException;
29fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lamimport android.view.LayoutInflater;
30fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lamimport android.view.View;
31fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lamimport android.view.ViewGroup;
32ac40f3676511e1c7c09a948f5cb8481e5ea12d57Maurice Lamimport android.widget.ProgressBar;
33fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lamimport android.widget.ScrollView;
34fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lamimport android.widget.TextView;
35fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam
367514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lamimport com.android.setupwizardlib.template.ColoredHeaderMixin;
377514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lamimport com.android.setupwizardlib.template.HeaderMixin;
387514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lamimport com.android.setupwizardlib.template.IconMixin;
397514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lamimport com.android.setupwizardlib.template.ProgressBarMixin;
40c3eebe9f664af4b77e5948a14bf266b25dc25cc8Maurice Lamimport com.android.setupwizardlib.view.StatusBarBackgroundLayout;
41c3eebe9f664af4b77e5948a14bf266b25dc25cc8Maurice Lam
42fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam/**
43fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam * Layout for the GLIF theme used in Setup Wizard for N.
44fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam *
45fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam * <p>Example usage:
46fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam * <pre>{@code
47fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam * &lt;com.android.setupwizardlib.GlifLayout
48fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam *     xmlns:android="http://schemas.android.com/apk/res/android"
49fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam *     xmlns:app="http://schemas.android.com/apk/res-auto"
50fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam *     android:layout_width="match_parent"
51fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam *     android:layout_height="match_parent"
52fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam *     android:icon="@drawable/my_icon"
53fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam *     app:suwHeaderText="@string/my_title">
54fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam *
55fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam *     &lt;!-- Content here -->
56fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam *
57fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam * &lt;/com.android.setupwizardlib.GlifLayout>
58fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam * }</pre>
59fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam */
60fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lampublic class GlifLayout extends TemplateLayout {
61fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam
62fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam    private static final String TAG = "GlifLayout";
63fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam
64ac40f3676511e1c7c09a948f5cb8481e5ea12d57Maurice Lam    private ColorStateList mPrimaryColor;
65ac40f3676511e1c7c09a948f5cb8481e5ea12d57Maurice Lam
66fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam    public GlifLayout(Context context) {
67fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam        this(context, 0, 0);
68fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam    }
69fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam
70fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam    public GlifLayout(Context context, int template) {
71fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam        this(context, template, 0);
72fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam    }
73fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam
74fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam    public GlifLayout(Context context, int template, int containerId) {
75fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam        super(context, template, containerId);
76fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam        init(null, R.attr.suwLayoutTheme);
77fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam    }
78fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam
79fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam    public GlifLayout(Context context, AttributeSet attrs) {
80fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam        super(context, attrs);
81fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam        init(attrs, R.attr.suwLayoutTheme);
82fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam    }
83fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam
84fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam    @TargetApi(VERSION_CODES.HONEYCOMB)
85fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam    public GlifLayout(Context context, AttributeSet attrs, int defStyleAttr) {
86fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam        super(context, attrs, defStyleAttr);
87fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam        init(attrs, defStyleAttr);
88fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam    }
89fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam
90fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam    // All the constructors delegate to this init method. The 3-argument constructor is not
91fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam    // available in LinearLayout before v11, so call super with the exact same arguments.
92fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam    private void init(AttributeSet attrs, int defStyleAttr) {
937514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam        registerMixin(HeaderMixin.class, new ColoredHeaderMixin(this, attrs, defStyleAttr));
947514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam        registerMixin(IconMixin.class, new IconMixin(this, attrs, defStyleAttr));
957514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam        registerMixin(ProgressBarMixin.class, new ProgressBarMixin(this));
967514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam
97a6d30093e9308a88fc875b484cf16cda385c2f98Maurice Lam        TypedArray a = getContext().obtainStyledAttributes(attrs,
98fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam                R.styleable.SuwGlifLayout, defStyleAttr, 0);
99fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam
100a6d30093e9308a88fc875b484cf16cda385c2f98Maurice Lam        ColorStateList primaryColor =
101a6d30093e9308a88fc875b484cf16cda385c2f98Maurice Lam                a.getColorStateList(R.styleable.SuwGlifLayout_suwColorPrimary);
102c3eebe9f664af4b77e5948a14bf266b25dc25cc8Maurice Lam
103ac40f3676511e1c7c09a948f5cb8481e5ea12d57Maurice Lam        a.recycle();
104a6d30093e9308a88fc875b484cf16cda385c2f98Maurice Lam
105a6d30093e9308a88fc875b484cf16cda385c2f98Maurice Lam        if (primaryColor == null && Build.VERSION.SDK_INT >= VERSION_CODES.LOLLIPOP) {
106a6d30093e9308a88fc875b484cf16cda385c2f98Maurice Lam            a = getContext().obtainStyledAttributes(attrs,
107a6d30093e9308a88fc875b484cf16cda385c2f98Maurice Lam                    R.styleable.SuwGlifLayoutV21, defStyleAttr, 0);
108a6d30093e9308a88fc875b484cf16cda385c2f98Maurice Lam            primaryColor = a.getColorStateList(R.styleable.SuwGlifLayoutV21_android_colorPrimary);
109a6d30093e9308a88fc875b484cf16cda385c2f98Maurice Lam            a.recycle();
110a6d30093e9308a88fc875b484cf16cda385c2f98Maurice Lam        }
111a6d30093e9308a88fc875b484cf16cda385c2f98Maurice Lam
112a6d30093e9308a88fc875b484cf16cda385c2f98Maurice Lam        setPrimaryColor(primaryColor);
113fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam    }
114fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam
115fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam    @Override
116fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam    protected View onInflateTemplate(LayoutInflater inflater, int template) {
117fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam        if (template == 0) {
118fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam            template = R.layout.suw_glif_template;
119fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam        }
12099586481628659cd2982a0248bc0d09a6ec4590eMaurice Lam        try {
12199586481628659cd2982a0248bc0d09a6ec4590eMaurice Lam            return super.onInflateTemplate(inflater, template);
1223aee7b9de403e669e24ce68da1b390ab74288364Maurice Lam        } catch (RuntimeException e) {
1233aee7b9de403e669e24ce68da1b390ab74288364Maurice Lam            // Versions before M throws RuntimeException for unsuccessful attribute resolution
1243aee7b9de403e669e24ce68da1b390ab74288364Maurice Lam            // Versions M+ will throw an InflateException (which extends from RuntimeException)
12599586481628659cd2982a0248bc0d09a6ec4590eMaurice Lam            throw new InflateException("Unable to inflate layout. Are you using "
12699586481628659cd2982a0248bc0d09a6ec4590eMaurice Lam                    + "@style/SuwThemeGlif (or its descendant) as your theme?", e);
12799586481628659cd2982a0248bc0d09a6ec4590eMaurice Lam        }
128fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam    }
129fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam
130fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam    @Override
131fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam    protected ViewGroup findContainer(int containerId) {
132fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam        if (containerId == 0) {
133fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam            containerId = R.id.suw_layout_content;
134fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam        }
135fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam        return super.findContainer(containerId);
136fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam    }
137fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam
138fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam    public ScrollView getScrollView() {
13984979a6b2874d09762404c3c8a902f4aad016d01Maurice Lam        final View view = findManagedViewById(R.id.suw_scroll_view);
140fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam        return view instanceof ScrollView ? (ScrollView) view : null;
141fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam    }
142fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam
14384979a6b2874d09762404c3c8a902f4aad016d01Maurice Lam    public TextView getHeaderTextView() {
1447514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam        return getMixin(HeaderMixin.class).getTextView();
145b01f3ef075d501d1f61e6f61794a5cadd3ff2026Maurice Lam    }
146b01f3ef075d501d1f61e6f61794a5cadd3ff2026Maurice Lam
147fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam    public void setHeaderText(int title) {
1487514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam        getMixin(HeaderMixin.class).setText(title);
149fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam    }
150fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam
151fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam    public void setHeaderText(CharSequence title) {
1527514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam        getMixin(HeaderMixin.class).setText(title);
153fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam    }
154fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam
155fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam    public CharSequence getHeaderText() {
1567514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam        return getMixin(HeaderMixin.class).getText();
157fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam    }
158fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam
159fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam    public void setHeaderColor(ColorStateList color) {
1607514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam        final ColoredHeaderMixin mixin = (ColoredHeaderMixin) getMixin(HeaderMixin.class);
1617514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam        mixin.setColor(color);
162fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam    }
163fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam
164fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam    public ColorStateList getHeaderColor() {
1657514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam        final ColoredHeaderMixin mixin = (ColoredHeaderMixin) getMixin(HeaderMixin.class);
1667514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam        return mixin.getColor();
167fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam    }
168fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam
169fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam    public void setIcon(Drawable icon) {
1707514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam        getMixin(IconMixin.class).setIcon(icon);
171fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam    }
172fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam
173fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam    public Drawable getIcon() {
1747514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam        return getMixin(IconMixin.class).getIcon();
175fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam    }
1760a51b2852ce9940075774191dce7b81ce91eb4a1Maurice Lam
177ac40f3676511e1c7c09a948f5cb8481e5ea12d57Maurice Lam    public void setPrimaryColor(ColorStateList color) {
178ac40f3676511e1c7c09a948f5cb8481e5ea12d57Maurice Lam        mPrimaryColor = color;
179ac40f3676511e1c7c09a948f5cb8481e5ea12d57Maurice Lam        setGlifPatternColor(color);
1807514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam        getMixin(ProgressBarMixin.class).setColor(color);
181ac40f3676511e1c7c09a948f5cb8481e5ea12d57Maurice Lam    }
182ac40f3676511e1c7c09a948f5cb8481e5ea12d57Maurice Lam
183ac40f3676511e1c7c09a948f5cb8481e5ea12d57Maurice Lam    public ColorStateList getPrimaryColor() {
184ac40f3676511e1c7c09a948f5cb8481e5ea12d57Maurice Lam        return mPrimaryColor;
185ac40f3676511e1c7c09a948f5cb8481e5ea12d57Maurice Lam    }
186ac40f3676511e1c7c09a948f5cb8481e5ea12d57Maurice Lam
18763cdc5ccb7f1f61d0e752e38d7e57c690658a0acMaurice Lam    @SuppressLint("InlinedApi")  // View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN is guarded by SDK check
188ac40f3676511e1c7c09a948f5cb8481e5ea12d57Maurice Lam    private void setGlifPatternColor(ColorStateList color) {
189ac40f3676511e1c7c09a948f5cb8481e5ea12d57Maurice Lam        if (Build.VERSION.SDK_INT >= VERSION_CODES.LOLLIPOP) {
190ac40f3676511e1c7c09a948f5cb8481e5ea12d57Maurice Lam            setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
19184979a6b2874d09762404c3c8a902f4aad016d01Maurice Lam            final View patternBg = findManagedViewById(R.id.suw_pattern_bg);
192ac40f3676511e1c7c09a948f5cb8481e5ea12d57Maurice Lam            if (patternBg != null) {
193ac40f3676511e1c7c09a948f5cb8481e5ea12d57Maurice Lam                final GlifPatternDrawable background =
194ac40f3676511e1c7c09a948f5cb8481e5ea12d57Maurice Lam                        new GlifPatternDrawable(color.getDefaultColor());
195ac40f3676511e1c7c09a948f5cb8481e5ea12d57Maurice Lam                if (patternBg instanceof StatusBarBackgroundLayout) {
196ac40f3676511e1c7c09a948f5cb8481e5ea12d57Maurice Lam                    ((StatusBarBackgroundLayout) patternBg).setStatusBarBackground(background);
197ac40f3676511e1c7c09a948f5cb8481e5ea12d57Maurice Lam                } else {
198ac40f3676511e1c7c09a948f5cb8481e5ea12d57Maurice Lam                    patternBg.setBackground(background);
199ac40f3676511e1c7c09a948f5cb8481e5ea12d57Maurice Lam                }
200ac40f3676511e1c7c09a948f5cb8481e5ea12d57Maurice Lam            }
201ac40f3676511e1c7c09a948f5cb8481e5ea12d57Maurice Lam        }
202ac40f3676511e1c7c09a948f5cb8481e5ea12d57Maurice Lam    }
203ac40f3676511e1c7c09a948f5cb8481e5ea12d57Maurice Lam
2040a51b2852ce9940075774191dce7b81ce91eb4a1Maurice Lam    public boolean isProgressBarShown() {
2057514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam        return getMixin(ProgressBarMixin.class).isShown();
2060a51b2852ce9940075774191dce7b81ce91eb4a1Maurice Lam    }
2070a51b2852ce9940075774191dce7b81ce91eb4a1Maurice Lam
2080a51b2852ce9940075774191dce7b81ce91eb4a1Maurice Lam    public void setProgressBarShown(boolean shown) {
2097514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam        getMixin(ProgressBarMixin.class).setShown(shown);
2100a51b2852ce9940075774191dce7b81ce91eb4a1Maurice Lam    }
211ac40f3676511e1c7c09a948f5cb8481e5ea12d57Maurice Lam
212b6fb8bb15f4c6b08eb7f875c21df1005a8679594Maurice Lam    public ProgressBar peekProgressBar() {
2137514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam        return getMixin(ProgressBarMixin.class).peekProgressBar();
214ac40f3676511e1c7c09a948f5cb8481e5ea12d57Maurice Lam    }
215fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam}
216