New configuration-options for Calendar (#4716)

* Start- and end-hour for day and week view
* Summaries can be hidden for day and week view (month view was already available)
* The default view for first start can be selected
This commit is contained in:
Joachim Kohlhammer
2025-10-17 01:16:06 +02:00
committed by GitHub
parent 59dc7948c1
commit f9fd1840ec
4 changed files with 282 additions and 23 deletions

View File

@@ -42,6 +42,9 @@ PlanningCalendarWindow::PlanningCalendarWindow(Context *context)
calendar = new Calendar(QDate::currentDate(), static_cast<Qt::DayOfWeek>(getFirstDayOfWeek()), context->athlete->measures); calendar = new Calendar(QDate::currentDate(), static_cast<Qt::DayOfWeek>(getFirstDayOfWeek()), context->athlete->measures);
setStartHour(8);
setEndHour(21);
QVBoxLayout *mainLayout = new QVBoxLayout(); QVBoxLayout *mainLayout = new QVBoxLayout();
setChartLayout(mainLayout); setChartLayout(mainLayout);
mainLayout->addWidget(calendar); mainLayout->addWidget(calendar);
@@ -157,6 +160,23 @@ PlanningCalendarWindow::PlanningCalendarWindow(Context *context)
} }
int
PlanningCalendarWindow::getDefaultView
() const
{
return defaultViewCombo->currentIndex();
}
void
PlanningCalendarWindow::setDefaultView
(int view)
{
defaultViewCombo->setCurrentIndex(view);
calendar->setView(static_cast<CalendarView>(view));
}
int int
PlanningCalendarWindow::getFirstDayOfWeek PlanningCalendarWindow::getFirstDayOfWeek
() const () const
@@ -165,14 +185,6 @@ PlanningCalendarWindow::getFirstDayOfWeek
} }
bool
PlanningCalendarWindow::isSummaryVisibleMonth
() const
{
return summaryMonthCheck->isChecked();
}
void void
PlanningCalendarWindow::setFirstDayOfWeek PlanningCalendarWindow::setFirstDayOfWeek
(int fdw) (int fdw)
@@ -182,12 +194,96 @@ PlanningCalendarWindow::setFirstDayOfWeek
} }
int
PlanningCalendarWindow::getStartHour
() const
{
return startHourSpin->value();
}
void
PlanningCalendarWindow::setStartHour
(int hour)
{
startHourSpin->setValue(hour);
endHourSpin->setMinimum(hour + 1);
if (calendar != nullptr) {
calendar->setStartHour(hour);
updateActivities();
}
}
int
PlanningCalendarWindow::getEndHour
() const
{
return endHourSpin->value();
}
void
PlanningCalendarWindow::setEndHour
(int hour)
{
endHourSpin->setValue(hour);
startHourSpin->setMaximum(hour - 1);
if (calendar != nullptr) {
calendar->setEndHour(hour);
updateActivities();
}
}
bool
PlanningCalendarWindow::isSummaryVisibleDay
() const
{
return summaryDayCheck->isChecked();
}
void
PlanningCalendarWindow::setSummaryVisibleDay
(bool visible)
{
summaryDayCheck->setChecked(visible);
calendar->setSummaryDayVisible(visible);
}
bool
PlanningCalendarWindow::isSummaryVisibleWeek
() const
{
return summaryWeekCheck->isChecked();
}
void
PlanningCalendarWindow::setSummaryVisibleWeek
(bool visible)
{
summaryWeekCheck->setChecked(visible);
calendar->setSummaryWeekVisible(visible);
}
bool
PlanningCalendarWindow::isSummaryVisibleMonth
() const
{
return summaryMonthCheck->isChecked();
}
void void
PlanningCalendarWindow::setSummaryVisibleMonth PlanningCalendarWindow::setSummaryVisibleMonth
(bool svm) (bool visible)
{ {
summaryMonthCheck->setChecked(svm); summaryMonthCheck->setChecked(visible);
calendar->setSummaryMonthVisible(svm); calendar->setSummaryMonthVisible(visible);
} }
@@ -376,12 +472,27 @@ PlanningCalendarWindow::mkControls
() ()
{ {
QLocale locale; QLocale locale;
defaultViewCombo = new QComboBox();
defaultViewCombo->addItem(tr("Day View"));
defaultViewCombo->addItem(tr("Week View"));
defaultViewCombo->addItem(tr("Month View"));
defaultViewCombo->setCurrentIndex(static_cast<int>(CalendarView::Month));
firstDayOfWeekCombo = new QComboBox(); firstDayOfWeekCombo = new QComboBox();
for (int i = Qt::Monday; i <= Qt::Sunday; ++i) { for (int i = Qt::Monday; i <= Qt::Sunday; ++i) {
firstDayOfWeekCombo->addItem(locale.dayName(i, QLocale::LongFormat)); firstDayOfWeekCombo->addItem(locale.dayName(i, QLocale::LongFormat));
} }
firstDayOfWeekCombo->setCurrentIndex(locale.firstDayOfWeek() - 1); firstDayOfWeekCombo->setCurrentIndex(locale.firstDayOfWeek() - 1);
summaryMonthCheck = new QCheckBox(tr("Show weekly summary on month view")); startHourSpin = new QSpinBox();
startHourSpin->setSuffix(":00");
startHourSpin->setMinimum(0);
endHourSpin = new QSpinBox();
endHourSpin->setSuffix(":00");
endHourSpin->setMaximum(24);
summaryDayCheck = new QCheckBox(tr("Day View"));
summaryDayCheck->setChecked(true);
summaryWeekCheck = new QCheckBox(tr("Week View"));
summaryWeekCheck->setChecked(true);
summaryMonthCheck = new QCheckBox(tr("Month View"));
summaryMonthCheck->setChecked(true); summaryMonthCheck->setChecked(true);
primaryMainCombo = new QComboBox(); primaryMainCombo = new QComboBox();
primaryFallbackCombo = new QComboBox(); primaryFallbackCombo = new QComboBox();
@@ -399,41 +510,59 @@ PlanningCalendarWindow::mkControls
tertiaryCombo->setCurrentText("Notes"); tertiaryCombo->setCurrentText("Notes");
QStringList summaryMetrics { "ride_count", "total_distance", "coggan_tss", "workout_time" }; QStringList summaryMetrics { "ride_count", "total_distance", "coggan_tss", "workout_time" };
multiMetricSelector = new MultiMetricSelector(tr("Available Metrics"), tr("Selected Metrics"), summaryMetrics); multiMetricSelector = new MultiMetricSelector(tr("Available Metrics"), tr("Selected Metrics"), summaryMetrics);
multiMetricSelector->setMinimumHeight(300 * dpiYFactor);
QFormLayout *formLayout = newQFormLayout(); QFormLayout *formLayout = newQFormLayout();
formLayout->addRow(tr("First day of week"), firstDayOfWeekCombo); formLayout->addRow(tr("Default View on Startup"), defaultViewCombo);
formLayout->addRow(tr("First Day of Week"), firstDayOfWeekCombo);
formLayout->addRow(tr("Default Start Time"), startHourSpin);
formLayout->addRow(tr("Default End Time"), endHourSpin);
formLayout->addRow(tr("Show Summary In"), summaryDayCheck);
formLayout->addRow("", summaryWeekCheck);
formLayout->addRow("", summaryMonthCheck); formLayout->addRow("", summaryMonthCheck);
formLayout->addItem(new QSpacerItem(0, 10 * dpiYFactor, QSizePolicy::Minimum, QSizePolicy::Fixed));
formLayout->addRow(new QLabel(HLO + tr("Calendar Entries") + HLC)); formLayout->addRow(new QLabel(HLO + tr("Calendar Entries") + HLC));
formLayout->addRow(tr("Field for Primary Line"), primaryMainCombo); formLayout->addRow(tr("Field for Primary Line"), primaryMainCombo);
formLayout->addRow(tr("Fallback Field for Primary Line"), primaryFallbackCombo); formLayout->addRow(tr("Fallback Field for Primary Line"), primaryFallbackCombo);
formLayout->addRow(tr("Metric for Secondary Line"), secondaryCombo); formLayout->addRow(tr("Metric for Secondary Line"), secondaryCombo);
formLayout->addRow(tr("Field for Tertiary Line (day and week view)"), tertiaryCombo); formLayout->addRow(tr("Field for Tertiary Line (Day and Week View)"), tertiaryCombo);
formLayout->addItem(new QSpacerItem(0, 10 * dpiYFactor, QSizePolicy::Minimum, QSizePolicy::Fixed));
formLayout->addRow(new QLabel(HLO + tr("Summary") + HLC)); formLayout->addRow(new QLabel(HLO + tr("Summary") + HLC));
QWidget *controlsWidget = new QWidget(); QWidget *controlsWidget = new QWidget();
QVBoxLayout *controlsLayout = new QVBoxLayout(controlsWidget); QVBoxLayout *controlsLayout = new QVBoxLayout(controlsWidget);
controlsLayout->addWidget(centerLayoutInWidget(formLayout, false)); controlsLayout->addWidget(centerLayoutInWidget(formLayout, false));
controlsLayout->addWidget(multiMetricSelector, 2); controlsLayout->addWidget(multiMetricSelector);
controlsLayout->addStretch(1);
QScrollArea *controlsScroller = new QScrollArea();
controlsScroller->setWidgetResizable(true);
controlsScroller->setWidget(controlsWidget);
#if QT_VERSION < 0x060000 #if QT_VERSION < 0x060000
connect(startHourSpin, QOverload<int>::of(&QSpinBox::valueChanged), this, &PlanningCalendarWindow::setStartHour);
connect(endHourSpin, QOverload<int>::of(&QSpinBox::valueChanged), this, &PlanningCalendarWindow::setEndHour);
connect(defaultViewCombo, QOverload<int>::of(&QComboBox::currentIndexChanged), this, &PlanningCalendarWindow::setDefaultView);
connect(firstDayOfWeekCombo, QOverload<int>::of(&QComboBox::currentIndexChanged), [=](int idx) { setFirstDayOfWeek(idx + 1); }); connect(firstDayOfWeekCombo, QOverload<int>::of(&QComboBox::currentIndexChanged), [=](int idx) { setFirstDayOfWeek(idx + 1); });
connect(primaryMainCombo, QOverload<int>::of(&QComboBox::currentIndexChanged), this, &PlanningCalendarWindow::updateActivities); connect(primaryMainCombo, QOverload<int>::of(&QComboBox::currentIndexChanged), this, &PlanningCalendarWindow::updateActivities);
connect(primaryFallbackCombo, QOverload<int>::of(&QComboBox::currentIndexChanged), this, &PlanningCalendarWindow::updateActivities); connect(primaryFallbackCombo, QOverload<int>::of(&QComboBox::currentIndexChanged), this, &PlanningCalendarWindow::updateActivities);
connect(secondaryCombo, QOverload<int>::of(&QComboBox::currentIndexChanged), this, &PlanningCalendarWindow::updateActivities); connect(secondaryCombo, QOverload<int>::of(&QComboBox::currentIndexChanged), this, &PlanningCalendarWindow::updateActivities);
connect(tertiaryCombo, QOverload<int>::of(&QComboBox::currentIndexChanged), this, &PlanningCalendarWindow::updateActivities); connect(tertiaryCombo, QOverload<int>::of(&QComboBox::currentIndexChanged), this, &PlanningCalendarWindow::updateActivities);
#else #else
connect(startHourSpin, &QSpinBox::valueChanged, this, &PlanningCalendarWindow::setStartHour);
connect(endHourSpin, &QSpinBox::valueChanged, this, &PlanningCalendarWindow::setEndHour);
connect(defaultViewCombo, &QComboBox::currentIndexChanged, this, &PlanningCalendarWindow::setDefaultView);
connect(firstDayOfWeekCombo, &QComboBox::currentIndexChanged, [=](int idx) { setFirstDayOfWeek(idx + 1); }); connect(firstDayOfWeekCombo, &QComboBox::currentIndexChanged, [=](int idx) { setFirstDayOfWeek(idx + 1); });
connect(primaryMainCombo, &QComboBox::currentIndexChanged, this, &PlanningCalendarWindow::updateActivities); connect(primaryMainCombo, &QComboBox::currentIndexChanged, this, &PlanningCalendarWindow::updateActivities);
connect(primaryFallbackCombo, &QComboBox::currentIndexChanged, this, &PlanningCalendarWindow::updateActivities); connect(primaryFallbackCombo, &QComboBox::currentIndexChanged, this, &PlanningCalendarWindow::updateActivities);
connect(secondaryCombo, &QComboBox::currentIndexChanged, this, &PlanningCalendarWindow::updateActivities); connect(secondaryCombo, &QComboBox::currentIndexChanged, this, &PlanningCalendarWindow::updateActivities);
connect(tertiaryCombo, &QComboBox::currentIndexChanged, this, &PlanningCalendarWindow::updateActivities); connect(tertiaryCombo, &QComboBox::currentIndexChanged, this, &PlanningCalendarWindow::updateActivities);
#endif #endif
connect(summaryDayCheck, &QCheckBox::toggled, this, &PlanningCalendarWindow::setSummaryVisibleDay);
connect(summaryWeekCheck, &QCheckBox::toggled, this, &PlanningCalendarWindow::setSummaryVisibleWeek);
connect(summaryMonthCheck, &QCheckBox::toggled, this, &PlanningCalendarWindow::setSummaryVisibleMonth); connect(summaryMonthCheck, &QCheckBox::toggled, this, &PlanningCalendarWindow::setSummaryVisibleMonth);
connect(multiMetricSelector, &MultiMetricSelector::selectedChanged, this, &PlanningCalendarWindow::updateActivities); connect(multiMetricSelector, &MultiMetricSelector::selectedChanged, this, &PlanningCalendarWindow::updateActivities);
setControls(controlsWidget); setControls(controlsScroller);
} }

View File

@@ -38,7 +38,12 @@ class PlanningCalendarWindow : public GcChartWindow
{ {
Q_OBJECT Q_OBJECT
Q_PROPERTY(int defaultView READ getDefaultView WRITE setDefaultView USER true)
Q_PROPERTY(int firstDayOfWeek READ getFirstDayOfWeek WRITE setFirstDayOfWeek USER true) Q_PROPERTY(int firstDayOfWeek READ getFirstDayOfWeek WRITE setFirstDayOfWeek USER true)
Q_PROPERTY(int startHour READ getStartHour WRITE setStartHour USER true)
Q_PROPERTY(int endHour READ getEndHour WRITE setEndHour USER true)
Q_PROPERTY(bool summaryVisibleDay READ isSummaryVisibleDay WRITE setSummaryVisibleDay USER true)
Q_PROPERTY(bool summaryVisibleWeek READ isSummaryVisibleWeek WRITE setSummaryVisibleWeek USER true)
Q_PROPERTY(bool summaryVisibleMonth READ isSummaryVisibleMonth WRITE setSummaryVisibleMonth USER true) Q_PROPERTY(bool summaryVisibleMonth READ isSummaryVisibleMonth WRITE setSummaryVisibleMonth USER true)
Q_PROPERTY(QString primaryMainField READ getPrimaryMainField WRITE setPrimaryMainField USER true) Q_PROPERTY(QString primaryMainField READ getPrimaryMainField WRITE setPrimaryMainField USER true)
Q_PROPERTY(QString primaryFallbackField READ getPrimaryFallbackField WRITE setPrimaryFallbackField USER true) Q_PROPERTY(QString primaryFallbackField READ getPrimaryFallbackField WRITE setPrimaryFallbackField USER true)
@@ -49,7 +54,12 @@ class PlanningCalendarWindow : public GcChartWindow
public: public:
PlanningCalendarWindow(Context *context); PlanningCalendarWindow(Context *context);
int getDefaultView() const;
int getFirstDayOfWeek() const; int getFirstDayOfWeek() const;
int getStartHour() const;
int getEndHour() const;
bool isSummaryVisibleDay() const;
bool isSummaryVisibleWeek() const;
bool isSummaryVisibleMonth() const; bool isSummaryVisibleMonth() const;
bool isFiltered() const; bool isFiltered() const;
@@ -62,7 +72,12 @@ class PlanningCalendarWindow : public GcChartWindow
QStringList getSummaryMetricsList() const; QStringList getSummaryMetricsList() const;
public slots: public slots:
void setDefaultView(int view);
void setFirstDayOfWeek(int fdw); void setFirstDayOfWeek(int fdw);
void setStartHour(int hour);
void setEndHour(int hour);
void setSummaryVisibleDay(bool visible);
void setSummaryVisibleWeek(bool visible);
void setSummaryVisibleMonth(bool svm); void setSummaryVisibleMonth(bool svm);
void setPrimaryMainField(const QString &name); void setPrimaryMainField(const QString &name);
void setPrimaryFallbackField(const QString &name); void setPrimaryFallbackField(const QString &name);
@@ -76,14 +91,19 @@ class PlanningCalendarWindow : public GcChartWindow
Context *context; Context *context;
bool first = true; bool first = true;
QComboBox *defaultViewCombo;
QComboBox *firstDayOfWeekCombo; QComboBox *firstDayOfWeekCombo;
QSpinBox *startHourSpin;
QSpinBox *endHourSpin;
QCheckBox *summaryDayCheck;
QCheckBox *summaryWeekCheck;
QCheckBox *summaryMonthCheck; QCheckBox *summaryMonthCheck;
QComboBox *primaryMainCombo; QComboBox *primaryMainCombo;
QComboBox *primaryFallbackCombo; QComboBox *primaryFallbackCombo;
QComboBox *secondaryCombo; QComboBox *secondaryCombo;
QComboBox *tertiaryCombo; QComboBox *tertiaryCombo;
MultiMetricSelector *multiMetricSelector; MultiMetricSelector *multiMetricSelector;
Calendar *calendar; Calendar *calendar = nullptr;
void mkControls(); void mkControls();
void updatePrimaryConfigCombos(); void updatePrimaryConfigCombos();

View File

@@ -317,10 +317,8 @@ void
CalendarDayTable::fillEntries CalendarDayTable::fillEntries
(const QHash<QDate, QList<CalendarEntry>> &activityEntries, const QList<CalendarSummary> &summaries, const QHash<QDate, QList<CalendarEntry>> &headlineEntries) (const QHash<QDate, QList<CalendarEntry>> &activityEntries, const QList<CalendarSummary> &summaries, const QHash<QDate, QList<CalendarEntry>> &headlineEntries)
{ {
Q_UNUSED(headlineEntries) int startHour = defaultStartHour;
int endHour = defaultEndHour;
int startHour = 8;
int endHour = 21;
int numDays = type == CalendarDayTableType::Day ? 1 : 7; int numDays = type == CalendarDayTableType::Day ? 1 : 7;
for (int i = 0; i < numDays; ++i) { for (int i = 0; i < numDays; ++i) {
QTableWidgetItem *headlineItem = this->item(0, i + 1); QTableWidgetItem *headlineItem = this->item(0, i + 1);
@@ -399,6 +397,22 @@ CalendarDayTable::setFirstDayOfWeek
} }
void
CalendarDayTable::setStartHour
(int hour)
{
defaultStartHour = hour;
}
void
CalendarDayTable::setEndHour
(int hour)
{
defaultEndHour = hour;
}
void void
CalendarDayTable::changeEvent CalendarDayTable::changeEvent
(QEvent *event) (QEvent *event)
@@ -1423,6 +1437,30 @@ CalendarDayView::setFirstDayOfWeek
} }
void
CalendarDayView::setStartHour
(int hour)
{
dayTable->setStartHour(hour);
}
void
CalendarDayView::setEndHour
(int hour)
{
dayTable->setEndHour(hour);
}
void
CalendarDayView::setSummaryVisible
(bool visible)
{
dayTable->setRowHidden(2, ! visible);
}
void void
CalendarDayView::fillEntries CalendarDayView::fillEntries
(const QHash<QDate, QList<CalendarEntry>> &activityEntries, const QList<CalendarSummary> &summaries, const QHash<QDate, QList<CalendarEntry>> &headlineEntries) (const QHash<QDate, QList<CalendarEntry>> &activityEntries, const QList<CalendarSummary> &summaries, const QHash<QDate, QList<CalendarEntry>> &headlineEntries)
@@ -1683,6 +1721,30 @@ CalendarWeekView::setFirstDayOfWeek
} }
void
CalendarWeekView::setStartHour
(int hour)
{
weekTable->setStartHour(hour);
}
void
CalendarWeekView::setEndHour
(int hour)
{
weekTable->setEndHour(hour);
}
void
CalendarWeekView::setSummaryVisible
(bool visible)
{
weekTable->setRowHidden(2, ! visible);
}
void void
CalendarWeekView::fillEntries CalendarWeekView::fillEntries
(const QHash<QDate, QList<CalendarEntry>> &activityEntries, const QList<CalendarSummary> &summaries, const QHash<QDate, QList<CalendarEntry>> &headlineEntries) (const QHash<QDate, QList<CalendarEntry>> &activityEntries, const QList<CalendarSummary> &summaries, const QHash<QDate, QList<CalendarEntry>> &headlineEntries)
@@ -2077,6 +2139,40 @@ Calendar::setFirstDayOfWeek
} }
void
Calendar::setStartHour
(int hour)
{
weekView->setStartHour(hour);
dayView->setStartHour(hour);
}
void
Calendar::setEndHour
(int hour)
{
weekView->setEndHour(hour);
dayView->setEndHour(hour);
}
void
Calendar::setSummaryDayVisible
(bool visible)
{
dayView->setSummaryVisible(visible);
}
void
Calendar::setSummaryWeekVisible
(bool visible)
{
weekView->setSummaryVisible(visible);
}
void void
Calendar::setSummaryMonthVisible Calendar::setSummaryMonthVisible
(bool visible) (bool visible)

View File

@@ -86,6 +86,8 @@ public:
void fillEntries(const QHash<QDate, QList<CalendarEntry>> &activityEntries, const QList<CalendarSummary> &summaries, const QHash<QDate, QList<CalendarEntry>> &headlineEntries); void fillEntries(const QHash<QDate, QList<CalendarEntry>> &activityEntries, const QList<CalendarSummary> &summaries, const QHash<QDate, QList<CalendarEntry>> &headlineEntries);
void limitDateRange(const DateRange &dr); void limitDateRange(const DateRange &dr);
void setFirstDayOfWeek(Qt::DayOfWeek firstDayOfWeek); void setFirstDayOfWeek(Qt::DayOfWeek firstDayOfWeek);
void setStartHour(int hour);
void setEndHour(int hour);
signals: signals:
void dayClicked(const CalendarDay &day, const QTime &time); void dayClicked(const CalendarDay &day, const QTime &time);
@@ -121,6 +123,8 @@ private:
QDate date; QDate date;
DateRange dr; DateRange dr;
CalendarDayTableType type; CalendarDayTableType type;
int defaultStartHour = 8;
int defaultEndHour = 21;
QTimer dragTimer; QTimer dragTimer;
QPoint pressedPos; QPoint pressedPos;
@@ -220,6 +224,9 @@ public:
bool setDay(const QDate &date); bool setDay(const QDate &date);
void setFirstDayOfWeek(Qt::DayOfWeek firstDayOfWeek); void setFirstDayOfWeek(Qt::DayOfWeek firstDayOfWeek);
void setStartHour(int hour);
void setEndHour(int hour);
void setSummaryVisible(bool visible);
void fillEntries(const QHash<QDate, QList<CalendarEntry>> &activityEntries, const QList<CalendarSummary> &summaries, const QHash<QDate, QList<CalendarEntry>> &headlineEntries); void fillEntries(const QHash<QDate, QList<CalendarEntry>> &activityEntries, const QList<CalendarSummary> &summaries, const QHash<QDate, QList<CalendarEntry>> &headlineEntries);
void limitDateRange(const DateRange &dr); void limitDateRange(const DateRange &dr);
QDate firstVisibleDay() const; QDate firstVisibleDay() const;
@@ -254,6 +261,9 @@ public:
bool setDay(const QDate &date); bool setDay(const QDate &date);
void setFirstDayOfWeek(Qt::DayOfWeek firstDayOfWeek); void setFirstDayOfWeek(Qt::DayOfWeek firstDayOfWeek);
void setStartHour(int hour);
void setEndHour(int hour);
void setSummaryVisible(bool visible);
void fillEntries(const QHash<QDate, QList<CalendarEntry>> &activityEntries, const QList<CalendarSummary> &summaries, const QHash<QDate, QList<CalendarEntry>> &headlineEntries); void fillEntries(const QHash<QDate, QList<CalendarEntry>> &activityEntries, const QList<CalendarSummary> &summaries, const QHash<QDate, QList<CalendarEntry>> &headlineEntries);
void limitDateRange(const DateRange &dr); void limitDateRange(const DateRange &dr);
QDate firstVisibleDay() const; QDate firstVisibleDay() const;
@@ -299,6 +309,10 @@ public slots:
void setView(CalendarView view); void setView(CalendarView view);
void activateDateRange(const DateRange &dr, bool allowKeepMonth = false); void activateDateRange(const DateRange &dr, bool allowKeepMonth = false);
void setFirstDayOfWeek(Qt::DayOfWeek firstDayOfWeek); void setFirstDayOfWeek(Qt::DayOfWeek firstDayOfWeek);
void setStartHour(int hour);
void setEndHour(int hour);
void setSummaryDayVisible(bool visible);
void setSummaryWeekVisible(bool visible);
void setSummaryMonthVisible(bool visible); void setSummaryMonthVisible(bool visible);
void applyNavIcons(); void applyNavIcons();
void updateMeasures(); void updateMeasures();