From 67635df6fd4b7d09748d106ee8133f4b347c2119 Mon Sep 17 00:00:00 2001 From: listenerri Date: Wed, 24 Oct 2018 18:09:44 +0800 Subject: [PATCH] refactor: handle click event of system trays Change-Id: I31b9ecf03e4b9937fa19a3209f5e64e6219b2327 --- frame/controller/dockpluginscontroller.h | 1 + frame/dbus/dbusdisplay.h | 2 +- frame/item/launcheritem.cpp | 1 + frame/util/dockpopupwindow.cpp | 3 +- frame/util/dockpopupwindow.h | 3 - plugins/system-tray/CMakeLists.txt | 7 +- plugins/system-tray/abstracttraywidget.cpp | 4 +- plugins/system-tray/snitraywidget.cpp | 4 +- plugins/system-tray/system-tray.qrc | 112 +++++++ .../system-trays/abstractsystemtraywidget.cpp | 293 ++++++++++++++++++ .../system-trays/abstractsystemtraywidget.h | 61 ++++ .../item/abstractnetworktraywidget.cpp | 2 +- .../network/item/abstractnetworktraywidget.h | 4 +- .../network/item/applet/accesspointwidget.cpp | 16 +- .../item/applet/devicecontrolwidget.cpp | 2 +- .../network/item/applet/wirelesslist.cpp | 2 +- .../system-trays/network/item/wireditem.cpp | 2 +- .../network/item/wiredtraywidget.cpp | 11 +- .../network/item/wiredtraywidget.h | 5 +- .../network/item/wirelessitem.cpp | 2 +- .../network/item/wirelesstraywidget.cpp | 19 +- .../network/item/wirelesstraywidget.h | 5 +- .../system-trays/shutdown/powertraywidget.cpp | 52 +++- .../system-trays/shutdown/powertraywidget.h | 12 +- .../shutdown/shutdowntraywidget.cpp | 23 +- .../shutdown/shutdowntraywidget.h | 13 +- .../sound/componments/volumeslider.cpp | 2 +- .../system-trays/sound/sinkinputwidget.cpp | 2 +- .../system-trays/sound/soundapplet.cpp | 4 +- .../system-trays/sound/soundtraywidget.cpp | 13 +- .../system-trays/sound/soundtraywidget.h | 11 +- 31 files changed, 597 insertions(+), 96 deletions(-) create mode 100644 plugins/system-tray/system-trays/abstractsystemtraywidget.cpp create mode 100644 plugins/system-tray/system-trays/abstractsystemtraywidget.h diff --git a/frame/controller/dockpluginscontroller.h b/frame/controller/dockpluginscontroller.h index 199f2a405..bd6536a8c 100644 --- a/frame/controller/dockpluginscontroller.h +++ b/frame/controller/dockpluginscontroller.h @@ -28,6 +28,7 @@ #include #include #include +#include class DockItemController; class PluginsItemInterface; diff --git a/frame/dbus/dbusdisplay.h b/frame/dbus/dbusdisplay.h index d9f8e75af..53281d576 100644 --- a/frame/dbus/dbusdisplay.h +++ b/frame/dbus/dbusdisplay.h @@ -23,7 +23,7 @@ typedef QMap BrightnessMap; -Q_DECLARE_METATYPE(BrightnessMap) +//Q_DECLARE_METATYPE(BrightnessMap) struct DisplayRect{ qint16 x; diff --git a/frame/item/launcheritem.cpp b/frame/item/launcheritem.cpp index b3f7bbd99..04fb601b8 100644 --- a/frame/item/launcheritem.cpp +++ b/frame/item/launcheritem.cpp @@ -27,6 +27,7 @@ #include #include #include +#include DCORE_USE_NAMESPACE diff --git a/frame/util/dockpopupwindow.cpp b/frame/util/dockpopupwindow.cpp index 6cb8a8814..096b44340 100644 --- a/frame/util/dockpopupwindow.cpp +++ b/frame/util/dockpopupwindow.cpp @@ -33,8 +33,7 @@ DockPopupWindow::DockPopupWindow(QWidget *parent) m_acceptDelayTimer(new QTimer(this)), - m_regionInter(new DRegionMonitor(this)), - m_displayInter(new DBusDisplay(this)) + m_regionInter(new DRegionMonitor(this)) { m_acceptDelayTimer->setSingleShot(true); m_acceptDelayTimer->setInterval(100); diff --git a/frame/util/dockpopupwindow.h b/frame/util/dockpopupwindow.h index 5704364f8..3b202593a 100644 --- a/frame/util/dockpopupwindow.h +++ b/frame/util/dockpopupwindow.h @@ -22,8 +22,6 @@ #ifndef DOCKPOPUPWINDOW_H #define DOCKPOPUPWINDOW_H -#include "dbus/dbusdisplay.h" - #include #include #include @@ -67,7 +65,6 @@ private: QTimer *m_acceptDelayTimer; DRegionMonitor *m_regionInter; - DBusDisplay *m_displayInter; DWindowManagerHelper *m_wmHelper; }; diff --git a/plugins/system-tray/CMakeLists.txt b/plugins/system-tray/CMakeLists.txt index dd97dd728..589461bd0 100644 --- a/plugins/system-tray/CMakeLists.txt +++ b/plugins/system-tray/CMakeLists.txt @@ -5,7 +5,9 @@ project(${PLUGIN_NAME}) # Sources files file(GLOB_RECURSE SRCS "*.h" "*.cpp" "../../widgets/*.h" "../../widgets/*.cpp" - "../../frame/util/themeappicon.h" "../../frame/util/themeappicon.cpp") + "../../frame/util/themeappicon.h" "../../frame/util/themeappicon.cpp" + "../../frame/util/dockpopupwindow.h" "../../frame/util/dockpopupwindow.cpp" + "../../frame/dbus/dbusmenu.h" "../../frame/dbus/dbusmenu.cpp") find_package(PkgConfig REQUIRED) find_package(Qt5Widgets REQUIRED) @@ -26,7 +28,8 @@ target_include_directories(${PLUGIN_NAME} PUBLIC ${DtkWidget_INCLUDE_DIRS} ${XCB_LIBS_INCLUDE_DIRS} ${DDE-Network-Utils_INCLUDE_DIRS} ${DFrameworkDBus_INCLUDE_DIRS} - ../../interfaces) + ../../interfaces + ../../frame) target_link_libraries(${PLUGIN_NAME} PRIVATE ${DtkWidget_LIBRARIES} ${Qt5Widgets_LIBRARIES} diff --git a/plugins/system-tray/abstracttraywidget.cpp b/plugins/system-tray/abstracttraywidget.cpp index 9db142f0e..8da583ae7 100644 --- a/plugins/system-tray/abstracttraywidget.cpp +++ b/plugins/system-tray/abstracttraywidget.cpp @@ -25,8 +25,8 @@ #include #include -AbstractTrayWidget::AbstractTrayWidget(QWidget *parent, Qt::WindowFlags f): - QWidget(parent, f) +AbstractTrayWidget::AbstractTrayWidget(QWidget *parent, Qt::WindowFlags f) + : QWidget(parent, f) { } diff --git a/plugins/system-tray/snitraywidget.cpp b/plugins/system-tray/snitraywidget.cpp index 1de60bfb4..5b6a8c019 100644 --- a/plugins/system-tray/snitraywidget.cpp +++ b/plugins/system-tray/snitraywidget.cpp @@ -20,7 +20,7 @@ */ #include "snitraywidget.h" -#include "../frame/util/themeappicon.h" +#include "util/themeappicon.h" #include #include @@ -100,7 +100,7 @@ void SNITrayWidget::sendClick(uint8_t mouseButton, int x, int y) break; default: qDebug() << "unknown mouse button key"; - break; + break; } } diff --git a/plugins/system-tray/system-tray.qrc b/plugins/system-tray/system-tray.qrc index 18a81354e..4b7540007 100644 --- a/plugins/system-tray/system-tray.qrc +++ b/plugins/system-tray/system-tray.qrc @@ -6,5 +6,117 @@ resources/arrow_right_dark.svg resources/arrow_up_light.svg system-trays/shutdown/resources/icons/normal.svg + system-trays/sound/resources/audio-volume-high-symbolic.svg + system-trays/sound/resources/audio-volume-medium-symbolic.svg + system-trays/sound/resources/slider_handle.svg + system-trays/sound/resources/audio-volume-low-symbolic.svg + system-trays/sound/resources/audio-volume-muted-symbolic.svg + system-trays/network/resources/wired/network-wired-symbolic-connecting4.svg + system-trays/network/resources/wired/network-wired-symbolic-connecting3.svg + system-trays/network/resources/wired/network-wired-symbolic-connecting2.svg + system-trays/network/resources/wired/network-wired-symbolic-connecting5.svg + system-trays/network/resources/wired/network-wired-symbolic-connecting1.svg + system-trays/network/resources/wireless/disconnect.svg + system-trays/network/resources/wireless/wireless-60-symbolic.svg + system-trays/network/resources/wireless/refresh_normal.svg + system-trays/network/resources/wireless/wireless-0-symbolic.svg + system-trays/network/resources/wireless/disconnect_press.svg + system-trays/network/resources/wireless/wireless-20-symbolic.svg + system-trays/network/resources/wireless/wireless-40-symbolic.svg + system-trays/network/resources/wireless/wireless-80-symbolic.svg + system-trays/network/resources/wireless/disconnect_hover.svg + system-trays/network/resources/wireless/refresh_hover.svg + system-trays/network/resources/wireless/security.svg + system-trays/network/resources/wireless/select.svg + system-trays/network/resources/wireless/spinner14/Spinner38.png + system-trays/network/resources/wireless/spinner14/Spinner21.png + system-trays/network/resources/wireless/spinner14/Spinner66.png + system-trays/network/resources/wireless/spinner14/Spinner37.png + system-trays/network/resources/wireless/spinner14/Spinner02.png + system-trays/network/resources/wireless/spinner14/Spinner81.png + system-trays/network/resources/wireless/spinner14/Spinner87.png + system-trays/network/resources/wireless/spinner14/Spinner44.png + system-trays/network/resources/wireless/spinner14/Spinner27.png + system-trays/network/resources/wireless/spinner14/Spinner45.png + system-trays/network/resources/wireless/spinner14/Spinner82.png + system-trays/network/resources/wireless/spinner14/Spinner11.png + system-trays/network/resources/wireless/spinner14/Spinner17.png + system-trays/network/resources/wireless/spinner14/Spinner18.png + system-trays/network/resources/wireless/spinner14/Spinner03.png + system-trays/network/resources/wireless/spinner14/Spinner84.png + system-trays/network/resources/wireless/spinner14/Spinner64.png + system-trays/network/resources/wireless/spinner14/Spinner43.png + system-trays/network/resources/wireless/spinner14/Spinner22.png + system-trays/network/resources/wireless/spinner14/Spinner52.png + system-trays/network/resources/wireless/spinner14/Spinner76.png + system-trays/network/resources/wireless/spinner14/Spinner01.png + system-trays/network/resources/wireless/spinner14/Spinner19.png + system-trays/network/resources/wireless/spinner14/Spinner59.png + system-trays/network/resources/wireless/spinner14/Spinner89.png + system-trays/network/resources/wireless/spinner14/Spinner67.png + system-trays/network/resources/wireless/spinner14/Spinner48.png + system-trays/network/resources/wireless/spinner14/Spinner35.png + system-trays/network/resources/wireless/spinner14/Spinner31.png + system-trays/network/resources/wireless/spinner14/Spinner78.png + system-trays/network/resources/wireless/spinner14/Spinner83.png + system-trays/network/resources/wireless/spinner14/Spinner20.png + system-trays/network/resources/wireless/spinner14/Spinner60.png + system-trays/network/resources/wireless/spinner14/Spinner70.png + system-trays/network/resources/wireless/spinner14/Spinner29.png + system-trays/network/resources/wireless/spinner14/Spinner46.png + system-trays/network/resources/wireless/spinner14/Spinner47.png + system-trays/network/resources/wireless/spinner14/Spinner80.png + system-trays/network/resources/wireless/spinner14/Spinner07.png + system-trays/network/resources/wireless/spinner14/Spinner56.png + system-trays/network/resources/wireless/spinner14/Spinner55.png + system-trays/network/resources/wireless/spinner14/Spinner72.png + system-trays/network/resources/wireless/spinner14/Spinner24.png + system-trays/network/resources/wireless/spinner14/Spinner41.png + system-trays/network/resources/wireless/spinner14/Spinner06.png + system-trays/network/resources/wireless/spinner14/Spinner62.png + system-trays/network/resources/wireless/spinner14/Spinner69.png + system-trays/network/resources/wireless/spinner14/Spinner40.png + system-trays/network/resources/wireless/spinner14/Spinner53.png + system-trays/network/resources/wireless/spinner14/Spinner16.png + system-trays/network/resources/wireless/spinner14/Spinner30.png + system-trays/network/resources/wireless/spinner14/Spinner09.png + system-trays/network/resources/wireless/spinner14/Spinner34.png + system-trays/network/resources/wireless/spinner14/Spinner14.png + system-trays/network/resources/wireless/spinner14/Spinner68.png + system-trays/network/resources/wireless/spinner14/Spinner90.png + system-trays/network/resources/wireless/spinner14/Spinner32.png + system-trays/network/resources/wireless/spinner14/Spinner61.png + system-trays/network/resources/wireless/spinner14/Spinner12.png + system-trays/network/resources/wireless/spinner14/Spinner28.png + system-trays/network/resources/wireless/spinner14/Spinner54.png + system-trays/network/resources/wireless/spinner14/Spinner50.png + system-trays/network/resources/wireless/spinner14/Spinner15.png + system-trays/network/resources/wireless/spinner14/Spinner36.png + system-trays/network/resources/wireless/spinner14/Spinner73.png + system-trays/network/resources/wireless/spinner14/Spinner10.png + system-trays/network/resources/wireless/spinner14/Spinner33.png + system-trays/network/resources/wireless/spinner14/Spinner75.png + system-trays/network/resources/wireless/spinner14/Spinner13.png + system-trays/network/resources/wireless/spinner14/Spinner39.png + system-trays/network/resources/wireless/spinner14/Spinner88.png + system-trays/network/resources/wireless/spinner14/Spinner04.png + system-trays/network/resources/wireless/spinner14/Spinner05.png + system-trays/network/resources/wireless/spinner14/Spinner86.png + system-trays/network/resources/wireless/spinner14/Spinner65.png + system-trays/network/resources/wireless/spinner14/Spinner71.png + system-trays/network/resources/wireless/spinner14/Spinner74.png + system-trays/network/resources/wireless/spinner14/Spinner42.png + system-trays/network/resources/wireless/spinner14/Spinner49.png + system-trays/network/resources/wireless/spinner14/Spinner08.png + system-trays/network/resources/wireless/spinner14/Spinner85.png + system-trays/network/resources/wireless/spinner14/Spinner23.png + system-trays/network/resources/wireless/spinner14/Spinner51.png + system-trays/network/resources/wireless/spinner14/Spinner79.png + system-trays/network/resources/wireless/spinner14/Spinner63.png + system-trays/network/resources/wireless/spinner14/Spinner26.png + system-trays/network/resources/wireless/spinner14/Spinner25.png + system-trays/network/resources/wireless/spinner14/Spinner58.png + system-trays/network/resources/wireless/spinner14/Spinner77.png + system-trays/network/resources/wireless/spinner14/Spinner57.png diff --git a/plugins/system-tray/system-trays/abstractsystemtraywidget.cpp b/plugins/system-tray/system-trays/abstractsystemtraywidget.cpp new file mode 100644 index 000000000..0c62062f0 --- /dev/null +++ b/plugins/system-tray/system-trays/abstractsystemtraywidget.cpp @@ -0,0 +1,293 @@ +#include "abstractsystemtraywidget.h" +#include "dbus/dbusmenu.h" + +#include +#include + +#include + +Dock::Position AbstractSystemTrayWidget::DockPosition = Dock::Position::Top; +QPointer AbstractSystemTrayWidget::PopupWindow = nullptr; + +AbstractSystemTrayWidget::AbstractSystemTrayWidget(QWidget *parent) + : AbstractTrayWidget(parent), + m_popupShown(false), + m_popupTipsDelayTimer(new QTimer(this)), + m_popupAdjustDelayTimer(new QTimer(this)) +{ + if (PopupWindow.isNull()) + { + DockPopupWindow *arrowRectangle = new DockPopupWindow(nullptr); + arrowRectangle->setShadowBlurRadius(20); + arrowRectangle->setRadius(6); + arrowRectangle->setShadowYOffset(2); + arrowRectangle->setShadowXOffset(0); + arrowRectangle->setArrowWidth(18); + arrowRectangle->setArrowHeight(10); + PopupWindow = arrowRectangle; + } + + m_popupTipsDelayTimer->setInterval(500); + m_popupTipsDelayTimer->setSingleShot(true); + + m_popupAdjustDelayTimer->setInterval(10); + m_popupAdjustDelayTimer->setSingleShot(true); + + connect(m_popupTipsDelayTimer, &QTimer::timeout, this, &AbstractSystemTrayWidget::showHoverTips); + connect(m_popupAdjustDelayTimer, &QTimer::timeout, this, &AbstractSystemTrayWidget::updatePopupPosition, Qt::QueuedConnection); +} + +AbstractSystemTrayWidget::~AbstractSystemTrayWidget() +{ + if (m_popupShown) + popupWindowAccept(); +} + +void AbstractSystemTrayWidget::sendClick(uint8_t mouseButton, int x, int y) +{ + switch (mouseButton) { + case XCB_BUTTON_INDEX_1: { + if (trayPopupApplet()) { + showPopupApplet(trayPopupApplet()); + } + if (!trayClickCommand().isEmpty()) { + QProcess::startDetached(trayClickCommand()); + } + break; + } + case XCB_BUTTON_INDEX_2: + break; + case XCB_BUTTON_INDEX_3: + break; + default: + qDebug() << "unknown mouse button key"; + break; + } +} + +bool AbstractSystemTrayWidget::event(QEvent *event) +{ + if (m_popupShown) + { + switch (event->type()) + { + case QEvent::Paint: + if (!m_popupAdjustDelayTimer->isActive()) + m_popupAdjustDelayTimer->start(); + break; + default:; + } + } + + return AbstractTrayWidget::event(event); +} + +void AbstractSystemTrayWidget::enterEvent(QEvent *event) +{ + m_popupTipsDelayTimer->start(); + update(); + + AbstractTrayWidget::enterEvent(event); +} + +void AbstractSystemTrayWidget::leaveEvent(QEvent *event) +{ + m_popupTipsDelayTimer->stop(); + + // auto hide if popup is not model window + if (m_popupShown && !PopupWindow->model()) + hidePopup(); + + update(); + + AbstractTrayWidget::leaveEvent(event); +} + +void AbstractSystemTrayWidget::mousePressEvent(QMouseEvent *event) +{ + m_popupTipsDelayTimer->stop(); + hideNonModel(); + + if (event->button() == Qt::RightButton) + return showContextMenu(); + + AbstractTrayWidget::mousePressEvent(event); +} + +const QPoint AbstractSystemTrayWidget::popupMarkPoint() const +{ + QPoint p(topleftPoint()); + + const QRect r = rect(); + const int offset = 2; + switch (DockPosition) + { + case Dock::Position::Top: p += QPoint(r.width() / 2, r.height() + offset); break; + case Dock::Position::Bottom: p += QPoint(r.width() / 2, 0 - offset); break; + case Dock::Position::Left: p += QPoint(r.width() + offset, r.height() / 2); break; + case Dock::Position::Right: p += QPoint(0 - offset, r.height() / 2); break; + } + + return p; +} + +const QPoint AbstractSystemTrayWidget::topleftPoint() const +{ + QPoint p; + const QWidget *w = this; + do { + p += w->pos(); + w = qobject_cast(w->parent()); + } while (w); + + return p; +} + +void AbstractSystemTrayWidget::hidePopup() +{ + m_popupTipsDelayTimer->stop(); + m_popupAdjustDelayTimer->stop(); + m_popupShown = false; + PopupWindow->hide(); + + emit PopupWindow->accept(); +// emit requestWindowAutoHide(true); +} + +void AbstractSystemTrayWidget::hideNonModel() +{ + // auto hide if popup is not model window + if (m_popupShown && !PopupWindow->model()) + hidePopup(); +} + +void AbstractSystemTrayWidget::popupWindowAccept() +{ + if (!PopupWindow->isVisible()) + return; + + disconnect(PopupWindow.data(), &DockPopupWindow::accept, this, &AbstractSystemTrayWidget::popupWindowAccept); + + hidePopup(); +} + +void AbstractSystemTrayWidget::showPopupApplet(QWidget * const applet) +{ + // another model popup window already exists + if (PopupWindow->model()) + return; + + if (!applet) { + return; + } + + showPopupWindow(applet, true); +} + +void AbstractSystemTrayWidget::showPopupWindow(QWidget * const content, const bool model) +{ + m_popupShown = true; + m_lastPopupWidget = content; + +// if (model) +// emit requestWindowAutoHide(false); + + DockPopupWindow *popup = PopupWindow.data(); + QWidget *lastContent = popup->getContent(); + if (lastContent) + lastContent->setVisible(false); + + switch (DockPosition) + { + case Dock::Position::Top: popup->setArrowDirection(DockPopupWindow::ArrowTop); break; + case Dock::Position::Bottom:popup->setArrowDirection(DockPopupWindow::ArrowBottom); break; + case Dock::Position::Left: popup->setArrowDirection(DockPopupWindow::ArrowLeft); break; + case Dock::Position::Right: popup->setArrowDirection(DockPopupWindow::ArrowRight); break; + } + popup->resize(content->sizeHint()); + popup->setContent(content); + + const QPoint p = popupMarkPoint(); + if (!popup->isVisible()) + QMetaObject::invokeMethod(popup, "show", Qt::QueuedConnection, Q_ARG(QPoint, p), Q_ARG(bool, model)); + else + popup->show(p, model); + + connect(popup, &DockPopupWindow::accept, this, &AbstractSystemTrayWidget::popupWindowAccept, Qt::UniqueConnection); +} + +void AbstractSystemTrayWidget::showHoverTips() +{ + // another model popup window already exists + if (PopupWindow->model()) + return; + + // if not in geometry area + const QRect r(topleftPoint(), size()); + if (!r.contains(QCursor::pos())) + return; + + QWidget * const content = trayTipsWidget(); + if (!content) + return; + + showPopupWindow(content); +} + +void AbstractSystemTrayWidget::showContextMenu() +{ + const QString menuJson = contextMenu(); + if (menuJson.isEmpty()) + return; + + QDBusPendingReply result = m_menuManagerInter->RegisterMenu(); + + result.waitForFinished(); + if (result.isError()) + { + qWarning() << result.error(); + return; + } + + const QPoint p = popupMarkPoint(); + + QJsonObject menuObject; + menuObject.insert("x", QJsonValue(p.x())); + menuObject.insert("y", QJsonValue(p.y())); + menuObject.insert("isDockMenu", QJsonValue(true)); + menuObject.insert("menuJsonContent", QJsonValue(menuJson)); + + switch (DockPosition) + { + case Dock::Position::Top: menuObject.insert("direction", "top"); break; + case Dock::Position::Bottom: menuObject.insert("direction", "bottom"); break; + case Dock::Position::Left: menuObject.insert("direction", "left"); break; + case Dock::Position::Right: menuObject.insert("direction", "right"); break; + } + + const QDBusObjectPath path = result.argumentAt(0).value(); + DBusMenu *menuInter = new DBusMenu(path.path(), this); + + connect(menuInter, &DBusMenu::ItemInvoked, this, &AbstractSystemTrayWidget::invokedMenuItem); + connect(menuInter, &DBusMenu::ItemInvoked, menuInter, &DBusMenu::deleteLater); +// connect(menuInter, &DBusMenu::MenuUnregistered, this, &AbstractSystemTrayWidget::onContextMenuAccepted, Qt::QueuedConnection); + + menuInter->ShowMenu(QString(QJsonDocument(menuObject).toJson())); + + hidePopup(); + // emit requestWindowAutoHide(false); +} + +void AbstractSystemTrayWidget::updatePopupPosition() +{ + Q_ASSERT(sender() == m_popupAdjustDelayTimer); + + if (!m_popupShown || !PopupWindow->model()) + return; + + if (PopupWindow->getContent() != m_lastPopupWidget.data()) + return popupWindowAccept(); + + const QPoint p = popupMarkPoint(); + PopupWindow->show(p, PopupWindow->model()); +} diff --git a/plugins/system-tray/system-trays/abstractsystemtraywidget.h b/plugins/system-tray/system-trays/abstractsystemtraywidget.h new file mode 100644 index 000000000..cfadbe8ab --- /dev/null +++ b/plugins/system-tray/system-trays/abstractsystemtraywidget.h @@ -0,0 +1,61 @@ +#ifndef ABSTRACTSYSTEMTRAYWIDGET_H +#define ABSTRACTSYSTEMTRAYWIDGET_H + +#include "constants.h" +#include "abstracttraywidget.h" +#include "util/dockpopupwindow.h" +#include "dbus/dbusmenumanager.h" + +class AbstractSystemTrayWidget : public AbstractTrayWidget +{ +public: + AbstractSystemTrayWidget(QWidget *parent = nullptr); + virtual ~AbstractSystemTrayWidget(); + + void sendClick(uint8_t mouseButton, int x, int y) Q_DECL_OVERRIDE; + + virtual inline QWidget *trayTipsWidget() { return nullptr; } + virtual inline QWidget *trayPopupApplet() { return nullptr; } + virtual inline const QString trayClickCommand() { return QString(); } + virtual inline const QString contextMenu() const {return QString(); } + virtual inline void invokedMenuItem(const QString &itemId, const bool checked) { Q_UNUSED(itemId); Q_UNUSED(checked); } + +protected: + bool event(QEvent *event) Q_DECL_OVERRIDE; + void enterEvent(QEvent *event) Q_DECL_OVERRIDE; + void leaveEvent(QEvent *event) Q_DECL_OVERRIDE; + void mousePressEvent(QMouseEvent *event) Q_DECL_OVERRIDE; + +protected: + const QPoint popupMarkPoint() const; + const QPoint topleftPoint() const; + + void hidePopup(); + void hideNonModel(); + void popupWindowAccept(); + void showPopupApplet(QWidget * const applet); + + virtual void showPopupWindow(QWidget * const content, const bool model = false); + virtual void showHoverTips(); + +protected Q_SLOTS: + void showContextMenu(); + +private: + void updatePopupPosition(); + +private: + bool m_popupShown; + + QPointer m_lastPopupWidget; + + QTimer *m_popupTipsDelayTimer; + QTimer *m_popupAdjustDelayTimer; + + DBusMenuManager *m_menuManagerInter; + + static Dock::Position DockPosition; + static QPointer PopupWindow; +}; + +#endif // ABSTRACTSYSTEMTRAYWIDGET_H diff --git a/plugins/system-tray/system-trays/network/item/abstractnetworktraywidget.cpp b/plugins/system-tray/system-trays/network/item/abstractnetworktraywidget.cpp index c34b8c89c..859afd8e5 100644 --- a/plugins/system-tray/system-trays/network/item/abstractnetworktraywidget.cpp +++ b/plugins/system-tray/system-trays/network/item/abstractnetworktraywidget.cpp @@ -27,7 +27,7 @@ using namespace dde::network; AbstractNetworkTrayWidget::AbstractNetworkTrayWidget(dde::network::NetworkDevice *device, QWidget *parent) - : AbstractTrayWidget(parent), + : AbstractSystemTrayWidget(parent), m_device(device), m_path(device->path()) { diff --git a/plugins/system-tray/system-trays/network/item/abstractnetworktraywidget.h b/plugins/system-tray/system-trays/network/item/abstractnetworktraywidget.h index 7662b89f3..6619deb4b 100644 --- a/plugins/system-tray/system-trays/network/item/abstractnetworktraywidget.h +++ b/plugins/system-tray/system-trays/network/item/abstractnetworktraywidget.h @@ -22,13 +22,13 @@ #ifndef ABSTRACTNETWORKTRAYWIDGET_H #define ABSTRACTNETWORKTRAYWIDGET_H -#include "abstracttraywidget.h" +#include "../../abstractsystemtraywidget.h" #include #include -class AbstractNetworkTrayWidget : public AbstractTrayWidget +class AbstractNetworkTrayWidget : public AbstractSystemTrayWidget { Q_OBJECT diff --git a/plugins/system-tray/system-trays/network/item/applet/accesspointwidget.cpp b/plugins/system-tray/system-trays/network/item/applet/accesspointwidget.cpp index 9c466220d..521d630f1 100644 --- a/plugins/system-tray/system-trays/network/item/applet/accesspointwidget.cpp +++ b/plugins/system-tray/system-trays/network/item/applet/accesspointwidget.cpp @@ -21,7 +21,7 @@ #include "accesspointwidget.h" #include "horizontalseperator.h" -#include "../../frame/util/utils.h" +#include "util/utils.h" #include #include @@ -45,11 +45,11 @@ AccessPointWidget::AccessPointWidget() m_ssidBtn->setObjectName("Ssid"); m_disconnectBtn->setVisible(false); - m_disconnectBtn->setNormalPic(":/wireless/resources/wireless/select.svg"); - m_disconnectBtn->setHoverPic(":/wireless/resources/wireless/disconnect_hover.svg"); - m_disconnectBtn->setPressPic(":/wireless/resources/wireless/disconnect_press.svg"); + m_disconnectBtn->setNormalPic(":/icons/system-trays/network/resources/wireless/select.svg"); + m_disconnectBtn->setHoverPic(":/icons/system-trays/network/resources/wireless/disconnect_hover.svg"); + m_disconnectBtn->setPressPic(":/icons/system-trays/network/resources/wireless/disconnect_press.svg"); - QPixmap iconPix = Utils::renderSVG(":/wireless/resources/wireless/security.svg", QSize(16, 16)); + QPixmap iconPix = Utils::renderSVG(":/icons/system-trays/network/resources/wireless/security.svg", QSize(16, 16)); m_securityIconSize = iconPix.size(); m_securityIcon->setPixmap(iconPix); @@ -130,13 +130,13 @@ void AccessPointWidget::setActiveState(const NetworkDevice::DeviceStatus state) void AccessPointWidget::enterEvent(QEvent *e) { QWidget::enterEvent(e); - m_disconnectBtn->setNormalPic(":/wireless/resources/wireless/disconnect.svg"); + m_disconnectBtn->setNormalPic(":/icons/system-trays/network/resources/wireless/disconnect.svg"); } void AccessPointWidget::leaveEvent(QEvent *e) { QWidget::leaveEvent(e); - m_disconnectBtn->setNormalPic(":/wireless/resources/wireless/select.svg"); + m_disconnectBtn->setNormalPic(":/icons/system-trays/network/resources/wireless/select.svg"); } void AccessPointWidget::setStrengthIcon(const int strength) @@ -152,7 +152,7 @@ void AccessPointWidget::setStrengthIcon(const int strength) else type = QString::number(strength / 10 & ~0x1) + "0"; - iconPix = Utils::renderSVG(QString(":/wireless/resources/wireless/wireless-%1-symbolic.svg").arg(type), s); + iconPix = Utils::renderSVG(QString(":/icons/system-trays/network/resources/wireless/wireless-%1-symbolic.svg").arg(type), s); m_strengthIcon->setPixmap(iconPix); } diff --git a/plugins/system-tray/system-trays/network/item/applet/devicecontrolwidget.cpp b/plugins/system-tray/system-trays/network/item/applet/devicecontrolwidget.cpp index e454e1bab..00c08d0a5 100644 --- a/plugins/system-tray/system-trays/network/item/applet/devicecontrolwidget.cpp +++ b/plugins/system-tray/system-trays/network/item/applet/devicecontrolwidget.cpp @@ -39,7 +39,7 @@ DeviceControlWidget::DeviceControlWidget(QWidget *parent) m_switchBtn = new DSwitchButton; - const QPixmap pixmap = DHiDPIHelper::loadNxPixmap(":/wireless/resources/wireless/refresh_normal.svg"); + const QPixmap pixmap = DHiDPIHelper::loadNxPixmap(":/icons/system-trays/network/resources/wireless/refresh_normal.svg"); m_loadingIndicator = new DLoadingIndicator; m_loadingIndicator->setImageSource(pixmap); diff --git a/plugins/system-tray/system-trays/network/item/applet/wirelesslist.cpp b/plugins/system-tray/system-trays/network/item/applet/wirelesslist.cpp index 22b368cb2..65b0b0d09 100644 --- a/plugins/system-tray/system-trays/network/item/applet/wirelesslist.cpp +++ b/plugins/system-tray/system-trays/network/item/applet/wirelesslist.cpp @@ -90,7 +90,7 @@ WirelessList::WirelessList(WirelessDevice *deviceIter, QWidget *parent) setStyleSheet("background-color:transparent;"); m_indicator = new DPictureSequenceView(this); - m_indicator->setPictureSequence(":/wireless/indicator/resources/wireless/spinner14/Spinner%1.png", QPair(1, 91), 2); + m_indicator->setPictureSequence(":/icons/system-trays/network/resources/wireless/spinner14/Spinner%1.png", QPair(1, 91), 2); m_indicator->setFixedSize(QSize(14, 14) * ratio); m_indicator->setVisible(false); diff --git a/plugins/system-tray/system-trays/network/item/wireditem.cpp b/plugins/system-tray/system-trays/network/item/wireditem.cpp index e34dca2f1..703f54fb5 100644 --- a/plugins/system-tray/system-trays/network/item/wireditem.cpp +++ b/plugins/system-tray/system-trays/network/item/wireditem.cpp @@ -135,7 +135,7 @@ void WiredItem::reloadIcon() m_delayTimer->start(); const quint64 index = QDateTime::currentMSecsSinceEpoch() / 200; const int num = (index % 5) + 1; - m_icon = QPixmap(QString(":/wired/resources/wired/network-wired-symbolic-connecting%1.svg").arg(num)); + m_icon = QPixmap(QString(":/icons/system-trays/network/resources/wired/resources/wired/network-wired-symbolic-connecting%1.svg").arg(num)); update(); return; } diff --git a/plugins/system-tray/system-trays/network/item/wiredtraywidget.cpp b/plugins/system-tray/system-trays/network/item/wiredtraywidget.cpp index a405f5690..43267353e 100644 --- a/plugins/system-tray/system-trays/network/item/wiredtraywidget.cpp +++ b/plugins/system-tray/system-trays/network/item/wiredtraywidget.cpp @@ -69,7 +69,7 @@ void WiredTrayWidget::updateIcon() m_delayTimer->start(); const quint64 index = QDateTime::currentMSecsSinceEpoch() / 200; const int num = (index % 5) + 1; - m_icon = QPixmap(QString(":/wired/resources/wired/network-wired-symbolic-connecting%1.svg").arg(num)); + m_icon = QPixmap(QString(":/icons/system-trays/network/resources/wired/resources/wired/network-wired-symbolic-connecting%1.svg").arg(num)); update(); return; } @@ -91,17 +91,12 @@ void WiredTrayWidget::updateIcon() update(); } -void WiredTrayWidget::sendClick(uint8_t mouseButton, int x, int y) -{ - -} - const QImage WiredTrayWidget::trayImage() { return m_icon.toImage(); } -QWidget *WiredTrayWidget::itemTips() +QWidget *WiredTrayWidget::trayTipsWidget() { m_itemTips->setText(tr("Unknown")); @@ -124,7 +119,7 @@ QWidget *WiredTrayWidget::itemTips() return m_itemTips; } -const QString WiredTrayWidget::itemCommand() const +const QString WiredTrayWidget::trayClickCommand() { return "dbus-send --print-reply --dest=com.deepin.dde.ControlCenter /com/deepin/dde/ControlCenter com.deepin.dde.ControlCenter.ShowModule \"string:network\""; } diff --git a/plugins/system-tray/system-trays/network/item/wiredtraywidget.h b/plugins/system-tray/system-trays/network/item/wiredtraywidget.h index afaab24f4..e22a51a24 100644 --- a/plugins/system-tray/system-trays/network/item/wiredtraywidget.h +++ b/plugins/system-tray/system-trays/network/item/wiredtraywidget.h @@ -41,11 +41,10 @@ public: public: void setActive(const bool active) Q_DECL_OVERRIDE; void updateIcon() Q_DECL_OVERRIDE; - void sendClick(uint8_t mouseButton, int x, int y) Q_DECL_OVERRIDE; const QImage trayImage() Q_DECL_OVERRIDE; - QWidget *itemTips(); - const QString itemCommand() const; + QWidget *trayTipsWidget() Q_DECL_OVERRIDE; + const QString trayClickCommand() Q_DECL_OVERRIDE; protected: void paintEvent(QPaintEvent *e) Q_DECL_OVERRIDE; diff --git a/plugins/system-tray/system-trays/network/item/wirelessitem.cpp b/plugins/system-tray/system-trays/network/item/wirelessitem.cpp index 8be547545..4ea527582 100644 --- a/plugins/system-tray/system-trays/network/item/wirelessitem.cpp +++ b/plugins/system-tray/system-trays/network/item/wirelessitem.cpp @@ -218,7 +218,7 @@ const QPixmap WirelessItem::backgroundPix(const int size) const QPixmap WirelessItem::cachedPix(const QString &key, const int size) { if (m_reloadIcon || !m_icons.contains(key)) { - m_icons.insert(key, QIcon::fromTheme(key, QIcon(":/wireless/resources/wireless/" + key + ".svg")).pixmap(size)); + m_icons.insert(key, QIcon::fromTheme(key, QIcon(":/icons/system-trays/network/resources/wireless/" + key + ".svg")).pixmap(size)); } return m_icons.value(key); diff --git a/plugins/system-tray/system-trays/network/item/wirelesstraywidget.cpp b/plugins/system-tray/system-trays/network/item/wirelesstraywidget.cpp index 709b42330..566519424 100644 --- a/plugins/system-tray/system-trays/network/item/wirelesstraywidget.cpp +++ b/plugins/system-tray/system-trays/network/item/wirelesstraywidget.cpp @@ -114,22 +114,12 @@ void WirelessTrayWidget::updateIcon() update(); } -void WirelessTrayWidget::sendClick(uint8_t mouseButton, int x, int y) -{ - -} - const QImage WirelessTrayWidget::trayImage() { return m_pixmap.toImage(); } -QWidget *WirelessTrayWidget::itemApplet() -{ - return m_wirelessApplet; -} - -QWidget *WirelessTrayWidget::itemTips() +QWidget *WirelessTrayWidget::trayTipsWidget() { const NetworkDevice::DeviceStatus stat = m_device->status(); @@ -151,6 +141,11 @@ QWidget *WirelessTrayWidget::itemTips() return m_wirelessPopup; } +QWidget *WirelessTrayWidget::trayPopupApplet() +{ + return m_wirelessApplet; +} + void WirelessTrayWidget::onNeedSecrets(const QString &info) { m_APList->onNeedSecrets(info); @@ -199,7 +194,7 @@ void WirelessTrayWidget::resizeEvent(QResizeEvent *e) const QPixmap WirelessTrayWidget::cachedPix(const QString &key, const int size) { if (m_reloadIcon || !m_icons.contains(key)) { - m_icons.insert(key, QIcon::fromTheme(key, QIcon(":/wireless/resources/wireless/" + key + ".svg")).pixmap(size)); + m_icons.insert(key, QIcon::fromTheme(key, QIcon(":/icons/system-trays/network/resources/wireless/" + key + ".svg")).pixmap(size)); } return m_icons.value(key); diff --git a/plugins/system-tray/system-trays/network/item/wirelesstraywidget.h b/plugins/system-tray/system-trays/network/item/wirelesstraywidget.h index 428c906dd..6db03102c 100644 --- a/plugins/system-tray/system-trays/network/item/wirelesstraywidget.h +++ b/plugins/system-tray/system-trays/network/item/wirelesstraywidget.h @@ -44,11 +44,10 @@ public: public: void setActive(const bool active) Q_DECL_OVERRIDE; void updateIcon() Q_DECL_OVERRIDE; - void sendClick(uint8_t mouseButton, int x, int y) Q_DECL_OVERRIDE; const QImage trayImage() Q_DECL_OVERRIDE; - QWidget *itemApplet(); - QWidget *itemTips(); + QWidget *trayTipsWidget() Q_DECL_OVERRIDE; + QWidget *trayPopupApplet() Q_DECL_OVERRIDE; public Q_SLOTS: void onNeedSecrets(const QString &info); diff --git a/plugins/system-tray/system-trays/shutdown/powertraywidget.cpp b/plugins/system-tray/system-trays/shutdown/powertraywidget.cpp index 8a9e9f44d..b11827a20 100644 --- a/plugins/system-tray/system-trays/shutdown/powertraywidget.cpp +++ b/plugins/system-tray/system-trays/shutdown/powertraywidget.cpp @@ -25,10 +25,16 @@ #include #include -PowerTrayWidget::PowerTrayWidget(AbstractTrayWidget *parent) - : AbstractTrayWidget(parent), - m_powerInter(new DBusPower(this)) +#define BATTERY_DISCHARED 2 +#define BATTERY_FULL 4 + +PowerTrayWidget::PowerTrayWidget(QWidget *parent) + : AbstractSystemTrayWidget(parent), + m_powerInter(new DBusPower(this)), + m_tipsLabel(new TipsWidget) { + m_tipsLabel->setVisible(false); + connect(m_powerInter, &DBusPower::BatteryPercentageChanged, this, &PowerTrayWidget::updateIcon); connect(m_powerInter, &DBusPower::BatteryStateChanged, this, &PowerTrayWidget::updateIcon); connect(m_powerInter, &DBusPower::OnBatteryChanged, this, &PowerTrayWidget::updateIcon); @@ -73,14 +79,42 @@ void PowerTrayWidget::updateIcon() update(); } -void PowerTrayWidget::sendClick(uint8_t mouseButton, int x, int y) -{ - -} - const QImage PowerTrayWidget::trayImage() { - m_pixmap.toImage(); + return m_pixmap.toImage(); +} + +QWidget *PowerTrayWidget::trayTipsWidget() +{ + const BatteryPercentageMap data = m_powerInter->batteryPercentage(); + + if (data.isEmpty()) + { + m_tipsLabel->setText(tr("Shut down")); + return m_tipsLabel; + } + + const uint percentage = qMin(100.0, qMax(0.0, data.value("Display"))); + const QString value = QString("%1%").arg(std::round(percentage)); + const bool charging = !m_powerInter->onBattery(); + if (!charging) + m_tipsLabel->setText(tr("Remaining Capacity %1").arg(value)); + else + { + const int batteryState = m_powerInter->batteryState()["Display"]; + + if (batteryState == BATTERY_FULL || percentage == 100.) + m_tipsLabel->setText(tr("Charged %1").arg(value)); + else + m_tipsLabel->setText(tr("Charging %1").arg(value)); + } + + return m_tipsLabel; +} + +const QString PowerTrayWidget::trayClickCommand() +{ + return QString("dbus-send --print-reply --dest=com.deepin.dde.ControlCenter /com/deepin/dde/ControlCenter com.deepin.dde.ControlCenter.ShowModule \"string:power\""); } QSize PowerTrayWidget::sizeHint() const diff --git a/plugins/system-tray/system-trays/shutdown/powertraywidget.h b/plugins/system-tray/system-trays/shutdown/powertraywidget.h index 3ba618da4..a03e9cd62 100644 --- a/plugins/system-tray/system-trays/shutdown/powertraywidget.h +++ b/plugins/system-tray/system-trays/shutdown/powertraywidget.h @@ -22,30 +22,34 @@ #ifndef POWERTRAYWIDGET_H #define POWERTRAYWIDGET_H -#include "abstracttraywidget.h" +#include "../abstractsystemtraywidget.h" +#include "../widgets/tipswidget.h" #include "dbus/dbuspower.h" #include -class PowerTrayWidget : public AbstractTrayWidget +class PowerTrayWidget : public AbstractSystemTrayWidget { Q_OBJECT public: - explicit PowerTrayWidget(AbstractTrayWidget *parent = nullptr); + explicit PowerTrayWidget(QWidget *parent = nullptr); public: void setActive(const bool active) Q_DECL_OVERRIDE; void updateIcon() Q_DECL_OVERRIDE; - void sendClick(uint8_t mouseButton, int x, int y) Q_DECL_OVERRIDE; const QImage trayImage() Q_DECL_OVERRIDE; + QWidget *trayTipsWidget() Q_DECL_OVERRIDE; + const QString trayClickCommand() Q_DECL_OVERRIDE; + protected: QSize sizeHint() const Q_DECL_OVERRIDE; void paintEvent(QPaintEvent *e) Q_DECL_OVERRIDE; private: DBusPower *m_powerInter; + TipsWidget *m_tipsLabel; QPixmap m_pixmap; }; diff --git a/plugins/system-tray/system-trays/shutdown/shutdowntraywidget.cpp b/plugins/system-tray/system-trays/shutdown/shutdowntraywidget.cpp index 8f6d2d657..f388d56c3 100644 --- a/plugins/system-tray/system-trays/shutdown/shutdowntraywidget.cpp +++ b/plugins/system-tray/system-trays/shutdown/shutdowntraywidget.cpp @@ -5,9 +5,13 @@ #include #include -ShutdownTrayWidget::ShutdownTrayWidget(AbstractTrayWidget *parent) - : AbstractTrayWidget(parent) +ShutdownTrayWidget::ShutdownTrayWidget(QWidget *parent) + : AbstractSystemTrayWidget(parent), + m_tipsLabel(new TipsWidget) { + m_tipsLabel->setText(tr("Shut down")); + m_tipsLabel->setVisible(false); + updateIcon(); } @@ -36,16 +40,21 @@ void ShutdownTrayWidget::updateIcon() update(); } -void ShutdownTrayWidget::sendClick(uint8_t mouseButton, int x, int y) -{ - -} - const QImage ShutdownTrayWidget::trayImage() { return m_pixmap.toImage(); } +QWidget *ShutdownTrayWidget::trayTipsWidget() +{ + return m_tipsLabel; +} + +const QString ShutdownTrayWidget::trayClickCommand() +{ + return QString("dbus-send --print-reply --dest=com.deepin.dde.shutdownFront /com/deepin/dde/shutdownFront com.deepin.dde.shutdownFront.Show"); +} + QSize ShutdownTrayWidget::sizeHint() const { return QSize(26, 26); diff --git a/plugins/system-tray/system-trays/shutdown/shutdowntraywidget.h b/plugins/system-tray/system-trays/shutdown/shutdowntraywidget.h index 20273d67f..040f66bf3 100644 --- a/plugins/system-tray/system-trays/shutdown/shutdowntraywidget.h +++ b/plugins/system-tray/system-trays/shutdown/shutdowntraywidget.h @@ -1,29 +1,34 @@ #ifndef SHUTDOWNTRAYWIDGET_H #define SHUTDOWNTRAYWIDGET_H -#include "abstracttraywidget.h" +#include "../abstractsystemtraywidget.h" +#include "../widgets/tipswidget.h" #include #include -class ShutdownTrayWidget : public AbstractTrayWidget +class ShutdownTrayWidget : public AbstractSystemTrayWidget { Q_OBJECT public: - explicit ShutdownTrayWidget(AbstractTrayWidget *parent = nullptr); + explicit ShutdownTrayWidget(QWidget *parent = nullptr); public: void setActive(const bool active) Q_DECL_OVERRIDE; void updateIcon() Q_DECL_OVERRIDE; - void sendClick(uint8_t mouseButton, int x, int y) Q_DECL_OVERRIDE; const QImage trayImage() Q_DECL_OVERRIDE; + QWidget *trayTipsWidget() Q_DECL_OVERRIDE; + const QString trayClickCommand() Q_DECL_OVERRIDE; + protected: QSize sizeHint() const Q_DECL_OVERRIDE; void paintEvent(QPaintEvent *e) Q_DECL_OVERRIDE; private: + TipsWidget *m_tipsLabel; + QPixmap m_pixmap; }; diff --git a/plugins/system-tray/system-trays/sound/componments/volumeslider.cpp b/plugins/system-tray/system-trays/sound/componments/volumeslider.cpp index 6e265e5ae..5dfa75399 100644 --- a/plugins/system-tray/system-trays/sound/componments/volumeslider.cpp +++ b/plugins/system-tray/system-trays/sound/componments/volumeslider.cpp @@ -43,7 +43,7 @@ VolumeSlider::VolumeSlider(QWidget *parent) // "background:url(:/image/image/slider_bg.png) 0 2 0 2 stretch;" "}" "QSlider::handle{" - "background:url(:/slider_handle.svg) no-repeat;" + "background:url(:/icons/system-trays/sound/resources/slider_handle.svg) no-repeat;" "width:22px;" "height:22px;" "margin:-9px -14px -11px -14px;" diff --git a/plugins/system-tray/system-trays/sound/sinkinputwidget.cpp b/plugins/system-tray/system-trays/sound/sinkinputwidget.cpp index 1db1f1acd..ca843fe24 100644 --- a/plugins/system-tray/system-trays/sound/sinkinputwidget.cpp +++ b/plugins/system-tray/system-trays/sound/sinkinputwidget.cpp @@ -88,7 +88,7 @@ void SinkInputWidget::setMuteIcon() { if (m_inputInter->mute()) { const auto ratio = devicePixelRatioF(); - QPixmap muteIcon = DHiDPIHelper::loadNxPixmap(":/audio-volume-muted-symbolic.svg"); + QPixmap muteIcon = DHiDPIHelper::loadNxPixmap(":/icons/system-trays/sound/resources/audio-volume-muted-symbolic.svg"); QPixmap appIconSource(getIconFromTheme(m_inputInter->icon(), QSize(24, 24))); QPixmap temp(appIconSource.size()); diff --git a/plugins/system-tray/system-trays/sound/soundapplet.cpp b/plugins/system-tray/system-trays/sound/soundapplet.cpp index a1ca23e86..1447f7d19 100644 --- a/plugins/system-tray/system-trays/sound/soundapplet.cpp +++ b/plugins/system-tray/system-trays/sound/soundapplet.cpp @@ -23,7 +23,7 @@ #include "sinkinputwidget.h" #include "componments/horizontalseparator.h" #include "../widgets/tipswidget.h" -#include "../../frame/util/utils.h" +#include "util/utils.h" #include #include @@ -160,7 +160,7 @@ void SoundApplet::onVolumeChanged() else volumeString = "low"; - const QString &iconName = QString(":/audio-volume-%1-symbolic.svg").arg(volumeString); + const QString &iconName = QString(":/icons/system-trays/sound/resources/audio-volume-%1-symbolic.svg").arg(volumeString); QPixmap pix = Utils::renderSVG(iconName, QSize(24, 24)); m_volumeBtn->setPixmap(pix); diff --git a/plugins/system-tray/system-trays/sound/soundtraywidget.cpp b/plugins/system-tray/system-trays/sound/soundtraywidget.cpp index 2a46d2082..34e516e95 100644 --- a/plugins/system-tray/system-trays/sound/soundtraywidget.cpp +++ b/plugins/system-tray/system-trays/sound/soundtraywidget.cpp @@ -16,8 +16,8 @@ DWIDGET_USE_NAMESPACE -SoundTrayWidget::SoundTrayWidget(AbstractTrayWidget *parent) - : AbstractTrayWidget(parent), +SoundTrayWidget::SoundTrayWidget(QWidget *parent) + : AbstractSystemTrayWidget(parent), m_tipsLabel(new TipsWidget(this)), m_applet(new SoundApplet(this)), m_sinkInter(nullptr) @@ -68,17 +68,12 @@ void SoundTrayWidget::updateIcon() update(); } -void SoundTrayWidget::sendClick(uint8_t, int, int) -{ - -} - const QImage SoundTrayWidget::trayImage() { return m_iconPixmap.toImage(); } -QWidget *SoundTrayWidget::tipsWidget() +QWidget *SoundTrayWidget::trayTipsWidget() { refreshTips(true); @@ -88,7 +83,7 @@ QWidget *SoundTrayWidget::tipsWidget() return m_tipsLabel; } -QWidget *SoundTrayWidget::popupApplet() +QWidget *SoundTrayWidget::trayPopupApplet() { return m_applet; } diff --git a/plugins/system-tray/system-trays/sound/soundtraywidget.h b/plugins/system-tray/system-trays/sound/soundtraywidget.h index 638a48977..e17a58bdb 100644 --- a/plugins/system-tray/system-trays/sound/soundtraywidget.h +++ b/plugins/system-tray/system-trays/sound/soundtraywidget.h @@ -1,25 +1,24 @@ #ifndef SOUNDTRAYWIDGET_H #define SOUNDTRAYWIDGET_H -#include "abstracttraywidget.h" +#include "../abstractsystemtraywidget.h" #include "soundapplet.h" #include "dbus/dbussink.h" #include class TipsWidget; -class SoundTrayWidget : public AbstractTrayWidget +class SoundTrayWidget : public AbstractSystemTrayWidget { public: - SoundTrayWidget(AbstractTrayWidget *parent = nullptr); + SoundTrayWidget(QWidget *parent = nullptr); void setActive(const bool active) Q_DECL_OVERRIDE; void updateIcon() Q_DECL_OVERRIDE; - void sendClick(uint8_t, int, int) Q_DECL_OVERRIDE; const QImage trayImage() Q_DECL_OVERRIDE; - QWidget *tipsWidget(); - QWidget *popupApplet(); + QWidget *trayTipsWidget() Q_DECL_OVERRIDE; + QWidget *trayPopupApplet() Q_DECL_OVERRIDE; const QString contextMenu() const; void invokeMenuItem(const QString menuId, const bool checked);