mirror of
https://github.com/linuxdeepin/dde-dock.git
synced 2025-06-04 17:33:05 +00:00
Merge branch 'dde-dock-menu' into dde-dock
Conflicts: dde-dock/dde-dock.pro
This commit is contained in:
commit
21c28ce2b1
@ -35,7 +35,10 @@ SOURCES += \
|
|||||||
src/pluginitemwrapper.cpp \
|
src/pluginitemwrapper.cpp \
|
||||||
src/Widgets/arrowrectangle.cpp \
|
src/Widgets/arrowrectangle.cpp \
|
||||||
src/dockpluginproxy.cpp \
|
src/dockpluginproxy.cpp \
|
||||||
src/dockpluginmanager.cpp
|
src/dockpluginmanager.cpp\
|
||||||
|
src/DBus/dbusmenumanager.cpp \
|
||||||
|
src/DBus/dbusmenu.cpp
|
||||||
|
|
||||||
HEADERS += \
|
HEADERS += \
|
||||||
src/abstractdockitem.h \
|
src/abstractdockitem.h \
|
||||||
src/dockplugininterface.h \
|
src/dockplugininterface.h \
|
||||||
@ -61,7 +64,9 @@ HEADERS += \
|
|||||||
src/Widgets/arrowrectangle.h\
|
src/Widgets/arrowrectangle.h\
|
||||||
src/dockpluginproxyinterface.h \
|
src/dockpluginproxyinterface.h \
|
||||||
src/dockpluginproxy.h \
|
src/dockpluginproxy.h \
|
||||||
src/dockpluginmanager.h
|
src/dockpluginmanager.h\
|
||||||
|
src/DBus/dbusmenumanager.h \
|
||||||
|
src/DBus/dbusmenu.h
|
||||||
|
|
||||||
RESOURCES += \
|
RESOURCES += \
|
||||||
images.qrc \
|
images.qrc \
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
#define APPMANAGER_H
|
#define APPMANAGER_H
|
||||||
|
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
#include <QJsonObject>
|
|
||||||
#include <QJsonArray>
|
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
#include "DBus/dbusentrymanager.h"
|
#include "DBus/dbusentrymanager.h"
|
||||||
#include "DBus/dbusentryproxyer.h"
|
#include "DBus/dbusentryproxyer.h"
|
||||||
|
26
dde-dock/src/DBus/dbusmenu.cpp
Normal file
26
dde-dock/src/DBus/dbusmenu.cpp
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
/*
|
||||||
|
* This file was generated by qdbusxml2cpp version 0.8
|
||||||
|
* Command line was: qdbusxml2cpp -c DBusMenu -p dbusmenu com.deepin.menu.Menu.xml
|
||||||
|
*
|
||||||
|
* qdbusxml2cpp is Copyright (C) 2015 Digia Plc and/or its subsidiary(-ies).
|
||||||
|
*
|
||||||
|
* This is an auto-generated file.
|
||||||
|
* This file may have been hand-edited. Look for HAND-EDIT comments
|
||||||
|
* before re-generating it.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "dbusmenu.h"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Implementation of interface class DBusMenu
|
||||||
|
*/
|
||||||
|
|
||||||
|
DBusMenu::DBusMenu(const QString &path, QObject *parent)
|
||||||
|
: QDBusAbstractInterface(staticServerPath(), path, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
DBusMenu::~DBusMenu()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
81
dde-dock/src/DBus/dbusmenu.h
Normal file
81
dde-dock/src/DBus/dbusmenu.h
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
/*
|
||||||
|
* This file was generated by qdbusxml2cpp version 0.8
|
||||||
|
* Command line was: qdbusxml2cpp -c DBusMenu -p dbusmenu com.deepin.menu.Menu.xml
|
||||||
|
*
|
||||||
|
* qdbusxml2cpp is Copyright (C) 2015 Digia Plc and/or its subsidiary(-ies).
|
||||||
|
*
|
||||||
|
* This is an auto-generated file.
|
||||||
|
* Do not edit! All changes made to it will be lost.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef DBUSMENU_H_1436158836
|
||||||
|
#define DBUSMENU_H_1436158836
|
||||||
|
|
||||||
|
#include <QtCore/QObject>
|
||||||
|
#include <QtCore/QByteArray>
|
||||||
|
#include <QtCore/QList>
|
||||||
|
#include <QtCore/QMap>
|
||||||
|
#include <QtCore/QString>
|
||||||
|
#include <QtCore/QStringList>
|
||||||
|
#include <QtCore/QVariant>
|
||||||
|
#include <QtDBus/QtDBus>
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Proxy class for interface com.deepin.menu.Menu
|
||||||
|
*/
|
||||||
|
class DBusMenu: public QDBusAbstractInterface
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
static inline const char *staticServerPath()
|
||||||
|
{ return "com.deepin.menu"; }
|
||||||
|
static inline const char *staticInterfaceName()
|
||||||
|
{ return "com.deepin.menu.Menu"; }
|
||||||
|
|
||||||
|
public:
|
||||||
|
DBusMenu(const QString &path,QObject *parent = 0);
|
||||||
|
|
||||||
|
~DBusMenu();
|
||||||
|
|
||||||
|
public Q_SLOTS: // METHODS
|
||||||
|
inline QDBusPendingReply<> SetItemActivity(const QString &itemId, bool isActive)
|
||||||
|
{
|
||||||
|
QList<QVariant> argumentList;
|
||||||
|
argumentList << QVariant::fromValue(itemId) << QVariant::fromValue(isActive);
|
||||||
|
return asyncCallWithArgumentList(QStringLiteral("SetItemActivity"), argumentList);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline QDBusPendingReply<> SetItemChecked(const QString &itemId, bool checked)
|
||||||
|
{
|
||||||
|
QList<QVariant> argumentList;
|
||||||
|
argumentList << QVariant::fromValue(itemId) << QVariant::fromValue(checked);
|
||||||
|
return asyncCallWithArgumentList(QStringLiteral("SetItemChecked"), argumentList);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline QDBusPendingReply<> SetItemText(const QString &itemId, const QString &text)
|
||||||
|
{
|
||||||
|
QList<QVariant> argumentList;
|
||||||
|
argumentList << QVariant::fromValue(itemId) << QVariant::fromValue(text);
|
||||||
|
return asyncCallWithArgumentList(QStringLiteral("SetItemText"), argumentList);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline QDBusPendingReply<> ShowMenu(const QString &menuJsonContent)
|
||||||
|
{
|
||||||
|
QList<QVariant> argumentList;
|
||||||
|
argumentList << QVariant::fromValue(menuJsonContent);
|
||||||
|
return asyncCallWithArgumentList(QStringLiteral("ShowMenu"), argumentList);
|
||||||
|
}
|
||||||
|
|
||||||
|
Q_SIGNALS: // SIGNALS
|
||||||
|
void ItemInvoked(const QString &itemId, bool checked);
|
||||||
|
void MenuUnregistered();
|
||||||
|
};
|
||||||
|
|
||||||
|
namespace com {
|
||||||
|
namespace deepin {
|
||||||
|
namespace menu {
|
||||||
|
typedef ::DBusMenu Menu;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
26
dde-dock/src/DBus/dbusmenumanager.cpp
Normal file
26
dde-dock/src/DBus/dbusmenumanager.cpp
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
/*
|
||||||
|
* This file was generated by qdbusxml2cpp version 0.8
|
||||||
|
* Command line was: qdbusxml2cpp -c DBusMenuManager -p dbusmenumanager com.deepin.menu.Manager.xml
|
||||||
|
*
|
||||||
|
* qdbusxml2cpp is Copyright (C) 2015 Digia Plc and/or its subsidiary(-ies).
|
||||||
|
*
|
||||||
|
* This is an auto-generated file.
|
||||||
|
* This file may have been hand-edited. Look for HAND-EDIT comments
|
||||||
|
* before re-generating it.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "dbusmenumanager.h"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Implementation of interface class DBusMenuManager
|
||||||
|
*/
|
||||||
|
|
||||||
|
DBusMenuManager::DBusMenuManager(QObject *parent)
|
||||||
|
: QDBusAbstractInterface(staticServerPath(), staticInterfacePath(), staticInterfaceName(), QDBusConnection::sessionBus(), parent)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
DBusMenuManager::~DBusMenuManager()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
66
dde-dock/src/DBus/dbusmenumanager.h
Normal file
66
dde-dock/src/DBus/dbusmenumanager.h
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
/*
|
||||||
|
* This file was generated by qdbusxml2cpp version 0.8
|
||||||
|
* Command line was: qdbusxml2cpp -c DBusMenuManager -p dbusmenumanager com.deepin.menu.Manager.xml
|
||||||
|
*
|
||||||
|
* qdbusxml2cpp is Copyright (C) 2015 Digia Plc and/or its subsidiary(-ies).
|
||||||
|
*
|
||||||
|
* This is an auto-generated file.
|
||||||
|
* Do not edit! All changes made to it will be lost.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef DBUSMENUMANAGER_H_1436158928
|
||||||
|
#define DBUSMENUMANAGER_H_1436158928
|
||||||
|
|
||||||
|
#include <QtCore/QObject>
|
||||||
|
#include <QtCore/QByteArray>
|
||||||
|
#include <QtCore/QList>
|
||||||
|
#include <QtCore/QMap>
|
||||||
|
#include <QtCore/QString>
|
||||||
|
#include <QtCore/QStringList>
|
||||||
|
#include <QtCore/QVariant>
|
||||||
|
#include <QtDBus/QtDBus>
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Proxy class for interface com.deepin.menu.Manager
|
||||||
|
*/
|
||||||
|
class DBusMenuManager: public QDBusAbstractInterface
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
static inline const char *staticServerPath()
|
||||||
|
{ return "com.deepin.menu"; }
|
||||||
|
static inline const char *staticInterfacePath()
|
||||||
|
{ return "/com/deepin/menu"; }
|
||||||
|
static inline const char *staticInterfaceName()
|
||||||
|
{ return "com.deepin.menu.Manager"; }
|
||||||
|
|
||||||
|
public:
|
||||||
|
DBusMenuManager(QObject *parent = 0);
|
||||||
|
|
||||||
|
~DBusMenuManager();
|
||||||
|
|
||||||
|
public Q_SLOTS: // METHODS
|
||||||
|
inline QDBusPendingReply<QDBusObjectPath> RegisterMenu()
|
||||||
|
{
|
||||||
|
QList<QVariant> argumentList;
|
||||||
|
return asyncCallWithArgumentList(QStringLiteral("RegisterMenu"), argumentList);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline QDBusPendingReply<> UnregisterMenu(const QString &menuObjectPath)
|
||||||
|
{
|
||||||
|
QList<QVariant> argumentList;
|
||||||
|
argumentList << QVariant::fromValue(menuObjectPath);
|
||||||
|
return asyncCallWithArgumentList(QStringLiteral("UnregisterMenu"), argumentList);
|
||||||
|
}
|
||||||
|
|
||||||
|
Q_SIGNALS: // SIGNALS
|
||||||
|
};
|
||||||
|
|
||||||
|
namespace com {
|
||||||
|
namespace deepin {
|
||||||
|
namespace menu {
|
||||||
|
typedef ::DBusMenuManager Manager;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
@ -9,7 +9,7 @@ AppItem::AppItem(QWidget *parent) :
|
|||||||
initClientManager();
|
initClientManager();
|
||||||
connect(dockCons, &DockModeData::dockModeChanged,this, &AppItem::slotDockModeChanged);
|
connect(dockCons, &DockModeData::dockModeChanged,this, &AppItem::slotDockModeChanged);
|
||||||
|
|
||||||
|
initMenu();
|
||||||
}
|
}
|
||||||
|
|
||||||
void AppItem::setEntryProxyer(DBusEntryProxyer *entryProxyer)
|
void AppItem::setEntryProxyer(DBusEntryProxyer *entryProxyer)
|
||||||
@ -74,10 +74,6 @@ void AppItem::resizeBackground()
|
|||||||
|
|
||||||
void AppItem::dbusDataChanged(const QString &key, const QString &value)
|
void AppItem::dbusDataChanged(const QString &key, const QString &value)
|
||||||
{
|
{
|
||||||
// qWarning() << "key:" << key << "value:" << value;
|
|
||||||
if (key == "app-status")
|
|
||||||
qWarning() << "====+++++++++" << value;
|
|
||||||
|
|
||||||
updateTitle();
|
updateTitle();
|
||||||
updateState();
|
updateState();
|
||||||
updateXids();
|
updateXids();
|
||||||
@ -98,6 +94,12 @@ void AppItem::setCurrentOpened(uint value)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void AppItem::menuItemInvoked(QString id, bool)
|
||||||
|
{
|
||||||
|
m_entryProxyer->HandleMenuItem(id);
|
||||||
|
m_menuManager->UnregisterMenu(m_menuInterfacePath);
|
||||||
|
}
|
||||||
|
|
||||||
void AppItem::resizeResources()
|
void AppItem::resizeResources()
|
||||||
{
|
{
|
||||||
if (m_appIcon != NULL)
|
if (m_appIcon != NULL)
|
||||||
@ -188,6 +190,33 @@ void AppItem::updateMenuJsonString()
|
|||||||
m_itemData.menuJsonString = m_entryProxyer->data().value("menu");
|
m_itemData.menuJsonString = m_entryProxyer->data().value("menu");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void AppItem::initMenu()
|
||||||
|
{
|
||||||
|
m_menuManager = new DBusMenuManager(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
void AppItem::showMenu(int x,int y)
|
||||||
|
{
|
||||||
|
if (m_menuManager->isValid()){
|
||||||
|
QDBusPendingReply<QDBusObjectPath> pr = m_menuManager->RegisterMenu();
|
||||||
|
if (pr.count() == 1){
|
||||||
|
QDBusObjectPath op = pr.argumentAt(0).value<QDBusObjectPath>();
|
||||||
|
m_menuInterfacePath = op.path();
|
||||||
|
DBusMenu *m_menu = new DBusMenu(m_menuInterfacePath,this);
|
||||||
|
connect(m_menu,SIGNAL(MenuUnregistered()),m_menu,SLOT(deleteLater()));
|
||||||
|
connect(m_menu,SIGNAL(ItemInvoked(QString,bool)),this,SLOT(menuItemInvoked(QString,bool)));
|
||||||
|
|
||||||
|
QJsonObject targetObj;
|
||||||
|
targetObj.insert("x",QJsonValue(x));
|
||||||
|
targetObj.insert("y",QJsonValue(y));
|
||||||
|
targetObj.insert("isDockMenu",QJsonValue(true));
|
||||||
|
targetObj.insert("menuJsonContent",QJsonValue(m_itemData.menuJsonString));
|
||||||
|
|
||||||
|
m_menu->ShowMenu(QString(QJsonDocument(targetObj).toJson()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void AppItem::mousePressEvent(QMouseEvent * event)
|
void AppItem::mousePressEvent(QMouseEvent * event)
|
||||||
{
|
{
|
||||||
//qWarning() << "mouse press...";
|
//qWarning() << "mouse press...";
|
||||||
@ -195,6 +224,8 @@ void AppItem::mousePressEvent(QMouseEvent * event)
|
|||||||
|
|
||||||
if (event->button() == Qt::LeftButton)
|
if (event->button() == Qt::LeftButton)
|
||||||
m_entryProxyer->Activate(0,0);
|
m_entryProxyer->Activate(0,0);
|
||||||
|
else if (event->button() == Qt::RightButton)
|
||||||
|
showMenu(event->globalX(),event->globalY());
|
||||||
}
|
}
|
||||||
|
|
||||||
void AppItem::mouseReleaseEvent(QMouseEvent * event)
|
void AppItem::mouseReleaseEvent(QMouseEvent * event)
|
||||||
@ -206,8 +237,6 @@ void AppItem::mouseReleaseEvent(QMouseEvent * event)
|
|||||||
void AppItem::mouseDoubleClickEvent(QMouseEvent * event)
|
void AppItem::mouseDoubleClickEvent(QMouseEvent * event)
|
||||||
{
|
{
|
||||||
emit mouseDoubleClick();
|
emit mouseDoubleClick();
|
||||||
////////////FOR TEST ONLY/////////////////////
|
|
||||||
appBackground->setIsCurrentOpened(!appBackground->getIsCurrentOpened());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void AppItem::mouseMoveEvent(QMouseEvent *event)
|
void AppItem::mouseMoveEvent(QMouseEvent *event)
|
||||||
|
@ -13,9 +13,12 @@
|
|||||||
#include <QImage>
|
#include <QImage>
|
||||||
#include <QList>
|
#include <QList>
|
||||||
#include <QMap>
|
#include <QMap>
|
||||||
|
#include <QJsonObject>
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
#include "DBus/dbusentryproxyer.h"
|
#include "DBus/dbusentryproxyer.h"
|
||||||
#include "DBus/dbusclientmanager.h"
|
#include "DBus/dbusclientmanager.h"
|
||||||
|
#include "DBus/dbusmenu.h"
|
||||||
|
#include "DBus/dbusmenumanager.h"
|
||||||
#include "Controller/dockmodedata.h"
|
#include "Controller/dockmodedata.h"
|
||||||
#include "abstractdockitem.h"
|
#include "abstractdockitem.h"
|
||||||
#include "appicon.h"
|
#include "appicon.h"
|
||||||
@ -62,6 +65,7 @@ private slots:
|
|||||||
void resizeBackground();
|
void resizeBackground();
|
||||||
void dbusDataChanged(const QString &key, const QString &value);
|
void dbusDataChanged(const QString &key, const QString &value);
|
||||||
void setCurrentOpened(uint);
|
void setCurrentOpened(uint);
|
||||||
|
void menuItemInvoked(QString id,bool);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void resizeResources();
|
void resizeResources();
|
||||||
@ -75,6 +79,9 @@ private:
|
|||||||
void updateState();
|
void updateState();
|
||||||
void updateXids();
|
void updateXids();
|
||||||
void updateMenuJsonString();
|
void updateMenuJsonString();
|
||||||
|
void initMenu();
|
||||||
|
|
||||||
|
void showMenu(int x, int y);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
AppItemData m_itemData;
|
AppItemData m_itemData;
|
||||||
@ -84,6 +91,8 @@ private:
|
|||||||
AppBackground * appBackground = NULL;
|
AppBackground * appBackground = NULL;
|
||||||
AppIcon * m_appIcon = NULL;
|
AppIcon * m_appIcon = NULL;
|
||||||
|
|
||||||
|
QString m_menuInterfacePath = "";
|
||||||
|
DBusMenuManager *m_menuManager = NULL;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // APPITEM_H
|
#endif // APPITEM_H
|
||||||
|
@ -9,9 +9,9 @@ MainWidget::MainWidget(QWidget *parent)
|
|||||||
mainPanel->resize(this->width(),this->height());
|
mainPanel->resize(this->width(),this->height());
|
||||||
mainPanel->move(0,0);
|
mainPanel->move(0,0);
|
||||||
|
|
||||||
this->setWindowFlags(Qt::ToolTip);
|
this->setWindowFlags(Qt::WindowStaysOnTopHint | Qt::FramelessWindowHint);
|
||||||
this->setAttribute(Qt::WA_TranslucentBackground);
|
this->setAttribute(Qt::WA_TranslucentBackground);
|
||||||
this->move(0,rec.height() - 100);
|
this->move(0,rec.height());
|
||||||
|
|
||||||
connect(DockModeData::getInstants(), SIGNAL(dockModeChanged(DockConstants::DockMode,DockConstants::DockMode)),
|
connect(DockModeData::getInstants(), SIGNAL(dockModeChanged(DockConstants::DockMode,DockConstants::DockMode)),
|
||||||
this, SLOT(slotDockModeChanged(DockConstants::DockMode,DockConstants::DockMode)));
|
this, SLOT(slotDockModeChanged(DockConstants::DockMode,DockConstants::DockMode)));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user