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),
|
||||
m_itemControllerInter(itemControllerInter)
|
||||
{
|
||||
qApp->installEventFilter(this);
|
||||
|
||||
QMetaObject::invokeMethod(this, "loadPlugins", Qt::QueuedConnection);
|
||||
}
|
||||
|
||||
@ -20,12 +22,18 @@ void DockPluginsController::itemAdded(PluginsItemInterface * const itemInter, co
|
||||
{
|
||||
PluginsItem *item = new PluginsItem(itemInter, itemKey);
|
||||
|
||||
m_pluginList[itemInter][itemKey] = 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()
|
||||
@ -65,3 +73,43 @@ void DockPluginsController::loadPlugins()
|
||||
// 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 <QList>
|
||||
#include <QMap>
|
||||
|
||||
class DockItemController;
|
||||
class PluginsItemInterface;
|
||||
@ -19,18 +20,24 @@ public:
|
||||
|
||||
// implements PluginProxyInterface
|
||||
void itemAdded(PluginsItemInterface * const itemInter, const QString &itemKey);
|
||||
|
||||
Dock::DisplayMode displayMode() const;
|
||||
void itemUpdate(PluginsItemInterface * const itemInter, const QString &itemKey);
|
||||
|
||||
signals:
|
||||
void pluginItemInserted(PluginsItem *pluginsItem) const;
|
||||
|
||||
private slots:
|
||||
void loadPlugins();
|
||||
void displayModeChanged();
|
||||
void positionChanged();
|
||||
|
||||
private:
|
||||
bool eventFilter(QObject *o, QEvent *e);
|
||||
PluginsItem *pluginItemAt(PluginsItemInterface * const itemInter, const QString &itemKey) const;
|
||||
|
||||
private:
|
||||
// QList<PluginsItemInterface *> m_pluginsInterfaceList;
|
||||
// QList<QPluginLoader *> m_pluginLoaderList;
|
||||
QMap<PluginsItemInterface *, QMap<QString, PluginsItem *>> m_pluginList;
|
||||
DockItemController *m_itemControllerInter;
|
||||
};
|
||||
|
||||
|
@ -10,8 +10,7 @@ class PluginProxyInterface
|
||||
{
|
||||
public:
|
||||
virtual void itemAdded(PluginsItemInterface * const itemInter, const QString &itemKey) = 0;
|
||||
|
||||
virtual Dock::DisplayMode displayMode() const = 0;
|
||||
virtual void itemUpdate(PluginsItemInterface * const itemInter, const QString &itemKey) = 0;
|
||||
};
|
||||
|
||||
#endif // PLUGINPROXYINTERFACE_H
|
||||
|
@ -22,11 +22,15 @@ public:
|
||||
virtual const QString pluginName() = 0;
|
||||
// init plugins
|
||||
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
|
||||
virtual PluginType pluginType(const QString &itemKey) = 0;
|
||||
// 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
|
||||
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 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:
|
||||
PluginProxyInterface *m_proxyInter;
|
||||
};
|
||||
|
@ -35,6 +35,13 @@ void DatetimePlugin::init(PluginProxyInterface *proxyInter)
|
||||
m_proxyInter->itemAdded(this, QString());
|
||||
}
|
||||
|
||||
int DatetimePlugin::itemSortKey(const QString &itemKey) const
|
||||
{
|
||||
Q_UNUSED(itemKey);
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
QWidget *DatetimePlugin::itemWidget(const QString &itemKey)
|
||||
{
|
||||
Q_UNUSED(itemKey);
|
||||
|
@ -20,6 +20,8 @@ public:
|
||||
PluginType pluginType(const QString &itemKey);
|
||||
void init(PluginProxyInterface *proxyInter);
|
||||
|
||||
int itemSortKey(const QString &itemKey) const;
|
||||
|
||||
QWidget *itemWidget(const QString &itemKey);
|
||||
|
||||
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");
|
||||
}
|
||||
|
||||
int ShutdownPlugin::itemSortKey(const QString &itemKey)
|
||||
{
|
||||
Q_UNUSED(itemKey);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -14,7 +14,6 @@ public:
|
||||
|
||||
const QString pluginName();
|
||||
void init(PluginProxyInterface *proxyInter);
|
||||
int itemSortKey(const QString &itemKey);
|
||||
|
||||
PluginType pluginType(const QString &itemKey);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user