KD Chart API Documentation  3.1
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 
19 namespace KDGantt {
20 
21 class DateTimeScaleFormatter;
22 
23 class KDGANTT_EXPORT DateTimeGrid : public AbstractGrid
24 {
25  Q_OBJECT
27 public:
28  enum Scale
29  {
35  ScaleUserDefined
36  };
37 
38  DateTimeGrid();
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 
86 protected:
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 
115 class KDGANTT_EXPORT DateTimeScaleFormatter
116 {
118 public:
119  enum Range
120  {
127  Year
128  };
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
152 QDebug KDGANTT_EXPORT operator<<(QDebug dbg, KDGantt::DateTimeScaleFormatter::Range);
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)
Definition: kdganttglobal.h:61

© 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 by doxygen 1.9.1