summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMichael Chan <mchan@android.com>2010-07-02 13:57:44 -0700
committerMichael Chan <mchan@android.com>2010-07-02 13:57:44 -0700
commitef1a51d6dda6dd8a013bf0937f10c6eb2041b888 (patch)
tree1542ff36c71df02c4dcdcbc2092f4df32f7c2fa3 /src
parent1251cb05edd5283545bc27652f5c0aaa3d1095a1 (diff)
downloadandroid_packages_apps_Calendar-ef1a51d6dda6dd8a013bf0937f10c6eb2041b888.tar.gz
android_packages_apps_Calendar-ef1a51d6dda6dd8a013bf0937f10c6eb2041b888.tar.bz2
android_packages_apps_Calendar-ef1a51d6dda6dd8a013bf0937f10c6eb2041b888.zip
First draft of DayFragment
Change-Id: I6e39a4e3204ac7f964dc9b9f28fbd26989030611
Diffstat (limited to 'src')
-rw-r--r--src/com/android/calendar/CalendarActivity.java380
-rw-r--r--src/com/android/calendar/CalendarView.java233
-rw-r--r--src/com/android/calendar/DayActivity.java43
-rw-r--r--src/com/android/calendar/DayFragment.java300
-rw-r--r--src/com/android/calendar/DayView.java8
-rw-r--r--src/com/android/calendar/WeekActivity.java72
-rw-r--r--src/com/android/calendar/WeekView.java8
7 files changed, 484 insertions, 560 deletions
diff --git a/src/com/android/calendar/CalendarActivity.java b/src/com/android/calendar/CalendarActivity.java
deleted file mode 100644
index 982268d6..00000000
--- a/src/com/android/calendar/CalendarActivity.java
+++ /dev/null
@@ -1,380 +0,0 @@
-/*
- * Copyright (C) 2007 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.calendar;
-
-import android.app.Activity;
-import android.content.BroadcastReceiver;
-import android.content.ContentResolver;
-import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.database.ContentObserver;
-import android.os.Bundle;
-import android.os.Handler;
-import android.provider.Calendar;
-import android.text.format.Time;
-import android.view.GestureDetector;
-import android.view.Menu;
-import android.view.MenuItem;
-import android.view.MotionEvent;
-import android.view.View;
-import android.view.animation.Animation;
-import android.view.animation.AnimationUtils;
-import android.view.animation.TranslateAnimation;
-import android.widget.ProgressBar;
-import android.widget.ViewSwitcher;
-
-import dalvik.system.VMRuntime;
-
-/**
- * This is the base class for Day and Week Activities.
- */
-public class CalendarActivity extends Activity implements Navigator {
-
- private static final long INITIAL_HEAP_SIZE = 4*1024*1024;
- private static final long ANIMATION_DURATION = 400;
-
- protected static final String BUNDLE_KEY_RESTORE_TIME = "key_restore_time";
-
- private ContentResolver mContentResolver;
-
- protected ProgressBar mProgressBar;
- protected ViewSwitcher mViewSwitcher;
- protected Animation mInAnimationForward;
- protected Animation mOutAnimationForward;
- protected Animation mInAnimationBackward;
- protected Animation mOutAnimationBackward;
- EventLoader mEventLoader;
-
- Time mSelectedDay = new Time();
-
- /* package */ GestureDetector mGestureDetector;
-
- /**
- * Listens for intent broadcasts
- */
- private BroadcastReceiver mIntentReceiver = new BroadcastReceiver() {
- @Override
- public void onReceive(Context context, Intent intent) {
- String action = intent.getAction();
- if (action.equals(Intent.ACTION_TIME_CHANGED)
- || action.equals(Intent.ACTION_DATE_CHANGED)
- || action.equals(Intent.ACTION_TIMEZONE_CHANGED)) {
- eventsChanged();
- }
- }
- };
-
- // Create an observer so that we can update the views whenever a
- // Calendar event changes.
- private ContentObserver mObserver = new ContentObserver(new Handler())
- {
- @Override
- public boolean deliverSelfNotifications() {
- return true;
- }
-
- @Override
- public void onChange(boolean selfChange) {
- eventsChanged();
- }
- };
-
- @Override
- protected void onCreate(Bundle icicle) {
- super.onCreate(icicle);
-
- // Eliminate extra GCs during startup by setting the initial heap size to 4MB.
- // TODO: We should restore the old heap size once the activity reaches the idle state
- VMRuntime.getRuntime().setMinimumHeapSize(INITIAL_HEAP_SIZE);
-
- setDefaultKeyMode(DEFAULT_KEYS_SHORTCUT);
- mContentResolver = getContentResolver();
-
- mInAnimationForward = AnimationUtils.loadAnimation(this, R.anim.slide_left_in);
- mOutAnimationForward = AnimationUtils.loadAnimation(this, R.anim.slide_left_out);
- mInAnimationBackward = AnimationUtils.loadAnimation(this, R.anim.slide_right_in);
- mOutAnimationBackward = AnimationUtils.loadAnimation(this, R.anim.slide_right_out);
-
- mGestureDetector = new GestureDetector(this, new CalendarGestureListener());
- mEventLoader = new EventLoader(this);
- }
-
- @Override
- protected void onRestoreInstanceState(Bundle savedInstanceState) {
- super.onRestoreInstanceState(savedInstanceState);
-
- CalendarView view = (CalendarView) mViewSwitcher.getCurrentView();
- Time time = new Time();
- time.set(savedInstanceState.getLong(BUNDLE_KEY_RESTORE_TIME));
- view.setSelectedDay(time);
- }
-
- @Override
- protected void onNewIntent(Intent intent) {
- long timeMillis = Utils.timeFromIntentInMillis(intent);
- if (timeMillis > 0) {
- Time time = new Time();
- time.set(timeMillis);
- goTo(time, false);
- }
- }
-
- @Override
- protected void onResume() {
- super.onResume();
- mEventLoader.startBackgroundThread();
- eventsChanged();
- CalendarView view = (CalendarView) mViewSwitcher.getCurrentView();
- view.updateIs24HourFormat();
- view.restartCurrentTimeUpdates();
-
- view = (CalendarView) mViewSwitcher.getNextView();
- view.updateIs24HourFormat();
-
- // Register for Intent broadcasts
- IntentFilter filter = new IntentFilter();
-
- filter.addAction(Intent.ACTION_TIME_CHANGED);
- filter.addAction(Intent.ACTION_DATE_CHANGED);
- filter.addAction(Intent.ACTION_TIMEZONE_CHANGED);
- registerReceiver(mIntentReceiver, filter);
-
- mContentResolver.registerContentObserver(Calendar.Events.CONTENT_URI,
- true, mObserver);
- }
-
- @Override
- protected void onSaveInstanceState(Bundle outState) {
- super.onSaveInstanceState(outState);
-
- outState.putLong(BUNDLE_KEY_RESTORE_TIME, getSelectedTimeInMillis());
- }
-
- @Override
- protected void onPause() {
- super.onPause();
- mContentResolver.unregisterContentObserver(mObserver);
- unregisterReceiver(mIntentReceiver);
-
- CalendarView view = (CalendarView) mViewSwitcher.getCurrentView();
- view.cleanup();
- view = (CalendarView) mViewSwitcher.getNextView();
- view.cleanup();
- mEventLoader.stopBackgroundThread();
- }
-
- void startProgressSpinner() {
- // start the progress spinner
- mProgressBar.setVisibility(View.VISIBLE);
- }
-
- void stopProgressSpinner() {
- // stop the progress spinner
- mProgressBar.setVisibility(View.GONE);
- }
-
- /* Navigator interface methods */
- public void goTo(Time time, boolean animate) {
- if (animate) {
- CalendarView current = (CalendarView) mViewSwitcher.getCurrentView();
- if (current.getSelectedTime().before(time)) {
- mViewSwitcher.setInAnimation(mInAnimationForward);
- mViewSwitcher.setOutAnimation(mOutAnimationForward);
- } else {
- mViewSwitcher.setInAnimation(mInAnimationBackward);
- mViewSwitcher.setOutAnimation(mOutAnimationBackward);
- }
- }
-
- CalendarView next = (CalendarView) mViewSwitcher.getNextView();
- next.setSelectedDay(time);
- next.reloadEvents();
- mViewSwitcher.showNext();
- next.requestFocus();
- }
-
- /**
- * Returns the selected time in milliseconds. The milliseconds are measured
- * in UTC milliseconds from the epoch and uniquely specifies any selectable
- * time.
- *
- * @return the selected time in milliseconds
- */
- public long getSelectedTimeInMillis() {
- CalendarView view = (CalendarView) mViewSwitcher.getCurrentView();
- return view.getSelectedTimeInMillis();
- }
-
- public long getSelectedTime() {
- return getSelectedTimeInMillis();
- }
-
- public void goToToday() {
- mSelectedDay.set(System.currentTimeMillis());
- CalendarView view = (CalendarView) mViewSwitcher.getCurrentView();
- view.setSelectedDay(mSelectedDay);
- view.reloadEvents();
- }
-
- public boolean getAllDay() {
- CalendarView view = (CalendarView) mViewSwitcher.getCurrentView();
- return view.mSelectionAllDay;
- }
-
- void eventsChanged() {
- CalendarView view = (CalendarView) mViewSwitcher.getCurrentView();
- view.clearCachedEvents();
- view.reloadEvents();
- }
-
- Event getSelectedEvent() {
- CalendarView view = (CalendarView) mViewSwitcher.getCurrentView();
- return view.getSelectedEvent();
- }
-
- boolean isEventSelected() {
- CalendarView view = (CalendarView) mViewSwitcher.getCurrentView();
- return view.isEventSelected();
- }
-
- Event getNewEvent() {
- CalendarView view = (CalendarView) mViewSwitcher.getCurrentView();
- return view.getNewEvent();
- }
-
- public CalendarView getNextView() {
- return (CalendarView) mViewSwitcher.getNextView();
- }
-
- public View switchViews(boolean forward, float xOffSet, float width) {
- float progress = Math.abs(xOffSet) / width;
- if (progress > 1.0f) {
- progress = 1.0f;
- }
-
- float inFromXValue, inToXValue;
- float outFromXValue, outToXValue;
- if (forward) {
- inFromXValue = 1.0f - progress;
- inToXValue = 0.0f;
- outFromXValue = -progress;
- outToXValue = -1.0f;
- } else {
- inFromXValue = progress - 1.0f;
- inToXValue = 0.0f;
- outFromXValue = progress;
- outToXValue = 1.0f;
- }
-
- // We have to allocate these animation objects each time we switch views
- // because that is the only way to set the animation parameters.
- TranslateAnimation inAnimation = new TranslateAnimation(
- Animation.RELATIVE_TO_SELF, inFromXValue,
- Animation.RELATIVE_TO_SELF, inToXValue,
- Animation.ABSOLUTE, 0.0f,
- Animation.ABSOLUTE, 0.0f);
-
- TranslateAnimation outAnimation = new TranslateAnimation(
- Animation.RELATIVE_TO_SELF, outFromXValue,
- Animation.RELATIVE_TO_SELF, outToXValue,
- Animation.ABSOLUTE, 0.0f,
- Animation.ABSOLUTE, 0.0f);
-
- // Reduce the animation duration based on how far we have already swiped.
- long duration = (long) (ANIMATION_DURATION * (1.0f - progress));
- inAnimation.setDuration(duration);
- outAnimation.setDuration(duration);
- mViewSwitcher.setInAnimation(inAnimation);
- mViewSwitcher.setOutAnimation(outAnimation);
-
- CalendarView view = (CalendarView) mViewSwitcher.getCurrentView();
- view.cleanup();
- mViewSwitcher.showNext();
- view = (CalendarView) mViewSwitcher.getCurrentView();
- view.requestFocus();
- view.reloadEvents();
- return view;
- }
-
- @Override
- public boolean onPrepareOptionsMenu(Menu menu) {
- MenuHelper.onPrepareOptionsMenu(this, menu);
- return super.onPrepareOptionsMenu(menu);
- }
-
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- if (! MenuHelper.onCreateOptionsMenu(menu)) {
- return false;
- }
- return super.onCreateOptionsMenu(menu);
- }
-
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- if (MenuHelper.onOptionsItemSelected(this, item, this)) {
- return true;
- }
- return super.onOptionsItemSelected(item);
- }
-
- @Override
- public boolean onTouchEvent(MotionEvent ev) {
- if (mGestureDetector.onTouchEvent(ev)) {
- return true;
- }
- return super.onTouchEvent(ev);
- }
-
- class CalendarGestureListener extends GestureDetector.SimpleOnGestureListener {
- @Override
- public boolean onSingleTapUp(MotionEvent ev) {
- CalendarView view = (CalendarView) mViewSwitcher.getCurrentView();
- view.doSingleTapUp(ev);
- return true;
- }
-
- @Override
- public void onLongPress(MotionEvent ev) {
- CalendarView view = (CalendarView) mViewSwitcher.getCurrentView();
- view.doLongPress(ev);
- }
-
- @Override
- public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
- CalendarView view = (CalendarView) mViewSwitcher.getCurrentView();
- view.doScroll(e1, e2, distanceX, distanceY);
- return true;
- }
-
- @Override
- public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
- CalendarView view = (CalendarView) mViewSwitcher.getCurrentView();
- view.doFling(e1, e2, velocityX, velocityY);
- return true;
- }
-
- @Override
- public boolean onDown(MotionEvent ev) {
- CalendarView view = (CalendarView) mViewSwitcher.getCurrentView();
- view.doDown(ev);
- return true;
- }
- }
-}
-
diff --git a/src/com/android/calendar/CalendarView.java b/src/com/android/calendar/CalendarView.java
index cc59d4b3..7edbc5c8 100644
--- a/src/com/android/calendar/CalendarView.java
+++ b/src/com/android/calendar/CalendarView.java
@@ -48,6 +48,7 @@ import android.text.format.DateUtils;
import android.text.format.Time;
import android.util.Log;
import android.view.ContextMenu;
+import android.view.GestureDetector;
import android.view.Gravity;
import android.view.KeyEvent;
import android.view.LayoutInflater;
@@ -58,9 +59,12 @@ import android.view.ViewConfiguration;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.view.ContextMenu.ContextMenuInfo;
+import android.view.animation.Animation;
+import android.view.animation.TranslateAnimation;
import android.widget.ImageView;
import android.widget.PopupWindow;
import android.widget.TextView;
+import android.widget.ViewSwitcher;
import java.util.ArrayList;
import java.util.Calendar;
@@ -76,6 +80,7 @@ public class CalendarView extends View
private static float mScale = 0; // Used for supporting different screen densities
private static final long INVALID_EVENT_ID = -1; //This is used for remembering a null event
+ private static final long ANIMATION_DURATION = 400;
private boolean mOnFlingCalled;
/**
@@ -88,8 +93,7 @@ public class CalendarView extends View
*/
private long mLastPopupEventID;
- protected CalendarApplication mCalendarApp;
- protected CalendarActivity mParentActivity;
+ protected Context mContext;
private static final String[] CALENDARS_PROJECTION = new String[] {
Calendars._ID, // 0
@@ -162,9 +166,6 @@ public class CalendarView extends View
private int mSelectionDay; // Julian day
private int mSelectionHour;
- /* package private so that CalendarActivity can read it when creating new
- * events
- */
boolean mSelectionAllDay;
private int mCellWidth;
@@ -180,7 +181,7 @@ public class CalendarView extends View
private Paint mSelectionPaint = new Paint();
private Path mPath = new Path();
- protected boolean mDrawTextInEventRect;
+ protected boolean mDrawTextInEventRect = true;
private int mStartDay;
private PopupWindow mPopup;
@@ -339,9 +340,13 @@ public class CalendarView extends View
private String mDateRange;
private TextView mTitleTextView;
+ private CalendarController mController;
+ private ViewSwitcher mViewSwitcher;
+ private GestureDetector mGestureDetector;
- public CalendarView(CalendarActivity activity) {
- super(activity);
+ public CalendarView(Context context, CalendarController controller, ViewSwitcher viewSwitcher,
+ EventLoader eventLoader) {
+ super(context);
if (mScale == 0) {
mScale = getContext().getResources().getDisplayMetrics().density;
if (mScale != 1) {
@@ -370,17 +375,19 @@ public class CalendarView extends View
}
}
- mResources = activity.getResources();
- mEventLoader = activity.mEventLoader;
+ mResources = context.getResources();
+ mEventLoader = eventLoader;
mEventGeometry = new EventGeometry();
mEventGeometry.setMinEventHeight(MIN_EVENT_HEIGHT);
mEventGeometry.setHourGap(HOUR_GAP);
- mParentActivity = activity;
- mCalendarApp = (CalendarApplication) mParentActivity.getApplication();
- mDeleteEventHelper = new DeleteEventHelper(activity, false /* don't exit when done */);
+ mContext = context;
+ mDeleteEventHelper = new DeleteEventHelper(context, null, false /* don't exit when done */);
mLastPopupEventID = INVALID_EVENT_ID;
+ mController = controller;
+ mViewSwitcher = viewSwitcher;
+ mGestureDetector = new GestureDetector(context, new CalendarGestureListener());
- init(activity);
+ init(context);
}
private void init(Context context) {
@@ -510,7 +517,10 @@ public class CalendarView extends View
mHasAllDayEvent = new boolean[mNumDays];
mNumHours = context.getResources().getInteger(R.integer.number_of_hours);
- mTitleTextView = (TextView) mParentActivity.findViewById(R.id.title);
+
+// FRAG_TODO. Take this out.
+// mTitleTextView = (TextView) findViewById(R.id.title);
+ mTitleTextView = new TextView(mContext);
}
/**
@@ -525,7 +535,7 @@ public class CalendarView extends View
}
public void updateIs24HourFormat() {
- mIs24HourFormat = DateFormat.is24HourFormat(mParentActivity);
+ mIs24HourFormat = DateFormat.is24HourFormat(mContext);
mHourStrs = mIs24HourFormat ? CalendarData.s24Hours : CalendarData.s12HoursNoAmPm;
}
@@ -624,7 +634,7 @@ public class CalendarView extends View
mFirstDate = mBaseDate.monthDay;
int flags = DateUtils.FORMAT_SHOW_YEAR;
- if (DateFormat.is24HourFormat(mParentActivity)) {
+ if (DateFormat.is24HourFormat(mContext)) {
flags |= DateUtils.FORMAT_24HOUR;
}
if (mNumDays > 1) {
@@ -637,7 +647,7 @@ public class CalendarView extends View
| DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_ABBREV_MONTH;
}
- mDateRange = DateUtils.formatDateRange(mParentActivity, start, end, flags);
+ mDateRange = DateUtils.formatDateRange(mContext, start, end, flags);
// Do not set the title here because this is called when executing
// initNextView() to prepare the Day view when sliding the finger
// horizontally but we don't always want to change the title. And
@@ -852,20 +862,20 @@ public class CalendarView extends View
long startMillis = getSelectedTimeInMillis();
long endMillis = startMillis + DateUtils.HOUR_IN_MILLIS;
Intent intent = new Intent(Intent.ACTION_VIEW);
- intent.setClassName(mParentActivity, EditEventActivity.class.getName());
+ intent.setClassName(mContext, EditEventActivity.class.getName());
intent.putExtra(EVENT_BEGIN_TIME, startMillis);
intent.putExtra(EVENT_END_TIME, endMillis);
- mParentActivity.startActivity(intent);
+ mContext.startActivity(intent);
} else {
// Switch to the EventInfo view
Intent intent = new Intent(Intent.ACTION_VIEW);
Uri eventUri = ContentUris.withAppendedId(Events.CONTENT_URI,
selectedEvent.id);
intent.setData(eventUri);
- intent.setClassName(mParentActivity, EventInfoActivity.class.getName());
+ intent.setClassName(mContext, EventInfoActivity.class.getName());
intent.putExtra(EVENT_BEGIN_TIME, selectedEvent.startMillis);
intent.putExtra(EVENT_END_TIME, selectedEvent.endMillis);
- mParentActivity.startActivity(intent);
+ mContext.startActivity(intent);
}
} else {
// This was a touch selection. If the touch selected a single
@@ -877,14 +887,14 @@ public class CalendarView extends View
Uri eventUri = ContentUris.withAppendedId(Events.CONTENT_URI,
selectedEvent.id);
intent.setData(eventUri);
- intent.setClassName(mParentActivity, EventInfoActivity.class.getName());
+ intent.setClassName(mContext, EventInfoActivity.class.getName());
intent.putExtra(EVENT_BEGIN_TIME, selectedEvent.startMillis);
intent.putExtra(EVENT_END_TIME, selectedEvent.endMillis);
- mParentActivity.startActivity(intent);
+ mContext.startActivity(intent);
} else {
// Switch to the Day/Agenda view.
long millis = getSelectedTimeInMillis();
- Utils.startActivity(mParentActivity, mDetailedView, millis);
+ Utils.startActivity(mContext, mDetailedView, millis);
}
}
} else {
@@ -896,19 +906,19 @@ public class CalendarView extends View
long startMillis = getSelectedTimeInMillis();
long endMillis = startMillis + DateUtils.HOUR_IN_MILLIS;
Intent intent = new Intent(Intent.ACTION_VIEW);
- intent.setClassName(mParentActivity, EditEventActivity.class.getName());
+ intent.setClassName(mContext, EditEventActivity.class.getName());
intent.putExtra(EVENT_BEGIN_TIME, startMillis);
intent.putExtra(EVENT_END_TIME, endMillis);
- mParentActivity.startActivity(intent);
+ mContext.startActivity(intent);
} else {
// Switch to the EventInfo view
Intent intent = new Intent(Intent.ACTION_VIEW);
Uri eventUri = ContentUris.withAppendedId(Events.CONTENT_URI, selectedEvent.id);
intent.setData(eventUri);
- intent.setClassName(mParentActivity, EventInfoActivity.class.getName());
+ intent.setClassName(mContext, EventInfoActivity.class.getName());
intent.putExtra(EVENT_BEGIN_TIME, selectedEvent.startMillis);
intent.putExtra(EVENT_END_TIME, selectedEvent.endMillis);
- mParentActivity.startActivity(intent);
+ mContext.startActivity(intent);
}
}
}
@@ -946,13 +956,13 @@ public class CalendarView extends View
performLongClick();
}
break;
- case KeyEvent.KEYCODE_BACK:
- if (event.isTracking() && !event.isCanceled()) {
- mPopup.dismiss();
- mParentActivity.finish();
- return true;
- }
- break;
+// case KeyEvent.KEYCODE_BACK:
+// if (event.isTracking() && !event.isCanceled()) {
+// mPopup.dismiss();
+// mContext.finish();
+// return true;
+// }
+// break;
}
return super.onKeyUp(keyCode, event);
}
@@ -1070,7 +1080,7 @@ public class CalendarView extends View
if ((selectionDay < mFirstJulianDay) || (selectionDay > mLastJulianDay)) {
boolean forward;
- CalendarView view = mParentActivity.getNextView();
+ CalendarView view = (CalendarView) mViewSwitcher.getNextView();
Time date = view.mBaseDate;
date.set(mBaseDate);
if (selectionDay < mFirstJulianDay) {
@@ -1085,7 +1095,7 @@ public class CalendarView extends View
initView(view);
mTitleTextView.setText(view.mDateRange);
- mParentActivity.switchViews(forward, 0, 0);
+ switchViews(forward, 0, 0);
return true;
}
mSelectionDay = selectionDay;
@@ -1101,6 +1111,56 @@ public class CalendarView extends View
return super.onKeyDown(keyCode, event);
}
+ private View switchViews(boolean forward, float xOffSet, float width) {
+ float progress = Math.abs(xOffSet) / width;
+ if (progress > 1.0f) {
+ progress = 1.0f;
+ }
+
+ float inFromXValue, inToXValue;
+ float outFromXValue, outToXValue;
+ if (forward) {
+ inFromXValue = 1.0f - progress;
+ inToXValue = 0.0f;
+ outFromXValue = -progress;
+ outToXValue = -1.0f;
+ } else {
+ inFromXValue = progress - 1.0f;
+ inToXValue = 0.0f;
+ outFromXValue = progress;
+ outToXValue = 1.0f;
+ }
+
+ // We have to allocate these animation objects each time we switch views
+ // because that is the only way to set the animation parameters.
+ TranslateAnimation inAnimation = new TranslateAnimation(
+ Animation.RELATIVE_TO_SELF, inFromXValue,
+ Animation.RELATIVE_TO_SELF, inToXValue,
+ Animation.ABSOLUTE, 0.0f,
+ Animation.ABSOLUTE, 0.0f);
+
+ TranslateAnimation outAnimation = new TranslateAnimation(
+ Animation.RELATIVE_TO_SELF, outFromXValue,
+ Animation.RELATIVE_TO_SELF, outToXValue,
+ Animation.ABSOLUTE, 0.0f,
+ Animation.ABSOLUTE, 0.0f);
+
+ // Reduce the animation duration based on how far we have already swiped.
+ long duration = (long) (ANIMATION_DURATION * (1.0f - progress));
+ inAnimation.setDuration(duration);
+ outAnimation.setDuration(duration);
+ mViewSwitcher.setInAnimation(inAnimation);
+ mViewSwitcher.setOutAnimation(outAnimation);
+
+ CalendarView view = (CalendarView) mViewSwitcher.getCurrentView();
+ view.cleanup();
+ mViewSwitcher.showNext();
+ view = (CalendarView) mViewSwitcher.getCurrentView();
+ view.requestFocus();
+ view.reloadEvents();
+ return view;
+ }
+
// This is called after scrolling stops to move the selected hour
// to the visible part of the screen.
private void resetSelectedHour() {
@@ -1205,9 +1265,9 @@ public class CalendarView extends View
void reloadEvents() {
// Protect against this being called before this view has been
// initialized.
- if (mParentActivity == null) {
- return;
- }
+// if (mContext == null) {
+// return;
+// }
mSelectedEvent = null;
mPrevSelectedEvent = null;
@@ -1228,7 +1288,7 @@ public class CalendarView extends View
mLastReloadMillis = millis;
// load events in the background
- mParentActivity.startProgressSpinner();
+// mContext.startProgressSpinner();
final ArrayList<Event> events = new ArrayList<Event>();
mEventLoader.loadEventsInBackground(mNumDays, events, millis, new Runnable() {
public void run() {
@@ -1237,7 +1297,7 @@ public class CalendarView extends View
mRedrawScreen = true;
mComputeSelectedEvents = true;
recalc();
- mParentActivity.stopProgressSpinner();
+// mContext.stopProgressSpinner();
invalidate();
}
}, mCancelCallback);
@@ -1262,7 +1322,7 @@ public class CalendarView extends View
} else {
canvas.translate(-(mViewWidth + mViewStartX), 0);
}
- CalendarView nextView = mParentActivity.getNextView();
+ CalendarView nextView = (CalendarView) mViewSwitcher.getNextView();
// Prevent infinite recursive calls to onDraw().
nextView.mTouchMode = TOUCH_MODE_INITIAL_STATE;
@@ -2019,10 +2079,10 @@ public class CalendarView extends View
if (false) {
int flags = DateUtils.FORMAT_SHOW_TIME | DateUtils.FORMAT_ABBREV_ALL
| DateUtils.FORMAT_CAP_NOON_MIDNIGHT;
- if (DateFormat.is24HourFormat(mParentActivity)) {
+ if (DateFormat.is24HourFormat(mContext)) {
flags |= DateUtils.FORMAT_24HOUR;
}
- String timeRange = DateUtils.formatDateRange(mParentActivity,
+ String timeRange = DateUtils.formatDateRange(mContext,
ev.startMillis, ev.endMillis, flags);
Log.i("Cal", "left: " + left + " right: " + right + " top: " + top
+ " bottom: " + bottom + " ev: " + timeRange + " " + ev.title);
@@ -2409,10 +2469,10 @@ public class CalendarView extends View
| DateUtils.FORMAT_SHOW_WEEKDAY | DateUtils.FORMAT_ABBREV_ALL
| DateUtils.FORMAT_CAP_NOON_MIDNIGHT;
}
- if (DateFormat.is24HourFormat(mParentActivity)) {
+ if (DateFormat.is24HourFormat(mContext)) {
flags |= DateUtils.FORMAT_24HOUR;
}
- String timeRange = DateUtils.formatDateRange(mParentActivity,
+ String timeRange = DateUtils.formatDateRange(mContext,
event.startMillis, event.endMillis, flags);
TextView timeView = (TextView) mPopupView.findViewById(R.id.time);
timeView.setText(timeRange);
@@ -2530,12 +2590,12 @@ public class CalendarView extends View
// if we haven't already changed the title.
if (distanceX >= HORIZONTAL_SCROLL_THRESHOLD) {
if (mPreviousDistanceX < HORIZONTAL_SCROLL_THRESHOLD) {
- CalendarView view = mParentActivity.getNextView();
+ CalendarView view = (CalendarView) mViewSwitcher.getNextView();
mTitleTextView.setText(view.mDateRange);
}
} else if (distanceX <= -HORIZONTAL_SCROLL_THRESHOLD) {
if (mPreviousDistanceX > -HORIZONTAL_SCROLL_THRESHOLD) {
- CalendarView view = mParentActivity.getNextView();
+ CalendarView view = (CalendarView) mViewSwitcher.getNextView();
mTitleTextView.setText(view.mDateRange);
}
} else {
@@ -2577,9 +2637,9 @@ public class CalendarView extends View
if ((distanceX >= HORIZONTAL_SCROLL_THRESHOLD) && (distanceX > distanceY)) {
boolean switchForward = initNextView(deltaX);
- CalendarView view = mParentActivity.getNextView();
+ CalendarView view = (CalendarView) mViewSwitcher.getNextView();
mTitleTextView.setText(view.mDateRange);
- mParentActivity.switchViews(switchForward, mViewStartX, mViewWidth);
+ switchViews(switchForward, mViewStartX, mViewWidth);
mViewStartX = 0;
return;
}
@@ -2591,7 +2651,7 @@ public class CalendarView extends View
private boolean initNextView(int deltaX) {
// Change the view to the previous day or week
- CalendarView view = mParentActivity.getNextView();
+ CalendarView view = (CalendarView) mViewSwitcher.getNextView();
Time date = view.mBaseDate;
date.set(mBaseDate);
boolean switchForward;
@@ -2617,15 +2677,15 @@ public class CalendarView extends View
switch (action) {
case MotionEvent.ACTION_DOWN:
- mParentActivity.mGestureDetector.onTouchEvent(ev);
+ mGestureDetector.onTouchEvent(ev);
return true;
case MotionEvent.ACTION_MOVE:
- mParentActivity.mGestureDetector.onTouchEvent(ev);
+ mGestureDetector.onTouchEvent(ev);
return true;
case MotionEvent.ACTION_UP:
- mParentActivity.mGestureDetector.onTouchEvent(ev);
+ mGestureDetector.onTouchEvent(ev);
if (mOnFlingCalled) {
return true;
}
@@ -2633,7 +2693,7 @@ public class CalendarView extends View
mTouchMode = TOUCH_MODE_INITIAL_STATE;
if (Math.abs(mViewStartX) > HORIZONTAL_SCROLL_THRESHOLD) {
// The user has gone beyond the threshold so switch views
- mParentActivity.switchViews(mViewStartX > 0, mViewStartX, mViewWidth);
+ switchViews(mViewStartX > 0, mViewStartX, mViewWidth);
mViewStartX = 0;
return true;
} else {
@@ -2659,13 +2719,13 @@ public class CalendarView extends View
// This case isn't expected to happen.
case MotionEvent.ACTION_CANCEL:
- mParentActivity.mGestureDetector.onTouchEvent(ev);
+ mGestureDetector.onTouchEvent(ev);
mScrolling = false;
resetSelectedHour();
return true;
default:
- if (mParentActivity.mGestureDetector.onTouchEvent(ev)) {
+ if (mGestureDetector.onTouchEvent(ev)) {
return true;
}
return super.onTouchEvent(ev);
@@ -2688,7 +2748,7 @@ public class CalendarView extends View
int flags = DateUtils.FORMAT_SHOW_TIME
| DateUtils.FORMAT_CAP_NOON_MIDNIGHT
| DateUtils.FORMAT_SHOW_WEEKDAY;
- final String title = DateUtils.formatDateTime(mParentActivity, startMillis, flags);
+ final String title = DateUtils.formatDateTime(mContext, startMillis, flags);
menu.setHeaderTitle(title);
int numSelectedEvents = mSelectedEvents.size();
@@ -2702,7 +2762,7 @@ public class CalendarView extends View
item.setOnMenuItemClickListener(mContextMenuHandler);
item.setIcon(android.R.drawable.ic_menu_info_details);
- int accessLevel = getEventAccessLevel(mParentActivity, mSelectedEvent);
+ int accessLevel = getEventAccessLevel(mContext, mSelectedEvent);
if (accessLevel == ACCESS_LEVEL_EDIT) {
item = menu.add(0, MenuHelper.MENU_EVENT_EDIT, 0, R.string.event_edit);
item.setOnMenuItemClickListener(mContextMenuHandler);
@@ -2738,7 +2798,7 @@ public class CalendarView extends View
item.setOnMenuItemClickListener(mContextMenuHandler);
item.setIcon(android.R.drawable.ic_menu_info_details);
- int accessLevel = getEventAccessLevel(mParentActivity, mSelectedEvent);
+ int accessLevel = getEventAccessLevel(mContext, mSelectedEvent);
if (accessLevel == ACCESS_LEVEL_EDIT) {
item = menu.add(0, MenuHelper.MENU_EVENT_EDIT, 0, R.string.event_edit);
item.setOnMenuItemClickListener(mContextMenuHandler);
@@ -2797,10 +2857,10 @@ public class CalendarView extends View
Uri eventUri = ContentUris.withAppendedId(Events.CONTENT_URI, id);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(eventUri);
- intent.setClassName(mParentActivity, EventInfoActivity.class.getName());
+ intent.setClassName(mContext, EventInfoActivity.class.getName());
intent.putExtra(EVENT_BEGIN_TIME, mSelectedEvent.startMillis);
intent.putExtra(EVENT_END_TIME, mSelectedEvent.endMillis);
- mParentActivity.startActivity(intent);
+ mContext.startActivity(intent);
}
break;
}
@@ -2810,32 +2870,32 @@ public class CalendarView extends View
Uri eventUri = ContentUris.withAppendedId(Events.CONTENT_URI, id);
Intent intent = new Intent(Intent.ACTION_EDIT);
intent.setData(eventUri);
- intent.setClassName(mParentActivity, EditEventActivity.class.getName());
+ intent.setClassName(mContext, EditEventActivity.class.getName());
intent.putExtra(EVENT_BEGIN_TIME, mSelectedEvent.startMillis);
intent.putExtra(EVENT_END_TIME, mSelectedEvent.endMillis);
- mParentActivity.startActivity(intent);
+ mContext.startActivity(intent);
}
break;
}
case MenuHelper.MENU_DAY: {
long startMillis = getSelectedTimeInMillis();
- Utils.startActivity(mParentActivity, DayActivity.class.getName(), startMillis);
+ Utils.startActivity(mContext, DayActivity.class.getName(), startMillis);
break;
}
case MenuHelper.MENU_AGENDA: {
long startMillis = getSelectedTimeInMillis();
- Utils.startActivity(mParentActivity, AgendaActivity.class.getName(), startMillis);
+ Utils.startActivity(mContext, AgendaActivity.class.getName(), startMillis);
break;
}
case MenuHelper.MENU_EVENT_CREATE: {
long startMillis = getSelectedTimeInMillis();
long endMillis = startMillis + DateUtils.HOUR_IN_MILLIS;
Intent intent = new Intent(Intent.ACTION_VIEW);
- intent.setClassName(mParentActivity, EditEventActivity.class.getName());
+ intent.setClassName(mContext, EditEventActivity.class.getName());
intent.putExtra(EVENT_BEGIN_TIME, startMillis);
intent.putExtra(EVENT_END_TIME, endMillis);
intent.putExtra(EditEventHelper.EVENT_ALL_DAY, mSelectionAllDay);
- mParentActivity.startActivity(intent);
+ mContext.startActivity(intent);
break;
}
case MenuHelper.MENU_EVENT_DELETE: {
@@ -2948,7 +3008,7 @@ public class CalendarView extends View
// for (Event ev : mSelectedEvents) {
// int flags = DateUtils.FORMAT_SHOW_TIME | DateUtils.FORMAT_ABBREV_ALL
// | DateUtils.FORMAT_CAP_NOON_MIDNIGHT;
-// String timeRange = formatDateRange(mParentActivity,
+// String timeRange = formatDateRange(mContext,
// ev.startMillis, ev.endMillis, flags);
//
// Log.i("Cal", " " + timeRange + " " + ev.title);
@@ -3220,5 +3280,36 @@ public class CalendarView extends View
invalidate();
}
}
+
+ class CalendarGestureListener extends GestureDetector.SimpleOnGestureListener {
+ @Override
+ public boolean onSingleTapUp(MotionEvent ev) {
+ CalendarView.this.doSingleTapUp(ev);
+ return true;
+ }
+
+ @Override
+ public void onLongPress(MotionEvent ev) {
+ CalendarView.this.doLongPress(ev);
+ }
+
+ @Override
+ public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
+ CalendarView.this.doScroll(e1, e2, distanceX, distanceY);
+ return true;
+ }
+
+ @Override
+ public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
+ CalendarView.this.doFling(e1, e2, velocityX, velocityY);
+ return true;
+ }
+
+ @Override
+ public boolean onDown(MotionEvent ev) {
+ CalendarView.this.doDown(ev);
+ return true;
+ }
+ }
}
diff --git a/src/com/android/calendar/DayActivity.java b/src/com/android/calendar/DayActivity.java
index 9a922636..29e33897 100644
--- a/src/com/android/calendar/DayActivity.java
+++ b/src/com/android/calendar/DayActivity.java
@@ -16,48 +16,15 @@
package com.android.calendar;
+import android.app.Activity;
+import android.app.Fragment;
import android.os.Bundle;
-import android.view.View;
-import android.view.ViewGroup.LayoutParams;
-import android.widget.ProgressBar;
-import android.widget.ViewSwitcher;
-
-public class DayActivity extends CalendarActivity implements ViewSwitcher.ViewFactory {
- /**
- * The view id used for all the views we create. It's OK to have all child
- * views have the same ID. This ID is used to pick which view receives
- * focus when a view hierarchy is saved / restore
- */
- private static final int VIEW_ID = 1;
+public class DayActivity extends Activity {
@Override
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
- setContentView(R.layout.day_activity);
-
- mSelectedDay = Utils.timeFromIntent(getIntent());
- mViewSwitcher = (ViewSwitcher) findViewById(R.id.switcher);
- mViewSwitcher.setFactory(this);
- mViewSwitcher.getCurrentView().requestFocus();
- mProgressBar = (ProgressBar) findViewById(R.id.progress_circular);
- }
-
- public View makeView() {
- DayView view = new DayView(this);
- view.setId(VIEW_ID);
- view.setLayoutParams(new ViewSwitcher.LayoutParams(
- LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
- view.setSelectedDay(mSelectedDay);
- return view;
- }
-
- @Override
- protected void onPause() {
- super.onPause();
- CalendarView view = (CalendarView) mViewSwitcher.getCurrentView();
- mSelectedDay = view.getSelectedDay();
-
- // Record Day View as the (new) default detailed view.
- Utils.setDefaultView(this, CalendarApplication.DAY_VIEW_ID);
+ Fragment f = new DayFragment();
+ openFragmentTransaction().add(android.R.id.content, f).commit();
}
}
diff --git a/src/com/android/calendar/DayFragment.java b/src/com/android/calendar/DayFragment.java
new file mode 100644
index 00000000..990a452e
--- /dev/null
+++ b/src/com/android/calendar/DayFragment.java
@@ -0,0 +1,300 @@
+/*
+ * Copyright (C) 2007 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.calendar;
+
+import dalvik.system.VMRuntime;
+
+import android.app.Fragment;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.database.ContentObserver;
+import android.os.Bundle;
+import android.os.Handler;
+import android.text.format.Time;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.ViewGroup.LayoutParams;
+import android.view.animation.Animation;
+import android.view.animation.AnimationUtils;
+import android.widget.ProgressBar;
+import android.widget.ViewSwitcher;
+import android.widget.ViewSwitcher.ViewFactory;
+
+/**
+ * This is the base class for Day and Week Activities.
+ */
+public class DayFragment extends Fragment implements CalendarController, ViewFactory {
+ /**
+ * The view id used for all the views we create. It's OK to have all child
+ * views have the same ID. This ID is used to pick which view receives
+ * focus when a view hierarchy is saved / restore
+ */
+ private static final int VIEW_ID = 1;
+
+ private static final long INITIAL_HEAP_SIZE = 4*1024*1024;
+
+ protected static final String BUNDLE_KEY_RESTORE_TIME = "key_restore_time";
+
+ protected ProgressBar mProgressBar;
+ protected ViewSwitcher mViewSwitcher;
+ protected Animation mInAnimationForward;
+ protected Animation mOutAnimationForward;
+ protected Animation mInAnimationBackward;
+ protected Animation mOutAnimationBackward;
+ EventLoader mEventLoader;
+
+ Time mSelectedDay = new Time();
+
+ /**
+ * Listens for intent broadcasts
+ */
+ private BroadcastReceiver mIntentReceiver = new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ String action = intent.getAction();
+ if (action.equals(Intent.ACTION_TIME_CHANGED)
+ || action.equals(Intent.ACTION_DATE_CHANGED)
+ || action.equals(Intent.ACTION_TIMEZONE_CHANGED)) {
+ eventsChanged();
+ }
+ }
+ };
+
+ // Create an observer so that we can update the views whenever a
+ // Calendar event changes.
+ private ContentObserver mObserver = new ContentObserver(new Handler())
+ {
+ @Override
+ public boolean deliverSelfNotifications() {
+ return true;
+ }
+
+ @Override
+ public void onChange(boolean selfChange) {
+ eventsChanged();
+ }
+ };
+
+ @Override
+ public void onCreate(Bundle icicle) {
+ super.onCreate(icicle);
+
+ // Eliminate extra GCs during startup by setting the initial heap size to 4MB.
+ // TODO: We should restore the old heap size once the activity reaches the idle state
+ VMRuntime.getRuntime().setMinimumHeapSize(INITIAL_HEAP_SIZE);
+
+// setDefaultKeyMode(DEFAULT_KEYS_SHORTCUT);
+ Context context = getActivity();
+
+ mInAnimationForward = AnimationUtils.loadAnimation(context, R.anim.slide_left_in);
+ mOutAnimationForward = AnimationUtils.loadAnimation(context, R.anim.slide_left_out);
+ mInAnimationBackward = AnimationUtils.loadAnimation(context, R.anim.slide_right_in);
+ mOutAnimationBackward = AnimationUtils.loadAnimation(context, R.anim.slide_right_out);
+
+ mEventLoader = new EventLoader(context);
+ }
+
+// @Override
+// public void onRestoreInstanceState(Bundle savedInstanceState) {
+// super.onRestoreInstanceState(savedInstanceState);
+//
+// CalendarView view = (CalendarView) mViewSwitcher.getCurrentView();
+// Time time = new Time();
+// time.set(savedInstanceState.getLong(BUNDLE_KEY_RESTORE_TIME));
+// view.setSelectedDay(time);
+// }
+//
+// @Override
+// public void onNewIntent(Intent intent) {
+// long timeMillis = Utils.timeFromIntentInMillis(intent);
+// if (timeMillis > 0) {
+// Time time = new Time();
+// time.set(timeMillis);
+// goTo(time, false);
+// }
+// }
+
+ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
+ View v = inflater.inflate(R.layout.week_activity, null);
+
+ mViewSwitcher = (ViewSwitcher) v.findViewById(R.id.switcher);
+ mViewSwitcher.setFactory(this);
+ mViewSwitcher.getCurrentView().requestFocus();
+
+ return v;
+ }
+
+ public View makeView() {
+ CalendarView view = new CalendarView(getActivity(), this, mViewSwitcher, mEventLoader);
+ view.setId(VIEW_ID);
+ view.setLayoutParams(new ViewSwitcher.LayoutParams(
+ LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
+ view.setSelectedDay(mSelectedDay);
+ return view;
+ }
+
+ @Override
+ public void onResume() {
+ super.onResume();
+ mEventLoader.startBackgroundThread();
+ eventsChanged();
+ CalendarView view = (CalendarView) mViewSwitcher.getCurrentView();
+ view.updateIs24HourFormat();
+ view.restartCurrentTimeUpdates();
+
+ view = (CalendarView) mViewSwitcher.getNextView();
+ view.updateIs24HourFormat();
+
+ // Register for Intent broadcasts
+// IntentFilter filter = new IntentFilter();
+//
+// filter.addAction(Intent.ACTION_TIME_CHANGED);
+// filter.addAction(Intent.ACTION_DATE_CHANGED);
+// filter.addAction(Intent.ACTION_TIMEZONE_CHANGED);
+// registerReceiver(mIntentReceiver, filter);
+
+// mContentResolver.registerContentObserver(Calendar.Events.CONTENT_URI,
+// true, mObserver);
+ }
+
+ @Override
+ public void onSaveInstanceState(Bundle outState) {
+ super.onSaveInstanceState(outState);
+
+ outState.putLong(BUNDLE_KEY_RESTORE_TIME, getSelectedTimeInMillis());
+ }
+
+ @Override
+ public void onPause() {
+ super.onPause();
+// mContentResolver.unregisterContentObserver(mObserver);
+// unregisterReceiver(mIntentReceiver);
+
+ CalendarView view = (CalendarView) mViewSwitcher.getCurrentView();
+ view.cleanup();
+ view = (CalendarView) mViewSwitcher.getNextView();
+ view.cleanup();
+ mEventLoader.stopBackgroundThread();
+ }
+
+ void startProgressSpinner() {
+ // start the progress spinner
+ mProgressBar.setVisibility(View.VISIBLE);
+ }
+
+ void stopProgressSpinner() {
+ // stop the progress spinner
+ mProgressBar.setVisibility(View.GONE);
+ }
+
+ /* Navigator interface methods */
+ public void goTo(Time time, boolean animate) {
+ if (animate) {
+ CalendarView current = (CalendarView) mViewSwitcher.getCurrentView();
+ if (current.getSelectedTime().before(time)) {
+ mViewSwitcher.setInAnimation(mInAnimationForward);
+ mViewSwitcher.setOutAnimation(mOutAnimationForward);
+ } else {
+ mViewSwitcher.setInAnimation(mInAnimationBackward);
+ mViewSwitcher.setOutAnimation(mOutAnimationBackward);
+ }
+ }
+
+ CalendarView next = (CalendarView) mViewSwitcher.getNextView();
+ next.setSelectedDay(time);
+ next.reloadEvents();
+ mViewSwitcher.showNext();
+ next.requestFocus();
+ }
+
+ /**
+ * Returns the selected time in milliseconds. The milliseconds are measured
+ * in UTC milliseconds from the epoch and uniquely specifies any selectable
+ * time.
+ *
+ * @return the selected time in milliseconds
+ */
+ public long getSelectedTimeInMillis() {
+ CalendarView view = (CalendarView) mViewSwitcher.getCurrentView();
+ return view.getSelectedTimeInMillis();
+ }
+
+ public long getSelectedTime() {
+ return getSelectedTimeInMillis();
+ }
+
+ public void goToToday() {
+ mSelectedDay.set(System.currentTimeMillis());
+ CalendarView view = (CalendarView) mViewSwitcher.getCurrentView();
+ view.setSelectedDay(mSelectedDay);
+ view.reloadEvents();
+ }
+
+ public boolean getAllDay() {
+ CalendarView view = (CalendarView) mViewSwitcher.getCurrentView();
+ return view.mSelectionAllDay;
+ }
+
+ public void eventsChanged() {
+ CalendarView view = (CalendarView) mViewSwitcher.getCurrentView();
+ view.clearCachedEvents();
+ view.reloadEvents();
+ }
+
+ Event getSelectedEvent() {
+ CalendarView view = (CalendarView) mViewSwitcher.getCurrentView();
+ return view.getSelectedEvent();
+ }
+
+ boolean isEventSelected() {
+ CalendarView view = (CalendarView) mViewSwitcher.getCurrentView();
+ return view.isEventSelected();
+ }
+
+ Event getNewEvent() {
+ CalendarView view = (CalendarView) mViewSwitcher.getCurrentView();
+ return view.getNewEvent();
+ }
+
+ public CalendarView getNextView() {
+ return (CalendarView) mViewSwitcher.getNextView();
+ }
+
+// @Override
+// public boolean onPrepareOptionsMenu(Menu menu) {
+// MenuHelper.onPrepareOptionsMenu(this, menu);
+// return super.onPrepareOptionsMenu(menu);
+// }
+//
+// @Override
+// public boolean onCreateOptionsMenu(Menu menu) {
+// if (! MenuHelper.onCreateOptionsMenu(menu)) {
+// return false;
+// }
+// return super.onCreateOptionsMenu(menu);
+// }
+//
+// @Override
+// public boolean onOptionsItemSelected(MenuItem item) {
+// if (MenuHelper.onOptionsItemSelected(this, item, this)) {
+// return true;
+// }
+// return super.onOptionsItemSelected(item);
+// }
+}
diff --git a/src/com/android/calendar/DayView.java b/src/com/android/calendar/DayView.java
index a24b51b5..8d00e533 100644
--- a/src/com/android/calendar/DayView.java
+++ b/src/com/android/calendar/DayView.java
@@ -16,12 +16,16 @@
package com.android.calendar;
+import android.content.Context;
+import android.widget.ViewSwitcher;
+
public class DayView extends CalendarView {
private static final int CELL_MARGIN = 10;
- public DayView(CalendarActivity activity) {
- super(activity);
+ public DayView(Context activity, CalendarController controller,
+ ViewSwitcher viewSwitcher, EventLoader eventLoader) {
+ super(activity, controller, viewSwitcher, eventLoader);
init();
}
diff --git a/src/com/android/calendar/WeekActivity.java b/src/com/android/calendar/WeekActivity.java
index 5bfdd3a2..7650790e 100644
--- a/src/com/android/calendar/WeekActivity.java
+++ b/src/com/android/calendar/WeekActivity.java
@@ -16,77 +16,15 @@
package com.android.calendar;
-import android.content.Intent;
-import android.content.SharedPreferences;
+import android.app.Activity;
+import android.app.Fragment;
import android.os.Bundle;
-import android.preference.PreferenceManager;
-import android.text.format.Time;
-import android.view.View;
-import android.view.ViewGroup.LayoutParams;
-import android.widget.ProgressBar;
-import android.widget.ViewSwitcher;
-
-public class WeekActivity extends CalendarActivity implements ViewSwitcher.ViewFactory {
- /**
- * The view id used for all the views we create. It's OK to have all child
- * views have the same ID. This ID is used to pick which view receives
- * focus when a view hierarchy is saved / restore
- */
- private static final int VIEW_ID = 1;
+public class WeekActivity extends Activity {
@Override
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
-
- setContentView(R.layout.week_activity);
-
- mSelectedDay = Utils.timeFromIntent(getIntent());
- mViewSwitcher = (ViewSwitcher) findViewById(R.id.switcher);
- mViewSwitcher.setFactory(this);
- mViewSwitcher.getCurrentView().requestFocus();
- mProgressBar = (ProgressBar) findViewById(R.id.progress_circular);
- }
-
- public View makeView() {
- WeekView wv = new WeekView(this);
- wv.setId(VIEW_ID);
- wv.setLayoutParams(new ViewSwitcher.LayoutParams(
- LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
- wv.setSelectedDay(mSelectedDay);
- return wv;
- }
-
- @Override
- protected void onNewIntent(Intent intent) {
- long timeMillis = Utils.timeFromIntentInMillis(intent);
- if (timeMillis > 0) {
- Time time = new Time();
- time.set(timeMillis);
- goTo(time, false);
- }
- }
-
- @Override
- protected void onResume() {
- super.onResume();
-
- CalendarView view1 = (CalendarView) mViewSwitcher.getCurrentView();
- CalendarView view2 = (CalendarView) mViewSwitcher.getNextView();
- SharedPreferences prefs = CalendarPreferenceActivity.getSharedPreferences(this);
-
- String str = prefs.getString(CalendarPreferenceActivity.KEY_DETAILED_VIEW,
- CalendarPreferenceActivity.DEFAULT_DETAILED_VIEW);
- view1.setDetailedView(str);
- view2.setDetailedView(str);
- }
-
- @Override
- protected void onPause() {
- super.onPause();
- CalendarView view = (CalendarView) mViewSwitcher.getCurrentView();
- mSelectedDay = view.getSelectedDay();
-
- // Record Week View as the (new) start view
- Utils.setDefaultView(this, CalendarApplication.WEEK_VIEW_ID);
+ Fragment f = new DayFragment();
+ openFragmentTransaction().add(android.R.id.content, f).commit();
}
}
diff --git a/src/com/android/calendar/WeekView.java b/src/com/android/calendar/WeekView.java
index ebff44ce..9204c78d 100644
--- a/src/com/android/calendar/WeekView.java
+++ b/src/com/android/calendar/WeekView.java
@@ -16,12 +16,16 @@
package com.android.calendar;
+import android.content.Context;
+import android.widget.ViewSwitcher;
+
public class WeekView extends CalendarView {
private static final int CELL_MARGIN = 0;
- public WeekView(CalendarActivity activity) {
- super(activity);
+ public WeekView(Context activity, CalendarController controller,
+ ViewSwitcher viewSwitcher, EventLoader eventLoader) {
+ super(activity, controller, viewSwitcher, eventLoader);
init();
}