2 SPDX-FileCopyrightText: 2012 Peter Penz <peter.penz19@gmail.com>
3 SPDX-FileCopyrightText: 2025 Felix Ernst <felixernst@kde.org>
5 SPDX-License-Identifier: GPL-2.0-or-later
8 #include "minimumratingselector.h"
10 #include "../dolphinquery.h"
12 #include <KLocalizedString>
14 using namespace Search
;
16 MinimumRatingSelector::MinimumRatingSelector(std::shared_ptr
<const DolphinQuery
> dolphinQuery
, QWidget
*parent
)
18 , UpdatableStateInterface
{dolphinQuery
}
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);
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.
32 DolphinQuery searchConfigurationCopy
= *m_searchConfiguration
;
33 searchConfigurationCopy
.setMinimumRating(activatedMinimumRating
);
34 Q_EMIT
configurationChanged(std::move(searchConfigurationCopy
));
37 updateStateToMatch(std::move(dolphinQuery
));
40 void MinimumRatingSelector::removeRestriction()
42 Q_ASSERT(m_searchConfiguration
->minimumRating() > 0);
43 DolphinQuery searchConfigurationCopy
= *m_searchConfiguration
;
44 searchConfigurationCopy
.setMinimumRating(0);
45 Q_EMIT
configurationChanged(std::move(searchConfigurationCopy
));
48 void MinimumRatingSelector::updateState(const std::shared_ptr
<const DolphinQuery
> &dolphinQuery
)
50 setCurrentIndex(findData(dolphinQuery
->minimumRating()));