add active state

Change-Id: Id2f96995b4ed8143ae5fbb639daeecfd8b0b4ce7
This commit is contained in:
石博文 2016-06-06 14:28:28 +08:00 committed by Hualet Wang
parent 3e39f5f7c8
commit 687336c4b8
2 changed files with 49 additions and 1 deletions

View File

@ -2,11 +2,23 @@
#include <QPainter>
#define APP_STATUS_KEY "app-status"
#define APP_ICON_KEY "icon"
#define APP_MENU_KEY "menu"
#define APP_XIDS_KEY "app-xids"
#define APP_ACTIVE_STATUS "active"
#define APP_NORMAL_STATUS "normal"
AppItem::AppItem(const QDBusObjectPath &entry, QWidget *parent)
: DockItem(App, parent),
m_itemEntry(new DBusDockEntry(entry.path(), this))
{
qDebug() << m_itemEntry->data();
m_data = m_itemEntry->data();
connect(m_itemEntry, static_cast<void (DBusDockEntry::*)(const QString&, const QString&)>(&DBusDockEntry::DataChanged), this, &AppItem::entryDataChanged);
}
void AppItem::paintEvent(QPaintEvent *e)
@ -22,7 +34,37 @@ void AppItem::paintEvent(QPaintEvent *e)
iconRect.moveTopLeft(itemRect.center() - iconRect.center());
QPainter painter(this);
painter.fillRect(rect(), Qt::cyan);
// draw active background
if (m_data[APP_STATUS_KEY] == APP_ACTIVE_STATUS)
{
painter.fillRect(rect(), Qt::cyan);
} else {
painter.fillRect(rect(), Qt::gray);
}
// draw icon
painter.fillRect(iconRect, Qt::yellow);
// draw text
painter.drawText(rect(), m_itemEntry->id());
}
void AppItem::mouseReleaseEvent(QMouseEvent *e)
{
Q_UNUSED(e);
// TODO: dbus signature changed
m_itemEntry->Activate();
}
void AppItem::entryDataChanged(const QString &key, const QString &value)
{
// update data
m_data[key] = value;
qDebug() << m_data;
if (key == APP_STATUS_KEY)
return update();
}

View File

@ -13,9 +13,15 @@ public:
private:
void paintEvent(QPaintEvent *e);
void mouseReleaseEvent(QMouseEvent *e);
void entryDataChanged(const QString &key, const QString &value);
private:
DBusDockEntry *m_itemEntry;
QMap<QString, QString> m_data;
// QMap<uint, QString> m_windows;
};
#endif // APPITEM_H