mirror of
https://github.com/linuxdeepin/dde-dock.git
synced 2025-06-04 17:33:05 +00:00
Load dbus data to app item
This commit is contained in:
parent
020f97334f
commit
58902d6274
@ -32,7 +32,7 @@ SOURCES += \
|
|||||||
src/DBus/dbuspanelmanager.cpp \
|
src/DBus/dbuspanelmanager.cpp \
|
||||||
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
|
src/pluginitemwrapper.cpp
|
||||||
|
|
||||||
HEADERS += \
|
HEADERS += \
|
||||||
@ -56,7 +56,7 @@ HEADERS += \
|
|||||||
src/DBus/dbuspanelmanager.h \
|
src/DBus/dbuspanelmanager.h \
|
||||||
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
|
src/pluginitemwrapper.h
|
||||||
|
|
||||||
RESOURCES += \
|
RESOURCES += \
|
||||||
|
@ -2,6 +2,47 @@
|
|||||||
|
|
||||||
AppManager::AppManager(QObject *parent) : QObject(parent)
|
AppManager::AppManager(QObject *parent) : QObject(parent)
|
||||||
{
|
{
|
||||||
|
m_entryManager = new DBusEntryManager(this);
|
||||||
|
connect(m_entryManager, SIGNAL(Added(QDBusObjectPath)),this, SLOT(slotEntryAdded(QDBusObjectPath)));
|
||||||
|
connect(m_entryManager, SIGNAL(Removed(QString)), this, SLOT(slotEntryRemoved(QString)));
|
||||||
|
}
|
||||||
|
|
||||||
|
void AppManager::updateEntries()
|
||||||
|
{
|
||||||
|
QList<QDBusObjectPath> entryList = m_entryManager->entries();
|
||||||
|
for (int i = 0; i < entryList.count(); i ++)
|
||||||
|
{
|
||||||
|
DBusEntryProxyer *dep = new DBusEntryProxyer(entryList.at(i).path());
|
||||||
|
if (dep->isValid() && dep->type() == "App")
|
||||||
|
{
|
||||||
|
AppItem *item = new AppItem();
|
||||||
|
item->setEntryProxyer(dep);
|
||||||
|
emit entryAdded(item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void AppManager::slotEntryAdded(const QDBusObjectPath &path)
|
||||||
|
{
|
||||||
|
qWarning() << "entry add:" << path.path();
|
||||||
|
DBusEntryProxyer *entryProxyer = new DBusEntryProxyer(path.path());
|
||||||
|
if (entryProxyer->isValid())
|
||||||
|
{
|
||||||
|
// qWarning() << "app-status" << entryProxyer->data().value("app-status");
|
||||||
|
// qWarning() << "app-xids" << entryProxyer->data().value("app-xids");
|
||||||
|
// qWarning() << "icon" << entryProxyer->data().value("icon");
|
||||||
|
// qWarning() << "menu" << entryProxyer->data().value("menu");
|
||||||
|
// qWarning() << "title" << entryProxyer->data().value("title");
|
||||||
|
|
||||||
|
AppItem *item = new AppItem();
|
||||||
|
item->setEntryProxyer(entryProxyer);
|
||||||
|
emit entryAdded(item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void AppManager::slotEntryRemoved(const QString &id)
|
||||||
|
{
|
||||||
|
qWarning() << "entry remove:" << id;
|
||||||
|
emit entryRemoved(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2,18 +2,33 @@
|
|||||||
#define APPMANAGER_H
|
#define APPMANAGER_H
|
||||||
|
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
|
#include <QJsonObject>
|
||||||
|
#include <QJsonArray>
|
||||||
|
#include <QDebug>
|
||||||
#include "DBus/dbusentrymanager.h"
|
#include "DBus/dbusentrymanager.h"
|
||||||
#include "DBus/dbusentryproxyer.h"
|
#include "DBus/dbusentryproxyer.h"
|
||||||
|
#include "Widgets/appitem.h"
|
||||||
|
|
||||||
class AppManager : public QObject
|
class AppManager : public QObject
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
explicit AppManager(QObject *parent = 0);
|
explicit AppManager(QObject *parent = 0);
|
||||||
|
void updateEntries();
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
|
void entryAdded(AppItem *item);
|
||||||
|
void entryRemoved(const QString &id);
|
||||||
|
|
||||||
public slots:
|
private slots:
|
||||||
|
void slotEntryAdded(const QDBusObjectPath &path);
|
||||||
|
void slotEntryRemoved(const QString &id);
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
|
||||||
|
private:
|
||||||
|
DBusEntryManager *m_entryManager = NULL;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // APPMANAGER_H
|
#endif // APPMANAGER_H
|
||||||
|
@ -104,17 +104,18 @@ int DockModeData::getAppItemSpacing()
|
|||||||
|
|
||||||
int DockModeData::getAppIconSize()
|
int DockModeData::getAppIconSize()
|
||||||
{
|
{
|
||||||
switch (m_currentMode)
|
// switch (m_currentMode)
|
||||||
{
|
// {
|
||||||
case DockConstants::FashionMode:
|
// case DockConstants::FashionMode:
|
||||||
return 48;
|
// return 48;
|
||||||
case DockConstants::EfficientMode:
|
// case DockConstants::EfficientMode:
|
||||||
return 42;
|
// return 48;
|
||||||
case DockConstants::ClassicMode:
|
// case DockConstants::ClassicMode:
|
||||||
return 24;
|
// return 24;
|
||||||
default:
|
// default:
|
||||||
return 32;
|
// return 32;
|
||||||
}
|
// }
|
||||||
|
return 48;
|
||||||
}
|
}
|
||||||
|
|
||||||
int DockModeData::getAppletsItemHeight()
|
int DockModeData::getAppletsItemHeight()
|
||||||
|
@ -16,18 +16,6 @@ Panel::Panel(QWidget *parent)
|
|||||||
leftLayout->resize(this->width() - rightLayout->width(),dockCons->getDockHeight());
|
leftLayout->resize(this->width() - rightLayout->width(),dockCons->getDockHeight());
|
||||||
leftLayout->move(0,0);
|
leftLayout->move(0,0);
|
||||||
|
|
||||||
AppItem * b1 = new AppItem("App",":/test/Resources/images/brasero.png");
|
|
||||||
AppItem * b2 = new AppItem("App",":/test/Resources/images/crossover.png");
|
|
||||||
AppItem * b3 = new AppItem("App",":/test/Resources/images/vim.png");
|
|
||||||
AppItem * b4 = new AppItem("App",":/test/Resources/images/google-chrome.png");
|
|
||||||
AppItem * b5 = new AppItem("App",":/test/Resources/images/QtProject-qtcreator.png");
|
|
||||||
|
|
||||||
leftLayout->addItem(b1);
|
|
||||||
leftLayout->addItem(b2);
|
|
||||||
leftLayout->addItem(b3);
|
|
||||||
leftLayout->addItem(b4);
|
|
||||||
leftLayout->addItem(b5);
|
|
||||||
|
|
||||||
connect(leftLayout,SIGNAL(dragStarted()),this,SLOT(slotDragStarted()));
|
connect(leftLayout,SIGNAL(dragStarted()),this,SLOT(slotDragStarted()));
|
||||||
connect(leftLayout,SIGNAL(itemDropped()),this,SLOT(slotItemDropped()));
|
connect(leftLayout,SIGNAL(itemDropped()),this,SLOT(slotItemDropped()));
|
||||||
|
|
||||||
@ -37,23 +25,13 @@ Panel::Panel(QWidget *parent)
|
|||||||
connect(dockCons, SIGNAL(dockModeChanged(DockConstants::DockMode,DockConstants::DockMode)),
|
connect(dockCons, SIGNAL(dockModeChanged(DockConstants::DockMode,DockConstants::DockMode)),
|
||||||
this, SLOT(slotDockModeChanged(DockConstants::DockMode,DockConstants::DockMode)));
|
this, SLOT(slotDockModeChanged(DockConstants::DockMode,DockConstants::DockMode)));
|
||||||
|
|
||||||
SystrayManager *manager = new SystrayManager();
|
|
||||||
foreach (AbstractDockItem *item, manager->trayIcons()) {
|
|
||||||
rightLayout->addItem(item);
|
|
||||||
qDebug() << item->geometry();
|
|
||||||
}
|
|
||||||
|
|
||||||
panelMenu = new PanelMenu();
|
panelMenu = new PanelMenu();
|
||||||
|
|
||||||
|
initAppManager();
|
||||||
|
initSystrayManager();
|
||||||
|
|
||||||
slotDockModeChanged(dockCons->getDockMode(),dockCons->getDockMode());
|
slotDockModeChanged(dockCons->getDockMode(),dockCons->getDockMode());
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
///////////////////////////
|
|
||||||
AppManager *appManager = new AppManager(this);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Panel::resize(const QSize &size)
|
void Panel::resize(const QSize &size)
|
||||||
@ -124,6 +102,7 @@ void Panel::slotDockModeChanged(DockConstants::DockMode newMode, DockConstants::
|
|||||||
|
|
||||||
this->resize(leftLayout->width() + rightLayout->width(),dockCons->getDockHeight());
|
this->resize(leftLayout->width() + rightLayout->width(),dockCons->getDockHeight());
|
||||||
this->move((parentWidget->width() - leftLayout->width() - rightLayout->width()) / 2,0);
|
this->move((parentWidget->width() - leftLayout->width() - rightLayout->width()) / 2,0);
|
||||||
|
qWarning() << "AppCount:********" << leftLayout->getItemCount();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Panel::slotLayoutContentsWidthChanged()
|
void Panel::slotLayoutContentsWidthChanged()
|
||||||
@ -140,7 +119,26 @@ void Panel::slotLayoutContentsWidthChanged()
|
|||||||
this->resize(leftLayout->width() + rightLayout->width(),dockCons->getDockHeight());
|
this->resize(leftLayout->width() + rightLayout->width(),dockCons->getDockHeight());
|
||||||
this->move((parentWidget->width() - leftLayout->width() - rightLayout->width()) / 2,0);
|
this->move((parentWidget->width() - leftLayout->width() - rightLayout->width()) / 2,0);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Panel::slotAddAppItem(AppItem *item)
|
||||||
|
{
|
||||||
|
leftLayout->addItem(item);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Panel::slotRemoveAppItem(const QString &id)
|
||||||
|
{
|
||||||
|
QList<AbstractDockItem *> tmpList = leftLayout->getItemList();
|
||||||
|
for (int i = 0; i < tmpList.count(); i ++)
|
||||||
|
{
|
||||||
|
AppItem *tmpItem = qobject_cast<AppItem *>(tmpList.at(i));
|
||||||
|
if (tmpItem->itemId() == id)
|
||||||
|
{
|
||||||
|
//TODO,remove from layout
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
qWarning() << "=====" << leftLayout->getItemCount();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Panel::mousePressEvent(QMouseEvent *event)
|
void Panel::mousePressEvent(QMouseEvent *event)
|
||||||
@ -187,6 +185,23 @@ void Panel::hideMenu()
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Panel::initAppManager()
|
||||||
|
{
|
||||||
|
m_appManager = new AppManager(this);
|
||||||
|
connect(m_appManager,SIGNAL(entryAdded(AppItem*)),this, SLOT(slotAddAppItem(AppItem*)));
|
||||||
|
connect(m_appManager, SIGNAL(entryRemoved(QString)),this, SLOT(slotRemoveAppItem(QString)));
|
||||||
|
m_appManager->updateEntries();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Panel::initSystrayManager()
|
||||||
|
{
|
||||||
|
SystrayManager *manager = new SystrayManager();
|
||||||
|
foreach (AbstractDockItem *item, manager->trayIcons()) {
|
||||||
|
rightLayout->addItem(item);
|
||||||
|
qDebug() << item->geometry()<<"=====++++++++";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Panel::~Panel()
|
Panel::~Panel()
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -35,6 +35,9 @@ private slots:
|
|||||||
void slotDockModeChanged(DockConstants::DockMode newMode,DockConstants::DockMode oldMode);
|
void slotDockModeChanged(DockConstants::DockMode newMode,DockConstants::DockMode oldMode);
|
||||||
void slotLayoutContentsWidthChanged();
|
void slotLayoutContentsWidthChanged();
|
||||||
|
|
||||||
|
void slotAddAppItem(AppItem *item);
|
||||||
|
void slotRemoveAppItem(const QString &id);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void mousePressEvent(QMouseEvent *event);
|
void mousePressEvent(QMouseEvent *event);
|
||||||
void mouseReleaseEvent(QMouseEvent *event);
|
void mouseReleaseEvent(QMouseEvent *event);
|
||||||
@ -45,9 +48,12 @@ private:
|
|||||||
void showMenu();
|
void showMenu();
|
||||||
void hideMenu();
|
void hideMenu();
|
||||||
|
|
||||||
|
void initAppManager();
|
||||||
|
void initSystrayManager();
|
||||||
private:
|
private:
|
||||||
DockLayout * leftLayout;
|
DockLayout * leftLayout;
|
||||||
DockLayout *rightLayout;
|
DockLayout *rightLayout;
|
||||||
|
AppManager *m_appManager = NULL;
|
||||||
QWidget * parentWidget = NULL;
|
QWidget * parentWidget = NULL;
|
||||||
ScreenMask * maskWidget = NULL;
|
ScreenMask * maskWidget = NULL;
|
||||||
DockModeData *dockCons = DockModeData::getInstants();
|
DockModeData *dockCons = DockModeData::getInstants();
|
||||||
|
@ -36,9 +36,10 @@ AppIcon::AppIcon(QString iconPath, QWidget *parent, Qt::WindowFlags f) :
|
|||||||
this->setPixmap(iconPixmap);
|
this->setPixmap(iconPixmap);
|
||||||
}
|
}
|
||||||
|
|
||||||
void AppIcon::setIcon(const QString &iconPath)
|
void AppIcon::setIcon(const QString &iconPath, int size)
|
||||||
{
|
{
|
||||||
QString sysIconPath = getSysIcon(iconPath);
|
QString sysIconPath = getSysIcon(iconPath,size);
|
||||||
|
// qWarning() << "--" << iconPath;
|
||||||
QPixmap iconPixmap(this->width(),this->height());
|
QPixmap iconPixmap(this->width(),this->height());
|
||||||
if (sysIconPath != "")
|
if (sysIconPath != "")
|
||||||
{
|
{
|
||||||
@ -53,37 +54,37 @@ void AppIcon::setIcon(const QString &iconPath)
|
|||||||
|
|
||||||
QString AppIcon::getSysIcon(const QString &iconName, int size)
|
QString AppIcon::getSysIcon(const QString &iconName, int size)
|
||||||
{
|
{
|
||||||
return "";
|
char *name = iconName.toUtf8().data();
|
||||||
// char *name = iconName.toUtf8().data();
|
GtkIconTheme* theme;
|
||||||
// GtkIconTheme* theme;
|
gtk_init(NULL, NULL);
|
||||||
|
|
||||||
// if (g_path_is_absolute(name))
|
if (g_path_is_absolute(name))
|
||||||
// return iconName;
|
return iconName;
|
||||||
// g_return_val_if_fail(name != NULL, NULL);
|
g_return_val_if_fail(name != NULL, NULL);
|
||||||
|
|
||||||
// int pic_name_len = strlen(name);
|
int pic_name_len = strlen(name);
|
||||||
// char* ext = strrchr(name, '.');
|
char* ext = strrchr(name, '.');
|
||||||
// if (ext != NULL) {
|
if (ext != NULL) {
|
||||||
// if (g_ascii_strcasecmp(ext+1, "png") == 0 || g_ascii_strcasecmp(ext+1, "svg") == 0 || g_ascii_strcasecmp(ext+1, "jpg") == 0) {
|
if (g_ascii_strcasecmp(ext+1, "png") == 0 || g_ascii_strcasecmp(ext+1, "svg") == 0 || g_ascii_strcasecmp(ext+1, "jpg") == 0) {
|
||||||
// pic_name_len = ext - name;
|
pic_name_len = ext - name;
|
||||||
// g_debug("Icon name should an absoulte path or an basename without extension");
|
g_debug("Icon name should an absoulte path or an basename without extension");
|
||||||
// }
|
}
|
||||||
// }
|
}
|
||||||
|
|
||||||
// char* pic_name = g_strndup(name, pic_name_len);
|
char* pic_name = g_strndup(name, pic_name_len);
|
||||||
// theme = gtk_icon_theme_get_default();
|
theme = gtk_icon_theme_get_default();
|
||||||
|
|
||||||
// GtkIconInfo* info = gtk_icon_theme_lookup_icon(theme, pic_name, size, GTK_ICON_LOOKUP_GENERIC_FALLBACK);
|
GtkIconInfo* info = gtk_icon_theme_lookup_icon(theme, pic_name, size, GTK_ICON_LOOKUP_GENERIC_FALLBACK);
|
||||||
// g_free(pic_name);
|
g_free(pic_name);
|
||||||
// if (info) {
|
if (info) {
|
||||||
// char* path = g_strdup(gtk_icon_info_get_filename(info));
|
char* path = g_strdup(gtk_icon_info_get_filename(info));
|
||||||
//#if GTK_MAJOR_VERSION >= 3
|
#if GTK_MAJOR_VERSION >= 3
|
||||||
// g_object_unref(info);
|
g_object_unref(info);
|
||||||
//#elif GTK_MAJOR_VERSION == 2
|
#elif GTK_MAJOR_VERSION == 2
|
||||||
// gtk_icon_info_free(info);
|
gtk_icon_info_free(info);
|
||||||
//#endif
|
#endif
|
||||||
// return QString(path);
|
return QString(path);
|
||||||
// } else {
|
} else {
|
||||||
// return NULL;
|
return "";
|
||||||
// }
|
}
|
||||||
}
|
}
|
||||||
|
@ -14,7 +14,7 @@ public:
|
|||||||
explicit AppIcon(QWidget *parent = 0,Qt::WindowFlags f = 0);
|
explicit AppIcon(QWidget *parent = 0,Qt::WindowFlags f = 0);
|
||||||
explicit AppIcon(QString iconPath, QWidget *parent = 0,Qt::WindowFlags f = 0);//default search system icon path
|
explicit AppIcon(QString iconPath, QWidget *parent = 0,Qt::WindowFlags f = 0);//default search system icon path
|
||||||
|
|
||||||
void setIcon(const QString &iconPath);
|
void setIcon(const QString &iconPath, int size = 42);
|
||||||
signals:
|
signals:
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
|
@ -6,58 +6,34 @@ AppItem::AppItem(QWidget *parent) :
|
|||||||
setAcceptDrops(true);
|
setAcceptDrops(true);
|
||||||
resize(dockCons->getNormalItemWidth(), dockCons->getItemHeight());
|
resize(dockCons->getNormalItemWidth(), dockCons->getItemHeight());
|
||||||
initBackground();
|
initBackground();
|
||||||
|
initClientManager();
|
||||||
connect(dockCons, &DockModeData::dockModeChanged,this, &AppItem::slotDockModeChanged);
|
connect(dockCons, &DockModeData::dockModeChanged,this, &AppItem::slotDockModeChanged);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
AppItem::AppItem(QString title, QWidget *parent):
|
void AppItem::setEntryProxyer(DBusEntryProxyer *entryProxyer)
|
||||||
AbstractDockItem(parent)
|
|
||||||
{
|
{
|
||||||
m_itemTitle = title;
|
m_entryProxyer = entryProxyer;
|
||||||
|
m_entryProxyer->setParent(this);
|
||||||
|
connect(m_entryProxyer, SIGNAL(DataChanged(QString,QString)),this, SLOT(dbusDataChanged(QString,QString)));
|
||||||
|
|
||||||
setAcceptDrops(true);
|
initData();
|
||||||
resize(dockCons->getNormalItemWidth(), dockCons->getItemHeight());
|
|
||||||
initBackground();
|
|
||||||
connect(dockCons, &DockModeData::dockModeChanged,this, &AppItem::slotDockModeChanged);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
AppItem::AppItem(QString title, QString iconPath, QWidget *parent) :
|
void AppItem::destroyItem(const QString &id)
|
||||||
AbstractDockItem(parent)
|
|
||||||
{
|
{
|
||||||
m_itemTitle = title;
|
|
||||||
m_itemIconPath = iconPath;
|
|
||||||
|
|
||||||
setAcceptDrops(true);
|
|
||||||
resize(dockCons->getNormalItemWidth(), dockCons->getItemHeight());
|
|
||||||
initBackground();
|
|
||||||
setIcon(m_itemIconPath,dockCons->getAppIconSize());
|
|
||||||
connect(dockCons, &DockModeData::dockModeChanged,this, &AppItem::slotDockModeChanged);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void AppItem::setIcon(const QString &iconPath, int size)
|
QString AppItem::itemId() const
|
||||||
{
|
{
|
||||||
m_appIcon = new AppIcon(iconPath, this);
|
return m_itemData.id;
|
||||||
m_appIcon->resize(size, size);
|
|
||||||
|
|
||||||
reanchorIcon();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void AppItem::setActived(bool value)
|
AppItemData AppItem::itemData() const
|
||||||
{
|
{
|
||||||
m_isActived = value;
|
return m_itemData;
|
||||||
if (!value)
|
|
||||||
resize(dockCons->getNormalItemWidth(), dockCons->getItemHeight());
|
|
||||||
else
|
|
||||||
resize(dockCons->getActivedItemWidth(), dockCons->getItemHeight());
|
|
||||||
}
|
|
||||||
|
|
||||||
void AppItem::setCurrentOpened(bool value)
|
|
||||||
{
|
|
||||||
m_isCurrentOpened = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool AppItem::currentOpened()
|
|
||||||
{
|
|
||||||
return m_isCurrentOpened;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void AppItem::slotDockModeChanged(DockConstants::DockMode newMode, DockConstants::DockMode oldMode)
|
void AppItem::slotDockModeChanged(DockConstants::DockMode newMode, DockConstants::DockMode oldMode)
|
||||||
@ -96,6 +72,32 @@ void AppItem::resizeBackground()
|
|||||||
appBackground->resize(width(),height());
|
appBackground->resize(width(),height());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void AppItem::dbusDataChanged(const QString &key, const QString &value)
|
||||||
|
{
|
||||||
|
// qWarning() << "key:" << key << "value:" << value;
|
||||||
|
if (key == "app-status")
|
||||||
|
qWarning() << "====+++++++++" << value;
|
||||||
|
|
||||||
|
updateTitle();
|
||||||
|
updateState();
|
||||||
|
updateXids();
|
||||||
|
updateMenuJsonString();
|
||||||
|
}
|
||||||
|
|
||||||
|
void AppItem::setCurrentOpened(uint value)
|
||||||
|
{
|
||||||
|
if (m_itemData.xidsJsonString.indexOf(QString::number(value)) != -1)
|
||||||
|
{
|
||||||
|
m_itemData.currentOpened = true;
|
||||||
|
appBackground->setIsCurrentOpened(true);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_itemData.currentOpened = false;
|
||||||
|
appBackground->setIsCurrentOpened(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void AppItem::resizeResources()
|
void AppItem::resizeResources()
|
||||||
{
|
{
|
||||||
if (m_appIcon != NULL)
|
if (m_appIcon != NULL)
|
||||||
@ -118,13 +120,81 @@ void AppItem::initBackground()
|
|||||||
connect(this, SIGNAL(widthChanged()),this, SLOT(resizeBackground()));
|
connect(this, SIGNAL(widthChanged()),this, SLOT(resizeBackground()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void AppItem::initClientManager()
|
||||||
|
{
|
||||||
|
m_clientmanager = new DBusClientManager(this);
|
||||||
|
connect(m_clientmanager, SIGNAL(ActiveWindowChanged(uint)),this, SLOT(setCurrentOpened(uint)));
|
||||||
|
}
|
||||||
|
|
||||||
|
void AppItem::setActived(bool value)
|
||||||
|
{
|
||||||
|
m_isActived = value;
|
||||||
|
if (!value)
|
||||||
|
resize(dockCons->getNormalItemWidth(), dockCons->getItemHeight());
|
||||||
|
else
|
||||||
|
resize(dockCons->getActivedItemWidth(), dockCons->getItemHeight());
|
||||||
|
|
||||||
|
appBackground->setIsActived(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
void AppItem::initData()
|
||||||
|
{
|
||||||
|
StringMap dataMap = m_entryProxyer->data();
|
||||||
|
m_itemData.title = dataMap.value("title");
|
||||||
|
m_itemData.iconPath = dataMap.value("icon");
|
||||||
|
m_itemData.menuJsonString = dataMap.value("menu");
|
||||||
|
m_itemData.xidsJsonString = dataMap.value("app-xids");
|
||||||
|
m_itemData.isActived = dataMap.value("app-status") == "active";
|
||||||
|
m_itemData.currentOpened = m_itemData.xidsJsonString.indexOf(QString::number(m_clientmanager->CurrentActiveWindow())) != -1;
|
||||||
|
m_itemData.id = m_entryProxyer->id();
|
||||||
|
|
||||||
|
setActived(m_itemData.isActived);
|
||||||
|
setCurrentOpened(m_clientmanager->CurrentActiveWindow());
|
||||||
|
updateIcon();
|
||||||
|
}
|
||||||
|
|
||||||
|
void AppItem::updateIcon()
|
||||||
|
{
|
||||||
|
if (m_appIcon == NULL)
|
||||||
|
{
|
||||||
|
m_appIcon = new AppIcon(this);
|
||||||
|
m_appIcon->resize(height(), height());
|
||||||
|
m_appIcon->setIcon(m_itemData.iconPath,dockCons->getAppIconSize());
|
||||||
|
}
|
||||||
|
|
||||||
|
reanchorIcon();
|
||||||
|
}
|
||||||
|
|
||||||
|
void AppItem::updateTitle()
|
||||||
|
{
|
||||||
|
m_itemData.title = m_entryProxyer->data().value("title");
|
||||||
|
//TODO,update view label
|
||||||
|
}
|
||||||
|
|
||||||
|
void AppItem::updateState()
|
||||||
|
{
|
||||||
|
m_itemData.isActived = m_entryProxyer->data().value("app-status") == "active";
|
||||||
|
setActived(m_itemData.isActived);
|
||||||
|
appBackground->setIsActived(m_itemData.isActived);
|
||||||
|
}
|
||||||
|
|
||||||
|
void AppItem::updateXids()
|
||||||
|
{
|
||||||
|
m_itemData.xidsJsonString = m_entryProxyer->data().value("app-xids");
|
||||||
|
}
|
||||||
|
|
||||||
|
void AppItem::updateMenuJsonString()
|
||||||
|
{
|
||||||
|
m_itemData.menuJsonString = m_entryProxyer->data().value("menu");
|
||||||
|
}
|
||||||
|
|
||||||
void AppItem::mousePressEvent(QMouseEvent * event)
|
void AppItem::mousePressEvent(QMouseEvent * event)
|
||||||
{
|
{
|
||||||
//qWarning() << "mouse press...";
|
//qWarning() << "mouse press...";
|
||||||
emit mousePress(event->globalX(), event->globalY());
|
emit mousePress(event->globalX(), event->globalY());
|
||||||
////////////FOR TEST ONLY/////////////////////
|
|
||||||
appBackground->setIsActived(!appBackground->getIsActived());
|
if (event->button() == Qt::LeftButton)
|
||||||
setActived(!actived());
|
m_entryProxyer->Activate(0,0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void AppItem::mouseReleaseEvent(QMouseEvent * event)
|
void AppItem::mouseReleaseEvent(QMouseEvent * event)
|
||||||
@ -150,11 +220,11 @@ void AppItem::mouseMoveEvent(QMouseEvent *event)
|
|||||||
{
|
{
|
||||||
QDrag* drag = new QDrag(this);
|
QDrag* drag = new QDrag(this);
|
||||||
QMimeData* data = new QMimeData();
|
QMimeData* data = new QMimeData();
|
||||||
QImage dataImg(m_itemIconPath);
|
QImage dataImg(m_itemData.iconPath);
|
||||||
data->setImageData(QVariant(dataImg));
|
data->setImageData(QVariant(dataImg));
|
||||||
drag->setMimeData(data);
|
drag->setMimeData(data);
|
||||||
|
|
||||||
QPixmap pixmap(m_itemIconPath);
|
QPixmap pixmap(m_itemData.iconPath);
|
||||||
drag->setPixmap(pixmap);
|
drag->setPixmap(pixmap);
|
||||||
|
|
||||||
drag->setHotSpot(QPoint(15,15));
|
drag->setHotSpot(QPoint(15,15));
|
||||||
|
@ -11,26 +11,39 @@
|
|||||||
#include <QMimeData>
|
#include <QMimeData>
|
||||||
#include <QPixmap>
|
#include <QPixmap>
|
||||||
#include <QImage>
|
#include <QImage>
|
||||||
|
#include <QList>
|
||||||
|
#include <QMap>
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
#include "abstractdockitem.h"
|
#include "DBus/dbusentryproxyer.h"
|
||||||
|
#include "DBus/dbusclientmanager.h"
|
||||||
#include "Controller/dockmodedata.h"
|
#include "Controller/dockmodedata.h"
|
||||||
|
#include "abstractdockitem.h"
|
||||||
#include "appicon.h"
|
#include "appicon.h"
|
||||||
#include "appbackground.h"
|
#include "appbackground.h"
|
||||||
|
|
||||||
|
struct AppItemData {
|
||||||
|
QString id;
|
||||||
|
QString iconPath;
|
||||||
|
QString title;
|
||||||
|
QString xidsJsonString;
|
||||||
|
QString menuJsonString;
|
||||||
|
bool isActived;
|
||||||
|
bool currentOpened;
|
||||||
|
bool isDocked;
|
||||||
|
};
|
||||||
|
|
||||||
class AppItem : public AbstractDockItem
|
class AppItem : public AbstractDockItem
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
Q_PROPERTY(QPoint pos READ pos WRITE move)
|
Q_PROPERTY(QPoint pos READ pos WRITE move)
|
||||||
public:
|
public:
|
||||||
AppItem(QWidget *parent = 0);
|
AppItem(QWidget *parent = 0);
|
||||||
AppItem(QString title, QWidget *parent = 0);
|
|
||||||
AppItem(QString title, QString iconPath, QWidget *parent = 0);
|
|
||||||
~AppItem();
|
~AppItem();
|
||||||
|
|
||||||
void setIcon(const QString &iconPath, int size = 42);
|
void setEntryProxyer(DBusEntryProxyer *entryProxyer);
|
||||||
void setActived(bool value);
|
void destroyItem(const QString &id);
|
||||||
void setCurrentOpened(bool value);
|
QString itemId() const;
|
||||||
bool currentOpened();
|
AppItemData itemData() const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void mousePressEvent(QMouseEvent *);
|
void mousePressEvent(QMouseEvent *);
|
||||||
@ -47,19 +60,30 @@ private slots:
|
|||||||
void slotDockModeChanged(DockConstants::DockMode newMode,DockConstants::DockMode oldMode);
|
void slotDockModeChanged(DockConstants::DockMode newMode,DockConstants::DockMode oldMode);
|
||||||
void reanchorIcon();
|
void reanchorIcon();
|
||||||
void resizeBackground();
|
void resizeBackground();
|
||||||
|
void dbusDataChanged(const QString &key, const QString &value);
|
||||||
|
void setCurrentOpened(uint);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void resizeResources();
|
void resizeResources();
|
||||||
void initBackground();
|
void initBackground();
|
||||||
|
void initClientManager();
|
||||||
|
void setActived(bool value);
|
||||||
|
|
||||||
|
void initData();
|
||||||
|
void updateIcon();
|
||||||
|
void updateTitle();
|
||||||
|
void updateState();
|
||||||
|
void updateXids();
|
||||||
|
void updateMenuJsonString();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
AppItemData m_itemData;
|
||||||
DockModeData *dockCons = DockModeData::getInstants();
|
DockModeData *dockCons = DockModeData::getInstants();
|
||||||
|
DBusEntryProxyer *m_entryProxyer = NULL;
|
||||||
|
DBusClientManager *m_clientmanager = NULL;
|
||||||
AppBackground * appBackground = NULL;
|
AppBackground * appBackground = NULL;
|
||||||
|
AppIcon * m_appIcon = NULL;
|
||||||
|
|
||||||
QLabel * m_appIcon = NULL;
|
|
||||||
bool m_isCurrentOpened = false;
|
|
||||||
QString m_itemTitle = "";
|
|
||||||
QString m_itemIconPath = "";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // APPITEM_H
|
#endif // APPITEM_H
|
||||||
|
@ -176,6 +176,11 @@ int DockLayout::getItemCount()
|
|||||||
return appList.count();
|
return appList.count();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QList<AbstractDockItem *> DockLayout::getItemList() const
|
||||||
|
{
|
||||||
|
return appList;
|
||||||
|
}
|
||||||
|
|
||||||
void DockLayout::dragEnterEvent(QDragEnterEvent *event)
|
void DockLayout::dragEnterEvent(QDragEnterEvent *event)
|
||||||
{
|
{
|
||||||
event->setDropAction(Qt::MoveAction);
|
event->setDropAction(Qt::MoveAction);
|
||||||
|
@ -29,6 +29,7 @@ public:
|
|||||||
int indexOf(int x,int y);
|
int indexOf(int x,int y);
|
||||||
int getContentsWidth();
|
int getContentsWidth();
|
||||||
int getItemCount();
|
int getItemCount();
|
||||||
|
QList<AbstractDockItem *> getItemList() const;
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void relayout();
|
void relayout();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user