diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index f9fd9d5..f4fd46c 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -24,7 +24,7 @@ jobs:
- uses: actions/checkout@v3
- name: create build environment
- run: pacman -Sy --noconfirm base-devel cmake extra-cmake-modules python util-linux-libs xorg-server-xvfb
+ run: pacman -Syu --noconfirm base-devel cmake extra-cmake-modules python util-linux-libs xorg-server-xvfb
- name: install dependencies
run: pacman -S --noconfirm plasma-workspace
diff --git a/sources/CMakeLists.txt b/sources/CMakeLists.txt
index 7c0cbcd..a088908 100644
--- a/sources/CMakeLists.txt
+++ b/sources/CMakeLists.txt
@@ -9,6 +9,9 @@ endif ()
if (POLICY CMP0071)
cmake_policy(SET CMP0071 NEW)
endif ()
+if (POLICY CMP0160)
+ cmake_policy(SET CMP0160 OLD)
+endif ()
project(awesomewidgets)
set(PROJECT_AUTHOR "Evgeniy Alekseev")
diff --git a/sources/awesome-widget/package/contents/config/config.qml b/sources/awesome-widget/package/contents/config/config.qml
index fd6a9c8..e28847d 100644
--- a/sources/awesome-widget/package/contents/config/config.qml
+++ b/sources/awesome-widget/package/contents/config/config.qml
@@ -51,6 +51,12 @@ ConfigModel {
source: "dataengine.qml"
}
+ ConfigCategory {
+ name: i18n("Report bug")
+ icon: "tools-report-bug"
+ source: "bug.qml"
+ }
+
ConfigCategory {
name: i18n("About")
icon: "help-about"
diff --git a/sources/awesome-widget/package/contents/ui/advanced.qml b/sources/awesome-widget/package/contents/ui/advanced.qml
index 4279f98..d83b319 100644
--- a/sources/awesome-widget/package/contents/ui/advanced.qml
+++ b/sources/awesome-widget/package/contents/ui/advanced.qml
@@ -27,8 +27,8 @@ KCM.SimpleKCM {
id: advancedPage
// backend
- AWActions {
- id: awActions
+ AWConfigHelper {
+ id: awConfig
}
property alias cfg_background: background.checked
@@ -52,7 +52,6 @@ KCM.SimpleKCM {
property alias cfg_telemetryId: telemetryId.value
Column {
- id: pageColumn
anchors.fill: parent
CheckBoxSelector {
@@ -198,7 +197,7 @@ KCM.SimpleKCM {
ButtonSelector {
value: i18n("Drop key cache")
- onButtonActivated: awActions.dropCache()
+ onButtonActivated: awConfig.dropCache()
}
ButtonSelector {
diff --git a/sources/awesome-widget/package/contents/ui/appearance.qml b/sources/awesome-widget/package/contents/ui/appearance.qml
index 0345715..f576b7c 100644
--- a/sources/awesome-widget/package/contents/ui/appearance.qml
+++ b/sources/awesome-widget/package/contents/ui/appearance.qml
@@ -42,7 +42,6 @@ KCM.SimpleKCM {
property string cfg_textStyle: textStyle.value
Column {
- id: pageColumn
anchors.fill: parent
FontSelector {
diff --git a/sources/qml/BugReport.qml b/sources/awesome-widget/package/contents/ui/bug.qml
similarity index 87%
rename from sources/qml/BugReport.qml
rename to sources/awesome-widget/package/contents/ui/bug.qml
index cb218de..a1c07a2 100644
--- a/sources/qml/BugReport.qml
+++ b/sources/awesome-widget/package/contents/ui/bug.qml
@@ -19,12 +19,15 @@ import QtQuick 2.15
import QtQuick.Controls
import QtQuick.Dialogs
import QtQuick.Layouts
+import org.kde.kcmutils as KCM
-import org.kde.plasma.private.awesomewidget 1.0
+import org.kde.plasma.awesomewidgets
+import org.kde.plasma.private.awesomewidget
-Dialog {
- id: reportDialog
+KCM.SimpleKCM {
+ id: bugPage
+
AWActions {
id: awActions
}
@@ -32,12 +35,6 @@ Dialog {
id: awBugReporter
}
- width: 640
- height: 480
-
- title: i18n("Report a bug")
- standardButtons: DialogButtonBox.Ok | DialogButtonBox.Cancel | DialogButtonBox.Reset
-
ColumnLayout {
anchors.fill: parent
@@ -52,7 +49,6 @@ Dialog {
GroupBox {
Layout.fillWidth: true
- height: parent.height / 5
title: i18n("Description")
TextArea {
@@ -64,7 +60,6 @@ Dialog {
GroupBox {
Layout.fillWidth: true
- height: parent.height / 5
title: i18n("Steps to reproduce")
TextArea {
@@ -76,7 +71,6 @@ Dialog {
GroupBox {
Layout.fillWidth: true
- height: parent.height / 5
title: i18n("Expected result")
TextArea {
@@ -130,27 +124,36 @@ Dialog {
FileDialog {
id: logPath
title: i18n("Open log file")
- onAccepted:
- logBody.text = awActions.getFileContent(logPath.fileUrl.toString().replace("file://", ""))
+ onAccepted: logBody.text = awActions.getFileContent(logPath.selectedFile.toString().replace("file://", ""))
}
}
+
+ DialogButtonBox {
+ Layout.fillWidth: true
+
+ standardButtons: DialogButtonBox.Ok | DialogButtonBox.Reset
+ alignment: Qt.AlignRight
+ onAccepted: sendBugReport()
+ onReset: resetDialog()
+ }
}
}
- onAccepted: {
+ function sendBugReport() {
const text = awBugReporter.generateText(description.text, reproduce.text, expected.text, logBody.text)
awBugReporter.sendBugReport(title.text, text)
}
- onReset: {
+ function resetDialog() {
title.text = ""
description.text = ""
reproduce.text = ""
expected.text = ""
+ logBody.text = ""
}
Component.onCompleted: {
+ resetDialog()
awBugReporter.doConnect()
}
}
-
diff --git a/sources/awesome-widget/package/contents/ui/dataengine.qml b/sources/awesome-widget/package/contents/ui/dataengine.qml
index 23e49a4..a183d1c 100644
--- a/sources/awesome-widget/package/contents/ui/dataengine.qml
+++ b/sources/awesome-widget/package/contents/ui/dataengine.qml
@@ -37,7 +37,6 @@ KCM.SimpleKCM {
property variant cfg_dataengine: awConfig.readDataEngineConfiguration()
Column {
- id: pageColumn
anchors.fill: parent
GroupBox {
diff --git a/sources/awesome-widget/package/contents/ui/main.qml b/sources/awesome-widget/package/contents/ui/main.qml
index fc19e58..8e66f1e 100644
--- a/sources/awesome-widget/package/contents/ui/main.qml
+++ b/sources/awesome-widget/package/contents/ui/main.qml
@@ -16,8 +16,6 @@
***************************************************************************/
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
@@ -39,9 +37,6 @@ PlasmoidItem {
AWTelemetryHandler {
id: awTelemetryHandler
}
- BugReport {
- id: bugReport
- }
property variant tooltipSettings: {
"tooltipNumber": plasmoid.configuration.tooltipNumber,
@@ -92,7 +87,7 @@ PlasmoidItem {
color: plasmoid.configuration.fontColor
font.family: plasmoid.configuration.fontFamily
- font.italic: plasmoid.configuration.fontStyle === "italic" ? true : false
+ font.italic: plasmoid.configuration.fontStyle === "italic"
font.pointSize: plasmoid.configuration.fontSize
font.weight: General.fontWeight[plasmoid.configuration.fontWeight]
@@ -111,35 +106,11 @@ PlasmoidItem {
}
}
- Dialog {
- id: tagSelector
- title: i18n("Select tag")
-
- ComboBox {
- id: tagSelectorBox
- width: parent.width
- editable: true
- }
-
- onAccepted: {
- const tag = tagSelectorBox.editText
- let message = i18n("Tag: %1", tag)
- message += "
"
- message += i18n("Value: %1", awKeys.valueByKey(tag))
- message += "
"
- message += i18n("Info: %1", awKeys.infoByKey(tag))
- awActions.sendNotification("tag", message)
- }
- }
-
Plasmoid.contextualActions: [
PlasmaCore.Action {
- text: i18n("Request key")
+ text: i18n("Run monitor")
icon.name: "utilities-system-monitor"
- onTriggered: {
- tagSelectorBox.model = awKeys.dictKeys(true)
- tagSelector.open()
- }
+ onTriggered: awActions.runCmd("plasma-systemmonitor", [])
},
PlasmaCore.Action {
text: i18n("Show README")
@@ -150,14 +121,6 @@ PlasmoidItem {
text: i18n("Check updates")
icon.name: "system-software-update"
onTriggered: awActions.checkUpdates(true)
- },
- PlasmaCore.Action {
- text: i18n("Report bug")
- icon.name: "tools-report-bug"
- onTriggered: {
- bugReport.reset()
- bugReport.open()
- }
}
]
diff --git a/sources/awesome-widget/package/contents/ui/tooltip.qml b/sources/awesome-widget/package/contents/ui/tooltip.qml
index c828a15..193f5ec 100644
--- a/sources/awesome-widget/package/contents/ui/tooltip.qml
+++ b/sources/awesome-widget/package/contents/ui/tooltip.qml
@@ -45,7 +45,6 @@ KCM.SimpleKCM {
property alias cfg_batInTooltipColor: batInTooltipColor.value
Column {
- id: pageColumn
anchors.fill: parent
Label {
diff --git a/sources/awesome-widget/package/contents/ui/widget.qml b/sources/awesome-widget/package/contents/ui/widget.qml
index 02cdb99..3c02bdf 100644
--- a/sources/awesome-widget/package/contents/ui/widget.qml
+++ b/sources/awesome-widget/package/contents/ui/widget.qml
@@ -40,7 +40,6 @@ KCM.SimpleKCM {
signal needTextUpdate(string newText)
Column {
- id: pageColumn
anchors.fill: parent
AWInfoLabel {}
diff --git a/sources/awesome-widget/plugin/awactions.cpp b/sources/awesome-widget/plugin/awactions.cpp
index 6a970f1..43f899f 100644
--- a/sources/awesome-widget/plugin/awactions.cpp
+++ b/sources/awesome-widget/plugin/awactions.cpp
@@ -75,7 +75,7 @@ bool AWActions::runCmd(const QString &_cmd, const QStringList &_args)
{
qCDebug(LOG_AW) << "Cmd" << _cmd << "args" << _args;
- sendNotification(QString("Info"), i18n("Run %1", _cmd));
+ sendNotification("system", i18n("Run %1", _cmd));
return QProcess::startDetached(_cmd, _args);
}
@@ -88,20 +88,6 @@ void AWActions::showReadme()
}
-void AWActions::showLegacyInfo()
-{
- auto msgBox = new QMessageBox(nullptr);
- msgBox->setAttribute(Qt::WA_DeleteOnClose);
- msgBox->setModal(false);
- msgBox->setWindowTitle(i18n("Not supported"));
- msgBox->setText(i18n("You are using mammoth's Qt version, try to update it first"));
- msgBox->setStandardButtons(QMessageBox::Ok);
- msgBox->setIcon(QMessageBox::Information);
-
- msgBox->open();
-}
-
-
// HACK: this method uses variables from version.h
QString AWActions::getAboutText(const QString &_type)
{
@@ -135,7 +121,6 @@ void AWActions::sendNotification(const QString &_eventId, const QString &_messag
{
qCDebug(LOG_AW) << "Event" << _eventId << "with message" << _message;
- KNotification *notification
- = KNotification::event(_eventId, QString("Awesome Widget ::: %1").arg(_eventId), _message);
- notification->setComponentName("plasma-applet-org.kde.plasma.awesome-widget");
+ auto *event = KNotification::event(_eventId, QString("Awesome Widget ::: %1").arg(_eventId), _message);
+ event->setComponentName("plasma-applet-org.kde.plasma.awesome-widget");
}
diff --git a/sources/awesome-widget/plugin/awactions.h b/sources/awesome-widget/plugin/awactions.h
index afb2ef0..d0f091d 100644
--- a/sources/awesome-widget/plugin/awactions.h
+++ b/sources/awesome-widget/plugin/awactions.h
@@ -33,7 +33,6 @@ public:
Q_INVOKABLE void checkUpdates(bool _showAnyway = false);
Q_INVOKABLE static QString getFileContent(const QString &_path);
Q_INVOKABLE static bool runCmd(const QString &_cmd, const QStringList &_args);
- Q_INVOKABLE static void showLegacyInfo();
Q_INVOKABLE static void showReadme();
// configuration slots
Q_INVOKABLE static QString getAboutText(const QString &_type);
diff --git a/sources/awesome-widget/plugin/awbugreporter.cpp b/sources/awesome-widget/plugin/awbugreporter.cpp
index f062a9d..5c0e3dc 100644
--- a/sources/awesome-widget/plugin/awbugreporter.cpp
+++ b/sources/awesome-widget/plugin/awbugreporter.cpp
@@ -18,6 +18,7 @@
#include "awbugreporter.h"
#include
+#include
#include
#include
@@ -114,6 +115,12 @@ void AWBugReporter::issueReplyReceived(QNetworkReply *_reply)
}
+void AWBugReporter::openBugReport()
+{
+ QDesktopServices::openUrl(m_lastBugUrl);
+}
+
+
void AWBugReporter::showInformation(const int _number, const QString &_url)
{
qCDebug(LOG_AW) << "Created issue with number" << _number << "and url" << _url;
@@ -121,29 +128,9 @@ void AWBugReporter::showInformation(const int _number, const QString &_url)
// cache url first
m_lastBugUrl = _url;
- auto msgBox = new QMessageBox(nullptr);
- msgBox->setAttribute(Qt::WA_DeleteOnClose);
- msgBox->setModal(false);
- msgBox->setWindowTitle(i18n("Issue created"));
- msgBox->setText(i18n("Issue %1 has been created", _number));
- msgBox->setStandardButtons(QMessageBox::Open | QMessageBox::Close);
- msgBox->setIcon(QMessageBox::Information);
+ auto event = KNotification::event("system", i18n("Issue created"), i18n("Issue %1 has been created", _number));
+ event->setComponentName("plasma-applet-org.kde.plasma.awesome-widget");
- msgBox->open(this, SLOT(userReplyOnBugReport(QAbstractButton *)));
-}
-
-
-void AWBugReporter::userReplyOnBugReport(QAbstractButton *_button)
-{
- auto ret = dynamic_cast(sender())->buttonRole(_button);
- qCInfo(LOG_AW) << "User select" << ret;
-
- switch (ret) {
- case QMessageBox::AcceptRole:
- QDesktopServices::openUrl(m_lastBugUrl);
- break;
- case QMessageBox::RejectRole:
- default:
- break;
- }
+ auto action = event->addAction(i18n("Details"));
+ connect(action, &KNotificationAction::activated, this, &AWBugReporter::openBugReport);
}
diff --git a/sources/awesome-widget/plugin/awbugreporter.h b/sources/awesome-widget/plugin/awbugreporter.h
index 70c7bd5..474bf29 100644
--- a/sources/awesome-widget/plugin/awbugreporter.h
+++ b/sources/awesome-widget/plugin/awbugreporter.h
@@ -40,8 +40,8 @@ signals:
private slots:
void issueReplyReceived(QNetworkReply *_reply);
+ void openBugReport();
void showInformation(int _number, const QString &_url);
- void userReplyOnBugReport(QAbstractButton *_button);
private:
QString m_lastBugUrl;
diff --git a/sources/awesome-widget/plugin/awconfighelper.cpp b/sources/awesome-widget/plugin/awconfighelper.cpp
index 9b9e79e..566da56 100644
--- a/sources/awesome-widget/plugin/awconfighelper.cpp
+++ b/sources/awesome-widget/plugin/awconfighelper.cpp
@@ -85,7 +85,7 @@ bool AWConfigHelper::exportConfiguration(QObject *_nativeConfig, const QString &
// extensions
for (auto &item : m_dirs) {
QStringList items
- = QDir(QString("%1/%2").arg(m_baseDir).arg(item)).entryList(QStringList() << "*.desktop", QDir::Files);
+ = QDir(QString("%1/%2").arg(m_baseDir, item)).entryList({"*.desktop"}, QDir::Files);
settings.beginGroup(item);
for (auto &it : items)
copyExtensions(it, item, settings, false);
diff --git a/sources/awesome-widget/plugin/awkeys.cpp b/sources/awesome-widget/plugin/awkeys.cpp
index 94b4c43..a2b47e9 100644
--- a/sources/awesome-widget/plugin/awkeys.cpp
+++ b/sources/awesome-widget/plugin/awkeys.cpp
@@ -17,11 +17,11 @@
#include "awkeys.h"
-#include
#include
#include
#include
#include
+#include
#include "awdataaggregator.h"
#include "awdataengineaggregator.h"
@@ -189,7 +189,8 @@ void AWKeys::dataUpdated(const QHash &_sensors,
if (!_sensors.contains(data.sensorProperty))
continue;
auto sensor = _sensors[data.sensorProperty];
- std::ignore = QtConcurrent::run(m_threadPool, &AWKeys::setDataBySource, this, data.sensorProperty, sensor, data.payload);
+ std::ignore = QtConcurrent::run(m_threadPool, &AWKeys::setDataBySource, this, data.sensorProperty, sensor,
+ data.payload);
}
}
diff --git a/sources/awesome-widget/plugin/awupdatehelper.cpp b/sources/awesome-widget/plugin/awupdatehelper.cpp
index 191a9f5..6f2a760 100644
--- a/sources/awesome-widget/plugin/awupdatehelper.cpp
+++ b/sources/awesome-widget/plugin/awupdatehelper.cpp
@@ -18,6 +18,7 @@
#include "awupdatehelper.h"
#include
+#include
#include
#include
@@ -70,8 +71,7 @@ bool AWUpdateHelper::checkVersion()
qCInfo(LOG_AW) << "Found version" << version << "actual one is" << m_foundVersion;
if ((version != m_foundVersion) && (!QString(CHANGELOG).isEmpty())) {
- genMessageBox(i18nc("Changelog of %1", VERSION), QString(CHANGELOG).replace('@', '\n'), QMessageBox::Ok)
- ->open();
+ sendNotification(i18nc("Changelog of %1", VERSION), QString(CHANGELOG).replace('@', '\n'));
return true;
} else if (version != m_foundVersion) {
qCWarning(LOG_AW) << "No changelog information provided";
@@ -84,6 +84,12 @@ bool AWUpdateHelper::checkVersion()
}
+void AWUpdateHelper::openReleasesPage()
+{
+ QDesktopServices::openUrl(QString(RELEASES) + m_foundVersion.toString());
+}
+
+
void AWUpdateHelper::showInfo(const QVersionNumber &_version)
{
qCDebug(LOG_AW) << "Version" << _version;
@@ -91,7 +97,7 @@ void AWUpdateHelper::showInfo(const QVersionNumber &_version)
auto text = i18n("You are using the actual version %1", _version.toString());
if (!QString(COMMIT_SHA).isEmpty())
text += QString(" (%1)").arg(QString(COMMIT_SHA));
- return genMessageBox(i18n("No new version found"), text, QMessageBox::Ok)->open();
+ sendNotification(i18n("No new version found"), text);
}
@@ -105,24 +111,9 @@ void AWUpdateHelper::showUpdates(const QVersionNumber &_version)
text += i18n("New version : %1", _version.toString()) + "\n\n";
text += i18n("Click \"Ok\" to download");
- genMessageBox(i18n("There are updates"), text, QMessageBox::Ok | QMessageBox::Cancel)
- ->open(this, SLOT(userReplyOnUpdates(QAbstractButton *)));
-}
-
-
-void AWUpdateHelper::userReplyOnUpdates(QAbstractButton *_button)
-{
- auto ret = dynamic_cast(sender())->buttonRole(_button);
- qCInfo(LOG_AW) << "User select" << ret;
-
- switch (ret) {
- case QMessageBox::AcceptRole:
- QDesktopServices::openUrl(QString(RELEASES) + m_foundVersion.toString());
- break;
- case QMessageBox::RejectRole:
- default:
- break;
- }
+ auto event = sendNotification(i18n("There are updates"), text);
+ auto action = event->addAction(i18n("Details"));
+ connect(action, &KNotificationAction::activated, this, &AWUpdateHelper::openReleasesPage);
}
@@ -158,18 +149,12 @@ void AWUpdateHelper::versionReplyReceived(QNetworkReply *_reply, const bool _sho
// additional method which is used to show message box which does not block UI
-QMessageBox *AWUpdateHelper::genMessageBox(const QString &_title, const QString &_body,
- const QMessageBox::StandardButtons _buttons)
+KNotification *AWUpdateHelper::sendNotification(const QString &_title, const QString &_body)
{
qCDebug(LOG_AW) << "Construct message box with title" << _title << "and body" << _body;
- auto msgBox = new QMessageBox(nullptr);
- msgBox->setAttribute(Qt::WA_DeleteOnClose);
- msgBox->setModal(false);
- msgBox->setWindowTitle(_title);
- msgBox->setText(_body);
- msgBox->setStandardButtons(_buttons);
- msgBox->setIcon(QMessageBox::Information);
+ auto event = KNotification::event("system", _title, _body);
+ event->setComponentName("plasma-applet-org.kde.plasma.awesome-widget");
- return msgBox;
+ return event;
}
diff --git a/sources/awesome-widget/plugin/awupdatehelper.h b/sources/awesome-widget/plugin/awupdatehelper.h
index 017fa35..00d7867 100644
--- a/sources/awesome-widget/plugin/awupdatehelper.h
+++ b/sources/awesome-widget/plugin/awupdatehelper.h
@@ -17,11 +17,11 @@
#pragma once
-#include
#include
#include
+class KNotification;
class QNetworkReply;
class AWUpdateHelper : public QObject
@@ -35,14 +35,13 @@ public:
bool checkVersion();
private slots:
+ void openReleasesPage();
static void showInfo(const QVersionNumber &_version);
void showUpdates(const QVersionNumber &_version);
- void userReplyOnUpdates(QAbstractButton *_button);
void versionReplyReceived(QNetworkReply *_reply, bool _showAnyway);
private:
- static QMessageBox *genMessageBox(const QString &_title, const QString &_body,
- QMessageBox::StandardButtons _buttons);
+ static KNotification *sendNotification(const QString &_title, const QString &_body);
QVersionNumber m_foundVersion;
QString m_genericConfig;
};
diff --git a/sources/qml/ExportDialog.qml b/sources/qml/ExportDialog.qml
index eba4d7d..31a0388 100644
--- a/sources/qml/ExportDialog.qml
+++ b/sources/qml/ExportDialog.qml
@@ -41,7 +41,7 @@ Item {
onAccepted: {
const status = awConfig.exportConfiguration(
configuration,
- fileDialog.fileUrl.toString().replace("file://", ""))
+ fileDialog.selectedFile.toString().replace("file://", ""))
if (status) {
messageDialog.title = i18n("Success")
messageDialog.text = i18n("Please note that binary files were not copied")
diff --git a/sources/qml/ImportDialog.qml b/sources/qml/ImportDialog.qml
index 3f61934..d294932 100644
--- a/sources/qml/ImportDialog.qml
+++ b/sources/qml/ImportDialog.qml
@@ -58,7 +58,7 @@ Item {
onAccepted: {
const importConfig = awConfig.importConfiguration(
- fileDialog.fileUrl.toString().replace("file://", ""),
+ fileDialog.selectedFile.toString().replace("file://", ""),
importPlasmoid.checked, importExtensions.checked,
importAdds.checked)
configurationReceived(importConfig)