digiKam
Loading...
Searching...
No Matches
ratingsearchutilities.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 : 2008-03-14
7 * Description : User interface for searches
8 *
9 * SPDX-FileCopyrightText: 2008-2012 by Marcel Wiesweg <marcel dot wiesweg at gmx dot de>
10 *
11 * SPDX-License-Identifier: GPL-2.0-or-later
12 *
13 * ============================================================ */
14
15#pragma once
16
17// Qt includes
18
19#include <QAbstractListModel>
20#include <QItemDelegate>
21#include <QLabel>
22#include <QComboBox>
23
24// Local includes
25
26#include "ratingwidget.h"
27#include "comboboxutilities.h"
28
29class QTreeView;
30class QVBoxLayout;
31
32namespace Digikam
33{
34
35class RatingComboBoxModel;
36class RatingComboBoxWidget;
37
39{
40 Q_OBJECT
41
42public:
43
49 {
54 Null = -2,
61 Rating5 = 5
62 };
63
64public:
65
66 explicit RatingComboBox(QWidget* const parent = nullptr);
67
70
71Q_SIGNALS:
72
74
75protected Q_SLOTS:
76
77 void currentValueChanged(const QModelIndex& current, const QModelIndex& previous);
78 void ratingWidgetChanged(int);
79
80protected:
81
84
85private:
86
87 bool m_syncing = false;
88};
89
90// -- Internal classes ----------------------------------------------------------------
91
93{
94public:
95
96 RatingStarDrawer() = default;
97
98 QRect drawStarPolygons(QPainter* p, int numberOfStars) const;
99
100protected:
101
103 QSize m_starPolygonSize = QSize(15, 15);
104};
105
106// -------------------------------------------------------------------------
107
109 public RatingStarDrawer
110{
111 Q_OBJECT
112
113public:
114
119 explicit RatingComboBoxWidget(QWidget* const parent = nullptr);
120
123
124Q_SIGNALS:
125
127
128protected Q_SLOTS:
129
130 void slotRatingChanged(int);
131
132protected:
133
134 void paintEvent(QPaintEvent*) override;
135
136protected:
137
139};
140
141// -------------------------------------------------------------------------
142
143class RatingComboBoxModel : public QAbstractListModel
144{
145 Q_OBJECT
146
147public:
148
150 {
151 RatingRole = Qt::UserRole
152 };
153
154public:
155
156 explicit RatingComboBoxModel(QObject* const parent = nullptr);
157
159
160 int rowCount(const QModelIndex& parent) const override;
161 QVariant data(const QModelIndex& index, int role) const override;
162 QModelIndex index(int row, int column = 0, const QModelIndex& parent = QModelIndex()) const override;
163
164protected:
165
167
168protected:
169
170 QList<RatingComboBox::RatingValue> m_entries;
171};
172
173// -------------------------------------------------------------------------
174
175class RatingComboBoxDelegate : public QItemDelegate,
176 public RatingStarDrawer
177{
178 Q_OBJECT
179
180public:
181
182 explicit RatingComboBoxDelegate(QObject* const parent = nullptr);
183
184 QSize sizeHint(const QStyleOptionViewItem& option, const QModelIndex& index) const override;
185 void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const override;
186
187protected:
188
189 void drawRating(QPainter* painter, const QRect& rect, int rating, bool selectable) const;
190};
191
192} // namespace Digikam
Definition comboboxutilities.h:120
Definition ratingsearchutilities.h:177
QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const override
Definition ratingsearchutilities.cpp:69
void drawRating(QPainter *painter, const QRect &rect, int rating, bool selectable) const
Definition ratingsearchutilities.cpp:126
void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const override
Definition ratingsearchutilities.cpp:92
Definition ratingsearchutilities.h:144
QList< RatingComboBox::RatingValue > m_entries
Definition ratingsearchutilities.h:170
int rowCount(const QModelIndex &parent) const override
Definition ratingsearchutilities.cpp:166
QModelIndex index(int row, int column=0, const QModelIndex &parent=QModelIndex()) const override
Definition ratingsearchutilities.cpp:223
QVariant ratingValueToDisplay(RatingComboBox::RatingValue value) const
Definition ratingsearchutilities.cpp:195
QModelIndex indexForRatingValue(RatingComboBox::RatingValue value) const
Definition ratingsearchutilities.cpp:235
CustomRoles
Definition ratingsearchutilities.h:150
@ RatingRole
Definition ratingsearchutilities.h:151
QVariant data(const QModelIndex &index, int role) const override
Definition ratingsearchutilities.cpp:176
Definition ratingsearchutilities.h:110
void slotRatingChanged(int)
Definition ratingsearchutilities.cpp:299
void ratingValueChanged(int value)
void setRatingValue(RatingComboBox::RatingValue value)
Definition ratingsearchutilities.cpp:270
void paintEvent(QPaintEvent *) override
Definition ratingsearchutilities.cpp:311
RatingComboBox::RatingValue ratingValue() const
Definition ratingsearchutilities.cpp:265
RatingComboBox::RatingValue m_value
Definition ratingsearchutilities.h:138
Definition ratingsearchutilities.h:39
void currentValueChanged(const QModelIndex &current, const QModelIndex &previous)
Definition ratingsearchutilities.cpp:425
void setRatingValue(RatingValue value)
Definition ratingsearchutilities.cpp:406
RatingValue
Definition ratingsearchutilities.h:49
@ Rating5
Definition ratingsearchutilities.h:61
@ Null
Definition ratingsearchutilities.h:54
@ Rating1
Definition ratingsearchutilities.h:57
@ NoRating
Definition ratingsearchutilities.h:55
@ Rating4
Definition ratingsearchutilities.h:60
@ Rating2
Definition ratingsearchutilities.h:58
@ Rating0
Definition ratingsearchutilities.h:56
@ Rating3
Definition ratingsearchutilities.h:59
RatingValue ratingValue() const
Definition ratingsearchutilities.cpp:420
RatingComboBoxModel * m_model
Definition ratingsearchutilities.h:82
RatingComboBoxWidget * m_ratingWidget
Definition ratingsearchutilities.h:83
void ratingWidgetChanged(int)
Definition ratingsearchutilities.cpp:441
void ratingValueChanged(int value)
Definition ratingsearchutilities.h:93
QSize m_starPolygonSize
Definition ratingsearchutilities.h:103
QPolygon m_starPolygon
Definition ratingsearchutilities.h:102
QRect drawStarPolygons(QPainter *p, int numberOfStars) const
Definition ratingsearchutilities.cpp:42
Definition ratingwidget.h:36
static QPolygon starPolygon()
Definition ratingwidget.cpp:408
qulonglong value
Definition itemviewutilities.cpp:585
Definition datefolderview.cpp:34