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"));
33 if(mStartDate==mEndDate) // only one day conference
35 prevDayButton->setDisabled(true);
36 nextDayButton->setDisabled(true);
37 emit(dateChanged(mCurDate));
41 // at least 2-days conference
42 prevDayButton->setDisabled(true);
43 nextDayButton->setDisabled(false);
44 emit(dateChanged(mCurDate));
48 void DayNavigatorWidget::prevDayButtonClicked()
50 //qDebug() << mStartDate << ":" << mCurDate << ":" << mEndDate;
51 if(mCurDate>mStartDate)
53 mCurDate = mCurDate.addDays(-1);
55 if(mCurDate==mStartDate || mStartDate==mEndDate)
56 prevDayButton->setDisabled(true);
58 prevDayButton->setDisabled(false);
60 if(mCurDate==mEndDate || mStartDate==mEndDate)
61 nextDayButton->setDisabled(true);
63 nextDayButton->setDisabled(false);
65 emit(dateChanged(mCurDate));
66 selectedDate->update();
70 void DayNavigatorWidget::nextDayButtonClicked()
72 //qDebug() << mStartDate << ":" << mCurDate << ":" << mEndDate;
75 mCurDate = mCurDate.addDays(1);
77 if(mCurDate==mStartDate || mStartDate==mEndDate)
78 prevDayButton->setDisabled(true);
80 prevDayButton->setDisabled(false);
82 if(mCurDate==mEndDate || mStartDate==mEndDate)
83 nextDayButton->setDisabled(true);
85 nextDayButton->setDisabled(false);
87 emit(dateChanged(mCurDate));
88 selectedDate->update();
92 QDate DayNavigatorWidget::getCurrentDate()
97 void DayNavigatorWidget::paintEvent(QPaintEvent *aEvent)
101 QString selectedDateStr = mCurDate.toString("MMM dd yyyy");
103 QPainter painter(this);
105 QRect r = selectedDate->geometry();
106 QRect s = mFontMetrics->boundingRect(selectedDateStr);
108 r.x() + r.width()/2 - s.height()/2 - mFontMetrics->descent(),
112 painter.translate(r.width()/2, r.height()/2);
114 painter.drawText(p.y(), p.x(), selectedDateStr); // y,x,string