From 1542bbf7ebde4c406fc0b48a43d70b7cba0d2309 Mon Sep 17 00:00:00 2001 From: Fedor Tsyganov Date: Sun, 2 Oct 2016 19:11:40 -0700 Subject: [PATCH 1/3] Added attribute for a single selection singleSelectionOnly allows users to select only one day and a range of days --- library/src/main/res/values/attrs.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/library/src/main/res/values/attrs.xml b/library/src/main/res/values/attrs.xml index c7bda69..150caa7 100644 --- a/library/src/main/res/values/attrs.xml +++ b/library/src/main/res/values/attrs.xml @@ -17,6 +17,7 @@ + @@ -46,4 +47,4 @@ - \ No newline at end of file + From ecc366d2be70bc1c27af59d2a94e0d3b7e17dc06 Mon Sep 17 00:00:00 2001 From: Fedor Tsyganov Date: Sun, 2 Oct 2016 19:15:31 -0700 Subject: [PATCH 2/3] mSingleSelection - user able to select only 1 day --- .../calendarlistview/library/SimpleMonthView.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/library/src/main/java/com/andexert/calendarlistview/library/SimpleMonthView.java b/library/src/main/java/com/andexert/calendarlistview/library/SimpleMonthView.java index f61bdef..bef16a8 100644 --- a/library/src/main/java/com/andexert/calendarlistview/library/SimpleMonthView.java +++ b/library/src/main/java/com/andexert/calendarlistview/library/SimpleMonthView.java @@ -103,6 +103,7 @@ class SimpleMonthView extends View private int mDayOfWeekStart = 0; protected int mMonth; protected Boolean mDrawRect; + protected Boolean mSingleSelection; protected int mRowHeight = DEFAULT_HEIGHT; protected int mWidth; protected int mYear; @@ -138,6 +139,8 @@ public SimpleMonthView(Context context, TypedArray typedArray) mMonthTitleBGColor = typedArray.getColor(R.styleable.DayPickerView_colorSelectedDayText, resources.getColor(R.color.selected_day_text)); mDrawRect = typedArray.getBoolean(R.styleable.DayPickerView_drawRoundRect, false); + + mSingleSelection = typedArray.getBoolean(R.styleable.DayPickerView_singleSelectionOnly, false); mStringBuilder = new StringBuilder(50); @@ -437,6 +440,10 @@ public void setMonthParams(HashMap params) { mNumRows = calculateNumRows(); } + + public boolean isSingleSelectionOnly() { + return mSingleSelection; + } public void setOnDayClickListener(OnDayClickListener onDayClickListener) { mOnDayClickListener = onDayClickListener; @@ -445,4 +452,4 @@ public void setOnDayClickListener(OnDayClickListener onDayClickListener) { public static abstract interface OnDayClickListener { public abstract void onDayClick(SimpleMonthView simpleMonthView, SimpleMonthAdapter.CalendarDay calendarDay); } -} \ No newline at end of file +} From d7570528274196b2a3411d046fc74d0d0b7f2173 Mon Sep 17 00:00:00 2001 From: Fedor Tsyganov Date: Sun, 2 Oct 2016 19:20:13 -0700 Subject: [PATCH 3/3] User is able to select only 1 day With this update user can select only 1 day and when day is already selected: old day will be deselected and a new day will be selected (instead of range). --- .../library/SimpleMonthAdapter.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/library/src/main/java/com/andexert/calendarlistview/library/SimpleMonthAdapter.java b/library/src/main/java/com/andexert/calendarlistview/library/SimpleMonthAdapter.java index 20e1b0e..ef15008 100644 --- a/library/src/main/java/com/andexert/calendarlistview/library/SimpleMonthAdapter.java +++ b/library/src/main/java/com/andexert/calendarlistview/library/SimpleMonthAdapter.java @@ -145,22 +145,22 @@ public ViewHolder(View itemView, SimpleMonthView.OnDayClickListener onDayClickLi protected void init() { if (typedArray.getBoolean(R.styleable.DayPickerView_currentDaySelected, false)) - onDayTapped(new CalendarDay(System.currentTimeMillis())); + onDayTapped(new CalendarDay(System.currentTimeMillis()), false); } public void onDayClick(SimpleMonthView simpleMonthView, CalendarDay calendarDay) { if (calendarDay != null) { - onDayTapped(calendarDay); + onDayTapped(calendarDay, simpleMonthView.isSingleSelectionOnly()); } } - protected void onDayTapped(CalendarDay calendarDay) { + protected void onDayTapped(CalendarDay calendarDay, boolean selection) { mController.onDayOfMonthSelected(calendarDay.year, calendarDay.month, calendarDay.day); - setSelectedDay(calendarDay); + setSelectedDay(calendarDay, selection); } - public void setSelectedDay(CalendarDay calendarDay) { - if (selectedDays.getFirst() != null && selectedDays.getLast() == null) + public void setSelectedDay(CalendarDay calendarDay, boolean selection) { + if (selectedDays.getFirst() != null && selectedDays.getLast() == null && !selection) { selectedDays.setLast(calendarDay); @@ -288,4 +288,4 @@ public void setLast(K last) this.last = last; } } -} \ No newline at end of file +}