1296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler/* 2296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler * Copyright (C) 2014 The Android Open Source Project 3296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler * 4296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler * Licensed under the Apache License, Version 2.0 (the "License"); 5296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler * you may not use this file except in compliance with the License. 6296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler * You may obtain a copy of the License at 7296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler * 8296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler * http://www.apache.org/licenses/LICENSE-2.0 9296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler * 10296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler * Unless required by applicable law or agreed to in writing, software 11296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler * distributed under the License is distributed on an "AS IS" BASIS, 12296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler * See the License for the specific language governing permissions and 14296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler * limitations under the License. 15296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler */ 16296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler 17296cde560348435ba2a64cc9ac308115721b88b3Tony Mantlerpackage com.android.email.activity.setup; 18296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler 19296cde560348435ba2a64cc9ac308115721b88b3Tony Mantlerimport android.content.Context; 20296cde560348435ba2a64cc9ac308115721b88b3Tony Mantlerimport android.os.Bundle; 21296cde560348435ba2a64cc9ac308115721b88b3Tony Mantlerimport android.view.LayoutInflater; 22296cde560348435ba2a64cc9ac308115721b88b3Tony Mantlerimport android.view.View; 23296cde560348435ba2a64cc9ac308115721b88b3Tony Mantlerimport android.view.ViewGroup; 24296cde560348435ba2a64cc9ac308115721b88b3Tony Mantlerimport android.widget.Button; 25296cde560348435ba2a64cc9ac308115721b88b3Tony Mantlerimport android.widget.TextView; 26296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler 27296cde560348435ba2a64cc9ac308115721b88b3Tony Mantlerimport com.android.email.R; 28296cde560348435ba2a64cc9ac308115721b88b3Tony Mantlerimport com.android.email.activity.UiUtilities; 29296cde560348435ba2a64cc9ac308115721b88b3Tony Mantlerimport com.android.email.service.EmailServiceUtils; 30296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler 31296cde560348435ba2a64cc9ac308115721b88b3Tony Mantlerpublic class AccountSetupABFragment extends AccountSetupFragment { 32296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler 33296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler private static final String ACCOUNT_EMAIL_ARG = "accountEmail"; 34296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler private static final String USER_PROTOCOL_ARG = "userProtocol"; 35296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler private static final String PROVIDER_PROTOCOL_ARG = "providerProtocol"; 36296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler 37296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler private String mAccountEmail; 38296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler private String mUserProtocol; 39296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler private String mProviderProtocol; 40296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler 41296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler public interface Callback extends AccountSetupFragment.Callback { 42296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler void onABProtocolDisambiguated(String chosenProtocol); 43296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler } 44296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler 45296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler public AccountSetupABFragment() {} 46296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler 47296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler /** 48296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler * Setup flow fragment for disambiguating the user's choice of protocol (when launched from the 49296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler * system account manager) and what is indicated in providers.xml 50296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler * 51296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler * @param accountEmail Email address of account being set up 52296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler * @param userProtocol Protocol that the user initiated account creation for 53296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler * @param providerProtocol Protocol indicated in providers.xml 54296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler * @return Fresh ready-to-use disambiguation fragment 55296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler */ 56296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler public static AccountSetupABFragment newInstance(final String accountEmail, 57296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler final String userProtocol, final String providerProtocol) { 58296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler final Bundle b = new Bundle(3); 59296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler b.putString(ACCOUNT_EMAIL_ARG, accountEmail); 60296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler b.putString(USER_PROTOCOL_ARG, userProtocol); 61296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler b.putString(PROVIDER_PROTOCOL_ARG, providerProtocol); 62296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler final AccountSetupABFragment f = new AccountSetupABFragment(); 63296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler f.setArguments(b); 64296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler return f; 65296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler } 66296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler 67296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler @Override 68296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler public void onCreate(Bundle savedInstanceState) { 69296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler super.onCreate(savedInstanceState); 70296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler 71296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler final Bundle b = getArguments(); 72296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler mAccountEmail = b.getString(ACCOUNT_EMAIL_ARG); 73296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler mUserProtocol = b.getString(USER_PROTOCOL_ARG); 74296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler mProviderProtocol = b.getString(PROVIDER_PROTOCOL_ARG); 75296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler } 76296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler 77296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler @Override 78296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler public View onCreateView(LayoutInflater inflater, ViewGroup container, 79296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler Bundle savedInstanceState) { 80296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler final Context context = inflater.getContext(); 81296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler 82296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler final String userProtocolName = 83296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler EmailServiceUtils.getServiceInfo(context, mUserProtocol).name; 84296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler final String providerProtocolName = 85296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler EmailServiceUtils.getServiceInfo(context, mProviderProtocol).name; 86296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler 87296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler final View view = inflateTemplatedView(inflater, container, 88296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler R.layout.account_setup_ab_fragment, R.string.account_setup_ab_headline); 89296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler 90296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler final TextView abInstructions = UiUtilities.getView(view, R.id.ab_instructions); 91296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler abInstructions.setText(context.getString(R.string.account_setup_ab_instructions_format, 92296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler mAccountEmail, userProtocolName, providerProtocolName)); 93296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler 94296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler final View nextButton = UiUtilities.getView(view, R.id.next); 95296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler nextButton.setVisibility(View.INVISIBLE); 96296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler 97296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler final Button abButtonA = UiUtilities.getView(view, R.id.ab_button_a); 98296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler abButtonA.setOnClickListener(this); 99296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler abButtonA.setText(userProtocolName); 100296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler 101296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler final Button abButtonB = UiUtilities.getView(view, R.id.ab_button_b); 102296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler abButtonB.setOnClickListener(this); 103296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler abButtonB.setText(providerProtocolName); 104296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler 105296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler return view; 106296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler } 107296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler 108296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler @Override 109296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler public void onClick(View v) { 110296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler final int viewId = v.getId(); 111296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler final Callback callback = (Callback) getActivity(); 112296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler if (viewId == R.id.ab_button_a) { 113296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler callback.onABProtocolDisambiguated(mUserProtocol); 114296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler } else if (viewId == R.id.ab_button_b) { 115296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler callback.onABProtocolDisambiguated(mProviderProtocol); 116296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler } else { 117296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler super.onClick(v); 118296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler } 119296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler } 120296cde560348435ba2a64cc9ac308115721b88b3Tony Mantler} 121