public Drawable getDrawableFromWeekdayItemProperties(WeekdaysDataItem dayItem) {
   return getDrawableFromType(
       dayItem.getCalendarDayId(),
       dayItem.getTextDrawableType(),
       dayItem.getLabel(),
       dayItem.isSelected());
 }
 @UiThread
 public WeekdaysDataSource setNumberOfLetters(int numberOfLetters) {
   this.mNumberOfLetters = numberOfLetters;
   for (WeekdaysDataItem item : getWeekdaysItems()) {
     item.setNumberOfLetters(numberOfLetters);
   }
   return this;
 }
 public boolean isAllDaysSelected() {
   if (mIsAllDaysSelected) return true;
   int countSelected = 0;
   for (WeekdaysDataItem item : getWeekdaysItems()) {
     if (item.isSelected()) countSelected++;
   }
   return countSelected == getWeekdaysCount();
 }
  private HashMap<Integer, Boolean> getSelectedDays() {
    if (mSelectedDaysMap == null) mSelectedDaysMap = new HashMap<>();

    for (WeekdaysDataItem item : getWeekdaysItems()) {
      mSelectedDaysMap.put(item.getCalendarDayId(), item.isSelected());
    }
    return mSelectedDaysMap;
  }
 private WeekdaysDataItem toggleSelected(WeekdaysDataItem item) {
   item.toggleSelected();
   item.setDrawable(getDrawableFromWeekdayItemProperties(item));
   if (mIsAllDaysSelected) mIsAllDaysSelected = item.isSelected();
   return item;
 }