┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/search/selectors/minimumratingselector.cpp
blob: e46dfd4e0f69dda80f02712dfe1bd866e722f88f (plain)
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()));
}