2 SPDX-FileCopyrightText: 2025 Felix Ernst <felixernst@kde.org>
4 SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
7 #include "dateselector.h"
9 #include "../dolphinquery.h"
11 #include <KDatePicker>
12 #include <KDatePickerPopup>
14 #include <KLocalizedString>
16 using namespace Search
;
18 Search::DateSelector::DateSelector(std::shared_ptr
<const DolphinQuery
> dolphinQuery
, QWidget
*parent
)
20 , UpdatableStateInterface
{dolphinQuery
}
22 new KDatePickerPopup
{KDatePickerPopup::NoDate
| KDatePickerPopup::DatePicker
| KDatePickerPopup::Words
, dolphinQuery
->modifiedSinceDate(), this}}
24 setToolButtonStyle(Qt::ToolButtonTextBesideIcon
);
25 setPopupMode(QToolButton::InstantPopup
);
27 m_datePickerPopup
->setDateRange(QDate
{}, QDate::currentDate());
28 connect(m_datePickerPopup
, &KDatePickerPopup::dateChanged
, this, [this](const QDate
&activatedDate
) {
29 if (activatedDate
== m_searchConfiguration
->modifiedSinceDate()) {
30 return; // Already selected.
32 DolphinQuery searchConfigurationCopy
= *m_searchConfiguration
;
33 searchConfigurationCopy
.setModifiedSinceDate(activatedDate
);
34 Q_EMIT
configurationChanged(std::move(searchConfigurationCopy
));
36 setMenu(m_datePickerPopup
);
38 updateStateToMatch(std::move(dolphinQuery
));
41 void DateSelector::removeRestriction()
43 Q_ASSERT(m_searchConfiguration
->modifiedSinceDate().isValid());
44 DolphinQuery searchConfigurationCopy
= *m_searchConfiguration
;
45 searchConfigurationCopy
.setModifiedSinceDate(QDate
{});
46 Q_EMIT
configurationChanged(std::move(searchConfigurationCopy
));
49 void DateSelector::updateState(const std::shared_ptr
<const DolphinQuery
> &dolphinQuery
)
51 m_datePickerPopup
->setDate(dolphinQuery
->modifiedSinceDate());
52 if (!dolphinQuery
->modifiedSinceDate().isValid()) {
53 setIcon(QIcon
{}); // No icon for the empty state
54 setText(i18nc("@item:inlistbox", "Any Date"));
57 setIcon(QIcon::fromTheme(QStringLiteral("view-calendar")));
59 KFormat
formatter(local
);
60 setText(formatter
.formatRelativeDate(dolphinQuery
->modifiedSinceDate(), QLocale::ShortFormat
));