1 #include "daynavigatorwidget.h"
4 #include <QFontMetrics>
9 DayNavigatorWidget::DayNavigatorWidget(QWidget *aParent)
16 connect(prevDayButton, SIGNAL(clicked()), SLOT(prevDayButtonClicked()));
17 connect(nextDayButton, SIGNAL(clicked()), SLOT(nextDayButtonClicked()));
19 mFontMetrics = new QFontMetrics(QLabel().font());
22 void DayNavigatorWidget::setDates(const QDate &aStartDate, const QDate &aEndDate)
24 Q_ASSERT(aStartDate<=aEndDate);
26 //qDebug() << "DayNavigatorWidget::setDates(): " << aStartDate << ", " << aEndDate;
27 mStartDate = aStartDate;
29 mCurDate = aStartDate;
31 QRect rect = mFontMetrics->boundingRect(mCurDate.toString("MMM dd yyyy"));
32 qDebug() << mCurDate.toString();
34 if(mStartDate==mEndDate) // only one day conference
36 prevDayButton->setDisabled(true);
37 nextDayButton->setDisabled(true);
38 emit(dateChanged(mCurDate));
42 // at least 2-days conference
43 prevDayButton->setDisabled(true);
44 nextDayButton->setDisabled(false);
45 emit(dateChanged(mCurDate));
49 void DayNavigatorWidget::prevDayButtonClicked()
51 //qDebug() << mStartDate << ":" << mCurDate << ":" << mEndDate;
52 if(mCurDate>mStartDate)
54 mCurDate = mCurDate.addDays(-1);
56 if(mCurDate==mStartDate || mStartDate==mEndDate)
57 prevDayButton->setDisabled(true);
59 prevDayButton->setDisabled(false);
61 if(mCurDate==mEndDate || mStartDate==mEndDate)
62 nextDayButton->setDisabled(true);
64 nextDayButton->setDisabled(false);
66 emit(dateChanged(mCurDate));
67 selectedDate->update();
71 void DayNavigatorWidget::nextDayButtonClicked()
73 //qDebug() << mStartDate << ":" << mCurDate << ":" << mEndDate;
76 mCurDate = mCurDate.addDays(1);
78 if(mCurDate==mStartDate || mStartDate==mEndDate)
79 prevDayButton->setDisabled(true);
81 prevDayButton->setDisabled(false);
83 if(mCurDate==mEndDate || mStartDate==mEndDate)
84 nextDayButton->setDisabled(true);
86 nextDayButton->setDisabled(false);
88 emit(dateChanged(mCurDate));
89 selectedDate->update();
93 QDate DayNavigatorWidget::getCurrentDate()
98 void DayNavigatorWidget::paintEvent(QPaintEvent *aEvent)
100 QString selectedDateStr = mCurDate.toString("MMM dd yyyy");
102 QPainter painter(this);
104 QRect r = selectedDate->geometry();
105 QRect s = mFontMetrics->boundingRect(selectedDateStr);
107 r.x() + r.width()/2 - s.height()/2 - mFontMetrics->descent(),
111 painter.translate(r.width()/2, r.height()/2);
113 painter.drawText(p.y(), p.x(), selectedDateStr); // y,x,string