mirror of
https://github.com/linuxdeepin/dde-dock.git
synced 2025-06-03 00:15:21 +00:00
refactor: handle click event of system trays
Change-Id: I31b9ecf03e4b9937fa19a3209f5e64e6219b2327
This commit is contained in:
parent
11d97f206e
commit
67635df6fd
Notes:
gerrit
2018-10-25 16:55:58 +08:00
Verified+1: <jenkins@deepin.com> Code-Review+2: listenerri <listenerri@gmail.com> Submitted-by: listenerri <listenerri@gmail.com> Submitted-at: Thu, 25 Oct 2018 16:55:58 +0800 Reviewed-on: https://cr.deepin.io/39196 Project: dde/dde-dock Branch: refs/heads/master
@ -28,6 +28,7 @@
|
||||
#include <QPluginLoader>
|
||||
#include <QList>
|
||||
#include <QMap>
|
||||
#include <QDBusConnectionInterface>
|
||||
|
||||
class DockItemController;
|
||||
class PluginsItemInterface;
|
||||
|
@ -23,7 +23,7 @@
|
||||
|
||||
typedef QMap<QString, double> BrightnessMap;
|
||||
|
||||
Q_DECLARE_METATYPE(BrightnessMap)
|
||||
//Q_DECLARE_METATYPE(BrightnessMap)
|
||||
|
||||
struct DisplayRect{
|
||||
qint16 x;
|
||||
|
@ -27,6 +27,7 @@
|
||||
#include <QProcess>
|
||||
#include <QMouseEvent>
|
||||
#include <DDBusSender>
|
||||
#include <QApplication>
|
||||
|
||||
DCORE_USE_NAMESPACE
|
||||
|
||||
|
@ -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);
|
||||
|
@ -22,8 +22,6 @@
|
||||
#ifndef DOCKPOPUPWINDOW_H
|
||||
#define DOCKPOPUPWINDOW_H
|
||||
|
||||
#include "dbus/dbusdisplay.h"
|
||||
|
||||
#include <darrowrectangle.h>
|
||||
#include <dregionmonitor.h>
|
||||
#include <DWindowManagerHelper>
|
||||
@ -67,7 +65,6 @@ private:
|
||||
QTimer *m_acceptDelayTimer;
|
||||
|
||||
DRegionMonitor *m_regionInter;
|
||||
DBusDisplay *m_displayInter;
|
||||
DWindowManagerHelper *m_wmHelper;
|
||||
};
|
||||
|
||||
|
@ -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}
|
||||
|
@ -25,8 +25,8 @@
|
||||
#include <QMouseEvent>
|
||||
#include <QDebug>
|
||||
|
||||
AbstractTrayWidget::AbstractTrayWidget(QWidget *parent, Qt::WindowFlags f):
|
||||
QWidget(parent, f)
|
||||
AbstractTrayWidget::AbstractTrayWidget(QWidget *parent, Qt::WindowFlags f)
|
||||
: QWidget(parent, f)
|
||||
{
|
||||
|
||||
}
|
||||
|
@ -20,7 +20,7 @@
|
||||
*/
|
||||
|
||||
#include "snitraywidget.h"
|
||||
#include "../frame/util/themeappicon.h"
|
||||
#include "util/themeappicon.h"
|
||||
|
||||
#include <QPainter>
|
||||
#include <QApplication>
|
||||
@ -100,7 +100,7 @@ void SNITrayWidget::sendClick(uint8_t mouseButton, int x, int y)
|
||||
break;
|
||||
default:
|
||||
qDebug() << "unknown mouse button key";
|
||||
break;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -6,5 +6,117 @@
|
||||
<file>resources/arrow_right_dark.svg</file>
|
||||
<file>resources/arrow_up_light.svg</file>
|
||||
<file>system-trays/shutdown/resources/icons/normal.svg</file>
|
||||
<file>system-trays/sound/resources/audio-volume-high-symbolic.svg</file>
|
||||
<file>system-trays/sound/resources/audio-volume-medium-symbolic.svg</file>
|
||||
<file>system-trays/sound/resources/slider_handle.svg</file>
|
||||
<file>system-trays/sound/resources/audio-volume-low-symbolic.svg</file>
|
||||
<file>system-trays/sound/resources/audio-volume-muted-symbolic.svg</file>
|
||||
<file>system-trays/network/resources/wired/network-wired-symbolic-connecting4.svg</file>
|
||||
<file>system-trays/network/resources/wired/network-wired-symbolic-connecting3.svg</file>
|
||||
<file>system-trays/network/resources/wired/network-wired-symbolic-connecting2.svg</file>
|
||||
<file>system-trays/network/resources/wired/network-wired-symbolic-connecting5.svg</file>
|
||||
<file>system-trays/network/resources/wired/network-wired-symbolic-connecting1.svg</file>
|
||||
<file>system-trays/network/resources/wireless/disconnect.svg</file>
|
||||
<file>system-trays/network/resources/wireless/wireless-60-symbolic.svg</file>
|
||||
<file>system-trays/network/resources/wireless/refresh_normal.svg</file>
|
||||
<file>system-trays/network/resources/wireless/wireless-0-symbolic.svg</file>
|
||||
<file>system-trays/network/resources/wireless/disconnect_press.svg</file>
|
||||
<file>system-trays/network/resources/wireless/wireless-20-symbolic.svg</file>
|
||||
<file>system-trays/network/resources/wireless/wireless-40-symbolic.svg</file>
|
||||
<file>system-trays/network/resources/wireless/wireless-80-symbolic.svg</file>
|
||||
<file>system-trays/network/resources/wireless/disconnect_hover.svg</file>
|
||||
<file>system-trays/network/resources/wireless/refresh_hover.svg</file>
|
||||
<file>system-trays/network/resources/wireless/security.svg</file>
|
||||
<file>system-trays/network/resources/wireless/select.svg</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner38.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner21.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner66.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner37.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner02.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner81.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner87.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner44.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner27.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner45.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner82.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner11.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner17.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner18.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner03.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner84.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner64.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner43.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner22.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner52.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner76.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner01.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner19.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner59.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner89.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner67.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner48.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner35.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner31.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner78.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner83.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner20.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner60.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner70.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner29.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner46.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner47.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner80.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner07.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner56.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner55.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner72.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner24.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner41.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner06.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner62.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner69.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner40.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner53.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner16.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner30.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner09.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner34.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner14.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner68.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner90.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner32.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner61.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner12.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner28.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner54.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner50.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner15.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner36.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner73.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner10.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner33.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner75.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner13.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner39.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner88.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner04.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner05.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner86.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner65.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner71.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner74.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner42.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner49.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner08.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner85.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner23.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner51.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner79.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner63.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner26.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner25.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner58.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner77.png</file>
|
||||
<file>system-trays/network/resources/wireless/spinner14/Spinner57.png</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
|
293
plugins/system-tray/system-trays/abstractsystemtraywidget.cpp
Normal file
293
plugins/system-tray/system-trays/abstractsystemtraywidget.cpp
Normal file
@ -0,0 +1,293 @@
|
||||
#include "abstractsystemtraywidget.h"
|
||||
#include "dbus/dbusmenu.h"
|
||||
|
||||
#include <QProcess>
|
||||
#include <QDebug>
|
||||
|
||||
#include <xcb/xproto.h>
|
||||
|
||||
Dock::Position AbstractSystemTrayWidget::DockPosition = Dock::Position::Top;
|
||||
QPointer<DockPopupWindow> 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<QWidget *>(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<QDBusObjectPath> 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<QDBusObjectPath>();
|
||||
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());
|
||||
}
|
61
plugins/system-tray/system-trays/abstractsystemtraywidget.h
Normal file
61
plugins/system-tray/system-trays/abstractsystemtraywidget.h
Normal file
@ -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<QWidget> m_lastPopupWidget;
|
||||
|
||||
QTimer *m_popupTipsDelayTimer;
|
||||
QTimer *m_popupAdjustDelayTimer;
|
||||
|
||||
DBusMenuManager *m_menuManagerInter;
|
||||
|
||||
static Dock::Position DockPosition;
|
||||
static QPointer<DockPopupWindow> PopupWindow;
|
||||
};
|
||||
|
||||
#endif // ABSTRACTSYSTEMTRAYWIDGET_H
|
@ -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())
|
||||
{
|
||||
|
@ -22,13 +22,13 @@
|
||||
#ifndef ABSTRACTNETWORKTRAYWIDGET_H
|
||||
#define ABSTRACTNETWORKTRAYWIDGET_H
|
||||
|
||||
#include "abstracttraywidget.h"
|
||||
#include "../../abstractsystemtraywidget.h"
|
||||
|
||||
#include <QWidget>
|
||||
|
||||
#include <NetworkDevice>
|
||||
|
||||
class AbstractNetworkTrayWidget : public AbstractTrayWidget
|
||||
class AbstractNetworkTrayWidget : public AbstractSystemTrayWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
|
@ -21,7 +21,7 @@
|
||||
|
||||
#include "accesspointwidget.h"
|
||||
#include "horizontalseperator.h"
|
||||
#include "../../frame/util/utils.h"
|
||||
#include "util/utils.h"
|
||||
|
||||
#include <QHBoxLayout>
|
||||
#include <QDebug>
|
||||
@ -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);
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -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<int, int>(1, 91), 2);
|
||||
m_indicator->setPictureSequence(":/icons/system-trays/network/resources/wireless/spinner14/Spinner%1.png", QPair<int, int>(1, 91), 2);
|
||||
m_indicator->setFixedSize(QSize(14, 14) * ratio);
|
||||
m_indicator->setVisible(false);
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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\"";
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -25,10 +25,16 @@
|
||||
#include <QIcon>
|
||||
#include <QMouseEvent>
|
||||
|
||||
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
|
||||
|
@ -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 <QWidget>
|
||||
|
||||
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;
|
||||
};
|
||||
|
@ -5,9 +5,13 @@
|
||||
#include <QMouseEvent>
|
||||
#include <QApplication>
|
||||
|
||||
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);
|
||||
|
@ -1,29 +1,34 @@
|
||||
#ifndef SHUTDOWNTRAYWIDGET_H
|
||||
#define SHUTDOWNTRAYWIDGET_H
|
||||
|
||||
#include "abstracttraywidget.h"
|
||||
#include "../abstractsystemtraywidget.h"
|
||||
#include "../widgets/tipswidget.h"
|
||||
|
||||
#include <QWidget>
|
||||
#include <QTimer>
|
||||
|
||||
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;
|
||||
};
|
||||
|
||||
|
@ -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;"
|
||||
|
@ -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());
|
||||
|
@ -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 <QLabel>
|
||||
#include <QIcon>
|
||||
@ -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);
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -1,25 +1,24 @@
|
||||
#ifndef SOUNDTRAYWIDGET_H
|
||||
#define SOUNDTRAYWIDGET_H
|
||||
|
||||
#include "abstracttraywidget.h"
|
||||
#include "../abstractsystemtraywidget.h"
|
||||
#include "soundapplet.h"
|
||||
#include "dbus/dbussink.h"
|
||||
|
||||
#include <QWidget>
|
||||
|
||||
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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user