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