mirror of
https://github.com/linuxdeepin/dde-dock.git
synced 2025-06-04 17:33:05 +00:00
support attention
Change-Id: I5caf72dc3575294205e60bdb77897bf18500a7f5
This commit is contained in:
parent
c0986e1c37
commit
3cc3ccb5a3
Notes:
Deepin Code Review
2018-02-22 14:33:34 +08:00
Verified+1: Anonymous Coward #1000004 Code-Review+2: 石博文 <sbw@sbw.so> Submitted-by: 石博文 <sbw@sbw.so> Submitted-at: Thu, 22 Feb 2018 14:33:34 +0800 Reviewed-on: https://cr.deepin.io/31805 Project: dde/dde-dock Branch: refs/heads/master
@ -158,6 +158,7 @@ AppItem::AppItem(const QDBusObjectPath &entry, QWidget *parent)
|
|||||||
m_updateIconGeometryTimer->setSingleShot(true);
|
m_updateIconGeometryTimer->setSingleShot(true);
|
||||||
|
|
||||||
m_appPreviewTips->setVisible(false);
|
m_appPreviewTips->setVisible(false);
|
||||||
|
m_itemEntryInter->setSync(false);
|
||||||
|
|
||||||
connect(m_itemEntryInter, &DockEntryInter::IsActiveChanged, this, &AppItem::activeChanged);
|
connect(m_itemEntryInter, &DockEntryInter::IsActiveChanged, this, &AppItem::activeChanged);
|
||||||
connect(m_itemEntryInter, &DockEntryInter::IsActiveChanged, this, static_cast<void (AppItem::*)()>(&AppItem::update));
|
connect(m_itemEntryInter, &DockEntryInter::IsActiveChanged, this, static_cast<void (AppItem::*)()>(&AppItem::update));
|
||||||
@ -171,7 +172,7 @@ AppItem::AppItem(const QDBusObjectPath &entry, QWidget *parent)
|
|||||||
connect(m_appPreviewTips, &PreviewContainer::requestCancelAndHidePreview, this, &AppItem::cancelAndHidePreview);
|
connect(m_appPreviewTips, &PreviewContainer::requestCancelAndHidePreview, this, &AppItem::cancelAndHidePreview);
|
||||||
connect(m_appPreviewTips, &PreviewContainer::requestCheckWindows, m_itemEntryInter, &DockEntryInter::Check);
|
connect(m_appPreviewTips, &PreviewContainer::requestCheckWindows, m_itemEntryInter, &DockEntryInter::Check);
|
||||||
|
|
||||||
updateWindowInfos();
|
updateWindowInfos(m_itemEntryInter->windowInfos());
|
||||||
refershIcon();
|
refershIcon();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -283,9 +284,12 @@ void AppItem::paintEvent(QPaintEvent *e)
|
|||||||
painter.fillRect(activeRect, QColor(44, 167, 248, 255));
|
painter.fillRect(activeRect, QColor(44, 167, 248, 255));
|
||||||
}
|
}
|
||||||
else if (!m_windowInfos.isEmpty())
|
else if (!m_windowInfos.isEmpty())
|
||||||
painter.fillRect(backgroundRect, QColor(255, 255, 255, 255 * 0.2));
|
{
|
||||||
// else
|
if (hasAttention())
|
||||||
// painter.fillRect(backgroundRect, Qt::gray);
|
painter.fillRect(backgroundRect, QColor(241, 138, 46, 255 * .8));
|
||||||
|
else
|
||||||
|
painter.fillRect(backgroundRect, QColor(255, 255, 255, 255 * 0.2));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -524,7 +528,7 @@ QWidget *AppItem::popupTips()
|
|||||||
{
|
{
|
||||||
const quint32 currentWindow = m_itemEntryInter->currentWindow();
|
const quint32 currentWindow = m_itemEntryInter->currentWindow();
|
||||||
Q_ASSERT(m_windowInfos.contains(currentWindow));
|
Q_ASSERT(m_windowInfos.contains(currentWindow));
|
||||||
m_appNameTips->setText(m_windowInfos[currentWindow].m_windowTitle);
|
m_appNameTips->setText(m_windowInfos[currentWindow].title);
|
||||||
} else {
|
} else {
|
||||||
m_appNameTips->setText(m_itemEntryInter->name());
|
m_appNameTips->setText(m_itemEntryInter->name());
|
||||||
}
|
}
|
||||||
@ -557,9 +561,17 @@ void AppItem::startDrag()
|
|||||||
update();
|
update();
|
||||||
}
|
}
|
||||||
|
|
||||||
void AppItem::updateWindowInfos()
|
bool AppItem::hasAttention() const
|
||||||
{
|
{
|
||||||
m_windowInfos = m_itemEntryInter->windowInfos();
|
for (const auto &info : m_windowInfos)
|
||||||
|
if (info.attention)
|
||||||
|
return true;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void AppItem::updateWindowInfos(const WindowInfoMap &info)
|
||||||
|
{
|
||||||
|
m_windowInfos = info;
|
||||||
m_appPreviewTips->setWindowInfos(m_windowInfos);
|
m_appPreviewTips->setWindowInfos(m_windowInfos);
|
||||||
m_updateIconGeometryTimer->start();
|
m_updateIconGeometryTimer->start();
|
||||||
|
|
||||||
|
@ -74,9 +74,10 @@ private:
|
|||||||
QWidget *popupTips();
|
QWidget *popupTips();
|
||||||
|
|
||||||
void startDrag();
|
void startDrag();
|
||||||
|
bool hasAttention() const;
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void updateWindowInfos();
|
void updateWindowInfos(const WindowInfoMap &info);
|
||||||
void refershIcon();
|
void refershIcon();
|
||||||
void activeChanged();
|
void activeChanged();
|
||||||
void showPreview();
|
void showPreview();
|
||||||
|
@ -87,12 +87,13 @@ void AppSnapshot::compositeChanged() const
|
|||||||
const bool composite = m_wmHelper->hasComposite();
|
const bool composite = m_wmHelper->hasComposite();
|
||||||
|
|
||||||
m_title->setVisible(!composite);
|
m_title->setVisible(!composite);
|
||||||
// m_closeBtn->setVisible(!composite);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void AppSnapshot::setWindowTitle(const QString &title)
|
void AppSnapshot::setWindowInfo(const WindowInfo &info)
|
||||||
{
|
{
|
||||||
m_title->setText(title);
|
m_windowInfo = info;
|
||||||
|
|
||||||
|
m_title->setText(m_windowInfo.title);
|
||||||
}
|
}
|
||||||
|
|
||||||
void AppSnapshot::dragEnterEvent(QDragEnterEvent *e)
|
void AppSnapshot::dragEnterEvent(QDragEnterEvent *e)
|
||||||
@ -181,6 +182,7 @@ void AppSnapshot::paintEvent(QPaintEvent *e)
|
|||||||
QWidget::paintEvent(e);
|
QWidget::paintEvent(e);
|
||||||
|
|
||||||
QPainter painter(this);
|
QPainter painter(this);
|
||||||
|
painter.setRenderHint(QPainter::Antialiasing);
|
||||||
|
|
||||||
if (!m_wmHelper->hasComposite())
|
if (!m_wmHelper->hasComposite())
|
||||||
{
|
{
|
||||||
@ -195,9 +197,15 @@ void AppSnapshot::paintEvent(QPaintEvent *e)
|
|||||||
const QRect r = rect().marginsRemoved(QMargins(8, 8, 8, 8));
|
const QRect r = rect().marginsRemoved(QMargins(8, 8, 8, 8));
|
||||||
const auto ratio = devicePixelRatioF();
|
const auto ratio = devicePixelRatioF();
|
||||||
|
|
||||||
|
// draw attention background
|
||||||
|
if (m_windowInfo.attention)
|
||||||
|
{
|
||||||
|
painter.setBrush(QColor(241, 138, 46, 255 * .8));
|
||||||
|
painter.setPen(Qt::NoPen);
|
||||||
|
painter.drawRoundedRect(rect(), 5, 5);
|
||||||
|
}
|
||||||
|
|
||||||
// draw image
|
// draw image
|
||||||
// QImage im = m_snapshot.scaled(r.size() * ratio, Qt::KeepAspectRatio, Qt::SmoothTransformation);
|
|
||||||
// im.setDevicePixelRatio(ratio);
|
|
||||||
const QImage &im = m_snapshot;
|
const QImage &im = m_snapshot;
|
||||||
|
|
||||||
const QRect ir = im.rect();
|
const QRect ir = im.rect();
|
||||||
|
@ -30,6 +30,8 @@
|
|||||||
#include <dimagebutton.h>
|
#include <dimagebutton.h>
|
||||||
#include <DWindowManagerHelper>
|
#include <DWindowManagerHelper>
|
||||||
|
|
||||||
|
#include <com_deepin_dde_daemon_dock_entry.h>
|
||||||
|
|
||||||
DWIDGET_USE_NAMESPACE
|
DWIDGET_USE_NAMESPACE
|
||||||
|
|
||||||
#define SNAP_WIDTH 200
|
#define SNAP_WIDTH 200
|
||||||
@ -43,8 +45,9 @@ public:
|
|||||||
explicit AppSnapshot(const WId wid, QWidget *parent = 0);
|
explicit AppSnapshot(const WId wid, QWidget *parent = 0);
|
||||||
|
|
||||||
WId wid() const { return m_wid; }
|
WId wid() const { return m_wid; }
|
||||||
|
bool attentioned() const { return m_windowInfo.attention; }
|
||||||
const QImage snapshot() const { return m_snapshot; }
|
const QImage snapshot() const { return m_snapshot; }
|
||||||
const QString title() const { return m_title->text(); }
|
const QString title() const { return m_windowInfo.title; }
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void entered(const WId wid) const;
|
void entered(const WId wid) const;
|
||||||
@ -55,7 +58,7 @@ public slots:
|
|||||||
void fetchSnapshot();
|
void fetchSnapshot();
|
||||||
void closeWindow() const;
|
void closeWindow() const;
|
||||||
void compositeChanged() const;
|
void compositeChanged() const;
|
||||||
void setWindowTitle(const QString &title);
|
void setWindowInfo(const WindowInfo &info);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void dragEnterEvent(QDragEnterEvent *e);
|
void dragEnterEvent(QDragEnterEvent *e);
|
||||||
@ -67,6 +70,7 @@ private:
|
|||||||
private:
|
private:
|
||||||
const WId m_wid;
|
const WId m_wid;
|
||||||
|
|
||||||
|
WindowInfo m_windowInfo;
|
||||||
QImage m_snapshot;
|
QImage m_snapshot;
|
||||||
QLabel *m_title;
|
QLabel *m_title;
|
||||||
DImageButton *m_closeBtn;
|
DImageButton *m_closeBtn;
|
||||||
|
@ -74,7 +74,7 @@ void PreviewContainer::setWindowInfos(const WindowInfoMap &infos)
|
|||||||
{
|
{
|
||||||
if (!m_snapshots.contains(it.key()))
|
if (!m_snapshots.contains(it.key()))
|
||||||
appendSnapWidget(it.key());
|
appendSnapWidget(it.key());
|
||||||
m_snapshots[it.key()]->setWindowTitle(it.value().m_windowTitle);
|
m_snapshots[it.key()]->setWindowInfo(it.value());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_snapshots.isEmpty())
|
if (m_snapshots.isEmpty())
|
||||||
|
Loading…
x
Reference in New Issue
Block a user