Commit 9a21730a authored by Volker Krause's avatar Volker Krause
Browse files

Remove KDatePickerPopup copy

That's now in KWidgetAddons.
parent ffe8dff3
Pipeline #179080 passed with stage
in 2 minutes and 1 second
......@@ -21,7 +21,6 @@ target_sources(KF5CalendarSupport PRIVATE
utils.cpp
tagcache.cpp
urihandler.cpp
kdatepickerpopup.cpp
printing/calprintpluginbase.cpp
printing/calprintdefaultplugins.cpp
......@@ -46,7 +45,6 @@ target_sources(KF5CalendarSupport PRIVATE
noteeditdialog.h
attachmenthandler.h
eventarchiver.h
kdatepickerpopup.h
printing/printplugin.h
printing/calprintpluginbase.h
printing/journalprint.h
......@@ -136,7 +134,6 @@ ecm_generate_headers(CalendarSupport_CamelCase_HEADERS
MessageWidget
ArchiveDialog
NoteEditDialog
KDatePickerPopup
UriHandler
REQUIRED_HEADERS CalendarSupport_HEADERS
PREFIX CalendarSupport
......
/*
This file is part of libkdepim.
SPDX-FileCopyrightText: 2004 Bram Schoenmakers <bramschoenmakers@kde.nl>
SPDX-License-Identifier: LGPL-2.0-or-later
*/
#include "kdatepickerpopup.h"
#include <KDatePicker>
#include <KLocalizedString>
#include <QDateTime>
#include <QWidgetAction>
using namespace CalendarSupport;
class KDatePickerAction : public QWidgetAction
{
public:
KDatePickerAction(KDatePicker *widget, QObject *parent)
: QWidgetAction(parent)
, mDatePicker(widget)
, mOriginalParent(widget->parentWidget())
{
}
protected:
QWidget *createWidget(QWidget *parent) override
{
mDatePicker->setParent(parent);
return mDatePicker;
}
void deleteWidget(QWidget *widget) override
{
if (widget != mDatePicker) {
return;
}
mDatePicker->setParent(mOriginalParent);
}
private:
KDatePicker *const mDatePicker;
QWidget *const mOriginalParent;
};
class CalendarSupport::KDatePickerPopupPrivate
{
public:
explicit KDatePickerPopupPrivate(KDatePickerPopup *qq)
: q(qq)
{
}
void buildMenu();
void slotDateChanged(QDate);
void slotToday();
void slotTomorrow();
void slotNextWeek();
void slotNextMonth();
void slotNoDate();
KDatePickerPopup *const q;
KDatePicker *mDatePicker = nullptr;
KDatePickerPopup::Modes mModes;
};
void KDatePickerPopupPrivate::buildMenu()
{
if (q->isVisible()) {
return;
}
q->clear();
if (mModes & KDatePickerPopup::DatePicker) {
q->addAction(new KDatePickerAction(mDatePicker, q));
if ((mModes & KDatePickerPopup::NoDate) || (mModes & KDatePickerPopup::Words)) {
q->addSeparator();
}
}
if (mModes & KDatePickerPopup::Words) {
q->addAction(i18nc("@option today", "&Today"), q, [this]() {
slotToday();
});
q->addAction(i18nc("@option tomorrow", "To&morrow"), q, [this]() {
slotTomorrow();
});
q->addAction(i18nc("@option next week", "Next &Week"), q, [this]() {
slotNextWeek();
});
q->addAction(i18nc("@option next month", "Next M&onth"), q, [this]() {
slotNextMonth();
});
if (mModes & KDatePickerPopup::NoDate) {
q->addSeparator();
}
}
if (mModes & KDatePickerPopup::NoDate) {
q->addAction(i18nc("@option do not specify a date", "No Date"), q, [this]() {
slotNoDate();
});
}
}
void KDatePickerPopupPrivate::slotDateChanged(QDate date)
{
Q_EMIT q->dateChanged(date);
q->hide();
}
void KDatePickerPopupPrivate::slotToday()
{
Q_EMIT q->dateChanged(QDate::currentDate());
}
void KDatePickerPopupPrivate::slotTomorrow()
{
Q_EMIT q->dateChanged(QDate::currentDate().addDays(1));
}
void KDatePickerPopupPrivate::slotNoDate()
{
Q_EMIT q->dateChanged(QDate());
}
void KDatePickerPopupPrivate::slotNextWeek()
{
Q_EMIT q->dateChanged(QDate::currentDate().addDays(7));
}
void KDatePickerPopupPrivate::slotNextMonth()
{
Q_EMIT q->dateChanged(QDate::currentDate().addMonths(1));
}
KDatePickerPopup::KDatePickerPopup(Modes modes, QDate date, QWidget *parent)
: QMenu(parent)
, d(new KDatePickerPopupPrivate(this))
{
d->mModes = modes;
d->mDatePicker = new KDatePicker(this);
d->mDatePicker->setCloseButton(false);
connect(d->mDatePicker, &KDatePicker::dateEntered, this, [this](QDate date) {
d->slotDateChanged(date);
});
connect(d->mDatePicker, &KDatePicker::dateSelected, this, [this](QDate date) {
d->slotDateChanged(date);
});
d->mDatePicker->setDate(date);
d->buildMenu();
}
KDatePickerPopup::~KDatePickerPopup() = default;
KDatePicker *KDatePickerPopup::datePicker() const
{
return d->mDatePicker;
}
void KDatePickerPopup::setDate(QDate date)
{
d->mDatePicker->setDate(date);
}
#include "moc_kdatepickerpopup.cpp"
/*
This file is part of libkdepim.
SPDX-FileCopyrightText: 2004 Bram Schoenmakers <bramschoenmakers@kde.nl>
SPDX-License-Identifier: LGPL-2.0-or-later
*/
#pragma once
#include "calendarsupport_export.h"
#include <QDate>
#include <QMenu>
#include <memory>
class KDatePicker;
namespace CalendarSupport
{
class KDatePickerPopupPrivate;
/**
* @short This menu helps the user to select a date quickly.
*
* This menu helps the user to select a date quickly. It offers various
* modes of selecting, e.g. with a KDatePicker or with words like "Tomorrow".
*
* The available modes are:
*
* @li NoDate: A menu-item with "No Date". If chosen, the datepicker will emit
* a null QDate.
* @li DatePicker: Shows a KDatePicker-widget.
* @li Words: Shows items like "Today", "Tomorrow" or "Next Week".
*
* @author Bram Schoenmakers <bram_s@softhome.net>
*/
class CALENDARSUPPORT_EXPORT KDatePickerPopup : public QMenu
{
Q_OBJECT
public:
/**
* Describes the available selection modes.
*/
enum Mode {
NoDate = 1, ///< A menu-item with "No Date". Will always return an invalid date.
DatePicker = 2, ///< A menu-item with a KDatePicker.
Words = 4 ///< A menu-item with list of words that describe a date.
};
/**
* Describes the a set of combined modes.
*/
Q_DECLARE_FLAGS(Modes, Mode)
/**
* Creates a new date picker popup.
*
* @param modes The selection modes that shall be offered
* @param date The initial date of date picker widget.
* @param parent The parent object.
*/
explicit KDatePickerPopup(Modes modes = DatePicker, QDate date = QDate::currentDate(), QWidget *parent = nullptr);
/**
* Destroys the date picker popup.
*/
~KDatePickerPopup() override;
/**
* Returns the used KDatePicker object.
*/
Q_REQUIRED_RESULT KDatePicker *datePicker() const;
public Q_SLOTS:
/**
* Sets the current @p date.
*/
void setDate(QDate date);
Q_SIGNALS:
/**
* This signal is emitted whenever the user has selected a new date.
*
* @param date The new date.
*/
void dateChanged(const QDate &date);
private:
//@cond PRIVATE
std::unique_ptr<KDatePickerPopupPrivate> const d;
//@endcond
};
Q_DECLARE_OPERATORS_FOR_FLAGS(KDatePickerPopup::Modes)
}
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment