summaryrefslogtreecommitdiff
path: root/core/java/android/widget/DatePicker.java
diff options
context:
space:
mode:
authorThe Android Open Source Project <initial-contribution@android.com>2009-03-03 18:28:45 -0800
committerThe Android Open Source Project <initial-contribution@android.com>2009-03-03 18:28:45 -0800
commitd83a98f4ce9cfa908f5c54bbd70f03eec07e7553 (patch)
tree4b825dc642cb6eb9a060e54bf8d69288fbee4904 /core/java/android/widget/DatePicker.java
parent076357b8567458d4b6dfdcf839ef751634cd2bfb (diff)
auto import from //depot/cupcake/@135843
Diffstat (limited to 'core/java/android/widget/DatePicker.java')
-rw-r--r--core/java/android/widget/DatePicker.java321
1 files changed, 0 insertions, 321 deletions
diff --git a/core/java/android/widget/DatePicker.java b/core/java/android/widget/DatePicker.java
deleted file mode 100644
index 54f27072b4f9..000000000000
--- a/core/java/android/widget/DatePicker.java
+++ /dev/null
@@ -1,321 +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 android.widget;
-
-import android.annotation.Widget;
-import android.content.Context;
-import android.content.res.TypedArray;
-import android.os.Parcel;
-import android.os.Parcelable;
-import android.text.format.DateFormat;
-import android.util.AttributeSet;
-import android.util.SparseArray;
-import android.view.LayoutInflater;
-
-import com.android.internal.R;
-import com.android.internal.widget.NumberPicker;
-import com.android.internal.widget.NumberPicker.OnChangedListener;
-
-import java.text.DateFormatSymbols;
-import java.util.Calendar;
-
-/**
- * A view for selecting a month / year / day based on a calendar like layout.
- *
- * For a dialog using this view, see {@link android.app.DatePickerDialog}.
- */
-@Widget
-public class DatePicker extends FrameLayout {
-
- private static final int DEFAULT_START_YEAR = 1900;
- private static final int DEFAULT_END_YEAR = 2100;
-
- /* UI Components */
- private final NumberPicker mDayPicker;
- private final NumberPicker mMonthPicker;
- private final NumberPicker mYearPicker;
-
- /**
- * How we notify users the date has changed.
- */
- private OnDateChangedListener mOnDateChangedListener;
-
- private int mDay;
- private int mMonth;
- private int mYear;
-
- /**
- * The callback used to indicate the user changes the date.
- */
- public interface OnDateChangedListener {
-
- /**
- * @param view The view associated with this listener.
- * @param year The year that was set.
- * @param monthOfYear The month that was set (0-11) for compatibility
- * with {@link java.util.Calendar}.
- * @param dayOfMonth The day of the month that was set.
- */
- void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth);
- }
-
- public DatePicker(Context context) {
- this(context, null);
- }
-
- public DatePicker(Context context, AttributeSet attrs) {
- this(context, attrs, 0);
- }
-
- public DatePicker(Context context, AttributeSet attrs, int defStyle) {
- super(context, attrs, defStyle);
-
- LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- inflater.inflate(R.layout.date_picker, this, true);
-
- mDayPicker = (NumberPicker) findViewById(R.id.day);
- mDayPicker.setFormatter(NumberPicker.TWO_DIGIT_FORMATTER);
- mDayPicker.setSpeed(100);
- mDayPicker.setOnChangeListener(new OnChangedListener() {
- public void onChanged(NumberPicker picker, int oldVal, int newVal) {
- mDay = newVal;
- if (mOnDateChangedListener != null) {
- mOnDateChangedListener.onDateChanged(DatePicker.this, mYear, mMonth, mDay);
- }
- }
- });
- mMonthPicker = (NumberPicker) findViewById(R.id.month);
- mMonthPicker.setFormatter(NumberPicker.TWO_DIGIT_FORMATTER);
- DateFormatSymbols dfs = new DateFormatSymbols();
- mMonthPicker.setRange(1, 12, dfs.getShortMonths());
- mMonthPicker.setSpeed(200);
- mMonthPicker.setOnChangeListener(new OnChangedListener() {
- public void onChanged(NumberPicker picker, int oldVal, int newVal) {
-
- /* We display the month 1-12 but store it 0-11 so always
- * subtract by one to ensure our internal state is always 0-11
- */
- mMonth = newVal - 1;
- if (mOnDateChangedListener != null) {
- mOnDateChangedListener.onDateChanged(DatePicker.this, mYear, mMonth, mDay);
- }
- updateDaySpinner();
- }
- });
- mYearPicker = (NumberPicker) findViewById(R.id.year);
- mYearPicker.setSpeed(100);
- mYearPicker.setOnChangeListener(new OnChangedListener() {
- public void onChanged(NumberPicker picker, int oldVal, int newVal) {
- mYear = newVal;
- if (mOnDateChangedListener != null) {
- mOnDateChangedListener.onDateChanged(DatePicker.this, mYear, mMonth, mDay);
- }
- }
- });
-
- // attributes
- TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.DatePicker);
-
- int mStartYear = a.getInt(R.styleable.DatePicker_startYear, DEFAULT_START_YEAR);
- int mEndYear = a.getInt(R.styleable.DatePicker_endYear, DEFAULT_END_YEAR);
- mYearPicker.setRange(mStartYear, mEndYear);
-
- a.recycle();
-
- // initialize to current date
- Calendar cal = Calendar.getInstance();
- init(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH), null);
-
- // re-order the number pickers to match the current date format
- reorderPickers();
-
- if (!isEnabled()) {
- setEnabled(false);
- }
- }
-
- @Override
- public void setEnabled(boolean enabled) {
- super.setEnabled(enabled);
- mDayPicker.setEnabled(enabled);
- mMonthPicker.setEnabled(enabled);
- mYearPicker.setEnabled(enabled);
- }
-
- private void reorderPickers() {
- char[] order = DateFormat.getDateFormatOrder(mContext);
-
- /* Default order is month, date, year so if that's the order then
- * do nothing.
- */
- if ((order[0] == DateFormat.MONTH) && (order[1] == DateFormat.DATE)) {
- return;
- }
-
- /* Remove the 3 pickers from their parent and then add them back in the
- * required order.
- */
- LinearLayout parent = (LinearLayout) findViewById(R.id.parent);
- parent.removeAllViews();
- for (char c : order) {
- if (c == DateFormat.DATE) {
- parent.addView(mDayPicker);
- } else if (c == DateFormat.MONTH) {
- parent.addView(mMonthPicker);
- } else {
- parent.addView (mYearPicker);
- }
- }
- }
-
- public void updateDate(int year, int monthOfYear, int dayOfMonth) {
- mYear = year;
- mMonth = monthOfYear;
- mDay = dayOfMonth;
- updateSpinners();
- }
-
- private static class SavedState extends BaseSavedState {
-
- private final int mYear;
- private final int mMonth;
- private final int mDay;
-
- /**
- * Constructor called from {@link DatePicker#onSaveInstanceState()}
- */
- private SavedState(Parcelable superState, int year, int month, int day) {
- super(superState);
- mYear = year;
- mMonth = month;
- mDay = day;
- }
-
- /**
- * Constructor called from {@link #CREATOR}
- */
- private SavedState(Parcel in) {
- super(in);
- mYear = in.readInt();
- mMonth = in.readInt();
- mDay = in.readInt();
- }
-
- public int getYear() {
- return mYear;
- }
-
- public int getMonth() {
- return mMonth;
- }
-
- public int getDay() {
- return mDay;
- }
-
- @Override
- public void writeToParcel(Parcel dest, int flags) {
- super.writeToParcel(dest, flags);
- dest.writeInt(mYear);
- dest.writeInt(mMonth);
- dest.writeInt(mDay);
- }
-
- public static final Parcelable.Creator<SavedState> CREATOR =
- new Creator<SavedState>() {
-
- public SavedState createFromParcel(Parcel in) {
- return new SavedState(in);
- }
-
- public SavedState[] newArray(int size) {
- return new SavedState[size];
- }
- };
- }
-
-
- /**
- * Override so we are in complete control of save / restore for this widget.
- */
- @Override
- protected void dispatchRestoreInstanceState(SparseArray<Parcelable> container) {
- dispatchThawSelfOnly(container);
- }
-
- @Override
- protected Parcelable onSaveInstanceState() {
- Parcelable superState = super.onSaveInstanceState();
-
- return new SavedState(superState, mYear, mMonth, mDay);
- }
-
- @Override
- protected void onRestoreInstanceState(Parcelable state) {
- SavedState ss = (SavedState) state;
- super.onRestoreInstanceState(ss.getSuperState());
- mYear = ss.getYear();
- mMonth = ss.getMonth();
- mDay = ss.getDay();
- }
-
- /**
- * Initialize the state.
- * @param year The initial year.
- * @param monthOfYear The initial month.
- * @param dayOfMonth The initial day of the month.
- * @param onDateChangedListener How user is notified date is changed by user, can be null.
- */
- public void init(int year, int monthOfYear, int dayOfMonth,
- OnDateChangedListener onDateChangedListener) {
- mYear = year;
- mMonth = monthOfYear;
- mDay = dayOfMonth;
- mOnDateChangedListener = onDateChangedListener;
- updateSpinners();
- }
-
- private void updateSpinners() {
- updateDaySpinner();
- mYearPicker.setCurrent(mYear);
-
- /* The month display uses 1-12 but our internal state stores it
- * 0-11 so add one when setting the display.
- */
- mMonthPicker.setCurrent(mMonth + 1);
- }
-
- private void updateDaySpinner() {
- Calendar cal = Calendar.getInstance();
- cal.set(mYear, mMonth, mDay);
- int max = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
- mDayPicker.setRange(1, max);
- mDayPicker.setCurrent(mDay);
- }
-
- public int getYear() {
- return mYear;
- }
-
- public int getMonth() {
- return mMonth;
- }
-
- public int getDayOfMonth() {
- return mDay;
- }
-}