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 * <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 * <!-- Content here --> 56fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam * 57fce4cf6161b2a1644ad21034f0afe4087d659ab4Maurice Lam * </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