From 6224d76f98281f54da5163b33b60ed1d6a9dfb27 Mon Sep 17 00:00:00 2001 From: listenerri Date: Tue, 23 Oct 2018 20:06:46 +0800 Subject: [PATCH] refacotr: merge other plugins to system-tray merge sound, shutdown, network plugins to system-tray Change-Id: Iab7aef4c56d3e1c24b408c323ef03a8276ff43f2 --- plugins/CMakeLists.txt | 6 +- plugins/system-tray/CMakeLists.txt | 6 + plugins/system-tray/abstracttraywidget.h | 2 +- plugins/system-tray/fashiontrayitem.cpp | 5 +- plugins/system-tray/system-tray.qrc | 1 + .../system-trays/abstracttrayloader.cpp | 42 +++ .../system-trays/abstracttrayloader.h | 36 +++ .../system-trays}/network/CMakeLists.txt | 0 .../item/abstractnetworktraywidget.cpp | 83 ++++++ .../network/item/abstractnetworktraywidget.h | 58 +++++ .../network/item/applet/accesspoint.cpp | 0 .../network/item/applet/accesspoint.h | 0 .../network/item/applet/accesspointwidget.cpp | 0 .../network/item/applet/accesspointwidget.h | 0 .../item/applet/devicecontrolwidget.cpp | 0 .../network/item/applet/devicecontrolwidget.h | 0 .../item/applet/horizontalseperator.cpp | 0 .../network/item/applet/horizontalseperator.h | 0 .../network/item/applet/wirelesslist.cpp | 0 .../network/item/applet/wirelesslist.h | 0 .../system-trays}/network/item/deviceitem.cpp | 0 .../system-trays}/network/item/deviceitem.h | 2 +- .../system-trays}/network/item/wireditem.cpp | 2 +- .../system-trays}/network/item/wireditem.h | 0 .../network/item/wiredtraywidget.cpp | 148 +++++++++++ .../network/item/wiredtraywidget.h | 61 +++++ .../network/item/wirelessitem.cpp | 2 +- .../system-trays}/network/item/wirelessitem.h | 0 .../network/item/wirelesstraywidget.cpp | 240 ++++++++++++++++++ .../network/item/wirelesstraywidget.h | 94 +++++++ .../system-trays}/network/network.json | 0 .../system-trays}/network/network.qrc | 0 .../system-trays}/network/networkplugin.cpp | 0 .../system-trays}/network/networkplugin.h | 4 +- .../network/networktrayloader.cpp | 153 +++++++++++ .../system-trays/network/networktrayloader.h | 36 +++ .../network-wired-symbolic-connecting1.svg | 0 .../network-wired-symbolic-connecting2.svg | 0 .../network-wired-symbolic-connecting3.svg | 0 .../network-wired-symbolic-connecting4.svg | 0 .../network-wired-symbolic-connecting5.svg | 0 .../network/resources/wireless/disconnect.svg | 0 .../resources/wireless/disconnect_hover.svg | 0 .../resources/wireless/disconnect_press.svg | 0 .../resources/wireless/refresh_hover.svg | 0 .../resources/wireless/refresh_normal.svg | 0 .../resources/wireless/refresh_press.svg | 0 .../network/resources/wireless/security.svg | 0 .../network/resources/wireless/select.svg | 0 .../wireless/spinner14/Spinner01.png | Bin .../wireless/spinner14/Spinner02.png | Bin .../wireless/spinner14/Spinner03.png | Bin .../wireless/spinner14/Spinner04.png | Bin .../wireless/spinner14/Spinner05.png | Bin .../wireless/spinner14/Spinner06.png | Bin .../wireless/spinner14/Spinner07.png | Bin .../wireless/spinner14/Spinner08.png | Bin .../wireless/spinner14/Spinner09.png | Bin .../wireless/spinner14/Spinner10.png | Bin .../wireless/spinner14/Spinner11.png | Bin .../wireless/spinner14/Spinner12.png | Bin .../wireless/spinner14/Spinner13.png | Bin .../wireless/spinner14/Spinner14.png | Bin .../wireless/spinner14/Spinner15.png | Bin .../wireless/spinner14/Spinner16.png | Bin .../wireless/spinner14/Spinner17.png | Bin .../wireless/spinner14/Spinner18.png | Bin .../wireless/spinner14/Spinner19.png | Bin .../wireless/spinner14/Spinner20.png | Bin .../wireless/spinner14/Spinner21.png | Bin .../wireless/spinner14/Spinner22.png | Bin .../wireless/spinner14/Spinner23.png | Bin .../wireless/spinner14/Spinner24.png | Bin .../wireless/spinner14/Spinner25.png | Bin .../wireless/spinner14/Spinner26.png | Bin .../wireless/spinner14/Spinner27.png | Bin .../wireless/spinner14/Spinner28.png | Bin .../wireless/spinner14/Spinner29.png | Bin .../wireless/spinner14/Spinner30.png | Bin .../wireless/spinner14/Spinner31.png | Bin .../wireless/spinner14/Spinner32.png | Bin .../wireless/spinner14/Spinner33.png | Bin .../wireless/spinner14/Spinner34.png | Bin .../wireless/spinner14/Spinner35.png | Bin .../wireless/spinner14/Spinner36.png | Bin .../wireless/spinner14/Spinner37.png | Bin .../wireless/spinner14/Spinner38.png | Bin .../wireless/spinner14/Spinner39.png | Bin .../wireless/spinner14/Spinner40.png | Bin .../wireless/spinner14/Spinner41.png | Bin .../wireless/spinner14/Spinner42.png | Bin .../wireless/spinner14/Spinner43.png | Bin .../wireless/spinner14/Spinner44.png | Bin .../wireless/spinner14/Spinner45.png | Bin .../wireless/spinner14/Spinner46.png | Bin .../wireless/spinner14/Spinner47.png | Bin .../wireless/spinner14/Spinner48.png | Bin .../wireless/spinner14/Spinner49.png | Bin .../wireless/spinner14/Spinner50.png | Bin .../wireless/spinner14/Spinner51.png | Bin .../wireless/spinner14/Spinner52.png | Bin .../wireless/spinner14/Spinner53.png | Bin .../wireless/spinner14/Spinner54.png | Bin .../wireless/spinner14/Spinner55.png | Bin .../wireless/spinner14/Spinner56.png | Bin .../wireless/spinner14/Spinner57.png | Bin .../wireless/spinner14/Spinner58.png | Bin .../wireless/spinner14/Spinner59.png | Bin .../wireless/spinner14/Spinner60.png | Bin .../wireless/spinner14/Spinner61.png | Bin .../wireless/spinner14/Spinner62.png | Bin .../wireless/spinner14/Spinner63.png | Bin .../wireless/spinner14/Spinner64.png | Bin .../wireless/spinner14/Spinner65.png | Bin .../wireless/spinner14/Spinner66.png | Bin .../wireless/spinner14/Spinner67.png | Bin .../wireless/spinner14/Spinner68.png | Bin .../wireless/spinner14/Spinner69.png | Bin .../wireless/spinner14/Spinner70.png | Bin .../wireless/spinner14/Spinner71.png | Bin .../wireless/spinner14/Spinner72.png | Bin .../wireless/spinner14/Spinner73.png | Bin .../wireless/spinner14/Spinner74.png | Bin .../wireless/spinner14/Spinner75.png | Bin .../wireless/spinner14/Spinner76.png | Bin .../wireless/spinner14/Spinner77.png | Bin .../wireless/spinner14/Spinner78.png | Bin .../wireless/spinner14/Spinner79.png | Bin .../wireless/spinner14/Spinner80.png | Bin .../wireless/spinner14/Spinner81.png | Bin .../wireless/spinner14/Spinner82.png | Bin .../wireless/spinner14/Spinner83.png | Bin .../wireless/spinner14/Spinner84.png | Bin .../wireless/spinner14/Spinner85.png | Bin .../wireless/spinner14/Spinner86.png | Bin .../wireless/spinner14/Spinner87.png | Bin .../wireless/spinner14/Spinner88.png | Bin .../wireless/spinner14/Spinner89.png | Bin .../wireless/spinner14/Spinner90.png | Bin .../wireless/wireless-0-symbolic.svg | 0 .../network/resources/wireless/wireless-0.svg | 0 .../wireless/wireless-20-symbolic.svg | 0 .../resources/wireless/wireless-20.svg | 0 .../wireless/wireless-40-symbolic.svg | 0 .../resources/wireless/wireless-40.svg | 0 .../wireless/wireless-60-symbolic.svg | 0 .../resources/wireless/wireless-60.svg | 0 .../wireless/wireless-80-symbolic.svg | 0 .../resources/wireless/wireless-80.svg | 0 .../wireless/wireless-background.svg | 0 .../wireless/wireless-disconnect-symbolic.svg | 0 .../wireless/wireless-disconnect.svg | 0 .../system-trays}/network/util/imageutil.cpp | 0 .../system-trays}/network/util/imageutil.h | 0 .../system-trays}/shutdown/CMakeLists.txt | 0 .../shutdown/dbus/com.deepin.daemon.Power.xml | 0 .../shutdown/dbus/dbusaccount.cpp | 0 .../system-trays}/shutdown/dbus/dbusaccount.h | 0 .../system-trays}/shutdown/dbus/dbuspower.cpp | 0 .../system-trays}/shutdown/dbus/dbuspower.h | 0 .../system-trays}/shutdown/pluginwidget.cpp | 0 .../system-trays}/shutdown/pluginwidget.h | 0 .../shutdown/powerstatuswidget.cpp | 0 .../shutdown/powerstatuswidget.h | 0 .../system-trays/shutdown/powertrayloader.cpp | 18 ++ .../system-trays/shutdown/powertrayloader.h | 22 ++ .../system-trays/shutdown/powertraywidget.cpp | 99 ++++++++ .../system-trays/shutdown/powertraywidget.h | 53 ++++ .../shutdown/resources/icons/battery_0.svg | 0 .../resources/icons/battery_0_plugged.svg | 0 .../shutdown/resources/icons/battery_10.svg | 0 .../resources/icons/battery_10_plugged.svg | 0 .../shutdown/resources/icons/battery_2.svg | 0 .../resources/icons/battery_2_plugged.svg | 0 .../shutdown/resources/icons/battery_4.svg | 0 .../resources/icons/battery_4_plugged.svg | 0 .../shutdown/resources/icons/battery_6.svg | 0 .../resources/icons/battery_6_plugged.svg | 0 .../shutdown/resources/icons/battery_8.svg | 0 .../resources/icons/battery_8_plugged.svg | 0 .../resources/icons/battery_plugged.svg | 0 .../resources/icons/battery_unknow.svg | 0 .../shutdown/resources/icons/fashion.svg | 0 .../shutdown/resources/icons/normal.svg | 0 .../system-trays}/shutdown/shutdown.json | 0 .../system-trays}/shutdown/shutdown.qrc | 0 .../system-trays}/shutdown/shutdownplugin.cpp | 0 .../system-trays}/shutdown/shutdownplugin.h | 4 +- .../shutdown/shutdowntrayloader.cpp | 13 + .../shutdown/shutdowntrayloader.h | 18 ++ .../shutdown/shutdowntraywidget.cpp | 60 +++++ .../shutdown/shutdowntraywidget.h | 30 +++ .../system-trays}/sound/CMakeLists.txt | 0 .../sound/componments/horizontalseparator.cpp | 0 .../sound/componments/horizontalseparator.h | 0 .../sound/componments/volumeslider.cpp | 0 .../sound/componments/volumeslider.h | 0 .../dbus/com.deepin.daemon.Audio.Sink.xml | 0 .../com.deepin.daemon.Audio.SinkInput.xml | 0 .../sound/dbus/com.deepin.daemon.Audio.xml | 0 .../system-trays}/sound/dbus/dbusaudio.cpp | 0 .../system-trays}/sound/dbus/dbusaudio.h | 0 .../system-trays}/sound/dbus/dbussink.cpp | 0 .../system-trays}/sound/dbus/dbussink.h | 0 .../sound/dbus/dbussinkinput.cpp | 0 .../system-trays}/sound/dbus/dbussinkinput.h | 0 .../resources/audio-volume-000-muted.svg | 0 .../sound/resources/audio-volume-000.svg | 0 .../resources/audio-volume-010-muted.svg | 0 .../sound/resources/audio-volume-010.svg | 0 .../resources/audio-volume-020-muted.svg | 0 .../sound/resources/audio-volume-020.svg | 0 .../resources/audio-volume-030-muted.svg | 0 .../sound/resources/audio-volume-030.svg | 0 .../resources/audio-volume-040-muted.svg | 0 .../sound/resources/audio-volume-040.svg | 0 .../resources/audio-volume-050-muted.svg | 0 .../sound/resources/audio-volume-050.svg | 0 .../resources/audio-volume-060-muted.svg | 0 .../sound/resources/audio-volume-060.svg | 0 .../resources/audio-volume-070-muted.svg | 0 .../sound/resources/audio-volume-070.svg | 0 .../resources/audio-volume-080-muted.svg | 0 .../sound/resources/audio-volume-080.svg | 0 .../resources/audio-volume-090-muted.svg | 0 .../sound/resources/audio-volume-090.svg | 0 .../resources/audio-volume-100-muted.svg | 0 .../sound/resources/audio-volume-100.svg | 0 .../resources/audio-volume-high-symbolic.svg | 0 .../resources/audio-volume-low-symbolic.svg | 0 .../audio-volume-medium-symbolic.svg | 0 .../resources/audio-volume-muted-symbolic.svg | 0 .../sound/resources/slider_bg.png | Bin .../sound/resources/slider_handle.svg | 0 .../system-trays}/sound/resources/sound.qrc | 0 .../system-trays}/sound/sinkinputwidget.cpp | 0 .../system-trays}/sound/sinkinputwidget.h | 0 .../system-trays}/sound/sound.json | 0 .../system-trays}/sound/soundapplet.cpp | 0 .../system-trays}/sound/soundapplet.h | 0 .../system-trays}/sound/sounditem.cpp | 0 .../system-trays}/sound/sounditem.h | 0 .../system-trays}/sound/soundplugin.cpp | 0 .../system-trays}/sound/soundplugin.h | 4 +- .../system-trays/sound/soundtrayloader.cpp | 14 + .../system-trays/sound/soundtrayloader.h | 18 ++ .../system-trays/sound/soundtraywidget.cpp | 195 ++++++++++++++ .../system-trays/sound/soundtraywidget.h | 44 ++++ .../system-trays/systemtraysmanager.cpp | 39 +++ .../system-trays/systemtraysmanager.h | 27 ++ plugins/system-tray/systemtrayplugin.cpp | 57 +++-- plugins/system-tray/systemtrayplugin.h | 14 +- 252 files changed, 1663 insertions(+), 47 deletions(-) create mode 100644 plugins/system-tray/system-trays/abstracttrayloader.cpp create mode 100644 plugins/system-tray/system-trays/abstracttrayloader.h rename plugins/{ => system-tray/system-trays}/network/CMakeLists.txt (100%) create mode 100644 plugins/system-tray/system-trays/network/item/abstractnetworktraywidget.cpp create mode 100644 plugins/system-tray/system-trays/network/item/abstractnetworktraywidget.h rename plugins/{ => system-tray/system-trays}/network/item/applet/accesspoint.cpp (100%) rename plugins/{ => system-tray/system-trays}/network/item/applet/accesspoint.h (100%) rename plugins/{ => system-tray/system-trays}/network/item/applet/accesspointwidget.cpp (100%) rename plugins/{ => system-tray/system-trays}/network/item/applet/accesspointwidget.h (100%) rename plugins/{ => system-tray/system-trays}/network/item/applet/devicecontrolwidget.cpp (100%) rename plugins/{ => system-tray/system-trays}/network/item/applet/devicecontrolwidget.h (100%) rename plugins/{ => system-tray/system-trays}/network/item/applet/horizontalseperator.cpp (100%) rename plugins/{ => system-tray/system-trays}/network/item/applet/horizontalseperator.h (100%) rename plugins/{ => system-tray/system-trays}/network/item/applet/wirelesslist.cpp (100%) rename plugins/{ => system-tray/system-trays}/network/item/applet/wirelesslist.h (100%) rename plugins/{ => system-tray/system-trays}/network/item/deviceitem.cpp (100%) rename plugins/{ => system-tray/system-trays}/network/item/deviceitem.h (95%) rename plugins/{ => system-tray/system-trays}/network/item/wireditem.cpp (99%) rename plugins/{ => system-tray/system-trays}/network/item/wireditem.h (100%) create mode 100644 plugins/system-tray/system-trays/network/item/wiredtraywidget.cpp create mode 100644 plugins/system-tray/system-trays/network/item/wiredtraywidget.h rename plugins/{ => system-tray/system-trays}/network/item/wirelessitem.cpp (99%) rename plugins/{ => system-tray/system-trays}/network/item/wirelessitem.h (100%) create mode 100644 plugins/system-tray/system-trays/network/item/wirelesstraywidget.cpp create mode 100644 plugins/system-tray/system-trays/network/item/wirelesstraywidget.h rename plugins/{ => system-tray/system-trays}/network/network.json (100%) rename plugins/{ => system-tray/system-trays}/network/network.qrc (100%) rename plugins/{ => system-tray/system-trays}/network/networkplugin.cpp (100%) rename plugins/{ => system-tray/system-trays}/network/networkplugin.h (94%) create mode 100644 plugins/system-tray/system-trays/network/networktrayloader.cpp create mode 100644 plugins/system-tray/system-trays/network/networktrayloader.h rename plugins/{ => system-tray/system-trays}/network/resources/wired/network-wired-symbolic-connecting1.svg (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wired/network-wired-symbolic-connecting2.svg (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wired/network-wired-symbolic-connecting3.svg (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wired/network-wired-symbolic-connecting4.svg (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wired/network-wired-symbolic-connecting5.svg (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/disconnect.svg (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/disconnect_hover.svg (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/disconnect_press.svg (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/refresh_hover.svg (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/refresh_normal.svg (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/refresh_press.svg (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/security.svg (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/select.svg (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner01.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner02.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner03.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner04.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner05.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner06.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner07.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner08.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner09.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner10.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner11.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner12.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner13.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner14.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner15.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner16.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner17.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner18.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner19.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner20.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner21.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner22.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner23.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner24.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner25.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner26.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner27.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner28.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner29.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner30.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner31.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner32.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner33.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner34.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner35.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner36.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner37.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner38.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner39.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner40.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner41.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner42.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner43.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner44.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner45.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner46.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner47.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner48.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner49.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner50.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner51.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner52.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner53.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner54.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner55.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner56.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner57.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner58.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner59.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner60.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner61.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner62.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner63.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner64.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner65.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner66.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner67.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner68.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner69.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner70.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner71.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner72.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner73.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner74.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner75.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner76.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner77.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner78.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner79.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner80.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner81.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner82.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner83.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner84.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner85.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner86.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner87.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner88.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner89.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/spinner14/Spinner90.png (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/wireless-0-symbolic.svg (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/wireless-0.svg (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/wireless-20-symbolic.svg (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/wireless-20.svg (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/wireless-40-symbolic.svg (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/wireless-40.svg (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/wireless-60-symbolic.svg (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/wireless-60.svg (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/wireless-80-symbolic.svg (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/wireless-80.svg (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/wireless-background.svg (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/wireless-disconnect-symbolic.svg (100%) rename plugins/{ => system-tray/system-trays}/network/resources/wireless/wireless-disconnect.svg (100%) rename plugins/{ => system-tray/system-trays}/network/util/imageutil.cpp (100%) rename plugins/{ => system-tray/system-trays}/network/util/imageutil.h (100%) rename plugins/{ => system-tray/system-trays}/shutdown/CMakeLists.txt (100%) rename plugins/{ => system-tray/system-trays}/shutdown/dbus/com.deepin.daemon.Power.xml (100%) rename plugins/{ => system-tray/system-trays}/shutdown/dbus/dbusaccount.cpp (100%) rename plugins/{ => system-tray/system-trays}/shutdown/dbus/dbusaccount.h (100%) rename plugins/{ => system-tray/system-trays}/shutdown/dbus/dbuspower.cpp (100%) rename plugins/{ => system-tray/system-trays}/shutdown/dbus/dbuspower.h (100%) rename plugins/{ => system-tray/system-trays}/shutdown/pluginwidget.cpp (100%) rename plugins/{ => system-tray/system-trays}/shutdown/pluginwidget.h (100%) rename plugins/{ => system-tray/system-trays}/shutdown/powerstatuswidget.cpp (100%) rename plugins/{ => system-tray/system-trays}/shutdown/powerstatuswidget.h (100%) create mode 100644 plugins/system-tray/system-trays/shutdown/powertrayloader.cpp create mode 100644 plugins/system-tray/system-trays/shutdown/powertrayloader.h create mode 100644 plugins/system-tray/system-trays/shutdown/powertraywidget.cpp create mode 100644 plugins/system-tray/system-trays/shutdown/powertraywidget.h rename plugins/{ => system-tray/system-trays}/shutdown/resources/icons/battery_0.svg (100%) rename plugins/{ => system-tray/system-trays}/shutdown/resources/icons/battery_0_plugged.svg (100%) rename plugins/{ => system-tray/system-trays}/shutdown/resources/icons/battery_10.svg (100%) rename plugins/{ => system-tray/system-trays}/shutdown/resources/icons/battery_10_plugged.svg (100%) rename plugins/{ => system-tray/system-trays}/shutdown/resources/icons/battery_2.svg (100%) rename plugins/{ => system-tray/system-trays}/shutdown/resources/icons/battery_2_plugged.svg (100%) rename plugins/{ => system-tray/system-trays}/shutdown/resources/icons/battery_4.svg (100%) rename plugins/{ => system-tray/system-trays}/shutdown/resources/icons/battery_4_plugged.svg (100%) rename plugins/{ => system-tray/system-trays}/shutdown/resources/icons/battery_6.svg (100%) rename plugins/{ => system-tray/system-trays}/shutdown/resources/icons/battery_6_plugged.svg (100%) rename plugins/{ => system-tray/system-trays}/shutdown/resources/icons/battery_8.svg (100%) rename plugins/{ => system-tray/system-trays}/shutdown/resources/icons/battery_8_plugged.svg (100%) rename plugins/{ => system-tray/system-trays}/shutdown/resources/icons/battery_plugged.svg (100%) rename plugins/{ => system-tray/system-trays}/shutdown/resources/icons/battery_unknow.svg (100%) rename plugins/{ => system-tray/system-trays}/shutdown/resources/icons/fashion.svg (100%) rename plugins/{ => system-tray/system-trays}/shutdown/resources/icons/normal.svg (100%) rename plugins/{ => system-tray/system-trays}/shutdown/shutdown.json (100%) rename plugins/{ => system-tray/system-trays}/shutdown/shutdown.qrc (100%) rename plugins/{ => system-tray/system-trays}/shutdown/shutdownplugin.cpp (100%) rename plugins/{ => system-tray/system-trays}/shutdown/shutdownplugin.h (94%) create mode 100644 plugins/system-tray/system-trays/shutdown/shutdowntrayloader.cpp create mode 100644 plugins/system-tray/system-trays/shutdown/shutdowntrayloader.h create mode 100644 plugins/system-tray/system-trays/shutdown/shutdowntraywidget.cpp create mode 100644 plugins/system-tray/system-trays/shutdown/shutdowntraywidget.h rename plugins/{ => system-tray/system-trays}/sound/CMakeLists.txt (100%) rename plugins/{ => system-tray/system-trays}/sound/componments/horizontalseparator.cpp (100%) rename plugins/{ => system-tray/system-trays}/sound/componments/horizontalseparator.h (100%) rename plugins/{ => system-tray/system-trays}/sound/componments/volumeslider.cpp (100%) rename plugins/{ => system-tray/system-trays}/sound/componments/volumeslider.h (100%) rename plugins/{ => system-tray/system-trays}/sound/dbus/com.deepin.daemon.Audio.Sink.xml (100%) rename plugins/{ => system-tray/system-trays}/sound/dbus/com.deepin.daemon.Audio.SinkInput.xml (100%) rename plugins/{ => system-tray/system-trays}/sound/dbus/com.deepin.daemon.Audio.xml (100%) rename plugins/{ => system-tray/system-trays}/sound/dbus/dbusaudio.cpp (100%) rename plugins/{ => system-tray/system-trays}/sound/dbus/dbusaudio.h (100%) rename plugins/{ => system-tray/system-trays}/sound/dbus/dbussink.cpp (100%) rename plugins/{ => system-tray/system-trays}/sound/dbus/dbussink.h (100%) rename plugins/{ => system-tray/system-trays}/sound/dbus/dbussinkinput.cpp (100%) rename plugins/{ => system-tray/system-trays}/sound/dbus/dbussinkinput.h (100%) rename plugins/{ => system-tray/system-trays}/sound/resources/audio-volume-000-muted.svg (100%) rename plugins/{ => system-tray/system-trays}/sound/resources/audio-volume-000.svg (100%) rename plugins/{ => system-tray/system-trays}/sound/resources/audio-volume-010-muted.svg (100%) rename plugins/{ => system-tray/system-trays}/sound/resources/audio-volume-010.svg (100%) rename plugins/{ => system-tray/system-trays}/sound/resources/audio-volume-020-muted.svg (100%) rename plugins/{ => system-tray/system-trays}/sound/resources/audio-volume-020.svg (100%) rename plugins/{ => system-tray/system-trays}/sound/resources/audio-volume-030-muted.svg (100%) rename plugins/{ => system-tray/system-trays}/sound/resources/audio-volume-030.svg (100%) rename plugins/{ => system-tray/system-trays}/sound/resources/audio-volume-040-muted.svg (100%) rename plugins/{ => system-tray/system-trays}/sound/resources/audio-volume-040.svg (100%) rename plugins/{ => system-tray/system-trays}/sound/resources/audio-volume-050-muted.svg (100%) rename plugins/{ => system-tray/system-trays}/sound/resources/audio-volume-050.svg (100%) rename plugins/{ => system-tray/system-trays}/sound/resources/audio-volume-060-muted.svg (100%) rename plugins/{ => system-tray/system-trays}/sound/resources/audio-volume-060.svg (100%) rename plugins/{ => system-tray/system-trays}/sound/resources/audio-volume-070-muted.svg (100%) rename plugins/{ => system-tray/system-trays}/sound/resources/audio-volume-070.svg (100%) rename plugins/{ => system-tray/system-trays}/sound/resources/audio-volume-080-muted.svg (100%) rename plugins/{ => system-tray/system-trays}/sound/resources/audio-volume-080.svg (100%) rename plugins/{ => system-tray/system-trays}/sound/resources/audio-volume-090-muted.svg (100%) rename plugins/{ => system-tray/system-trays}/sound/resources/audio-volume-090.svg (100%) rename plugins/{ => system-tray/system-trays}/sound/resources/audio-volume-100-muted.svg (100%) rename plugins/{ => system-tray/system-trays}/sound/resources/audio-volume-100.svg (100%) rename plugins/{ => system-tray/system-trays}/sound/resources/audio-volume-high-symbolic.svg (100%) rename plugins/{ => system-tray/system-trays}/sound/resources/audio-volume-low-symbolic.svg (100%) rename plugins/{ => system-tray/system-trays}/sound/resources/audio-volume-medium-symbolic.svg (100%) rename plugins/{ => system-tray/system-trays}/sound/resources/audio-volume-muted-symbolic.svg (100%) rename plugins/{ => system-tray/system-trays}/sound/resources/slider_bg.png (100%) rename plugins/{ => system-tray/system-trays}/sound/resources/slider_handle.svg (100%) rename plugins/{ => system-tray/system-trays}/sound/resources/sound.qrc (100%) rename plugins/{ => system-tray/system-trays}/sound/sinkinputwidget.cpp (100%) rename plugins/{ => system-tray/system-trays}/sound/sinkinputwidget.h (100%) rename plugins/{ => system-tray/system-trays}/sound/sound.json (100%) rename plugins/{ => system-tray/system-trays}/sound/soundapplet.cpp (100%) rename plugins/{ => system-tray/system-trays}/sound/soundapplet.h (100%) rename plugins/{ => system-tray/system-trays}/sound/sounditem.cpp (100%) rename plugins/{ => system-tray/system-trays}/sound/sounditem.h (100%) rename plugins/{ => system-tray/system-trays}/sound/soundplugin.cpp (100%) rename plugins/{ => system-tray/system-trays}/sound/soundplugin.h (93%) create mode 100644 plugins/system-tray/system-trays/sound/soundtrayloader.cpp create mode 100644 plugins/system-tray/system-trays/sound/soundtrayloader.h create mode 100644 plugins/system-tray/system-trays/sound/soundtraywidget.cpp create mode 100644 plugins/system-tray/system-trays/sound/soundtraywidget.h create mode 100644 plugins/system-tray/system-trays/systemtraysmanager.cpp create mode 100644 plugins/system-tray/system-trays/systemtraysmanager.h diff --git a/plugins/CMakeLists.txt b/plugins/CMakeLists.txt index 453c5e027..6567c8458 100644 --- a/plugins/CMakeLists.txt +++ b/plugins/CMakeLists.txt @@ -1,9 +1,9 @@ add_subdirectory("datetime") #add_subdirectory("disk-mount") -add_subdirectory("network") -add_subdirectory("shutdown") -add_subdirectory("sound") +#add_subdirectory("network") +#add_subdirectory("shutdown") +#add_subdirectory("sound") add_subdirectory("system-tray") add_subdirectory("trash") add_subdirectory("keyboard-layout") diff --git a/plugins/system-tray/CMakeLists.txt b/plugins/system-tray/CMakeLists.txt index eb5e15b95..dd97dd728 100644 --- a/plugins/system-tray/CMakeLists.txt +++ b/plugins/system-tray/CMakeLists.txt @@ -15,6 +15,8 @@ find_package(Qt5X11Extras REQUIRED) find_package(DtkWidget REQUIRED) pkg_check_modules(XCB_LIBS REQUIRED xcb-ewmh xcb xcb-image xcb-composite xtst xcb-icccm dbusmenu-qt5) +pkg_check_modules(DDE-Network-Utils REQUIRED dde-network-utils) +pkg_check_modules(DFrameworkDBus REQUIRED dframeworkdbus) add_definitions("${QT_DEFINITIONS} -DQT_PLUGIN") add_library(${PLUGIN_NAME} SHARED ${SRCS} system-tray.qrc) @@ -22,6 +24,8 @@ set_target_properties(${PLUGIN_NAME} PROPERTIES LIBRARY_OUTPUT_DIRECTORY ../) target_include_directories(${PLUGIN_NAME} PUBLIC ${DtkWidget_INCLUDE_DIRS} ${Qt5DBus_INCLUDE_DIRS} ${XCB_LIBS_INCLUDE_DIRS} + ${DDE-Network-Utils_INCLUDE_DIRS} + ${DFrameworkDBus_INCLUDE_DIRS} ../../interfaces) target_link_libraries(${PLUGIN_NAME} PRIVATE ${DtkWidget_LIBRARIES} @@ -30,6 +34,8 @@ target_link_libraries(${PLUGIN_NAME} PRIVATE ${Qt5DBus_LIBRARIES} ${Qt5Svg_LIBRARIES} ${XCB_LIBS_LIBRARIES} + ${DDE-Network-Utils_LIBRARIES} + ${DFrameworkDBus_LIBRARIES} ) install(TARGETS ${PLUGIN_NAME} LIBRARY DESTINATION lib/dde-dock/plugins) diff --git a/plugins/system-tray/abstracttraywidget.h b/plugins/system-tray/abstracttraywidget.h index a4368eb6f..9e946e92c 100644 --- a/plugins/system-tray/abstracttraywidget.h +++ b/plugins/system-tray/abstracttraywidget.h @@ -33,7 +33,7 @@ public: virtual void setActive(const bool active) = 0; virtual void updateIcon() = 0; - virtual void sendClick(uint8_t, int, int) = 0; + virtual void sendClick(uint8_t mouseButton, int x, int y) = 0; virtual const QImage trayImage() = 0; Q_SIGNALS: diff --git a/plugins/system-tray/fashiontrayitem.cpp b/plugins/system-tray/fashiontrayitem.cpp index a63f5d615..afeda4c60 100644 --- a/plugins/system-tray/fashiontrayitem.cpp +++ b/plugins/system-tray/fashiontrayitem.cpp @@ -35,8 +35,9 @@ FashionTrayItem::FashionTrayItem(Dock::Position pos, QWidget *parent) m_trayBoxLayout(new QBoxLayout(QBoxLayout::Direction::LeftToRight, this)), m_leftSpliter(new QLabel(this)), m_rightSpliter(new QLabel(this)), - m_controlWidget(new FashionTrayControlWidget(m_dockPosistion, this)), - m_currentAttentionTray(nullptr) + m_controlWidget(new FashionTrayControlWidget(pos, this)), + m_currentAttentionTray(nullptr), + m_dockPosistion(pos) { m_leftSpliter->setStyleSheet("background-color: rgba(255, 255, 255, 0.1);"); m_rightSpliter->setStyleSheet("background-color: rgba(255, 255, 255, 0.1);"); diff --git a/plugins/system-tray/system-tray.qrc b/plugins/system-tray/system-tray.qrc index a63ceafd1..18a81354e 100644 --- a/plugins/system-tray/system-tray.qrc +++ b/plugins/system-tray/system-tray.qrc @@ -5,5 +5,6 @@ resources/arrow_down_dark.svg resources/arrow_right_dark.svg resources/arrow_up_light.svg + system-trays/shutdown/resources/icons/normal.svg diff --git a/plugins/system-tray/system-trays/abstracttrayloader.cpp b/plugins/system-tray/system-trays/abstracttrayloader.cpp new file mode 100644 index 000000000..db3c0bd16 --- /dev/null +++ b/plugins/system-tray/system-trays/abstracttrayloader.cpp @@ -0,0 +1,42 @@ +#include "abstracttrayloader.h" + +#include + +AbstractTrayLoader::AbstractTrayLoader(const QString &waitService, QObject *parent) + : QObject(parent), + m_dbusDaemonInterface(QDBusConnection::sessionBus().interface()), + m_waitingService(waitService) +{ +} + +bool AbstractTrayLoader::serviceExist() +{ + bool exist = m_dbusDaemonInterface->isServiceRegistered(m_waitingService).value(); + + if (!exist) { + qDebug() << m_waitingService << "daemon has not started"; + } + + return exist; +} + +void AbstractTrayLoader::waitServiceForLoad() +{ + connect(m_dbusDaemonInterface, &QDBusConnectionInterface::serviceOwnerChanged, this, &AbstractTrayLoader::onServiceOwnerChanged, Qt::UniqueConnection); +} + +void AbstractTrayLoader::onServiceOwnerChanged(const QString &name, const QString &oldOwner, const QString &newOwner) +{ + Q_UNUSED(oldOwner); + + if (m_waitingService.isEmpty() || newOwner.isEmpty()) { + return; + } + + if (m_waitingService == name) { + qDebug() << m_waitingService << "daemon started, load tray and disconnect"; + load(); + disconnect(m_dbusDaemonInterface); + m_waitingService = QString(); + } +} diff --git a/plugins/system-tray/system-trays/abstracttrayloader.h b/plugins/system-tray/system-trays/abstracttrayloader.h new file mode 100644 index 000000000..aae3b61bb --- /dev/null +++ b/plugins/system-tray/system-trays/abstracttrayloader.h @@ -0,0 +1,36 @@ +#ifndef ABSTRACTTRAYLOADER_H +#define ABSTRACTTRAYLOADER_H + +#include "abstracttraywidget.h" + +#include +#include + +class AbstractTrayLoader : public QObject +{ + Q_OBJECT +public: + explicit AbstractTrayLoader(const QString &waitService, QObject *parent = nullptr); + +Q_SIGNALS: + void systemTrayAdded(const QString &itemKey, AbstractTrayWidget *trayWidget); + void systemTrayRemoved(const QString &itemKey); + +public Q_SLOTS: + virtual void load() = 0; + +public: + inline bool waitService() { return !m_waitingService.isEmpty(); } + bool serviceExist(); + void waitServiceForLoad(); + +private Q_SLOTS: + void onServiceOwnerChanged(const QString &name, const QString &oldOwner, const QString &newOwner); + +private: + QDBusConnectionInterface *m_dbusDaemonInterface; + + QString m_waitingService; +}; + +#endif // ABSTRACTTRAYLOADER_H diff --git a/plugins/network/CMakeLists.txt b/plugins/system-tray/system-trays/network/CMakeLists.txt similarity index 100% rename from plugins/network/CMakeLists.txt rename to plugins/system-tray/system-trays/network/CMakeLists.txt diff --git a/plugins/system-tray/system-trays/network/item/abstractnetworktraywidget.cpp b/plugins/system-tray/system-trays/network/item/abstractnetworktraywidget.cpp new file mode 100644 index 000000000..c34b8c89c --- /dev/null +++ b/plugins/system-tray/system-trays/network/item/abstractnetworktraywidget.cpp @@ -0,0 +1,83 @@ +/* + * Copyright (C) 2011 ~ 2018 Deepin Technology Co., Ltd. + * + * Author: sbw + * + * Maintainer: sbw + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "abstractnetworktraywidget.h" + +#include +#include + +using namespace dde::network; + +AbstractNetworkTrayWidget::AbstractNetworkTrayWidget(dde::network::NetworkDevice *device, QWidget *parent) + : AbstractTrayWidget(parent), + m_device(device), + m_path(device->path()) +{ +} + +QSize AbstractNetworkTrayWidget::sizeHint() const +{ + return QSize(26, 26); +} + +const QString AbstractNetworkTrayWidget::itemContextMenu() +{ + QList items; + items.reserve(2); + + QMap enable; + enable["itemId"] = "enable"; + if (!m_device->enabled()) + enable["itemText"] = tr("Enable network"); + else + enable["itemText"] = tr("Disable network"); + enable["isActive"] = true; + items.push_back(enable); + + QMap settings; + settings["itemId"] = "settings"; + settings["itemText"] = tr("Network settings"); + settings["isActive"] = true; + items.push_back(settings); + + QMap menu; + menu["items"] = items; + menu["checkableMenu"] = false; + menu["singleCheck"] = false; + + return QJsonDocument::fromVariant(menu).toJson(); +} + +void AbstractNetworkTrayWidget::invokeMenuItem(const QString &menuId) +{ + if (menuId == "settings") + //QProcess::startDetached("dbus-send --print-reply --dest=com.deepin.dde.ControlCenter /com/deepin/dde/ControlCenter com.deepin.dde.ControlCenter.ShowModule \"string:network\""); + DDBusSender() + .service("com.deepin.dde.ControlCenter") + .interface("com.deepin.dde.ControlCenter") + .path("/com/deepin/dde/ControlCenter") + .method("ShowModule") + .arg(QString("network")) + .call(); + + else if (menuId == "enable") + Q_EMIT requestSetDeviceEnable(m_path, !m_device->enabled()); +} diff --git a/plugins/system-tray/system-trays/network/item/abstractnetworktraywidget.h b/plugins/system-tray/system-trays/network/item/abstractnetworktraywidget.h new file mode 100644 index 000000000..7662b89f3 --- /dev/null +++ b/plugins/system-tray/system-trays/network/item/abstractnetworktraywidget.h @@ -0,0 +1,58 @@ +/* + * Copyright (C) 2011 ~ 2018 Deepin Technology Co., Ltd. + * + * Author: sbw + * + * Maintainer: sbw + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifndef ABSTRACTNETWORKTRAYWIDGET_H +#define ABSTRACTNETWORKTRAYWIDGET_H + +#include "abstracttraywidget.h" + +#include + +#include + +class AbstractNetworkTrayWidget : public AbstractTrayWidget +{ + Q_OBJECT + +public: + explicit AbstractNetworkTrayWidget(dde::network::NetworkDevice *device, QWidget *parent = nullptr); + +public: + const QString &path() const { return m_path; } + inline const dde::network::NetworkDevice * device() { return m_device; } + + virtual const QString itemContextMenu(); + virtual void invokeMenuItem(const QString &menuId); + +Q_SIGNALS: + void requestSetDeviceEnable(const QString &path, const bool enable) const; + +protected: + QSize sizeHint() const Q_DECL_OVERRIDE; + +protected: + dde::network::NetworkDevice *m_device; + +private: + QString m_path; +}; + +#endif // ABSTRACTNETWORKTRAYWIDGET_H diff --git a/plugins/network/item/applet/accesspoint.cpp b/plugins/system-tray/system-trays/network/item/applet/accesspoint.cpp similarity index 100% rename from plugins/network/item/applet/accesspoint.cpp rename to plugins/system-tray/system-trays/network/item/applet/accesspoint.cpp diff --git a/plugins/network/item/applet/accesspoint.h b/plugins/system-tray/system-trays/network/item/applet/accesspoint.h similarity index 100% rename from plugins/network/item/applet/accesspoint.h rename to plugins/system-tray/system-trays/network/item/applet/accesspoint.h diff --git a/plugins/network/item/applet/accesspointwidget.cpp b/plugins/system-tray/system-trays/network/item/applet/accesspointwidget.cpp similarity index 100% rename from plugins/network/item/applet/accesspointwidget.cpp rename to plugins/system-tray/system-trays/network/item/applet/accesspointwidget.cpp diff --git a/plugins/network/item/applet/accesspointwidget.h b/plugins/system-tray/system-trays/network/item/applet/accesspointwidget.h similarity index 100% rename from plugins/network/item/applet/accesspointwidget.h rename to plugins/system-tray/system-trays/network/item/applet/accesspointwidget.h diff --git a/plugins/network/item/applet/devicecontrolwidget.cpp b/plugins/system-tray/system-trays/network/item/applet/devicecontrolwidget.cpp similarity index 100% rename from plugins/network/item/applet/devicecontrolwidget.cpp rename to plugins/system-tray/system-trays/network/item/applet/devicecontrolwidget.cpp diff --git a/plugins/network/item/applet/devicecontrolwidget.h b/plugins/system-tray/system-trays/network/item/applet/devicecontrolwidget.h similarity index 100% rename from plugins/network/item/applet/devicecontrolwidget.h rename to plugins/system-tray/system-trays/network/item/applet/devicecontrolwidget.h diff --git a/plugins/network/item/applet/horizontalseperator.cpp b/plugins/system-tray/system-trays/network/item/applet/horizontalseperator.cpp similarity index 100% rename from plugins/network/item/applet/horizontalseperator.cpp rename to plugins/system-tray/system-trays/network/item/applet/horizontalseperator.cpp diff --git a/plugins/network/item/applet/horizontalseperator.h b/plugins/system-tray/system-trays/network/item/applet/horizontalseperator.h similarity index 100% rename from plugins/network/item/applet/horizontalseperator.h rename to plugins/system-tray/system-trays/network/item/applet/horizontalseperator.h diff --git a/plugins/network/item/applet/wirelesslist.cpp b/plugins/system-tray/system-trays/network/item/applet/wirelesslist.cpp similarity index 100% rename from plugins/network/item/applet/wirelesslist.cpp rename to plugins/system-tray/system-trays/network/item/applet/wirelesslist.cpp diff --git a/plugins/network/item/applet/wirelesslist.h b/plugins/system-tray/system-trays/network/item/applet/wirelesslist.h similarity index 100% rename from plugins/network/item/applet/wirelesslist.h rename to plugins/system-tray/system-trays/network/item/applet/wirelesslist.h diff --git a/plugins/network/item/deviceitem.cpp b/plugins/system-tray/system-trays/network/item/deviceitem.cpp similarity index 100% rename from plugins/network/item/deviceitem.cpp rename to plugins/system-tray/system-trays/network/item/deviceitem.cpp diff --git a/plugins/network/item/deviceitem.h b/plugins/system-tray/system-trays/network/item/deviceitem.h similarity index 95% rename from plugins/network/item/deviceitem.h rename to plugins/system-tray/system-trays/network/item/deviceitem.h index 81ba295b2..8c1120081 100644 --- a/plugins/network/item/deviceitem.h +++ b/plugins/system-tray/system-trays/network/item/deviceitem.h @@ -35,7 +35,7 @@ public: const QString &path() const { return m_path; } - const dde::network::NetworkDevice * device() { return m_device; }; + inline const dde::network::NetworkDevice * device() { return m_device; } virtual void refreshIcon() = 0; virtual const QString itemCommand() const; diff --git a/plugins/network/item/wireditem.cpp b/plugins/system-tray/system-trays/network/item/wireditem.cpp similarity index 99% rename from plugins/network/item/wireditem.cpp rename to plugins/system-tray/system-trays/network/item/wireditem.cpp index 6fe30c878..e34dca2f1 100644 --- a/plugins/network/item/wireditem.cpp +++ b/plugins/system-tray/system-trays/network/item/wireditem.cpp @@ -22,7 +22,7 @@ #include "constants.h" #include "wireditem.h" -#include "util/imageutil.h" +#include "../util/imageutil.h" #include "../widgets/tipswidget.h" #include diff --git a/plugins/network/item/wireditem.h b/plugins/system-tray/system-trays/network/item/wireditem.h similarity index 100% rename from plugins/network/item/wireditem.h rename to plugins/system-tray/system-trays/network/item/wireditem.h diff --git a/plugins/system-tray/system-trays/network/item/wiredtraywidget.cpp b/plugins/system-tray/system-trays/network/item/wiredtraywidget.cpp new file mode 100644 index 000000000..a405f5690 --- /dev/null +++ b/plugins/system-tray/system-trays/network/item/wiredtraywidget.cpp @@ -0,0 +1,148 @@ +/* + * Copyright (C) 2011 ~ 2018 Deepin Technology Co., Ltd. + * + * Author: sbw + * + * Maintainer: sbw + * listenerri + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "wiredtraywidget.h" +#include "constants.h" +#include "../util/imageutil.h" +#include "../widgets/tipswidget.h" + +#include +#include +#include +#include + +using namespace dde::network; + +WiredTrayWidget::WiredTrayWidget(WiredDevice *device, QWidget *parent) + : AbstractNetworkTrayWidget(device, parent), + + m_itemTips(new TipsWidget(this)), + m_delayTimer(new QTimer(this)) +{ + m_delayTimer->setSingleShot(false); + m_delayTimer->setInterval(200); + + m_itemTips->setObjectName("wired-" + m_device->path()); + m_itemTips->setVisible(false); + + connect(m_delayTimer, &QTimer::timeout, this, &WiredTrayWidget::updateIcon); + connect(m_device, static_cast(&NetworkDevice::statusChanged), + m_delayTimer, static_cast(&QTimer::start)); +} + +void WiredTrayWidget::setActive(const bool active) +{ + +} + +void WiredTrayWidget::updateIcon() +{ + QString iconName = "network-"; + NetworkDevice::DeviceStatus devState = m_device->status(); + if (devState != NetworkDevice::Activated) + { + if (devState < NetworkDevice::Disconnected) + iconName.append("error"); + else + iconName.append("offline"); + } else { + if (devState >= NetworkDevice::Prepare && devState <= NetworkDevice::Secondaries) { + 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)); + update(); + return; + } + + if (devState == NetworkDevice::Activated) + iconName.append("online"); + else + iconName.append("idle"); + } + + m_delayTimer->stop(); + + iconName.append("-symbolic"); + + const auto ratio = qApp->devicePixelRatio(); + const int size = 16; + m_icon = QIcon::fromTheme(iconName).pixmap(size * ratio, size * ratio); + m_icon.setDevicePixelRatio(ratio); + update(); +} + +void WiredTrayWidget::sendClick(uint8_t mouseButton, int x, int y) +{ + +} + +const QImage WiredTrayWidget::trayImage() +{ + return m_icon.toImage(); +} + +QWidget *WiredTrayWidget::itemTips() +{ + m_itemTips->setText(tr("Unknown")); + + do { + if (m_device->status() != NetworkDevice::Activated) + { + m_itemTips->setText(tr("No Network")); + break; + } + + const QJsonObject info = static_cast(m_device)->activeConnection(); + if (!info.contains("Ip4")) + break; + const QJsonObject ipv4 = info.value("Ip4").toObject(); + if (!ipv4.contains("Address")) + break; + m_itemTips->setText(tr("Wired connection: %1").arg(ipv4.value("Address").toString())); + } while (false); + + return m_itemTips; +} + +const QString WiredTrayWidget::itemCommand() const +{ + return "dbus-send --print-reply --dest=com.deepin.dde.ControlCenter /com/deepin/dde/ControlCenter com.deepin.dde.ControlCenter.ShowModule \"string:network\""; +} + +void WiredTrayWidget::paintEvent(QPaintEvent *e) +{ + QWidget::paintEvent(e); + + QPainter painter(this); + const auto ratio = qApp->devicePixelRatio(); + const int x = rect().center().x() - m_icon.rect().center().x() / ratio; + const int y = rect().center().y() - m_icon.rect().center().y() / ratio; + painter.drawPixmap(x, y, m_icon); +} + +void WiredTrayWidget::resizeEvent(QResizeEvent *e) +{ + AbstractNetworkTrayWidget::resizeEvent(e); + + m_delayTimer->start(); +} diff --git a/plugins/system-tray/system-trays/network/item/wiredtraywidget.h b/plugins/system-tray/system-trays/network/item/wiredtraywidget.h new file mode 100644 index 000000000..afaab24f4 --- /dev/null +++ b/plugins/system-tray/system-trays/network/item/wiredtraywidget.h @@ -0,0 +1,61 @@ +/* + * Copyright (C) 2011 ~ 2018 Deepin Technology Co., Ltd. + * + * Author: sbw + * + * Maintainer: sbw + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifndef WIREDTRAYWIDGET_H +#define WIREDTRAYWIDGET_H + +#include "abstractnetworktraywidget.h" + +#include +#include +#include + +#include + +class TipsWidget; +class WiredTrayWidget : public AbstractNetworkTrayWidget +{ + Q_OBJECT + +public: + explicit WiredTrayWidget(dde::network::WiredDevice *device, 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 *itemTips(); + const QString itemCommand() const; + +protected: + void paintEvent(QPaintEvent *e) Q_DECL_OVERRIDE; + void resizeEvent(QResizeEvent *e) Q_DECL_OVERRIDE; + +private: + QPixmap m_icon; + + TipsWidget *m_itemTips; + QTimer *m_delayTimer; +}; + +#endif // WIREDTRAYWIDGET_H diff --git a/plugins/network/item/wirelessitem.cpp b/plugins/system-tray/system-trays/network/item/wirelessitem.cpp similarity index 99% rename from plugins/network/item/wirelessitem.cpp rename to plugins/system-tray/system-trays/network/item/wirelessitem.cpp index 28f844d03..8be547545 100644 --- a/plugins/network/item/wirelessitem.cpp +++ b/plugins/system-tray/system-trays/network/item/wirelessitem.cpp @@ -20,7 +20,7 @@ */ #include "wirelessitem.h" -#include "util/imageutil.h" +#include "../util/imageutil.h" #include "../widgets/tipswidget.h" #include diff --git a/plugins/network/item/wirelessitem.h b/plugins/system-tray/system-trays/network/item/wirelessitem.h similarity index 100% rename from plugins/network/item/wirelessitem.h rename to plugins/system-tray/system-trays/network/item/wirelessitem.h diff --git a/plugins/system-tray/system-trays/network/item/wirelesstraywidget.cpp b/plugins/system-tray/system-trays/network/item/wirelesstraywidget.cpp new file mode 100644 index 000000000..709b42330 --- /dev/null +++ b/plugins/system-tray/system-trays/network/item/wirelesstraywidget.cpp @@ -0,0 +1,240 @@ +/* + * Copyright (C) 2011 ~ 2018 Deepin Technology Co., Ltd. + * + * Author: sbw + * + * Maintainer: sbw + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "wirelesstraywidget.h" +#include "../util/imageutil.h" +#include "../widgets/tipswidget.h" + +#include +#include +#include +#include + +using namespace dde::network; + +WirelessTrayWidget::WirelessTrayWidget(WirelessDevice *device, QWidget *parent) + : AbstractNetworkTrayWidget(device, parent), + m_refershTimer(new QTimer(this)), + m_wirelessApplet(new QWidget), + m_wirelessPopup(new TipsWidget), + m_APList(nullptr), + m_reloadIcon(false) +{ + m_refershTimer->setSingleShot(false); + m_refershTimer->setInterval(100); + + m_wirelessApplet->setVisible(false); + m_wirelessPopup->setObjectName("wireless-" + m_device->path()); + m_wirelessPopup->setVisible(false); + + connect(m_device, static_cast(&NetworkDevice::statusChanged), m_refershTimer, static_cast(&QTimer::start)); + connect(static_cast(m_device), &WirelessDevice::activeApInfoChanged, m_refershTimer, static_cast(&QTimer::start)); + connect(static_cast(m_device), &WirelessDevice::activeConnectionChanged, m_refershTimer, static_cast(&QTimer::start)); + connect(m_refershTimer, &QTimer::timeout, [=] { + WirelessDevice *dev = static_cast(m_device); + // the status is Activated and activeApInfo is empty if the hotspot status of this wireless device is enabled + if (m_device->status() == NetworkDevice::Activated && dev->activeApInfo().isEmpty() && !dev->hotspotEnabled()) { + Q_EMIT queryActiveConnInfo(); + return; + } + updateIcon(); + }); + + QMetaObject::invokeMethod(this, "init", Qt::QueuedConnection); +} + +WirelessTrayWidget::~WirelessTrayWidget() +{ + m_APList->deleteLater(); + m_APList->controlPanel()->deleteLater(); +} + +void WirelessTrayWidget::setActive(const bool active) +{ + +} + +void WirelessTrayWidget::updateIcon() +{ + QString type; + + const auto state = m_device->status(); + if (state <= NetworkDevice::Disconnected) { + type = "disconnect"; + m_refershTimer->stop(); + } else { + int strength = 0; + if (state == NetworkDevice::Activated) { + const auto &activeApInfo = static_cast(m_device)->activeApInfo(); + if (!activeApInfo.isEmpty()) { + strength = activeApInfo.value("Strength").toInt(); + m_refershTimer->stop(); + } + } else { + strength = QTime::currentTime().msec() / 10 % 100; + if (!m_refershTimer->isActive()) + m_refershTimer->start(); + } + + if (strength == 100) + type = "80"; + else if (strength < 20) + type = "0"; + else + type = QString::number(strength / 10 & ~0x1) + "0"; + } + + const QString key = QString("wireless-%1%2") + .arg(type) + .arg("-symbolic"); + + const auto ratio = qApp->devicePixelRatio(); + m_reloadIcon = true; + m_pixmap = cachedPix(key, 16 * ratio); + m_pixmap.setDevicePixelRatio(ratio); + + 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() +{ + const NetworkDevice::DeviceStatus stat = m_device->status(); + + m_wirelessPopup->setText(tr("No Network")); + + if (stat == NetworkDevice::Activated) + { + const QJsonObject obj = static_cast(m_device)->activeConnectionInfo(); + if (obj.contains("Ip4")) + { + const QJsonObject ip4 = obj["Ip4"].toObject(); + if (ip4.contains("Address")) + { + m_wirelessPopup->setText(tr("Wireless Connection: %1").arg(ip4["Address"].toString())); + } + } + } + + return m_wirelessPopup; +} + +void WirelessTrayWidget::onNeedSecrets(const QString &info) +{ + m_APList->onNeedSecrets(info); +} + +void WirelessTrayWidget::onNeedSecretsFinished(const QString &info0, const QString &info1) +{ + m_APList->onNeedSecretsFinished(info0, info1); +} + +void WirelessTrayWidget::setDeviceInfo(const int index) +{ + m_APList->setDeviceInfo(index); +} + +bool WirelessTrayWidget::eventFilter(QObject *o, QEvent *e) +{ + if (o == m_APList && e->type() == QEvent::Resize) + QMetaObject::invokeMethod(this, "adjustHeight", Qt::QueuedConnection); + if (o == m_APList && e->type() == QEvent::Show) + Q_EMIT requestWirelessScan(); + + return false; +} + +void WirelessTrayWidget::paintEvent(QPaintEvent *e) +{ + AbstractNetworkTrayWidget::paintEvent(e); + + const auto ratio = qApp->devicePixelRatio(); + + QPainter painter(this); + painter.drawPixmap(rect().center() - m_pixmap.rect().center() / ratio, m_pixmap); + + if (m_reloadIcon) + m_reloadIcon = false; +} + +void WirelessTrayWidget::resizeEvent(QResizeEvent *e) +{ + AbstractNetworkTrayWidget::resizeEvent(e); + + m_icons.clear(); +} + +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)); + } + + return m_icons.value(key); +} + +void WirelessTrayWidget::init() +{ + m_APList = new WirelessList(static_cast(m_device)); + m_APList->installEventFilter(this); + m_APList->setObjectName("wireless-" + m_device->path()); + + QVBoxLayout *vLayout = new QVBoxLayout; + vLayout->addWidget(m_APList->controlPanel()); + vLayout->addWidget(m_APList); + vLayout->setMargin(0); + vLayout->setSpacing(0); + m_wirelessApplet->setLayout(vLayout); + + connect(m_APList, &WirelessList::requestSetDeviceEnable, this, &WirelessTrayWidget::requestSetDeviceEnable); + connect(m_APList, &WirelessList::requestActiveAP, this, &WirelessTrayWidget::requestActiveAP); + connect(m_APList, &WirelessList::requestDeactiveAP, this, &WirelessTrayWidget::requestDeactiveAP); + connect(m_APList, &WirelessList::feedSecret, this, &WirelessTrayWidget::feedSecret); + connect(m_APList, &WirelessList::cancelSecret, this, &WirelessTrayWidget::cancelSecret); + connect(m_APList, &WirelessList::requestWirelessScan, this, &WirelessTrayWidget::requestWirelessScan); + connect(m_APList, &WirelessList::queryConnectionSession, this, &WirelessTrayWidget::queryConnectionSession); + connect(m_APList, &WirelessList::createApConfig, this, &WirelessTrayWidget::createApConfig); + + QTimer::singleShot(0, this, [=]() { + m_refershTimer->start(); + }); +} + +// called in eventFilter method +void WirelessTrayWidget::adjustHeight() +{ + m_wirelessApplet->setFixedHeight(m_APList->height() + m_APList->controlPanel()->height()); +} + diff --git a/plugins/system-tray/system-trays/network/item/wirelesstraywidget.h b/plugins/system-tray/system-trays/network/item/wirelesstraywidget.h new file mode 100644 index 000000000..428c906dd --- /dev/null +++ b/plugins/system-tray/system-trays/network/item/wirelesstraywidget.h @@ -0,0 +1,94 @@ +/* + * Copyright (C) 2011 ~ 2018 Deepin Technology Co., Ltd. + * + * Author: sbw + * + * Maintainer: sbw + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifndef WIRELESSTRAYWIDGET_H +#define WIRELESSTRAYWIDGET_H + +#include "constants.h" + +#include "abstractnetworktraywidget.h" +#include "applet/wirelesslist.h" + +#include +#include + +#include + +class TipsWidget; +class WirelessTrayWidget : public AbstractNetworkTrayWidget +{ + Q_OBJECT + +public: + explicit WirelessTrayWidget(dde::network::WirelessDevice *device, QWidget *parent = nullptr); + ~WirelessTrayWidget(); + +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(); + +public Q_SLOTS: + void onNeedSecrets(const QString &info); + void onNeedSecretsFinished(const QString &info0, const QString &info1); + // set the device name displayed + // in the top-left corner of the applet + void setDeviceInfo(const int index); + +Q_SIGNALS: + void requestActiveAP(const QString &devPath, const QString &apPath, const QString &uuid) const; + void requestDeactiveAP(const QString &devPath) const; + void feedSecret(const QString &connectionPath, const QString &settingName, const QString &password, const bool autoConnect); + void cancelSecret(const QString &connectionPath, const QString &settingName); + void queryActiveConnInfo(); + void requestWirelessScan(); + void createApConfig(const QString &devPath, const QString &apPath); + void queryConnectionSession( const QString &devPath, const QString &uuid ); + +protected: + bool eventFilter(QObject *o, QEvent *e) Q_DECL_OVERRIDE; + void paintEvent(QPaintEvent *e) Q_DECL_OVERRIDE; + void resizeEvent(QResizeEvent *e) Q_DECL_OVERRIDE; + +private: + const QPixmap cachedPix(const QString &key, const int size); + +private Q_SLOTS: + void init(); + void adjustHeight(); + +private: + QTimer *m_refershTimer; + QWidget *m_wirelessApplet; + TipsWidget *m_wirelessPopup; + WirelessList *m_APList; + + QHash m_icons; + QPixmap m_pixmap; + + bool m_reloadIcon; +}; + +#endif // WIRELESSTRAYWIDGET_H diff --git a/plugins/network/network.json b/plugins/system-tray/system-trays/network/network.json similarity index 100% rename from plugins/network/network.json rename to plugins/system-tray/system-trays/network/network.json diff --git a/plugins/network/network.qrc b/plugins/system-tray/system-trays/network/network.qrc similarity index 100% rename from plugins/network/network.qrc rename to plugins/system-tray/system-trays/network/network.qrc diff --git a/plugins/network/networkplugin.cpp b/plugins/system-tray/system-trays/network/networkplugin.cpp similarity index 100% rename from plugins/network/networkplugin.cpp rename to plugins/system-tray/system-trays/network/networkplugin.cpp diff --git a/plugins/network/networkplugin.h b/plugins/system-tray/system-trays/network/networkplugin.h similarity index 94% rename from plugins/network/networkplugin.h rename to plugins/system-tray/system-trays/network/networkplugin.h index 6fb785b79..19f0092a4 100644 --- a/plugins/network/networkplugin.h +++ b/plugins/system-tray/system-trays/network/networkplugin.h @@ -32,8 +32,8 @@ class NetworkPlugin : public QObject, PluginsItemInterface { Q_OBJECT - Q_INTERFACES(PluginsItemInterface) - Q_PLUGIN_METADATA(IID "com.deepin.dock.PluginsItemInterface" FILE "network.json") +// Q_INTERFACES(PluginsItemInterface) +// Q_PLUGIN_METADATA(IID "com.deepin.dock.PluginsItemInterface" FILE "network.json") public: explicit NetworkPlugin(QObject *parent = 0); diff --git a/plugins/system-tray/system-trays/network/networktrayloader.cpp b/plugins/system-tray/system-trays/network/networktrayloader.cpp new file mode 100644 index 000000000..697fbde14 --- /dev/null +++ b/plugins/system-tray/system-trays/network/networktrayloader.cpp @@ -0,0 +1,153 @@ +#include "networktrayloader.h" +#include "item/wiredtraywidget.h" +#include "item/wirelesstraywidget.h" + +using namespace dde::network; + +#define NetworkItemKeyPrefix "system-tray-network-" +#define NetworkService "com.deepin.daemon.Network" + +NetworkTrayLoader::NetworkTrayLoader(QObject *parent) + : AbstractTrayLoader(NetworkService, parent), + m_networkModel(nullptr), + m_networkWorker(nullptr), + m_delayRefreshTimer(new QTimer) +{ + m_delayRefreshTimer->setSingleShot(true); + m_delayRefreshTimer->setInterval(2000); + + connect(m_delayRefreshTimer, &QTimer::timeout, this, &NetworkTrayLoader::refreshWiredItemVisible); +} + +void NetworkTrayLoader::load() +{ + m_networkModel = new NetworkModel; + m_networkWorker = new NetworkWorker(m_networkModel); + + connect(m_networkModel, &NetworkModel::deviceListChanged, this, &NetworkTrayLoader::onDeviceListChanged); + + m_networkModel->moveToThread(qApp->thread()); + m_networkWorker->moveToThread(qApp->thread()); + + onDeviceListChanged(m_networkModel->devices()); +} + +AbstractNetworkTrayWidget *NetworkTrayLoader::trayWidgetByPath(const QString &path) +{ + for (auto trayWidget : m_trayWidgetsMap.values()) { + if (trayWidget->path() == path) { + return trayWidget; + } + } + + Q_UNREACHABLE(); + return nullptr; +} + +void NetworkTrayLoader::onDeviceListChanged(const QList devices) +{ + QList mPaths = m_trayWidgetsMap.keys(); + QList newPaths; + + QList wirelessTrayList; + + for (auto device : devices) { + const QString &path = device->path(); + newPaths << path; + // new device + if (!mPaths.contains(path)) { + AbstractNetworkTrayWidget *networkTray = nullptr; + switch (device->type()) { + case NetworkDevice::Wired: + networkTray = new WiredTrayWidget(static_cast(device)); + break; + case NetworkDevice::Wireless: + networkTray = new WirelessTrayWidget(static_cast(device)); + wirelessTrayList.append(static_cast(networkTray)); + + connect(static_cast(networkTray), &WirelessTrayWidget::queryActiveConnInfo, + m_networkWorker, &NetworkWorker::queryActiveConnInfo); + connect(static_cast(networkTray), &WirelessTrayWidget::requestActiveAP, + m_networkWorker, &NetworkWorker::activateAccessPoint); + connect(static_cast(networkTray), &WirelessTrayWidget::requestDeactiveAP, + m_networkWorker, &NetworkWorker::disconnectDevice); + connect(static_cast(networkTray), &WirelessTrayWidget::feedSecret, + m_networkWorker, &NetworkWorker::feedSecret); + connect(static_cast(networkTray), &WirelessTrayWidget::cancelSecret, + m_networkWorker, &NetworkWorker::cancelSecret); + connect(static_cast(networkTray), &WirelessTrayWidget::requestWirelessScan, + m_networkWorker, &NetworkWorker::requestWirelessScan); + connect(static_cast(networkTray), &WirelessTrayWidget::createApConfig, + m_networkWorker, &NetworkWorker::createApConfig); + connect(static_cast(networkTray), &WirelessTrayWidget::queryConnectionSession, + m_networkWorker, &NetworkWorker::queryConnectionSession); + + connect(m_networkModel, &NetworkModel::needSecrets, + static_cast(networkTray), &WirelessTrayWidget::onNeedSecrets); + connect(m_networkModel, &NetworkModel::needSecretsFinished, + static_cast(networkTray), &WirelessTrayWidget::onNeedSecretsFinished); + + m_networkWorker->queryAccessPoints(path); + m_networkWorker->requestWirelessScan(); + break; + default: + Q_UNREACHABLE(); + } + + mPaths << path; + m_trayWidgetsMap.insert(path, networkTray); + + connect(device, &dde::network::NetworkDevice::enableChanged, + m_delayRefreshTimer, static_cast(&QTimer::start)); + +// connect(networkTray, &AbstractNetworkTrayWidget::requestContextMenu, this, &NetworkPlugin::contextMenuRequested); + connect(networkTray, &AbstractNetworkTrayWidget::requestSetDeviceEnable, m_networkWorker, &NetworkWorker::setDeviceEnable); + } + } + + for (auto mPath : mPaths) { + // removed device + if (!newPaths.contains(mPath)) { + Q_EMIT systemTrayRemoved(NetworkItemKeyPrefix + mPath); + m_trayWidgetsMap.take(mPath)->deleteLater(); + break; + } + + Q_EMIT systemTrayAdded(NetworkItemKeyPrefix + mPath, m_trayWidgetsMap.value(mPath)); + } + + int wirelessItemCount = wirelessTrayList.size(); + for (int i = 0; i < wirelessItemCount; ++i) { + QTimer::singleShot(1, [=] { + wirelessTrayList.at(i)->setDeviceInfo(wirelessItemCount == 1 ? -1 : i + 1); + }); + } + + m_delayRefreshTimer->start(); +} + +void NetworkTrayLoader::refreshWiredItemVisible() +{ + bool hasWireless = false; + QList wiredTrayList; + + for (auto trayWidget : m_trayWidgetsMap.values()) { + if (trayWidget->device()->type() == NetworkDevice::Wireless) { + hasWireless = true; + } else { + wiredTrayList.append(static_cast(trayWidget)); + } + } + + if (!hasWireless) { + return; + } + + for (auto wiredTrayWidget : wiredTrayList) { + if (!wiredTrayWidget->device()->enabled()) { + Q_EMIT systemTrayRemoved(NetworkItemKeyPrefix + wiredTrayWidget->path()); + } else { + Q_EMIT systemTrayAdded(NetworkItemKeyPrefix + wiredTrayWidget->path(), wiredTrayWidget); + } + } +} diff --git a/plugins/system-tray/system-trays/network/networktrayloader.h b/plugins/system-tray/system-trays/network/networktrayloader.h new file mode 100644 index 000000000..0ec2f4387 --- /dev/null +++ b/plugins/system-tray/system-trays/network/networktrayloader.h @@ -0,0 +1,36 @@ +#ifndef NETWORKTRAYLOADER_H +#define NETWORKTRAYLOADER_H + +#include "../abstracttrayloader.h" +#include "item/abstractnetworktraywidget.h" + +#include + +#include +#include + +class NetworkTrayLoader : public AbstractTrayLoader +{ + Q_OBJECT +public: + explicit NetworkTrayLoader(QObject *parent = nullptr); + +public Q_SLOTS: + void load() Q_DECL_OVERRIDE; + +private: + AbstractNetworkTrayWidget *trayWidgetByPath(const QString &path); + +private Q_SLOTS: + void onDeviceListChanged(const QList devices); + void refreshWiredItemVisible(); + +private: + dde::network::NetworkModel *m_networkModel; + dde::network::NetworkWorker *m_networkWorker; + + QMap m_trayWidgetsMap; + QTimer *m_delayRefreshTimer; +}; + +#endif // NETWORKTRAYLOADER_H diff --git a/plugins/network/resources/wired/network-wired-symbolic-connecting1.svg b/plugins/system-tray/system-trays/network/resources/wired/network-wired-symbolic-connecting1.svg similarity index 100% rename from plugins/network/resources/wired/network-wired-symbolic-connecting1.svg rename to plugins/system-tray/system-trays/network/resources/wired/network-wired-symbolic-connecting1.svg diff --git a/plugins/network/resources/wired/network-wired-symbolic-connecting2.svg b/plugins/system-tray/system-trays/network/resources/wired/network-wired-symbolic-connecting2.svg similarity index 100% rename from plugins/network/resources/wired/network-wired-symbolic-connecting2.svg rename to plugins/system-tray/system-trays/network/resources/wired/network-wired-symbolic-connecting2.svg diff --git a/plugins/network/resources/wired/network-wired-symbolic-connecting3.svg b/plugins/system-tray/system-trays/network/resources/wired/network-wired-symbolic-connecting3.svg similarity index 100% rename from plugins/network/resources/wired/network-wired-symbolic-connecting3.svg rename to plugins/system-tray/system-trays/network/resources/wired/network-wired-symbolic-connecting3.svg diff --git a/plugins/network/resources/wired/network-wired-symbolic-connecting4.svg b/plugins/system-tray/system-trays/network/resources/wired/network-wired-symbolic-connecting4.svg similarity index 100% rename from plugins/network/resources/wired/network-wired-symbolic-connecting4.svg rename to plugins/system-tray/system-trays/network/resources/wired/network-wired-symbolic-connecting4.svg diff --git a/plugins/network/resources/wired/network-wired-symbolic-connecting5.svg b/plugins/system-tray/system-trays/network/resources/wired/network-wired-symbolic-connecting5.svg similarity index 100% rename from plugins/network/resources/wired/network-wired-symbolic-connecting5.svg rename to plugins/system-tray/system-trays/network/resources/wired/network-wired-symbolic-connecting5.svg diff --git a/plugins/network/resources/wireless/disconnect.svg b/plugins/system-tray/system-trays/network/resources/wireless/disconnect.svg similarity index 100% rename from plugins/network/resources/wireless/disconnect.svg rename to plugins/system-tray/system-trays/network/resources/wireless/disconnect.svg diff --git a/plugins/network/resources/wireless/disconnect_hover.svg b/plugins/system-tray/system-trays/network/resources/wireless/disconnect_hover.svg similarity index 100% rename from plugins/network/resources/wireless/disconnect_hover.svg rename to plugins/system-tray/system-trays/network/resources/wireless/disconnect_hover.svg diff --git a/plugins/network/resources/wireless/disconnect_press.svg b/plugins/system-tray/system-trays/network/resources/wireless/disconnect_press.svg similarity index 100% rename from plugins/network/resources/wireless/disconnect_press.svg rename to plugins/system-tray/system-trays/network/resources/wireless/disconnect_press.svg diff --git a/plugins/network/resources/wireless/refresh_hover.svg b/plugins/system-tray/system-trays/network/resources/wireless/refresh_hover.svg similarity index 100% rename from plugins/network/resources/wireless/refresh_hover.svg rename to plugins/system-tray/system-trays/network/resources/wireless/refresh_hover.svg diff --git a/plugins/network/resources/wireless/refresh_normal.svg b/plugins/system-tray/system-trays/network/resources/wireless/refresh_normal.svg similarity index 100% rename from plugins/network/resources/wireless/refresh_normal.svg rename to plugins/system-tray/system-trays/network/resources/wireless/refresh_normal.svg diff --git a/plugins/network/resources/wireless/refresh_press.svg b/plugins/system-tray/system-trays/network/resources/wireless/refresh_press.svg similarity index 100% rename from plugins/network/resources/wireless/refresh_press.svg rename to plugins/system-tray/system-trays/network/resources/wireless/refresh_press.svg diff --git a/plugins/network/resources/wireless/security.svg b/plugins/system-tray/system-trays/network/resources/wireless/security.svg similarity index 100% rename from plugins/network/resources/wireless/security.svg rename to plugins/system-tray/system-trays/network/resources/wireless/security.svg diff --git a/plugins/network/resources/wireless/select.svg b/plugins/system-tray/system-trays/network/resources/wireless/select.svg similarity index 100% rename from plugins/network/resources/wireless/select.svg rename to plugins/system-tray/system-trays/network/resources/wireless/select.svg diff --git a/plugins/network/resources/wireless/spinner14/Spinner01.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner01.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner01.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner01.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner02.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner02.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner02.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner02.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner03.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner03.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner03.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner03.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner04.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner04.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner04.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner04.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner05.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner05.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner05.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner05.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner06.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner06.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner06.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner06.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner07.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner07.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner07.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner07.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner08.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner08.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner08.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner08.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner09.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner09.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner09.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner09.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner10.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner10.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner10.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner10.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner11.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner11.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner11.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner11.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner12.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner12.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner12.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner12.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner13.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner13.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner13.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner13.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner14.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner14.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner14.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner14.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner15.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner15.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner15.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner15.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner16.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner16.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner16.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner16.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner17.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner17.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner17.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner17.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner18.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner18.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner18.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner18.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner19.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner19.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner19.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner19.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner20.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner20.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner20.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner20.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner21.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner21.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner21.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner21.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner22.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner22.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner22.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner22.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner23.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner23.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner23.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner23.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner24.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner24.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner24.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner24.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner25.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner25.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner25.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner25.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner26.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner26.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner26.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner26.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner27.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner27.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner27.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner27.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner28.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner28.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner28.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner28.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner29.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner29.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner29.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner29.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner30.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner30.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner30.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner30.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner31.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner31.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner31.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner31.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner32.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner32.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner32.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner32.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner33.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner33.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner33.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner33.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner34.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner34.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner34.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner34.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner35.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner35.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner35.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner35.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner36.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner36.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner36.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner36.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner37.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner37.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner37.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner37.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner38.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner38.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner38.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner38.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner39.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner39.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner39.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner39.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner40.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner40.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner40.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner40.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner41.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner41.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner41.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner41.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner42.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner42.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner42.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner42.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner43.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner43.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner43.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner43.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner44.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner44.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner44.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner44.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner45.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner45.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner45.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner45.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner46.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner46.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner46.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner46.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner47.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner47.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner47.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner47.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner48.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner48.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner48.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner48.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner49.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner49.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner49.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner49.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner50.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner50.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner50.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner50.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner51.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner51.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner51.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner51.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner52.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner52.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner52.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner52.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner53.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner53.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner53.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner53.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner54.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner54.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner54.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner54.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner55.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner55.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner55.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner55.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner56.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner56.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner56.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner56.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner57.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner57.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner57.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner57.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner58.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner58.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner58.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner58.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner59.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner59.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner59.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner59.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner60.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner60.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner60.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner60.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner61.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner61.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner61.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner61.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner62.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner62.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner62.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner62.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner63.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner63.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner63.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner63.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner64.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner64.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner64.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner64.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner65.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner65.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner65.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner65.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner66.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner66.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner66.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner66.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner67.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner67.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner67.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner67.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner68.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner68.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner68.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner68.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner69.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner69.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner69.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner69.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner70.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner70.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner70.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner70.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner71.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner71.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner71.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner71.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner72.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner72.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner72.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner72.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner73.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner73.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner73.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner73.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner74.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner74.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner74.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner74.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner75.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner75.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner75.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner75.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner76.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner76.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner76.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner76.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner77.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner77.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner77.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner77.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner78.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner78.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner78.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner78.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner79.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner79.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner79.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner79.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner80.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner80.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner80.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner80.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner81.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner81.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner81.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner81.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner82.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner82.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner82.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner82.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner83.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner83.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner83.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner83.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner84.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner84.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner84.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner84.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner85.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner85.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner85.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner85.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner86.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner86.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner86.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner86.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner87.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner87.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner87.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner87.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner88.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner88.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner88.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner88.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner89.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner89.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner89.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner89.png diff --git a/plugins/network/resources/wireless/spinner14/Spinner90.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner90.png similarity index 100% rename from plugins/network/resources/wireless/spinner14/Spinner90.png rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner90.png diff --git a/plugins/network/resources/wireless/wireless-0-symbolic.svg b/plugins/system-tray/system-trays/network/resources/wireless/wireless-0-symbolic.svg similarity index 100% rename from plugins/network/resources/wireless/wireless-0-symbolic.svg rename to plugins/system-tray/system-trays/network/resources/wireless/wireless-0-symbolic.svg diff --git a/plugins/network/resources/wireless/wireless-0.svg b/plugins/system-tray/system-trays/network/resources/wireless/wireless-0.svg similarity index 100% rename from plugins/network/resources/wireless/wireless-0.svg rename to plugins/system-tray/system-trays/network/resources/wireless/wireless-0.svg diff --git a/plugins/network/resources/wireless/wireless-20-symbolic.svg b/plugins/system-tray/system-trays/network/resources/wireless/wireless-20-symbolic.svg similarity index 100% rename from plugins/network/resources/wireless/wireless-20-symbolic.svg rename to plugins/system-tray/system-trays/network/resources/wireless/wireless-20-symbolic.svg diff --git a/plugins/network/resources/wireless/wireless-20.svg b/plugins/system-tray/system-trays/network/resources/wireless/wireless-20.svg similarity index 100% rename from plugins/network/resources/wireless/wireless-20.svg rename to plugins/system-tray/system-trays/network/resources/wireless/wireless-20.svg diff --git a/plugins/network/resources/wireless/wireless-40-symbolic.svg b/plugins/system-tray/system-trays/network/resources/wireless/wireless-40-symbolic.svg similarity index 100% rename from plugins/network/resources/wireless/wireless-40-symbolic.svg rename to plugins/system-tray/system-trays/network/resources/wireless/wireless-40-symbolic.svg diff --git a/plugins/network/resources/wireless/wireless-40.svg b/plugins/system-tray/system-trays/network/resources/wireless/wireless-40.svg similarity index 100% rename from plugins/network/resources/wireless/wireless-40.svg rename to plugins/system-tray/system-trays/network/resources/wireless/wireless-40.svg diff --git a/plugins/network/resources/wireless/wireless-60-symbolic.svg b/plugins/system-tray/system-trays/network/resources/wireless/wireless-60-symbolic.svg similarity index 100% rename from plugins/network/resources/wireless/wireless-60-symbolic.svg rename to plugins/system-tray/system-trays/network/resources/wireless/wireless-60-symbolic.svg diff --git a/plugins/network/resources/wireless/wireless-60.svg b/plugins/system-tray/system-trays/network/resources/wireless/wireless-60.svg similarity index 100% rename from plugins/network/resources/wireless/wireless-60.svg rename to plugins/system-tray/system-trays/network/resources/wireless/wireless-60.svg diff --git a/plugins/network/resources/wireless/wireless-80-symbolic.svg b/plugins/system-tray/system-trays/network/resources/wireless/wireless-80-symbolic.svg similarity index 100% rename from plugins/network/resources/wireless/wireless-80-symbolic.svg rename to plugins/system-tray/system-trays/network/resources/wireless/wireless-80-symbolic.svg diff --git a/plugins/network/resources/wireless/wireless-80.svg b/plugins/system-tray/system-trays/network/resources/wireless/wireless-80.svg similarity index 100% rename from plugins/network/resources/wireless/wireless-80.svg rename to plugins/system-tray/system-trays/network/resources/wireless/wireless-80.svg diff --git a/plugins/network/resources/wireless/wireless-background.svg b/plugins/system-tray/system-trays/network/resources/wireless/wireless-background.svg similarity index 100% rename from plugins/network/resources/wireless/wireless-background.svg rename to plugins/system-tray/system-trays/network/resources/wireless/wireless-background.svg diff --git a/plugins/network/resources/wireless/wireless-disconnect-symbolic.svg b/plugins/system-tray/system-trays/network/resources/wireless/wireless-disconnect-symbolic.svg similarity index 100% rename from plugins/network/resources/wireless/wireless-disconnect-symbolic.svg rename to plugins/system-tray/system-trays/network/resources/wireless/wireless-disconnect-symbolic.svg diff --git a/plugins/network/resources/wireless/wireless-disconnect.svg b/plugins/system-tray/system-trays/network/resources/wireless/wireless-disconnect.svg similarity index 100% rename from plugins/network/resources/wireless/wireless-disconnect.svg rename to plugins/system-tray/system-trays/network/resources/wireless/wireless-disconnect.svg diff --git a/plugins/network/util/imageutil.cpp b/plugins/system-tray/system-trays/network/util/imageutil.cpp similarity index 100% rename from plugins/network/util/imageutil.cpp rename to plugins/system-tray/system-trays/network/util/imageutil.cpp diff --git a/plugins/network/util/imageutil.h b/plugins/system-tray/system-trays/network/util/imageutil.h similarity index 100% rename from plugins/network/util/imageutil.h rename to plugins/system-tray/system-trays/network/util/imageutil.h diff --git a/plugins/shutdown/CMakeLists.txt b/plugins/system-tray/system-trays/shutdown/CMakeLists.txt similarity index 100% rename from plugins/shutdown/CMakeLists.txt rename to plugins/system-tray/system-trays/shutdown/CMakeLists.txt diff --git a/plugins/shutdown/dbus/com.deepin.daemon.Power.xml b/plugins/system-tray/system-trays/shutdown/dbus/com.deepin.daemon.Power.xml similarity index 100% rename from plugins/shutdown/dbus/com.deepin.daemon.Power.xml rename to plugins/system-tray/system-trays/shutdown/dbus/com.deepin.daemon.Power.xml diff --git a/plugins/shutdown/dbus/dbusaccount.cpp b/plugins/system-tray/system-trays/shutdown/dbus/dbusaccount.cpp similarity index 100% rename from plugins/shutdown/dbus/dbusaccount.cpp rename to plugins/system-tray/system-trays/shutdown/dbus/dbusaccount.cpp diff --git a/plugins/shutdown/dbus/dbusaccount.h b/plugins/system-tray/system-trays/shutdown/dbus/dbusaccount.h similarity index 100% rename from plugins/shutdown/dbus/dbusaccount.h rename to plugins/system-tray/system-trays/shutdown/dbus/dbusaccount.h diff --git a/plugins/shutdown/dbus/dbuspower.cpp b/plugins/system-tray/system-trays/shutdown/dbus/dbuspower.cpp similarity index 100% rename from plugins/shutdown/dbus/dbuspower.cpp rename to plugins/system-tray/system-trays/shutdown/dbus/dbuspower.cpp diff --git a/plugins/shutdown/dbus/dbuspower.h b/plugins/system-tray/system-trays/shutdown/dbus/dbuspower.h similarity index 100% rename from plugins/shutdown/dbus/dbuspower.h rename to plugins/system-tray/system-trays/shutdown/dbus/dbuspower.h diff --git a/plugins/shutdown/pluginwidget.cpp b/plugins/system-tray/system-trays/shutdown/pluginwidget.cpp similarity index 100% rename from plugins/shutdown/pluginwidget.cpp rename to plugins/system-tray/system-trays/shutdown/pluginwidget.cpp diff --git a/plugins/shutdown/pluginwidget.h b/plugins/system-tray/system-trays/shutdown/pluginwidget.h similarity index 100% rename from plugins/shutdown/pluginwidget.h rename to plugins/system-tray/system-trays/shutdown/pluginwidget.h diff --git a/plugins/shutdown/powerstatuswidget.cpp b/plugins/system-tray/system-trays/shutdown/powerstatuswidget.cpp similarity index 100% rename from plugins/shutdown/powerstatuswidget.cpp rename to plugins/system-tray/system-trays/shutdown/powerstatuswidget.cpp diff --git a/plugins/shutdown/powerstatuswidget.h b/plugins/system-tray/system-trays/shutdown/powerstatuswidget.h similarity index 100% rename from plugins/shutdown/powerstatuswidget.h rename to plugins/system-tray/system-trays/shutdown/powerstatuswidget.h diff --git a/plugins/system-tray/system-trays/shutdown/powertrayloader.cpp b/plugins/system-tray/system-trays/shutdown/powertrayloader.cpp new file mode 100644 index 000000000..4d695a337 --- /dev/null +++ b/plugins/system-tray/system-trays/shutdown/powertrayloader.cpp @@ -0,0 +1,18 @@ +#include "powertrayloader.h" +#include "powertraywidget.h" + +#define PowerItemKey "system-tray-power" +#define PowerService "com.deepin.daemon.Power" + +PowerTrayLoader::PowerTrayLoader(QObject *parent) + : AbstractTrayLoader(PowerService, parent), + m_powerInter(new DBusPower(this)) +{ +} + +void PowerTrayLoader::load() +{ + if (!m_powerInter->batteryState().isEmpty()) { + emit systemTrayAdded(PowerItemKey, new PowerTrayWidget); + } +} diff --git a/plugins/system-tray/system-trays/shutdown/powertrayloader.h b/plugins/system-tray/system-trays/shutdown/powertrayloader.h new file mode 100644 index 000000000..8e4d1faff --- /dev/null +++ b/plugins/system-tray/system-trays/shutdown/powertrayloader.h @@ -0,0 +1,22 @@ +#ifndef POWERTRAYLOADER_H +#define POWERTRAYLOADER_H + +#include "../abstracttrayloader.h" +#include "dbus/dbuspower.h" + +#include + +class PowerTrayLoader : public AbstractTrayLoader +{ + Q_OBJECT +public: + explicit PowerTrayLoader(QObject *parent = nullptr); + +public Q_SLOTS: + void load() Q_DECL_OVERRIDE; + +private: + DBusPower *m_powerInter; +}; + +#endif // POWERTRAYLOADER_H diff --git a/plugins/system-tray/system-trays/shutdown/powertraywidget.cpp b/plugins/system-tray/system-trays/shutdown/powertraywidget.cpp new file mode 100644 index 000000000..8a9e9f44d --- /dev/null +++ b/plugins/system-tray/system-trays/shutdown/powertraywidget.cpp @@ -0,0 +1,99 @@ +/* + * Copyright (C) 2011 ~ 2018 Deepin Technology Co., Ltd. + * + * Author: sbw + * + * Maintainer: sbw + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "powertraywidget.h" + +#include +#include +#include + +PowerTrayWidget::PowerTrayWidget(AbstractTrayWidget *parent) + : AbstractTrayWidget(parent), + m_powerInter(new DBusPower(this)) +{ + connect(m_powerInter, &DBusPower::BatteryPercentageChanged, this, &PowerTrayWidget::updateIcon); + connect(m_powerInter, &DBusPower::BatteryStateChanged, this, &PowerTrayWidget::updateIcon); + connect(m_powerInter, &DBusPower::OnBatteryChanged, this, &PowerTrayWidget::updateIcon); +} + +void PowerTrayWidget::setActive(const bool active) +{ + +} + +void PowerTrayWidget::updateIcon() +{ + const BatteryPercentageMap data = m_powerInter->batteryPercentage(); + const uint value = qMin(100.0, qMax(0.0, data.value("Display"))); + const int percentage = std::round(value); + const bool plugged = !m_powerInter->onBattery(); + + QString percentageStr; + if (percentage < 10 && percentage >= 0) { + percentageStr = "000"; + } else if (percentage < 30) { + percentageStr = "020"; + } else if (percentage < 50) { + percentageStr = "040"; + } else if (percentage < 70) { + percentageStr = "060"; + } else if (percentage < 90) { + percentageStr = "080"; + } else if (percentage <= 100){ + percentageStr = "100"; + } else { + percentageStr = "000"; + } + + const QString iconStr = QString("battery-%1-%2") + .arg(percentageStr) + .arg(plugged ? "plugged-symbolic" : "symbolic"); + const auto ratio = devicePixelRatioF(); + m_pixmap = QIcon::fromTheme(iconStr).pixmap(QSize(16, 16) * ratio); + m_pixmap.setDevicePixelRatio(ratio); + + update(); +} + +void PowerTrayWidget::sendClick(uint8_t mouseButton, int x, int y) +{ + +} + +const QImage PowerTrayWidget::trayImage() +{ + m_pixmap.toImage(); +} + +QSize PowerTrayWidget::sizeHint() const +{ + return QSize(26, 26); +} + +void PowerTrayWidget::paintEvent(QPaintEvent *e) +{ + Q_UNUSED(e); + + const auto ratio = devicePixelRatioF(); + + QPainter painter(this); + painter.drawPixmap(rect().center() - m_pixmap.rect().center() / ratio, m_pixmap); +} diff --git a/plugins/system-tray/system-trays/shutdown/powertraywidget.h b/plugins/system-tray/system-trays/shutdown/powertraywidget.h new file mode 100644 index 000000000..3ba618da4 --- /dev/null +++ b/plugins/system-tray/system-trays/shutdown/powertraywidget.h @@ -0,0 +1,53 @@ +/* + * Copyright (C) 2011 ~ 2018 Deepin Technology Co., Ltd. + * + * Author: sbw + * + * Maintainer: sbw + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifndef POWERTRAYWIDGET_H +#define POWERTRAYWIDGET_H + +#include "abstracttraywidget.h" +#include "dbus/dbuspower.h" + +#include + +class PowerTrayWidget : public AbstractTrayWidget +{ + Q_OBJECT + +public: + explicit PowerTrayWidget(AbstractTrayWidget *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; + +protected: + QSize sizeHint() const Q_DECL_OVERRIDE; + void paintEvent(QPaintEvent *e) Q_DECL_OVERRIDE; + +private: + DBusPower *m_powerInter; + + QPixmap m_pixmap; +}; + +#endif // POWERTRAYWIDGET_H diff --git a/plugins/shutdown/resources/icons/battery_0.svg b/plugins/system-tray/system-trays/shutdown/resources/icons/battery_0.svg similarity index 100% rename from plugins/shutdown/resources/icons/battery_0.svg rename to plugins/system-tray/system-trays/shutdown/resources/icons/battery_0.svg diff --git a/plugins/shutdown/resources/icons/battery_0_plugged.svg b/plugins/system-tray/system-trays/shutdown/resources/icons/battery_0_plugged.svg similarity index 100% rename from plugins/shutdown/resources/icons/battery_0_plugged.svg rename to plugins/system-tray/system-trays/shutdown/resources/icons/battery_0_plugged.svg diff --git a/plugins/shutdown/resources/icons/battery_10.svg b/plugins/system-tray/system-trays/shutdown/resources/icons/battery_10.svg similarity index 100% rename from plugins/shutdown/resources/icons/battery_10.svg rename to plugins/system-tray/system-trays/shutdown/resources/icons/battery_10.svg diff --git a/plugins/shutdown/resources/icons/battery_10_plugged.svg b/plugins/system-tray/system-trays/shutdown/resources/icons/battery_10_plugged.svg similarity index 100% rename from plugins/shutdown/resources/icons/battery_10_plugged.svg rename to plugins/system-tray/system-trays/shutdown/resources/icons/battery_10_plugged.svg diff --git a/plugins/shutdown/resources/icons/battery_2.svg b/plugins/system-tray/system-trays/shutdown/resources/icons/battery_2.svg similarity index 100% rename from plugins/shutdown/resources/icons/battery_2.svg rename to plugins/system-tray/system-trays/shutdown/resources/icons/battery_2.svg diff --git a/plugins/shutdown/resources/icons/battery_2_plugged.svg b/plugins/system-tray/system-trays/shutdown/resources/icons/battery_2_plugged.svg similarity index 100% rename from plugins/shutdown/resources/icons/battery_2_plugged.svg rename to plugins/system-tray/system-trays/shutdown/resources/icons/battery_2_plugged.svg diff --git a/plugins/shutdown/resources/icons/battery_4.svg b/plugins/system-tray/system-trays/shutdown/resources/icons/battery_4.svg similarity index 100% rename from plugins/shutdown/resources/icons/battery_4.svg rename to plugins/system-tray/system-trays/shutdown/resources/icons/battery_4.svg diff --git a/plugins/shutdown/resources/icons/battery_4_plugged.svg b/plugins/system-tray/system-trays/shutdown/resources/icons/battery_4_plugged.svg similarity index 100% rename from plugins/shutdown/resources/icons/battery_4_plugged.svg rename to plugins/system-tray/system-trays/shutdown/resources/icons/battery_4_plugged.svg diff --git a/plugins/shutdown/resources/icons/battery_6.svg b/plugins/system-tray/system-trays/shutdown/resources/icons/battery_6.svg similarity index 100% rename from plugins/shutdown/resources/icons/battery_6.svg rename to plugins/system-tray/system-trays/shutdown/resources/icons/battery_6.svg diff --git a/plugins/shutdown/resources/icons/battery_6_plugged.svg b/plugins/system-tray/system-trays/shutdown/resources/icons/battery_6_plugged.svg similarity index 100% rename from plugins/shutdown/resources/icons/battery_6_plugged.svg rename to plugins/system-tray/system-trays/shutdown/resources/icons/battery_6_plugged.svg diff --git a/plugins/shutdown/resources/icons/battery_8.svg b/plugins/system-tray/system-trays/shutdown/resources/icons/battery_8.svg similarity index 100% rename from plugins/shutdown/resources/icons/battery_8.svg rename to plugins/system-tray/system-trays/shutdown/resources/icons/battery_8.svg diff --git a/plugins/shutdown/resources/icons/battery_8_plugged.svg b/plugins/system-tray/system-trays/shutdown/resources/icons/battery_8_plugged.svg similarity index 100% rename from plugins/shutdown/resources/icons/battery_8_plugged.svg rename to plugins/system-tray/system-trays/shutdown/resources/icons/battery_8_plugged.svg diff --git a/plugins/shutdown/resources/icons/battery_plugged.svg b/plugins/system-tray/system-trays/shutdown/resources/icons/battery_plugged.svg similarity index 100% rename from plugins/shutdown/resources/icons/battery_plugged.svg rename to plugins/system-tray/system-trays/shutdown/resources/icons/battery_plugged.svg diff --git a/plugins/shutdown/resources/icons/battery_unknow.svg b/plugins/system-tray/system-trays/shutdown/resources/icons/battery_unknow.svg similarity index 100% rename from plugins/shutdown/resources/icons/battery_unknow.svg rename to plugins/system-tray/system-trays/shutdown/resources/icons/battery_unknow.svg diff --git a/plugins/shutdown/resources/icons/fashion.svg b/plugins/system-tray/system-trays/shutdown/resources/icons/fashion.svg similarity index 100% rename from plugins/shutdown/resources/icons/fashion.svg rename to plugins/system-tray/system-trays/shutdown/resources/icons/fashion.svg diff --git a/plugins/shutdown/resources/icons/normal.svg b/plugins/system-tray/system-trays/shutdown/resources/icons/normal.svg similarity index 100% rename from plugins/shutdown/resources/icons/normal.svg rename to plugins/system-tray/system-trays/shutdown/resources/icons/normal.svg diff --git a/plugins/shutdown/shutdown.json b/plugins/system-tray/system-trays/shutdown/shutdown.json similarity index 100% rename from plugins/shutdown/shutdown.json rename to plugins/system-tray/system-trays/shutdown/shutdown.json diff --git a/plugins/shutdown/shutdown.qrc b/plugins/system-tray/system-trays/shutdown/shutdown.qrc similarity index 100% rename from plugins/shutdown/shutdown.qrc rename to plugins/system-tray/system-trays/shutdown/shutdown.qrc diff --git a/plugins/shutdown/shutdownplugin.cpp b/plugins/system-tray/system-trays/shutdown/shutdownplugin.cpp similarity index 100% rename from plugins/shutdown/shutdownplugin.cpp rename to plugins/system-tray/system-trays/shutdown/shutdownplugin.cpp diff --git a/plugins/shutdown/shutdownplugin.h b/plugins/system-tray/system-trays/shutdown/shutdownplugin.h similarity index 94% rename from plugins/shutdown/shutdownplugin.h rename to plugins/system-tray/system-trays/shutdown/shutdownplugin.h index 8bcbc31bd..704775edb 100644 --- a/plugins/shutdown/shutdownplugin.h +++ b/plugins/system-tray/system-trays/shutdown/shutdownplugin.h @@ -36,8 +36,8 @@ class ShutdownPlugin : public QObject, PluginsItemInterface { Q_OBJECT - Q_INTERFACES(PluginsItemInterface) - Q_PLUGIN_METADATA(IID "com.deepin.dock.PluginsItemInterface" FILE "shutdown.json") +// Q_INTERFACES(PluginsItemInterface) +// Q_PLUGIN_METADATA(IID "com.deepin.dock.PluginsItemInterface" FILE "shutdown.json") public: explicit ShutdownPlugin(QObject *parent = 0); diff --git a/plugins/system-tray/system-trays/shutdown/shutdowntrayloader.cpp b/plugins/system-tray/system-trays/shutdown/shutdowntrayloader.cpp new file mode 100644 index 000000000..06f74f16b --- /dev/null +++ b/plugins/system-tray/system-trays/shutdown/shutdowntrayloader.cpp @@ -0,0 +1,13 @@ +#include "shutdowntrayloader.h" +#include "shutdowntraywidget.h" + +#define ShutdownItemKey "system-tray-shutdown" + +ShutdownTrayLoader::ShutdownTrayLoader(QObject *parent) : AbstractTrayLoader(QString(), parent) +{ +} + +void ShutdownTrayLoader::load() +{ + emit systemTrayAdded(ShutdownItemKey, new ShutdownTrayWidget); +} diff --git a/plugins/system-tray/system-trays/shutdown/shutdowntrayloader.h b/plugins/system-tray/system-trays/shutdown/shutdowntrayloader.h new file mode 100644 index 000000000..ed7818ab9 --- /dev/null +++ b/plugins/system-tray/system-trays/shutdown/shutdowntrayloader.h @@ -0,0 +1,18 @@ +#ifndef SHUTDOWNTRAYLOADER_H +#define SHUTDOWNTRAYLOADER_H + +#include "../abstracttrayloader.h" + +#include + +class ShutdownTrayLoader : public AbstractTrayLoader +{ + Q_OBJECT +public: + explicit ShutdownTrayLoader(QObject *parent = nullptr); + +public Q_SLOTS: + void load() Q_DECL_OVERRIDE; +}; + +#endif // SHUTDOWNTRAYLOADER_H diff --git a/plugins/system-tray/system-trays/shutdown/shutdowntraywidget.cpp b/plugins/system-tray/system-trays/shutdown/shutdowntraywidget.cpp new file mode 100644 index 000000000..8f6d2d657 --- /dev/null +++ b/plugins/system-tray/system-trays/shutdown/shutdowntraywidget.cpp @@ -0,0 +1,60 @@ +#include "shutdowntraywidget.h" + +#include +#include +#include +#include + +ShutdownTrayWidget::ShutdownTrayWidget(AbstractTrayWidget *parent) + : AbstractTrayWidget(parent) +{ + updateIcon(); +} + +void ShutdownTrayWidget::setActive(const bool active) +{ + +} + +void ShutdownTrayWidget::updateIcon() +{ + const auto ratio = qApp->devicePixelRatio(); + + QPixmap pixmap(QSize(16, 16) * ratio); + QSvgRenderer renderer(QString(":/icons/system-trays/shutdown/resources/icons/normal.svg")); + pixmap.fill(Qt::transparent); + + QPainter painter; + painter.begin(&pixmap); + renderer.render(&painter); + painter.end(); + + pixmap.setDevicePixelRatio(ratio); + + m_pixmap = pixmap; + + update(); +} + +void ShutdownTrayWidget::sendClick(uint8_t mouseButton, int x, int y) +{ + +} + +const QImage ShutdownTrayWidget::trayImage() +{ + return m_pixmap.toImage(); +} + +QSize ShutdownTrayWidget::sizeHint() const +{ + return QSize(26, 26); +} + +void ShutdownTrayWidget::paintEvent(QPaintEvent *e) +{ + Q_UNUSED(e); + + QPainter painter(this); + painter.drawPixmap(rect().center() - m_pixmap.rect().center() / qApp->devicePixelRatio(), m_pixmap); +} diff --git a/plugins/system-tray/system-trays/shutdown/shutdowntraywidget.h b/plugins/system-tray/system-trays/shutdown/shutdowntraywidget.h new file mode 100644 index 000000000..20273d67f --- /dev/null +++ b/plugins/system-tray/system-trays/shutdown/shutdowntraywidget.h @@ -0,0 +1,30 @@ +#ifndef SHUTDOWNTRAYWIDGET_H +#define SHUTDOWNTRAYWIDGET_H + +#include "abstracttraywidget.h" + +#include +#include + +class ShutdownTrayWidget : public AbstractTrayWidget +{ + Q_OBJECT + +public: + explicit ShutdownTrayWidget(AbstractTrayWidget *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; + +protected: + QSize sizeHint() const Q_DECL_OVERRIDE; + void paintEvent(QPaintEvent *e) Q_DECL_OVERRIDE; + +private: + QPixmap m_pixmap; +}; + +#endif // SHUTDOWNTRAYWIDGET_H diff --git a/plugins/sound/CMakeLists.txt b/plugins/system-tray/system-trays/sound/CMakeLists.txt similarity index 100% rename from plugins/sound/CMakeLists.txt rename to plugins/system-tray/system-trays/sound/CMakeLists.txt diff --git a/plugins/sound/componments/horizontalseparator.cpp b/plugins/system-tray/system-trays/sound/componments/horizontalseparator.cpp similarity index 100% rename from plugins/sound/componments/horizontalseparator.cpp rename to plugins/system-tray/system-trays/sound/componments/horizontalseparator.cpp diff --git a/plugins/sound/componments/horizontalseparator.h b/plugins/system-tray/system-trays/sound/componments/horizontalseparator.h similarity index 100% rename from plugins/sound/componments/horizontalseparator.h rename to plugins/system-tray/system-trays/sound/componments/horizontalseparator.h diff --git a/plugins/sound/componments/volumeslider.cpp b/plugins/system-tray/system-trays/sound/componments/volumeslider.cpp similarity index 100% rename from plugins/sound/componments/volumeslider.cpp rename to plugins/system-tray/system-trays/sound/componments/volumeslider.cpp diff --git a/plugins/sound/componments/volumeslider.h b/plugins/system-tray/system-trays/sound/componments/volumeslider.h similarity index 100% rename from plugins/sound/componments/volumeslider.h rename to plugins/system-tray/system-trays/sound/componments/volumeslider.h diff --git a/plugins/sound/dbus/com.deepin.daemon.Audio.Sink.xml b/plugins/system-tray/system-trays/sound/dbus/com.deepin.daemon.Audio.Sink.xml similarity index 100% rename from plugins/sound/dbus/com.deepin.daemon.Audio.Sink.xml rename to plugins/system-tray/system-trays/sound/dbus/com.deepin.daemon.Audio.Sink.xml diff --git a/plugins/sound/dbus/com.deepin.daemon.Audio.SinkInput.xml b/plugins/system-tray/system-trays/sound/dbus/com.deepin.daemon.Audio.SinkInput.xml similarity index 100% rename from plugins/sound/dbus/com.deepin.daemon.Audio.SinkInput.xml rename to plugins/system-tray/system-trays/sound/dbus/com.deepin.daemon.Audio.SinkInput.xml diff --git a/plugins/sound/dbus/com.deepin.daemon.Audio.xml b/plugins/system-tray/system-trays/sound/dbus/com.deepin.daemon.Audio.xml similarity index 100% rename from plugins/sound/dbus/com.deepin.daemon.Audio.xml rename to plugins/system-tray/system-trays/sound/dbus/com.deepin.daemon.Audio.xml diff --git a/plugins/sound/dbus/dbusaudio.cpp b/plugins/system-tray/system-trays/sound/dbus/dbusaudio.cpp similarity index 100% rename from plugins/sound/dbus/dbusaudio.cpp rename to plugins/system-tray/system-trays/sound/dbus/dbusaudio.cpp diff --git a/plugins/sound/dbus/dbusaudio.h b/plugins/system-tray/system-trays/sound/dbus/dbusaudio.h similarity index 100% rename from plugins/sound/dbus/dbusaudio.h rename to plugins/system-tray/system-trays/sound/dbus/dbusaudio.h diff --git a/plugins/sound/dbus/dbussink.cpp b/plugins/system-tray/system-trays/sound/dbus/dbussink.cpp similarity index 100% rename from plugins/sound/dbus/dbussink.cpp rename to plugins/system-tray/system-trays/sound/dbus/dbussink.cpp diff --git a/plugins/sound/dbus/dbussink.h b/plugins/system-tray/system-trays/sound/dbus/dbussink.h similarity index 100% rename from plugins/sound/dbus/dbussink.h rename to plugins/system-tray/system-trays/sound/dbus/dbussink.h diff --git a/plugins/sound/dbus/dbussinkinput.cpp b/plugins/system-tray/system-trays/sound/dbus/dbussinkinput.cpp similarity index 100% rename from plugins/sound/dbus/dbussinkinput.cpp rename to plugins/system-tray/system-trays/sound/dbus/dbussinkinput.cpp diff --git a/plugins/sound/dbus/dbussinkinput.h b/plugins/system-tray/system-trays/sound/dbus/dbussinkinput.h similarity index 100% rename from plugins/sound/dbus/dbussinkinput.h rename to plugins/system-tray/system-trays/sound/dbus/dbussinkinput.h diff --git a/plugins/sound/resources/audio-volume-000-muted.svg b/plugins/system-tray/system-trays/sound/resources/audio-volume-000-muted.svg similarity index 100% rename from plugins/sound/resources/audio-volume-000-muted.svg rename to plugins/system-tray/system-trays/sound/resources/audio-volume-000-muted.svg diff --git a/plugins/sound/resources/audio-volume-000.svg b/plugins/system-tray/system-trays/sound/resources/audio-volume-000.svg similarity index 100% rename from plugins/sound/resources/audio-volume-000.svg rename to plugins/system-tray/system-trays/sound/resources/audio-volume-000.svg diff --git a/plugins/sound/resources/audio-volume-010-muted.svg b/plugins/system-tray/system-trays/sound/resources/audio-volume-010-muted.svg similarity index 100% rename from plugins/sound/resources/audio-volume-010-muted.svg rename to plugins/system-tray/system-trays/sound/resources/audio-volume-010-muted.svg diff --git a/plugins/sound/resources/audio-volume-010.svg b/plugins/system-tray/system-trays/sound/resources/audio-volume-010.svg similarity index 100% rename from plugins/sound/resources/audio-volume-010.svg rename to plugins/system-tray/system-trays/sound/resources/audio-volume-010.svg diff --git a/plugins/sound/resources/audio-volume-020-muted.svg b/plugins/system-tray/system-trays/sound/resources/audio-volume-020-muted.svg similarity index 100% rename from plugins/sound/resources/audio-volume-020-muted.svg rename to plugins/system-tray/system-trays/sound/resources/audio-volume-020-muted.svg diff --git a/plugins/sound/resources/audio-volume-020.svg b/plugins/system-tray/system-trays/sound/resources/audio-volume-020.svg similarity index 100% rename from plugins/sound/resources/audio-volume-020.svg rename to plugins/system-tray/system-trays/sound/resources/audio-volume-020.svg diff --git a/plugins/sound/resources/audio-volume-030-muted.svg b/plugins/system-tray/system-trays/sound/resources/audio-volume-030-muted.svg similarity index 100% rename from plugins/sound/resources/audio-volume-030-muted.svg rename to plugins/system-tray/system-trays/sound/resources/audio-volume-030-muted.svg diff --git a/plugins/sound/resources/audio-volume-030.svg b/plugins/system-tray/system-trays/sound/resources/audio-volume-030.svg similarity index 100% rename from plugins/sound/resources/audio-volume-030.svg rename to plugins/system-tray/system-trays/sound/resources/audio-volume-030.svg diff --git a/plugins/sound/resources/audio-volume-040-muted.svg b/plugins/system-tray/system-trays/sound/resources/audio-volume-040-muted.svg similarity index 100% rename from plugins/sound/resources/audio-volume-040-muted.svg rename to plugins/system-tray/system-trays/sound/resources/audio-volume-040-muted.svg diff --git a/plugins/sound/resources/audio-volume-040.svg b/plugins/system-tray/system-trays/sound/resources/audio-volume-040.svg similarity index 100% rename from plugins/sound/resources/audio-volume-040.svg rename to plugins/system-tray/system-trays/sound/resources/audio-volume-040.svg diff --git a/plugins/sound/resources/audio-volume-050-muted.svg b/plugins/system-tray/system-trays/sound/resources/audio-volume-050-muted.svg similarity index 100% rename from plugins/sound/resources/audio-volume-050-muted.svg rename to plugins/system-tray/system-trays/sound/resources/audio-volume-050-muted.svg diff --git a/plugins/sound/resources/audio-volume-050.svg b/plugins/system-tray/system-trays/sound/resources/audio-volume-050.svg similarity index 100% rename from plugins/sound/resources/audio-volume-050.svg rename to plugins/system-tray/system-trays/sound/resources/audio-volume-050.svg diff --git a/plugins/sound/resources/audio-volume-060-muted.svg b/plugins/system-tray/system-trays/sound/resources/audio-volume-060-muted.svg similarity index 100% rename from plugins/sound/resources/audio-volume-060-muted.svg rename to plugins/system-tray/system-trays/sound/resources/audio-volume-060-muted.svg diff --git a/plugins/sound/resources/audio-volume-060.svg b/plugins/system-tray/system-trays/sound/resources/audio-volume-060.svg similarity index 100% rename from plugins/sound/resources/audio-volume-060.svg rename to plugins/system-tray/system-trays/sound/resources/audio-volume-060.svg diff --git a/plugins/sound/resources/audio-volume-070-muted.svg b/plugins/system-tray/system-trays/sound/resources/audio-volume-070-muted.svg similarity index 100% rename from plugins/sound/resources/audio-volume-070-muted.svg rename to plugins/system-tray/system-trays/sound/resources/audio-volume-070-muted.svg diff --git a/plugins/sound/resources/audio-volume-070.svg b/plugins/system-tray/system-trays/sound/resources/audio-volume-070.svg similarity index 100% rename from plugins/sound/resources/audio-volume-070.svg rename to plugins/system-tray/system-trays/sound/resources/audio-volume-070.svg diff --git a/plugins/sound/resources/audio-volume-080-muted.svg b/plugins/system-tray/system-trays/sound/resources/audio-volume-080-muted.svg similarity index 100% rename from plugins/sound/resources/audio-volume-080-muted.svg rename to plugins/system-tray/system-trays/sound/resources/audio-volume-080-muted.svg diff --git a/plugins/sound/resources/audio-volume-080.svg b/plugins/system-tray/system-trays/sound/resources/audio-volume-080.svg similarity index 100% rename from plugins/sound/resources/audio-volume-080.svg rename to plugins/system-tray/system-trays/sound/resources/audio-volume-080.svg diff --git a/plugins/sound/resources/audio-volume-090-muted.svg b/plugins/system-tray/system-trays/sound/resources/audio-volume-090-muted.svg similarity index 100% rename from plugins/sound/resources/audio-volume-090-muted.svg rename to plugins/system-tray/system-trays/sound/resources/audio-volume-090-muted.svg diff --git a/plugins/sound/resources/audio-volume-090.svg b/plugins/system-tray/system-trays/sound/resources/audio-volume-090.svg similarity index 100% rename from plugins/sound/resources/audio-volume-090.svg rename to plugins/system-tray/system-trays/sound/resources/audio-volume-090.svg diff --git a/plugins/sound/resources/audio-volume-100-muted.svg b/plugins/system-tray/system-trays/sound/resources/audio-volume-100-muted.svg similarity index 100% rename from plugins/sound/resources/audio-volume-100-muted.svg rename to plugins/system-tray/system-trays/sound/resources/audio-volume-100-muted.svg diff --git a/plugins/sound/resources/audio-volume-100.svg b/plugins/system-tray/system-trays/sound/resources/audio-volume-100.svg similarity index 100% rename from plugins/sound/resources/audio-volume-100.svg rename to plugins/system-tray/system-trays/sound/resources/audio-volume-100.svg diff --git a/plugins/sound/resources/audio-volume-high-symbolic.svg b/plugins/system-tray/system-trays/sound/resources/audio-volume-high-symbolic.svg similarity index 100% rename from plugins/sound/resources/audio-volume-high-symbolic.svg rename to plugins/system-tray/system-trays/sound/resources/audio-volume-high-symbolic.svg diff --git a/plugins/sound/resources/audio-volume-low-symbolic.svg b/plugins/system-tray/system-trays/sound/resources/audio-volume-low-symbolic.svg similarity index 100% rename from plugins/sound/resources/audio-volume-low-symbolic.svg rename to plugins/system-tray/system-trays/sound/resources/audio-volume-low-symbolic.svg diff --git a/plugins/sound/resources/audio-volume-medium-symbolic.svg b/plugins/system-tray/system-trays/sound/resources/audio-volume-medium-symbolic.svg similarity index 100% rename from plugins/sound/resources/audio-volume-medium-symbolic.svg rename to plugins/system-tray/system-trays/sound/resources/audio-volume-medium-symbolic.svg diff --git a/plugins/sound/resources/audio-volume-muted-symbolic.svg b/plugins/system-tray/system-trays/sound/resources/audio-volume-muted-symbolic.svg similarity index 100% rename from plugins/sound/resources/audio-volume-muted-symbolic.svg rename to plugins/system-tray/system-trays/sound/resources/audio-volume-muted-symbolic.svg diff --git a/plugins/sound/resources/slider_bg.png b/plugins/system-tray/system-trays/sound/resources/slider_bg.png similarity index 100% rename from plugins/sound/resources/slider_bg.png rename to plugins/system-tray/system-trays/sound/resources/slider_bg.png diff --git a/plugins/sound/resources/slider_handle.svg b/plugins/system-tray/system-trays/sound/resources/slider_handle.svg similarity index 100% rename from plugins/sound/resources/slider_handle.svg rename to plugins/system-tray/system-trays/sound/resources/slider_handle.svg diff --git a/plugins/sound/resources/sound.qrc b/plugins/system-tray/system-trays/sound/resources/sound.qrc similarity index 100% rename from plugins/sound/resources/sound.qrc rename to plugins/system-tray/system-trays/sound/resources/sound.qrc diff --git a/plugins/sound/sinkinputwidget.cpp b/plugins/system-tray/system-trays/sound/sinkinputwidget.cpp similarity index 100% rename from plugins/sound/sinkinputwidget.cpp rename to plugins/system-tray/system-trays/sound/sinkinputwidget.cpp diff --git a/plugins/sound/sinkinputwidget.h b/plugins/system-tray/system-trays/sound/sinkinputwidget.h similarity index 100% rename from plugins/sound/sinkinputwidget.h rename to plugins/system-tray/system-trays/sound/sinkinputwidget.h diff --git a/plugins/sound/sound.json b/plugins/system-tray/system-trays/sound/sound.json similarity index 100% rename from plugins/sound/sound.json rename to plugins/system-tray/system-trays/sound/sound.json diff --git a/plugins/sound/soundapplet.cpp b/plugins/system-tray/system-trays/sound/soundapplet.cpp similarity index 100% rename from plugins/sound/soundapplet.cpp rename to plugins/system-tray/system-trays/sound/soundapplet.cpp diff --git a/plugins/sound/soundapplet.h b/plugins/system-tray/system-trays/sound/soundapplet.h similarity index 100% rename from plugins/sound/soundapplet.h rename to plugins/system-tray/system-trays/sound/soundapplet.h diff --git a/plugins/sound/sounditem.cpp b/plugins/system-tray/system-trays/sound/sounditem.cpp similarity index 100% rename from plugins/sound/sounditem.cpp rename to plugins/system-tray/system-trays/sound/sounditem.cpp diff --git a/plugins/sound/sounditem.h b/plugins/system-tray/system-trays/sound/sounditem.h similarity index 100% rename from plugins/sound/sounditem.h rename to plugins/system-tray/system-trays/sound/sounditem.h diff --git a/plugins/sound/soundplugin.cpp b/plugins/system-tray/system-trays/sound/soundplugin.cpp similarity index 100% rename from plugins/sound/soundplugin.cpp rename to plugins/system-tray/system-trays/sound/soundplugin.cpp diff --git a/plugins/sound/soundplugin.h b/plugins/system-tray/system-trays/sound/soundplugin.h similarity index 93% rename from plugins/sound/soundplugin.h rename to plugins/system-tray/system-trays/sound/soundplugin.h index 42ed3b555..8def22b7d 100644 --- a/plugins/sound/soundplugin.h +++ b/plugins/system-tray/system-trays/sound/soundplugin.h @@ -30,8 +30,8 @@ class SoundPlugin : public QObject, PluginsItemInterface { Q_OBJECT - Q_INTERFACES(PluginsItemInterface) - Q_PLUGIN_METADATA(IID "com.deepin.dock.PluginsItemInterface" FILE "sound.json") +// Q_INTERFACES(PluginsItemInterface) +// Q_PLUGIN_METADATA(IID "com.deepin.dock.PluginsItemInterface" FILE "sound.json") public: explicit SoundPlugin(QObject *parent = 0); diff --git a/plugins/system-tray/system-trays/sound/soundtrayloader.cpp b/plugins/system-tray/system-trays/sound/soundtrayloader.cpp new file mode 100644 index 000000000..dabed34e8 --- /dev/null +++ b/plugins/system-tray/system-trays/sound/soundtrayloader.cpp @@ -0,0 +1,14 @@ +#include "soundtrayloader.h" +#include "soundtraywidget.h" + +#define SoundItemKey "system-tray-sound" +#define SoundService "com.deepin.daemon.Audio" + +SoundTrayLoader::SoundTrayLoader(QObject *parent) : AbstractTrayLoader(SoundService, parent) +{ +} + +void SoundTrayLoader::load() +{ + emit systemTrayAdded(SoundItemKey, new SoundTrayWidget); +} diff --git a/plugins/system-tray/system-trays/sound/soundtrayloader.h b/plugins/system-tray/system-trays/sound/soundtrayloader.h new file mode 100644 index 000000000..07710a0cd --- /dev/null +++ b/plugins/system-tray/system-trays/sound/soundtrayloader.h @@ -0,0 +1,18 @@ +#ifndef SOUNDTRAYLOADER_H +#define SOUNDTRAYLOADER_H + +#include "../abstracttrayloader.h" + +#include + +class SoundTrayLoader : public AbstractTrayLoader +{ + Q_OBJECT +public: + explicit SoundTrayLoader(QObject *parent = nullptr); + +public Q_SLOTS: + void load() Q_DECL_OVERRIDE; +}; + +#endif // SOUNDTRAYLOADER_H diff --git a/plugins/system-tray/system-trays/sound/soundtraywidget.cpp b/plugins/system-tray/system-trays/sound/soundtraywidget.cpp new file mode 100644 index 000000000..2a46d2082 --- /dev/null +++ b/plugins/system-tray/system-trays/sound/soundtraywidget.cpp @@ -0,0 +1,195 @@ +#include "soundtraywidget.h" +#include "sounditem.h" +#include "constants.h" + +#include +#include +#include +#include +#include +#include +#include "../widgets/tipswidget.h" + +// menu actions +#define MUTE "mute" +#define SETTINS "settings" + +DWIDGET_USE_NAMESPACE + +SoundTrayWidget::SoundTrayWidget(AbstractTrayWidget *parent) + : AbstractTrayWidget(parent), + m_tipsLabel(new TipsWidget(this)), + m_applet(new SoundApplet(this)), + m_sinkInter(nullptr) +{ + m_tipsLabel->setObjectName("sound"); + m_tipsLabel->setVisible(false); + + m_applet->setVisible(false); + + connect(m_applet, static_cast(&SoundApplet::defaultSinkChanged), this, &SoundTrayWidget::sinkChanged); + connect(m_applet, &SoundApplet::volumeChanged, this, &SoundTrayWidget::refreshTips, Qt::QueuedConnection); + connect(static_cast(qApp), &DApplication::iconThemeChanged, this, &SoundTrayWidget::updateIcon); +} + +void SoundTrayWidget::setActive(const bool active) +{ + +} + +void SoundTrayWidget::updateIcon() +{ + if (!m_sinkInter) + return; + + const double volmue = m_applet->volumeValue(); + const bool mute = m_sinkInter->mute(); + + QString iconString; + QString volumeString; + + if (mute) + volumeString = "muted"; + else if (volmue / 1000.0f >= double(2)/3) + volumeString = "high"; + else if (volmue / 1000.0f >= double(1)/3) + volumeString = "medium"; + else + volumeString = "low"; + + iconString = QString("audio-volume-%1-symbolic").arg(volumeString); + + const auto ratio = qApp->devicePixelRatio(); + const int iconSize = 16; + const QIcon icon = QIcon::fromTheme(iconString); + m_iconPixmap = icon.pixmap(iconSize * ratio, iconSize * ratio); + m_iconPixmap.setDevicePixelRatio(ratio); + + update(); +} + +void SoundTrayWidget::sendClick(uint8_t, int, int) +{ + +} + +const QImage SoundTrayWidget::trayImage() +{ + return m_iconPixmap.toImage(); +} + +QWidget *SoundTrayWidget::tipsWidget() +{ + refreshTips(true); + + m_tipsLabel->resize(m_tipsLabel->sizeHint().width() + 10, + m_tipsLabel->sizeHint().height()); + + return m_tipsLabel; +} + +QWidget *SoundTrayWidget::popupApplet() +{ + return m_applet; +} + +const QString SoundTrayWidget::contextMenu() const +{ + QList items; + items.reserve(2); + + QMap open; + open["itemId"] = MUTE; + if (m_sinkInter->mute()) + open["itemText"] = tr("Unmute"); + else + open["itemText"] = tr("Mute"); + open["isActive"] = true; + items.push_back(open); + + QMap settings; + settings["itemId"] = SETTINS; + settings["itemText"] = tr("Audio Settings"); + settings["isActive"] = true; + items.push_back(settings); + + QMap menu; + menu["items"] = items; + menu["checkableMenu"] = false; + menu["singleCheck"] = false; + + return QJsonDocument::fromVariant(menu).toJson(); +} + +void SoundTrayWidget::invokeMenuItem(const QString menuId, const bool checked) +{ + Q_UNUSED(checked); + + if (menuId == MUTE) + m_sinkInter->SetMuteQueued(!m_sinkInter->mute()); + else if (menuId == SETTINS) + DDBusSender() + .service("com.deepin.dde.ControlCenter") + .interface("com.deepin.dde.ControlCenter") + .path("/com/deepin/dde/ControlCenter") + .method(QString("ShowModule")) + .arg(QString("sound")) + .call(); +} + +QSize SoundTrayWidget::sizeHint() const +{ + return QSize(26, 26); +} + +void SoundTrayWidget::resizeEvent(QResizeEvent *e) +{ + QWidget::resizeEvent(e); + + updateIcon(); +} + +void SoundTrayWidget::wheelEvent(QWheelEvent *e) +{ + QWheelEvent *event = new QWheelEvent(e->pos(), e->delta(), e->buttons(), e->modifiers()); + qApp->postEvent(m_applet->mainSlider(), event); + + e->accept(); +} + +void SoundTrayWidget::paintEvent(QPaintEvent *e) +{ + QWidget::paintEvent(e); + + QPainter painter(this); + painter.drawPixmap(rect().center() - m_iconPixmap.rect().center() / m_iconPixmap.devicePixelRatioF(), m_iconPixmap); +} + +void SoundTrayWidget::refreshTips(const bool force) +{ + if (!force && !m_tipsLabel->isVisible()) + return; + + if(!m_sinkInter) + return; + + QString value; + if (m_sinkInter->mute()) { + value = QString("0") + '%'; + } else { + if (m_sinkInter->volume() * 1000 < m_applet->volumeValue()) + value = QString::number(m_applet->volumeValue() / 10) + '%'; + else + value = QString::number(int(m_sinkInter->volume() * 100)) + '%'; + } + m_tipsLabel->setText(QString(tr("Current Volume %1").arg(value))); +} + +void SoundTrayWidget::sinkChanged(DBusSink *sink) +{ + m_sinkInter = sink; + + connect(m_sinkInter, &DBusSink::MuteChanged, this, &SoundTrayWidget::updateIcon); + connect(m_sinkInter, &DBusSink::VolumeChanged, this, &SoundTrayWidget::updateIcon); + updateIcon(); +} diff --git a/plugins/system-tray/system-trays/sound/soundtraywidget.h b/plugins/system-tray/system-trays/sound/soundtraywidget.h new file mode 100644 index 000000000..638a48977 --- /dev/null +++ b/plugins/system-tray/system-trays/sound/soundtraywidget.h @@ -0,0 +1,44 @@ +#ifndef SOUNDTRAYWIDGET_H +#define SOUNDTRAYWIDGET_H + +#include "abstracttraywidget.h" +#include "soundapplet.h" +#include "dbus/dbussink.h" + +#include + +class TipsWidget; +class SoundTrayWidget : public AbstractTrayWidget +{ +public: + SoundTrayWidget(AbstractTrayWidget *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(); + + const QString contextMenu() const; + void invokeMenuItem(const QString menuId, const bool checked); + +protected: + QSize sizeHint() const Q_DECL_OVERRIDE; + void resizeEvent(QResizeEvent *e) Q_DECL_OVERRIDE; + void wheelEvent(QWheelEvent *e) Q_DECL_OVERRIDE; + void paintEvent(QPaintEvent *e) Q_DECL_OVERRIDE; + +private Q_SLOTS: + void refreshTips(const bool force = false); + void sinkChanged(DBusSink *sink); + +private: + TipsWidget *m_tipsLabel; + SoundApplet *m_applet; + DBusSink *m_sinkInter; + QPixmap m_iconPixmap; +}; + +#endif // SOUNDTRAYWIDGET_H diff --git a/plugins/system-tray/system-trays/systemtraysmanager.cpp b/plugins/system-tray/system-trays/systemtraysmanager.cpp new file mode 100644 index 000000000..02078642e --- /dev/null +++ b/plugins/system-tray/system-trays/systemtraysmanager.cpp @@ -0,0 +1,39 @@ +#include "systemtraysmanager.h" +#include "sound/soundtrayloader.h" +#include "shutdown/shutdowntrayloader.h" +#include "shutdown/powertrayloader.h" +#include "network/networktrayloader.h" + +SystemTraysManager::SystemTraysManager(QObject *parent) + : QObject(parent) +{ + AbstractTrayLoader *soundLoader = new SoundTrayLoader(this); + AbstractTrayLoader *shutdownLoader = new ShutdownTrayLoader(this); + AbstractTrayLoader *powerLoader = new PowerTrayLoader(this); + AbstractTrayLoader *networkLoader = new NetworkTrayLoader(this); + + m_loaderList.append(soundLoader); + m_loaderList.append(shutdownLoader); + m_loaderList.append(powerLoader); + m_loaderList.append(networkLoader); + + connect(soundLoader, &AbstractTrayLoader::systemTrayAdded, this, &SystemTraysManager::systemTrayWidgetAdded); + connect(soundLoader, &AbstractTrayLoader::systemTrayRemoved, this, &SystemTraysManager::systemTrayWidgetRemoved); + connect(shutdownLoader, &AbstractTrayLoader::systemTrayAdded, this, &SystemTraysManager::systemTrayWidgetAdded); + connect(shutdownLoader, &AbstractTrayLoader::systemTrayRemoved, this, &SystemTraysManager::systemTrayWidgetRemoved); + connect(powerLoader, &AbstractTrayLoader::systemTrayAdded, this, &SystemTraysManager::systemTrayWidgetAdded); + connect(powerLoader, &AbstractTrayLoader::systemTrayRemoved, this, &SystemTraysManager::systemTrayWidgetRemoved); + connect(networkLoader, &AbstractTrayLoader::systemTrayAdded, this, &SystemTraysManager::systemTrayWidgetAdded); + connect(networkLoader, &AbstractTrayLoader::systemTrayRemoved, this, &SystemTraysManager::systemTrayWidgetRemoved); +} + +void SystemTraysManager::startLoad() +{ + for (auto loader : m_loaderList) { + if (loader->waitService() && !loader->serviceExist()) { + loader->waitServiceForLoad(); + continue; + } + loader->load(); + } +} diff --git a/plugins/system-tray/system-trays/systemtraysmanager.h b/plugins/system-tray/system-trays/systemtraysmanager.h new file mode 100644 index 000000000..fd63a8e21 --- /dev/null +++ b/plugins/system-tray/system-trays/systemtraysmanager.h @@ -0,0 +1,27 @@ +#ifndef SYSTEMTRAYSMANAGER_H +#define SYSTEMTRAYSMANAGER_H + +#include "abstracttrayloader.h" +#include "abstracttraywidget.h" + +#include + +class SystemTraysManager : public QObject +{ + Q_OBJECT + +public: + explicit SystemTraysManager(QObject *parent = nullptr); + +Q_SIGNALS: + void systemTrayWidgetAdded(const QString &itemKey, AbstractTrayWidget *trayWidget); + void systemTrayWidgetRemoved(const QString &itemKey); + +public Q_SLOTS: + void startLoad(); + +private: + QList m_loaderList; +}; + +#endif // SYSTEMTRAYSMANAGER_H diff --git a/plugins/system-tray/systemtrayplugin.cpp b/plugins/system-tray/systemtrayplugin.cpp index 4a63f2074..ac37ba60c 100644 --- a/plugins/system-tray/systemtrayplugin.cpp +++ b/plugins/system-tray/systemtrayplugin.cpp @@ -37,6 +37,7 @@ SystemTrayPlugin::SystemTrayPlugin(QObject *parent) : QObject(parent), m_trayInter(new DBusTrayManager(this)), + m_systemTraysLoader(new SystemTraysManager(this)), m_trayApplet(new TrayApplet), m_tipsLabel(new TipsWidget), @@ -77,13 +78,17 @@ void SystemTrayPlugin::init(PluginProxyInterface *proxyInter) connect(m_trayInter, &DBusTrayManager::TrayIconsChanged, this, &SystemTrayPlugin::trayListChanged); connect(m_trayInter, &DBusTrayManager::Changed, this, &SystemTrayPlugin::trayChanged); + connect(m_systemTraysLoader, &SystemTraysManager::systemTrayWidgetAdded, this, &SystemTrayPlugin::addTrayWidget); + connect(m_systemTraysLoader, &SystemTraysManager::systemTrayWidgetRemoved, this, &SystemTrayPlugin::trayRemoved); + m_trayInter->Manage(); switchToMode(displayMode()); - QTimer::singleShot(1, this, &SystemTrayPlugin::trayListChanged); - QTimer::singleShot(2, this, &SystemTrayPlugin::loadIndicator); - QTimer::singleShot(3, this, &SystemTrayPlugin::sniItemsChanged); + QTimer::singleShot(0, this, &SystemTrayPlugin::trayListChanged); + QTimer::singleShot(0, this, &SystemTrayPlugin::loadIndicator); + QTimer::singleShot(0, this, &SystemTrayPlugin::sniItemsChanged); + QTimer::singleShot(0, m_systemTraysLoader, &SystemTraysManager::startLoad); } void SystemTrayPlugin::displayModeChanged(const Dock::DisplayMode mode) @@ -106,7 +111,7 @@ QWidget *SystemTrayPlugin::itemWidget(const QString &itemKey) return m_fashionItem; } - return m_trayList.value(itemKey); + return m_trayMap.value(itemKey); } QWidget *SystemTrayPlugin::itemTipsWidget(const QString &itemKey) @@ -128,7 +133,7 @@ QWidget *SystemTrayPlugin::itemPopupApplet(const QString &itemKey) return nullptr; } - Q_ASSERT(m_trayList.size()); + Q_ASSERT(m_trayMap.size()); updateTipsContent(); @@ -184,7 +189,7 @@ void SystemTrayPlugin::setItemIsInContainer(const QString &itemKey, const bool c void SystemTrayPlugin::updateTipsContent() { - auto trayList = m_trayList.values(); + auto trayList = m_trayMap.values(); m_trayApplet->clear(); m_trayApplet->addWidgets(trayList); @@ -219,7 +224,7 @@ void SystemTrayPlugin::sniItemsChanged() for (auto item : itemServicePaths) { sinTrayKeyList << SNITrayWidget::toSNIKey(item); } - for (auto itemKey : m_trayList.keys()) + for (auto itemKey : m_trayMap.keys()) if (!sinTrayKeyList.contains(itemKey) && SNITrayWidget::isSNIKey(itemKey)) { trayRemoved(itemKey); } @@ -238,7 +243,7 @@ void SystemTrayPlugin::trayListChanged() trayList << XWindowTrayWidget::toTrayWidgetId(winid); } - for (auto tray : m_trayList.keys()) + for (auto tray : m_trayMap.keys()) if (!trayList.contains(tray) && XWindowTrayWidget::isWinIdKey(tray)) { trayRemoved(tray); } @@ -248,14 +253,14 @@ void SystemTrayPlugin::trayListChanged() } } -void SystemTrayPlugin::addTrayWidget(const QString &itemKey, AbstractTrayWidget * trayWidget) +void SystemTrayPlugin::addTrayWidget(const QString &itemKey, AbstractTrayWidget *trayWidget) { if (!trayWidget) { return; } - if (!m_trayList.values().contains(trayWidget)) { - m_trayList.insert(itemKey, trayWidget); + if (!m_trayMap.values().contains(trayWidget)) { + m_trayMap.insert(itemKey, trayWidget); } if (displayMode() == Dock::Efficient) { @@ -266,9 +271,9 @@ void SystemTrayPlugin::addTrayWidget(const QString &itemKey, AbstractTrayWidget } } -void SystemTrayPlugin::trayAdded(const QString itemKey) +void SystemTrayPlugin::trayAdded(const QString &itemKey) { - if (m_trayList.contains(itemKey)) { + if (m_trayMap.contains(itemKey)) { return; } @@ -286,12 +291,12 @@ void SystemTrayPlugin::trayAdded(const QString itemKey) IndicatorTray *trayWidget = nullptr; QString indicatorKey = IndicatorTrayWidget::toIndicatorId(itemKey); - if (!m_indicatorList.keys().contains(itemKey)) { + if (!m_indicatorMap.keys().contains(itemKey)) { trayWidget = new IndicatorTray(indicatorKey); - m_indicatorList[indicatorKey] = trayWidget; + m_indicatorMap[indicatorKey] = trayWidget; } else { - trayWidget = m_indicatorList[itemKey]; + trayWidget = m_indicatorMap[itemKey]; } connect(trayWidget, &IndicatorTray::delayLoaded, @@ -306,13 +311,13 @@ void SystemTrayPlugin::trayAdded(const QString itemKey) } } -void SystemTrayPlugin::trayRemoved(const QString itemKey) +void SystemTrayPlugin::trayRemoved(const QString &itemKey) { - if (!m_trayList.contains(itemKey)) { + if (!m_trayMap.contains(itemKey)) { return; } - AbstractTrayWidget *widget = m_trayList.take(itemKey); + AbstractTrayWidget *widget = m_trayMap.take(itemKey); m_fashionItem->trayWidgetRemoved(widget); m_proxyInter->itemRemoved(this, itemKey); widget->deleteLater(); @@ -325,11 +330,11 @@ void SystemTrayPlugin::trayRemoved(const QString itemKey) void SystemTrayPlugin::trayChanged(quint32 winId) { QString itemKey = XWindowTrayWidget::toTrayWidgetId(winId); - if (!m_trayList.contains(itemKey)) { + if (!m_trayMap.contains(itemKey)) { return; } - m_trayList.value(itemKey)->updateIcon(); + m_trayMap.value(itemKey)->updateIcon(); if (m_trayApplet->isVisible()) { updateTipsContent(); @@ -339,7 +344,7 @@ void SystemTrayPlugin::trayChanged(quint32 winId) void SystemTrayPlugin::sniItemIconChanged() { AbstractTrayWidget *trayWidget = static_cast(sender()); - if (!m_trayList.values().contains(trayWidget)) { + if (!m_trayMap.values().contains(trayWidget)) { return; } } @@ -347,19 +352,19 @@ void SystemTrayPlugin::sniItemIconChanged() void SystemTrayPlugin::switchToMode(const Dock::DisplayMode mode) { if (mode == Dock::Fashion) { - for (auto itemKey : m_trayList.keys()) { + for (auto itemKey : m_trayMap.keys()) { m_proxyInter->itemRemoved(this, itemKey); } - if (m_trayList.isEmpty()) { + if (m_trayMap.isEmpty()) { m_proxyInter->itemRemoved(this, FASHION_MODE_ITEM); } else { - m_fashionItem->setTrayWidgets(m_trayList.values()); + m_fashionItem->setTrayWidgets(m_trayMap.values()); m_proxyInter->itemAdded(this, FASHION_MODE_ITEM); } } else { m_fashionItem->clearTrayWidgets(); m_proxyInter->itemRemoved(this, FASHION_MODE_ITEM); - for (auto itemKey : m_trayList.keys()) { + for (auto itemKey : m_trayMap.keys()) { m_proxyInter->itemAdded(this, itemKey); } } diff --git a/plugins/system-tray/systemtrayplugin.h b/plugins/system-tray/systemtrayplugin.h index ab13a4105..e68622151 100644 --- a/plugins/system-tray/systemtrayplugin.h +++ b/plugins/system-tray/systemtrayplugin.h @@ -27,10 +27,10 @@ #include "trayapplet.h" #include "sni/statusnotifierwatcher.h" #include "dbus/dbustraymanager.h" - #include "xwindowtraywidget.h" #include "indicatortray.h" #include "indicatortraywidget.h" +#include "system-trays/systemtraysmanager.h" #include #include @@ -65,13 +65,13 @@ private: void loadIndicator(); void updateTipsContent(); const QString getWindowClass(quint32 winId); - void addTrayWidget(const QString &itemKey, AbstractTrayWidget * trayWidget); private slots: + void addTrayWidget(const QString &itemKey, AbstractTrayWidget *trayWidget); void sniItemsChanged(); void trayListChanged(); - void trayAdded(const QString itemKey); - void trayRemoved(const QString itemKey); + void trayAdded(const QString &itemKey); + void trayRemoved(const QString &itemKey); void trayChanged(quint32 winId); void sniItemIconChanged(); void switchToMode(const Dock::DisplayMode mode); @@ -80,8 +80,10 @@ private: DBusTrayManager *m_trayInter; StatusNotifierWatcher *m_sniWatcher; FashionTrayItem *m_fashionItem; - QMap m_trayList; - QMap m_indicatorList; + SystemTraysManager *m_systemTraysLoader; + + QMap m_trayMap; + QMap m_indicatorMap; TrayApplet *m_trayApplet; TipsWidget *m_tipsLabel;