datetime: support 12 hour format display

Change-Id: Ied625ac784a59ff235050cea6e9d0660986824d4
This commit is contained in:
石博文 2017-03-30 16:48:34 +08:00
parent 9064e464d3
commit b416d4572d
Notes: Deepin Code Review 2017-03-31 09:29:34 +08:00
Verified+1: Anonymous Coward #1000004
i18n+1: <liufei@linuxdeepin.com>
Code-Review+2: 石博文 <sbw@sbw.so>
Submitted-by: 石博文 <sbw@sbw.so>
Submitted-at: Fri, 31 Mar 2017 09:29:34 +0800
Reviewed-on: https://cr.deepin.io/21962
Project: dde/dde-dock
Branch: refs/heads/master
3 changed files with 38 additions and 5 deletions

View File

@ -75,6 +75,15 @@ const QString DatetimePlugin::itemContextMenu(const QString &itemKey)
QList<QVariant> items; QList<QVariant> items;
items.reserve(1); items.reserve(1);
QMap<QString, QVariant> 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<QString, QVariant> open; QMap<QString, QVariant> open;
open["itemId"] = "open"; open["itemId"] = "open";
open["itemText"] = tr("Time Settings"); 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) void DatetimePlugin::invokedMenuItem(const QString &itemKey, const QString &menuId, const bool checked)
{ {
Q_UNUSED(itemKey) Q_UNUSED(itemKey)
Q_UNUSED(menuId)
Q_UNUSED(checked) 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() void DatetimePlugin::updateCurrentTimeString()

View File

@ -8,11 +8,25 @@
#include <QMouseEvent> #include <QMouseEvent>
DatetimeWidget::DatetimeWidget(QWidget *parent) 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 QSize DatetimeWidget::sizeHint() const
{ {
QFontMetrics fm(qApp->font()); QFontMetrics fm(qApp->font());
@ -39,11 +53,11 @@ void DatetimeWidget::paintEvent(QPaintEvent *e)
if (displayMode == Dock::Efficient) if (displayMode == Dock::Efficient)
{ {
painter.setPen(Qt::white); 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; return;
} }
const QString currentTimeString = current.toString("HHmm"); const QString currentTimeString = current.toString(m_24HourFormat ? "hhmm" : "hhmma");
// check cache valid // check cache valid
if (m_cachedTime != currentTimeString) if (m_cachedTime != currentTimeString)
{ {

View File

@ -2,6 +2,7 @@
#define DATETIMEWIDGET_H #define DATETIMEWIDGET_H
#include <QWidget> #include <QWidget>
#include <QSettings>
class DatetimeWidget : public QWidget class DatetimeWidget : public QWidget
{ {
@ -10,9 +11,14 @@ class DatetimeWidget : public QWidget
public: public:
explicit DatetimeWidget(QWidget *parent = 0); explicit DatetimeWidget(QWidget *parent = 0);
bool is24HourFormat() const { return m_24HourFormat; }
signals: signals:
void requestContextMenu() const; void requestContextMenu() const;
public slots:
void toggleHourFormat();
private: private:
QSize sizeHint() const; QSize sizeHint() const;
void resizeEvent(QResizeEvent *e); void resizeEvent(QResizeEvent *e);
@ -24,6 +30,8 @@ private:
private: private:
QPixmap m_cachedIcon; QPixmap m_cachedIcon;
QString m_cachedTime; QString m_cachedTime;
QSettings m_settings;
bool m_24HourFormat;
}; };
#endif // DATETIMEWIDGET_H #endif // DATETIMEWIDGET_H