mirror of
https://github.com/linuxdeepin/dde-dock.git
synced 2025-06-04 09:23:03 +00:00
add some plugins interface method
Change-Id: I863da1169a5aceb1aa4891edd3ac000014e2eaa1
This commit is contained in:
parent
8b479bbf14
commit
654accbaf5
@ -9,6 +9,8 @@ DockPluginsController::DockPluginsController(DockItemController *itemControllerI
|
|||||||
: QObject(itemControllerInter),
|
: QObject(itemControllerInter),
|
||||||
m_itemControllerInter(itemControllerInter)
|
m_itemControllerInter(itemControllerInter)
|
||||||
{
|
{
|
||||||
|
qApp->installEventFilter(this);
|
||||||
|
|
||||||
QMetaObject::invokeMethod(this, "loadPlugins", Qt::QueuedConnection);
|
QMetaObject::invokeMethod(this, "loadPlugins", Qt::QueuedConnection);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -20,12 +22,18 @@ void DockPluginsController::itemAdded(PluginsItemInterface * const itemInter, co
|
|||||||
{
|
{
|
||||||
PluginsItem *item = new PluginsItem(itemInter, itemKey);
|
PluginsItem *item = new PluginsItem(itemInter, itemKey);
|
||||||
|
|
||||||
|
m_pluginList[itemInter][itemKey] = item;
|
||||||
|
|
||||||
emit pluginItemInserted(item);
|
emit pluginItemInserted(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
DisplayMode DockPluginsController::displayMode() const
|
void DockPluginsController::itemUpdate(PluginsItemInterface * const itemInter, const QString &itemKey)
|
||||||
{
|
{
|
||||||
return Fashion;
|
PluginsItem *item = pluginItemAt(itemInter, itemKey);
|
||||||
|
|
||||||
|
Q_ASSERT(item);
|
||||||
|
|
||||||
|
item->update();
|
||||||
}
|
}
|
||||||
|
|
||||||
void DockPluginsController::loadPlugins()
|
void DockPluginsController::loadPlugins()
|
||||||
@ -65,3 +73,43 @@ void DockPluginsController::loadPlugins()
|
|||||||
// m_pluginsInterfaceList.append(interface);
|
// m_pluginsInterfaceList.append(interface);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DockPluginsController::displayModeChanged()
|
||||||
|
{
|
||||||
|
const DisplayMode displayMode = qApp->property(PROP_DISPLAY_MODE).value<Dock::DisplayMode>();
|
||||||
|
for (auto inter : m_pluginList.keys())
|
||||||
|
inter->displayModeChanged(displayMode);
|
||||||
|
}
|
||||||
|
|
||||||
|
void DockPluginsController::positionChanged()
|
||||||
|
{
|
||||||
|
const Position position = qApp->property(PROP_POSITION).value<Dock::Position>();
|
||||||
|
for (auto inter : m_pluginList.keys())
|
||||||
|
inter->positionChanged(position);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool DockPluginsController::eventFilter(QObject *o, QEvent *e)
|
||||||
|
{
|
||||||
|
if (o != qApp)
|
||||||
|
return false;
|
||||||
|
if (e->type() != QEvent::DynamicPropertyChange)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
QDynamicPropertyChangeEvent * const dpce = static_cast<QDynamicPropertyChangeEvent *>(e);
|
||||||
|
const QString propertyName = dpce->propertyName();
|
||||||
|
|
||||||
|
if (propertyName == PROP_POSITION)
|
||||||
|
positionChanged();
|
||||||
|
else if (propertyName == PROP_DISPLAY_MODE)
|
||||||
|
displayModeChanged();
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
PluginsItem *DockPluginsController::pluginItemAt(PluginsItemInterface * const itemInter, const QString &itemKey) const
|
||||||
|
{
|
||||||
|
if (!m_pluginList.contains(itemInter))
|
||||||
|
return nullptr;
|
||||||
|
|
||||||
|
return m_pluginList[itemInter][itemKey];
|
||||||
|
}
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
|
|
||||||
#include <QPluginLoader>
|
#include <QPluginLoader>
|
||||||
#include <QList>
|
#include <QList>
|
||||||
|
#include <QMap>
|
||||||
|
|
||||||
class DockItemController;
|
class DockItemController;
|
||||||
class PluginsItemInterface;
|
class PluginsItemInterface;
|
||||||
@ -19,18 +20,24 @@ public:
|
|||||||
|
|
||||||
// implements PluginProxyInterface
|
// implements PluginProxyInterface
|
||||||
void itemAdded(PluginsItemInterface * const itemInter, const QString &itemKey);
|
void itemAdded(PluginsItemInterface * const itemInter, const QString &itemKey);
|
||||||
|
void itemUpdate(PluginsItemInterface * const itemInter, const QString &itemKey);
|
||||||
Dock::DisplayMode displayMode() const;
|
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void pluginItemInserted(PluginsItem *pluginsItem) const;
|
void pluginItemInserted(PluginsItem *pluginsItem) const;
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void loadPlugins();
|
void loadPlugins();
|
||||||
|
void displayModeChanged();
|
||||||
|
void positionChanged();
|
||||||
|
|
||||||
|
private:
|
||||||
|
bool eventFilter(QObject *o, QEvent *e);
|
||||||
|
PluginsItem *pluginItemAt(PluginsItemInterface * const itemInter, const QString &itemKey) const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// QList<PluginsItemInterface *> m_pluginsInterfaceList;
|
// QList<PluginsItemInterface *> m_pluginsInterfaceList;
|
||||||
// QList<QPluginLoader *> m_pluginLoaderList;
|
// QList<QPluginLoader *> m_pluginLoaderList;
|
||||||
|
QMap<PluginsItemInterface *, QMap<QString, PluginsItem *>> m_pluginList;
|
||||||
DockItemController *m_itemControllerInter;
|
DockItemController *m_itemControllerInter;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -10,8 +10,7 @@ class PluginProxyInterface
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
virtual void itemAdded(PluginsItemInterface * const itemInter, const QString &itemKey) = 0;
|
virtual void itemAdded(PluginsItemInterface * const itemInter, const QString &itemKey) = 0;
|
||||||
|
virtual void itemUpdate(PluginsItemInterface * const itemInter, const QString &itemKey) = 0;
|
||||||
virtual Dock::DisplayMode displayMode() const = 0;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // PLUGINPROXYINTERFACE_H
|
#endif // PLUGINPROXYINTERFACE_H
|
||||||
|
@ -22,11 +22,15 @@ public:
|
|||||||
virtual const QString pluginName() = 0;
|
virtual const QString pluginName() = 0;
|
||||||
// init plugins
|
// init plugins
|
||||||
virtual void init(PluginProxyInterface *proxyInter) = 0;
|
virtual void init(PluginProxyInterface *proxyInter) = 0;
|
||||||
|
// dock display mode changed
|
||||||
|
virtual void displayModeChanged(const Dock::DisplayMode displayMode) {Q_UNUSED(displayMode);}
|
||||||
|
// dock position changed
|
||||||
|
virtual void positionChanged(const Dock::Position position) {Q_UNUSED(position);}
|
||||||
|
|
||||||
// plugins type, simple icon or complex widget
|
// plugins type, simple icon or complex widget
|
||||||
virtual PluginType pluginType(const QString &itemKey) = 0;
|
virtual PluginType pluginType(const QString &itemKey) = 0;
|
||||||
// item sort key
|
// item sort key
|
||||||
virtual int itemSortKey(const QString &itemKey) {Q_UNUSED(itemKey); return -1;}
|
virtual int itemSortKey(const QString &itemKey) {Q_UNUSED(itemKey); return 0;}
|
||||||
|
|
||||||
// if complex widget mode, only return widget to plugins item
|
// if complex widget mode, only return widget to plugins item
|
||||||
virtual QWidget *itemWidget(const QString &itemKey) {Q_UNUSED(itemKey); return nullptr;}
|
virtual QWidget *itemWidget(const QString &itemKey) {Q_UNUSED(itemKey); return nullptr;}
|
||||||
@ -34,6 +38,17 @@ public:
|
|||||||
virtual const QIcon itemIcon(const QString &itemKey) {Q_UNUSED(itemKey); return QIcon();}
|
virtual const QIcon itemIcon(const QString &itemKey) {Q_UNUSED(itemKey); return QIcon();}
|
||||||
virtual const QString itemCommand(const QString &itemKey) {Q_UNUSED(itemKey); return QString();}
|
virtual const QString itemCommand(const QString &itemKey) {Q_UNUSED(itemKey); return QString();}
|
||||||
|
|
||||||
|
protected:
|
||||||
|
Dock::DisplayMode displayMode() const
|
||||||
|
{
|
||||||
|
return qApp->property(PROP_DISPLAY_MODE).value<Dock::DisplayMode>();
|
||||||
|
}
|
||||||
|
|
||||||
|
Dock::Position position() const
|
||||||
|
{
|
||||||
|
return qApp->property(PROP_POSITION).value<Dock::Position>();
|
||||||
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
PluginProxyInterface *m_proxyInter;
|
PluginProxyInterface *m_proxyInter;
|
||||||
};
|
};
|
||||||
|
@ -35,6 +35,13 @@ void DatetimePlugin::init(PluginProxyInterface *proxyInter)
|
|||||||
m_proxyInter->itemAdded(this, QString());
|
m_proxyInter->itemAdded(this, QString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int DatetimePlugin::itemSortKey(const QString &itemKey) const
|
||||||
|
{
|
||||||
|
Q_UNUSED(itemKey);
|
||||||
|
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
QWidget *DatetimePlugin::itemWidget(const QString &itemKey)
|
QWidget *DatetimePlugin::itemWidget(const QString &itemKey)
|
||||||
{
|
{
|
||||||
Q_UNUSED(itemKey);
|
Q_UNUSED(itemKey);
|
||||||
|
@ -20,6 +20,8 @@ public:
|
|||||||
PluginType pluginType(const QString &itemKey);
|
PluginType pluginType(const QString &itemKey);
|
||||||
void init(PluginProxyInterface *proxyInter);
|
void init(PluginProxyInterface *proxyInter);
|
||||||
|
|
||||||
|
int itemSortKey(const QString &itemKey) const;
|
||||||
|
|
||||||
QWidget *itemWidget(const QString &itemKey);
|
QWidget *itemWidget(const QString &itemKey);
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
|
@ -39,10 +39,3 @@ const QString ShutdownPlugin::itemCommand(const QString &itemKey)
|
|||||||
|
|
||||||
return QString("dbus-send --print-reply --dest=com.deepin.dde.shutdownFront /com/deepin/dde/shutdownFront com.deepin.dde.shutdownFront.Show");
|
return QString("dbus-send --print-reply --dest=com.deepin.dde.shutdownFront /com/deepin/dde/shutdownFront com.deepin.dde.shutdownFront.Show");
|
||||||
}
|
}
|
||||||
|
|
||||||
int ShutdownPlugin::itemSortKey(const QString &itemKey)
|
|
||||||
{
|
|
||||||
Q_UNUSED(itemKey);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
@ -14,7 +14,6 @@ public:
|
|||||||
|
|
||||||
const QString pluginName();
|
const QString pluginName();
|
||||||
void init(PluginProxyInterface *proxyInter);
|
void init(PluginProxyInterface *proxyInter);
|
||||||
int itemSortKey(const QString &itemKey);
|
|
||||||
|
|
||||||
PluginType pluginType(const QString &itemKey);
|
PluginType pluginType(const QString &itemKey);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user