mirror of
https://github.com/linuxdeepin/dde-dock.git
synced 2025-06-03 00:15:21 +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/dbusclientmanager.cpp \
|
||||
src/DBus/dbusdockedappmanager.cpp \
|
||||
src/DBus/dbusdocksetting.cpp
|
||||
src/DBus/dbusdocksetting.cpp \
|
||||
src/pluginitemwrapper.cpp
|
||||
|
||||
HEADERS += \
|
||||
@ -56,7 +56,7 @@ HEADERS += \
|
||||
src/DBus/dbuspanelmanager.h \
|
||||
src/DBus/dbusclientmanager.h \
|
||||
src/DBus/dbusdockedappmanager.h \
|
||||
src/DBus/dbusdocksetting.h
|
||||
src/DBus/dbusdocksetting.h \
|
||||
src/pluginitemwrapper.h
|
||||
|
||||
RESOURCES += \
|
||||
|
@ -2,6 +2,47 @@
|
||||
|
||||
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
|
||||
|
||||
#include <QObject>
|
||||
#include <QJsonObject>
|
||||
#include <QJsonArray>
|
||||
#include <QDebug>
|
||||
#include "DBus/dbusentrymanager.h"
|
||||
#include "DBus/dbusentryproxyer.h"
|
||||
#include "Widgets/appitem.h"
|
||||
|
||||
class AppManager : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit AppManager(QObject *parent = 0);
|
||||
void updateEntries();
|
||||
|
||||
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
|
||||
|
@ -104,17 +104,18 @@ int DockModeData::getAppItemSpacing()
|
||||
|
||||
int DockModeData::getAppIconSize()
|
||||
{
|
||||
switch (m_currentMode)
|
||||
{
|
||||
case DockConstants::FashionMode:
|
||||
return 48;
|
||||
case DockConstants::EfficientMode:
|
||||
return 42;
|
||||
case DockConstants::ClassicMode:
|
||||
return 24;
|
||||
default:
|
||||
return 32;
|
||||
}
|
||||
// switch (m_currentMode)
|
||||
// {
|
||||
// case DockConstants::FashionMode:
|
||||
// return 48;
|
||||
// case DockConstants::EfficientMode:
|
||||
// return 48;
|
||||
// case DockConstants::ClassicMode:
|
||||
// return 24;
|
||||
// default:
|
||||
// return 32;
|
||||
// }
|
||||
return 48;
|
||||
}
|
||||
|
||||
int DockModeData::getAppletsItemHeight()
|
||||
|
@ -16,18 +16,6 @@ Panel::Panel(QWidget *parent)
|
||||
leftLayout->resize(this->width() - rightLayout->width(),dockCons->getDockHeight());
|
||||
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(itemDropped()),this,SLOT(slotItemDropped()));
|
||||
|
||||
@ -37,23 +25,13 @@ Panel::Panel(QWidget *parent)
|
||||
connect(dockCons, SIGNAL(dockModeChanged(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();
|
||||
|
||||
initAppManager();
|
||||
initSystrayManager();
|
||||
|
||||
slotDockModeChanged(dockCons->getDockMode(),dockCons->getDockMode());
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
///////////////////////////
|
||||
AppManager *appManager = new AppManager(this);
|
||||
}
|
||||
|
||||
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->move((parentWidget->width() - leftLayout->width() - rightLayout->width()) / 2,0);
|
||||
qWarning() << "AppCount:********" << leftLayout->getItemCount();
|
||||
}
|
||||
|
||||
void Panel::slotLayoutContentsWidthChanged()
|
||||
@ -140,7 +119,26 @@ void Panel::slotLayoutContentsWidthChanged()
|
||||
this->resize(leftLayout->width() + rightLayout->width(),dockCons->getDockHeight());
|
||||
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)
|
||||
@ -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()
|
||||
{
|
||||
|
||||
|
@ -35,6 +35,9 @@ private slots:
|
||||
void slotDockModeChanged(DockConstants::DockMode newMode,DockConstants::DockMode oldMode);
|
||||
void slotLayoutContentsWidthChanged();
|
||||
|
||||
void slotAddAppItem(AppItem *item);
|
||||
void slotRemoveAppItem(const QString &id);
|
||||
|
||||
protected:
|
||||
void mousePressEvent(QMouseEvent *event);
|
||||
void mouseReleaseEvent(QMouseEvent *event);
|
||||
@ -45,9 +48,12 @@ private:
|
||||
void showMenu();
|
||||
void hideMenu();
|
||||
|
||||
void initAppManager();
|
||||
void initSystrayManager();
|
||||
private:
|
||||
DockLayout * leftLayout;
|
||||
DockLayout *rightLayout;
|
||||
AppManager *m_appManager = NULL;
|
||||
QWidget * parentWidget = NULL;
|
||||
ScreenMask * maskWidget = NULL;
|
||||
DockModeData *dockCons = DockModeData::getInstants();
|
||||
|
@ -36,9 +36,10 @@ AppIcon::AppIcon(QString iconPath, QWidget *parent, Qt::WindowFlags f) :
|
||||
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());
|
||||
if (sysIconPath != "")
|
||||
{
|
||||
@ -53,37 +54,37 @@ void AppIcon::setIcon(const QString &iconPath)
|
||||
|
||||
QString AppIcon::getSysIcon(const QString &iconName, int size)
|
||||
{
|
||||
return "";
|
||||
// char *name = iconName.toUtf8().data();
|
||||
// GtkIconTheme* theme;
|
||||
char *name = iconName.toUtf8().data();
|
||||
GtkIconTheme* theme;
|
||||
gtk_init(NULL, NULL);
|
||||
|
||||
// if (g_path_is_absolute(name))
|
||||
// return iconName;
|
||||
// g_return_val_if_fail(name != NULL, NULL);
|
||||
if (g_path_is_absolute(name))
|
||||
return iconName;
|
||||
g_return_val_if_fail(name != NULL, NULL);
|
||||
|
||||
// int pic_name_len = strlen(name);
|
||||
// char* ext = strrchr(name, '.');
|
||||
// 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) {
|
||||
// pic_name_len = ext - name;
|
||||
// g_debug("Icon name should an absoulte path or an basename without extension");
|
||||
// }
|
||||
// }
|
||||
int pic_name_len = strlen(name);
|
||||
char* ext = strrchr(name, '.');
|
||||
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) {
|
||||
pic_name_len = ext - name;
|
||||
g_debug("Icon name should an absoulte path or an basename without extension");
|
||||
}
|
||||
}
|
||||
|
||||
// char* pic_name = g_strndup(name, pic_name_len);
|
||||
// theme = gtk_icon_theme_get_default();
|
||||
char* pic_name = g_strndup(name, pic_name_len);
|
||||
theme = gtk_icon_theme_get_default();
|
||||
|
||||
// GtkIconInfo* info = gtk_icon_theme_lookup_icon(theme, pic_name, size, GTK_ICON_LOOKUP_GENERIC_FALLBACK);
|
||||
// g_free(pic_name);
|
||||
// if (info) {
|
||||
// char* path = g_strdup(gtk_icon_info_get_filename(info));
|
||||
//#if GTK_MAJOR_VERSION >= 3
|
||||
// g_object_unref(info);
|
||||
//#elif GTK_MAJOR_VERSION == 2
|
||||
// gtk_icon_info_free(info);
|
||||
//#endif
|
||||
// return QString(path);
|
||||
// } else {
|
||||
// return NULL;
|
||||
// }
|
||||
GtkIconInfo* info = gtk_icon_theme_lookup_icon(theme, pic_name, size, GTK_ICON_LOOKUP_GENERIC_FALLBACK);
|
||||
g_free(pic_name);
|
||||
if (info) {
|
||||
char* path = g_strdup(gtk_icon_info_get_filename(info));
|
||||
#if GTK_MAJOR_VERSION >= 3
|
||||
g_object_unref(info);
|
||||
#elif GTK_MAJOR_VERSION == 2
|
||||
gtk_icon_info_free(info);
|
||||
#endif
|
||||
return QString(path);
|
||||
} else {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
@ -14,7 +14,7 @@ public:
|
||||
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
|
||||
|
||||
void setIcon(const QString &iconPath);
|
||||
void setIcon(const QString &iconPath, int size = 42);
|
||||
signals:
|
||||
|
||||
public slots:
|
||||
|
@ -6,58 +6,34 @@ AppItem::AppItem(QWidget *parent) :
|
||||
setAcceptDrops(true);
|
||||
resize(dockCons->getNormalItemWidth(), dockCons->getItemHeight());
|
||||
initBackground();
|
||||
initClientManager();
|
||||
connect(dockCons, &DockModeData::dockModeChanged,this, &AppItem::slotDockModeChanged);
|
||||
|
||||
|
||||
}
|
||||
|
||||
AppItem::AppItem(QString title, QWidget *parent):
|
||||
AbstractDockItem(parent)
|
||||
void AppItem::setEntryProxyer(DBusEntryProxyer *entryProxyer)
|
||||
{
|
||||
m_itemTitle = title;
|
||||
m_entryProxyer = entryProxyer;
|
||||
m_entryProxyer->setParent(this);
|
||||
connect(m_entryProxyer, SIGNAL(DataChanged(QString,QString)),this, SLOT(dbusDataChanged(QString,QString)));
|
||||
|
||||
setAcceptDrops(true);
|
||||
resize(dockCons->getNormalItemWidth(), dockCons->getItemHeight());
|
||||
initBackground();
|
||||
connect(dockCons, &DockModeData::dockModeChanged,this, &AppItem::slotDockModeChanged);
|
||||
initData();
|
||||
}
|
||||
|
||||
AppItem::AppItem(QString title, QString iconPath, QWidget *parent) :
|
||||
AbstractDockItem(parent)
|
||||
void AppItem::destroyItem(const QString &id)
|
||||
{
|
||||
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);
|
||||
m_appIcon->resize(size, size);
|
||||
|
||||
reanchorIcon();
|
||||
return m_itemData.id;
|
||||
}
|
||||
|
||||
void AppItem::setActived(bool value)
|
||||
AppItemData AppItem::itemData() const
|
||||
{
|
||||
m_isActived = value;
|
||||
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;
|
||||
return m_itemData;
|
||||
}
|
||||
|
||||
void AppItem::slotDockModeChanged(DockConstants::DockMode newMode, DockConstants::DockMode oldMode)
|
||||
@ -96,6 +72,32 @@ void AppItem::resizeBackground()
|
||||
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()
|
||||
{
|
||||
if (m_appIcon != NULL)
|
||||
@ -118,13 +120,81 @@ void AppItem::initBackground()
|
||||
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)
|
||||
{
|
||||
//qWarning() << "mouse press...";
|
||||
emit mousePress(event->globalX(), event->globalY());
|
||||
////////////FOR TEST ONLY/////////////////////
|
||||
appBackground->setIsActived(!appBackground->getIsActived());
|
||||
setActived(!actived());
|
||||
|
||||
if (event->button() == Qt::LeftButton)
|
||||
m_entryProxyer->Activate(0,0);
|
||||
}
|
||||
|
||||
void AppItem::mouseReleaseEvent(QMouseEvent * event)
|
||||
@ -150,11 +220,11 @@ void AppItem::mouseMoveEvent(QMouseEvent *event)
|
||||
{
|
||||
QDrag* drag = new QDrag(this);
|
||||
QMimeData* data = new QMimeData();
|
||||
QImage dataImg(m_itemIconPath);
|
||||
QImage dataImg(m_itemData.iconPath);
|
||||
data->setImageData(QVariant(dataImg));
|
||||
drag->setMimeData(data);
|
||||
|
||||
QPixmap pixmap(m_itemIconPath);
|
||||
QPixmap pixmap(m_itemData.iconPath);
|
||||
drag->setPixmap(pixmap);
|
||||
|
||||
drag->setHotSpot(QPoint(15,15));
|
||||
|
@ -11,26 +11,39 @@
|
||||
#include <QMimeData>
|
||||
#include <QPixmap>
|
||||
#include <QImage>
|
||||
#include <QList>
|
||||
#include <QMap>
|
||||
#include <QDebug>
|
||||
#include "abstractdockitem.h"
|
||||
#include "DBus/dbusentryproxyer.h"
|
||||
#include "DBus/dbusclientmanager.h"
|
||||
#include "Controller/dockmodedata.h"
|
||||
#include "abstractdockitem.h"
|
||||
#include "appicon.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
|
||||
{
|
||||
Q_OBJECT
|
||||
Q_PROPERTY(QPoint pos READ pos WRITE move)
|
||||
public:
|
||||
AppItem(QWidget *parent = 0);
|
||||
AppItem(QString title, QWidget *parent = 0);
|
||||
AppItem(QString title, QString iconPath, QWidget *parent = 0);
|
||||
~AppItem();
|
||||
|
||||
void setIcon(const QString &iconPath, int size = 42);
|
||||
void setActived(bool value);
|
||||
void setCurrentOpened(bool value);
|
||||
bool currentOpened();
|
||||
void setEntryProxyer(DBusEntryProxyer *entryProxyer);
|
||||
void destroyItem(const QString &id);
|
||||
QString itemId() const;
|
||||
AppItemData itemData() const;
|
||||
|
||||
protected:
|
||||
void mousePressEvent(QMouseEvent *);
|
||||
@ -47,19 +60,30 @@ private slots:
|
||||
void slotDockModeChanged(DockConstants::DockMode newMode,DockConstants::DockMode oldMode);
|
||||
void reanchorIcon();
|
||||
void resizeBackground();
|
||||
void dbusDataChanged(const QString &key, const QString &value);
|
||||
void setCurrentOpened(uint);
|
||||
|
||||
private:
|
||||
void resizeResources();
|
||||
void initBackground();
|
||||
void initClientManager();
|
||||
void setActived(bool value);
|
||||
|
||||
void initData();
|
||||
void updateIcon();
|
||||
void updateTitle();
|
||||
void updateState();
|
||||
void updateXids();
|
||||
void updateMenuJsonString();
|
||||
|
||||
private:
|
||||
AppItemData m_itemData;
|
||||
DockModeData *dockCons = DockModeData::getInstants();
|
||||
DBusEntryProxyer *m_entryProxyer = NULL;
|
||||
DBusClientManager *m_clientmanager = 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
|
||||
|
@ -176,6 +176,11 @@ int DockLayout::getItemCount()
|
||||
return appList.count();
|
||||
}
|
||||
|
||||
QList<AbstractDockItem *> DockLayout::getItemList() const
|
||||
{
|
||||
return appList;
|
||||
}
|
||||
|
||||
void DockLayout::dragEnterEvent(QDragEnterEvent *event)
|
||||
{
|
||||
event->setDropAction(Qt::MoveAction);
|
||||
|
@ -29,6 +29,7 @@ public:
|
||||
int indexOf(int x,int y);
|
||||
int getContentsWidth();
|
||||
int getItemCount();
|
||||
QList<AbstractDockItem *> getItemList() const;
|
||||
|
||||
public slots:
|
||||
void relayout();
|
||||
|
Loading…
x
Reference in New Issue
Block a user