Home | History | Annotate | Download | only in settings
      1 /*
      2  * Copyright (C) 2014 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 package com.android.settings;
     18 
     19 import com.android.setupwizard.navigationbar.SetupWizardNavBar;
     20 
     21 import android.app.Fragment;
     22 import android.content.Context;
     23 import android.content.Intent;
     24 import android.content.res.Resources;
     25 import android.os.Bundle;
     26 import android.view.LayoutInflater;
     27 import android.view.View;
     28 import android.view.ViewGroup;
     29 import android.widget.Button;
     30 
     31 /**
     32  * Setup Wizard's version of ChooseLockPattern screen. It inherits the logic and basic structure
     33  * from ChooseLockPattern class, and should remain similar to that behaviorally. This class should
     34  * only overload base methods for minor theme and behavior differences specific to Setup Wizard.
     35  * Other changes should be done to ChooseLockPattern class instead and let this class inherit
     36  * those changes.
     37  */
     38 public class SetupChooseLockPattern extends ChooseLockPattern
     39         implements SetupWizardNavBar.NavigationBarListener {
     40 
     41     public static Intent createIntent(Context context, final boolean isFallback,
     42             boolean requirePassword, boolean confirmCredentials) {
     43         Intent intent = ChooseLockPattern.createIntent(context, isFallback, requirePassword,
     44                 confirmCredentials);
     45         intent.setClass(context, SetupChooseLockPattern.class);
     46         return intent;
     47     }
     48 
     49     private SetupWizardNavBar mNavigationBar;
     50     private SetupChooseLockPatternFragment mFragment;
     51 
     52     @Override
     53     protected boolean isValidFragment(String fragmentName) {
     54         return SetupChooseLockPatternFragment.class.getName().equals(fragmentName);
     55     }
     56 
     57     @Override
     58     /* package */ Class<? extends Fragment> getFragmentClass() {
     59         return SetupChooseLockPatternFragment.class;
     60     }
     61 
     62     @Override
     63     protected void onApplyThemeResource(Resources.Theme theme, int resid, boolean first) {
     64         resid = SetupWizardUtils.getTheme(getIntent(), resid);
     65         super.onApplyThemeResource(theme, resid, first);
     66     }
     67 
     68     @Override
     69     public void onNavigationBarCreated(SetupWizardNavBar bar) {
     70         mNavigationBar = bar;
     71         SetupWizardUtils.setImmersiveMode(this, bar);
     72     }
     73 
     74     @Override
     75     public void onNavigateBack() {
     76         onBackPressed();
     77     }
     78 
     79     @Override
     80     public void onNavigateNext() {
     81         if (mFragment != null) {
     82             mFragment.handleRightButton();
     83         }
     84     }
     85 
     86     @Override
     87     public void onAttachFragment(Fragment fragment) {
     88         super.onAttachFragment(fragment);
     89         if (fragment instanceof ChooseLockPatternFragment) {
     90             mFragment = (SetupChooseLockPatternFragment) fragment;
     91         }
     92     }
     93 
     94     public static class SetupChooseLockPatternFragment extends ChooseLockPatternFragment {
     95 
     96         private Button mRetryButton;
     97 
     98         @Override
     99         public View onCreateView(LayoutInflater inflater, ViewGroup container,
    100                 Bundle savedInstanceState) {
    101             final View view = inflater.inflate(R.layout.setup_template, container, false);
    102             ViewGroup setupContent = (ViewGroup) view.findViewById(R.id.setup_content);
    103             inflater.inflate(R.layout.setup_choose_lock_pattern, setupContent, true);
    104             return view;
    105         }
    106 
    107         @Override
    108         public void onViewCreated(View view, Bundle savedInstanceState) {
    109             mRetryButton = (Button) view.findViewById(R.id.retryButton);
    110             mRetryButton.setOnClickListener(this);
    111             super.onViewCreated(view, savedInstanceState);
    112             SetupWizardUtils.setIllustration(getActivity(),
    113                     R.drawable.setup_illustration_lock_screen);
    114             SetupWizardUtils.setHeaderText(getActivity(), getActivity().getTitle());
    115         }
    116 
    117         @Override
    118         protected Intent getRedactionInterstitialIntent(Context context) {
    119             Intent intent = SetupRedactionInterstitial.createStartIntent(context);
    120             SetupWizardUtils.copySetupExtras(getActivity().getIntent(), intent);
    121             return intent;
    122         }
    123 
    124         @Override
    125         public void onClick(View v) {
    126             if (v == mRetryButton) {
    127                 handleLeftButton();
    128             } else {
    129                 super.onClick(v);
    130             }
    131         }
    132 
    133         @Override
    134         protected void setRightButtonEnabled(boolean enabled) {
    135             SetupChooseLockPattern activity = (SetupChooseLockPattern) getActivity();
    136             activity.mNavigationBar.getNextButton().setEnabled(enabled);
    137         }
    138 
    139         @Override
    140         protected void setRightButtonText(int text) {
    141             SetupChooseLockPattern activity = (SetupChooseLockPattern) getActivity();
    142             activity.mNavigationBar.getNextButton().setText(text);
    143         }
    144 
    145         @Override
    146         protected void updateStage(Stage stage) {
    147             super.updateStage(stage);
    148             // Only enable the button for retry
    149             mRetryButton.setEnabled(stage == Stage.FirstChoiceValid);
    150         }
    151     }
    152 }
    153