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