176472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler/*
276472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler * Copyright (C) 2014 The Android Open Source Project
376472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler *
476472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler * Licensed under the Apache License, Version 2.0 (the "License");
576472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler * you may not use this file except in compliance with the License.
676472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler * You may obtain a copy of the License at
776472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler *
876472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler *      http://www.apache.org/licenses/LICENSE-2.0
976472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler *
1076472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler * Unless required by applicable law or agreed to in writing, software
1176472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler * distributed under the License is distributed on an "AS IS" BASIS,
1276472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1376472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler * See the License for the specific language governing permissions and
1476472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler * limitations under the License.
1576472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler */
1676472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler
1776472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantlerpackage com.android.email.activity.setup;
1876472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler
1976472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantlerimport android.content.Context;
2076472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantlerimport android.os.Bundle;
2176472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantlerimport android.view.LayoutInflater;
2276472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantlerimport android.view.View;
2376472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantlerimport android.view.ViewGroup;
2476472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantlerimport android.widget.Button;
2576472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantlerimport android.widget.RelativeLayout;
2676472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler
2776472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantlerimport com.android.email.R;
2876472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantlerimport com.android.email.activity.UiUtilities;
2976472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantlerimport com.android.email.service.EmailServiceUtils;
3076472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler
3176472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantlerpublic class AccountSetupTypeFragment extends AccountSetupFragment
3276472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler        implements View.OnClickListener {
33b5a44337983546877df9a0ecff019cc58e45b9d0Tony Mantler    private int mLastId;
3476472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler
3576472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler    public interface Callback extends AccountSetupFragment.Callback {
3676472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler        /**
3776472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler         * called when the user has selected a protocol type for the account
3876472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler         * @param protocol {@link EmailServiceUtils.EmailServiceInfo#protocol}
3976472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler         */
4076472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler        void onChooseProtocol(String protocol);
4176472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler    }
4276472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler
4376472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler    public static AccountSetupTypeFragment newInstance() {
4476472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler        return new AccountSetupTypeFragment();
4576472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler    }
4676472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler
4776472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler    @Override
4876472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler    public View onCreateView(LayoutInflater inflater, ViewGroup container,
4976472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler            Bundle savedInstanceState) {
50ae980cd685a867b3fecfd38c876fd18d98b7c86bTony Mantler        final View view = inflateTemplatedView(inflater, container,
51ae980cd685a867b3fecfd38c876fd18d98b7c86bTony Mantler                R.layout.account_setup_type_fragment, R.string.account_setup_account_type_headline);
5276472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler
5376472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler        final Context appContext = inflater.getContext().getApplicationContext();
5476472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler
5576472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler        final ViewGroup parent = UiUtilities.getView(view, R.id.accountTypes);
5676472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler        View lastView = parent.getChildAt(0);
5776472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler        int i = 1;
5876472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler        for (final EmailServiceUtils.EmailServiceInfo info
5976472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler                : EmailServiceUtils.getServiceInfoList(appContext)) {
6076472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler            if (EmailServiceUtils.isServiceAvailable(appContext, info.protocol)) {
6176472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler                // Don't show types with "hide" set
6276472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler                if (info.hide) {
6376472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler                    continue;
6476472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler                }
6576472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler                inflater.inflate(R.layout.account_type, parent);
6676472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler                final Button button = (Button)parent.getChildAt(i);
6776472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler                if (parent instanceof RelativeLayout) {
6876472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler                    final RelativeLayout.LayoutParams params =
6976472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler                            (RelativeLayout.LayoutParams)button.getLayoutParams();
7076472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler                    params.addRule(RelativeLayout.BELOW, lastView.getId());
7176472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler                }
7276472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler                button.setId(i);
7376472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler                button.setTag(info.protocol);
7476472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler                button.setText(info.name);
7576472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler                button.setOnClickListener(this);
7676472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler                lastView = button;
7776472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler                i++;
7876472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler            }
7976472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler        }
80b5a44337983546877df9a0ecff019cc58e45b9d0Tony Mantler        mLastId = i - 1;
8176472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler
82ae980cd685a867b3fecfd38c876fd18d98b7c86bTony Mantler        setNextButtonVisibility(View.INVISIBLE);
83ae980cd685a867b3fecfd38c876fd18d98b7c86bTony Mantler
8476472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler        return view;
8576472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler    }
8676472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler
8776472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler    @Override
8876472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler    public void onClick(View v) {
89b5a44337983546877df9a0ecff019cc58e45b9d0Tony Mantler        final int viewId = v.getId();
90b5a44337983546877df9a0ecff019cc58e45b9d0Tony Mantler        if (viewId <= mLastId) {
91b5a44337983546877df9a0ecff019cc58e45b9d0Tony Mantler            final String protocol = (String) v.getTag();
92b5a44337983546877df9a0ecff019cc58e45b9d0Tony Mantler            final Callback callback = (Callback) getActivity();
93b5a44337983546877df9a0ecff019cc58e45b9d0Tony Mantler            callback.onChooseProtocol(protocol);
94b5a44337983546877df9a0ecff019cc58e45b9d0Tony Mantler        } else {
95b5a44337983546877df9a0ecff019cc58e45b9d0Tony Mantler            super.onClick(v);
96b5a44337983546877df9a0ecff019cc58e45b9d0Tony Mantler        }
9776472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler    }
9876472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler}
99