From 5ccbdc6e129bdcc123e337fb2f9a5ddceefa85c0 Mon Sep 17 00:00:00 2001 From: IVleafclover Date: Sun, 12 Nov 2017 15:04:57 +0100 Subject: [PATCH 1/2] no highlighting for current selected day --- .../CompactCalendarController.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/library/src/main/java/com/github/sundeepk/compactcalendarview/CompactCalendarController.java b/library/src/main/java/com/github/sundeepk/compactcalendarview/CompactCalendarController.java index 9a22199c..d7365730 100755 --- a/library/src/main/java/com/github/sundeepk/compactcalendarview/CompactCalendarController.java +++ b/library/src/main/java/com/github/sundeepk/compactcalendarview/CompactCalendarController.java @@ -766,7 +766,7 @@ void drawEvents(Canvas canvas, Calendar currentMonthToDrawCalender, int offset) boolean isSameDayAsCurrentDay = shouldDrawCurrentDayCircle && (todayDayOfMonth == dayOfMonth) && (eventYear == currentYear); boolean isCurrentSelectedDay = shouldDrawSelectedDayCircle && (selectedDayOfMonth == dayOfMonth); - if (shouldDrawIndicatorsBelowSelectedDays || (!shouldDrawIndicatorsBelowSelectedDays && !isSameDayAsCurrentDay && !isCurrentSelectedDay) || animationStatus == EXPOSE_CALENDAR_ANIMATION) { + if (shouldDrawIndicatorsBelowSelectedDays || (!shouldDrawIndicatorsBelowSelectedDays && !isSameDayAsCurrentDay) || animationStatus == EXPOSE_CALENDAR_ANIMATION) { if (eventIndicatorStyle == FILL_LARGE_INDICATOR || eventIndicatorStyle == NO_FILL_LARGE_INDICATOR) { Event event = eventsList.get(0); drawEventIndicatorCircle(canvas, xPosition, yPosition, event.getColor()); @@ -774,7 +774,7 @@ void drawEvents(Canvas canvas, Calendar currentMonthToDrawCalender, int offset) yPosition += indicatorOffset; // offset event indicators to draw below selected day indicators // this makes sure that they do no overlap - if (shouldDrawIndicatorsBelowSelectedDays && (isSameDayAsCurrentDay || isCurrentSelectedDay)) { + if (shouldDrawIndicatorsBelowSelectedDays && (isSameDayAsCurrentDay)) { yPosition += indicatorOffset; } @@ -879,10 +879,12 @@ void drawMonth(Canvas canvas, Calendar monthToDrawCalender, int offset) { } else { int day = ((dayRow - 1) * 7 + dayColumn + 1) - firstDayOfMonth; int defaultCalenderTextColorToUse = calenderTextColor; - if (currentCalender.get(Calendar.DAY_OF_MONTH) == day && isSameMonthAsCurrentCalendar && !isAnimatingWithExpose) { - drawDayCircleIndicator(currentSelectedDayIndicatorStyle, canvas, xPosition, yPosition, currentSelectedDayBackgroundColor); - defaultCalenderTextColorToUse = currentSelectedDayTextColor; - } else if (isSameYearAsToday && isSameMonthAsToday && todayDayOfMonth == day && !isAnimatingWithExpose) { + // fix by IVleafclover that the selected day is not highlighted + // if (currentCalender.get(Calendar.DAY_OF_MONTH) == day && isSameMonthAsCurrentCalendar && !isAnimatingWithExpose) { + // drawDayCircleIndicator(currentSelectedDayIndicatorStyle, canvas, xPosition, yPosition, currentSelectedDayBackgroundColor); + // defaultCalenderTextColorToUse = currentSelectedDayTextColor; + // } else + if (isSameYearAsToday && isSameMonthAsToday && todayDayOfMonth == day && !isAnimatingWithExpose) { // TODO calculate position of circle in a more reliable way drawDayCircleIndicator(currentDayIndicatorStyle, canvas, xPosition, yPosition, currentDayBackgroundColor); defaultCalenderTextColorToUse = currentDayTextColor; From eccb3776228fa1b3197c01833a7b7c4c1e5aa41f Mon Sep 17 00:00:00 2001 From: IVleafclover Date: Sun, 12 Nov 2017 20:25:20 +0100 Subject: [PATCH 2/2] added the attribute 'disableBackgroundForSelectedDay' to not draw the background circle for the selected day and not interfere with the today background or events on the selected day anymore --- .../CompactCalendarController.java | 19 +++++++++++-------- .../CompactCalendarView.java | 4 ++++ 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/library/src/main/java/com/github/sundeepk/compactcalendarview/CompactCalendarController.java b/library/src/main/java/com/github/sundeepk/compactcalendarview/CompactCalendarController.java index d7365730..074d54b2 100755 --- a/library/src/main/java/com/github/sundeepk/compactcalendarview/CompactCalendarController.java +++ b/library/src/main/java/com/github/sundeepk/compactcalendarview/CompactCalendarController.java @@ -78,6 +78,7 @@ class CompactCalendarController { private boolean shouldDrawIndicatorsBelowSelectedDays = false; private boolean displayOtherMonthDays = false; private boolean shouldSelectFirstDayOfMonthOnScroll = true; + private boolean disableBackgroundForSelectedDay = false; private CompactCalendarViewListener listener; private VelocityTracker velocityTracker = null; @@ -236,6 +237,10 @@ private void setMonthOffset(Calendar calendarWithFirstDayOfMonth, Date currentDa calendarWithFirstDayOfMonth.set(Calendar.MILLISECOND, 0); } + void disableBackgroundForSelectedDay(boolean disableBackgroundForSelectedDay) { + this.disableBackgroundForSelectedDay = disableBackgroundForSelectedDay; + } + void setShouldSelectFirstDayOfMonthOnScroll(boolean shouldSelectFirstDayOfMonthOnScroll){ this.shouldSelectFirstDayOfMonthOnScroll = shouldSelectFirstDayOfMonthOnScroll; } @@ -766,7 +771,7 @@ void drawEvents(Canvas canvas, Calendar currentMonthToDrawCalender, int offset) boolean isSameDayAsCurrentDay = shouldDrawCurrentDayCircle && (todayDayOfMonth == dayOfMonth) && (eventYear == currentYear); boolean isCurrentSelectedDay = shouldDrawSelectedDayCircle && (selectedDayOfMonth == dayOfMonth); - if (shouldDrawIndicatorsBelowSelectedDays || (!shouldDrawIndicatorsBelowSelectedDays && !isSameDayAsCurrentDay) || animationStatus == EXPOSE_CALENDAR_ANIMATION) { + if (shouldDrawIndicatorsBelowSelectedDays || (!shouldDrawIndicatorsBelowSelectedDays && !isSameDayAsCurrentDay && (!isCurrentSelectedDay || disableBackgroundForSelectedDay)) || animationStatus == EXPOSE_CALENDAR_ANIMATION) { if (eventIndicatorStyle == FILL_LARGE_INDICATOR || eventIndicatorStyle == NO_FILL_LARGE_INDICATOR) { Event event = eventsList.get(0); drawEventIndicatorCircle(canvas, xPosition, yPosition, event.getColor()); @@ -774,7 +779,7 @@ void drawEvents(Canvas canvas, Calendar currentMonthToDrawCalender, int offset) yPosition += indicatorOffset; // offset event indicators to draw below selected day indicators // this makes sure that they do no overlap - if (shouldDrawIndicatorsBelowSelectedDays && (isSameDayAsCurrentDay)) { + if (shouldDrawIndicatorsBelowSelectedDays && (isSameDayAsCurrentDay || (isCurrentSelectedDay && !disableBackgroundForSelectedDay))) { yPosition += indicatorOffset; } @@ -879,12 +884,10 @@ void drawMonth(Canvas canvas, Calendar monthToDrawCalender, int offset) { } else { int day = ((dayRow - 1) * 7 + dayColumn + 1) - firstDayOfMonth; int defaultCalenderTextColorToUse = calenderTextColor; - // fix by IVleafclover that the selected day is not highlighted - // if (currentCalender.get(Calendar.DAY_OF_MONTH) == day && isSameMonthAsCurrentCalendar && !isAnimatingWithExpose) { - // drawDayCircleIndicator(currentSelectedDayIndicatorStyle, canvas, xPosition, yPosition, currentSelectedDayBackgroundColor); - // defaultCalenderTextColorToUse = currentSelectedDayTextColor; - // } else - if (isSameYearAsToday && isSameMonthAsToday && todayDayOfMonth == day && !isAnimatingWithExpose) { + if (currentCalender.get(Calendar.DAY_OF_MONTH) == day && isSameMonthAsCurrentCalendar && !isAnimatingWithExpose && !disableBackgroundForSelectedDay) { + drawDayCircleIndicator(currentSelectedDayIndicatorStyle, canvas, xPosition, yPosition, currentSelectedDayBackgroundColor); + defaultCalenderTextColorToUse = currentSelectedDayTextColor; + } else if (isSameYearAsToday && isSameMonthAsToday && todayDayOfMonth == day && !isAnimatingWithExpose) { // TODO calculate position of circle in a more reliable way drawDayCircleIndicator(currentDayIndicatorStyle, canvas, xPosition, yPosition, currentDayBackgroundColor); defaultCalenderTextColorToUse = currentDayTextColor; diff --git a/library/src/main/java/com/github/sundeepk/compactcalendarview/CompactCalendarView.java b/library/src/main/java/com/github/sundeepk/compactcalendarview/CompactCalendarView.java index b1ff2819..0ecec9fe 100755 --- a/library/src/main/java/com/github/sundeepk/compactcalendarview/CompactCalendarView.java +++ b/library/src/main/java/com/github/sundeepk/compactcalendarview/CompactCalendarView.java @@ -161,6 +161,10 @@ public Date getFirstDayOfCurrentMonth(){ return compactCalendarController.getFirstDayOfCurrentMonth(); } + public void disableBackgroundForSelectedDay(boolean disableBackgroundForSelectedDay){ + compactCalendarController.disableBackgroundForSelectedDay(disableBackgroundForSelectedDay); + } + public void shouldDrawIndicatorsBelowSelectedDays(boolean shouldDrawIndicatorsBelowSelectedDays){ compactCalendarController.shouldDrawIndicatorsBelowSelectedDays(shouldDrawIndicatorsBelowSelectedDays); }