diff --git a/plugins/datetime/datetimeplugin.cpp b/plugins/datetime/datetimeplugin.cpp index 9e6bfc4f7..28405ea14 100644 --- a/plugins/datetime/datetimeplugin.cpp +++ b/plugins/datetime/datetimeplugin.cpp @@ -75,6 +75,15 @@ const QString DatetimePlugin::itemContextMenu(const QString &itemKey) QList items; items.reserve(1); + QMap settings; + settings["itemId"] = "settings"; + if (m_centralWidget->is24HourFormat()) + settings["itemText"] = tr("12 Hour Time"); + else + settings["itemText"] = tr("24 Hour Time"); + settings["isActive"] = true; + items.push_back(settings); + QMap open; open["itemId"] = "open"; open["itemText"] = tr("Time Settings"); @@ -92,10 +101,12 @@ const QString DatetimePlugin::itemContextMenu(const QString &itemKey) void DatetimePlugin::invokedMenuItem(const QString &itemKey, const QString &menuId, const bool checked) { Q_UNUSED(itemKey) - Q_UNUSED(menuId) Q_UNUSED(checked) - QProcess::startDetached("dde-control-center", QStringList() << "datetime"); + if (menuId == "open") + QProcess::startDetached("dde-control-center", QStringList() << "datetime"); + else + m_centralWidget->toggleHourFormat(); } void DatetimePlugin::updateCurrentTimeString() diff --git a/plugins/datetime/datetimewidget.cpp b/plugins/datetime/datetimewidget.cpp index cda0979aa..77309ad78 100644 --- a/plugins/datetime/datetimewidget.cpp +++ b/plugins/datetime/datetimewidget.cpp @@ -8,11 +8,25 @@ #include DatetimeWidget::DatetimeWidget(QWidget *parent) - : QWidget(parent) + : QWidget(parent), + + m_settings("deepin", "dde-dock-datetime"), + + m_24HourFormat(m_settings.value("24HourFormat").toBool()) { } +void DatetimeWidget::toggleHourFormat() +{ + m_24HourFormat = !m_24HourFormat; + + m_settings.setValue("24HourFormat", m_24HourFormat); + + m_cachedTime.clear(); + update(); +} + QSize DatetimeWidget::sizeHint() const { QFontMetrics fm(qApp->font()); @@ -39,11 +53,11 @@ void DatetimeWidget::paintEvent(QPaintEvent *e) if (displayMode == Dock::Efficient) { painter.setPen(Qt::white); - painter.drawText(rect(), Qt::AlignCenter, current.toString("HH:mm")); + painter.drawText(rect(), Qt::AlignCenter, current.toString(m_24HourFormat ? "hh:mm" : "hh:mm A")); return; } - const QString currentTimeString = current.toString("HHmm"); + const QString currentTimeString = current.toString(m_24HourFormat ? "hhmm" : "hhmma"); // check cache valid if (m_cachedTime != currentTimeString) { diff --git a/plugins/datetime/datetimewidget.h b/plugins/datetime/datetimewidget.h index fa74f873d..91763de76 100644 --- a/plugins/datetime/datetimewidget.h +++ b/plugins/datetime/datetimewidget.h @@ -2,6 +2,7 @@ #define DATETIMEWIDGET_H #include +#include class DatetimeWidget : public QWidget { @@ -10,9 +11,14 @@ class DatetimeWidget : public QWidget public: explicit DatetimeWidget(QWidget *parent = 0); + bool is24HourFormat() const { return m_24HourFormat; } + signals: void requestContextMenu() const; +public slots: + void toggleHourFormat(); + private: QSize sizeHint() const; void resizeEvent(QResizeEvent *e); @@ -24,6 +30,8 @@ private: private: QPixmap m_cachedIcon; QString m_cachedTime; + QSettings m_settings; + bool m_24HourFormat; }; #endif // DATETIMEWIDGET_H