add shutdown plugin

Change-Id: I4d16ce04b7e063304daba6d31032ba2b70c1f8b4
This commit is contained in:
石博文 2015-12-10 16:07:12 +08:00
parent 0c86878336
commit 7b3ec27bf8
Notes: Deepin Code Review 2016-06-14 07:19:47 +00:00
Verified+1: Anonymous Coward #1000004
Code-Review+2: <mr.asianwang@gmail.com>
Submitted-by: <mr.asianwang@gmail.com>
Submitted-at: Thu, 10 Dec 2015 16:50:34 +0800
Reviewed-on: https://cr.deepin.io/9556
Project: dde/dde-dock
Branch: refs/heads/master
13 changed files with 400 additions and 9 deletions

View File

@ -1,6 +1,7 @@
TEMPLATE = subdirs
SUBDIRS = dde-dock \
dde-dock-systray-plugin \
dde-dock-shutdown-plugin \
dde-dock-trash-plugin
TRANSLATIONS += translations/dde-dock.ts

View File

@ -0,0 +1,4 @@
{
"api_version" : 1.0,
"sys_plugin" : true
}

View File

@ -0,0 +1,24 @@
include(../../common.pri)
QT += core gui widgets
TARGET = dde-dock-shutdown-plugin
TEMPLATE = lib
CONFIG += plugin c++11
DESTDIR = $$_PRO_FILE_PWD_/../
SOURCES += \
shutdownplugin.cpp
HEADERS += \
shutdownplugin.h
DISTFILES += dde-dock-shutdown-plugin.json
target.path = $${PREFIX}/lib/dde-dock/plugins/
INSTALLS += target
QMAKE_MOC_OPTIONS += -I/usr/include/
RESOURCES += \
resources.qrc

View File

@ -0,0 +1,145 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="&#x56FE;&#x5C42;_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
y="0px" viewBox="0 0 48 48" style="enable-background:new 0 0 48 48;" xml:space="preserve">
<g>
<image style="overflow:visible;opacity:0.3;" width="200" height="200" xlink:href="data:image/png;base64,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" transform="matrix(0.24 0 0 0.24 -0.0945 0.0176)">
</image>
<g>
<g>
<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="23.9055" y1="44.0176" x2="23.9055" y2="2.0176">
<stop offset="0" style="stop-color:#5F00F4"/>
<stop offset="1" style="stop-color:#AF4DEB"/>
</linearGradient>
<path style="fill:url(#SVGID_1_);" d="M23.905,44.018c-11.58,0-21-9.421-21-21c0-11.579,9.42-21,21-21c11.579,0,21,9.421,21,21
C44.905,34.597,35.485,44.018,23.905,44.018z"/>
</g>
</g>
</g>
<g>
<g>
<path style="fill:#FFFFFF;" d="M24,23c-0.552,0-1-0.448-1-1V12c0-0.552,0.448-1,1-1s1,0.448,1,1v10C25,22.552,24.552,23,24,23z"/>
</g>
<g>
<path style="fill:#FFFFFF;" d="M24,33.984c-6.065,0-11-4.935-11-11c0-3.492,1.604-6.7,4.399-8.8
c0.442-0.332,1.069-0.242,1.4,0.199c0.332,0.441,0.243,1.068-0.199,1.4c-2.288,1.719-3.6,4.344-3.6,7.201c0,4.963,4.038,9,9,9
c4.963,0,9-4.037,9-9c0-2.86-1.314-5.486-3.605-7.205c-0.441-0.332-0.53-0.958-0.199-1.4c0.331-0.442,0.957-0.531,1.4-0.2
C33.395,16.28,35,19.489,35,22.984C35,29.05,30.065,33.984,24,33.984z"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 10 KiB

View File

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="&#x56FE;&#x5C42;_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
y="0px" viewBox="0 0 16 16" style="enable-background:new 0 0 16 16;" xml:space="preserve">
<g>
<g>
<path style="fill:#FFFFFF;" d="M7.458,13.976c-3.074,0-5.575-2.501-5.575-5.575c0-1.71,0.77-3.303,2.111-4.368
c0.248-0.196,0.611-0.157,0.808,0.093c0.197,0.249,0.156,0.61-0.093,0.808C3.644,5.779,3.033,7.042,3.033,8.4
c0,2.44,1.984,4.425,4.425,4.425s4.425-1.984,4.425-4.425c0-1.347-0.603-2.605-1.653-3.45C9.982,4.751,9.942,4.39,10.142,4.142
s0.563-0.286,0.809-0.088c1.323,1.064,2.083,2.649,2.083,4.346C13.033,11.475,10.532,13.976,7.458,13.976z"/>
</g>
<g>
<path style="fill:#FFFFFF;" d="M7.5,8.497c-0.276,0-0.5-0.224-0.5-0.5v-5c0-0.276,0.224-0.5,0.5-0.5S8,2.72,8,2.997v5
C8,8.273,7.776,8.497,7.5,8.497z"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -0,0 +1,6 @@
<RCC>
<qresource prefix="/icons">
<file>icons/normal.svg</file>
<file>icons/fashion.svg</file>
</qresource>
</RCC>

View File

@ -0,0 +1,127 @@
#include "shutdownplugin.h"
#include <QLabel>
#include <QDebug>
#include <QTimer>
const QString PLUGIN_ID = "shutdown";
ShutdownPlugin::ShutdownPlugin(QObject *parent)
: QObject(parent)
{
m_mainWidget = new QLabel;
}
QString ShutdownPlugin::getPluginName()
{
return QString(tr("Power"));
}
void ShutdownPlugin::init(DockPluginProxyInterface *proxy)
{
m_proxy = proxy;
m_proxy->itemAddedEvent(PLUGIN_ID);
changeMode(m_proxy->dockMode(), m_proxy->dockMode());
}
void ShutdownPlugin::changeMode(Dock::DockMode newMode, Dock::DockMode oldMode)
{
Q_UNUSED(oldMode)
switch (newMode)
{
case Dock::FashionMode:
m_mainWidget->setFixedSize(48, 48);
m_mainWidget->setPixmap(QPixmap(":/icons/icons/fashion.svg"));
break;
case Dock::ClassicMode:
case Dock::EfficientMode:
m_mainWidget->setFixedSize(18, 18);
m_mainWidget->setPixmap(QPixmap(":/icons/icons/normal.svg"));
break;
}
m_proxy->infoChangedEvent(DockPluginInterface::InfoTypeItemSize, PLUGIN_ID);
}
QStringList ShutdownPlugin::ids()
{
return QStringList();
}
QString ShutdownPlugin::getName(QString id)
{
Q_UNUSED(id)
return getPluginName();
}
QString ShutdownPlugin::getTitle(QString id)
{
Q_UNUSED(id)
return getPluginName();
}
QString ShutdownPlugin::getCommand(QString id)
{
Q_UNUSED(id)
return QString("dde-shutdown");
}
QWidget *ShutdownPlugin::getItem(QString id)
{
Q_UNUSED(id)
return m_mainWidget;
}
QWidget *ShutdownPlugin::getApplet(QString id)
{
Q_UNUSED(id)
return nullptr;
}
QString ShutdownPlugin::getMenuContent(QString id)
{
Q_UNUSED(id)
return QString();
}
void ShutdownPlugin::invokeMenuItem(QString id, QString itemId, bool checked)
{
Q_UNUSED(id)
Q_UNUSED(itemId)
Q_UNUSED(checked)
}
void ShutdownPlugin::setEnabled(const QString &id, bool enabled)
{
Q_UNUSED(id)
Q_UNUSED(enabled)
}
bool ShutdownPlugin::configurable(const QString &id)
{
Q_UNUSED(id)
return false;
}
bool ShutdownPlugin::enabled(const QString &id)
{
Q_UNUSED(id)
return true;
}
QPixmap ShutdownPlugin::getIcon(QString id)
{
Q_UNUSED(id);
return QPixmap();
}

View File

@ -0,0 +1,41 @@
#ifndef SHUTDOWNPLUGIN_H
#define SHUTDOWNPLUGIN_H
#include <QObject>
#include <QLabel>
#include <dde-dock/dockplugininterface.h>
#include <dde-dock/dockpluginproxyinterface.h>
class ShutdownPlugin : public QObject, public DockPluginInterface
{
Q_OBJECT
Q_PLUGIN_METADATA(IID "org.deepin.Dock.PluginInterface" FILE "dde-dock-shutdown-plugin.json")
Q_INTERFACES(DockPluginInterface)
public:
explicit ShutdownPlugin(QObject *parent = 0);
void init(DockPluginProxyInterface *proxy) Q_DECL_OVERRIDE;
void changeMode(Dock::DockMode newMode, Dock::DockMode oldMode) Q_DECL_OVERRIDE;
void invokeMenuItem(QString id, QString itemId, bool checked) Q_DECL_OVERRIDE;
void setEnabled(const QString &id, bool enabled) Q_DECL_OVERRIDE;
bool configurable(const QString &id) Q_DECL_OVERRIDE;
bool enabled(const QString &id) Q_DECL_OVERRIDE;
QPixmap getIcon(QString id) Q_DECL_OVERRIDE;
QString getPluginName() Q_DECL_OVERRIDE;
QString getName(QString id) Q_DECL_OVERRIDE;
QString getTitle(QString id) Q_DECL_OVERRIDE;
QString getCommand(QString id) Q_DECL_OVERRIDE;
QString getMenuContent(QString id) Q_DECL_OVERRIDE;
QStringList ids() Q_DECL_OVERRIDE;
QWidget *getItem(QString id) Q_DECL_OVERRIDE;
QWidget *getApplet(QString id) Q_DECL_OVERRIDE;
private:
DockPluginProxyInterface *m_proxy;
QLabel *m_mainWidget;
};
#endif // SHUTDOWNPLUGIN_H

View File

@ -226,7 +226,7 @@ void TrayIcon::updateIcon()
xcb_configure_window(c, m_containerWid, XCB_CONFIG_WINDOW_STACK_MODE, stackAboveData);
QPoint globalPos = mapToGlobal(QPoint(0, 0));
const uint32_t windowMoveConfigVals[2] = { globalPos.x(), globalPos.y() };
const uint32_t windowMoveConfigVals[2] = { uint32_t(globalPos.x()), uint32_t(globalPos.y()) };
xcb_configure_window(c, m_containerWid,
XCB_CONFIG_WINDOW_X | XCB_CONFIG_WINDOW_Y,
windowMoveConfigVals);

View File

@ -219,12 +219,22 @@ void DockPluginManager::handleSysPluginAdd(AbstractDockItem *item, QString uuid)
m_sysPlugins.insert(item, uuid);
if (uuid == SHUTDOWN_PLUGIN_ID)
{
if (m_sysPlugins.values().contains(DATETIME_PLUGIN_ID))
emit itemInsert(sysPluginItem(DATETIME_PLUGIN_ID), item);
else
emit itemAppend(item);
return;
}
if (uuid == SYSTRAY_PLUGIN_ID) {
if (m_dockModeData->getDockMode() != Dock::FashionMode) {
emit itemAppend(item);
}
else {
emit itemInsert(sysPluginItem(DATETIME_PLUGIN_ID), item);
emit itemInsert(sysPluginItem(SHUTDOWN_PLUGIN_ID), item);
}
}
else {
@ -238,8 +248,15 @@ void DockPluginManager::handleNormalPluginAdd(AbstractDockItem *item, QString uu
return;
if (m_dockModeData->getDockMode() != Dock::FashionMode) {
//Normal plug next date plugins to ensure trayicon displayed in the far left
emit itemInsert(sysPluginItem(DATETIME_PLUGIN_ID), item);
qDebug() << uuid << m_sysPlugins.values();
if (m_sysPlugins.values().contains(SHUTDOWN_PLUGIN_ID))
itemInsert(sysPluginItem(SHUTDOWN_PLUGIN_ID), item);
else if (m_sysPlugins.values().contains(DATETIME_PLUGIN_ID))
itemInsert(sysPluginItem(DATETIME_PLUGIN_ID), item);
else
itemInsert(nullptr, item);
}
else {
//Normal plug placed in the far left on Fashion Mode
@ -247,5 +264,4 @@ void DockPluginManager::handleNormalPluginAdd(AbstractDockItem *item, QString uu
}
m_normalPlugins.insert(item, uuid);
}

View File

@ -54,6 +54,7 @@ private:
const QString SYSTRAY_PLUGIN_ID = "composite_item_key";
const QString DATETIME_PLUGIN_ID = "id_datetime";
const QString SHUTDOWN_PLUGIN_ID = "shutdown";
};
#endif // DOCKPLUGINMANAGER_H

Binary file not shown.

View File

@ -53,7 +53,7 @@
<context>
<name>MainItem</name>
<message>
<location filename="../dde-dock-trash-plugin/mainitem.cpp" line="96"/>
<location filename="../dde-dock-trash-plugin/mainitem.cpp" line="123"/>
<source>Are you sure to uninstall %1?</source>
<translation> %1 </translation>
</message>
@ -99,12 +99,12 @@
<context>
<name>PluginItemWrapper</name>
<message>
<location filename="../dde-dock/src/controller/plugins/pluginitemwrapper.cpp" line="92"/>
<location filename="../dde-dock/src/controller/plugins/pluginitemwrapper.cpp" line="103"/>
<source>_Run</source>
<translation>(R)</translation>
</message>
<message>
<location filename="../dde-dock/src/controller/plugins/pluginitemwrapper.cpp" line="93"/>
<location filename="../dde-dock/src/controller/plugins/pluginitemwrapper.cpp" line="104"/>
<source>_Undock</source>
<translation>(U)</translation>
</message>
@ -112,11 +112,19 @@
<context>
<name>PluginsSettingFrame</name>
<message>
<location filename="../dde-dock/src/controller/plugins/pluginssettingframe.cpp" line="149"/>
<location filename="../dde-dock/src/controller/plugins/pluginssettingframe.cpp" line="170"/>
<source>Notification Area Settings</source>
<translation></translation>
</message>
</context>
<context>
<name>ShutdownPlugin</name>
<message>
<location filename="../dde-dock-shutdown-plugin/shutdownplugin.cpp" line="17"/>
<source>Power</source>
<translation></translation>
</message>
</context>
<context>
<name>TrashPlugin</name>
<message>