digiKam
Loading...
Searching...
No Matches
timelinewidget.h
Go to the documentation of this file.
1/* ============================================================
2 *
3 * This file is a part of digiKam project
4 * https://www.digikam.org
5 *
6 * Date : 2007-12-08
7 * Description : a widget to display date and time statistics of pictures
8 *
9 * SPDX-FileCopyrightText: 2007-2024 by Gilles Caulier <caulier dot gilles at gmail dot com>
10 * SPDX-FileCopyrightText: 2011-2012 by Andi Clemens <andi dot clemens at gmail dot com>
11 *
12 * SPDX-License-Identifier: GPL-2.0-or-later
13 *
14 * ============================================================ */
15
16#pragma once
17
18// Qt includes
19
20#include <QString>
21#include <QWidget>
22#include <QDateTime>
23#include <QPaintEvent>
24#include <QWheelEvent>
25#include <QMouseEvent>
26
27// Local includes
28
30
31namespace Digikam
32{
33
34class TimeLineWidget : public QWidget
35{
36 Q_OBJECT
37
38public:
39
41 {
42 Day = 0,
45 Year
46 };
47
54
56 {
59 };
60
61public:
62
63 explicit TimeLineWidget(QWidget* const parent = nullptr);
64 ~TimeLineWidget() override;
65
67 TimeUnit timeUnit() const;
68
70 ScaleMode scaleMode() const;
71
72 void setCursorDateTime(const QDateTime& dateTime);
73 QDateTime cursorDateTime() const;
74 int cursorInfo(QString& infoDate) const;
75
79 DateRangeList selectedDateRange(int& totalCount) const;
80 void setSelectedDateRange(const DateRangeList& list);
81
82 int totalIndex() const;
83 int indexForRefDateTime() const;
84 int indexForCursorDateTime() const;
85 void setCurrentIndex(int index);
86
87Q_SIGNALS:
88
93
94public Q_SLOTS:
95
96 void slotDatesHash(const QHash<QDateTime, int>&);
97 void slotPrevious();
98 void slotNext();
99 void slotBackward();
100 void slotForward();
101 void slotResetSelection();
102
103private Q_SLOTS:
104
105 void slotThemeChanged();
106
107private:
108
109 QDateTime prevDateTime(const QDateTime& dt) const;
110 QDateTime nextDateTime(const QDateTime& dt) const;
111
112 double daysOfTimeUnit() const;
113
114 int maxCount() const;
115 int indexForDateTime(const QDateTime& date) const;
116 int statForDateTime(const QDateTime& dt, SelectionMode& selected) const;
117 void setRefDateTime(const QDateTime& dateTime);
118
119 void paintEvent(QPaintEvent*) override;
120 void wheelEvent(QWheelEvent*) override;
121
122 void mousePressEvent(QMouseEvent*) override;
123 void mouseMoveEvent(QMouseEvent*) override;
124 void mouseReleaseEvent(QMouseEvent*) override;
125
126 void keyPressEvent(QKeyEvent *e) override;
127 void keyReleaseEvent(QKeyEvent *) override;
128 void keyScroll(bool isScrollNext);
129
130 QDateTime dateTimeForPoint(const QPoint& pt,
131 bool& isOnSelectionArea);
132 QDateTime firstDayOfWeek(int year, int weekNumber) const;
133
134 void resetSelection();
135 void setDateTimeSelected(const QDateTime& dt,
136 SelectionMode selected);
137 void setDaysRangeSelection(const QDateTime& dts,
138 const QDateTime& dte,
139 SelectionMode selected);
140 SelectionMode checkSelectionForDaysRange(const QDateTime& dts,
141 const QDateTime& dte) const;
142 void updateWeekSelection(const QDateTime& dts,
143 const QDateTime& dte);
144 void updateMonthSelection(const QDateTime& dts,
145 const QDateTime& dte);
146 void updateYearSelection(const QDateTime& dts,
147 const QDateTime& dte);
148 void updateAllSelection();
149
153 int calculateTop(int& val) const;
154 void paintItem(QPainter& p,
155 const QRect& barRect,
156 const QDateTime& ref,
157 const int& separatorPosition,
158 const QColor& dateColor,
159 const QColor& subDateColor);
160
161 void handleSelectionRange(const QDateTime& selEndDateTime);
162
163private:
164
165 class Private;
166 Private* const d = nullptr;
167};
168
169} // namespace Digikam
Definition timelinewidget.h:35
void slotForward()
Definition timelinewidget.cpp:1742
void slotNext()
Definition timelinewidget.cpp:1731
TimeUnit
Definition timelinewidget.h:41
@ Week
Definition timelinewidget.h:43
@ Day
Definition timelinewidget.h:42
@ Month
Definition timelinewidget.h:44
@ Year
Definition timelinewidget.h:45
void setScaleMode(ScaleMode scaleMode)
Definition timelinewidget.cpp:140
DateRangeList selectedDateRange(int &totalCount) const
Definition timelinewidget.cpp:408
void setTimeUnit(TimeUnit timeUnit)
Definition timelinewidget.cpp:128
ScaleMode scaleMode() const
Definition timelinewidget.cpp:146
void setSelectedDateRange(const DateRangeList &list)
Definition timelinewidget.cpp:375
ScaleMode
Definition timelinewidget.h:56
@ LinScale
Linear scale.
Definition timelinewidget.h:57
@ LogScale
Logarithmic scale.
Definition timelinewidget.h:58
void setCurrentIndex(int index)
Definition timelinewidget.cpp:181
~TimeLineWidget() override
Definition timelinewidget.cpp:123
int totalIndex() const
Definition timelinewidget.cpp:151
int indexForCursorDateTime() const
Definition timelinewidget.cpp:176
int cursorInfo(QString &infoDate) const
Definition timelinewidget.cpp:250
QDateTime cursorDateTime() const
Definition timelinewidget.cpp:245
void slotPrevious()
Definition timelinewidget.cpp:1720
void setCursorDateTime(const QDateTime &dateTime)
Definition timelinewidget.cpp:193
TimeUnit timeUnit() const
Definition timelinewidget.cpp:135
int indexForRefDateTime() const
Definition timelinewidget.cpp:171
void slotDatesHash(const QHash< QDateTime, int > &)
Definition timelinewidget.cpp:509
void slotResetSelection()
Definition timelinewidget.cpp:342
void slotBackward()
Definition timelinewidget.cpp:1665
SelectionMode
Definition timelinewidget.h:49
@ Unselected
No selection.
Definition timelinewidget.h:50
@ FuzzySelection
Partially selected.
Definition timelinewidget.h:51
@ Selected
Fully selected.
Definition timelinewidget.h:52
Definition datefolderview.cpp:34
QList< DateRange > DateRangeList
Definition searchmodificationhelper.h:40