6#include "selectdatewidget.h"
7#include "sievedatespinbox.h"
9#include <KDateComboBox>
10#include <KLineEditEventHandler>
11#include <KLocalizedString>
12#include <KTimeComboBox>
16#include "libksieveui_debug.h"
19#include <QStackedWidget>
22using namespace KSieveUi;
23SelectDateWidget::SelectDateWidget(
QWidget *parent)
29SelectDateWidget::~SelectDateWidget() =
default;
31void SelectDateWidget::initialize()
33 auto lay =
new QHBoxLayout(
this);
34 lay->setContentsMargins({});
36 mDateType =
new QComboBox(
this);
51 lay->addWidget(mDateType);
53 auto lab =
new QLabel(
i18nc(
"@label:textbox",
"value:"),
this);
56 mStackWidget =
new QStackedWidget;
57 lay->addWidget(mStackWidget);
59 mDateLineEdit =
new QLineEdit(
this);
61 mStackWidget->addWidget(mDateLineEdit);
64 mDateValue =
new SieveDateSpinBox(
this);
65 mStackWidget->addWidget(mDateValue);
68 mDateEdit =
new KDateComboBox(
this);
69 mStackWidget->addWidget(mDateEdit);
72 mTimeEdit =
new KTimeComboBox(
this);
73 mStackWidget->addWidget(mTimeEdit);
76 mStackWidget->setCurrentWidget(mDateValue);
79void SelectDateWidget::slotDateTypeActivated(
int index)
81 const auto type = mDateType->itemData(index).value<KSieveUi::SelectDateWidget::DateType>();
90 mDateValue->setType(type);
91 mStackWidget->setCurrentWidget(mDateValue);
94 mStackWidget->setCurrentWidget(mDateEdit);
97 mStackWidget->setCurrentWidget(mDateLineEdit);
100 mStackWidget->setCurrentWidget(mTimeEdit);
103 mStackWidget->setCurrentWidget(mDateLineEdit);
106 mStackWidget->setCurrentWidget(mDateLineEdit);
109 mStackWidget->setCurrentWidget(mDateLineEdit);
115QString SelectDateWidget::dateValue(SelectDateWidget::DateType type)
const
126 str = mDateValue->code();
151SelectDateWidget::DateType SelectDateWidget::dateTypeFromString(
const QString &str)
153 if (str == QLatin1StringView(
"year")) {
155 }
else if (str == QLatin1StringView(
"month")) {
157 }
else if (str == QLatin1StringView(
"day")) {
159 }
else if (str == QLatin1StringView(
"date")) {
161 }
else if (str == QLatin1StringView(
"julian")) {
163 }
else if (str == QLatin1StringView(
"hour")) {
165 }
else if (str == QLatin1StringView(
"minute")) {
167 }
else if (str == QLatin1StringView(
"second")) {
169 }
else if (str == QLatin1StringView(
"time")) {
171 }
else if (str == QLatin1StringView(
"iso8601")) {
173 }
else if (str == QLatin1StringView(
"std11")) {
175 }
else if (str == QLatin1StringView(
"zone")) {
177 }
else if (str == QLatin1StringView(
"weekday")) {
180 qCDebug(LIBKSIEVEUI_LOG) <<
" date type unknown :" << str;
185QString SelectDateWidget::dateType(SelectDateWidget::DateType type)
const
190 str = QStringLiteral(
"year");
193 str = QStringLiteral(
"month");
196 str = QStringLiteral(
"day");
199 str = QStringLiteral(
"date");
202 str = QStringLiteral(
"julian");
205 str = QStringLiteral(
"hour");
208 str = QStringLiteral(
"minute");
211 str = QStringLiteral(
"second");
214 str = QStringLiteral(
"time");
217 str = QStringLiteral(
"iso8601");
220 str = QStringLiteral(
"std11");
223 str = QStringLiteral(
"zone");
226 str = QStringLiteral(
"weekday");
232QString SelectDateWidget::code()
const
234 const auto type = mDateType->itemData(mDateType->currentIndex()).value<KSieveUi::SelectDateWidget::DateType>();
235 return QStringLiteral(
"\"%1\" \"%2\"").arg(dateType(type), dateValue(type));
238void SelectDateWidget::setCode(
const QString &type,
const QString &value)
240 const int index = dateTypeFromString(type);
242 mDateType->setCurrentIndex(index);
244 mDateType->setCurrentIndex(0);
246 const auto dateType = mDateType->itemData(index).value<KSieveUi::SelectDateWidget::DateType>();
255 mStackWidget->setCurrentWidget(mDateValue);
256 mDateValue->setType(dateType);
257 mDateValue->setCode(value);
260 mStackWidget->setCurrentWidget(mDateEdit);
261 mDateEdit->setDate(
QLocale::c().toDate(value));
264 mStackWidget->setCurrentWidget(mDateLineEdit);
265 mDateLineEdit->setText(value);
268 mStackWidget->setCurrentWidget(mTimeEdit);
269 mTimeEdit->setTime(
QLocale::c().toTime(value));
274 mStackWidget->setCurrentWidget(mDateLineEdit);
275 mDateLineEdit->setText(value);
280#include "moc_selectdatewidget.cpp"
void dateChanged(const QDate &date)
void timeChanged(const QTime &time)
QString i18nc(const char *context, const char *text, const TYPE &arg...)
QString i18n(const char *text, const TYPE &arg...)
Type type(const QSqlDatabase &db)
void catchReturnKey(QObject *lineEdit)
void initialize(StandardShortcut id)
void activated(int index)
void textChanged(const QString &text)
QString toString(QDate date, FormatType format) const const
QMetaObject::Connection connect(const QObject *sender, PointerToMemberFunction signal, Functor functor)
QVariant fromValue(T &&value)