196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project/*
296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * Copyright (C) 2008 The Android Open Source Project
396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project *
496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License");
596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * you may not use this file except in compliance with the License.
696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * You may obtain a copy of the License at
796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project *
896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0
996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project *
1096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * Unless required by applicable law or agreed to in writing, software
1196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
1296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * See the License for the specific language governing permissions and
1496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * limitations under the License.
1596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project */
1696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
1796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Projectpackage com.android.email.activity.setup;
1896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
19d5059731780b81c91eff85be8830cafad41f3ed1Andy Stadlerimport com.android.email.R;
20cd09545b87979fa6b4337f17b5a001f0ef7b5269Andrew Stadlerimport com.android.email.activity.ActivityHelper;
212fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onukiimport com.android.email.activity.UiUtilities;
22f5418f1f93b02e7fab9f15eb201800b65510998eMarc Blankimport com.android.emailcommon.provider.Account;
2396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
2496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Projectimport android.app.Activity;
25fd14496c494a0d38c35c3788c9cc55f1984592e4Andrew Stadlerimport android.app.FragmentTransaction;
2696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Projectimport android.content.Intent;
2796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Projectimport android.os.Bundle;
28e6c6587b04a589eeb04006f75759c09ea10811e0Andy Stadlerimport android.view.View;
29e6c6587b04a589eeb04006f75759c09ea10811e0Andy Stadlerimport android.view.View.OnClickListener;
30e6c6587b04a589eeb04006f75759c09ea10811e0Andy Stadlerimport android.widget.Button;
3196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
32fd14496c494a0d38c35c3788c9cc55f1984592e4Andrew Stadler/**
33fd14496c494a0d38c35c3788c9cc55f1984592e4Andrew Stadler * Provides setup flow for IMAP/POP accounts.
34fd14496c494a0d38c35c3788c9cc55f1984592e4Andrew Stadler *
35fd14496c494a0d38c35c3788c9cc55f1984592e4Andrew Stadler * Uses AccountSetupIncomingFragment for primary UI.  Uses AccountCheckSettingsFragment to validate
36fd14496c494a0d38c35c3788c9cc55f1984592e4Andrew Stadler * the settings as entered.  If the account is OK, proceeds to AccountSetupOutgoing.
37fd14496c494a0d38c35c3788c9cc55f1984592e4Andrew Stadler */
381b156352f3fc160da5ba050c2437bcd1c995b326Andrew Stadlerpublic class AccountSetupIncoming extends AccountSetupActivity
39e6c6587b04a589eeb04006f75759c09ea10811e0Andy Stadler        implements AccountSetupIncomingFragment.Callback, OnClickListener {
4096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
41fb4333b3a5051b08d3a255000bb1b8331e2a1d43Andrew Stadler    /* package */ AccountSetupIncomingFragment mFragment;
42e6c6587b04a589eeb04006f75759c09ea10811e0Andy Stadler    private Button mNextButton;
434c3a8ede019f8683a7d15defd995790c4b5ebdacAndrew Stadler    /* package */ boolean mNextButtonEnabled;
4496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
455b2424bf6f32fdfd65b02a9a311e7226dc48f1c1Andrew Stadler    public static void actionIncomingSettings(Activity fromActivity, int mode, Account account) {
465b2424bf6f32fdfd65b02a9a311e7226dc48f1c1Andrew Stadler        SetupData.setFlowMode(mode);
475b2424bf6f32fdfd65b02a9a311e7226dc48f1c1Andrew Stadler        SetupData.setAccount(account);
48e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank        fromActivity.startActivity(new Intent(fromActivity, AccountSetupIncoming.class));
4996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    }
5096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
5196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    @Override
5296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    public void onCreate(Bundle savedInstanceState) {
5396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        super.onCreate(savedInstanceState);
54cd09545b87979fa6b4337f17b5a001f0ef7b5269Andrew Stadler        ActivityHelper.debugSetWindowFlags(this);
5596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        setContentView(R.layout.account_setup_incoming);
5696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
578bcb572ccfdac6974c111fe6dfc753a5e0d4e7caAndrew Stadler        mFragment = (AccountSetupIncomingFragment)
588bcb572ccfdac6974c111fe6dfc753a5e0d4e7caAndrew Stadler                getFragmentManager().findFragmentById(R.id.setup_fragment);
5996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
601b156352f3fc160da5ba050c2437bcd1c995b326Andrew Stadler        // Configure fragment
611b156352f3fc160da5ba050c2437bcd1c995b326Andrew Stadler        mFragment.setCallback(this);
62e6c6587b04a589eeb04006f75759c09ea10811e0Andy Stadler
632fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki        mNextButton = (Button) UiUtilities.getView(this, R.id.next);
64e6c6587b04a589eeb04006f75759c09ea10811e0Andy Stadler        mNextButton.setOnClickListener(this);
652fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki        UiUtilities.getView(this, R.id.previous).setOnClickListener(this);
661b156352f3fc160da5ba050c2437bcd1c995b326Andrew Stadler   }
6796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
6896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    /**
69e6c6587b04a589eeb04006f75759c09ea10811e0Andy Stadler     * Implements View.OnClickListener
70e6c6587b04a589eeb04006f75759c09ea10811e0Andy Stadler     */
71e6c6587b04a589eeb04006f75759c09ea10811e0Andy Stadler    @Override
72e6c6587b04a589eeb04006f75759c09ea10811e0Andy Stadler    public void onClick(View view) {
73e6c6587b04a589eeb04006f75759c09ea10811e0Andy Stadler        switch (view.getId()) {
74e6c6587b04a589eeb04006f75759c09ea10811e0Andy Stadler            case R.id.next:
75e6c6587b04a589eeb04006f75759c09ea10811e0Andy Stadler                mFragment.onNext();
76e6c6587b04a589eeb04006f75759c09ea10811e0Andy Stadler                break;
77e6c6587b04a589eeb04006f75759c09ea10811e0Andy Stadler            case R.id.previous:
78e6c6587b04a589eeb04006f75759c09ea10811e0Andy Stadler                onBackPressed();
79e6c6587b04a589eeb04006f75759c09ea10811e0Andy Stadler                break;
80e6c6587b04a589eeb04006f75759c09ea10811e0Andy Stadler        }
81e6c6587b04a589eeb04006f75759c09ea10811e0Andy Stadler    }
82e6c6587b04a589eeb04006f75759c09ea10811e0Andy Stadler
83e6c6587b04a589eeb04006f75759c09ea10811e0Andy Stadler    /**
84fd14496c494a0d38c35c3788c9cc55f1984592e4Andrew Stadler     * Implements AccountServerBaseFragment.Callback
85fd14496c494a0d38c35c3788c9cc55f1984592e4Andrew Stadler     *
86fd14496c494a0d38c35c3788c9cc55f1984592e4Andrew Stadler     * Launches the account checker.  Positive results are reported to onCheckSettingsOk().
87da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler     */
88fd14496c494a0d38c35c3788c9cc55f1984592e4Andrew Stadler    public void onProceedNext(int checkMode, AccountServerBaseFragment target) {
89fd14496c494a0d38c35c3788c9cc55f1984592e4Andrew Stadler        AccountCheckSettingsFragment checkerFragment =
90fd14496c494a0d38c35c3788c9cc55f1984592e4Andrew Stadler            AccountCheckSettingsFragment.newInstance(checkMode, target);
9131e25767918193217c884db72aaa98e50a4957d3Dianne Hackborn        FragmentTransaction transaction = getFragmentManager().beginTransaction();
92f946ff001914abce9ea06b1ceecd29cdb7e10ef3Andy Stadler        transaction.add(checkerFragment, AccountCheckSettingsFragment.TAG);
93fd14496c494a0d38c35c3788c9cc55f1984592e4Andrew Stadler        transaction.addToBackStack("back");
94fd14496c494a0d38c35c3788c9cc55f1984592e4Andrew Stadler        transaction.commit();
9596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    }
961b156352f3fc160da5ba050c2437bcd1c995b326Andrew Stadler
9796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    /**
988bcb572ccfdac6974c111fe6dfc753a5e0d4e7caAndrew Stadler     * Implements AccountServerBaseFragment.Callback
9996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project     */
100fd14496c494a0d38c35c3788c9cc55f1984592e4Andrew Stadler    public void onEnableProceedButtons(boolean enable) {
101fd14496c494a0d38c35c3788c9cc55f1984592e4Andrew Stadler        mNextButtonEnabled = enable;
102e6c6587b04a589eeb04006f75759c09ea10811e0Andy Stadler        mNextButton.setEnabled(enable);
10396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    }
10496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
1051b156352f3fc160da5ba050c2437bcd1c995b326Andrew Stadler    /**
1061a5e1e159352f6e21bde878eebca3e3a1896045cAndrew Stadler     * Implements AccountServerBaseFragment.Callback
107fd14496c494a0d38c35c3788c9cc55f1984592e4Andrew Stadler     *
108fd14496c494a0d38c35c3788c9cc55f1984592e4Andrew Stadler     * If the checked settings are OK, proceed to outgoing settings screen
1091b156352f3fc160da5ba050c2437bcd1c995b326Andrew Stadler     */
1102731aef45c6f2f9792ae698ebf7d65ca6338a02cAndrew Stadler    public void onCheckSettingsComplete(int result, int setupMode) {
1112731aef45c6f2f9792ae698ebf7d65ca6338a02cAndrew Stadler        if (result == AccountCheckSettingsFragment.CHECK_SETTINGS_OK) {
1125b2424bf6f32fdfd65b02a9a311e7226dc48f1c1Andrew Stadler            AccountSetupOutgoing.actionOutgoingSettings(this, SetupData.getFlowMode(),
1135b2424bf6f32fdfd65b02a9a311e7226dc48f1c1Andrew Stadler                    SetupData.getAccount());
1145b2424bf6f32fdfd65b02a9a311e7226dc48f1c1Andrew Stadler            finish();
115fd14496c494a0d38c35c3788c9cc55f1984592e4Andrew Stadler        }
11696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    }
11796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project}
118