diff --git a/sensors b/sensors
new file mode 100644
index 0000000..095e48b
--- /dev/null
+++ b/sensors
@@ -0,0 +1,284 @@
+cpu
+cpu/all
+cpu/all/averageFrequency
+cpu/all/averageTemperature
+cpu/all/coreCount
+cpu/all/cpuCount
+cpu/all/maximumFrequency
+cpu/all/maximumTemperature
+cpu/all/minimumFrequency
+cpu/all/minimumTemperature
+cpu/all/name
+cpu/all/system
+cpu/all/usage
+cpu/all/user
+cpu/all/wait
+cpu/cpu0
+cpu/cpu0/frequency
+cpu/cpu0/name
+cpu/cpu0/system
+cpu/cpu0/temperature
+cpu/cpu0/usage
+cpu/cpu0/user
+cpu/cpu0/wait
+cpu/cpu1
+cpu/cpu1/frequency
+cpu/cpu1/name
+cpu/cpu1/system
+cpu/cpu1/temperature
+cpu/cpu1/usage
+cpu/cpu1/user
+cpu/cpu1/wait
+cpu/cpu10
+cpu/cpu10/frequency
+cpu/cpu10/name
+cpu/cpu10/system
+cpu/cpu10/temperature
+cpu/cpu10/usage
+cpu/cpu10/user
+cpu/cpu10/wait
+cpu/cpu11
+cpu/cpu11/frequency
+cpu/cpu11/name
+cpu/cpu11/system
+cpu/cpu11/temperature
+cpu/cpu11/usage
+cpu/cpu11/user
+cpu/cpu11/wait
+cpu/cpu12
+cpu/cpu12/frequency
+cpu/cpu12/name
+cpu/cpu12/system
+cpu/cpu12/temperature
+cpu/cpu12/usage
+cpu/cpu12/user
+cpu/cpu12/wait
+cpu/cpu13
+cpu/cpu13/frequency
+cpu/cpu13/name
+cpu/cpu13/system
+cpu/cpu13/temperature
+cpu/cpu13/usage
+cpu/cpu13/user
+cpu/cpu13/wait
+cpu/cpu14
+cpu/cpu14/frequency
+cpu/cpu14/name
+cpu/cpu14/system
+cpu/cpu14/temperature
+cpu/cpu14/usage
+cpu/cpu14/user
+cpu/cpu14/wait
+cpu/cpu15
+cpu/cpu15/frequency
+cpu/cpu15/name
+cpu/cpu15/system
+cpu/cpu15/temperature
+cpu/cpu15/usage
+cpu/cpu15/user
+cpu/cpu15/wait
+cpu/cpu16
+cpu/cpu16/frequency
+cpu/cpu16/name
+cpu/cpu16/system
+cpu/cpu16/temperature
+cpu/cpu16/usage
+cpu/cpu16/user
+cpu/cpu16/wait
+cpu/cpu17
+cpu/cpu17/frequency
+cpu/cpu17/name
+cpu/cpu17/system
+cpu/cpu17/temperature
+cpu/cpu17/usage
+cpu/cpu17/user
+cpu/cpu17/wait
+cpu/cpu18
+cpu/cpu18/frequency
+cpu/cpu18/name
+cpu/cpu18/system
+cpu/cpu18/temperature
+cpu/cpu18/usage
+cpu/cpu18/user
+cpu/cpu18/wait
+cpu/cpu19
+cpu/cpu19/frequency
+cpu/cpu19/name
+cpu/cpu19/system
+cpu/cpu19/temperature
+cpu/cpu19/usage
+cpu/cpu19/user
+cpu/cpu19/wait
+cpu/cpu2
+cpu/cpu2/frequency
+cpu/cpu2/name
+cpu/cpu2/system
+cpu/cpu2/temperature
+cpu/cpu2/usage
+cpu/cpu2/user
+cpu/cpu2/wait
+cpu/cpu3
+cpu/cpu3/frequency
+cpu/cpu3/name
+cpu/cpu3/system
+cpu/cpu3/temperature
+cpu/cpu3/usage
+cpu/cpu3/user
+cpu/cpu3/wait
+cpu/cpu4
+cpu/cpu4/frequency
+cpu/cpu4/name
+cpu/cpu4/system
+cpu/cpu4/temperature
+cpu/cpu4/usage
+cpu/cpu4/user
+cpu/cpu4/wait
+cpu/cpu5
+cpu/cpu5/frequency
+cpu/cpu5/name
+cpu/cpu5/system
+cpu/cpu5/temperature
+cpu/cpu5/usage
+cpu/cpu5/user
+cpu/cpu5/wait
+cpu/cpu6
+cpu/cpu6/frequency
+cpu/cpu6/name
+cpu/cpu6/system
+cpu/cpu6/temperature
+cpu/cpu6/usage
+cpu/cpu6/user
+cpu/cpu6/wait
+cpu/cpu7
+cpu/cpu7/frequency
+cpu/cpu7/name
+cpu/cpu7/system
+cpu/cpu7/temperature
+cpu/cpu7/usage
+cpu/cpu7/user
+cpu/cpu7/wait
+cpu/cpu8
+cpu/cpu8/frequency
+cpu/cpu8/name
+cpu/cpu8/system
+cpu/cpu8/temperature
+cpu/cpu8/usage
+cpu/cpu8/user
+cpu/cpu8/wait
+cpu/cpu9
+cpu/cpu9/frequency
+cpu/cpu9/name
+cpu/cpu9/system
+cpu/cpu9/temperature
+cpu/cpu9/usage
+cpu/cpu9/user
+cpu/cpu9/wait
+cpu/loadaverages
+cpu/loadaverages/loadaverage1
+cpu/loadaverages/loadaverage15
+cpu/loadaverages/loadaverage5
+disk
+disk/52e29d18-ad4d-47ad-98c4-a09ab0914a85
+disk/52e29d18-ad4d-47ad-98c4-a09ab0914a85/free
+disk/52e29d18-ad4d-47ad-98c4-a09ab0914a85/freePercent
+disk/52e29d18-ad4d-47ad-98c4-a09ab0914a85/name
+disk/52e29d18-ad4d-47ad-98c4-a09ab0914a85/read
+disk/52e29d18-ad4d-47ad-98c4-a09ab0914a85/total
+disk/52e29d18-ad4d-47ad-98c4-a09ab0914a85/used
+disk/52e29d18-ad4d-47ad-98c4-a09ab0914a85/usedPercent
+disk/52e29d18-ad4d-47ad-98c4-a09ab0914a85/write
+disk/all
+disk/all/free
+disk/all/freePercent
+disk/all/read
+disk/all/total
+disk/all/used
+disk/all/usedPercent
+disk/all/write
+disk/d10dd7bf-e382-4e44-83d7-9af6c6df7258
+disk/d10dd7bf-e382-4e44-83d7-9af6c6df7258/free
+disk/d10dd7bf-e382-4e44-83d7-9af6c6df7258/freePercent
+disk/d10dd7bf-e382-4e44-83d7-9af6c6df7258/name
+disk/d10dd7bf-e382-4e44-83d7-9af6c6df7258/read
+disk/d10dd7bf-e382-4e44-83d7-9af6c6df7258/total
+disk/d10dd7bf-e382-4e44-83d7-9af6c6df7258/used
+disk/d10dd7bf-e382-4e44-83d7-9af6c6df7258/usedPercent
+disk/d10dd7bf-e382-4e44-83d7-9af6c6df7258/write
+disk/nvme0n1
+disk/nvme0n1/name
+disk/nvme0n1/read
+disk/nvme0n1/total
+disk/nvme0n1/write
+gpu
+lmsensors
+lmsensors/BAT0-acpi-0
+lmsensors/BAT0-acpi-0/in0
+lmsensors/acpitz-acpi-0
+lmsensors/acpitz-acpi-0/temp1
+lmsensors/iwlwifi_1-virtual-0
+lmsensors/iwlwifi_1-virtual-0/temp1
+lmsensors/nvme-pci-0400
+lmsensors/nvme-pci-0400/temp1
+lmsensors/thinkpad-isa-0000
+lmsensors/thinkpad-isa-0000/fan1
+lmsensors/thinkpad-isa-0000/fan2
+lmsensors/thinkpad-isa-0000/temp1
+lmsensors/thinkpad-isa-0000/temp2
+lmsensors/thinkpad-isa-0000/temp3
+lmsensors/thinkpad-isa-0000/temp4
+lmsensors/thinkpad-isa-0000/temp5
+lmsensors/thinkpad-isa-0000/temp6
+lmsensors/thinkpad-isa-0000/temp7
+lmsensors/thinkpad-isa-0000/temp8
+lmsensors/ucsi_source_psy_USBC000:001-isa-0000
+lmsensors/ucsi_source_psy_USBC000:001-isa-0000/curr1
+lmsensors/ucsi_source_psy_USBC000:001-isa-0000/in0
+lmsensors/ucsi_source_psy_USBC000:002-isa-0000
+lmsensors/ucsi_source_psy_USBC000:002-isa-0000/curr1
+lmsensors/ucsi_source_psy_USBC000:002-isa-0000/in0
+memory
+memory/physical
+memory/physical/application
+memory/physical/applicationPercent
+memory/physical/buffer
+memory/physical/bufferPercent
+memory/physical/cache
+memory/physical/cachePercent
+memory/physical/free
+memory/physical/freePercent
+memory/physical/total
+memory/physical/used
+memory/physical/usedPercent
+memory/swap
+memory/swap/free
+memory/swap/freePercent
+memory/swap/total
+memory/swap/used
+memory/swap/usedPercent
+os
+os/kernel
+os/kernel/name
+os/kernel/prettyName
+os/kernel/version
+os/plasma
+os/plasma/kfVersion
+os/plasma/plasmaVersion
+os/plasma/qtVersion
+os/plasma/windowsystem
+os/system
+os/system/hostname
+os/system/logo
+os/system/name
+os/system/prettyName
+os/system/uptime
+os/system/url
+os/system/version
+power
+power/4870
+power/4870/capacity
+power/4870/charge
+power/4870/chargePercentage
+power/4870/chargeRate
+power/4870/design
+power/4870/health
+power/4870/name
diff --git a/sources/3rdparty/fontdialog/fontdialog.cpp b/sources/3rdparty/fontdialog/fontdialog.cpp
index a659347..2cfb6cf 100644
--- a/sources/3rdparty/fontdialog/fontdialog.cpp
+++ b/sources/3rdparty/fontdialog/fontdialog.cpp
@@ -39,81 +39,6 @@ void CFont::setCurrentColor(const QColor color)
}
-int CFont::html2QFont(const int htmlWeight)
-{
- int weight = 16;
- switch(htmlWeight) {
- case 100:
- weight = 16;
- break;
- case 200:
- case 300:
- weight = 25;
- break;
- case 400:
- weight = 50;
- break;
- case 500:
- case 600:
- weight = 63;
- break;
- case 700:
- case 800:
- weight = 75;
- break;
- case 900:
- weight = 87;
- break;
- default:
- break;
- }
-
- return weight;
-}
-
-
-int CFont::qFont2html(const int weight)
-{
- int htmlWeight = 400;
- switch(weight) {
- case 16:
- htmlWeight = 100;
- break;
- case 25:
- htmlWeight = 300;
- break;
- case 50:
- htmlWeight = 400;
- break;
- case 63:
- htmlWeight = 600;
- break;
- case 75:
- htmlWeight = 800;
- break;
- case 87:
- htmlWeight = 900;
- break;
- default:
- break;
- }
-
- return htmlWeight;
-}
-
-
-int CFont::htmlWeight()
-{
- return CFont::qFont2html(weight());
-}
-
-
-void CFont::setHtmlWeight(const int htmlWeight)
-{
- setWeight(CFont::html2QFont(htmlWeight));
-}
-
-
CFont CFont::fromQFont(const QFont font, const QColor color)
{
return CFont(font.family(), font.pointSize(), font.weight(), font.italic(), color);
diff --git a/sources/3rdparty/fontdialog/fontdialog.h b/sources/3rdparty/fontdialog/fontdialog.h
index 3a16d4b..6302e33 100644
--- a/sources/3rdparty/fontdialog/fontdialog.h
+++ b/sources/3rdparty/fontdialog/fontdialog.h
@@ -34,11 +34,6 @@ public:
// color properties
QColor color();
void setCurrentColor(const QColor color);
- // html weight properties
- static int html2QFont(const int htmlWeight);
- static int qFont2html(const int weight);
- int htmlWeight();
- void setHtmlWeight(const int htmlWeight);
// conversion to QFont
static CFont fromQFont(const QFont font,
const QColor color = QColor(QString("#000000")));
diff --git a/sources/awesome-widget/CMakeLists.txt b/sources/awesome-widget/CMakeLists.txt
index fced7ab..7fd254c 100644
--- a/sources/awesome-widget/CMakeLists.txt
+++ b/sources/awesome-widget/CMakeLists.txt
@@ -1,7 +1,7 @@
set(SUBPROJECT plasma_applet_awesome-widget)
message(STATUS "Subproject ${SUBPROJECT}")
-configure_file(metadata.desktop ${CMAKE_CURRENT_SOURCE_DIR}/package/metadata.desktop)
+configure_file(metadata.json ${CMAKE_CURRENT_SOURCE_DIR}/package/metadata.json)
add_subdirectory(plugin)
plasma_install_package(package org.kde.plasma.awesomewidget)
diff --git a/sources/awesome-widget/metadata.desktop b/sources/awesome-widget/metadata.desktop
deleted file mode 100644
index 9b30552..0000000
--- a/sources/awesome-widget/metadata.desktop
+++ /dev/null
@@ -1,26 +0,0 @@
-[Desktop Entry]
-Encoding=UTF-8
-Name=Awesome Widget
-Comment=A minimalistic Plasmoid
-Comment[en]=A minimalistic Plasmoid
-Comment[es]=Un plasmoide minimalista
-Comment[es]=Un script Plasmoïde minimaliste
-Comment[pt_BR]=Um script Plasmoid
-Comment[ru]=Минималистичный плазмоид
-Comment[uk]=Мінімалістичний плазмоїд
-X-KDE-ServiceTypes=Plasma/Applet
-Type=Service
-Icon=utilities-system-monitor
-
-X-KDE-ServiceTypes=Plasma/Applet
-X-Plasma-API=declarativeappletscript
-X-Plasma-MainScript=ui/main.qml
-
-X-KDE-PluginInfo-Author=Evgeniy Alekseev aka arcanis
-X-KDE-PluginInfo-Email=esalexeev@gmail.com
-X-KDE-PluginInfo-Name=org.kde.plasma.awesomewidget
-X-KDE-PluginInfo-Version=@PROJECT_VERSION@
-X-KDE-PluginInfo-Website=https://arcanis.me/projects/awesome-widgets/
-X-KDE-PluginInfo-Category=System Information
-X-KDE-PluginInfo-License=GPLv3
-X-KDE-PluginInfo-EnabledByDefault=true
diff --git a/sources/awesome-widget/metadata.json b/sources/awesome-widget/metadata.json
index 0f83643..d59bfa1 100644
--- a/sources/awesome-widget/metadata.json
+++ b/sources/awesome-widget/metadata.json
@@ -1,4 +1,5 @@
{
+ "KPackageStructure": "Plasma/Applet",
"KPlugin": {
"Authors": [
{
@@ -18,12 +19,8 @@
"Id": "org.kde.plasma.awesomewidget",
"License": "GPLv3",
"Name": "Awesome Widget",
- "ServiceTypes": [
- "Plasma/Applet"
- ],
"Version": "@PROJECT_VERSION@",
"Website": "https://arcanis.me/projects/awesome-widgets/"
},
- "X-Plasma-API": "declarativeappletscript",
- "X-Plasma-MainScript": "ui/main.qml"
+ "X-Plasma-API-Minimum-Version": "6.0"
}
diff --git a/sources/awesome-widget/package/contents/config/config.qml b/sources/awesome-widget/package/contents/config/config.qml
index ad08409..fd6a9c8 100644
--- a/sources/awesome-widget/package/contents/config/config.qml
+++ b/sources/awesome-widget/package/contents/config/config.qml
@@ -15,7 +15,7 @@
* along with awesome-widgets. If not, see http://www.gnu.org/licenses/ *
***************************************************************************/
-import QtQuick 2.0
+import QtQuick 2.15
import org.kde.plasma.configuration 2.0
diff --git a/sources/awesome-widget/package/contents/config/main.xml b/sources/awesome-widget/package/contents/config/main.xml
index 063a99e..b5d715e 100644
--- a/sources/awesome-widget/package/contents/config/main.xml
+++ b/sources/awesome-widget/package/contents/config/main.xml
@@ -7,150 +7,150 @@
-
+
[cpu: $cpu%] [mem: $mem%] [swap: $swap%] [$netdev: $down/$upKB/s]
-
+
true
-
+
true
-
+
false
-
+
false
-
+
true
-
+
true
-
+
true
-
+
0
-
+
0
-
+
1000
-
+
0
-
+
Celsius
-
+
$hh:$mm
-
+
$dd,$hh,$mm
-
+
(*)
-
+
( )
-
+
100
-
+
false
-
+
-
+
100
-
+
true
-
+
#ffffff
-
+
true
-
+
#ff0000
-
+
true
-
+
#00ff00
-
+
true
-
+
#0000ff
-
+
true
-
+
#ffff00
-
+
true
-
+
#00ffff
-
+
#ff00ff
-
+
true
-
+
#008800
-
+
#880000
-
+
center
-
+
Terminus
-
+
12
-
+
#000000
-
+
normal
-
+
normal
-
+
normal
-
+
#000000
diff --git a/sources/awesome-widget/package/contents/ui/about.qml b/sources/awesome-widget/package/contents/ui/about.qml
index 15ec0de..5b5d9a2 100644
--- a/sources/awesome-widget/package/contents/ui/about.qml
+++ b/sources/awesome-widget/package/contents/ui/about.qml
@@ -15,7 +15,7 @@
* along with awesome-widgets. If not, see http://www.gnu.org/licenses/ *
***************************************************************************/
-import QtQuick 2.0
+import QtQuick 2.15
import org.kde.plasma.private.awesomewidget 1.0
diff --git a/sources/awesome-widget/package/contents/ui/advanced.qml b/sources/awesome-widget/package/contents/ui/advanced.qml
index a4d29a8..7f77862 100644
--- a/sources/awesome-widget/package/contents/ui/advanced.qml
+++ b/sources/awesome-widget/package/contents/ui/advanced.qml
@@ -15,8 +15,8 @@
* along with awesome-widgets. If not, see http://www.gnu.org/licenses/ *
***************************************************************************/
-import QtQuick 2.0
-import QtQuick.Controls 1.3 as QtControls
+import QtQuick 2.15
+import QtQuick.Controls
import org.kde.plasma.private.awesomewidget 1.0
@@ -165,7 +165,7 @@ Item {
]
text: i18n("Temperature units")
value: plasmoid.configuration.tempUnits
- onValueEdited: cfg_tempUnits = newValue
+ onValueEdited: newValue => cfg_tempUnits = newValue
}
LineSelector {
@@ -192,13 +192,11 @@ Item {
value: plasmoid.configuration.acOffline
}
- QtControls.GroupBox {
- height: implicitHeight
+ GroupBox {
width: parent.width
title: i18n("Actions")
Column {
- height: implicitHeight
width: parent.width
ButtonSelector {
value: i18n("Drop key cache")
@@ -226,13 +224,11 @@ Item {
}
}
- QtControls.GroupBox {
- height: implicitHeight
+ GroupBox {
width: parent.width
title: i18n("Telemetry")
Column {
- height: implicitHeight
width: parent.width
CheckBoxSelector {
id: telemetryRemote
diff --git a/sources/awesome-widget/package/contents/ui/appearance.qml b/sources/awesome-widget/package/contents/ui/appearance.qml
index f4c9b2e..de895e0 100644
--- a/sources/awesome-widget/package/contents/ui/appearance.qml
+++ b/sources/awesome-widget/package/contents/ui/appearance.qml
@@ -15,7 +15,7 @@
* along with awesome-widgets. If not, see http://www.gnu.org/licenses/ *
***************************************************************************/
-import QtQuick 2.0
+import QtQuick 2.15
import org.kde.plasma.private.awesomewidget 1.0
import "."
@@ -75,7 +75,7 @@ Item {
model: General.fontWeightModel
text: i18n("Font weight")
value: plasmoid.configuration.fontWeight
- onValueEdited: cfg_fontWeight = newValue
+ onValueEdited: newValue => cfg_fontWeight = newValue
}
ComboBoxSelector {
@@ -83,7 +83,7 @@ Item {
model: General.fontStyleModel
text: i18n("Font style")
value: plasmoid.configuration.fontStyle
- onValueEdited: cfg_fontStyle = newValue
+ onValueEdited: newValue => cfg_fontStyle = newValue
}
ColorSelector {
@@ -97,7 +97,7 @@ Item {
model: General.textStyleModel
text: i18n("Style")
value: plasmoid.configuration.textStyle
- onValueEdited: cfg_textStyle = newValue
+ onValueEdited: newValue => cfg_textStyle = newValue
}
ColorSelector {
diff --git a/sources/awesome-widget/package/contents/ui/dataengine.qml b/sources/awesome-widget/package/contents/ui/dataengine.qml
index 3829673..7af7fbf 100644
--- a/sources/awesome-widget/package/contents/ui/dataengine.qml
+++ b/sources/awesome-widget/package/contents/ui/dataengine.qml
@@ -15,9 +15,8 @@
* along with awesome-widgets. If not, see http://www.gnu.org/licenses/ *
***************************************************************************/
-import QtQuick 2.0
-import QtQuick.Controls 1.3 as QtControls
-import QtQuick.Dialogs 1.1 as QtDialogs
+import QtQuick 2.15
+import QtQuick.Controls
import org.kde.plasma.private.awesomewidget 1.0
@@ -48,18 +47,18 @@ Item {
Column {
id: pageColumn
anchors.fill: parent
- QtControls.GroupBox {
+ GroupBox {
height: implicitHeight
width: parent.width
title: i18n("ACPI")
LineSelector {
text: i18n("ACPI path")
value: cfg_dataengine["ACPIPATH"]
- onValueEdited: cfg_dataengine["ACPIPATH"] = newValue
+ onValueEdited: newValue => cfg_dataengine["ACPIPATH"] = newValue
}
}
- QtControls.GroupBox {
+ GroupBox {
height: implicitHeight
width: parent.width
title: i18n("GPU")
@@ -84,11 +83,11 @@ Item {
]
text: i18n("GPU device")
value: cfg_dataengine["GPUDEV"]
- onValueEdited: cfg_dataengine["GPUDEV"] = newValue
+ onValueEdited: newValue => cfg_dataengine["GPUDEV"] = newValue
}
}
- QtControls.GroupBox {
+ GroupBox {
height: implicitHeight
width: parent.width
title: i18n("HDD temperature")
@@ -99,18 +98,18 @@ Item {
id: hdd
text: i18n("HDD")
value: cfg_dataengine["HDDDEV"]
- onValueEdited: cfg_dataengine["HDDDEV"] = newValue
+ onValueEdited: newValue => cfg_dataengine["HDDDEV"] = newValue
}
LineSelector {
text: i18n("hddtemp cmd")
value: cfg_dataengine["HDDTEMPCMD"]
- onValueEdited: cfg_dataengine["HDDTEMPCMD"] = newValue
+ onValueEdited: newValue => cfg_dataengine["HDDTEMPCMD"] = newValue
}
}
}
- QtControls.GroupBox {
+ GroupBox {
height: implicitHeight
width: parent.width
title: i18n("Player")
@@ -123,7 +122,7 @@ Item {
stepSize: 1
text: i18n("Player data symbols")
value: cfg_dataengine["PLAYERSYMBOLS"]
- onValueEdited: cfg_dataengine["PLAYERSYMBOLS"] = newValue
+ onValueEdited: newValue => cfg_dataengine["PLAYERSYMBOLS"] = newValue
}
ComboBoxSelector {
@@ -143,7 +142,7 @@ Item {
]
text: i18n("Music player")
value: cfg_dataengine["PLAYER"]
- onValueEdited: cfg_dataengine["PLAYER"] = newValue
+ onValueEdited: newValue => cfg_dataengine["PLAYER"] = newValue
}
ComboBoxSelector {
@@ -194,7 +193,7 @@ Item {
LineSelector {
text: i18n("MPD address")
value: cfg_dataengine["MPDADDRESS"]
- onValueEdited: cfg_dataengine["MPDADDRESS"] = newValue
+ onValueEdited: newValue => cfg_dataengine["MPDADDRESS"] = newValue
}
IntegerSelector {
@@ -203,12 +202,12 @@ Item {
stepSize: 1
text: i18n("MPD port")
value: cfg_dataengine["MPDPORT"]
- onValueEdited: cfg_dataengine["MPDPORT"] = newValue
+ onValueEdited: newValue => cfg_dataengine["MPDPORT"] = newValue
}
}
}
- QtControls.GroupBox {
+ GroupBox {
height: implicitHeight
width: parent.width
title: i18n("Extensions")
diff --git a/sources/awesome-widget/package/contents/ui/main.qml b/sources/awesome-widget/package/contents/ui/main.qml
index 83422c2..04ff238 100644
--- a/sources/awesome-widget/package/contents/ui/main.qml
+++ b/sources/awesome-widget/package/contents/ui/main.qml
@@ -15,19 +15,18 @@
* along with awesome-widgets. If not, see http://www.gnu.org/licenses/ *
***************************************************************************/
-import QtQuick 2.4
-import QtQuick.Controls 1.3 as QtControls
-import QtQuick.Dialogs 1.2 as QtDialogs
-import QtQuick.Layouts 1.1
+import QtQuick 2.15
+import QtQuick.Controls
+import QtQuick.Dialogs
+import QtQuick.Layouts
+import org.kde.plasma.core as PlasmaCore
import org.kde.plasma.plasmoid 2.0
-import org.kde.plasma.core 2.0 as PlasmaCore
-import org.kde.plasma.components 2.0 as PlasmaComponents
import org.kde.plasma.private.awesomewidget 1.0
import "."
-Item {
+PlasmoidItem {
id: main
// backend
AWKeys {
@@ -74,17 +73,12 @@ Item {
signal sizeUpdate
- // init
- Plasmoid.preferredRepresentation: Plasmoid.fullRepresentation
- Plasmoid.compactRepresentation: Plasmoid.fullRepresentation
-
- Layout.fillWidth: plasmoid.formFactor != PlasmaCore.Planar
- Layout.fillHeight: plasmoid.formFactor != PlasmaCore.Planar
+ Layout.fillWidth: PlasmoidItem.formFactor != PlasmaCore.Planar
+ Layout.fillHeight: PlasmoidItem.formFactor != PlasmaCore.Planar
Layout.alignment: Qt.AlignVCenter | Qt.AlignHCenter
Plasmoid.icon: "utilities-system-monitor"
Plasmoid.backgroundHints: plasmoid.configuration.background ? "DefaultBackground" : "NoBackground"
- Plasmoid.associatedApplication: "ksysguard"
// ui
@@ -119,11 +113,11 @@ Item {
}
}
- QtDialogs.Dialog {
+ Dialog {
id: tagSelector
title: i18n("Select tag")
- QtControls.ComboBox {
+ ComboBox {
id: tagSelectorBox
width: parent.width
editable: true
@@ -140,17 +134,29 @@ Item {
}
}
+ Plasmoid.contextualActions: [
+ PlasmaCore.Action {
+ text: i18n("Request key")
+ icon.name: "utilities-system-monitor"
+ },
+ PlasmaCore.Action {
+ text: i18n("Show README")
+ icon.name: "text-x-readme"
+ },
+ PlasmaCore.Action {
+ text: i18n("Check updates")
+ icon.name: "system-software-update"
+ },
+ PlasmaCore.Action {
+ text: i18n("Report bug")
+ icon.name: "tools-report-bug"
+ }
+ ]
+
Component.onCompleted: {
if (debug) console.debug()
- // actions
- // it makes no sense to use this field with optimization enable
- if (!plasmoid.configuration.optimize)
- plasmoid.setAction("requestKey", i18n("Request key"), "utilities-system-monitor")
- plasmoid.setAction("showReadme", i18n("Show README"), "text-x-readme")
- plasmoid.setAction("checkUpdates", i18n("Check updates"), "system-software-update")
- plasmoid.setAction("reportBug", i18n("Report bug"), "tools-report-bug")
// init submodule
Plasmoid.userConfiguringChanged(false)
// connect data
@@ -160,14 +166,14 @@ Item {
if (plasmoid.configuration.checkUpdates) return awActions.checkUpdates(false)
}
- onNeedTextUpdate: {
+ onNeedTextUpdate: newText => {
if (debug) console.debug()
text.text = newText
sizeUpdate()
}
- onNeedToolTipUpdate: {
+ onNeedToolTipUpdate: newText => {
if (debug) console.debug()
tooltip.text = newText
diff --git a/sources/awesome-widget/package/contents/ui/qmldir b/sources/awesome-widget/package/contents/ui/qmldir
index 637924c..2f19ff4 100644
--- a/sources/awesome-widget/package/contents/ui/qmldir
+++ b/sources/awesome-widget/package/contents/ui/qmldir
@@ -3,25 +3,25 @@
# common QML constants
-singleton General 1.0 file:///usr//awesomewidgets/qml/General.qml
+singleton General 1.0 file:///usr/share/awesomewidgets/qml/General.qml
# custom QML UI classes
-AboutTab file:///usr//awesomewidgets/qml/AboutTab.qml
-AWExtensions file:///usr//awesomewidgets/qml/AWExtensions.qml
-AWInfoLabel file:///usr//awesomewidgets/qml/AWInfoLabel.qml
-AWTagSelector file:///usr//awesomewidgets/qml/AWTagSelector.qml
-AWTextEditor file:///usr//awesomewidgets/qml/AWTextEditor.qml
-BugReport file:///usr//awesomewidgets/qml/BugReport.qml
-ButtonSelector file:///usr//awesomewidgets/qml/ButtonSelector.qml
-CheckBoxSelector file:///usr//awesomewidgets/qml/CheckBoxSelector.qml
-ColorSelector file:///usr//awesomewidgets/qml/ColorSelector.qml
-ComboBoxSelector file:///usr//awesomewidgets/qml/ComboBoxSelector.qml
-ExportDialog file:///usr//awesomewidgets/qml/ExportDialog.qml
-FontSelector file:///usr//awesomewidgets/qml/FontSelector.qml
-HtmlDefaultFunctionsBar file:///usr//awesomewidgets/qml/HtmlDefaultFunctionsBar.qml
-HtmlEditorButton file:///usr//awesomewidgets/qml/HtmlEditorButton.qml
-HtmlEditorColor file:///usr//awesomewidgets/qml/HtmlEditorColor.qml
-HtmlEditorFont file:///usr//awesomewidgets/qml/HtmlEditorFont.qml
-ImportDialog file:///usr//awesomewidgets/qml/ImportDialog.qml
-IntegerSelector file:///usr//awesomewidgets/qml/IntegerSelector.qml
-LineSelector file:///usr//awesomewidgets/qml/LineSelector.qml
+AboutTab file:///usr/share/awesomewidgets/qml/AboutTab.qml
+AWExtensions file:///usr/share/awesomewidgets/qml/AWExtensions.qml
+AWInfoLabel file:///usr/share/awesomewidgets/qml/AWInfoLabel.qml
+AWTagSelector file:///usr/share/awesomewidgets/qml/AWTagSelector.qml
+AWTextEditor file:///usr/share/awesomewidgets/qml/AWTextEditor.qml
+BugReport file:///usr/share/awesomewidgets/qml/BugReport.qml
+ButtonSelector file:///usr/share/awesomewidgets/qml/ButtonSelector.qml
+CheckBoxSelector file:///usr/share/awesomewidgets/qml/CheckBoxSelector.qml
+ColorSelector file:///usr/share/awesomewidgets/qml/ColorSelector.qml
+ComboBoxSelector file:///usr/share/awesomewidgets/qml/ComboBoxSelector.qml
+ExportDialog file:///usr/share/awesomewidgets/qml/ExportDialog.qml
+FontSelector file:///usr/share/awesomewidgets/qml/FontSelector.qml
+HtmlDefaultFunctionsBar file:///usr/share/awesomewidgets/qml/HtmlDefaultFunctionsBar.qml
+HtmlEditorButton file:///usr/share/awesomewidgets/qml/HtmlEditorButton.qml
+HtmlEditorColor file:///usr/share/awesomewidgets/qml/HtmlEditorColor.qml
+HtmlEditorFont file:///usr/share/awesomewidgets/qml/HtmlEditorFont.qml
+ImportDialog file:///usr/share/awesomewidgets/qml/ImportDialog.qml
+IntegerSelector file:///usr/share/awesomewidgets/qml/IntegerSelector.qml
+LineSelector file:///usr/share/awesomewidgets/qml/LineSelector.qml
diff --git a/sources/awesome-widget/package/contents/ui/tooltip.qml b/sources/awesome-widget/package/contents/ui/tooltip.qml
index e7a3db1..ff1c539 100644
--- a/sources/awesome-widget/package/contents/ui/tooltip.qml
+++ b/sources/awesome-widget/package/contents/ui/tooltip.qml
@@ -15,8 +15,8 @@
* along with awesome-widgets. If not, see http://www.gnu.org/licenses/ *
***************************************************************************/
-import QtQuick 2.0
-import QtQuick.Controls 1.3 as QtControls
+import QtQuick 2.15
+import QtQuick.Controls
import org.kde.plasma.private.awesomewidget 1.0
@@ -46,7 +46,7 @@ Item {
property alias cfg_memTooltipColor: memTooltipColor.value
property alias cfg_swapTooltip: swapTooltip.checked
property alias cfg_swapTooltipColor: swapTooltipColor.value
- property alias cfg_downkbTooltip: downkbTooltip.checked
+ property alias cfg_downkbTooltip: networkTooltip.checked
property alias cfg_downkbTooltipColor: downkbTooltipColor.value
property alias cfg_upkbTooltipColor: upkbTooltipColor.value
property alias cfg_batTooltip: batTooltip.checked
@@ -57,7 +57,8 @@ Item {
Column {
id: pageColumn
anchors.fill: parent
- QtControls.Label {
+
+ Label {
width: parent.width
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
@@ -74,80 +75,109 @@ Item {
value: plasmoid.configuration.tooltipNumber
}
- QtControls.GroupBox {
+ GroupBox {
id: useTooltipBackground
- height: implicitHeight
width: parent.width
- checkable: true
- title: i18n("Background")
+
+ property alias checked: useTooltipBackgroundLabel.checked
+ label: CheckBox {
+ id: useTooltipBackgroundLabel
+ text: i18n("Background")
+ }
+
ColorSelector {
id: tooltipBackground
+ enabled: useTooltipBackgroundLabel.checked
text: i18n("Background color")
value: plasmoid.configuration.tooltipBackground
}
}
- QtControls.GroupBox {
+ GroupBox {
id: cpuTooltip
- height: implicitHeight
width: parent.width
- checkable: true
- title: i18n("CPU")
+
+ property alias checked: cpuTooltipLabel.checked
+ label: CheckBox {
+ id: cpuTooltipLabel
+ text: i18n("CPU")
+ }
+
ColorSelector {
id: cpuTooltipColor
+ enabled: cpuTooltipLabel.checked
text: i18n("CPU color")
value: plasmoid.configuration.cpuTooltipColor
}
}
- QtControls.GroupBox {
+ GroupBox {
id: cpuclTooltip
- height: implicitHeight
width: parent.width
- checkable: true
- title: i18n("CPU clock")
+
+ property alias checked: cpuclTooltipLabel.checked
+ label: CheckBox {
+ id: cpuclTooltipLabel
+ text: i18n("CPU clock")
+ }
+
ColorSelector {
id: cpuclTooltipColor
+ enabled: cpuclTooltipLabel.checked
text: i18n("CPU clock color")
value: plasmoid.configuration.cpuclTooltipColor
}
}
- QtControls.GroupBox {
+ GroupBox {
id: memTooltip
- height: implicitHeight
width: parent.width
- checkable: true
- title: i18n("Memory")
+
+ property alias checked: memTooltipLabel.checked
+ label: CheckBox {
+ id: memTooltipLabel
+ text: i18n("Memory")
+ }
+
ColorSelector {
id: memTooltipColor
+ enabled: memTooltipLabel.checked
text: i18n("Memory color")
value: plasmoid.configuration.memTooltipColor
}
}
- QtControls.GroupBox {
+ GroupBox {
id: swapTooltip
- height: implicitHeight
width: parent.width
- checkable: true
- title: i18n("Swap")
+
+ property alias checked: swapTooltipLabel.checked
+ label: CheckBox {
+ id: swapTooltipLabel
+ text: i18n("Swap")
+ }
+
ColorSelector {
id: swapTooltipColor
+ enabled: swapTooltipLabel.checked
text: i18n("Swap color")
value: plasmoid.configuration.swapTooltipColor
}
}
- QtControls.GroupBox {
- id: downkbTooltip
- height: implicitHeight
+ GroupBox {
+ id: networkTooltip
width: parent.width
- checkable: true
- title: i18n("Network")
+
+ property alias checked: networkTooltipLabel.checked
+ label: CheckBox {
+ id: networkTooltipLabel
+ text: i18n("Network")
+ }
+
Column {
- height: implicitHeight
width: parent.width
+ enabled: networkTooltipLabel.checked
ColorSelector {
id: downkbTooltipColor
text: i18n("Download speed color")
@@ -161,15 +191,19 @@ Item {
}
}
- QtControls.GroupBox {
+ GroupBox {
id: batTooltip
- height: implicitHeight
width: parent.width
- checkable: true
- title: i18n("Battery")
+
+ property alias checked: batteryTooltipLabel.checked
+ label: CheckBox {
+ id: batteryTooltipLabel
+ text: i18n("Battery")
+ }
+
Column {
- height: implicitHeight
width: parent.width
+ enabled: batteryTooltipLabel.checked
ColorSelector {
id: batTooltipColor
text: i18n("Battery active color")
diff --git a/sources/awesome-widget/package/contents/ui/widget.qml b/sources/awesome-widget/package/contents/ui/widget.qml
index d46a827..01eba2b 100644
--- a/sources/awesome-widget/package/contents/ui/widget.qml
+++ b/sources/awesome-widget/package/contents/ui/widget.qml
@@ -15,7 +15,7 @@
* along with awesome-widgets. If not, see http://www.gnu.org/licenses/ *
***************************************************************************/
-import QtQuick 2.2
+import QtQuick 2.15
import org.kde.plasma.private.awesomewidget 1.0
import "."
@@ -90,7 +90,7 @@ Item {
awKeys.setAggregatorProperty("translate", plasmoid.configuration.translateStrings)
}
- onNeedTextUpdate: {
+ onNeedTextUpdate: newText => {
if (lock) return
if (debug) console.debug()
diff --git a/sources/awesome-widget/package/metadata.desktop b/sources/awesome-widget/package/metadata.desktop
deleted file mode 100644
index 91dbdeb..0000000
--- a/sources/awesome-widget/package/metadata.desktop
+++ /dev/null
@@ -1,26 +0,0 @@
-[Desktop Entry]
-Encoding=UTF-8
-Name=Awesome Widget
-Comment=A minimalistic Plasmoid
-Comment[en]=A minimalistic Plasmoid
-Comment[es]=Un plasmoide minimalista
-Comment[es]=Un script Plasmoïde minimaliste
-Comment[pt_BR]=Um script Plasmoid
-Comment[ru]=Минималистичный плазмоид
-Comment[uk]=Мінімалістичний плазмоїд
-X-KDE-ServiceTypes=Plasma/Applet
-Type=Service
-Icon=utilities-system-monitor
-
-X-KDE-ServiceTypes=Plasma/Applet
-X-Plasma-API=declarativeappletscript
-X-Plasma-MainScript=ui/main.qml
-
-X-KDE-PluginInfo-Author=Evgeniy Alekseev aka arcanis
-X-KDE-PluginInfo-Email=esalexeev@gmail.com
-X-KDE-PluginInfo-Name=org.kde.plasma.awesomewidget
-X-KDE-PluginInfo-Version=3.5.1
-X-KDE-PluginInfo-Website=https://arcanis.me/projects/awesome-widgets/
-X-KDE-PluginInfo-Category=System Information
-X-KDE-PluginInfo-License=GPLv3
-X-KDE-PluginInfo-EnabledByDefault=true
diff --git a/sources/awesome-widget/package/metadata.json b/sources/awesome-widget/package/metadata.json
new file mode 100644
index 0000000..83ea5d6
--- /dev/null
+++ b/sources/awesome-widget/package/metadata.json
@@ -0,0 +1,26 @@
+{
+ "KPackageStructure": "Plasma/Applet",
+ "KPlugin": {
+ "Authors": [
+ {
+ "Email": "esalexeev@gmail.com",
+ "Name": "Evgeniy Alekseev aka arcanis"
+ }
+ ],
+ "Category": "System Information",
+ "Description": "A minimalistic Plasmoid",
+ "Description[en]": "A minimalistic Plasmoid",
+ "Description[es]": "Un script Plasmoïde minimaliste",
+ "Description[pt_BR]": "Um script Plasmoid",
+ "Description[ru]": "Минималистичный плазмоид",
+ "Description[uk]": "Мінімалістичний плазмоїд",
+ "EnabledByDefault": true,
+ "Icon": "utilities-system-monitor",
+ "Id": "org.kde.plasma.awesomewidget",
+ "License": "GPLv3",
+ "Name": "Awesome Widget",
+ "Version": "3.5.1",
+ "Website": "https://arcanis.me/projects/awesome-widgets/"
+ },
+ "X-Plasma-API-Minimum-Version": "6.0"
+}
diff --git a/sources/awesome-widget/plugin/CMakeLists.txt b/sources/awesome-widget/plugin/CMakeLists.txt
index 2fb27b5..9f79847 100644
--- a/sources/awesome-widget/plugin/CMakeLists.txt
+++ b/sources/awesome-widget/plugin/CMakeLists.txt
@@ -18,6 +18,6 @@ qt6_wrap_ui(SUBPROJECT_UI_HEADER ${SUBPROJECT_UI})
add_library(${PLUGIN_NAME} SHARED ${SUBPROJECT_SOURCE} ${SUBPROJECT_UI_HEADER})
target_link_libraries(${PLUGIN_NAME} ${PROJECT_LIBRARY} ${Qt_LIBRARIES} ${Kf6_LIBRARIES})
-install(TARGETS ${PLUGIN_NAME} DESTINATION ${QML_INSTALL_DIR}/org/kde/plasma/private/awesomewidget)
-install(FILES qmldir DESTINATION ${QML_INSTALL_DIR}/org/kde/plasma/private/awesomewidget)
+install(TARGETS ${PLUGIN_NAME} DESTINATION ${KDE_INSTALL_QMLDIR}/org/kde/plasma/private/awesomewidget)
+install(FILES qmldir DESTINATION ${KDE_INSTALL_QMLDIR}/org/kde/plasma/private/awesomewidget)
install(FILES ${SUBPROJECT_NOTIFY} DESTINATION ${KDE_INSTALL_KNOTIFYRCDIR})
diff --git a/sources/awesome-widget/plugin/awconfighelper.cpp b/sources/awesome-widget/plugin/awconfighelper.cpp
index 7c716af..cdfedc0 100644
--- a/sources/awesome-widget/plugin/awconfighelper.cpp
+++ b/sources/awesome-widget/plugin/awconfighelper.cpp
@@ -21,7 +21,6 @@
#include
#include
#include
-#include
#include "awdebug.h"
@@ -285,7 +284,6 @@ void AWConfigHelper::writeFile(QSettings &_settings, const QString &_key, const
QFile file(_fileName);
if (file.open(QIODevice::WriteOnly | QIODevice::Text)) {
QTextStream out(&file);
- out.setCodec("UTF-8");
out << _settings.value(_key).toString().toUtf8();
out.flush();
file.close();
diff --git a/sources/awesome-widget/plugin/awdataengineaggregator.cpp b/sources/awesome-widget/plugin/awdataengineaggregator.cpp
index 431c20d..03006aa 100644
--- a/sources/awesome-widget/plugin/awdataengineaggregator.cpp
+++ b/sources/awesome-widget/plugin/awdataengineaggregator.cpp
@@ -17,7 +17,8 @@
#include "awdataengineaggregator.h"
-#include
+#include
+#include
#include "awdebug.h"
@@ -27,20 +28,22 @@ AWDataEngineAggregator::AWDataEngineAggregator(QObject *_parent)
{
qCDebug(LOG_AW) << __PRETTY_FUNCTION__;
- m_consumer = new Plasma::DataEngineConsumer();
- m_dataEngines["systemmonitor"] = m_consumer->dataEngine("systemmonitor");
- m_dataEngines["extsysmon"] = m_consumer->dataEngine("extsysmon");
- m_dataEngines["time"] = m_consumer->dataEngine("time");
+ qDBusRegisterMetaType();
+ qDBusRegisterMetaType();
+ qDBusRegisterMetaType();
+ qDBusRegisterMetaType>();
- // additional method required by systemmonitor structure
- m_newSourceConnection
- = connect(m_dataEngines["systemmonitor"], &Plasma::DataEngine::sourceAdded, [this](const QString &source) {
- emit(deviceAdded(source));
- m_dataEngines["systemmonitor"]->connectSource(source, parent(), 1000);
- });
+ m_interface = new KSysGuard::SystemStats::DBusInterface(
+ KSysGuard::SystemStats::ServiceName, KSysGuard::SystemStats::ObjectPath, QDBusConnection::sessionBus(), this);
- // required to define Qt::QueuedConnection for signal-slot connection
- qRegisterMetaType("Plasma::DataEngine::Data");
+ connect(m_interface, SIGNAL(newSensorData(KSysGuard::SensorDataList)), this,
+ SLOT(updateData(KSysGuard::SensorDataList)));
+ connect(m_interface, SIGNAL(sensorMetaDataChanged(const QHash &)), this,
+ SLOT(updateSensors(const QHash &)));
+ connect(m_interface, SIGNAL(sensorAdded(const QString &)), this, SLOT(sensorAdded(const QString &)));
+ connect(m_interface, SIGNAL(sensorRemoved(const QString &)), this, SLOT(sensorRemoved(const QString &)));
+
+ loadSources();
}
@@ -54,62 +57,63 @@ AWDataEngineAggregator::~AWDataEngineAggregator()
void AWDataEngineAggregator::disconnectSources()
{
- for (auto dataEngine : m_dataEngines.values())
- for (auto &source : dataEngine->sources())
- dataEngine->disconnectSource(source, parent());
- disconnect(m_newSourceConnection);
+ m_interface->unsubscribe(m_sensors.keys());
}
-void AWDataEngineAggregator::reconnectSources(const int _interval)
+void AWDataEngineAggregator::loadSources()
{
- qCDebug(LOG_AW) << "Reconnect sources with interval" << _interval;
+ auto response = m_interface->allSensors();
+ response.waitForFinished();
+
+ auto sensors = response.value();
+ updateSensors(sensors);
+ for (auto &sensor : sensors.keys())
+ sensorAdded(sensor);
+}
+
+
+void AWDataEngineAggregator::reconnectSources(const int interval)
+{
+ qCDebug(LOG_AW) << "Reconnect all sources with update interval" << interval;
disconnectSources();
-
- m_dataEngines["systemmonitor"]->connectAllSources(parent(), (uint)_interval);
- m_dataEngines["extsysmon"]->connectAllSources(parent(), (uint)_interval);
- m_dataEngines["time"]->connectSource("Local", parent(), 1000);
-
- m_newSourceConnection = connect(
- m_dataEngines["systemmonitor"], &Plasma::DataEngine::sourceAdded, [this, _interval](const QString &source) {
- emit(deviceAdded(source));
- m_dataEngines["systemmonitor"]->connectSource(source, parent(), (uint)_interval);
- });
-
-#ifdef BUILD_FUTURE
- createQueuedConnection();
-#endif /* BUILD_FUTURE */
+ m_interface->subscribe(m_sensors.keys());
}
void AWDataEngineAggregator::dropSource(const QString &_source)
{
- qCDebug(LOG_AW) << "Source" << _source;
+ qCDebug(LOG_AW) << "Disconnect source" << _source;
- // HACK there is no possibility to check to which dataengine source
- // connected we will try to disconnect it from all engines
- for (auto dataEngine : m_dataEngines.values())
- dataEngine->disconnectSource(_source, parent());
+ m_interface->unsubscribe({_source});
}
-void AWDataEngineAggregator::createQueuedConnection()
+void AWDataEngineAggregator::sensorAdded(const QString &_sensor)
{
- // HACK additional method which forces QueuedConnection instead of Auto one
- // for more details refer to plasma-framework source code
- for (auto &dataEngine : m_dataEngines.keys()) {
- // different source set for different engines
- QStringList sources = dataEngine == "time" ? QStringList() << "Local" : m_dataEngines[dataEngine]->sources();
- // reconnect sources
- for (auto &source : sources) {
- Plasma::DataContainer *container = m_dataEngines[dataEngine]->containerForSource(source);
- // disconnect old connections first
- disconnect(container, SIGNAL(dataUpdated(QString, Plasma::DataEngine::Data)), parent(),
- SLOT(dataUpdated(QString, Plasma::DataEngine::Data)));
- // and now reconnect with Qt::QueuedConnection type
- connect(container, SIGNAL(dataUpdated(QString, Plasma::DataEngine::Data)), parent(),
- SLOT(dataUpdated(QString, Plasma::DataEngine::Data)), Qt::QueuedConnection);
- }
- }
+ qCDebug(LOG_AW) << "New sensor added" << _sensor;
+
+ m_interface->subscribe({_sensor});
+}
+
+
+void AWDataEngineAggregator::sensorRemoved(const QString &_sensor)
+{
+ qCDebug(LOG_AW) << "Sensor" << _sensor << "has been removed";
+
+ m_sensors.remove(_sensor);
+ m_interface->unsubscribe({_sensor});
+}
+
+void AWDataEngineAggregator::updateData(KSysGuard::SensorDataList _data)
+{
+ emit(dataUpdated(m_sensors, _data));
+}
+
+
+void AWDataEngineAggregator::updateSensors(const QHash &_sensors)
+{
+ for (auto sensor = _sensors.cbegin(); sensor != _sensors.cend(); ++sensor)
+ m_sensors.insert(sensor.key(), sensor.value());
}
diff --git a/sources/awesome-widget/plugin/awdataengineaggregator.h b/sources/awesome-widget/plugin/awdataengineaggregator.h
index 580b9b8..4799268 100644
--- a/sources/awesome-widget/plugin/awdataengineaggregator.h
+++ b/sources/awesome-widget/plugin/awdataengineaggregator.h
@@ -19,10 +19,17 @@
#ifndef AWDATAENGINEAGGREGATOR_H
#define AWDATAENGINEAGGREGATOR_H
-#include
-#include
+#include
#include
+#include
+#include
+
+
+namespace KSysGuard::SystemStats
+{
+ class DBusInterface;
+}
class AWDataEngineAggregator : public QObject
@@ -33,19 +40,23 @@ public:
explicit AWDataEngineAggregator(QObject *_parent = nullptr);
~AWDataEngineAggregator() override;
void disconnectSources();
- void reconnectSources(int _interval);
+ void loadSources();
+ void reconnectSources(const int interval);
signals:
+ void dataUpdated(const QHash &_sensors, const KSysGuard::SensorDataList &_data);
void deviceAdded(const QString &_source);
public slots:
void dropSource(const QString &_source);
+ void sensorAdded(const QString &_sensor);
+ void sensorRemoved(const QString &_sensor);
+ void updateData(KSysGuard::SensorDataList _data);
+ void updateSensors(const QHash &_sensors);
private:
- void createQueuedConnection();
- Plasma::DataEngineConsumer *m_consumer = nullptr;
- QHash m_dataEngines;
- QMetaObject::Connection m_newSourceConnection;
+ KSysGuard::SystemStats::DBusInterface *m_interface = nullptr;
+ QHash m_sensors;
};
diff --git a/sources/awesome-widget/plugin/awdataenginemapper.cpp b/sources/awesome-widget/plugin/awdataenginemapper.cpp
index d2fa3c3..af7f645 100644
--- a/sources/awesome-widget/plugin/awdataenginemapper.cpp
+++ b/sources/awesome-widget/plugin/awdataenginemapper.cpp
@@ -76,20 +76,20 @@ QStringList AWDataEngineMapper::keysFromSource(const QString &_source) const
// HACK units required to define should the value be calculated as temperature
// or fan data
-QStringList AWDataEngineMapper::registerSource(const QString &_source, const QString &_units, const QStringList &_keys)
+QStringList AWDataEngineMapper::registerSource(const QString &_source, const KSysGuard::Unit _units, const QStringList &_keys)
{
qCDebug(LOG_AW) << "Source" << _source << "with units" << _units;
// regular expressions
- auto cpuRegExp = QRegularExpression("cpu/cpu.*/TotalLoad");
- auto cpuclRegExp = QRegularExpression("cpu/cpu.*/clock");
- auto hddrRegExp = QRegularExpression("disk/.*/Rate/rblk");
- auto hddwRegExp = QRegularExpression("disk/.*/Rate/wblk");
- auto mountFillRegExp = QRegularExpression("partitions/.*/filllevel");
- auto mountFreeRegExp = QRegularExpression("partitions/.*/freespace");
- auto mountUsedRegExp = QRegularExpression("partitions/.*/usedspace");
- auto netRegExp = QRegularExpression("network/interfaces/.*/(receiver|transmitter)/data$");
- auto netTotalRegExp = QRegularExpression("network/interfaces/.*/(receiver|transmitter)/dataTotal$");
+ auto cpuRegExp = QRegularExpression("^cpu/cpu.*/usage$");
+ auto cpuclRegExp = QRegularExpression("^cpu/cpu.*/frequency$");
+ auto hddrRegExp = QRegularExpression("^disk/.*/read$");
+ auto hddwRegExp = QRegularExpression("^disk/.*/write$");
+ auto mountFillRegExp = QRegularExpression("^disk/.*/usedPercent$");
+ auto mountFreeRegExp = QRegularExpression("^disk/.*/free$");
+ auto mountUsedRegExp = QRegularExpression("^disk/.*/used$");
+ auto netRegExp = QRegularExpression("^network/.*/(download|upload)$");
+ auto netTotalRegExp = QRegularExpression("^network/.*/(totalDownload|totalUpload)$");
if (_source == "battery/ac") {
// AC
@@ -102,24 +102,24 @@ QStringList AWDataEngineMapper::registerSource(const QString &_source, const QSt
m_map.insert(_source, key);
m_formatter[key] = _source.contains("rate") ? AWKeysAggregator::FormatterType::Float
: AWKeysAggregator::FormatterType::IntegerThree;
- } else if (_source == "cpu/system/TotalLoad") {
+ } else if (_source == "cpu/all/usage") {
// cpu
m_map.insert(_source, "cpu");
m_formatter["cpu"] = AWKeysAggregator::FormatterType::Float;
} else if (_source.contains(cpuRegExp)) {
// cpus
QString key = _source;
- key.remove("cpu/").remove("/TotalLoad");
+ key.remove("cpu/").remove("/usage");
m_map.insert(_source, key);
m_formatter[key] = AWKeysAggregator::FormatterType::Float;
- } else if (_source == "cpu/system/AverageClock") {
+ } else if (_source == "cpu/all/averageFrequency") {
// cpucl
m_map.insert(_source, "cpucl");
m_formatter["cpucl"] = AWKeysAggregator::FormatterType::Integer;
} else if (_source.contains(cpuclRegExp)) {
// cpucls
QString key = _source;
- key.remove("cpu/cpu").remove("/clock");
+ key.remove("cpu/cpu").remove("/frequency");
key = QString("cpucl%1").arg(key);
m_map.insert(_source, key);
m_formatter[key] = AWKeysAggregator::FormatterType::Integer;
@@ -144,7 +144,7 @@ QStringList AWDataEngineMapper::registerSource(const QString &_source, const QSt
} else if (_source.contains(hddrRegExp)) {
// read speed
QString device = _source;
- device.remove("/Rate/rblk");
+ device.remove("disk/").remove("/read");
int index = m_devices["disk"].indexOf(device);
if (index > -1) {
QString key = QString("hddr%1").arg(index);
@@ -154,7 +154,7 @@ QStringList AWDataEngineMapper::registerSource(const QString &_source, const QSt
} else if (_source.contains(hddwRegExp)) {
// write speed
QString device = _source;
- device.remove("/Rate/wblk");
+ device.remove("disk/").remove("/write");
int index = m_devices["disk"].indexOf(device);
if (index > -1) {
QString key = QString("hddw%1").arg(index);
@@ -172,7 +172,7 @@ QStringList AWDataEngineMapper::registerSource(const QString &_source, const QSt
} else if (_source.contains(mountFillRegExp)) {
// fill level
QString device = _source;
- device.remove("partitions").remove("/filllevel");
+ device.remove("disk/").remove("/usedPercent");
int index = m_devices["mount"].indexOf(device);
if (index > -1) {
QString key = QString("hdd%1").arg(index);
@@ -185,7 +185,7 @@ QStringList AWDataEngineMapper::registerSource(const QString &_source, const QSt
} else if (_source.contains(mountFreeRegExp)) {
// free space
QString device = _source;
- device.remove("partitions").remove("/freespace");
+ device.remove("disk/").remove("/free");
int index = m_devices["mount"].indexOf(device);
if (index > -1) {
// mb
@@ -200,7 +200,7 @@ QStringList AWDataEngineMapper::registerSource(const QString &_source, const QSt
} else if (_source.contains(mountUsedRegExp)) {
// used
QString device = _source;
- device.remove("partitions").remove("/usedspace");
+ device.remove("disk/").remove("/used");
int index = m_devices["mount"].indexOf(device);
if (index > -1) {
// mb
@@ -222,14 +222,14 @@ QStringList AWDataEngineMapper::registerSource(const QString &_source, const QSt
m_map.insert(_source, key);
m_formatter[key] = AWKeysAggregator::FormatterType::Temperature;
}
- } else if (_source.startsWith("cpu/system/loadavg")) {
+ } else if (_source.startsWith("cpu/loadaverages/loadaverage")) {
// load average
QString time = _source;
- time.remove("cpu/system/loadavg");
+ time.remove("cpu/loadaverages/loadaverage");
QString key = QString("la%1").arg(time);
m_map.insert(_source, key);
m_formatter[key] = AWKeysAggregator::FormatterType::FloatTwoSymbols;
- } else if (_source == "mem/physical/application") {
+ } else if (_source == "memory/physical/application") {
// app memory
// mb
m_map.insert(_source, "memmb");
@@ -237,7 +237,7 @@ QStringList AWDataEngineMapper::registerSource(const QString &_source, const QSt
// gb
m_map.insert(_source, "memgb");
m_formatter["memgb"] = AWKeysAggregator::FormatterType::MemGBFormat;
- } else if (_source == "mem/physical/free") {
+ } else if (_source == "memory/physical/free") {
// free memory
// mb
m_map.insert(_source, "memfreemb");
@@ -245,7 +245,7 @@ QStringList AWDataEngineMapper::registerSource(const QString &_source, const QSt
// gb
m_map.insert(_source, "memfreegb");
m_formatter["memfreegb"] = AWKeysAggregator::FormatterType::MemGBFormat;
- } else if (_source == "mem/physical/used") {
+ } else if (_source == "memory/physical/used") {
// used memory
// mb
m_map.insert(_source, "memusedmb");
@@ -269,7 +269,7 @@ QStringList AWDataEngineMapper::registerSource(const QString &_source, const QSt
m_formatter[key] = AWKeysAggregator::FormatterType::NoFormat;
} else if (_source.contains(netRegExp)) {
// network speed
- QString type = _source.contains("receiver") ? "down" : "up";
+ QString type = _source.contains("download") ? "down" : "up";
int index = m_devices["net"].indexOf(_source.split('/')[2]);
if (index > -1) {
// kb
@@ -287,7 +287,7 @@ QStringList AWDataEngineMapper::registerSource(const QString &_source, const QSt
}
} else if (_source.contains(netTotalRegExp)) {
// network data total
- QString type = _source.contains("receiver") ? "down" : "up";
+ QString type = _source.contains("download") ? "down" : "up";
int index = m_devices["net"].indexOf(_source.split('/')[2]);
if (index > -1) {
// kb
@@ -329,7 +329,7 @@ QStringList AWDataEngineMapper::registerSource(const QString &_source, const QSt
key.remove("quotes/");
m_map.insert(_source, key);
m_formatter[key] = AWKeysAggregator::FormatterType::Quotes;
- } else if (_source == "mem/swap/free") {
+ } else if (_source == "memory/swap/free") {
// free swap
// mb
m_map.insert(_source, "swapfreemb");
@@ -337,7 +337,7 @@ QStringList AWDataEngineMapper::registerSource(const QString &_source, const QSt
// gb
m_map.insert(_source, "swapfreegb");
m_formatter["swapfreegb"] = AWKeysAggregator::FormatterType::MemGBFormat;
- } else if (_source == "mem/swap/used") {
+ } else if (_source == "memory/swap/used") {
// used swap
// mb
m_map.insert(_source, "swapmb");
@@ -349,13 +349,13 @@ QStringList AWDataEngineMapper::registerSource(const QString &_source, const QSt
// temperature
int index = m_devices["temp"].indexOf(_source);
// HACK on DE initialization there are no units key
- if (_units.isEmpty())
+ if (_units == KSysGuard::UnitInvalid)
return QStringList({QString("temp%1").arg(index)});
if (index > -1) {
QString key = QString("temp%1").arg(index);
m_map.insert(_source, key);
- m_formatter[key] = _units == "°C" ? AWKeysAggregator::FormatterType::Temperature
- : AWKeysAggregator::FormatterType::Integer;
+ m_formatter[key] = _units == KSysGuard::UnitCelsius ? AWKeysAggregator::FormatterType::Temperature
+ : AWKeysAggregator::FormatterType::Integer;
}
} else if (_source == "Local") {
// time
diff --git a/sources/awesome-widget/plugin/awdataenginemapper.h b/sources/awesome-widget/plugin/awdataenginemapper.h
index 5ee7124..aa65bfa 100644
--- a/sources/awesome-widget/plugin/awdataenginemapper.h
+++ b/sources/awesome-widget/plugin/awdataenginemapper.h
@@ -19,6 +19,8 @@
#ifndef AWDATAENGINEMAPPER_H
#define AWDATAENGINEMAPPER_H
+#include
+
#include
#include
@@ -38,7 +40,7 @@ public:
[[nodiscard]] AWKeysAggregator::FormatterType formatter(const QString &_key) const;
[[nodiscard]] QStringList keysFromSource(const QString &_source) const;
// set methods
- QStringList registerSource(const QString &_source, const QString &_units, const QStringList &_keys);
+ QStringList registerSource(const QString &_source, const KSysGuard::Unit _units, const QStringList &_keys);
void setDevices(const QHash &_devices);
private:
diff --git a/sources/awesome-widget/plugin/awkeys.cpp b/sources/awesome-widget/plugin/awkeys.cpp
index 1582ab6..422ccf2 100644
--- a/sources/awesome-widget/plugin/awkeys.cpp
+++ b/sources/awesome-widget/plugin/awkeys.cpp
@@ -58,11 +58,15 @@ AWKeys::AWKeys(QObject *_parent)
// update key data if required
connect(m_keyOperator, SIGNAL(updateKeys(const QStringList &)), this, SLOT(reinitKeys(const QStringList &)));
connect(m_timer, SIGNAL(timeout()), this, SLOT(updateTextData()));
+
// transfer signal from AWDataAggregator object to QML ui
connect(m_dataAggregator, SIGNAL(toolTipPainted(const QString &)), this,
SIGNAL(needToolTipToBeUpdated(const QString &)));
+
connect(this, SIGNAL(dropSourceFromDataengine(const QString &)), m_dataEngineAggregator,
SLOT(dropSource(const QString &)));
+ connect(m_dataEngineAggregator, SIGNAL(dataUpdated(const QHash &, const KSysGuard::SensorDataList &)),
+ this, SLOT(dataUpdated(const QHash &, const KSysGuard::SensorDataList &)));
// transfer signal from dataengine to update source list
connect(m_dataEngineAggregator, SIGNAL(deviceAdded(const QString &)), m_keyOperator,
SLOT(addDevice(const QString &)));
@@ -185,9 +189,9 @@ QString AWKeys::valueByKey(const QString &_key) const
{
qCDebug(LOG_AW) << "Requested value for key" << _key;
- QString trueKey = _key.startsWith("bar") ? m_keyOperator->infoByKey(_key) : _key;
+ auto realKey = _key.startsWith("bar") ? m_keyOperator->infoByKey(_key) : _key;
- return m_aggregator->formatter(m_values[trueKey], trueKey, true);
+ return m_aggregator->formatter(m_values[realKey], realKey, true);
}
@@ -199,10 +203,15 @@ void AWKeys::editItem(const QString &_type)
}
-void AWKeys::dataUpdated(const QString &_sourceName, const Plasma::DataEngine::Data &_data)
+void AWKeys::dataUpdated(const QHash &_sensors, const KSysGuard::SensorDataList &_data)
{
- // run concurrent data update
- QtConcurrent::run(m_threadPool, this, &AWKeys::setDataBySource, _sourceName, _data);
+ for (auto &single : _data) {
+ if (_sensors.contains(single.sensorProperty)) {
+ setDataBySource(single.sensorProperty, _sensors.value(single.sensorProperty), single);
+ }
+ // TODO use QtConcurrent::map or something like that
+// QtConcurrent::run(m_threadPool, this, &AWKeys::setDataBySource, "ss", sensor);
+ }
}
@@ -239,7 +248,7 @@ void AWKeys::updateTextData()
// do not do it in parallel to avoid race condition
m_mutex.lock();
calculateValues();
- QString text = parsePattern(m_keyOperator->pattern());
+ auto text = parsePattern(m_keyOperator->pattern());
// update tooltip values under lock
m_dataAggregator->dataUpdate(m_values);
m_mutex.unlock();
@@ -257,16 +266,16 @@ void AWKeys::calculateValues()
for (auto &device : mountDevices) {
int index = mountDevices.indexOf(device);
m_values[QString("hddtotmb%1").arg(index)]
- = m_values[QString("hddfreemb%1").arg(index)].toFloat() + m_values[QString("hddmb%1").arg(index)].toFloat();
+ = m_values[QString("hddfreemb%1").arg(index)].toDouble() + m_values[QString("hddmb%1").arg(index)].toDouble();
m_values[QString("hddtotgb%1").arg(index)]
- = m_values[QString("hddfreegb%1").arg(index)].toFloat() + m_values[QString("hddgb%1").arg(index)].toFloat();
+ = m_values[QString("hddfreegb%1").arg(index)].toDouble() + m_values[QString("hddgb%1").arg(index)].toDouble();
}
// memtot*
- m_values["memtotmb"] = m_values["memusedmb"].toInt() + m_values["memfreemb"].toInt();
- m_values["memtotgb"] = m_values["memusedgb"].toFloat() + m_values["memfreegb"].toFloat();
+ m_values["memtotmb"] = m_values["memusedmb"].toLongLong() + m_values["memfreemb"].toLongLong();
+ m_values["memtotgb"] = m_values["memusedgb"].toDouble() + m_values["memfreegb"].toDouble();
// mem
- m_values["mem"] = 100.0f * m_values["memmb"].toFloat() / m_values["memtotmb"].toFloat();
+ m_values["mem"] = 100.0f * m_values["memmb"].toDouble() / m_values["memtotmb"].toDouble();
// up, down, upkb, downkb, upunits, downunits
int netIndex = m_keyOperator->devices("net").indexOf(m_values["netdev"].toString());
@@ -282,10 +291,10 @@ void AWKeys::calculateValues()
m_values["upunits"] = m_values[QString("upunits%1").arg(netIndex)];
// swaptot*
- m_values["swaptotmb"] = m_values["swapmb"].toInt() + m_values["swapfreemb"].toInt();
- m_values["swaptotgb"] = m_values["swapgb"].toFloat() + m_values["swapfreegb"].toFloat();
+ m_values["swaptotmb"] = m_values["swapmb"].toLongLong() + m_values["swapfreemb"].toLongLong();
+ m_values["swaptotgb"] = m_values["swapgb"].toDouble() + m_values["swapfreegb"].toDouble();
// swap
- m_values["swap"] = 100.0f * m_values["swapmb"].toFloat() / m_values["swaptotmb"].toFloat();
+ m_values["swap"] = 100.0f * m_values["swapmb"].toDouble() / m_values["swaptotmb"].toDouble();
// user defined keys
for (auto &key : m_keyOperator->userKeys())
@@ -323,7 +332,7 @@ void AWKeys::createDBusInterface()
QString AWKeys::parsePattern(QString _pattern) const
{
// screen sign
- _pattern.replace("$$", QString(0x1d));
+ _pattern.replace("$$", QChar(0x1d));
// lambdas
for (auto &key : m_foundLambdas)
@@ -343,7 +352,7 @@ QString AWKeys::parsePattern(QString _pattern) const
}
// prepare strings
- _pattern.replace(QString(0x1d), "$");
+ _pattern.replace(QChar(0x1d), "$");
if (m_wrapNewLines)
_pattern.replace("\n", "
");
@@ -351,25 +360,25 @@ QString AWKeys::parsePattern(QString _pattern) const
}
-void AWKeys::setDataBySource(const QString &_sourceName, const QVariantMap &_data)
+void AWKeys::setDataBySource(const QString &_source, const KSysGuard::SensorInfo &_sensor, const KSysGuard::SensorData &_data)
{
- qCDebug(LOG_AW) << "Source" << _sourceName << "with data" << _data;
+ qCDebug(LOG_AW) << "Source" << _source << _sensor.name << "with data" << _data.payload;
// first list init
- QStringList tags = m_aggregator->keysFromSource(_sourceName);
+ auto tags = m_aggregator->keysFromSource(_source);
if (tags.isEmpty())
- tags = m_aggregator->registerSource(_sourceName, _data["units"].toString(), m_requiredKeys);
+ tags = m_aggregator->registerSource(_source, _sensor.unit, m_requiredKeys);
// update data or drop source if there are no matches and exit
if (tags.isEmpty()) {
- qCInfo(LOG_AW) << "Source" << _sourceName << "not found";
- return emit(dropSourceFromDataengine(_sourceName));
+ qCInfo(LOG_AW) << "Source" << _source << "not found";
+ return emit(dropSourceFromDataengine(_source));
}
m_mutex.lock();
// HACK workaround for time values which are stored in the different path
- std::for_each(tags.cbegin(), tags.cend(), [this, &_data, &_sourceName](const QString &tag) {
- m_values[tag] = _sourceName == "Local" ? _data["DateTime"] : _data["value"];
+ std::for_each(tags.cbegin(), tags.cend(), [this, &_data](const QString &tag) {
+ m_values[tag] = _data.payload;
});
m_mutex.unlock();
}
diff --git a/sources/awesome-widget/plugin/awkeys.h b/sources/awesome-widget/plugin/awkeys.h
index 8ebf222..d82071d 100644
--- a/sources/awesome-widget/plugin/awkeys.h
+++ b/sources/awesome-widget/plugin/awkeys.h
@@ -19,11 +19,11 @@
#ifndef AWKEYS_H
#define AWKEYS_H
-#include
-
#include
#include
+#include
+
class AWDataAggregator;
class AWDataEngineAggregator;
@@ -56,9 +56,7 @@ public:
Q_INVOKABLE void editItem(const QString &_type);
public slots:
- void dataUpdated(const QString &_sourceName, const Plasma::DataEngine::Data &_data);
- // dummy method required by DataEngine connections
- static void modelChanged(const QString &, QAbstractItemModel *){};
+ void dataUpdated(const QHash &_sensors, const KSysGuard::SensorDataList &_data);
signals:
void dropSourceFromDataengine(const QString &_source);
@@ -74,7 +72,7 @@ private:
void calculateValues();
void createDBusInterface();
[[nodiscard]] QString parsePattern(QString _pattern) const;
- void setDataBySource(const QString &_sourceName, const QVariantMap &_data);
+ void setDataBySource(const QString &_source, const KSysGuard::SensorInfo &_sensor, const KSysGuard::SensorData &_data);
// objects
AWDataAggregator *m_dataAggregator = nullptr;
AWDataEngineAggregator *m_dataEngineAggregator = nullptr;
diff --git a/sources/awesome-widget/plugin/awkeysaggregator.cpp b/sources/awesome-widget/plugin/awkeysaggregator.cpp
index 6cd3309..f88a70e 100644
--- a/sources/awesome-widget/plugin/awkeysaggregator.cpp
+++ b/sources/awesome-widget/plugin/awkeysaggregator.cpp
@@ -64,19 +64,19 @@ QString AWKeysAggregator::formatter(const QVariant &_data, const QString &_key,
// case block
switch (m_mapper->formatter(_key)) {
case FormatterType::Float:
- output = QString("%1").arg(_data.toFloat(), 5, 'f', 1);
+ output = QString("%1").arg(_data.toDouble(), 5, 'f', 1);
break;
case FormatterType::FloatTwoSymbols:
- output = QString("%1").arg(_data.toFloat(), 5, 'f', 2);
+ output = QString("%1").arg(_data.toDouble(), 5, 'f', 2);
break;
case FormatterType::Integer:
- output = QString("%1").arg(_data.toFloat(), 4, 'f', 0);
+ output = QString("%1").arg(_data.toDouble(), 4, 'f', 0);
break;
case FormatterType::IntegerFive:
- output = QString("%1").arg(_data.toFloat(), 5, 'f', 0);
+ output = QString("%1").arg(_data.toDouble(), 5, 'f', 0);
break;
case FormatterType::IntegerThree:
- output = QString("%1").arg(_data.toFloat(), 3, 'f', 0);
+ output = QString("%1").arg(_data.toDouble(), 3, 'f', 0);
break;
case FormatterType::List:
output = _data.toStringList().join(',');
@@ -85,10 +85,10 @@ QString AWKeysAggregator::formatter(const QVariant &_data, const QString &_key,
output = _data.toBool() ? m_acOnline : m_acOffline;
break;
case FormatterType::MemGBFormat:
- output = QString("%1").arg(_data.toFloat() / (1024.0 * 1024.0), 5, 'f', 1);
+ output = QString("%1").arg(_data.toDouble() / (1024.0 * 1024.0), 5, 'f', 1);
break;
case FormatterType::MemMBFormat:
- output = QString("%1").arg(_data.toFloat() / 1024.0, 5, 'f', 0);
+ output = QString("%1").arg(_data.toDouble() / 1024.0, 5, 'f', 0);
break;
case FormatterType::NetSmartFormat:
output = [](const float value) {
@@ -96,10 +96,10 @@ QString AWKeysAggregator::formatter(const QVariant &_data, const QString &_key,
return QString("%1").arg(value / 1024.0, 4, 'f', 1);
else
return QString("%1").arg(value, 4, 'f', 0);
- }(_data.toFloat());
+ }(_data.toDouble());
break;
case FormatterType::NetSmartUnits:
- if (_data.toFloat() > 1024.0)
+ if (_data.toDouble() > 1024.0)
output = m_translate ? i18n("MB/s") : "MB/s";
else
output = m_translate ? i18n("KB/s") : "KB/s";
@@ -110,7 +110,7 @@ QString AWKeysAggregator::formatter(const QVariant &_data, const QString &_key,
output = output.rightJustified(8, QLatin1Char(' '), true);
break;
case FormatterType::Temperature:
- output = QString("%1").arg(temperature(_data.toFloat()), 5, 'f', 1);
+ output = QString("%1").arg(temperature(_data.toDouble()), 5, 'f', 1);
break;
case FormatterType::Time:
output = _data.toDateTime().toString();
@@ -150,7 +150,7 @@ QString AWKeysAggregator::formatter(const QVariant &_data, const QString &_key,
source.replace("$m", QString("%1").arg(minutes));
return source;
}(m_mapper->formatter(_key) == FormatterType::Uptime ? "$ddd$hhh$mmm" : m_customUptime,
- static_cast(_data.toFloat()));
+ static_cast(_data.toDouble()));
break;
case FormatterType::NoFormat:
output = _data.toString();
@@ -234,7 +234,7 @@ void AWKeysAggregator::setTranslate(const bool _translate)
}
-QStringList AWKeysAggregator::registerSource(const QString &_source, const QString &_units, const QStringList &_keys)
+QStringList AWKeysAggregator::registerSource(const QString &_source, const KSysGuard::Unit &_units, const QStringList &_keys)
{
qCDebug(LOG_AW) << "Source" << _source << "with units" << _units;
diff --git a/sources/awesome-widget/plugin/awkeysaggregator.h b/sources/awesome-widget/plugin/awkeysaggregator.h
index 8bc93ae..cdf48f2 100644
--- a/sources/awesome-widget/plugin/awkeysaggregator.h
+++ b/sources/awesome-widget/plugin/awkeysaggregator.h
@@ -19,6 +19,8 @@
#ifndef AWKEYSAGGREGATOR_H
#define AWKEYSAGGREGATOR_H
+#include
+
#include
#include
@@ -81,7 +83,7 @@ public:
void setTranslate(bool _translate);
public slots:
- QStringList registerSource(const QString &_source, const QString &_units, const QStringList &_keys);
+ QStringList registerSource(const QString &_source, const KSysGuard::Unit &_units, const QStringList &_keys);
private:
[[nodiscard]] float temperature(float temp) const;
diff --git a/sources/awesome-widget/plugin/awpatternfunctions.cpp b/sources/awesome-widget/plugin/awpatternfunctions.cpp
index d93c16a..9a56da3 100644
--- a/sources/awesome-widget/plugin/awpatternfunctions.cpp
+++ b/sources/awesome-widget/plugin/awpatternfunctions.cpp
@@ -105,9 +105,9 @@ QList AWPatternFunctions::findFunctionCalls(cons
metadata.args = QStringList();
} else {
// replace '$,' to 0x1d
- argsString.replace("$,", QString(0x1d));
+ argsString.replace("$,", QChar(0x1d));
QStringList args = argsString.split(',');
- std::for_each(args.begin(), args.end(), [](QString &arg) { arg.replace(QString(0x1d), ","); });
+ std::for_each(args.begin(), args.end(), [](QString &arg) { arg.replace(QChar(0x1d), ","); });
metadata.args = args;
}
// other variables
diff --git a/sources/awesome-widget/plugin/awupdatehelper.cpp b/sources/awesome-widget/plugin/awupdatehelper.cpp
index 2d07752..3412c05 100644
--- a/sources/awesome-widget/plugin/awupdatehelper.cpp
+++ b/sources/awesome-widget/plugin/awupdatehelper.cpp
@@ -24,6 +24,7 @@
#include
#include
#include
+#include
#include "awdebug.h"
diff --git a/sources/desktop-panel/package/contents/ui/qmldir b/sources/desktop-panel/package/contents/ui/qmldir
index 637924c..2f19ff4 100644
--- a/sources/desktop-panel/package/contents/ui/qmldir
+++ b/sources/desktop-panel/package/contents/ui/qmldir
@@ -3,25 +3,25 @@
# common QML constants
-singleton General 1.0 file:///usr//awesomewidgets/qml/General.qml
+singleton General 1.0 file:///usr/share/awesomewidgets/qml/General.qml
# custom QML UI classes
-AboutTab file:///usr//awesomewidgets/qml/AboutTab.qml
-AWExtensions file:///usr//awesomewidgets/qml/AWExtensions.qml
-AWInfoLabel file:///usr//awesomewidgets/qml/AWInfoLabel.qml
-AWTagSelector file:///usr//awesomewidgets/qml/AWTagSelector.qml
-AWTextEditor file:///usr//awesomewidgets/qml/AWTextEditor.qml
-BugReport file:///usr//awesomewidgets/qml/BugReport.qml
-ButtonSelector file:///usr//awesomewidgets/qml/ButtonSelector.qml
-CheckBoxSelector file:///usr//awesomewidgets/qml/CheckBoxSelector.qml
-ColorSelector file:///usr//awesomewidgets/qml/ColorSelector.qml
-ComboBoxSelector file:///usr//awesomewidgets/qml/ComboBoxSelector.qml
-ExportDialog file:///usr//awesomewidgets/qml/ExportDialog.qml
-FontSelector file:///usr//awesomewidgets/qml/FontSelector.qml
-HtmlDefaultFunctionsBar file:///usr//awesomewidgets/qml/HtmlDefaultFunctionsBar.qml
-HtmlEditorButton file:///usr//awesomewidgets/qml/HtmlEditorButton.qml
-HtmlEditorColor file:///usr//awesomewidgets/qml/HtmlEditorColor.qml
-HtmlEditorFont file:///usr//awesomewidgets/qml/HtmlEditorFont.qml
-ImportDialog file:///usr//awesomewidgets/qml/ImportDialog.qml
-IntegerSelector file:///usr//awesomewidgets/qml/IntegerSelector.qml
-LineSelector file:///usr//awesomewidgets/qml/LineSelector.qml
+AboutTab file:///usr/share/awesomewidgets/qml/AboutTab.qml
+AWExtensions file:///usr/share/awesomewidgets/qml/AWExtensions.qml
+AWInfoLabel file:///usr/share/awesomewidgets/qml/AWInfoLabel.qml
+AWTagSelector file:///usr/share/awesomewidgets/qml/AWTagSelector.qml
+AWTextEditor file:///usr/share/awesomewidgets/qml/AWTextEditor.qml
+BugReport file:///usr/share/awesomewidgets/qml/BugReport.qml
+ButtonSelector file:///usr/share/awesomewidgets/qml/ButtonSelector.qml
+CheckBoxSelector file:///usr/share/awesomewidgets/qml/CheckBoxSelector.qml
+ColorSelector file:///usr/share/awesomewidgets/qml/ColorSelector.qml
+ComboBoxSelector file:///usr/share/awesomewidgets/qml/ComboBoxSelector.qml
+ExportDialog file:///usr/share/awesomewidgets/qml/ExportDialog.qml
+FontSelector file:///usr/share/awesomewidgets/qml/FontSelector.qml
+HtmlDefaultFunctionsBar file:///usr/share/awesomewidgets/qml/HtmlDefaultFunctionsBar.qml
+HtmlEditorButton file:///usr/share/awesomewidgets/qml/HtmlEditorButton.qml
+HtmlEditorColor file:///usr/share/awesomewidgets/qml/HtmlEditorColor.qml
+HtmlEditorFont file:///usr/share/awesomewidgets/qml/HtmlEditorFont.qml
+ImportDialog file:///usr/share/awesomewidgets/qml/ImportDialog.qml
+IntegerSelector file:///usr/share/awesomewidgets/qml/IntegerSelector.qml
+LineSelector file:///usr/share/awesomewidgets/qml/LineSelector.qml
diff --git a/sources/libraries.cmake b/sources/libraries.cmake
index 59e5730..ca15ffe 100644
--- a/sources/libraries.cmake
+++ b/sources/libraries.cmake
@@ -22,8 +22,9 @@ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${ECM_MODULE_PATH} ${ECM_KDE_MODULE_D
find_package(KF6 REQUIRED COMPONENTS I18n Notifications Service WindowSystem)
find_package(LibTaskManager REQUIRED)
find_package(Plasma REQUIRED)
+find_package(KSysGuard REQUIRED)
include(KDEInstallDirs)
include(KDECMakeSettings)
include(KDECompilerSettings)
set(Kf6_INCLUDE ${KDE_INSTALL_FULL_INCLUDEDIR_KF})
-set(Kf6_LIBRARIES KF6::I18n KF6::Notifications KF6::WindowSystem PW::LibTaskManager)
+set(Kf6_LIBRARIES KF6::I18n KF6::Notifications KF6::WindowSystem KSysGuard::Sensors KSysGuard::SensorFaces KSysGuard::SystemStats PW::LibTaskManager)
diff --git a/sources/qml/AWExtensions.qml b/sources/qml/AWExtensions.qml
index c83fca5..8a25574 100644
--- a/sources/qml/AWExtensions.qml
+++ b/sources/qml/AWExtensions.qml
@@ -15,9 +15,9 @@
* along with awesome-widgets. If not, see http://www.gnu.org/licenses/ *
***************************************************************************/
-import QtQuick 2.2
-import QtQuick.Controls 1.3 as QtControls
-import QtQuick.Dialogs 1.2 as QtDialogs
+import QtQuick 2.15
+import QtQuick.Controls
+import QtQuick.Dialogs
import org.kde.plasma.private.awesomewidget 1.0
@@ -40,25 +40,25 @@ Row {
signal unlock
signal showMessage(string message)
- QtControls.Button {
+ Button {
width: parent.width * 3 / 15
text: i18n("Edit bars")
onClicked: backend.editItem("graphicalitem")
}
- QtControls.Button {
+ Button {
width: parent.width * 3 / 15
text: i18n("Formatters")
onClicked: awPairConfig.showFormatterDialog(backend.dictKeys(true))
}
- QtControls.Button {
+ Button {
width: parent.width * 3 / 15
text: i18n("User keys")
onClicked: awPairConfig.showKeysDialog(backend.dictKeys(true))
}
- QtControls.Button {
+ Button {
width: parent.width * 5 / 15
text: i18n("Preview")
onClicked: {
@@ -68,30 +68,31 @@ Row {
}
}
- QtControls.Button {
- width: parent.width / 15
- iconName: "view-history"
- menu: QtControls.Menu {
- id: historyConfig
- Instantiator {
- model: awTelemetryHandler.get("awwidgetconfig")
- QtControls.MenuItem {
- text: modelData
- onTriggered: textArea.text = modelData
- }
- onObjectAdded: historyConfig.insertItem(index, object)
- onObjectRemoved: historyConfig.removeItem(object)
- }
- }
- }
+ // TODO migrate history
+ // Button {
+ // width: parent.width / 15
+ // iconName: "view-history"
+ // menu: Menu {
+ // id: historyConfig
+ // Instantiator {
+ // model: awTelemetryHandler.get("awwidgetconfig")
+ // MenuItem {
+ // text: modelData
+ // onTriggered: textArea.text = modelData
+ // }
+ // onObjectAdded: historyConfig.insertItem(index, object)
+ // onObjectRemoved: historyConfig.removeItem(object)
+ // }
+ // }
+ // }
- QtDialogs.MessageDialog {
+ MessageDialog {
id: compiledText
modality: Qt.NonModal
title: i18n("Preview")
}
- onShowMessage: {
+ onShowMessage: message => {
compiledText.text = message.split(" ").join(" ") // replaceAll lols
compiledText.open()
}
diff --git a/sources/qml/AWInfoLabel.qml b/sources/qml/AWInfoLabel.qml
index 7e8d16e..a549249 100644
--- a/sources/qml/AWInfoLabel.qml
+++ b/sources/qml/AWInfoLabel.qml
@@ -15,11 +15,11 @@
* along with awesome-widgets. If not, see http://www.gnu.org/licenses/ *
***************************************************************************/
-import QtQuick 2.2
-import QtQuick.Controls 1.3 as QtControls
+import QtQuick 2.15
+import QtQuick.Controls
-QtControls.Label {
+Label {
width: parent.width
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
diff --git a/sources/qml/AWTagSelector.qml b/sources/qml/AWTagSelector.qml
index 52b6571..301cf28 100644
--- a/sources/qml/AWTagSelector.qml
+++ b/sources/qml/AWTagSelector.qml
@@ -15,8 +15,8 @@
* along with awesome-widgets. If not, see http://www.gnu.org/licenses/ *
***************************************************************************/
-import QtQuick 2.2
-import QtQuick.Controls 1.3 as QtControls
+import QtQuick 2.15
+import QtQuick.Controls
Row {
@@ -30,7 +30,7 @@ Row {
property var textArea
property alias groups: tagGroups.model
- QtControls.ComboBox {
+ ComboBox {
id: tagGroups
width: parent.width * 2 / 5
textRole: "label"
@@ -41,12 +41,12 @@ Row {
}
}
- QtControls.ComboBox {
+ ComboBox {
id: tags
width: parent.width * 1 / 5
}
- QtControls.Button {
+ Button {
width: parent.width * 1 / 5
text: i18n("Add")
@@ -57,7 +57,7 @@ Row {
}
}
- QtControls.Button {
+ Button {
width: parent.width * 1 / 5
text: i18n("Show value")
diff --git a/sources/qml/AWTextEditor.qml b/sources/qml/AWTextEditor.qml
index 568391b..f77ab04 100644
--- a/sources/qml/AWTextEditor.qml
+++ b/sources/qml/AWTextEditor.qml
@@ -15,8 +15,8 @@
* along with awesome-widgets. If not, see http://www.gnu.org/licenses/ *
***************************************************************************/
-import QtQuick 2.0
-import QtQuick.Controls 1.3 as QtControls
+import QtQuick 2.15
+import QtQuick.Controls
Item {
@@ -26,7 +26,7 @@ Item {
property var backend
property alias text: textArea.text
- QtControls.TextArea {
+ TextArea {
id: textArea
anchors.fill: parent
textFormat: TextEdit.PlainText
diff --git a/sources/qml/AboutTab.qml b/sources/qml/AboutTab.qml
index 0f6eae0..6a894fb 100644
--- a/sources/qml/AboutTab.qml
+++ b/sources/qml/AboutTab.qml
@@ -15,77 +15,79 @@
* along with awesome-widgets. If not, see http://www.gnu.org/licenses/ *
***************************************************************************/
-import QtQuick 2.0
-import QtQuick.Controls 1.3 as QtControls
-import QtQuick.Layouts 1.0 as QtLayouts
+import QtQuick 2.15
+import QtQuick.Controls
+import QtQuick.Layouts
-Column {
+ColumnLayout {
anchors.fill: parent
property var textProvider
- QtControls.TabView {
- height: parent.height
+ TabBar {
+ id: bar
width: parent.width
+ TabButton {
+ text: i18n("About")
+ }
+ TabButton {
+ text: i18n("Acknowledgment")
+ }
+ }
- QtControls.Tab {
- anchors.margins: 10.0
- title: i18n("About")
+ StackLayout {
+ width: parent.width
+ currentIndex: bar.currentIndex
- QtLayouts.ColumnLayout {
- QtControls.Label {
- QtLayouts.Layout.fillWidth: true
- horizontalAlignment: Text.AlignHCenter
- text: textProvider.getAboutText("header")
- }
+ ColumnLayout {
+ Label {
+ Layout.fillWidth: true
+ horizontalAlignment: Text.AlignHCenter
+ text: textProvider.getAboutText("header")
+ }
- QtControls.Label {
- QtLayouts.Layout.fillWidth: true
- horizontalAlignment: Text.AlignHCenter
- text: textProvider.getAboutText("version")
- }
+ Label {
+ Layout.fillWidth: true
+ horizontalAlignment: Text.AlignHCenter
+ text: textProvider.getAboutText("version")
+ }
- QtControls.Label {
- QtLayouts.Layout.fillWidth: true
- horizontalAlignment: Text.AlignJustify
- text: textProvider.getAboutText("description")
- }
+ Label {
+ Layout.fillWidth: true
+ horizontalAlignment: Text.AlignJustify
+ text: textProvider.getAboutText("description")
+ }
- QtControls.Label {
- QtLayouts.Layout.fillWidth: true
- horizontalAlignment: Text.AlignLeft
- textFormat: Text.RichText
- text: textProvider.getAboutText("links")
- onLinkActivated: Qt.openUrlExternally(link)
- }
+ Label {
+ Layout.fillWidth: true
+ horizontalAlignment: Text.AlignLeft
+ textFormat: Text.RichText
+ text: textProvider.getAboutText("links")
+ onLinkActivated: Qt.openUrlExternally(link)
+ }
- QtControls.Label {
- QtLayouts.Layout.fillHeight: true
- QtLayouts.Layout.fillWidth: true
- font.capitalization: Font.SmallCaps
- horizontalAlignment: Text.AlignHCenter
- verticalAlignment: Text.AlignBottom
- textFormat: Text.RichText
- text: textProvider.getAboutText("copy")
- }
+ Label {
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+ font.capitalization: Font.SmallCaps
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignBottom
+ textFormat: Text.RichText
+ text: textProvider.getAboutText("copy")
}
}
- QtControls.Tab {
- anchors.margins: 10.0
- title: i18n("Acknowledgment")
-
- QtLayouts.ColumnLayout {
- QtControls.Label {
- QtLayouts.Layout.fillWidth: true
+ ColumnLayout {
+ Label {
+ Layout.fillWidth: true
wrapMode: Text.WordWrap
horizontalAlignment: Text.AlignJustify
text: textProvider.getAboutText("translators")
}
- QtControls.Label {
- QtLayouts.Layout.fillWidth: true
+ Label {
+ Layout.fillWidth: true
wrapMode: Text.WordWrap
horizontalAlignment: Text.AlignJustify
textFormat: Text.RichText
@@ -93,9 +95,9 @@ Column {
onLinkActivated: Qt.openUrlExternally(link)
}
- QtControls.Label {
- QtLayouts.Layout.fillHeight: true
- QtLayouts.Layout.fillWidth: true
+ Label {
+ Layout.fillHeight: true
+ Layout.fillWidth: true
wrapMode: Text.WordWrap
horizontalAlignment: Text.AlignJustify
verticalAlignment: Text.AlignTop
@@ -104,6 +106,5 @@ Column {
onLinkActivated: Qt.openUrlExternally(link)
}
}
- }
}
}
diff --git a/sources/qml/BugReport.qml b/sources/qml/BugReport.qml
index 50b80d7..aebaa95 100644
--- a/sources/qml/BugReport.qml
+++ b/sources/qml/BugReport.qml
@@ -15,15 +15,15 @@
* along with awesome-widgets. If not, see http://www.gnu.org/licenses/ *
***************************************************************************/
-import QtQuick 2.0
-import QtQuick.Controls 1.3 as QtControls
-import QtQuick.Dialogs 1.2 as QtDialogs
-import QtQuick.Layouts 1.2 as QtLayouts
+import QtQuick 2.15
+import QtQuick.Controls
+import QtQuick.Dialogs
+import QtQuick.Layouts
import org.kde.plasma.private.awesomewidget 1.0
-QtDialogs.Dialog {
+Dialog {
id: reportDialog
AWActions {
id: awActions
@@ -38,85 +38,85 @@ QtDialogs.Dialog {
title: i18n("Report a bug")
- standardButtons: QtDialogs.StandardButton.Ok | QtDialogs.StandardButton.Cancel | QtDialogs.StandardButton.Reset
+ standardButtons: DialogButtonBox.Ok | DialogButtonBox.Cancel | DialogButtonBox.Reset
- QtLayouts.ColumnLayout {
+ ColumnLayout {
anchors.fill: parent
- QtControls.TextField {
+ TextField {
id: title
- QtLayouts.Layout.fillWidth: true
+ Layout.fillWidth: true
placeholderText: i18n("Report subject")
}
- QtLayouts.ColumnLayout {
- QtLayouts.Layout.fillWidth: true
+ ColumnLayout {
+ Layout.fillWidth: true
- QtControls.GroupBox {
- QtLayouts.Layout.fillWidth: true
+ GroupBox {
+ Layout.fillWidth: true
height: parent.height / 5
title: i18n("Description")
- QtControls.TextArea {
+ TextArea {
id: description
anchors.fill: parent
textFormat: TextEdit.PlainText
}
}
- QtControls.GroupBox {
- QtLayouts.Layout.fillWidth: true
+ GroupBox {
+ Layout.fillWidth: true
height: parent.height / 5
title: i18n("Steps to reproduce")
- QtControls.TextArea {
+ TextArea {
id: reproduce
anchors.fill: parent
textFormat: TextEdit.PlainText
}
}
- QtControls.GroupBox {
- QtLayouts.Layout.fillWidth: true
+ GroupBox {
+ Layout.fillWidth: true
height: parent.height / 5
title: i18n("Expected result")
- QtControls.TextArea {
+ TextArea {
id: expected
anchors.fill: parent
textFormat: TextEdit.PlainText
}
}
- QtControls.GroupBox {
- QtLayouts.Layout.fillWidth: true
- QtLayouts.Layout.alignment: Qt.AlignBottom
+ GroupBox {
+ Layout.fillWidth: true
+ Layout.alignment: Qt.AlignBottom
title: i18n("Logs")
- QtLayouts.ColumnLayout {
+ ColumnLayout {
anchors.fill: parent
- QtLayouts.Layout.fillWidth: true
+ Layout.fillWidth: true
Row {
- QtLayouts.Layout.fillWidth: true
- QtControls.Label {
+ Layout.fillWidth: true
+ Label {
width: parent.width * 2 / 5
horizontalAlignment: Text.AlignJustify
verticalAlignment: Text.AlignVCenter
wrapMode: Text.WordWrap
text: i18n("Use command")
}
- QtControls.TextField {
+ TextField {
width: parent.width * 3 / 5
readOnly: true
text: "QT_LOGGING_RULES=*=true plasmawindowed org.kde.plasma.awesomewidget"
}
}
- QtControls.Button {
- QtLayouts.Layout.fillWidth: true
+ Button {
+ Layout.fillWidth: true
text: i18n("Load log file")
onClicked: logPath.open()
}
- QtControls.TextArea {
+ TextArea {
id: logBody
- QtLayouts.Layout.fillWidth: true
- QtLayouts.Layout.alignment: Qt.AlignBottom
+ Layout.fillWidth: true
+ Layout.alignment: Qt.AlignBottom
textFormat: TextEdit.PlainText
}
}
- QtDialogs.FileDialog {
+ FileDialog {
id: logPath
title: i18n("Open log file")
onAccepted:
diff --git a/sources/qml/ButtonSelector.qml b/sources/qml/ButtonSelector.qml
index 854bda5..8656f8f 100644
--- a/sources/qml/ButtonSelector.qml
+++ b/sources/qml/ButtonSelector.qml
@@ -15,28 +15,27 @@
* along with awesome-widgets. If not, see http://www.gnu.org/licenses/ *
***************************************************************************/
-import QtQuick 2.0
-import QtQuick.Controls 1.3 as QtControls
+import QtQuick 2.15
+import QtQuick.Controls
Row {
- height: implicitHeight
width: parent.width
property alias text: label.text
property alias value: button.text
- property alias style: button.style
+ property alias background: button.background
signal buttonActivated
- QtControls.Label {
+ Label {
id: label
height: parent.height
width: parent.width * 2 / 5
horizontalAlignment: Text.AlignRight
verticalAlignment: Text.AlignVCenter
}
- QtControls.Button {
+ Button {
id: button
width: parent.width * 3 / 5
onClicked: buttonActivated()
diff --git a/sources/qml/CMakeLists.txt b/sources/qml/CMakeLists.txt
index 1834fef..29a6c95 100644
--- a/sources/qml/CMakeLists.txt
+++ b/sources/qml/CMakeLists.txt
@@ -9,4 +9,4 @@ configure_file(${SUBPROJECT_QMLDIR_IN} ${CMAKE_CURRENT_SOURCE_DIR}/../awesome-wi
configure_file(${SUBPROJECT_QMLDIR_IN} ${CMAKE_CURRENT_SOURCE_DIR}/../desktop-panel/package/contents/ui/qmldir)
# install
-install(FILES ${SUBPROJECT_SOURCE} DESTINATION ${DATA_INSTALL_DIR}/${PROJECT_NAME}/qml)
+install(FILES ${SUBPROJECT_SOURCE} DESTINATION ${KDE_INSTALL_FULL_DATADIR}/${PROJECT_NAME}/qml)
diff --git a/sources/qml/CheckBoxSelector.qml b/sources/qml/CheckBoxSelector.qml
index e9b265c..64e1dda 100644
--- a/sources/qml/CheckBoxSelector.qml
+++ b/sources/qml/CheckBoxSelector.qml
@@ -15,8 +15,8 @@
* along with awesome-widgets. If not, see http://www.gnu.org/licenses/ *
***************************************************************************/
-import QtQuick 2.0
-import QtQuick.Controls 1.3 as QtControls
+import QtQuick 2.15
+import QtQuick.Controls
Row {
@@ -26,11 +26,11 @@ Row {
property alias text: checkBox.text
property alias checked: checkBox.checked
- QtControls.Label {
+ Label {
height: parent.heigth
width: parent.width * 2 / 5
}
- QtControls.CheckBox {
+ CheckBox {
id: checkBox
width: parent.width * 3 / 5
}
diff --git a/sources/qml/ColorSelector.qml b/sources/qml/ColorSelector.qml
index 1ecaac0..1c48ed6 100644
--- a/sources/qml/ColorSelector.qml
+++ b/sources/qml/ColorSelector.qml
@@ -15,32 +15,22 @@
* along with awesome-widgets. If not, see http://www.gnu.org/licenses/ *
***************************************************************************/
-import QtQuick 2.0
-import QtQuick.Controls.Styles 1.3 as QtStyles
-import QtQuick.Dialogs 1.1 as QtDialogs
+import QtQuick 2.15
+import QtQuick.Dialogs
-Row {
- height: implicitHeight
- width: parent.width
+ButtonSelector {
+ // TODO somehow doesn't work
+ // background: Rectangle {
+ // color: value
+ // }
- property alias text: selector.text
- property alias value: selector.value
+ onButtonActivated: colorDialog.visible = true
- ButtonSelector {
- id: selector
- style: QtStyles.ButtonStyle {
- background: Rectangle {
- color: value
- }
- }
- onButtonActivated: colorDialog.visible = true
- }
-
- QtDialogs.ColorDialog {
+ ColorDialog {
id: colorDialog
title: i18n("Select a color")
- color: value
- onAccepted: value = colorDialog.color
+ selectedColor: value
+ onAccepted: value = selectedColor
}
}
diff --git a/sources/qml/ComboBoxSelector.qml b/sources/qml/ComboBoxSelector.qml
index 19929d4..824f89b 100644
--- a/sources/qml/ComboBoxSelector.qml
+++ b/sources/qml/ComboBoxSelector.qml
@@ -15,8 +15,8 @@
* along with awesome-widgets. If not, see http://www.gnu.org/licenses/ *
***************************************************************************/
-import QtQuick 2.0
-import QtQuick.Controls 1.3 as QtControls
+import QtQuick 2.15
+import QtQuick.Controls
Row {
@@ -32,14 +32,14 @@ Row {
signal valueEdited(string newValue)
- QtControls.Label {
+ Label {
id: label
height: parent.height
width: parent.width * 2 / 5
horizontalAlignment: Text.AlignRight
verticalAlignment: Text.AlignVCenter
}
- QtControls.ComboBox {
+ ComboBox {
id: comboBox
width: parent.width * 3 / 5
textRole: 'label'
@@ -47,7 +47,7 @@ Row {
Component.onCompleted: {
var total = comboBox.model.length
for (var i = 0; i < total; i++) {
- if (comboBox.model[i]["name"] == value)
+ if (comboBox.model[i]["name"] === value)
comboBox.currentIndex = i
}
}
diff --git a/sources/qml/ExportDialog.qml b/sources/qml/ExportDialog.qml
index db136d5..63a47d0 100644
--- a/sources/qml/ExportDialog.qml
+++ b/sources/qml/ExportDialog.qml
@@ -15,8 +15,8 @@
* along with awesome-widgets. If not, see http://www.gnu.org/licenses/ *
***************************************************************************/
-import QtQuick 2.0
-import QtQuick.Dialogs 1.2 as QtDialogs
+import QtQuick 2.15
+import QtQuick.Dialogs
import org.kde.plasma.private.awesomewidget 1.0
@@ -28,16 +28,15 @@ Item {
id: awConfig
}
- QtDialogs.MessageDialog {
+ MessageDialog {
id: messageDialog
- standardButtons: QtDialogs.StandardButton.Ok
}
- QtDialogs.FileDialog {
+ FileDialog {
id: fileDialog
- selectExisting: false
+ fileMode: FileDialog.SaveFile
title: i18n("Export")
- folder: awConfig.configurationDirectory()
+ currentFolder: awConfig.configurationDirectory()
onAccepted: {
var status = awConfig.exportConfiguration(
configuration,
diff --git a/sources/qml/FontSelector.qml b/sources/qml/FontSelector.qml
index aed4731..cbf656e 100644
--- a/sources/qml/FontSelector.qml
+++ b/sources/qml/FontSelector.qml
@@ -15,8 +15,8 @@
* along with awesome-widgets. If not, see http://www.gnu.org/licenses/ *
***************************************************************************/
-import QtQuick 2.0
-import QtQuick.Dialogs 1.1 as QtDialogs
+import QtQuick 2.15
+import QtQuick.Dialogs
Row {
@@ -35,15 +35,15 @@ Row {
}
}
- QtDialogs.FontDialog {
+ FontDialog {
id: fontDialog
title: i18n("Select a font")
signal setFont
- onAccepted: value = fontDialog.font.family
+ onAccepted: value = selectedFont.family
onSetFont: {
- fontDialog.font = Qt.font({
+ selectedFont = Qt.font({
family: value,
pointSize: 12,
italic: false,
diff --git a/sources/qml/General.qml b/sources/qml/General.qml
index 32885cf..a65ac13 100644
--- a/sources/qml/General.qml
+++ b/sources/qml/General.qml
@@ -16,8 +16,10 @@
***************************************************************************/
pragma Singleton
-import QtQuick 2.0
+import QtQuick 2.15
+// required by i18n functions
+import org.kde.plasma.core as PlasmaCore
QtObject {
property variant fontWeight: {
diff --git a/sources/qml/HtmlDefaultFunctionsBar.qml b/sources/qml/HtmlDefaultFunctionsBar.qml
index 97cee45..8858779 100644
--- a/sources/qml/HtmlDefaultFunctionsBar.qml
+++ b/sources/qml/HtmlDefaultFunctionsBar.qml
@@ -15,7 +15,7 @@
* along with awesome-widgets. If not, see http://www.gnu.org/licenses/ *
***************************************************************************/
-import QtQuick 2.2
+import QtQuick 2.15
Row {
@@ -41,35 +41,35 @@ Row {
// new line
HtmlEditorButton {
width: parent.width / 15
- iconName: "format-indent-more"
+ icon.name: "format-indent-more"
textField: textArea
end: "
\n"
}
// font properties
HtmlEditorButton {
width: parent.width / 15
- iconName: "format-text-bold"
+ icon.name: "format-text-bold"
textField: textArea
start: ""
end: ""
}
HtmlEditorButton {
width: parent.width / 15
- iconName: "format-text-italic"
+ icon.name: "format-text-italic"
textField: textArea
start: ""
end: ""
}
HtmlEditorButton {
width: parent.width / 15
- iconName: "format-text-underline"
+ icon.name: "format-text-underline"
textField: textArea
start: ""
end: ""
}
HtmlEditorButton {
width: parent.width / 15
- iconName: "format-text-strikethrough"
+ icon.name: "format-text-strikethrough"
textField: textArea
start: ""
end: ""
@@ -78,28 +78,28 @@ Row {
// indentation
HtmlEditorButton {
width: parent.width / 15
- iconName: "format-justify-left"
+ icon.name: "format-justify-left"
textField: textArea
start: ""
end: "
"
}
HtmlEditorButton {
width: parent.width / 15
- iconName: "format-justify-center"
+ icon.name: "format-justify-center"
textField: textArea
start: ""
end: "
"
}
HtmlEditorButton {
width: parent.width / 15
- iconName: "format-justify-right"
+ icon.name: "format-justify-right"
textField: textArea
start: ""
end: "
"
}
HtmlEditorButton {
width: parent.width / 15
- iconName: "format-justify-fill"
+ icon.name: "format-justify-fill"
textField: textArea
start: ""
end: "
"
diff --git a/sources/qml/HtmlEditorButton.qml b/sources/qml/HtmlEditorButton.qml
index b5c17ed..d338db6 100644
--- a/sources/qml/HtmlEditorButton.qml
+++ b/sources/qml/HtmlEditorButton.qml
@@ -15,11 +15,11 @@
* along with awesome-widgets. If not, see http://www.gnu.org/licenses/ *
***************************************************************************/
-import QtQuick 2.2
-import QtQuick.Controls 1.3 as QtControls
+import QtQuick 2.15
+import QtQuick.Controls
-QtControls.Button {
+Button {
// parent object in which text will be replaced
property var textField
// start and end tags
diff --git a/sources/qml/HtmlEditorColor.qml b/sources/qml/HtmlEditorColor.qml
index 45365dc..71100c8 100644
--- a/sources/qml/HtmlEditorColor.qml
+++ b/sources/qml/HtmlEditorColor.qml
@@ -15,8 +15,8 @@
* along with awesome-widgets. If not, see http://www.gnu.org/licenses/ *
***************************************************************************/
-import QtQuick 2.2
-import QtQuick.Dialogs 1.1 as QtDialogs
+import QtQuick 2.15
+import QtQuick.Dialogs
HtmlEditorButton {
@@ -24,7 +24,7 @@ HtmlEditorButton {
clickedEvent: function() { return colorDialog.open() }
- QtDialogs.ColorDialog {
+ ColorDialog {
id: colorDialog
title: i18n("Select a color")
diff --git a/sources/qml/HtmlEditorFont.qml b/sources/qml/HtmlEditorFont.qml
index 590a172..b91c970 100644
--- a/sources/qml/HtmlEditorFont.qml
+++ b/sources/qml/HtmlEditorFont.qml
@@ -15,14 +15,14 @@
* along with awesome-widgets. If not, see http://www.gnu.org/licenses/ *
***************************************************************************/
-import QtQuick 2.2
+import QtQuick 2.15
import org.kde.plasma.private.awesomewidget 1.0
HtmlEditorButton {
end: ""
- iconName: "font"
+ icon.name: "font"
text: i18n("Font")
// backend
diff --git a/sources/qml/ImportDialog.qml b/sources/qml/ImportDialog.qml
index 0ebdaad..2db79c5 100644
--- a/sources/qml/ImportDialog.qml
+++ b/sources/qml/ImportDialog.qml
@@ -15,9 +15,9 @@
* along with awesome-widgets. If not, see http://www.gnu.org/licenses/ *
***************************************************************************/
-import QtQuick 2.0
-import QtQuick.Controls 1.3 as QtControls
-import QtQuick.Dialogs 1.2 as QtDialogs
+import QtQuick 2.15
+import QtQuick.Controls
+import QtQuick.Dialogs
import org.kde.plasma.private.awesomewidget 1.0
@@ -29,28 +29,28 @@ Item {
signal configurationReceived(var configuration)
- QtDialogs.FileDialog {
+ FileDialog {
id: fileDialog
title: i18n("Import")
- folder: awConfig.configurationDirectory()
+ currentFolder: awConfig.configurationDirectory()
onAccepted: importSelection.open()
}
- QtDialogs.Dialog {
+ Dialog {
id: importSelection
Column {
- QtControls.CheckBox {
+ CheckBox {
id: importPlasmoid
text: i18n("Import plasmoid settings")
}
- QtControls.CheckBox {
+ CheckBox {
id: importExtensions
text: i18n("Import extensions")
}
- QtControls.CheckBox {
+ CheckBox {
id: importAdds
text: i18n("Import additional files")
}
diff --git a/sources/qml/IntegerSelector.qml b/sources/qml/IntegerSelector.qml
index dea9443..dfad501 100644
--- a/sources/qml/IntegerSelector.qml
+++ b/sources/qml/IntegerSelector.qml
@@ -15,8 +15,8 @@
* along with awesome-widgets. If not, see http://www.gnu.org/licenses/ *
***************************************************************************/
-import QtQuick 2.0
-import QtQuick.Controls 1.3 as QtControls
+import QtQuick 2.15
+import QtQuick.Controls
Row {
@@ -26,22 +26,22 @@ Row {
property alias text: label.text
property alias value: spinBox.value
- property alias maximumValue: spinBox.maximumValue
- property alias minimumValue: spinBox.minimumValue
+ property alias maximumValue: spinBox.to
+ property alias minimumValue: spinBox.from
property alias stepSize: spinBox.stepSize
signal valueEdited(int newValue)
- QtControls.Label {
+ Label {
id: label
height: parent.height
width: parent.width * 2 / 5
horizontalAlignment: Text.AlignRight
verticalAlignment: Text.AlignVCenter
}
- QtControls.SpinBox {
+ SpinBox {
id: spinBox
width: parent.width * 3 / 5
- onEditingFinished: valueEdited(spinBox.value)
+ onValueModified: valueEdited(spinBox.value)
}
}
diff --git a/sources/qml/LineSelector.qml b/sources/qml/LineSelector.qml
index ab21728..436bef4 100644
--- a/sources/qml/LineSelector.qml
+++ b/sources/qml/LineSelector.qml
@@ -15,8 +15,8 @@
* along with awesome-widgets. If not, see http://www.gnu.org/licenses/ *
***************************************************************************/
-import QtQuick 2.0
-import QtQuick.Controls 1.3 as QtControls
+import QtQuick 2.15
+import QtQuick.Controls
Row {
@@ -28,14 +28,14 @@ Row {
signal valueEdited(string newValue)
- QtControls.Label {
+ Label {
id: label
height: parent.height
width: parent.width * 2 / 5
horizontalAlignment: Text.AlignRight
verticalAlignment: Text.AlignVCenter
}
- QtControls.TextField {
+ TextField {
id: textField
width: parent.width * 3 / 5
onEditingFinished: valueEdited(textField.text)
diff --git a/sources/qml/qmldir.in b/sources/qml/qmldir.in
index ea537a8..9930b15 100644
--- a/sources/qml/qmldir.in
+++ b/sources/qml/qmldir.in
@@ -3,25 +3,25 @@
# common QML constants
-singleton General 1.0 file://@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/qml/General.qml
+singleton General 1.0 file://@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/qml/General.qml
# custom QML UI classes
-AboutTab file://@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/qml/AboutTab.qml
-AWExtensions file://@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/qml/AWExtensions.qml
-AWInfoLabel file://@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/qml/AWInfoLabel.qml
-AWTagSelector file://@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/qml/AWTagSelector.qml
-AWTextEditor file://@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/qml/AWTextEditor.qml
-BugReport file://@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/qml/BugReport.qml
-ButtonSelector file://@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/qml/ButtonSelector.qml
-CheckBoxSelector file://@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/qml/CheckBoxSelector.qml
-ColorSelector file://@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/qml/ColorSelector.qml
-ComboBoxSelector file://@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/qml/ComboBoxSelector.qml
-ExportDialog file://@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/qml/ExportDialog.qml
-FontSelector file://@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/qml/FontSelector.qml
-HtmlDefaultFunctionsBar file://@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/qml/HtmlDefaultFunctionsBar.qml
-HtmlEditorButton file://@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/qml/HtmlEditorButton.qml
-HtmlEditorColor file://@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/qml/HtmlEditorColor.qml
-HtmlEditorFont file://@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/qml/HtmlEditorFont.qml
-ImportDialog file://@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/qml/ImportDialog.qml
-IntegerSelector file://@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/qml/IntegerSelector.qml
-LineSelector file://@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/qml/LineSelector.qml
+AboutTab file://@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/qml/AboutTab.qml
+AWExtensions file://@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/qml/AWExtensions.qml
+AWInfoLabel file://@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/qml/AWInfoLabel.qml
+AWTagSelector file://@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/qml/AWTagSelector.qml
+AWTextEditor file://@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/qml/AWTextEditor.qml
+BugReport file://@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/qml/BugReport.qml
+ButtonSelector file://@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/qml/ButtonSelector.qml
+CheckBoxSelector file://@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/qml/CheckBoxSelector.qml
+ColorSelector file://@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/qml/ColorSelector.qml
+ComboBoxSelector file://@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/qml/ComboBoxSelector.qml
+ExportDialog file://@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/qml/ExportDialog.qml
+FontSelector file://@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/qml/FontSelector.qml
+HtmlDefaultFunctionsBar file://@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/qml/HtmlDefaultFunctionsBar.qml
+HtmlEditorButton file://@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/qml/HtmlEditorButton.qml
+HtmlEditorColor file://@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/qml/HtmlEditorColor.qml
+HtmlEditorFont file://@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/qml/HtmlEditorFont.qml
+ImportDialog file://@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/qml/ImportDialog.qml
+IntegerSelector file://@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/qml/IntegerSelector.qml
+LineSelector file://@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/qml/LineSelector.qml