]> cloud.milkyroute.net Git - dolphin.git/blob - src/search/selectors/minimumratingselector.cpp
Fix up 2f208662cbd604f879027d3cd633a5ce59182a4f
[dolphin.git] / src / search / selectors / minimumratingselector.cpp
1 /*
2 SPDX-FileCopyrightText: 2012 Peter Penz <peter.penz19@gmail.com>
3 SPDX-FileCopyrightText: 2025 Felix Ernst <felixernst@kde.org>
4
5 SPDX-License-Identifier: GPL-2.0-or-later
6 */
7
8 #include "minimumratingselector.h"
9
10 #include "../dolphinquery.h"
11
12 #include <KLocalizedString>
13
14 using namespace Search;
15
16 MinimumRatingSelector::MinimumRatingSelector(std::shared_ptr<const DolphinQuery> dolphinQuery, QWidget *parent)
17 : QComboBox{parent}
18 , UpdatableStateInterface{dolphinQuery}
19 {
20 addItem(/** No icon for the empty state */ i18nc("@item:inlistbox", "Any Rating"), 0);
21 addItem(QIcon::fromTheme(QStringLiteral("starred-symbolic")), i18nc("@item:inlistbox", "1 or more"), 2);
22 addItem(QIcon::fromTheme(QStringLiteral("starred-symbolic")), i18nc("@item:inlistbox", "2 or more"), 4);
23 addItem(QIcon::fromTheme(QStringLiteral("starred-symbolic")), i18nc("@item:inlistbox", "3 or more"), 6);
24 addItem(QIcon::fromTheme(QStringLiteral("starred-symbolic")), i18nc("@item:inlistbox", "4 or more"), 8);
25 addItem(QIcon::fromTheme(QStringLiteral("starred-symbolic")), i18nc("@item:inlistbox 5 star rating, has a star icon in front", "5"), 10);
26
27 connect(this, &QComboBox::activated, this, [this](int activatedIndex) {
28 auto activatedMinimumRating = itemData(activatedIndex).value<int>();
29 if (activatedMinimumRating == m_searchConfiguration->minimumRating()) {
30 return; // Already selected.
31 }
32 DolphinQuery searchConfigurationCopy = *m_searchConfiguration;
33 searchConfigurationCopy.setMinimumRating(activatedMinimumRating);
34 Q_EMIT configurationChanged(std::move(searchConfigurationCopy));
35 });
36
37 updateStateToMatch(std::move(dolphinQuery));
38 }
39
40 void MinimumRatingSelector::removeRestriction()
41 {
42 Q_ASSERT(m_searchConfiguration->minimumRating() > 0);
43 DolphinQuery searchConfigurationCopy = *m_searchConfiguration;
44 searchConfigurationCopy.setMinimumRating(0);
45 Q_EMIT configurationChanged(std::move(searchConfigurationCopy));
46 }
47
48 void MinimumRatingSelector::updateState(const std::shared_ptr<const DolphinQuery> &dolphinQuery)
49 {
50 setCurrentIndex(findData(dolphinQuery->minimumRating()));
51 }