Initial Contribution
[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 android.app.Activity;
20 import android.app.AlertDialog;
21 import android.content.ContentResolver;
22 import android.content.DialogInterface;
23 import android.content.Intent;
24 import android.content.SharedPreferences;
25 import android.content.DialogInterface.OnCancelListener;
26 import android.content.DialogInterface.OnClickListener;
27 import android.database.Cursor;
28 import android.net.Uri;
29 import android.os.Bundle;
30 import android.preference.PreferenceManager;
31 import android.provider.Calendar.Calendars;
32
33 public class LaunchActivity extends Activity implements OnCancelListener,
34         OnClickListener, Runnable {
35
36     private static final String[] PROJECTION = new String[] {
37         Calendars._ID,
38     };
39     
40     public void run() {
41         /* Start a query to refresh the list of calendars if for some reason
42          * the list was not fetched from the server.  We don't care about
43          * the contents of the returned cursor; we do the query strictly for
44          * the side-effect of refreshing the list of calendars from the server.
45          */
46         final ContentResolver cr = getContentResolver();
47         Cursor cursor = cr.query(Calendars.LIVE_CONTENT_URI, PROJECTION,
48             null, null, null);
49         
50         if (cursor != null) {
51             cursor.close();
52         }
53     }
54     
55     @Override
56     protected void onCreate(Bundle icicle) {
57         super.onCreate(icicle);
58         
59         // Check to see if there are no calendars
60         final ContentResolver cr = getContentResolver();
61         Cursor cursor = cr.query(Calendars.CONTENT_URI, PROJECTION,
62                 null /* selection */,
63                 null /* selectionArgs */,
64                 Calendars.DEFAULT_SORT_ORDER);
65         
66         boolean missingCalendars = false;
67         if ((cursor == null) || (cursor.getCount() == 0)) {
68             missingCalendars = true;
69         }
70         
71         if (cursor != null) {
72             cursor.close();
73         }
74         
75         if (missingCalendars) {
76             new AlertDialog.Builder(this)
77                     .setTitle(R.string.no_calendars)
78                     .setMessage(R.string.no_calendars_msg)
79                     .setCancelable(true)
80                     .setOnCancelListener(this)
81                     .setPositiveButton(R.string.ok_label, this)
82                     .show();
83             new Thread(this).start();
84             return;
85         }
86             
87         SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
88         String startActivity = prefs.getString(CalendarPreferenceActivity.KEY_START_VIEW,
89                 CalendarPreferenceActivity.DEFAULT_START_VIEW);
90             
91         // Get the data for from this intent, if any
92         Intent myIntent = getIntent();
93         Uri myData = myIntent.getData();
94             
95         // Set up the intent for the start activity
96         Intent intent = new Intent();
97         if (myData != null) {
98             intent.setData(myData);
99         }
100         intent.setClassName(this, startActivity);
101         startActivity(intent);
102         finish();
103     }
104
105     public void onCancel(DialogInterface dialog) {
106         finish();
107     }
108
109     public void onClick(DialogInterface dialog, int which) {
110         finish();
111     }
112 }