digiKam
Loading...
Searching...
No Matches
ratingwidget.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 : 2005-08-15
7 * Description : a widget to draw stars rating
8 *
9 * SPDX-FileCopyrightText: 2005 by Owen Hirst <n8rider@sbcglobal.net>
10 * SPDX-FileCopyrightText: 2006-2024 by Gilles Caulier <caulier dot gilles 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 <QWidget>
21#include <QPaintEvent>
22#include <QMouseEvent>
23#include <QPolygon>
24#include <QIcon>
25#include <QMenu>
26
27// Local includes
28
29#include "dlayoutbox.h"
30#include "digikam_export.h"
31
32namespace Digikam
33{
34
35class DIGIKAM_EXPORT RatingWidget : public QWidget
36{
37 Q_OBJECT
38
39public:
40
41 explicit RatingWidget(QWidget* const parent);
42 ~RatingWidget() override;
43
44 void setRating(int val);
45 int rating() const;
46
47 void setTracking(bool tracking);
48 bool hasTracking() const;
49
50 void setFading(bool fading);
51 bool hasFading() const;
52
53 void startFading();
54 void stopFading();
55 void setVisibleImmediately();
56
57 void setVisible(bool visible) override;
58 int maximumVisibleWidth() const;
59
63 static QPolygon starPolygon();
64 static QIcon buildIcon(int rate, int size);
65
66Q_SIGNALS:
67
70
71protected:
72
73 int regPixmapWidth() const;
74
75 QPixmap starPixmap() const;
76 QPixmap starPixmapFilled() const;
77 QPixmap starPixmapDisabled() const;
78
79 void regeneratePixmaps();
80 void setupTimeLine();
81 void applyFading(QPixmap& pix);
82
83 void mousePressEvent(QMouseEvent*) override;
84 void mouseMoveEvent(QMouseEvent*) override;
85 void mouseReleaseEvent(QMouseEvent*) override;
86 void paintEvent(QPaintEvent*) override;
87
88protected Q_SLOTS:
89
90 void setFadingValue(int value);
91
92private Q_SLOTS:
93
94 void slotThemeChanged();
95
96private:
97
98 class Private;
99 Private* const d = nullptr;
100};
101
102// --------------------------------------------------------------------
103
104class DIGIKAM_EXPORT RatingBox : public DVBox
105{
106 Q_OBJECT
107
108public:
109
110 explicit RatingBox(QWidget* const parent);
111 ~RatingBox() override;
112
113Q_SIGNALS:
114
116
117private Q_SLOTS:
118
119 void slotUpdateDescription(int);
120
121private:
122
123 class Private;
124 Private* const d = nullptr;
125};
126
127// --------------------------------------------------------------------
128
129class DIGIKAM_EXPORT RatingMenuAction : public QMenu
130{
131 Q_OBJECT
132
133public:
134
135 explicit RatingMenuAction(QMenu* const parent = nullptr);
136 ~RatingMenuAction() override = default;
137
138Q_SIGNALS:
139
141};
142
143} // namespace Digikam
Definition dlayoutbox.h:65
Definition ratingwidget.h:105
void signalRatingChanged(int)
Definition ratingwidget.h:130
~RatingMenuAction() override=default
Definition ratingwidget.h:36
void signalRatingModified(int)
Not managed by tracking properties.
void signalRatingChanged(int)
qulonglong value
Definition itemviewutilities.cpp:585
Definition datefolderview.cpp:34