1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
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()));
}
|