From 39880a31850ffccd9174dbe660e4b8e42bd9d9d8 Mon Sep 17 00:00:00 2001 From: Sergio Durand Date: Tue, 25 Jul 2017 21:11:22 -0300 Subject: [PATCH 1/3] Add the third event to calendar before start to use plus sign Signed-off-by: Sergio Durand --- .../CompactCalendarController.java | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 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..10b912d5 100755 --- a/library/src/main/java/com/github/sundeepk/compactcalendarview/CompactCalendarController.java +++ b/library/src/main/java/com/github/sundeepk/compactcalendarview/CompactCalendarController.java @@ -778,8 +778,10 @@ void drawEvents(Canvas canvas, Calendar currentMonthToDrawCalender, int offset) yPosition += indicatorOffset; } - if (eventsList.size() >= 3) { + if (eventsList.size() >= 4) { drawEventsWithPlus(canvas, xPosition, yPosition, eventsList); + } else if (eventsList.size() == 3) { + drawThreeEvents(canvas, xPosition, yPosition, eventsList); } else if (eventsList.size() == 2) { drawTwoEvents(canvas, xPosition, yPosition, eventsList); } else if (eventsList.size() == 1) { @@ -797,12 +799,21 @@ private void drawSingleEvent(Canvas canvas, float xPosition, float yPosition, Li } private void drawTwoEvents(Canvas canvas, float xPosition, float yPosition, List eventsList) { - //draw fist event just left of center + //draw first event just left of center drawEventIndicatorCircle(canvas, xPosition + (xIndicatorOffset * -1), yPosition, eventsList.get(0).getColor()); //draw second event just right of center drawEventIndicatorCircle(canvas, xPosition + (xIndicatorOffset * 1), yPosition, eventsList.get(1).getColor()); } + private void drawThreeEvents(Canvas canvas, float xPosition, float yPosition, List eventsList) { + //draw first event just left of center + drawEventIndicatorCircle(canvas, xPosition + (xIndicatorOffset * -2), yPosition, eventsList.get(0).getColor()); + //draw second event centered + drawEventIndicatorCircle(canvas, xPosition, yPosition, eventsList.get(1).getColor()); + //draw third event just right of center + drawEventIndicatorCircle(canvas, xPosition + (xIndicatorOffset * 2), yPosition, eventsList.get(2).getColor()); + } + //draw 2 eventsByMonthAndYearMap followed by plus indicator to show there are more than 2 eventsByMonthAndYearMap private void drawEventsWithPlus(Canvas canvas, float xPosition, float yPosition, List eventsList) { // k = size() - 1, but since we don't want to draw more than 2 indicators, we just stop after 2 iterations so we can just hard k = -2 instead From 5e9570ac7deea451cc225a59dce3b4760fa6171f Mon Sep 17 00:00:00 2001 From: Valerio Santinelli Date: Wed, 27 Sep 2017 09:00:06 +0200 Subject: [PATCH 2/3] Support for attrs in textColor --- .../CompactCalendarController.java | 16 +++++++++++++++- library/src/main/res/values/attrs.xml | 2 +- 2 files changed, 16 insertions(+), 2 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..2ea799cd 100755 --- a/library/src/main/java/com/github/sundeepk/compactcalendarview/CompactCalendarController.java +++ b/library/src/main/java/com/github/sundeepk/compactcalendarview/CompactCalendarController.java @@ -1,6 +1,7 @@ package com.github.sundeepk.compactcalendarview; import android.content.Context; +import android.content.res.ColorStateList; import android.content.res.TypedArray; import android.graphics.Canvas; import android.graphics.Color; @@ -142,8 +143,21 @@ private void loadAttributes(AttributeSet attrs, Context context) { if (attrs != null && context != null) { TypedArray typedArray = context.getTheme().obtainStyledAttributes(attrs, R.styleable.CompactCalendarView, 0, 0); try { + + int id = typedArray.getResourceId(R.styleable.CompactCalendarView_compactCalendarTextColor, -1); + if (id != -1) { + TypedArray app = context.getTheme().obtainStyledAttributes(id, new int[]{ android.R.attr.textColor, android.R.attr.typeface, android.R.attr.textStyle}); + if (app != null){ + calenderTextColor = app.getColor(0, 0); + app.recycle(); + } + } else { + calenderTextColor = typedArray.getColor(R.styleable.CompactCalendarView_compactCalendarTextColor, calenderTextColor); + } + + //ColorStateList textColorStateList = typedArray.getColorStateList(R.styleable.CompactCalendarView_compactCalendarTextColor); currentDayBackgroundColor = typedArray.getColor(R.styleable.CompactCalendarView_compactCalendarCurrentDayBackgroundColor, currentDayBackgroundColor); - calenderTextColor = typedArray.getColor(R.styleable.CompactCalendarView_compactCalendarTextColor, calenderTextColor); + currentDayTextColor = typedArray.getColor(R.styleable.CompactCalendarView_compactCalendarCurrentDayTextColor, calenderTextColor); otherMonthDaysTextColor = typedArray.getColor(R.styleable.CompactCalendarView_compactCalendarOtherMonthDaysTextColor, otherMonthDaysTextColor); currentSelectedDayBackgroundColor = typedArray.getColor(R.styleable.CompactCalendarView_compactCalendarCurrentSelectedDayBackgroundColor, currentSelectedDayBackgroundColor); diff --git a/library/src/main/res/values/attrs.xml b/library/src/main/res/values/attrs.xml index be80746e..6256d6fe 100644 --- a/library/src/main/res/values/attrs.xml +++ b/library/src/main/res/values/attrs.xml @@ -20,7 +20,7 @@ - + From 090f179c7c4cdc3c1916e208d8eb471b18d60600 Mon Sep 17 00:00:00 2001 From: Valerio Santinelli Date: Wed, 27 Sep 2017 11:28:46 +0200 Subject: [PATCH 3/3] Added support for forcing the week days in the header to be in uppercase --- .../compactcalendarview/CompactCalendarController.java | 6 +++--- library/src/main/res/values/attrs.xml | 1 + 2 files changed, 4 insertions(+), 3 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 f8ce1c9f..aad116ea 100755 --- a/library/src/main/java/com/github/sundeepk/compactcalendarview/CompactCalendarController.java +++ b/library/src/main/java/com/github/sundeepk/compactcalendarview/CompactCalendarController.java @@ -79,6 +79,7 @@ class CompactCalendarController { private boolean shouldDrawIndicatorsBelowSelectedDays = false; private boolean displayOtherMonthDays = false; private boolean shouldSelectFirstDayOfMonthOnScroll = true; + private boolean shouldUppercaseWeekDaysHeader = false; private CompactCalendarViewListener listener; private VelocityTracker velocityTracker = null; @@ -155,9 +156,7 @@ private void loadAttributes(AttributeSet attrs, Context context) { calenderTextColor = typedArray.getColor(R.styleable.CompactCalendarView_compactCalendarTextColor, calenderTextColor); } - //ColorStateList textColorStateList = typedArray.getColorStateList(R.styleable.CompactCalendarView_compactCalendarTextColor); currentDayBackgroundColor = typedArray.getColor(R.styleable.CompactCalendarView_compactCalendarCurrentDayBackgroundColor, currentDayBackgroundColor); - currentDayTextColor = typedArray.getColor(R.styleable.CompactCalendarView_compactCalendarCurrentDayTextColor, calenderTextColor); otherMonthDaysTextColor = typedArray.getColor(R.styleable.CompactCalendarView_compactCalendarOtherMonthDaysTextColor, otherMonthDaysTextColor); currentSelectedDayBackgroundColor = typedArray.getColor(R.styleable.CompactCalendarView_compactCalendarCurrentSelectedDayBackgroundColor, currentSelectedDayBackgroundColor); @@ -173,6 +172,7 @@ private void loadAttributes(AttributeSet attrs, Context context) { currentSelectedDayIndicatorStyle = typedArray.getInt(R.styleable.CompactCalendarView_compactCalendarCurrentSelectedDayIndicatorStyle, FILL_LARGE_INDICATOR); displayOtherMonthDays = typedArray.getBoolean(R.styleable.CompactCalendarView_compactCalendarDisplayOtherMonthDays, displayOtherMonthDays); shouldSelectFirstDayOfMonthOnScroll = typedArray.getBoolean(R.styleable.CompactCalendarView_compactCalendarShouldSelectFirstDayOfMonthOnScroll, shouldSelectFirstDayOfMonthOnScroll); + shouldUppercaseWeekDaysHeader = typedArray.getBoolean(R.styleable.CompactCalendarView_compactCalendarUppercaseWeekDaysHeader, shouldUppercaseWeekDaysHeader); } finally { typedArray.recycle(); } @@ -898,7 +898,7 @@ void drawMonth(Canvas canvas, Calendar monthToDrawCalender, int offset) { dayPaint.setTypeface(Typeface.DEFAULT_BOLD); dayPaint.setStyle(Paint.Style.FILL); dayPaint.setColor(calenderTextColor); - canvas.drawText(dayColumnNames[dayColumn], xPosition, paddingHeight, dayPaint); + canvas.drawText(shouldUppercaseWeekDaysHeader ? dayColumnNames[dayColumn].toUpperCase() : dayColumnNames[dayColumn], xPosition, paddingHeight, dayPaint); dayPaint.setTypeface(Typeface.DEFAULT); } } else { diff --git a/library/src/main/res/values/attrs.xml b/library/src/main/res/values/attrs.xml index 6256d6fe..0fceadf6 100644 --- a/library/src/main/res/values/attrs.xml +++ b/library/src/main/res/values/attrs.xml @@ -29,5 +29,6 @@ +