summaryrefslogtreecommitdiff
path: root/src/com/android/calendar/month/SimpleWeeksAdapter.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/calendar/month/SimpleWeeksAdapter.java')
-rw-r--r--src/com/android/calendar/month/SimpleWeeksAdapter.java302
1 files changed, 0 insertions, 302 deletions
diff --git a/src/com/android/calendar/month/SimpleWeeksAdapter.java b/src/com/android/calendar/month/SimpleWeeksAdapter.java
deleted file mode 100644
index d29b2622..00000000
--- a/src/com/android/calendar/month/SimpleWeeksAdapter.java
+++ /dev/null
@@ -1,302 +0,0 @@
-/*
- * Copyright (C) 2010 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.month;
-
-// TODO Remove calendar imports when the required methods have been
-// refactored into the public api
-import com.android.calendar.CalendarController;
-import com.android.calendar.Utils;
-
-import android.content.Context;
-import android.text.format.Time;
-import android.util.Log;
-import android.view.GestureDetector;
-import android.view.MotionEvent;
-import android.view.View;
-import android.view.View.OnTouchListener;
-import android.view.ViewGroup;
-import android.widget.AbsListView.LayoutParams;
-import android.widget.BaseAdapter;
-import android.widget.ListView;
-
-import java.util.Calendar;
-import java.util.HashMap;
-import java.util.Locale;
-
-/**
- * <p>
- * This is a specialized adapter for creating a list of weeks with selectable
- * days. It can be configured to display the week number, start the week on a
- * given day, show a reduced number of days, or display an arbitrary number of
- * weeks at a time. See {@link SimpleDayPickerFragment} for usage.
- * </p>
- */
-public class SimpleWeeksAdapter extends BaseAdapter implements OnTouchListener {
-
- private static final String TAG = "MonthByWeek";
-
- /**
- * The number of weeks to display at a time.
- */
- public static final String WEEK_PARAMS_NUM_WEEKS = "num_weeks";
- /**
- * Which month should be in focus currently.
- */
- public static final String WEEK_PARAMS_FOCUS_MONTH = "focus_month";
- /**
- * Whether the week number should be shown. Non-zero to show them.
- */
- public static final String WEEK_PARAMS_SHOW_WEEK = "week_numbers";
- /**
- * Which day the week should start on. {@link Time#SUNDAY} through
- * {@link Time#SATURDAY}.
- */
- public static final String WEEK_PARAMS_WEEK_START = "week_start";
- /**
- * The Julian day to highlight as selected.
- */
- public static final String WEEK_PARAMS_JULIAN_DAY = "selected_day";
- /**
- * How many days of the week to display [1-7].
- */
- public static final String WEEK_PARAMS_DAYS_PER_WEEK = "days_per_week";
-
- protected static final int WEEK_COUNT = CalendarController.MAX_CALENDAR_WEEK
- - CalendarController.MIN_CALENDAR_WEEK;
- protected static int DEFAULT_NUM_WEEKS = 6;
- protected static int DEFAULT_MONTH_FOCUS = 0;
- protected static int DEFAULT_DAYS_PER_WEEK = 7;
- protected static int DEFAULT_WEEK_HEIGHT = 32;
- protected static int WEEK_7_OVERHANG_HEIGHT = 7;
-
- protected static float mScale = 0;
- protected Context mContext;
- // The day to highlight as selected
- protected Time mSelectedDay;
- // The week since 1970 that the selected day is in
- protected int mSelectedWeek;
- // When the week starts; numbered like Time.<WEEKDAY> (e.g. SUNDAY=0).
- protected int mFirstDayOfWeek;
- protected boolean mShowWeekNumber = false;
- protected GestureDetector mGestureDetector;
- protected int mNumWeeks = DEFAULT_NUM_WEEKS;
- protected int mDaysPerWeek = DEFAULT_DAYS_PER_WEEK;
- protected int mFocusMonth = DEFAULT_MONTH_FOCUS;
-
- public SimpleWeeksAdapter(Context context, HashMap<String, Integer> params) {
- mContext = context;
-
- // Get default week start based on locale, subtracting one for use with android Time.
- Calendar cal = Calendar.getInstance(Locale.getDefault());
- mFirstDayOfWeek = cal.getFirstDayOfWeek() - 1;
-
- if (mScale == 0) {
- mScale = context.getResources().getDisplayMetrics().density;
- if (mScale != 1) {
- WEEK_7_OVERHANG_HEIGHT *= mScale;
- }
- }
- init();
- updateParams(params);
- }
-
- /**
- * Set up the gesture detector and selected time
- */
- protected void init() {
- mGestureDetector = new GestureDetector(mContext, new CalendarGestureListener());
- mSelectedDay = new Time();
- mSelectedDay.setToNow();
- }
-
- /**
- * Parse the parameters and set any necessary fields. See
- * {@link #WEEK_PARAMS_NUM_WEEKS} for parameter details.
- *
- * @param params A list of parameters for this adapter
- */
- public void updateParams(HashMap<String, Integer> params) {
- if (params == null) {
- Log.e(TAG, "WeekParameters are null! Cannot update adapter.");
- return;
- }
- if (params.containsKey(WEEK_PARAMS_FOCUS_MONTH)) {
- mFocusMonth = params.get(WEEK_PARAMS_FOCUS_MONTH);
- }
- if (params.containsKey(WEEK_PARAMS_FOCUS_MONTH)) {
- mNumWeeks = params.get(WEEK_PARAMS_NUM_WEEKS);
- }
- if (params.containsKey(WEEK_PARAMS_SHOW_WEEK)) {
- mShowWeekNumber = params.get(WEEK_PARAMS_SHOW_WEEK) != 0;
- }
- if (params.containsKey(WEEK_PARAMS_WEEK_START)) {
- mFirstDayOfWeek = params.get(WEEK_PARAMS_WEEK_START);
- }
- if (params.containsKey(WEEK_PARAMS_JULIAN_DAY)) {
- int julianDay = params.get(WEEK_PARAMS_JULIAN_DAY);
- mSelectedDay.setJulianDay(julianDay);
- mSelectedWeek = Utils.getWeeksSinceEpochFromJulianDay(julianDay, mFirstDayOfWeek);
- }
- if (params.containsKey(WEEK_PARAMS_DAYS_PER_WEEK)) {
- mDaysPerWeek = params.get(WEEK_PARAMS_DAYS_PER_WEEK);
- }
- refresh();
- }
-
- /**
- * Updates the selected day and related parameters.
- *
- * @param selectedTime The time to highlight
- */
- public void setSelectedDay(Time selectedTime) {
- mSelectedDay.set(selectedTime);
- long millis = mSelectedDay.normalize(true);
- mSelectedWeek = Utils.getWeeksSinceEpochFromJulianDay(
- Time.getJulianDay(millis, mSelectedDay.gmtoff), mFirstDayOfWeek);
- notifyDataSetChanged();
- }
-
- /**
- * Returns the currently highlighted day
- *
- * @return
- */
- public Time getSelectedDay() {
- return mSelectedDay;
- }
-
- /**
- * updates any config options that may have changed and refreshes the view
- */
- protected void refresh() {
- notifyDataSetChanged();
- }
-
- @Override
- public int getCount() {
- return WEEK_COUNT;
- }
-
- @Override
- public Object getItem(int position) {
- return null;
- }
-
- @Override
- public long getItemId(int position) {
- return position;
- }
-
- @SuppressWarnings("unchecked")
- @Override
- public View getView(int position, View convertView, ViewGroup parent) {
- SimpleWeekView v;
- HashMap<String, Integer> drawingParams = null;
- if (convertView != null) {
- v = (SimpleWeekView) convertView;
- // We store the drawing parameters in the view so it can be recycled
- drawingParams = (HashMap<String, Integer>) v.getTag();
- } else {
- v = new SimpleWeekView(mContext);
- // Set up the new view
- LayoutParams params = new LayoutParams(
- LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
- v.setLayoutParams(params);
- v.setClickable(true);
- v.setOnTouchListener(this);
- }
- if (drawingParams == null) {
- drawingParams = new HashMap<String, Integer>();
- }
- drawingParams.clear();
-
- int selectedDay = -1;
- if (mSelectedWeek == position) {
- selectedDay = mSelectedDay.weekDay;
- }
-
- // pass in all the view parameters
- drawingParams.put(SimpleWeekView.VIEW_PARAMS_HEIGHT,
- (parent.getHeight() - WEEK_7_OVERHANG_HEIGHT) / mNumWeeks);
- drawingParams.put(SimpleWeekView.VIEW_PARAMS_SELECTED_DAY, selectedDay);
- drawingParams.put(SimpleWeekView.VIEW_PARAMS_SHOW_WK_NUM, mShowWeekNumber ? 1 : 0);
- drawingParams.put(SimpleWeekView.VIEW_PARAMS_WEEK_START, mFirstDayOfWeek);
- drawingParams.put(SimpleWeekView.VIEW_PARAMS_NUM_DAYS, mDaysPerWeek);
- drawingParams.put(SimpleWeekView.VIEW_PARAMS_WEEK, position);
- drawingParams.put(SimpleWeekView.VIEW_PARAMS_FOCUS_MONTH, mFocusMonth);
- v.setWeekParams(drawingParams, mSelectedDay.timezone);
- v.invalidate();
-
- return v;
- }
-
- /**
- * Changes which month is in focus and updates the view.
- *
- * @param month The month to show as in focus [0-11]
- */
- public void updateFocusMonth(int month) {
- mFocusMonth = month;
- notifyDataSetChanged();
- }
-
- @Override
- public boolean onTouch(View v, MotionEvent event) {
- if (mGestureDetector.onTouchEvent(event)) {
- SimpleWeekView view = (SimpleWeekView) v;
- Time day = ((SimpleWeekView)v).getDayFromLocation(event.getX());
- if (Log.isLoggable(TAG, Log.DEBUG)) {
- Log.d(TAG, "Touched day at Row=" + view.mWeek + " day=" + day.toString());
- }
- if (day != null) {
- onDayTapped(day);
- }
- return true;
- }
- return false;
- }
-
- /**
- * Maintains the same hour/min/sec but moves the day to the tapped day.
- *
- * @param day The day that was tapped
- */
- protected void onDayTapped(Time day) {
- day.hour = mSelectedDay.hour;
- day.minute = mSelectedDay.minute;
- day.second = mSelectedDay.second;
- setSelectedDay(day);
- }
-
-
- /**
- * This is here so we can identify single tap events and set the selected
- * day correctly
- */
- protected class CalendarGestureListener extends GestureDetector.SimpleOnGestureListener {
- @Override
- public boolean onSingleTapUp(MotionEvent e) {
- return true;
- }
- }
-
- ListView mListView;
-
- public void setListView(ListView lv) {
- mListView = lv;
- }
-}