summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--AndroidManifest.xml11
-rw-r--r--src/com/android/calendar/EventInfoActivity.java12
-rw-r--r--src/com/android/calendar/GoogleCalendarUriIntentFilter.java2
-rw-r--r--src/com/android/calendar/alerts/AlertActivity.java18
-rw-r--r--src/com/android/calendar/alerts/AlertUtils.java7
-rw-r--r--src/com/android/calendar/alerts/DismissAlarmsService.java11
-rw-r--r--src/com/android/calendar/widget/CalendarAppWidgetProvider.java30
-rw-r--r--src/com/android/calendar/widget/CalendarAppWidgetService.java6
8 files changed, 59 insertions, 38 deletions
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index c9b6413e..8b3e1bbb 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -67,11 +67,6 @@
<data android:host="com.android.calendar" />
<data android:scheme="content"/>
</intent-filter>
- <intent-filter>
- <action android:name="android.intent.action.VIEW" />
- <category android:name="android.intent.category.DEFAULT" />
- <data android:mimeType="vnd.android.cursor.item/event" />
- </intent-filter>
</activity>
<activity-alias android:name="LaunchActivity"
@@ -80,11 +75,17 @@
</activity-alias>
<activity android:name="EventInfoActivity"
+ android:parentActivityName="com.android.calendar.AllInOneActivity"
android:theme="@style/CalendarTheme.WithActionBar">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
+ <intent-filter>
+ <action android:name="android.intent.action.VIEW" />
+ <category android:name="android.intent.category.DEFAULT" />
+ <data android:mimeType="vnd.android.cursor.item/event" />
+ </intent-filter>
</activity>
<activity android:name=".event.EditEventActivity"
diff --git a/src/com/android/calendar/EventInfoActivity.java b/src/com/android/calendar/EventInfoActivity.java
index 4b6827b4..0ea6b369 100644
--- a/src/com/android/calendar/EventInfoActivity.java
+++ b/src/com/android/calendar/EventInfoActivity.java
@@ -24,9 +24,12 @@ import android.app.ActionBar;
import android.app.Activity;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
+import android.content.ContentUris;
import android.content.Intent;
+import android.content.res.Resources;
import android.net.Uri;
import android.os.Bundle;
+import android.provider.CalendarContract.Events;
import android.util.Log;
public class EventInfoActivity extends Activity {
@@ -68,10 +71,11 @@ public class EventInfoActivity extends Activity {
}
}
- // Never show this activity if we support showing double pane agenda view
- // If we do support this, instead launch AllInOneActivity in double pane mode
- // This can happen if this activity is launched while in portrait mode in sw600dp
- if (!getResources().getBoolean(R.bool.agenda_show_event_info_full_screen)) {
+ // If we do not support showing full screen event info in this configuration,
+ // close the activity and show the event in AllInOne.
+ Resources res = getResources();
+ if (!res.getBoolean(R.bool.agenda_show_event_info_full_screen)
+ && !res.getBoolean(R.bool.show_event_info_full_screen)) {
CalendarController.getInstance(this)
.launchViewEvent(mEventId, mStartMillis, mEndMillis);
finish();
diff --git a/src/com/android/calendar/GoogleCalendarUriIntentFilter.java b/src/com/android/calendar/GoogleCalendarUriIntentFilter.java
index 96a5388a..77e337b1 100644
--- a/src/com/android/calendar/GoogleCalendarUriIntentFilter.java
+++ b/src/com/android/calendar/GoogleCalendarUriIntentFilter.java
@@ -222,7 +222,7 @@ public class GoogleCalendarUriIntentFilter extends Activity {
Uri calendarUri = ContentUris.withAppendedId(Events.CONTENT_URI,
eventId);
intent = new Intent(Intent.ACTION_VIEW, calendarUri);
- intent.setClass(this, AllInOneActivity.class);
+ intent.setClass(this, EventInfoActivity.class);
intent.putExtra(EXTRA_EVENT_BEGIN_TIME, startMillis);
intent.putExtra(EXTRA_EVENT_END_TIME, endMillis);
if (attendeeStatus != ATTENDEE_STATUS_NONE) {
diff --git a/src/com/android/calendar/alerts/AlertActivity.java b/src/com/android/calendar/alerts/AlertActivity.java
index ba042e5c..e073ed68 100644
--- a/src/com/android/calendar/alerts/AlertActivity.java
+++ b/src/com/android/calendar/alerts/AlertActivity.java
@@ -18,22 +18,19 @@ package com.android.calendar.alerts;
import com.android.calendar.AllInOneActivity;
import com.android.calendar.AsyncQueryService;
+import com.android.calendar.EventInfoActivity;
import com.android.calendar.R;
import com.android.calendar.Utils;
import android.app.Activity;
-import android.app.AlarmManager;
import android.app.NotificationManager;
-import android.app.PendingIntent;
-import android.content.ContentUris;
+import android.app.TaskStackBuilder;
import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
-import android.net.Uri.Builder;
import android.os.Bundle;
-import android.provider.CalendarContract;
import android.provider.CalendarContract.CalendarAlerts;
import android.util.Log;
import android.view.View;
@@ -150,7 +147,7 @@ public class AlertActivity extends Activity implements OnClickListener {
- private OnItemClickListener mViewListener = new OnItemClickListener() {
+ private final OnItemClickListener mViewListener = new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
@@ -161,12 +158,17 @@ public class AlertActivity extends Activity implements OnClickListener {
// Mark this alarm as DISMISSED
dismissAlarm(cursor.getLong(INDEX_ROW_ID));
+ // build an intent and task stack to start EventInfoActivity with AllInOneActivity
+ // as the parent activity rooted to home.
long id = cursor.getInt(AlertActivity.INDEX_EVENT_ID);
long startMillis = cursor.getLong(AlertActivity.INDEX_BEGIN);
long endMillis = cursor.getLong(AlertActivity.INDEX_END);
Intent eventIntent = AlertUtils.buildEventViewIntent(AlertActivity.this, id,
startMillis, endMillis);
- alertActivity.startActivity(eventIntent);
+
+ TaskStackBuilder.create(AlertActivity.this)
+ .addParentStack(EventInfoActivity.class).addNextIntent(eventIntent)
+ .startActivities();
alertActivity.finish();
}
@@ -253,7 +255,7 @@ public class AlertActivity extends Activity implements OnClickListener {
// Set the "minutes" to zero to indicate this is a snoozed
// alarm. There is code in AlertService.java that checks
// this field.
- ContentValues values = AlertUtils.makeContentValues(eventId, begin, end,
+ ContentValues values = AlertUtils.makeContentValues(eventId, begin, end,
alarmTime, 0 /* minutes */);
// Create a new alarm entry in the CalendarAlerts table
diff --git a/src/com/android/calendar/alerts/AlertUtils.java b/src/com/android/calendar/alerts/AlertUtils.java
index 9cb6c537..a5aa16df 100644
--- a/src/com/android/calendar/alerts/AlertUtils.java
+++ b/src/com/android/calendar/alerts/AlertUtils.java
@@ -25,7 +25,7 @@ import android.net.Uri;
import android.provider.CalendarContract;
import android.provider.CalendarContract.CalendarAlerts;
-import com.android.calendar.AllInOneActivity;
+import com.android.calendar.EventInfoActivity;
public class AlertUtils {
@@ -84,13 +84,12 @@ public class AlertUtils {
return values;
}
- public static Intent buildEventViewIntent(Context c, long eventId, long begin, long end){
+ public static Intent buildEventViewIntent(Context c, long eventId, long begin, long end) {
Intent i = new Intent(Intent.ACTION_VIEW);
Uri.Builder builder = CalendarContract.CONTENT_URI.buildUpon();
- i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
builder.appendEncodedPath("events/" + eventId);
i.setData(builder.build());
- i.setClass(c, AllInOneActivity.class);
+ i.setClass(c, EventInfoActivity.class);
i.putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, begin);
i.putExtra(CalendarContract.EXTRA_EVENT_END_TIME, end);
return i;
diff --git a/src/com/android/calendar/alerts/DismissAlarmsService.java b/src/com/android/calendar/alerts/DismissAlarmsService.java
index e0c93890..cb0931b5 100644
--- a/src/com/android/calendar/alerts/DismissAlarmsService.java
+++ b/src/com/android/calendar/alerts/DismissAlarmsService.java
@@ -18,6 +18,7 @@ package com.android.calendar.alerts;
import android.app.IntentService;
import android.app.NotificationManager;
+import android.app.TaskStackBuilder;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.content.Context;
@@ -26,6 +27,9 @@ import android.net.Uri;
import android.os.IBinder;
import android.provider.CalendarContract.CalendarAlerts;
+import com.android.calendar.AllInOneActivity;
+import com.android.calendar.EventInfoActivity;
+
/**
* Service for asynchronously marking all fired alarms as dismissed.
*/
@@ -73,9 +77,12 @@ public class DismissAlarmsService extends IntentService {
NotificationManager nm =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
nm.cancel(AlertUtils.NOTIFICATION_ID);
- // Show event on Calendar app
+ // Show event on Calendar app by building an intent and task stack to start
+ // EventInfoActivity with AllInOneActivity as the parent activity rooted to home.
+
Intent i = AlertUtils.buildEventViewIntent(this, eventId, eventStart, eventEnd);
- startActivity(i);
+ TaskStackBuilder.create(this)
+ .addParentStack(EventInfoActivity.class).addNextIntent(i).startActivities();
}
// Stop this service
diff --git a/src/com/android/calendar/widget/CalendarAppWidgetProvider.java b/src/com/android/calendar/widget/CalendarAppWidgetProvider.java
index bd903fdb..be93a988 100644
--- a/src/com/android/calendar/widget/CalendarAppWidgetProvider.java
+++ b/src/com/android/calendar/widget/CalendarAppWidgetProvider.java
@@ -19,12 +19,9 @@ package com.android.calendar.widget;
import static android.provider.CalendarContract.EXTRA_EVENT_BEGIN_TIME;
import static android.provider.CalendarContract.EXTRA_EVENT_END_TIME;
-import com.android.calendar.AllInOneActivity;
-import com.android.calendar.R;
-import com.android.calendar.Utils;
-
import android.app.AlarmManager;
import android.app.PendingIntent;
+import android.app.TaskStackBuilder;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.ComponentName;
@@ -37,6 +34,11 @@ import android.text.format.Time;
import android.util.Log;
import android.widget.RemoteViews;
+import com.android.calendar.AllInOneActivity;
+import com.android.calendar.EventInfoActivity;
+import com.android.calendar.R;
+import com.android.calendar.Utils;
+
/**
* Simple widget to show next upcoming calendar event.
*/
@@ -185,12 +187,11 @@ public class CalendarAppWidgetProvider extends AppWidgetProvider {
static PendingIntent getLaunchPendingIntentTemplate(Context context) {
Intent launchIntent = new Intent();
launchIntent.setAction(Intent.ACTION_VIEW);
- launchIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK |
- Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED |
- Intent.FLAG_ACTIVITY_CLEAR_TOP);
- launchIntent.setClass(context, AllInOneActivity.class);
- return PendingIntent.getActivity(context, 0 /* no requestCode */,
- launchIntent, PendingIntent.FLAG_UPDATE_CURRENT);
+ launchIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK |
+ Intent.FLAG_ACTIVITY_TASK_ON_HOME);
+ launchIntent.setClass(context, AllInOneActivity.class);
+ return PendingIntent.getActivity(context, 0 /* no requestCode */, launchIntent,
+ PendingIntent.FLAG_UPDATE_CURRENT);
}
/**
@@ -204,11 +205,18 @@ public class CalendarAppWidgetProvider extends AppWidgetProvider {
*/
static Intent getLaunchFillInIntent(Context context, long id, long start, long end) {
final Intent fillInIntent = new Intent();
- fillInIntent.setClass(context, AllInOneActivity.class);
String dataString = "content://com.android.calendar/events";
if (id != 0) {
fillInIntent.putExtra(Utils.INTENT_KEY_DETAIL_VIEW, true);
+ fillInIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK |
+ Intent.FLAG_ACTIVITY_TASK_ON_HOME);
+
dataString += "/" + id;
+ // If we have an event id - start the event info activity
+ fillInIntent.setClass(context, EventInfoActivity.class);
+ } else {
+ // If we do not have an event id - start AllInOne
+ fillInIntent.setClass(context, AllInOneActivity.class);
}
Uri data = Uri.parse(dataString);
fillInIntent.setData(data);
diff --git a/src/com/android/calendar/widget/CalendarAppWidgetService.java b/src/com/android/calendar/widget/CalendarAppWidgetService.java
index dc927b6f..7907dc8b 100644
--- a/src/com/android/calendar/widget/CalendarAppWidgetService.java
+++ b/src/com/android/calendar/widget/CalendarAppWidgetService.java
@@ -122,15 +122,15 @@ public class CalendarAppWidgetService extends RemoteViewsService {
private static volatile Integer mLock = new Integer(0);
private int mLastLock;
private CursorLoader mLoader;
- private Handler mHandler = new Handler();
+ private final Handler mHandler = new Handler();
private static final AtomicInteger currentVersion = new AtomicInteger(0);
- private ExecutorService executor = Executors.newSingleThreadExecutor();
+ private final ExecutorService executor = Executors.newSingleThreadExecutor();
private int mAppWidgetId;
private int mDeclinedColor;
private int mStandardColor;
private int mAllDayColor;
- private Runnable mTimezoneChanged = new Runnable() {
+ private final Runnable mTimezoneChanged = new Runnable() {
@Override
public void run() {
if (mLoader != null) {