Skip to content

Commit efd7b2c

Browse files
committed
Version code update, 1.9
can select same day development done
1 parent 359c1d3 commit efd7b2c

File tree

10 files changed

+115
-8
lines changed

10 files changed

+115
-8
lines changed

cosmocalendar/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@ android {
3232
defaultConfig {
3333
minSdkVersion 16
3434
targetSdkVersion 28
35-
versionCode 6
36-
versionName "1.7"
35+
versionCode 9
36+
versionName "1.9"
3737
}
3838
buildTypes {
3939
release {

cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/adapter/viewholder/DayHolder.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,10 @@ public void bind(Day day, BaseSelectionManager selectionManager) {
4040
unselect(day);
4141
}
4242

43-
if (day.getIsHoliday()){
43+
if (day.getIsHoliday()) {
4444
ivConnectedDay.setImageDrawable(calendarView.getContext().getResources().getDrawable(calendarView.getConnectedDayIconRes()));
45+
} else {
46+
ivConnectedDay.setImageDrawable(null);
4547
}
4648

4749
if (day.isCurrent()) {
@@ -106,6 +108,8 @@ private void select(Day day) {
106108
ctvDay.setTextColor(calendarView.getDayTextColor());
107109
}
108110
}
111+
}else if(state == SelectionState.SINGLE_RANGE_DAY){
112+
ctvDay.setTextColor(calendarView.getSelectedDayTextColor());
109113
}
110114

111115
} else {
@@ -205,6 +209,13 @@ private void animateDay(SelectionState state, Day day) {
205209
ctvDay.setSelectionStateAndAnimate(state, calendarView, day, selectionManager);
206210
}
207211
break;
212+
case SINGLE_RANGE_DAY:
213+
if (day.isSelectionCircleDrawed()) {
214+
ctvDay.showAsDoubleCircle(calendarView, false);
215+
} else {
216+
ctvDay.setSelectionStateAndAnimate(state, calendarView, day, selectionManager);
217+
}
218+
break;
208219
}
209220
}
210221
}

cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/dialog/CalendarDialog.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -236,6 +236,16 @@ public int getSelectedRangeTextColor() {
236236
return calendarView.getSelectedRangeTextColor();
237237
}
238238

239+
@Override
240+
public boolean getCanSelectSameDay() {
241+
return calendarView.getCanSelectSameDay();
242+
}
243+
244+
@Override
245+
public void setCanSelectSameDay(boolean canSelectSameDay) {
246+
calendarView.setCanSelectSameDay(canSelectSameDay);
247+
}
248+
239249
@Override
240250
public Map<String, List<String>> getHolidays() {
241251
return calendarView.getHolidays();
@@ -428,12 +438,12 @@ public void setDeterminators(Map<String, Integer> determinators) {
428438

429439
@Override
430440
public void setHolidaysPins(HashMap<String, String> pinsHash) {
431-
441+
calendarView.setHolidaysPins(pinsHash);
432442
}
433443

434444
@Override
435445
public HashMap<String, String> getHolidaysPins() {
436-
return null;
446+
return calendarView.getHolidaysPins();
437447
}
438448

439449
@Override

cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/selection/RangeSelectionManager.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,17 @@ public class RangeSelectionManager extends BaseSelectionManager {
1010

1111
private Pair<Day, Day> days;
1212
private Day tempDay;
13+
private boolean canSelectSameDay = false;
1314

1415
public RangeSelectionManager(OnDaySelectedListener onDaySelectedListener) {
1516
this.onDaySelectedListener = onDaySelectedListener;
1617
}
1718

19+
public RangeSelectionManager(OnDaySelectedListener onDaySelectedListener, boolean canSelectSameDay) {
20+
this.onDaySelectedListener = onDaySelectedListener;
21+
this.canSelectSameDay = canSelectSameDay;
22+
}
23+
1824
public Pair<Day, Day> getDays() {
1925
return days;
2026
}
@@ -25,7 +31,7 @@ public void toggleDay(@NonNull Day day) {
2531
tempDay = day;
2632
days = null;
2733
} else {
28-
if (tempDay == day) {
34+
if (tempDay == day && !canSelectSameDay) {
2935
return;
3036
}
3137
if (tempDay.getCalendar().getTime().before(day.getCalendar().getTime())) {
@@ -67,6 +73,9 @@ public SelectionState getSelectedState(Day day) {
6773
if (days == null) {
6874
return SelectionState.START_RANGE_DAY_WITHOUT_END;
6975
} else if (days.first.equals(day)) {
76+
if (days.first.equals(days.second)) {
77+
return SelectionState.SINGLE_RANGE_DAY;
78+
}
7079
return SelectionState.START_RANGE_DAY;
7180
} else if (days.second.equals(day)) {
7281
return SelectionState.END_RANGE_DAY;

cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/selection/SelectionState.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,6 @@ public enum SelectionState {
66
END_RANGE_DAY,
77
RANGE_DAY,
88
SINGLE_DAY,
9-
SINGLE_DAY_DETERMINATE
9+
SINGLE_DAY_DETERMINATE,
10+
SINGLE_RANGE_DAY
1011
}

cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/settings/SettingsManager.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,16 @@ public int getSelectedRangeTextColor() {
181181
return appearanceModel.getSelectedRangeTextColor();
182182
}
183183

184+
@Override
185+
public boolean getCanSelectSameDay() {
186+
return appearanceModel.getCanSelectSameDay();
187+
}
188+
189+
@Override
190+
public void setCanSelectSameDay(boolean canSelectSameDay) {
191+
appearanceModel.setCanSelectSameDay(canSelectSameDay);
192+
}
193+
184194
@Override
185195
public Map<String, List<String>> getHolidays() {
186196
return appearanceModel.getHolidays();

cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/settings/appearance/AppearanceInterface.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,10 @@ public interface AppearanceInterface {
5757

5858
int getSelectedRangeTextColor();
5959

60+
boolean getCanSelectSameDay();
61+
62+
void setCanSelectSameDay(boolean canSelectSameDay);
63+
6064
Map<String, List<String>> getHolidays();
6165

6266
Map<String, Integer> getDeterminators();

cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/settings/appearance/AppearanceModel.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ public class AppearanceModel implements AppearanceInterface {
8383

8484
private Map<String, List<String>> holidays;
8585
HashMap<String, String> pinsHash;
86+
boolean canSelectSameDay = false;
8687

8788
/**
8889
* Orientation of calendar
@@ -221,6 +222,16 @@ public int getSelectedRangeTextColor() {
221222
return selectedRangeTextColor;
222223
}
223224

225+
@Override
226+
public boolean getCanSelectSameDay() {
227+
return canSelectSameDay;
228+
}
229+
230+
@Override
231+
public void setCanSelectSameDay(boolean canSelectSameDay) {
232+
this.canSelectSameDay = canSelectSameDay;
233+
}
234+
224235
@Override
225236
public Map<String, List<String>> getHolidays() {
226237
return holidays;

cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/view/CalendarView.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -365,7 +365,7 @@ private void setSelectionManager() {
365365
break;
366366

367367
case SelectionType.RANGE:
368-
selectionManager = new RangeSelectionManager(this);
368+
selectionManager = new RangeSelectionManager(this, settingsManager.getCanSelectSameDay());
369369
break;
370370

371371
case SelectionType.NONE:
@@ -961,6 +961,16 @@ public int getSelectedRangeTextColor() {
961961
return settingsManager.getSelectedRangeTextColor();
962962
}
963963

964+
@Override
965+
public boolean getCanSelectSameDay() {
966+
return settingsManager.getCanSelectSameDay();
967+
}
968+
969+
@Override
970+
public void setCanSelectSameDay(boolean canSelectSameDay) {
971+
settingsManager.setCanSelectSameDay(canSelectSameDay);
972+
}
973+
964974
@Override
965975
public Map<String, List<String>> getHolidays() {
966976
return settingsManager.getHolidays();

cosmocalendar/src/main/java/com/applikeysolutions/cosmocalendar/view/customviews/CircleAnimationTextView.java

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,12 @@ public void draw(Canvas canvas) {
9696
drawCircle(canvas);
9797
break;
9898

99+
case SINGLE_RANGE_DAY:
100+
drawCircleOutlined(canvas);
101+
drawInnerOutlinedCircle(canvas);
102+
drawCircle(canvas);
103+
break;
104+
99105
case SINGLE_DAY:
100106
case SINGLE_DAY_DETERMINATE:
101107
//Animation not started yet
@@ -151,6 +157,21 @@ private void drawCircleUnder(Canvas canvas) {
151157
canvas.drawCircle(getWidth() / 2, getHeight() / 2, diameter / 2, circleUnderPaint);
152158
}
153159

160+
private void drawCircleOutlined(Canvas canvas) {
161+
if (circleUnderPaint == null || stateChanged) {
162+
createCircleUnderPaint();
163+
}
164+
final int diameter = (int)(getWidth() - DEFAULT_PADDING * 2.1);
165+
canvas.drawCircle(getWidth() / 2, getHeight() / 2, diameter / 1.6f, circleUnderPaint);
166+
}
167+
private void drawInnerOutlinedCircle(Canvas canvas) {
168+
if (circleUnderPaint == null || stateChanged) {
169+
createCircleUnderPaintSingleRange();
170+
}
171+
final int diameter = (int)(getWidth() - DEFAULT_PADDING * 2.1);
172+
canvas.drawCircle(getWidth() / 2, getHeight() / 2, diameter / 1.8f, circleUnderPaint);
173+
}
174+
154175
private void createCirclePaint() {
155176
circlePaint = new Paint();
156177
circlePaint.setColor(circleColor);
@@ -163,6 +184,12 @@ private void createCircleUnderPaint() {
163184
circleUnderPaint.setFlags(Paint.ANTI_ALIAS_FLAG);
164185
}
165186

187+
private void createCircleUnderPaintSingleRange() {
188+
circleUnderPaint = new Paint();
189+
circleUnderPaint.setColor(calendarView.getSelectedDayTextColor());
190+
circleUnderPaint.setFlags(Paint.ANTI_ALIAS_FLAG);
191+
}
192+
166193
private void drawRectangle(Canvas canvas) {
167194
if (rectanglePaint == null) {
168195
createRectanglePaint();
@@ -216,6 +243,10 @@ public void setSelectionStateAndAnimate(SelectionState state, CalendarView calen
216243
circleColor = calendarView.getSelectedDayBackgroundEndColor();
217244
break;
218245

246+
case SINGLE_RANGE_DAY:
247+
circleColor = calendarView.getSelectedDayBackgroundStartColor();
248+
break;
249+
219250
case START_RANGE_DAY_WITHOUT_END:
220251
setBackgroundColor(Color.TRANSPARENT);
221252
circleColor = calendarView.getSelectedDayBackgroundStartColor();
@@ -231,6 +262,7 @@ public void setSelectionStateAndAnimate(SelectionState state, CalendarView calen
231262
circleColor = day.getDeterminatorColor();
232263
setBackgroundColor(Color.TRANSPARENT);
233264
break;
265+
234266
default:
235267
circleColor = calendarView.getSelectedDayBackgroundColor();
236268
setBackgroundColor(Color.TRANSPARENT);
@@ -341,6 +373,15 @@ public void showAsStartCircle(CalendarView calendarView, boolean animate) {
341373
showAsCircle(calendarView.getSelectedDayBackgroundStartColor());
342374
}
343375

376+
public void showAsDoubleCircle(CalendarView calendarView, boolean animate) {
377+
if (animate) {
378+
clearVariables();
379+
}
380+
this.calendarView = calendarView;
381+
selectionState = SelectionState.SINGLE_RANGE_DAY;
382+
showAsCircle(calendarView.getSelectedRangeBackgroundColor());
383+
}
384+
344385
public void showAsStartCircleWithouEnd(CalendarView calendarView, boolean animate) {
345386
if (animate) {
346387
clearVariables();

0 commit comments

Comments
 (0)