diff options
Diffstat (limited to 'library/main/src/com/android/setupwizardlib/SetupWizardLayout.java')
-rw-r--r-- | library/main/src/com/android/setupwizardlib/SetupWizardLayout.java | 75 |
1 files changed, 16 insertions, 59 deletions
diff --git a/library/main/src/com/android/setupwizardlib/SetupWizardLayout.java b/library/main/src/com/android/setupwizardlib/SetupWizardLayout.java index 79d9222..c30a12d 100644 --- a/library/main/src/com/android/setupwizardlib/SetupWizardLayout.java +++ b/library/main/src/com/android/setupwizardlib/SetupWizardLayout.java @@ -37,11 +37,12 @@ import android.view.InflateException; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import android.view.ViewStub; -import android.widget.ProgressBar; import android.widget.ScrollView; import android.widget.TextView; +import com.android.setupwizardlib.template.HeaderMixin; +import com.android.setupwizardlib.template.NavigationBarMixin; +import com.android.setupwizardlib.template.ProgressBarMixin; import com.android.setupwizardlib.util.RequireScrollHelper; import com.android.setupwizardlib.view.BottomScrollView; import com.android.setupwizardlib.view.Illustration; @@ -51,8 +52,6 @@ public class SetupWizardLayout extends TemplateLayout { private static final String TAG = "SetupWizardLayout"; - private ColorStateList mProgressBarColor; - public SetupWizardLayout(Context context) { super(context, 0, 0); init(null, R.attr.suwLayoutTheme); @@ -81,6 +80,10 @@ public class SetupWizardLayout extends TemplateLayout { // All the constructors delegate to this init method. The 3-argument constructor is not // available in LinearLayout before v11, so call super with the exact same arguments. private void init(AttributeSet attrs, int defStyleAttr) { + registerMixin(HeaderMixin.class, new HeaderMixin(this, attrs, defStyleAttr)); + registerMixin(ProgressBarMixin.class, new ProgressBarMixin(this)); + registerMixin(NavigationBarMixin.class, new NavigationBarMixin(this)); + final TypedArray a = getContext().obtainStyledAttributes(attrs, R.styleable.SuwSetupWizardLayout, defStyleAttr, 0); @@ -132,13 +135,6 @@ public class SetupWizardLayout extends TemplateLayout { } setIllustrationAspectRatio(illustrationAspectRatio); - // Set the header text - final CharSequence headerText = - a.getText(R.styleable.SuwSetupWizardLayout_suwHeaderText); - if (headerText != null) { - setHeaderText(headerText); - } - a.recycle(); } @@ -192,8 +188,7 @@ public class SetupWizardLayout extends TemplateLayout { } public NavigationBar getNavigationBar() { - final View view = findManagedViewById(R.id.suw_layout_navigation_bar); - return view instanceof NavigationBar ? (NavigationBar) view : null; + return getMixin(NavigationBarMixin.class).getNavigationBar(); } public ScrollView getScrollView() { @@ -213,26 +208,19 @@ public class SetupWizardLayout extends TemplateLayout { } public void setHeaderText(int title) { - final TextView titleView = getHeaderTextView(); - if (titleView != null) { - titleView.setText(title); - } + getMixin(HeaderMixin.class).setText(title); } public void setHeaderText(CharSequence title) { - final TextView titleView = getHeaderTextView(); - if (titleView != null) { - titleView.setText(title); - } + getMixin(HeaderMixin.class).setText(title); } public CharSequence getHeaderText() { - final TextView titleView = getHeaderTextView(); - return titleView != null ? titleView.getText() : null; + return getMixin(HeaderMixin.class).getText(); } public TextView getHeaderTextView() { - return (TextView) findManagedViewById(R.id.suw_layout_title); + return getMixin(HeaderMixin.class).getTextView(); } /** @@ -375,18 +363,8 @@ public class SetupWizardLayout extends TemplateLayout { } } - /** - * Same as {@link android.view.View#findViewById(int)}, but may include views that are managed - * by this view but not currently added to the view hierarchy. e.g. recycler view or list view - * headers that are not currently shown. - */ - protected View findManagedViewById(int id) { - return findViewById(id); - } - public boolean isProgressBarShown() { - final View progressBar = findManagedViewById(R.id.suw_layout_progress); - return progressBar != null && progressBar.getVisibility() == View.VISIBLE; + return getMixin(ProgressBarMixin.class).isShown(); } /** @@ -395,19 +373,7 @@ public class SetupWizardLayout extends TemplateLayout { * view hierarchy until the first time this is set to {@code true}. */ public void setProgressBarShown(boolean shown) { - final View progressBar = findManagedViewById(R.id.suw_layout_progress); - if (progressBar != null) { - progressBar.setVisibility(shown ? View.VISIBLE : View.GONE); - } else if (shown) { - final ViewStub progressBarStub = - (ViewStub) findManagedViewById(R.id.suw_layout_progress_stub); - if (progressBarStub != null) { - progressBarStub.inflate(); - } - if (mProgressBarColor != null) { - setProgressBarColor(mProgressBarColor); - } - } + getMixin(ProgressBarMixin.class).setShown(shown); } /** @@ -427,20 +393,11 @@ public class SetupWizardLayout extends TemplateLayout { } public void setProgressBarColor(ColorStateList color) { - mProgressBarColor = color; - if (VERSION.SDK_INT >= VERSION_CODES.LOLLIPOP) { - // Suppress lint error caused by - // https://code.google.com/p/android/issues/detail?id=183136 - // noinspection AndroidLintWrongViewCast - final ProgressBar bar = (ProgressBar) findViewById(R.id.suw_layout_progress); - if (bar != null) { - bar.setIndeterminateTintList(color); - } - } + getMixin(ProgressBarMixin.class).setColor(color); } public ColorStateList getProgressBarColor() { - return mProgressBarColor; + return getMixin(ProgressBarMixin.class).getColor(); } /* Misc */ |