┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/search/selectors/minimumratingselector.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/search/selectors/minimumratingselector.cpp')
-rw-r--r--src/search/selectors/minimumratingselector.cpp51
1 files changed, 51 insertions, 0 deletions
diff --git a/src/search/selectors/minimumratingselector.cpp b/src/search/selectors/minimumratingselector.cpp
new file mode 100644
index 000000000..e46dfd4e0
--- /dev/null
+++ b/src/search/selectors/minimumratingselector.cpp
@@ -0,0 +1,51 @@
+/*
+ SPDX-FileCopyrightText: 2012 Peter Penz <[email protected]>
+ SPDX-FileCopyrightText: 2025 Felix Ernst <[email protected]>
+
+ SPDX-License-Identifier: GPL-2.0-or-later
+*/
+
+#include "minimumratingselector.h"
+
+#include "../dolphinquery.h"
+
+#include <KLocalizedString>
+
+using namespace Search;
+
+MinimumRatingSelector::MinimumRatingSelector(std::shared_ptr<const DolphinQuery> dolphinQuery, QWidget *parent)
+ : QComboBox{parent}
+ , UpdatableStateInterface{dolphinQuery}
+{
+ addItem(/** No icon for the empty state */ i18nc("@item:inlistbox", "Any Rating"), 0);
+ addItem(QIcon::fromTheme(QStringLiteral("starred-symbolic")), i18nc("@item:inlistbox", "1 or more"), 2);
+ addItem(QIcon::fromTheme(QStringLiteral("starred-symbolic")), i18nc("@item:inlistbox", "2 or more"), 4);
+ addItem(QIcon::fromTheme(QStringLiteral("starred-symbolic")), i18nc("@item:inlistbox", "3 or more"), 6);
+ addItem(QIcon::fromTheme(QStringLiteral("starred-symbolic")), i18nc("@item:inlistbox", "4 or more"), 8);
+ addItem(QIcon::fromTheme(QStringLiteral("starred-symbolic")), i18nc("@item:inlistbox 5 star rating, has a star icon in front", "5"), 10);
+
+ connect(this, &QComboBox::activated, this, [this](int activatedIndex) {
+ auto activatedMinimumRating = itemData(activatedIndex).value<int>();
+ if (activatedMinimumRating == m_searchConfiguration->minimumRating()) {
+ return; // Already selected.
+ }
+ DolphinQuery searchConfigurationCopy = *m_searchConfiguration;
+ searchConfigurationCopy.setMinimumRating(activatedMinimumRating);
+ Q_EMIT configurationChanged(std::move(searchConfigurationCopy));
+ });
+
+ updateStateToMatch(std::move(dolphinQuery));
+}
+
+void MinimumRatingSelector::removeRestriction()
+{
+ Q_ASSERT(m_searchConfiguration->minimumRating() > 0);
+ DolphinQuery searchConfigurationCopy = *m_searchConfiguration;
+ searchConfigurationCopy.setMinimumRating(0);
+ Q_EMIT configurationChanged(std::move(searchConfigurationCopy));
+}
+
+void MinimumRatingSelector::updateState(const std::shared_ptr<const DolphinQuery> &dolphinQuery)
+{
+ setCurrentIndex(findData(dolphinQuery->minimumRating()));
+}