mirror of
https://github.com/linuxdeepin/dde-dock.git
synced 2025-06-04 09:23:03 +00:00
Merge branch 'dde-dock' of gitcafe.com:Hualet/dde-workspace-2015 into dde-dock
Conflicts: dde-dock/dde-dock.pro
This commit is contained in:
commit
020f97334f
@ -20,7 +20,6 @@ SOURCES += systrayplugin.cpp \
|
|||||||
|
|
||||||
HEADERS += systrayplugin.h \
|
HEADERS += systrayplugin.h \
|
||||||
docktrayitem.h \
|
docktrayitem.h \
|
||||||
../dde-dock/src/abstractdockitem.h \
|
|
||||||
dbustraymanager.h
|
dbustraymanager.h
|
||||||
|
|
||||||
target.path = /usr/share/dde-dock/plugins/
|
target.path = /usr/share/dde-dock/plugins/
|
||||||
|
@ -2,9 +2,9 @@
|
|||||||
|
|
||||||
#include "docktrayitem.h"
|
#include "docktrayitem.h"
|
||||||
|
|
||||||
DockTrayItem * DockTrayItem::fromWinId(WId winId, QWidget *parent)
|
DockTrayItem * DockTrayItem::fromWinId(WId winId)
|
||||||
{
|
{
|
||||||
DockTrayItem *item = new DockTrayItem(parent);
|
DockTrayItem *item = new DockTrayItem;
|
||||||
|
|
||||||
QWindow *win = QWindow::fromWinId(winId);
|
QWindow *win = QWindow::fromWinId(winId);
|
||||||
QWidget *child = QWidget::createWindowContainer(win, item);
|
QWidget *child = QWidget::createWindowContainer(win, item);
|
||||||
@ -17,57 +17,12 @@ DockTrayItem * DockTrayItem::fromWinId(WId winId, QWidget *parent)
|
|||||||
}
|
}
|
||||||
|
|
||||||
DockTrayItem::DockTrayItem(QWidget *parent)
|
DockTrayItem::DockTrayItem(QWidget *parent)
|
||||||
: AbstractDockItem(parent)
|
: QWidget(parent)
|
||||||
{
|
{
|
||||||
setFixedSize(32, 32);
|
setFixedSize(16, 16);
|
||||||
}
|
}
|
||||||
|
|
||||||
DockTrayItem::~DockTrayItem()
|
DockTrayItem::~DockTrayItem()
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void DockTrayItem::setTitle(const QString &)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void DockTrayItem::setIcon(const QString &, int)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void DockTrayItem::setMoveable(bool)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
bool DockTrayItem::moveable()
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
void DockTrayItem::setActived(bool)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
bool DockTrayItem::actived()
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
void DockTrayItem::setIndex(int value)
|
|
||||||
{
|
|
||||||
m_itemIndex = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
int DockTrayItem::index()
|
|
||||||
{
|
|
||||||
return m_itemIndex;
|
|
||||||
}
|
|
||||||
|
|
||||||
QWidget * DockTrayItem::getContents()
|
|
||||||
{
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
@ -2,30 +2,20 @@
|
|||||||
#define DOCKTRAYITEM_H
|
#define DOCKTRAYITEM_H
|
||||||
|
|
||||||
#include <QWindow>
|
#include <QWindow>
|
||||||
|
#include <QWidget>
|
||||||
|
|
||||||
#include "abstractdockitem.h"
|
class DockTrayItem : public QWidget
|
||||||
|
|
||||||
class DockTrayItem : public AbstractDockItem
|
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
enum Style { Simple, Composite };
|
enum Style { Simple, Composite };
|
||||||
public:
|
public:
|
||||||
explicit DockTrayItem(QWidget *parent = 0);
|
|
||||||
~DockTrayItem();
|
~DockTrayItem();
|
||||||
|
|
||||||
static DockTrayItem* fromWinId(WId winId, QWidget *parent=0);
|
static DockTrayItem* fromWinId(WId winId);
|
||||||
|
|
||||||
void setTitle(const QString &title) Q_DECL_OVERRIDE;
|
private:
|
||||||
void setIcon(const QString &iconPath, int size = 42) Q_DECL_OVERRIDE;
|
DockTrayItem(QWidget *parent = 0);
|
||||||
void setMoveable(bool value) Q_DECL_OVERRIDE;
|
|
||||||
bool moveable() Q_DECL_OVERRIDE;
|
|
||||||
void setActived(bool value) Q_DECL_OVERRIDE;
|
|
||||||
bool actived() Q_DECL_OVERRIDE;
|
|
||||||
void setIndex(int value) Q_DECL_OVERRIDE;
|
|
||||||
int index() Q_DECL_OVERRIDE;
|
|
||||||
|
|
||||||
QWidget * getContents() Q_DECL_OVERRIDE;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // DOCKTRAYITEM_H
|
#endif // DOCKTRAYITEM_H
|
||||||
|
@ -3,17 +3,14 @@
|
|||||||
#include "systrayplugin.h"
|
#include "systrayplugin.h"
|
||||||
#include "abstractdockitem.h"
|
#include "abstractdockitem.h"
|
||||||
|
|
||||||
|
|
||||||
SystrayPlugin::~SystrayPlugin()
|
SystrayPlugin::~SystrayPlugin()
|
||||||
{
|
{
|
||||||
this->clearItems();
|
this->clearItems();
|
||||||
}
|
}
|
||||||
|
|
||||||
QList<AbstractDockItem*> SystrayPlugin::items()
|
void SystrayPlugin::init()
|
||||||
{
|
{
|
||||||
//clear m_items.
|
|
||||||
this->clearItems();
|
|
||||||
|
|
||||||
// get xids of trayicons.
|
|
||||||
if (!m_dbusTrayManager) {
|
if (!m_dbusTrayManager) {
|
||||||
m_dbusTrayManager = new com::deepin::dde::TrayManager("com.deepin.dde.TrayManager",
|
m_dbusTrayManager = new com::deepin::dde::TrayManager("com.deepin.dde.TrayManager",
|
||||||
"/com/deepin/dde/TrayManager",
|
"/com/deepin/dde/TrayManager",
|
||||||
@ -24,22 +21,24 @@ QList<AbstractDockItem*> SystrayPlugin::items()
|
|||||||
QList<uint> trayIcons = m_dbusTrayManager->trayIcons();
|
QList<uint> trayIcons = m_dbusTrayManager->trayIcons();
|
||||||
qDebug() << "Found trayicons: " << trayIcons;
|
qDebug() << "Found trayicons: " << trayIcons;
|
||||||
|
|
||||||
QList<WId> winIds;
|
foreach (uint trayIcon, trayIcons) {
|
||||||
foreach (QVariant trayIcon, trayIcons) {
|
m_items[QString::number(trayIcon)] = DockTrayItem::fromWinId(trayIcon);
|
||||||
winIds << trayIcon.toUInt();
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// generate items.
|
QStringList SystrayPlugin::uuids()
|
||||||
foreach (WId winId, winIds) {
|
{
|
||||||
m_items << DockTrayItem::fromWinId(winId);
|
return m_items.keys();
|
||||||
}
|
}
|
||||||
|
|
||||||
return m_items;
|
QWidget * SystrayPlugin::getItem(QString uuid)
|
||||||
|
{
|
||||||
|
return m_items.value(uuid);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SystrayPlugin::clearItems()
|
void SystrayPlugin::clearItems()
|
||||||
{
|
{
|
||||||
foreach (AbstractDockItem * item, m_items) {
|
foreach (QWidget * item, m_items) {
|
||||||
item->deleteLater();
|
item->deleteLater();
|
||||||
}
|
}
|
||||||
m_items.clear();
|
m_items.clear();
|
||||||
|
@ -2,10 +2,10 @@
|
|||||||
#define SYSTRAYPLUGIN_H
|
#define SYSTRAYPLUGIN_H
|
||||||
|
|
||||||
#include <QtPlugin>
|
#include <QtPlugin>
|
||||||
|
#include <QStringList>
|
||||||
|
|
||||||
#include "docktrayitem.h"
|
#include "docktrayitem.h"
|
||||||
#include "dockplugininterface.h"
|
#include "dockplugininterface.h"
|
||||||
#include "abstractdockitem.h"
|
|
||||||
#include "dbustraymanager.h"
|
#include "dbustraymanager.h"
|
||||||
|
|
||||||
class SystrayPlugin : public QObject, DockPluginInterface
|
class SystrayPlugin : public QObject, DockPluginInterface
|
||||||
@ -17,10 +17,12 @@ class SystrayPlugin : public QObject, DockPluginInterface
|
|||||||
public:
|
public:
|
||||||
~SystrayPlugin();
|
~SystrayPlugin();
|
||||||
|
|
||||||
QList<AbstractDockItem*> items() Q_DECL_OVERRIDE;
|
void init() Q_DECL_OVERRIDE;
|
||||||
|
QStringList uuids() Q_DECL_OVERRIDE;
|
||||||
|
QWidget * getItem(QString uuid) Q_DECL_OVERRIDE;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QList<AbstractDockItem*> m_items;
|
QMap<QString, QWidget*> m_items;
|
||||||
com::deepin::dde::TrayManager *m_dbusTrayManager = 0;
|
com::deepin::dde::TrayManager *m_dbusTrayManager = 0;
|
||||||
|
|
||||||
void clearItems();
|
void clearItems();
|
||||||
|
@ -33,6 +33,7 @@ SOURCES += \
|
|||||||
src/DBus/dbusclientmanager.cpp \
|
src/DBus/dbusclientmanager.cpp \
|
||||||
src/DBus/dbusdockedappmanager.cpp \
|
src/DBus/dbusdockedappmanager.cpp \
|
||||||
src/DBus/dbusdocksetting.cpp
|
src/DBus/dbusdocksetting.cpp
|
||||||
|
src/pluginitemwrapper.cpp
|
||||||
|
|
||||||
HEADERS += \
|
HEADERS += \
|
||||||
src/abstractdockitem.h \
|
src/abstractdockitem.h \
|
||||||
@ -56,6 +57,7 @@ HEADERS += \
|
|||||||
src/DBus/dbusclientmanager.h \
|
src/DBus/dbusclientmanager.h \
|
||||||
src/DBus/dbusdockedappmanager.h \
|
src/DBus/dbusdockedappmanager.h \
|
||||||
src/DBus/dbusdocksetting.h
|
src/DBus/dbusdocksetting.h
|
||||||
|
src/pluginitemwrapper.h
|
||||||
|
|
||||||
RESOURCES += \
|
RESOURCES += \
|
||||||
images.qrc \
|
images.qrc \
|
||||||
|
@ -40,6 +40,7 @@ Panel::Panel(QWidget *parent)
|
|||||||
SystrayManager *manager = new SystrayManager();
|
SystrayManager *manager = new SystrayManager();
|
||||||
foreach (AbstractDockItem *item, manager->trayIcons()) {
|
foreach (AbstractDockItem *item, manager->trayIcons()) {
|
||||||
rightLayout->addItem(item);
|
rightLayout->addItem(item);
|
||||||
|
qDebug() << item->geometry();
|
||||||
}
|
}
|
||||||
|
|
||||||
panelMenu = new PanelMenu();
|
panelMenu = new PanelMenu();
|
||||||
|
@ -2,13 +2,15 @@
|
|||||||
#define DOCKPLUGININTERFACE_H
|
#define DOCKPLUGININTERFACE_H
|
||||||
|
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
#include "abstractdockitem.h"
|
#include <QStringList>
|
||||||
|
|
||||||
class DockPluginInterface
|
class DockPluginInterface
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
virtual ~DockPluginInterface() {}
|
virtual ~DockPluginInterface() {}
|
||||||
virtual QList<AbstractDockItem*> items() = 0;
|
virtual void init() = 0;
|
||||||
|
virtual QStringList uuids() = 0;
|
||||||
|
virtual QWidget* getItem(QString uuid) = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
QT_BEGIN_NAMESPACE
|
QT_BEGIN_NAMESPACE
|
||||||
|
19
dde-dock/src/pluginitemwrapper.cpp
Normal file
19
dde-dock/src/pluginitemwrapper.cpp
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
#include "pluginitemwrapper.h"
|
||||||
|
|
||||||
|
PluginItemWrapper::PluginItemWrapper(DockPluginInterface *plugin,
|
||||||
|
QString uuid, QWidget * parent) :
|
||||||
|
AbstractDockItem(parent),
|
||||||
|
m_plugin(plugin),
|
||||||
|
m_uuid(uuid)
|
||||||
|
{
|
||||||
|
if (m_plugin) {
|
||||||
|
QWidget * item = m_plugin->getItem(uuid);
|
||||||
|
|
||||||
|
if (item) {
|
||||||
|
setFixedSize(item->size());
|
||||||
|
|
||||||
|
item->setParent(this);
|
||||||
|
item->move(this->rect().center() - item->rect().center());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
18
dde-dock/src/pluginitemwrapper.h
Normal file
18
dde-dock/src/pluginitemwrapper.h
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
#ifndef PLUGINITEMWRAPPER_H
|
||||||
|
#define PLUGINITEMWRAPPER_H
|
||||||
|
|
||||||
|
#include "abstractdockitem.h"
|
||||||
|
#include "dockplugininterface.h"
|
||||||
|
|
||||||
|
class PluginItemWrapper : public AbstractDockItem
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
PluginItemWrapper(DockPluginInterface *plugin, QString uuid, QWidget * parent = 0);
|
||||||
|
|
||||||
|
|
||||||
|
private:
|
||||||
|
DockPluginInterface * m_plugin;
|
||||||
|
QString m_uuid;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // PLUGINITEMWRAPPER_H
|
@ -3,6 +3,7 @@
|
|||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
|
|
||||||
#include "systraymanager.h"
|
#include "systraymanager.h"
|
||||||
|
#include "pluginitemwrapper.h"
|
||||||
|
|
||||||
static QString SystrayPluginPath = "/usr/share/dde-dock/plugins/libdock-systray-plugin.so";
|
static QString SystrayPluginPath = "/usr/share/dde-dock/plugins/libdock-systray-plugin.so";
|
||||||
|
|
||||||
@ -15,11 +16,17 @@ SystrayManager::SystrayManager(QObject *parent)
|
|||||||
|
|
||||||
QList<AbstractDockItem*> SystrayManager::trayIcons()
|
QList<AbstractDockItem*> SystrayManager::trayIcons()
|
||||||
{
|
{
|
||||||
|
QList<AbstractDockItem*> result;
|
||||||
|
|
||||||
if (m_plugin) {
|
if (m_plugin) {
|
||||||
return m_plugin->items();
|
QStringList uuids = m_plugin->uuids();
|
||||||
} else {
|
|
||||||
return QList<AbstractDockItem*>();
|
foreach (QString uuid, uuids) {
|
||||||
|
result << new PluginItemWrapper(m_plugin, uuid);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SystrayManager::loadPlugin()
|
void SystrayManager::loadPlugin()
|
||||||
@ -29,6 +36,7 @@ void SystrayManager::loadPlugin()
|
|||||||
QObject *plugin = loader.instance();
|
QObject *plugin = loader.instance();
|
||||||
if (plugin) {
|
if (plugin) {
|
||||||
m_plugin = qobject_cast<DockPluginInterface*>(plugin);
|
m_plugin = qobject_cast<DockPluginInterface*>(plugin);
|
||||||
|
m_plugin->init();
|
||||||
} else {
|
} else {
|
||||||
qWarning() << "Failed to load systray plugin.";
|
qWarning() << "Failed to load systray plugin.";
|
||||||
qWarning() << loader.errorString();
|
qWarning() << loader.errorString();
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
#include <QObject>
|
#include <QObject>
|
||||||
#include "dockplugininterface.h"
|
#include "dockplugininterface.h"
|
||||||
|
|
||||||
|
class AbstractDockItem;
|
||||||
class SystrayManager : public QObject
|
class SystrayManager : public QObject
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
@ -16,7 +17,6 @@ private:
|
|||||||
DockPluginInterface *m_plugin;
|
DockPluginInterface *m_plugin;
|
||||||
|
|
||||||
void loadPlugin();
|
void loadPlugin();
|
||||||
void unloadPlugin();
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // SYSTRAYMANAGER_H
|
#endif // SYSTRAYMANAGER_H
|
||||||
|
Loading…
x
Reference in New Issue
Block a user