diff --git a/src/external/dde-dock-plugins/disk-mount/diskmountplugin.cpp b/src/external/dde-dock-plugins/disk-mount/diskmountplugin.cpp index 3f34dc3ca6..698b4a05d6 100644 --- a/src/external/dde-dock-plugins/disk-mount/diskmountplugin.cpp +++ b/src/external/dde-dock-plugins/disk-mount/diskmountplugin.cpp @@ -10,6 +10,8 @@ #include #include +#include +#include Q_DECLARE_LOGGING_CATEGORY(logAppDock) @@ -141,6 +143,25 @@ void DiskMountPlugin::setDockEntryVisible(bool visible) proxyInter()->itemRemoved(this, kDiskMountKey); } +void DiskMountPlugin::onAppletVisibilityChanged(bool visible) +{ +#ifdef USE_DOCK_NEW_INTERFACE + qWarning() << ">>>>> callback is valid? " << messageCallback; + if (!messageCallback) + return; + + QJsonObject msg; + msg[Dock::MSG_TYPE] = Dock::MSG_ITEM_ACTIVE_STATE; + msg[Dock::MSG_DATA] = visible; + QJsonDocument doc; + doc.setObject(msg); + + qWarning() << ">>>>> plugin to dock message: " << doc.toJson(QJsonDocument::Compact); + + qWarning() << "<<<<< ret:" << messageCallback(this, doc.toJson()); +#endif +} + void DiskMountPlugin::loadTranslator() { QString &&applicationName = qApp->applicationName(); @@ -156,6 +177,9 @@ void DiskMountPlugin::initCompoments() diskControlApplet = new DeviceList(); diskControlApplet->setObjectName("disk-mount"); diskControlApplet->setVisible(false); + + connect(diskControlApplet, &DeviceList::visibilityChanged, + this, &DiskMountPlugin::onAppletVisibilityChanged); } void DiskMountPlugin::displayModeChanged(const Dock::DisplayMode mode) diff --git a/src/external/dde-dock-plugins/disk-mount/diskmountplugin.h b/src/external/dde-dock-plugins/disk-mount/diskmountplugin.h index 7d07c509b9..27bbf94145 100644 --- a/src/external/dde-dock-plugins/disk-mount/diskmountplugin.h +++ b/src/external/dde-dock-plugins/disk-mount/diskmountplugin.h @@ -51,6 +51,8 @@ class DiskMountPlugin : public QObject, PluginsItemInterface { return Dock::Type_Tray | Dock::Attribute_CanDrag | Dock::Attribute_CanInsert; } + + virtual void setMessageCallback(MessageCallbackFunc cb) override { messageCallback = cb; } #endif const QString pluginName() const override; @@ -72,6 +74,9 @@ class DiskMountPlugin : public QObject, PluginsItemInterface public slots: void setDockEntryVisible(bool visible); +private slots: + void onAppletVisibilityChanged(bool visible); + private: void loadTranslator(); void initCompoments(); @@ -86,6 +91,10 @@ public slots: TipsWidget *tipsLabel { nullptr }; DiskPluginItem *diskPluginItem { nullptr }; DeviceList *diskControlApplet { nullptr }; + +#ifdef USE_DOCK_NEW_INTERFACE + MessageCallbackFunc messageCallback = nullptr; +#endif }; #endif // DISKMOUNTPLUGIN_H diff --git a/src/external/dde-dock-plugins/disk-mount/widgets/devicelist.cpp b/src/external/dde-dock-plugins/disk-mount/widgets/devicelist.cpp index 74a701406c..310d3ab3d9 100644 --- a/src/external/dde-dock-plugins/disk-mount/widgets/devicelist.cpp +++ b/src/external/dde-dock-plugins/disk-mount/widgets/devicelist.cpp @@ -28,6 +28,15 @@ void DeviceList::showEvent(QShowEvent *event) { updateHeight(); QScrollArea::showEvent(event); + Q_EMIT visibilityChanged(true); + qWarning() << ">>>>> dfm plugin show"; +} + +void DeviceList::hideEvent(QHideEvent *event) +{ + qWarning() << ">>>>> dfm plugin hide"; + Q_EMIT visibilityChanged(false); + QScrollArea::hideEvent(event); } void DeviceList::addDevice(const DockItemData &item) diff --git a/src/external/dde-dock-plugins/disk-mount/widgets/devicelist.h b/src/external/dde-dock-plugins/disk-mount/widgets/devicelist.h index cfefe8a2d6..77f1754c8a 100644 --- a/src/external/dde-dock-plugins/disk-mount/widgets/devicelist.h +++ b/src/external/dde-dock-plugins/disk-mount/widgets/devicelist.h @@ -20,8 +20,12 @@ class DeviceList : public QScrollArea public: explicit DeviceList(QWidget *parent = nullptr); +Q_SIGNALS: + void visibilityChanged(bool visible); + protected: void showEvent(QShowEvent *event) override; + void hideEvent(QHideEvent *event) override; private Q_SLOTS: void addDevice(const DockItemData &item);