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 {
onABProtocolDisambiguated(String chosenProtocol)42         void onABProtocolDisambiguated(String chosenProtocol);
43     }
44 
AccountSetupABFragment()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      */
newInstance(final String accountEmail, final String userProtocol, final String providerProtocol)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
onCreate(Bundle savedInstanceState)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
onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)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
onClick(View v)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