Home | History | Annotate | Download | only in setup
      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.email.activity.setup;
     18 
     19 import android.content.Context;
     20 import android.os.Bundle;
     21 import android.view.LayoutInflater;
     22 import android.view.View;
     23 import android.view.ViewGroup;
     24 import android.widget.Button;
     25 import android.widget.TextView;
     26 
     27 import com.android.email.R;
     28 import com.android.email.activity.UiUtilities;
     29 import com.android.email.service.EmailServiceUtils;
     30 
     31 public class AccountSetupABFragment extends AccountSetupFragment {
     32 
     33     private static final String ACCOUNT_EMAIL_ARG = "accountEmail";
     34     private static final String USER_PROTOCOL_ARG = "userProtocol";
     35     private static final String PROVIDER_PROTOCOL_ARG = "providerProtocol";
     36 
     37     private String mAccountEmail;
     38     private String mUserProtocol;
     39     private String mProviderProtocol;
     40 
     41     public interface Callback extends AccountSetupFragment.Callback {
     42         void onABProtocolDisambiguated(String chosenProtocol);
     43     }
     44 
     45     public AccountSetupABFragment() {}
     46 
     47     /**
     48      * Setup flow fragment for disambiguating the user's choice of protocol (when launched from the
     49      * system account manager) and what is indicated in providers.xml
     50      *
     51      * @param accountEmail Email address of account being set up
     52      * @param userProtocol Protocol that the user initiated account creation for
     53      * @param providerProtocol Protocol indicated in providers.xml
     54      * @return Fresh ready-to-use disambiguation fragment
     55      */
     56     public static AccountSetupABFragment newInstance(final String accountEmail,
     57             final String userProtocol, final String providerProtocol) {
     58         final Bundle b = new Bundle(3);
     59         b.putString(ACCOUNT_EMAIL_ARG, accountEmail);
     60         b.putString(USER_PROTOCOL_ARG, userProtocol);
     61         b.putString(PROVIDER_PROTOCOL_ARG, providerProtocol);
     62         final AccountSetupABFragment f = new AccountSetupABFragment();
     63         f.setArguments(b);
     64         return f;
     65     }
     66 
     67     @Override
     68     public void onCreate(Bundle savedInstanceState) {
     69         super.onCreate(savedInstanceState);
     70 
     71         final Bundle b = getArguments();
     72         mAccountEmail = b.getString(ACCOUNT_EMAIL_ARG);
     73         mUserProtocol = b.getString(USER_PROTOCOL_ARG);
     74         mProviderProtocol = b.getString(PROVIDER_PROTOCOL_ARG);
     75     }
     76 
     77     @Override
     78     public View onCreateView(LayoutInflater inflater, ViewGroup container,
     79             Bundle savedInstanceState) {
     80         final Context context = inflater.getContext();
     81 
     82         final String userProtocolName =
     83                 EmailServiceUtils.getServiceInfo(context, mUserProtocol).name;
     84         final String providerProtocolName =
     85                 EmailServiceUtils.getServiceInfo(context, mProviderProtocol).name;
     86 
     87         final View view = inflateTemplatedView(inflater, container,
     88                 R.layout.account_setup_ab_fragment, R.string.account_setup_ab_headline);
     89 
     90         final TextView abInstructions = UiUtilities.getView(view, R.id.ab_instructions);
     91         abInstructions.setText(context.getString(R.string.account_setup_ab_instructions_format,
     92                 mAccountEmail, userProtocolName, providerProtocolName));
     93 
     94         final View nextButton = UiUtilities.getView(view, R.id.next);
     95         nextButton.setVisibility(View.INVISIBLE);
     96 
     97         final Button abButtonA = UiUtilities.getView(view, R.id.ab_button_a);
     98         abButtonA.setOnClickListener(this);
     99         abButtonA.setText(userProtocolName);
    100 
    101         final Button abButtonB = UiUtilities.getView(view, R.id.ab_button_b);
    102         abButtonB.setOnClickListener(this);
    103         abButtonB.setText(providerProtocolName);
    104 
    105         return view;
    106     }
    107 
    108     @Override
    109     public void onClick(View v) {
    110         final int viewId = v.getId();
    111         final Callback callback = (Callback) getActivity();
    112         if (viewId == R.id.ab_button_a) {
    113             callback.onABProtocolDisambiguated(mUserProtocol);
    114         } else if (viewId == R.id.ab_button_b) {
    115             callback.onABProtocolDisambiguated(mProviderProtocol);
    116         } else {
    117             super.onClick(v);
    118         }
    119     }
    120 }
    121