+QSize DayNavigatorWidget::minimumSizeHint() const {
+#ifdef MAEMO
+ return QSize(20, 0);
+#else
+ return QSize(fontMetrics().lineSpacing() * 3 / 2, 0);
+#endif
+}
+
+
+void DayNavigatorWidget::configureNavigation() {
+ prevDayButton->setDisabled(!mStartDate.isValid() || mCurDate == mStartDate);
+ nextDayButton->setDisabled(!mEndDate.isValid() || mCurDate == mEndDate);
+}
+
+
+void DayNavigatorWidget::prevDayButtonClicked() {
+ if(mCurDate <= mStartDate) return;
+ mCurDate = mCurDate.addDays(-1);
+ configureNavigation();
+ emit(dateChanged(mCurDate));
+ this->update();
+}
+
+
+void DayNavigatorWidget::nextDayButtonClicked() {
+ if(mCurDate >= mEndDate) return;
+ mCurDate = mCurDate.addDays(1);
+ configureNavigation();
+ emit(dateChanged(mCurDate));
+ this->update();
+}
+
+
+void DayNavigatorWidget::paintEvent(QPaintEvent *aEvent) {
+ Q_UNUSED(aEvent);
+ QString selectedDateStr;
+ if (mCurDate.isValid()) {
+ QString selectedDateFormat =
+#ifdef MAEMO
+ "dddd\nyyyy-MM-dd";
+#else
+ "dddd • yyyy-MM-dd";
+#endif
+ selectedDateStr = mCurDate.toString(selectedDateFormat);
+ bool hasConference = ((Application*) qApp)->hasActiveConference();
+ if (hasConference) {
+ Conference& conference = ((Application*) qApp)->activeConference();
+ if (conference.hasDisplayTimeShift() && conference.displayTimeShift() != 0) {
+ QTime shift(0, 0);
+ bool minus = conference.displayTimeShift() < 0;
+ shift = shift.addSecs(conference.displayTimeShift() * 60 * (minus ? -1 : 1));
+ selectedDateStr += " • " + (minus ? QString("-") : "+") + shift.toString("HH:mm");
+ }
+ }
+ } else {
+ selectedDateStr = tr("No date");
+ }
+ QPainter painter(this);
+ painter.save();
+
+ // rectangle only for the text
+ QRect q(-selectedDate->height()-selectedDate->y(), selectedDate->x(), selectedDate->height(), selectedDate->width());
+ painter.rotate(270);
+
+ // font size adjustion, static on maemo, dynamically otherwise
+ QFont f = painter.font();
+#ifdef MAEMO
+ qreal factor = 0.8;
+#else
+#if QT_VERSION >= 0x050b00 // QT 5.11
+ auto dateStrWidth = painter.fontMetrics().horizontalAdvance(selectedDateStr);
+#else
+ auto dateStrWidth = painter.fontMetrics().width(selectedDateStr);
+#endif
+ qreal factor = (qreal) 2 * q.width() / dateStrWidth;
+#endif
+ if (factor < 1) f.setPointSizeF(f.pointSizeF() * factor);
+ painter.setFont(f);
+
+ painter.drawText(q, Qt::AlignCenter, selectedDateStr);
+ painter.restore();
+}