diff options
author | keishi@chromium.org <keishi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-09-30 21:22:01 +0000 |
---|---|---|
committer | keishi@chromium.org <keishi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-09-30 21:22:01 +0000 |
commit | 6c5fcfcb0f552228575454f6b9937a9b43ee5df0 (patch) | |
tree | 99cb59320adc4e3c9c543bb4b41cfaaff7844285 | |
parent | b1caf39345b454bf34af059fa8eb384ccd476306 (diff) | |
download | chromium_src-6c5fcfcb0f552228575454f6b9937a9b43ee5df0.zip chromium_src-6c5fcfcb0f552228575454f6b9937a9b43ee5df0.tar.gz chromium_src-6c5fcfcb0f552228575454f6b9937a9b43ee5df0.tar.bz2 |
Merge 220859 "Week spinner in week picker not wrapping properly"
> Week spinner in week picker not wrapping properly
>
> If the user sets the value to 2009-W01 and then spins the spinner
> backwards to week 53, we should set the value to 2008-52 (because 2008 only has 52 weeks).
>
> BUG=258002
>
> Review URL: https://chromiumcodereview.appspot.com/23498005
TBR=keishi@chromium.org
Review URL: https://codereview.chromium.org/25346002
git-svn-id: svn://svn.chromium.org/chrome/branches/1599/src@226049 0039d316-1c4b-4281-b951-d872f2087c98
3 files changed, 17 insertions, 15 deletions
diff --git a/content/public/android/java/src/org/chromium/content/browser/input/MonthPicker.java b/content/public/android/java/src/org/chromium/content/browser/input/MonthPicker.java index 3e06d75..57cab66 100644 --- a/content/public/android/java/src/org/chromium/content/browser/input/MonthPicker.java +++ b/content/public/android/java/src/org/chromium/content/browser/input/MonthPicker.java @@ -92,16 +92,16 @@ public class MonthPicker extends TwoFieldDatePicker { @Override - protected int getMaxPositionInYear() { - if (getYear() == getMaxDate().get(Calendar.YEAR)) { + protected int getMaxPositionInYear(int year) { + if (year == getMaxDate().get(Calendar.YEAR)) { return getMaxDate().get(Calendar.MONTH); } return MONTHS_NUMBER - 1; } @Override - protected int getMinPositionInYear() { - if (getYear() == getMinDate().get(Calendar.YEAR)) { + protected int getMinPositionInYear(int year) { + if (year == getMinDate().get(Calendar.YEAR)) { return getMinDate().get(Calendar.MONTH); } return 0; diff --git a/content/public/android/java/src/org/chromium/content/browser/input/TwoFieldDatePicker.java b/content/public/android/java/src/org/chromium/content/browser/input/TwoFieldDatePicker.java index 4eaa0b7..c6dfd61 100644 --- a/content/public/android/java/src/org/chromium/content/browser/input/TwoFieldDatePicker.java +++ b/content/public/android/java/src/org/chromium/content/browser/input/TwoFieldDatePicker.java @@ -67,8 +67,10 @@ public abstract class TwoFieldDatePicker extends FrameLayout { positionInYear = newVal; if (oldVal == picker.getMaxValue() && newVal == picker.getMinValue()) { year += 1; + positionInYear = getMinPositionInYear(year); } else if (oldVal == picker.getMinValue() && newVal == picker.getMaxValue()) { year -=1; + positionInYear = getMaxPositionInYear(year); } } else if (picker == mYearSpinner) { year = newVal; @@ -188,9 +190,9 @@ public abstract class TwoFieldDatePicker extends FrameLayout { protected abstract int getMinYear(); - protected abstract int getMaxPositionInYear(); + protected abstract int getMaxPositionInYear(int year); - protected abstract int getMinPositionInYear(); + protected abstract int getMinPositionInYear(int year); protected Calendar getMaxDate() { return mMaxDate; @@ -219,8 +221,8 @@ public abstract class TwoFieldDatePicker extends FrameLayout { mPositionInYearSpinner.setDisplayedValues(null); // set the spinner ranges respecting the min and max dates - mPositionInYearSpinner.setMinValue(getMinPositionInYear()); - mPositionInYearSpinner.setMaxValue(getMaxPositionInYear()); + mPositionInYearSpinner.setMinValue(getMinPositionInYear(getYear())); + mPositionInYearSpinner.setMaxValue(getMaxPositionInYear(getYear())); mPositionInYearSpinner.setWrapSelectorWheel( !mCurrentDate.equals(mMinDate) && !mCurrentDate.equals(mMaxDate)); diff --git a/content/public/android/java/src/org/chromium/content/browser/input/WeekPicker.java b/content/public/android/java/src/org/chromium/content/browser/input/WeekPicker.java index 117793b..efca476 100644 --- a/content/public/android/java/src/org/chromium/content/browser/input/WeekPicker.java +++ b/content/public/android/java/src/org/chromium/content/browser/input/WeekPicker.java @@ -76,9 +76,9 @@ public class WeekPicker extends TwoFieldDatePicker { } } - private int getNumberOfWeeks() { + private int getNumberOfWeeks(int year) { // Create a date in the middle of the year, where the week year matches the year. - Calendar date = createDateFromWeek(getYear(), 20); + Calendar date = createDateFromWeek(year, 20); return date.getActualMaximum(Calendar.WEEK_OF_YEAR); } @@ -113,16 +113,16 @@ public class WeekPicker extends TwoFieldDatePicker { } @Override - protected int getMaxPositionInYear() { - if (getYear() == getISOWeekYearForDate(getMaxDate())) { + protected int getMaxPositionInYear(int year) { + if (year == getISOWeekYearForDate(getMaxDate())) { return getWeekForDate(getMaxDate()); } - return getNumberOfWeeks(); + return getNumberOfWeeks(year); } @Override - protected int getMinPositionInYear() { - if (getYear() == getISOWeekYearForDate(getMinDate())) { + protected int getMinPositionInYear(int year) { + if (year == getISOWeekYearForDate(getMinDate())) { return getWeekForDate(getMinDate()); } return 1; |