private void invalidateDecorators() { final DayViewFacade facadeAccumulator = new DayViewFacade(); for (DayView dayView : monthDayViews) { facadeAccumulator.reset(); for (DecoratorResult result : decoratorResults) { if (result.decorator.shouldDecorate(dayView.getDate())) { result.result.applyTo(facadeAccumulator); } } dayView.applyFacade(facadeAccumulator); } }
public void invalidateDecorators() { decoratorResults = new ArrayList<>(); for (DayViewDecorator decorator : decorators) { DayViewFacade facade = new DayViewFacade(); decorator.decorate(facade); if (facade.isDecorated()) { decoratorResults.add(new DecoratorResult(decorator, facade)); } } for (MonthView monthView : currentViews) { monthView.setDayViewDecorators(decoratorResults); } }
/** @param facade apply the facade to us */ void applyFacade(DayViewFacade facade) { this.isDecoratedDisabled = facade.areDaysDisabled(); setEnabled(); setCustomBackground(facade.getBackgroundDrawable()); setSelectionDrawable(facade.getSelectionDrawable()); // Facade has spans List<DayViewFacade.Span> spans = facade.getSpans(); if (!spans.isEmpty()) { String label = getLabel(); SpannableString formattedLabel = new SpannableString(getLabel()); for (DayViewFacade.Span span : spans) { formattedLabel.setSpan(span.span, 0, label.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); } setText(formattedLabel); } // Reset in case it was customized previously else { setText(getLabel()); } }