From 73507e904d19ff9c9c532e0d819580ad05b13d1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E5=8D=9A=E6=96=87?= Date: Mon, 8 Aug 2016 16:28:37 +0800 Subject: [PATCH] add trash item icon Change-Id: Ib9975be9506460bcb7e18fcc701449197e546a76 --- plugins/disk-mount/diskpluginitem.cpp | 2 +- plugins/network/item/deviceitem.cpp | 2 +- plugins/shutdown/pluginwidget.cpp | 2 +- plugins/shutdown/powerstatuswidget.cpp | 2 +- plugins/sound/sounditem.cpp | 2 +- plugins/system-tray/traywidget.cpp | 2 +- plugins/trash/popupcontrolwidget.cpp | 16 +++++++++-- plugins/trash/popupcontrolwidget.h | 1 + plugins/trash/trashwidget.cpp | 40 ++++++++++++++++++++++---- plugins/trash/trashwidget.h | 9 ++++++ 10 files changed, 65 insertions(+), 13 deletions(-) diff --git a/plugins/disk-mount/diskpluginitem.cpp b/plugins/disk-mount/diskpluginitem.cpp index 3691656d4..f4daad5fc 100644 --- a/plugins/disk-mount/diskpluginitem.cpp +++ b/plugins/disk-mount/diskpluginitem.cpp @@ -34,7 +34,7 @@ void DiskPluginItem::resizeEvent(QResizeEvent *e) QSize DiskPluginItem::sizeHint() const { - return QSize(24, 24); + return QSize(20, 20); } void DiskPluginItem::updateIcon() diff --git a/plugins/network/item/deviceitem.cpp b/plugins/network/item/deviceitem.cpp index f142af82d..5ffbab427 100644 --- a/plugins/network/item/deviceitem.cpp +++ b/plugins/network/item/deviceitem.cpp @@ -11,7 +11,7 @@ DeviceItem::DeviceItem(const QUuid &deviceUuid) QSize DeviceItem::sizeHint() const { - return QSize(24, 24); + return QSize(20, 20); } const QUuid DeviceItem::uuid() const diff --git a/plugins/shutdown/pluginwidget.cpp b/plugins/shutdown/pluginwidget.cpp index 4d5d29fce..faf61256c 100644 --- a/plugins/shutdown/pluginwidget.cpp +++ b/plugins/shutdown/pluginwidget.cpp @@ -15,7 +15,7 @@ PluginWidget::PluginWidget(QWidget *parent) QSize PluginWidget::sizeHint() const { - return QSize(24, 24); + return QSize(20, 20); } void PluginWidget::paintEvent(QPaintEvent *e) diff --git a/plugins/shutdown/powerstatuswidget.cpp b/plugins/shutdown/powerstatuswidget.cpp index 8323c110d..0a69bd59c 100644 --- a/plugins/shutdown/powerstatuswidget.cpp +++ b/plugins/shutdown/powerstatuswidget.cpp @@ -13,7 +13,7 @@ PowerStatusWidget::PowerStatusWidget(QWidget *parent) QSize PowerStatusWidget::sizeHint() const { - return QSize(24, 24); + return QSize(20, 20); } void PowerStatusWidget::paintEvent(QPaintEvent *e) diff --git a/plugins/sound/sounditem.cpp b/plugins/sound/sounditem.cpp index 6ca35bafc..2a0b1808a 100644 --- a/plugins/sound/sounditem.cpp +++ b/plugins/sound/sounditem.cpp @@ -24,7 +24,7 @@ QWidget *SoundItem::popupApplet() QSize SoundItem::sizeHint() const { - return QSize(24, 24); + return QSize(20, 20); } void SoundItem::resizeEvent(QResizeEvent *e) diff --git a/plugins/system-tray/traywidget.cpp b/plugins/system-tray/traywidget.cpp index 18e9cb694..4336f47aa 100644 --- a/plugins/system-tray/traywidget.cpp +++ b/plugins/system-tray/traywidget.cpp @@ -44,7 +44,7 @@ const QImage TrayWidget::trayImage() const QSize TrayWidget::sizeHint() const { - return QSize(24, 24); + return QSize(20, 20); } void TrayWidget::paintEvent(QPaintEvent *e) diff --git a/plugins/trash/popupcontrolwidget.cpp b/plugins/trash/popupcontrolwidget.cpp index 928bff248..dd3fd264c 100644 --- a/plugins/trash/popupcontrolwidget.cpp +++ b/plugins/trash/popupcontrolwidget.cpp @@ -7,11 +7,13 @@ DWIDGET_USE_NAMESPACE -const QString TrashDir = QDir::homePath() + "/.local/share/Trash/files"; +const QString TrashDir = QDir::homePath() + "/.local/share/Trash"; PopupControlWidget::PopupControlWidget(QWidget *parent) : QWidget(parent), + m_empty(false), + m_openBtn(new DLinkButton(tr("Run"), this)), m_clearBtn(new DLinkButton(tr("Empty"), this)), @@ -30,7 +32,8 @@ PopupControlWidget::PopupControlWidget(QWidget *parent) setLayout(centeralLayout); setObjectName("trash"); setFixedWidth(80); - setFixedHeight(60); + + trashStatusChanged(); } bool PopupControlWidget::empty() const @@ -38,6 +41,11 @@ bool PopupControlWidget::empty() const return m_empty; } +QSize PopupControlWidget::sizeHint() const +{ + return QSize(width(), m_empty ? 30 : 60); +} + void PopupControlWidget::openTrashFloder() { QProcess *proc = new QProcess; @@ -68,6 +76,10 @@ void PopupControlWidget::trashStatusChanged() if (m_empty == empty) return; + m_clearBtn->setVisible(!empty); m_empty = empty; + + setFixedHeight(sizeHint().height()); + emit emptyChanged(m_empty); } diff --git a/plugins/trash/popupcontrolwidget.h b/plugins/trash/popupcontrolwidget.h index 2f09cbd11..fab251061 100644 --- a/plugins/trash/popupcontrolwidget.h +++ b/plugins/trash/popupcontrolwidget.h @@ -14,6 +14,7 @@ public: explicit PopupControlWidget(QWidget *parent = 0); bool empty() const; + QSize sizeHint() const; signals: void emptyChanged(const bool empty) const; diff --git a/plugins/trash/trashwidget.cpp b/plugins/trash/trashwidget.cpp index 29bfe1f35..6bcd811fe 100644 --- a/plugins/trash/trashwidget.cpp +++ b/plugins/trash/trashwidget.cpp @@ -1,7 +1,10 @@ + +#include "constants.h" #include "trashwidget.h" #include #include +#include TrashWidget::TrashWidget(QWidget *parent) : QWidget(parent), @@ -11,6 +14,10 @@ TrashWidget::TrashWidget(QWidget *parent) QIcon::setThemeName("deepin"); m_popupApplet->setVisible(false); + + connect(m_popupApplet, &PopupControlWidget::emptyChanged, this, &TrashWidget::updateIcon); + + updateIcon(); } QWidget *TrashWidget::popupApplet() @@ -18,14 +25,37 @@ QWidget *TrashWidget::popupApplet() return m_popupApplet; } +QSize TrashWidget::sizeHint() const +{ + return QSize(20, 20); +} + void TrashWidget::paintEvent(QPaintEvent *e) { QWidget::paintEvent(e); - const int size = std::min(width(), height()) * 0.8; - QIcon icon = QIcon::fromTheme("user-trash"); - QPixmap pixmap = icon.pixmap(size, size); - QPainter painter(this); - painter.drawPixmap(rect().center() - pixmap.rect().center(), pixmap); + painter.drawPixmap(rect().center() - m_icon.rect().center(), m_icon); +} + +void TrashWidget::resizeEvent(QResizeEvent *e) +{ + QWidget::resizeEvent(e); + + updateIcon(); +} + +void TrashWidget::updateIcon() +{ + QString iconString = "user-trash"; + if (!m_popupApplet->empty()) + iconString.append("-full"); + if (qApp->property(PROP_DISPLAY_MODE).value() == Dock::Efficient) + iconString.append("-symbolic"); + + const int size = std::min(width(), height()) * 0.8; + QIcon icon = QIcon::fromTheme(iconString); + m_icon = icon.pixmap(size, size); + + update(); } diff --git a/plugins/trash/trashwidget.h b/plugins/trash/trashwidget.h index 4ebaa0df3..dfec41ce3 100644 --- a/plugins/trash/trashwidget.h +++ b/plugins/trash/trashwidget.h @@ -4,6 +4,7 @@ #include "popupcontrolwidget.h" #include +#include class TrashWidget : public QWidget { @@ -14,11 +15,19 @@ public: QWidget *popupApplet(); + QSize sizeHint() const; + protected: void paintEvent(QPaintEvent *e); + void resizeEvent(QResizeEvent *e); + +private slots: + void updateIcon(); private: PopupControlWidget *m_popupApplet; + + QPixmap m_icon; }; #endif // TRASHWIDGET_H