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.app.Fragment; 2076472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantlerimport android.app.LoaderManager; 2176472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantlerimport android.content.ContentValues; 2276472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantlerimport android.content.Context; 2376472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantlerimport android.content.Loader; 2476472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantlerimport android.os.Bundle; 2576472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantlerimport android.os.Handler; 2676472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler 2776472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantlerimport com.android.email.provider.AccountBackupRestore; 2876472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantlerimport com.android.emailcommon.provider.Account; 2976472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantlerimport com.android.emailcommon.provider.EmailContent; 3076472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantlerimport com.android.mail.ui.MailAsyncTaskLoader; 3176472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler 3276472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantlerpublic class AccountFinalizeFragment extends Fragment { 3376472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler public static final String TAG = "AccountFinalizeFragment"; 3476472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler 3576472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler private static final String ACCOUNT_TAG = "account"; 3676472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler 3776472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler private static final int FINAL_ACCOUNT_TASK_LOADER_ID = 0; 3876472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler 3976472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler private Context mAppContext; 4076472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler private final Handler mHandler = new Handler(); 4176472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler 4276472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler public interface Callback { 4376472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler void onAccountFinalizeFragmentComplete(); 4476472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler } 4576472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler 4676472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler public AccountFinalizeFragment() {} 4776472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler 4876472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler public static AccountFinalizeFragment newInstance(Account account) { 4976472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler final AccountFinalizeFragment f = new AccountFinalizeFragment(); 5076472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler final Bundle args = new Bundle(1); 5176472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler args.putParcelable(ACCOUNT_TAG, account); 5276472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler f.setArguments(args); 5376472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler return f; 5476472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler } 5576472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler 5676472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler @Override 5776472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler public void onCreate(Bundle savedInstanceState) { 5876472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler super.onCreate(savedInstanceState); 5976472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler 6076472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler mAppContext = getActivity().getApplicationContext(); 6176472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler 6276472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler setRetainInstance(true); 6376472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler } 6476472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler 6576472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler @Override 6676472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler public void onResume() { 6776472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler super.onResume(); 6876472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler 6976472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler getLoaderManager().initLoader(FINAL_ACCOUNT_TASK_LOADER_ID, getArguments(), 7076472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler new LoaderManager.LoaderCallbacks<Boolean>() { 7176472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler @Override 7276472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler public Loader<Boolean> onCreateLoader(int id, Bundle args) { 7376472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler final Account accountArg = args.getParcelable(ACCOUNT_TAG); 7476472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler return new FinalSetupTaskLoader(mAppContext, accountArg); 7576472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler } 7676472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler 7776472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler @Override 7876472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler public void onLoadFinished(Loader<Boolean> loader, Boolean success) { 7976472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler if (!success) { 8076472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler return; 8176472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler } 8276472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler mHandler.post(new Runnable() { 8376472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler @Override 8476472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler public void run() { 8576472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler if (isResumed()) { 8676472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler Callback activity = (Callback) getActivity(); 8776472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler activity.onAccountFinalizeFragmentComplete(); 8876472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler } 8976472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler } 9076472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler }); 9176472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler 9276472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler } 9376472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler 9476472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler @Override 9576472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler public void onLoaderReset(Loader<Boolean> loader) {} 9676472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler }); 9776472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler } 9876472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler 9976472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler /** 10076472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler * Final account setup work is handled in this Loader: 10176472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler * Commit final values to provider 10276472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler * Trigger account backup 10376472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler */ 10476472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler private static class FinalSetupTaskLoader extends MailAsyncTaskLoader<Boolean> { 10576472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler 10676472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler private final Account mAccount; 10776472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler 10876472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler public FinalSetupTaskLoader(Context context, Account account) { 10976472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler super(context); 11076472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler mAccount = account; 11176472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler } 11276472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler 11376472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler Account getAccount() { 11476472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler return mAccount; 11576472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler } 11676472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler 11776472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler @Override 11876472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler public Boolean loadInBackground() { 11976472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler // Update the account in the database 12076472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler final ContentValues cv = new ContentValues(); 12176472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler cv.put(EmailContent.AccountColumns.DISPLAY_NAME, mAccount.getDisplayName()); 12276472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler cv.put(EmailContent.AccountColumns.SENDER_NAME, mAccount.getSenderName()); 12376472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler mAccount.update(getContext(), cv); 12476472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler 12576472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler // Update the backup (side copy) of the accounts 12676472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler AccountBackupRestore.backup(getContext()); 12776472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler 12876472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler return true; 12976472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler } 13076472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler 13176472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler @Override 13276472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler protected void onDiscardResult(Boolean result) {} 13376472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler } 13476472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler} 135