Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,28 @@ public void setWeekendDays(Set<Long> weekendDays) {
setDaysAccordingToSet(weekendDays, DayFlag.WEEKEND);
}

public void setMinDate(Calendar minDate){
for (Month month : months) {
for (Day day : month.getDays()) {
if(!day.isDisabled()){
day.setDisabled(CalendarUtils.isDayDisabledByMinDate(day, minDate));
}
}
}
notifyDataSetChanged();
}

public void setMaxDate(Calendar maxDate){
for (Month month : months) {
for (Day day : month.getDays()) {
if(!day.isDisabled()){
day.setDisabled(CalendarUtils.isDayDisabledByMaxDate(day, maxDate));
}
}
}
notifyDataSetChanged();
}

public void setDisabledDays(Set<Long> disabledDays) {
setDaysAccordingToSet(disabledDays, DayFlag.DISABLED);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
import com.applikeysolutions.cosmocalendar.settings.selection.SelectionInterface;
import com.applikeysolutions.cosmocalendar.view.CalendarView;

import java.util.Calendar;
import java.util.List;
import java.util.Set;

Expand Down Expand Up @@ -343,6 +344,16 @@ public void setShowDaysOfWeekTitle(boolean showDaysOfWeekTitle) {
calendarView.setShowDaysOfWeekTitle(showDaysOfWeekTitle);
}

@Override
public Calendar getMinDate() {
return calendarView.getMinDate();
}

@Override
public Calendar getMaxDate() {
return calendarView.getMaxDate();
}

@Override
public Set<Long> getDisabledDays() {
return calendarView.getDisabledDays();
Expand All @@ -363,6 +374,16 @@ public DisabledDaysCriteria getDisabledDaysCriteria() {
return calendarView.getDisabledDaysCriteria();
}

@Override
public void setMinDate(Calendar minDate) {
calendarView.setMinDate(minDate);
}

@Override
public void setMaxDate(Calendar maxDate) {
calendarView.setMaxDate(maxDate);
}

@Override
public void setDisabledDays(Set<Long> disabledDays) {
calendarView.setDisabledDays(disabledDays);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -282,6 +282,16 @@ public void setShowDaysOfWeekTitle(boolean showDaysOfWeekTitle) {
appearanceModel.setShowDaysOfWeekTitle(showDaysOfWeekTitle);
}

@Override
public Calendar getMinDate() {
return calendarListsModel.getMinDate();
}

@Override
public Calendar getMaxDate() {
return calendarListsModel.getMaxDate();
}

@Override
public Set<Long> getDisabledDays() {
return calendarListsModel.getDisabledDays();
Expand Down Expand Up @@ -331,4 +341,15 @@ public int getFirstDayOfWeek() {
public void setFirstDayOfWeek(int firstDayOfWeek) {
dateModel.setFirstDayOfWeek(firstDayOfWeek);
}

@Override
public void setMinDate(Calendar minDate) {
calendarListsModel.setMinDate(minDate);
}

@Override
public void setMaxDate(Calendar maxDate) {
calendarListsModel.setMaxDate(maxDate);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,15 @@
import com.applikeysolutions.cosmocalendar.settings.lists.connected_days.ConnectedDays;
import com.applikeysolutions.cosmocalendar.settings.lists.connected_days.ConnectedDaysManager;

import java.util.Calendar;
import java.util.Set;

public interface CalendarListsInterface {

Calendar getMinDate();

Calendar getMaxDate();

Set<Long> getDisabledDays();

ConnectedDaysManager getConnectedDaysManager();
Expand All @@ -15,6 +20,10 @@ public interface CalendarListsInterface {

DisabledDaysCriteria getDisabledDaysCriteria();

void setMinDate(Calendar minDate);

void setMaxDate(Calendar maxDate);

void setDisabledDays(Set<Long> disabledDays);

void setWeekendDays(Set<Long> weekendDays);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,10 @@

public class CalendarListsModel implements CalendarListsInterface {

private Calendar minDate;

private Calendar maxDate;

//Disabled days cannot be selected
private Set<Long> disabledDays = new TreeSet<>();

Expand All @@ -22,6 +26,16 @@ public class CalendarListsModel implements CalendarListsInterface {
add(Calendar.SUNDAY);
}};

@Override
public Calendar getMinDate() {
return minDate;
}

@Override
public Calendar getMaxDate() {
return maxDate;
}

@Override
public Set<Long> getDisabledDays() {
return disabledDays;
Expand All @@ -42,6 +56,16 @@ public DisabledDaysCriteria getDisabledDaysCriteria() {
return disabledDaysCriteria;
}

@Override
public void setMinDate(Calendar minDate) {
this.minDate = minDate;
}

@Override
public void setMaxDate(Calendar maxDate) {
this.maxDate = maxDate;
}

@Override
public void setDisabledDays(Set<Long> disabledDays) {
this.disabledDays = disabledDays;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -157,8 +157,20 @@ public static void setDay(Day day, SettingsManager settingsManager) {
day.setWeekend(settingsManager.getWeekendDays().contains(day.getCalendar().get(Calendar.DAY_OF_WEEK)));
}

if (settingsManager.getMinDate() != null) {
day.setDisabled(isDayDisabledByMinDate(day, settingsManager.getMinDate()));
}

if (settingsManager.getMaxDate() != null) {
if (!day.isDisabled()) {
day.setDisabled(isDayDisabledByMaxDate(day, settingsManager.getMaxDate()));
}
}

if (settingsManager.getDisabledDays() != null) {
day.setDisabled(isDayInSet(day, settingsManager.getDisabledDays()));
if(!day.isDisabled()) {
day.setDisabled(isDayInSet(day, settingsManager.getDisabledDays()));
}
}

if (settingsManager.getDisabledDaysCriteria() != null) {
Expand All @@ -183,6 +195,18 @@ public static boolean isDayInSet(Day day, Set<Long> daysInSet) {
return false;
}

public static boolean isDayDisabledByMinDate(Day day, Calendar minDate) {
return day.getCalendar().get(Calendar.YEAR) < minDate.get(Calendar.YEAR)
|| day.getCalendar().get(Calendar.YEAR) == minDate.get(Calendar.YEAR)
&& day.getCalendar().get(Calendar.DAY_OF_YEAR) < minDate.get(Calendar.DAY_OF_YEAR);
}

public static boolean isDayDisabledByMaxDate(Day day, Calendar maxDate) {
return day.getCalendar().get(Calendar.YEAR) > maxDate.get(Calendar.YEAR)
|| day.getCalendar().get(Calendar.YEAR) == maxDate.get(Calendar.YEAR)
&& day.getCalendar().get(Calendar.DAY_OF_YEAR) > maxDate.get(Calendar.DAY_OF_YEAR);
}

public static boolean isDayDisabledByCriteria(Day day, DisabledDaysCriteria criteria) {
int field = -1;
switch (criteria.getCriteriaType()){
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -101,8 +101,7 @@ public class CalendarView extends RelativeLayout implements OnDaySelectedListene
private FetchMonthsAsyncTask asyncTask;

public CalendarView(Context context) {
super(context);
init();
this(context, null);
}

public CalendarView(Context context, @Nullable AttributeSet attrs) {
Expand Down Expand Up @@ -512,6 +511,16 @@ private void loadAsyncMonths(final boolean future){
asyncTask.execute(new FetchMonthsAsyncTask.FetchParams(future, month, settingsManager, monthAdapter, SettingsManager.DEFAULT_MONTH_COUNT));
}

@Override
public Calendar getMinDate() {
return settingsManager.getMinDate();
}

@Override
public Calendar getMaxDate() {
return settingsManager.getMaxDate();
}

@Override
public Set<Long> getDisabledDays() {
return settingsManager.getDisabledDays();
Expand All @@ -532,6 +541,18 @@ public DisabledDaysCriteria getDisabledDaysCriteria() {
return settingsManager.getDisabledDaysCriteria();
}

@Override
public void setMinDate(Calendar minDate) {
settingsManager.setMinDate(minDate);
monthAdapter.setMinDate(minDate);
}

@Override
public void setMaxDate(Calendar maxDate) {
settingsManager.setMaxDate(maxDate);
monthAdapter.setMaxDate(maxDate);
}

public void setDisabledDays(Set<Long> disabledDays) {
settingsManager.setDisabledDays(disabledDays);
monthAdapter.setDisabledDays(disabledDays);
Expand Down