diff options
Diffstat (limited to 'src/com/android')
7 files changed, 53 insertions, 33 deletions
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) { |