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;
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;
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()

View File

@ -8,11 +8,25 @@
#include <QMouseEvent>
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)
{

View File

@ -2,6 +2,7 @@
#define DATETIMEWIDGET_H
#include <QWidget>
#include <QSettings>
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