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..9743e303 100755 --- a/library/src/main/java/com/github/sundeepk/compactcalendarview/CompactCalendarController.java +++ b/library/src/main/java/com/github/sundeepk/compactcalendarview/CompactCalendarController.java @@ -105,6 +105,7 @@ class CompactCalendarController { private int currentSelectedDayTextColor; private int calenderBackgroundColor = Color.WHITE; private int otherMonthDaysTextColor; + private int pastDaysTextColor; private TimeZone timeZone; /** @@ -128,6 +129,7 @@ private enum Direction { this.calenderTextColor = calenderTextColor; this.currentSelectedDayBackgroundColor = currentSelectedDayBackgroundColor; this.otherMonthDaysTextColor = calenderTextColor; + this.pastDaysTextColor = calenderTextColor; this.velocityTracker = velocityTracker; this.multiEventIndicatorColor = multiEventIndicatorColor; this.eventsContainer = eventsContainer; @@ -146,6 +148,7 @@ private void loadAttributes(AttributeSet attrs, Context context) { calenderTextColor = typedArray.getColor(R.styleable.CompactCalendarView_compactCalendarTextColor, calenderTextColor); currentDayTextColor = typedArray.getColor(R.styleable.CompactCalendarView_compactCalendarCurrentDayTextColor, calenderTextColor); otherMonthDaysTextColor = typedArray.getColor(R.styleable.CompactCalendarView_compactCalendarOtherMonthDaysTextColor, otherMonthDaysTextColor); + pastDaysTextColor = typedArray.getColor(R.styleable.CompactCalendarView_compactCalendarPastDaysTextColor, calenderTextColor); currentSelectedDayBackgroundColor = typedArray.getColor(R.styleable.CompactCalendarView_compactCalendarCurrentSelectedDayBackgroundColor, currentSelectedDayBackgroundColor); currentSelectedDayTextColor = typedArray.getColor(R.styleable.CompactCalendarView_compactCalendarCurrentSelectedDayTextColor, calenderTextColor); calenderBackgroundColor = typedArray.getColor(R.styleable.CompactCalendarView_compactCalendarBackgroundColor, calenderBackgroundColor); @@ -837,11 +840,17 @@ void drawMonth(Canvas canvas, Calendar monthToDrawCalender, int offset) { //offset by one because we want to start from Monday int firstDayOfMonth = getDayOfWeek(monthToDrawCalender); - boolean isSameMonthAsToday = monthToDrawCalender.get(Calendar.MONTH) == todayCalender.get(Calendar.MONTH); - boolean isSameYearAsToday = monthToDrawCalender.get(Calendar.YEAR) == todayCalender.get(Calendar.YEAR); + int currentDayOfMonth = currentCalender.get(Calendar.DAY_OF_MONTH); + int todayDayOfMonth = todayCalender.get(Calendar.DAY_OF_MONTH); + + boolean isSameMonthAsToday = monthToDrawCalender.get(Calendar.MONTH) == todayCalender.get(Calendar.MONTH) + && monthToDrawCalender.get(Calendar.YEAR) == todayCalender.get(Calendar.YEAR); boolean isSameMonthAsCurrentCalendar = monthToDrawCalender.get(Calendar.MONTH) == currentCalender.get(Calendar.MONTH) && monthToDrawCalender.get(Calendar.YEAR) == currentCalender.get(Calendar.YEAR); - int todayDayOfMonth = todayCalender.get(Calendar.DAY_OF_MONTH); + boolean isPastMonth = monthToDrawCalender.get(Calendar.YEAR) < todayCalender.get(Calendar.YEAR) + || monthToDrawCalender.get(Calendar.YEAR) == todayCalender.get(Calendar.YEAR) + && monthToDrawCalender.get(Calendar.MONTH) < todayCalender.get(Calendar.MONTH); + boolean isAnimatingWithExpose = animationStatus == EXPOSE_CALENDAR_ANIMATION; int maximumMonthDay = monthToDrawCalender.getActualMaximum(Calendar.DAY_OF_MONTH); @@ -879,13 +888,15 @@ 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) { + if (currentDayOfMonth == day && isSameMonthAsCurrentCalendar && !isAnimatingWithExpose) { drawDayCircleIndicator(currentSelectedDayIndicatorStyle, canvas, xPosition, yPosition, currentSelectedDayBackgroundColor); defaultCalenderTextColorToUse = currentSelectedDayTextColor; - } else if (isSameYearAsToday && isSameMonthAsToday && todayDayOfMonth == day && !isAnimatingWithExpose) { + } else if (isSameMonthAsToday && todayDayOfMonth == day && !isAnimatingWithExpose) { // TODO calculate position of circle in a more reliable way drawDayCircleIndicator(currentDayIndicatorStyle, canvas, xPosition, yPosition, currentDayBackgroundColor); defaultCalenderTextColorToUse = currentDayTextColor; + } else if (isPastMonth || isSameMonthAsToday && todayDayOfMonth > day) { + defaultCalenderTextColorToUse = pastDaysTextColor; } if (day <= 0) { if (displayOtherMonthDays) { diff --git a/library/src/main/res/values/attrs.xml b/library/src/main/res/values/attrs.xml index be80746e..d0aee65e 100644 --- a/library/src/main/res/values/attrs.xml +++ b/library/src/main/res/values/attrs.xml @@ -29,5 +29,6 @@ +