Code drop from //branches/cupcake/...@124589
[android/platform/packages/apps/Calendar.git] / src / com / android / calendar / LaunchActivity.java
1 /*
2  * Copyright (C) 2007 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 package com.android.calendar;
18
19 import com.google.android.googlelogin.GoogleLoginServiceConstants;
20 import com.google.android.googlelogin.GoogleLoginServiceHelper;
21
22 import android.app.Activity;
23 import android.content.Intent;
24 import android.content.SharedPreferences;
25 import android.net.Uri;
26 import android.os.Bundle;
27 import android.preference.PreferenceManager;
28 import android.provider.Gmail;
29
30 public class LaunchActivity extends Activity {
31     
32     // An arbitrary constant to pass to the GoogleLoginHelperService
33     private static final int GET_ACCOUNT_REQUEST = 1;
34     
35     @Override
36     protected void onCreate(Bundle icicle) {
37         super.onCreate(icicle);
38         
39         // Only try looking for an account if this is the first launch.
40         if (icicle == null) {
41             // This will request a Gmail account and if none are present, it will
42             // invoke SetupWizard to login or create one. The result is returned
43             // through onActivityResult().
44             Bundle bundle = new Bundle();
45             bundle.putCharSequence("optional_message", getText(R.string.calendar_plug));
46             GoogleLoginServiceHelper.getCredentials(
47                     this,
48                     GET_ACCOUNT_REQUEST,
49                     bundle,
50                     GoogleLoginServiceConstants.PREFER_HOSTED,
51                     Gmail.GMAIL_AUTH_SERVICE,
52                     true);
53         }
54     }
55     
56     private void onAccountsLoaded(String account) {
57         SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
58         String startActivity = prefs.getString(CalendarPreferenceActivity.KEY_START_VIEW,
59                 CalendarPreferenceActivity.DEFAULT_START_VIEW);
60             
61         // Get the data for from this intent, if any
62         Intent myIntent = getIntent();
63         Uri myData = myIntent.getData();
64             
65         // Set up the intent for the start activity
66         Intent intent = new Intent();
67         if (myData != null) {
68             intent.setData(myData);
69         }
70         intent.setClassName(this, startActivity);
71         startActivity(intent);
72         finish();
73     }
74     
75     @Override
76     protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
77         super.onActivityResult(requestCode, resultCode, intent);
78         if (requestCode == GET_ACCOUNT_REQUEST) {
79             if (resultCode == RESULT_OK) {
80                 if (intent != null) {
81                     Bundle extras = intent.getExtras();
82                     if (extras != null) {
83                         final String account;
84                         account = extras.getString(GoogleLoginServiceConstants.AUTH_ACCOUNT_KEY);
85                         onAccountsLoaded(account);
86                     }
87                 }
88             } else {
89                 finish();
90             }
91         }
92     }
93 }