From b416d4572dff85e9c661cec4b03f6fe8da5dea2f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E5=8D=9A=E6=96=87?= Date: Thu, 30 Mar 2017 16:48:34 +0800 Subject: [PATCH] datetime: support 12 hour format display Change-Id: Ied625ac784a59ff235050cea6e9d0660986824d4 --- plugins/datetime/datetimeplugin.cpp | 15 +++++++++++++-- plugins/datetime/datetimewidget.cpp | 20 +++++++++++++++++--- plugins/datetime/datetimewidget.h | 8 ++++++++ 3 files changed, 38 insertions(+), 5 deletions(-) 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