Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #include "qxtscheduleheaderwidget.h"
00026 #include "qxtscheduleview.h"
00027 #include "qxtscheduleviewheadermodel_p.h"
00028
00029 #include <QPainter>
00030 #include <QDateTime>
00031 #include <QDate>
00032 #include <QTime>
00033
00034
00040 QxtScheduleHeaderWidget::QxtScheduleHeaderWidget(Qt::Orientation orientation , QxtScheduleView *parent) : QHeaderView(orientation, parent)
00041 {
00042 QxtScheduleViewHeaderModel *model = new QxtScheduleViewHeaderModel(this);
00043 setModel(model);
00044
00045 if (parent)
00046 {
00047 model->setDataSource(parent);
00048 }
00049 }
00050
00051 void QxtScheduleHeaderWidget::paintSection(QPainter * painter, const QRect & rect, int logicalIndex) const
00052 {
00053 if (model())
00054 {
00055 switch (orientation())
00056 {
00057 case Qt::Horizontal:
00058 {
00059 QHeaderView::paintSection(painter, rect, logicalIndex);
00060 }
00061 break;
00062 case Qt::Vertical:
00063 {
00064 QTime time = model()->headerData(logicalIndex, Qt::Vertical, Qt::DisplayRole).toTime();
00065 if (time.isValid())
00066 {
00067 QRect temp = rect;
00068 temp.adjust(1, 1, -1, -1);
00069
00070 painter->fillRect(rect, this->palette().background());
00071
00072 if (time.minute() == 0)
00073 {
00074 painter->drawLine(temp.topLeft() + QPoint(temp.width() / 3, 0), temp.topRight());
00075 painter->drawText(temp, Qt::AlignTop | Qt::AlignRight, time.toString("hh:mm"));
00076 }
00077 }
00078 }
00079 break;
00080 default:
00081 Q_ASSERT(false);
00082 }
00083 }
00084 }
00085
00086 void QxtScheduleHeaderWidget::setModel(QxtScheduleViewHeaderModel *model)
00087 {
00088 QHeaderView::setModel(model);
00089 }