add time plugin context menu

Change-Id: I0b8705c03d00d678b6197aaed66fddddf8b7a79c
This commit is contained in:
石博文 2016-09-21 10:24:42 +08:00
parent 091d0e53cf
commit 0757d74f73
Notes: Deepin Code Review 2016-09-21 10:54:07 +08:00
Verified+1: Anonymous Coward #1000004
Code-Review+2: 石博文 <sbw@sbw.so>
Submitted-by: 石博文 <sbw@sbw.so>
Submitted-at: Wed, 21 Sep 2016 10:54:07 +0800
Reviewed-on: https://cr.deepin.io/16216
Project: dde/dde-dock
Branch: refs/heads/master
4 changed files with 41 additions and 0 deletions

View File

@ -18,6 +18,8 @@ DatetimePlugin::DatetimePlugin(QObject *parent)
m_centeralWidget = new DatetimeWidget;
connect(m_centeralWidget, &DatetimeWidget::requestContextMenu, [this] {m_proxyInter->requestContextMenu(this, QString());});
connect(m_refershTimer, &QTimer::timeout, this, &DatetimePlugin::updateCurrentTimeString);
}
@ -66,6 +68,36 @@ const QString DatetimePlugin::itemCommand(const QString &itemKey)
return "dde-calendar";
}
const QString DatetimePlugin::itemContextMenu(const QString &itemKey)
{
Q_UNUSED(itemKey);
QList<QVariant> items;
items.reserve(1);
QMap<QString, QVariant> open;
open["itemId"] = "open";
open["itemText"] = tr("Time Settings");
open["isActive"] = true;
items.push_back(open);
QMap<QString, QVariant> menu;
menu["items"] = items;
menu["checkableMenu"] = false;
menu["singleCheck"] = false;
return QJsonDocument::fromVariant(menu).toJson();
}
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");
}
void DatetimePlugin::updateCurrentTimeString()
{
const QDateTime currentDateTime = QDateTime::currentDateTime();

View File

@ -26,6 +26,9 @@ public:
QWidget *itemTipsWidget(const QString &itemKey) override;
const QString itemCommand(const QString &itemKey) override;
const QString itemContextMenu(const QString &itemKey) override;
void invokedMenuItem(const QString &itemKey, const QString &menuId, const bool checked);
private slots:
void updateCurrentTimeString();

View File

@ -105,7 +105,10 @@ void DatetimeWidget::mousePressEvent(QMouseEvent *e)
const QPoint p(e->pos() - rect().center());
if (p.manhattanLength() < std::min(width(), height()) * 0.8 * 0.5)
{
emit requestContextMenu();
return;
}
QWidget::mousePressEvent(e);
}

View File

@ -10,6 +10,9 @@ class DatetimeWidget : public QWidget
public:
explicit DatetimeWidget(QWidget *parent = 0);
signals:
void requestContextMenu() const;
private:
QSize sizeHint() const;
void resizeEvent(QResizeEvent *e);