KD Chart API Documentation 3.1
Loading...
Searching...
No Matches
kdganttdatetimegrid.h
Go to the documentation of this file.
1/****************************************************************************
2**
3** This file is part of the KD Chart library.
4**
5** SPDX-FileCopyrightText: 2001 Klarälvdalens Datakonsult AB, a KDAB Group company <info@kdab.com>
6**
7** SPDX-License-Identifier: MIT
8**
9****************************************************************************/
10
11#ifndef KDGANTTDATETIMEGRID_H
12#define KDGANTTDATETIMEGRID_H
13
14#include "kdganttabstractgrid.h"
15
16#include <QDateTime>
17#include <QSet>
18
19namespace KDGantt {
20
21class DateTimeScaleFormatter;
22
23class KDGANTT_EXPORT DateTimeGrid : public AbstractGrid
24{
25 Q_OBJECT
27public:
37
39 ~DateTimeGrid() override;
40
41 QDateTime startDateTime() const;
42 void setStartDateTime(const QDateTime &dt);
43
44 qreal dayWidth() const;
45 void setDayWidth(qreal);
46
47 qreal mapFromDateTime(const QDateTime &dt) const;
48 QDateTime mapToDateTime(qreal x) const;
49
50 void setWeekStart(Qt::DayOfWeek);
51 Qt::DayOfWeek weekStart() const;
52
53 void setFreeDays(const QSet<Qt::DayOfWeek> &fd);
54 QSet<Qt::DayOfWeek> freeDays() const;
55
56 void setFreeDaysBrush(const QBrush brush);
57 QBrush freeDaysBrush() const;
58
59 void setScale(Scale s);
60 Scale scale() const;
61
62 void setUserDefinedLowerScale(DateTimeScaleFormatter *lower);
63 void setUserDefinedUpperScale(DateTimeScaleFormatter *upper);
64 DateTimeScaleFormatter *userDefinedLowerScale() const;
65 DateTimeScaleFormatter *userDefinedUpperScale() const;
66
67 bool rowSeparators() const;
68 void setRowSeparators(bool enable);
69
70 void setNoInformationBrush(const QBrush &brush);
71 QBrush noInformationBrush() const;
72
73 /*reimp*/ Span mapToChart(const QModelIndex &idx) const override;
74 /*reimp*/ bool mapFromChart(const Span &span, const QModelIndex &idx,
75 const QList<Constraint> &constraints = QList<Constraint>()) const override;
76 /*reimp*/ qreal mapToChart(const QVariant &value) const override;
77 /*reimp*/ QVariant mapFromChart(qreal x) const override;
78 /*reimp*/ void paintGrid(QPainter *painter,
79 const QRectF &sceneRect, const QRectF &exposedRect,
80 AbstractRowController *rowController = nullptr,
81 QWidget *widget = nullptr) override;
82 /*reimp*/ void paintHeader(QPainter *painter,
83 const QRectF &headerRect, const QRectF &exposedRect,
84 qreal offset, QWidget *widget = nullptr) override;
85
86protected:
87 virtual void paintHourScaleHeader(QPainter *painter,
88 const QRectF &headerRect, const QRectF &exposedRect,
89 qreal offset, QWidget *widget = nullptr);
90 virtual void paintDayScaleHeader(QPainter *painter,
91 const QRectF &headerRect, const QRectF &exposedRect,
92 qreal offset, QWidget *widget = nullptr);
93 virtual void paintWeekScaleHeader(QPainter *painter,
94 const QRectF &headerRect, const QRectF &exposedRect,
95 qreal offset, QWidget *widget = nullptr);
96 virtual void paintMonthScaleHeader(QPainter *painter,
97 const QRectF &headerRect, const QRectF &exposedRect,
98 qreal offset, QWidget *widget = nullptr);
99
100 virtual void paintUserDefinedHeader(QPainter *painter,
101 const QRectF &headerRect, const QRectF &exposedRect,
102 qreal offset, const DateTimeScaleFormatter *formatter,
103 QWidget *widget = nullptr);
104
105 virtual void drawDayBackground(QPainter *painter, const QRectF &rect, const QDate &date);
106 virtual void drawDayForeground(QPainter *painter, const QRectF &rect, const QDate &date);
107
108 QRectF computeRect(const QDateTime &from, const QDateTime &to, const QRectF &rect) const;
109 QPair<QDateTime, QDateTime> dateTimeRange(const QRectF &rect) const;
110
111 /* reimp */ void drawBackground(QPainter *paint, const QRectF &rect) override;
112 /* reimp */ void drawForeground(QPainter *paint, const QRectF &rect) override;
113};
114
115class KDGANTT_EXPORT DateTimeScaleFormatter
116{
118public:
129
130 DateTimeScaleFormatter(Range range, const QString &formatString,
131 Qt::Alignment alignment = Qt::AlignCenter);
132 DateTimeScaleFormatter(Range range, const QString &formatString,
133 const QString &templ, Qt::Alignment alignment = Qt::AlignCenter);
135 virtual ~DateTimeScaleFormatter();
136
137 DateTimeScaleFormatter &operator=(const DateTimeScaleFormatter &other);
138
139 QString format() const;
140 Range range() const;
141 Qt::Alignment alignment() const;
142
143 virtual QDateTime nextRangeBegin(const QDateTime &datetime) const;
144 virtual QDateTime currentRangeBegin(const QDateTime &datetime) const;
145
146 QString format(const QDateTime &datetime) const;
147 virtual QString text(const QDateTime &datetime) const;
148};
149}
150
151#ifndef QT_NO_DEBUG_STREAM
153#endif
154
155#endif /* KDGANTTDATETIMEGRID_H */
Abstract baseclass for grids.
Abstract baseclass for row controllers.
This implementation of AbstractGrid works with QDateTime and shows days and week numbers in the heade...
This class formats dates and times used in DateTimeGrid follawing a given format.
A class representing a start point and a length.
QDebug KDGANTT_EXPORT operator<<(QDebug dbg, KDGantt::DateTimeScaleFormatter::Range)
#define KDGANTT_DECLARE_PRIVATE_BASE_POLYMORPHIC(X)
#define KDGANTT_DECLARE_PRIVATE_DERIVED(X)
typedef Alignment
DayOfWeek

© 2001 Klarälvdalens Datakonsult AB (KDAB)
"The Qt, C++ and OpenGL Experts"
https://www.kdab.com/
https://www.kdab.com/development-resources/qt-tools/kd-chart/
Generated on Thu Apr 11 2024 00:04:50 for KD Chart API Documentation by doxygen 1.9.8