diff --git a/sources/awesome-widget-kf5/package/contents/ui/about.qml b/sources/awesome-widget-kf5/package/contents/ui/about.qml index 00df0d2..285e41b 100644 --- a/sources/awesome-widget-kf5/package/contents/ui/about.qml +++ b/sources/awesome-widget-kf5/package/contents/ui/about.qml @@ -19,8 +19,6 @@ import QtQuick 2.0 import QtQuick.Controls 1.3 as QtControls import QtQuick.Layouts 1.0 as QtLayouts -import org.kde.plasma.private.awesomewidget 1.0 - Item { id: aboutPage @@ -29,7 +27,8 @@ Item { implicitWidth: pageColumn.implicitWidth implicitHeight: pageColumn.implicitHeight - property bool debug: AWKeys.isDebugEnabled() + Loader { id: connector; source: "connector.qml" } + property bool debug: connector.item.debug Column { id: pageColumn @@ -44,20 +43,20 @@ Item { QtControls.Label { QtLayouts.Layout.fillWidth: true horizontalAlignment: Text.AlignHCenter - text: AWActions.getAboutText("header") + text: connector.item.getAboutText("header") } QtControls.Label { QtLayouts.Layout.fillWidth: true horizontalAlignment: Text.AlignJustify - text: AWActions.getAboutText("description") + text: connector.item.getAboutText("description") } QtControls.Label { QtLayouts.Layout.fillWidth: true horizontalAlignment: Text.AlignLeft textFormat: Text.RichText - text: AWActions.getAboutText("links") + text: connector.item.getAboutText("links") } QtControls.Label { @@ -65,7 +64,7 @@ Item { font.capitalization: Font.SmallCaps horizontalAlignment: Text.AlignHCenter textFormat: Text.RichText - text: AWActions.getAboutText("copy") + text: connector.item.getAboutText("copy") } } } @@ -78,14 +77,14 @@ Item { QtLayouts.Layout.fillWidth: true wrapMode: Text.WordWrap horizontalAlignment: Text.AlignJustify - text: AWActions.getAboutText("translators") + text: connector.item.getAboutText("translators") } QtControls.Label { QtLayouts.Layout.fillWidth: true horizontalAlignment: Text.AlignJustify textFormat: Text.RichText - text: AWActions.getAboutText("3rdparty") + text: connector.item.getAboutText("3rdparty") } } } diff --git a/sources/awesome-widget-kf5/package/contents/ui/advanced.qml b/sources/awesome-widget-kf5/package/contents/ui/advanced.qml index 1cfaddc..a958af3 100644 --- a/sources/awesome-widget-kf5/package/contents/ui/advanced.qml +++ b/sources/awesome-widget-kf5/package/contents/ui/advanced.qml @@ -20,8 +20,6 @@ import QtQuick.Controls 1.3 as QtControls import QtQuick.Layouts 1.0 as QtLayouts import QtQuick.Controls.Styles 1.3 as QtStyles -import org.kde.plasma.private.awesomewidget 1.0 - Item { id: advancedPage @@ -30,12 +28,15 @@ Item { implicitWidth: pageColumn.implicitWidth implicitHeight: pageColumn.implicitHeight - property bool debug: AWKeys.isDebugEnabled() + Loader { id: connector; source: "connector.qml" } + property bool debug: connector.item.debug property alias cfg_background: background.checked property alias cfg_customTime: customTime.text property alias cfg_customUptime: customUptime.text property string cfg_tempUnits: tempUnits.currentText + property alias cfg_acOnline: acOnline.text + property alias cfg_acOffline: acOffline.text Column { @@ -157,8 +158,160 @@ Item { QtControls.Button { width: parent.width * 3 / 5 text: i18n("Select devices") - onClicked: plasmoid.configuration.customNetdev = AWActions.selectDevices(AWActions.getNetworkDevices(), - plasmoid.configuration.customNetdev.split("@@")) + onClicked: plasmoid.configuration.tempDevice = connector.item.selectDevices( + connector.item.getTempDevices(), + plasmoid.configuration.tempDevice.split("@@") + ) + } + } + + Row { + height: implicitHeight + width: parent.width + QtControls.Label { + height: implicitHeight + width: parent.width * 2 / 5 + horizontalAlignment: Text.AlignRight + verticalAlignment: Text.AlignVCenter + text: i18n("Fan devices") + } + QtControls.Button { + width: parent.width * 3 / 5 + text: i18n("Select devices") + onClicked: plasmoid.configuration.fanDevice = connector.item.selectDevice( + connector.item.getFanDevices(), + plasmoid.configuration.fanDevice.split("@@") + ) + } + } + + Row { + height: implicitHeight + width: parent.width + QtControls.Label { + height: implicitHeight + width: parent.width * 2 / 5 + horizontalAlignment: Text.AlignRight + verticalAlignment: Text.AlignVCenter + text: i18n("Mount devices") + } + QtControls.Button { + width: parent.width * 3 / 5 + text: i18n("Select devices") + onClicked: plasmoid.configuration.mount = connector.item.selectDevices(connector.item.getMountDevices(), + plasmoid.configuration.mount.split("@@") + ) + } + } + + Row { + height: implicitHeight + width: parent.width + QtControls.Label { + height: implicitHeight + width: parent.width * 2 / 5 + horizontalAlignment: Text.AlignRight + verticalAlignment: Text.AlignVCenter + text: i18n("HDD devices (speed)") + } + QtControls.Button { + width: parent.width * 3 / 5 + text: i18n("Select devices") + onClicked: plasmoid.configuration.disk = connector.item.selectDevices( + connector.item.getDiskDevices(), + plasmoid.configuration.disk.split("@@") + ) + } + } + + Row { + height: implicitHeight + width: parent.width + QtControls.Label { + height: implicitHeight + width: parent.width * 2 / 5 + horizontalAlignment: Text.AlignRight + verticalAlignment: Text.AlignVCenter + text: i18n("HDD devices (temp)") + } + QtControls.Button { + width: parent.width * 3 / 5 + text: i18n("Select devices") + onClicked: plasmoid.configuration.hdd = connector.item.selectDevices( + connector.item.getHddDevices(), + plasmoid.configuration.hdd.split("@@") + ) + } + } + + Row { + height: implicitHeight + width: parent.width + QtControls.Label { + height: implicitHeight + width: parent.width * 2 / 5 + horizontalAlignment: Text.AlignRight + verticalAlignment: Text.AlignVCenter + text: i18n("Network devices") + } + QtControls.Button { + width: parent.width * 3 / 5 + text: i18n("Select devices") + onClicked: plasmoid.configuration.customNetdev = connector.item.selectDevices( + connector.item.getNetworkDevices(), + plasmoid.configuration.customNetdev.split("@@") + ) + } + } + + Row { + height: implicitHeight + width: parent.width + QtControls.Label { + height: parent.height + width: parent.width * 2 / 5 + horizontalAlignment: Text.AlignRight + verticalAlignment: Text.AlignVCenter + text: i18n("AC online tag") + } + QtControls.TextField { + id: acOnline + width: parent.width * 3 / 5 + text: plasmoid.configuration.acOnline + } + } + + Row { + height: implicitHeight + width: parent.width + QtControls.Label { + height: parent.height + width: parent.width * 2 / 5 + horizontalAlignment: Text.AlignRight + verticalAlignment: Text.AlignVCenter + text: i18n("AC offline tag") + } + QtControls.TextField { + id: acOffline + width: parent.width * 3 / 5 + text: plasmoid.configuration.acOffline + } + } + + Row { + height: implicitHeight + width: parent.width + QtControls.Label { + height: implicitHeight + width: parent.width * 2 / 5 + horizontalAlignment: Text.AlignRight + verticalAlignment: Text.AlignVCenter + text: i18n("Bars") + } + QtControls.Button { + width: parent.width * 3 / 5 + text: i18n("Edit bars") + onClicked: connector.item.editItem("graphicalitem") } } } diff --git a/sources/awesome-widget-kf5/package/contents/ui/appearance.qml b/sources/awesome-widget-kf5/package/contents/ui/appearance.qml index b5b532a..e8906bd 100644 --- a/sources/awesome-widget-kf5/package/contents/ui/appearance.qml +++ b/sources/awesome-widget-kf5/package/contents/ui/appearance.qml @@ -21,8 +21,6 @@ import QtQuick.Controls.Styles 1.3 as QtStyles import QtQuick.Dialogs 1.1 as QtDialogs import QtQuick.Layouts 1.0 as QtLayouts -import org.kde.plasma.private.awesomewidget 1.0 - Item { id: appearancePage @@ -31,7 +29,8 @@ Item { implicitWidth: pageColumn.implicitWidth implicitHeight: pageColumn.implicitHeight - property bool debug: AWKeys.isDebugEnabled() + Loader { id: connector; source: "connector.qml" } + property bool debug: connector.item.debug property variant weight: { 25: 0, 50: 1, diff --git a/sources/awesome-widget-kf5/package/contents/ui/connector.qml b/sources/awesome-widget-kf5/package/contents/ui/connector.qml new file mode 100644 index 0000000..0e99576 --- /dev/null +++ b/sources/awesome-widget-kf5/package/contents/ui/connector.qml @@ -0,0 +1,163 @@ +/*************************************************************************** + * This file is part of awesome-widgets * + * * + * awesome-widgets is free software: you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation, either version 3 of the * + * License, or (at your option) any later version. * + * * + * awesome-widgets is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with awesome-widgets. If not, see http://www.gnu.org/licenses/ * + ***************************************************************************/ + +import QtQuick 2.0 + +import org.kde.plasma.private.awesomewidget 1.0 + + +QtObject { + id: connector + + // variables + property bool debug: AWKeys.isDebugEnabled() + property variant fontWeight: { + "light": Font.Light, + "normal": Font.Normal, + "demibold": Font.DemiBold, + "bold": Font.Bold, + "black": Font.Black + } + property variant align: { + "left": Text.AlignLeft, + "center": Text.AlignHCenter, + "right": Text.AlignRight, + "justify": Text.AlignJustify + } + // external + property variant settings: { + "customTime": plasmoid.configuration.customTime, + "customUptime": plasmoid.configuration.customUptime, + "tempUnits": plasmoid.configuration.tempUnits, + "tempDevice": plasmoid.configuration.tempDevice, + "fanDevice": plasmoid.configuration.fanDevice, + "mount": plasmoid.configuration.mount, + "hdd": plasmoid.configuration.hdd, + "disk": plasmoid.configuration.disk, + "customNetdev": plasmoid.configuration.customNetdev, + "acOnline": plasmoid.configuration.acOnline, + "acOffline": plasmoid.configuration.acOffline + } + property variant tooltipSettings: { + "tooltipNumber": plasmoid.configuration.tooltipNumber, + "useTooltipBackground": plasmoid.configuration.useTooltipBackground, + "tooltipBackgroung": plasmoid.configuration.tooltipBackgroung, + "cpuTooltip": plasmoid.configuration.cpuTooltip, + "cpuclTooltip": plasmoid.configuration.cpuclTooltip, + "memTooltip": plasmoid.configuration.memTooltip, + "swapTooltip": plasmoid.configuration.swapTooltip, + "downTooltip": plasmoid.configuration.downTooltip, + "upTooltip": plasmoid.configuration.downTooltip, + "batteryTooltip": plasmoid.configuration.batteryTooltip, + "cpuTooltipColor": plasmoid.configuration.cpuTooltipColor, + "cpuclTooltipColor": plasmoid.configuration.cpuclTooltipColor, + "memTooltipColor": plasmoid.configuration.memTooltipColor, + "swapTooltipColor": plasmoid.configuration.swapTooltipColor, + "downTooltipColor": plasmoid.configuration.downTooltipColor, + "upTooltipColor": plasmoid.configuration.upTooltipColor, + "batteryTooltipColor": plasmoid.configuration.batteryTooltipColor, + "batteryInTooltipColor": plasmoid.configuration.batteryInTooltipColor + } + property string pattern: plasmoid.configuration.text + + Component.onCompleted: { + if (debug) console.log("[connector::onCompleted]") + + // init submodule + AWKeys.initKeys(pattern, settings, tooltipSettings) + } + + function addDevice(source) { + AWActions.addDevice(source) + } + + function checkKeys(data) { + return AWActions.checkKeys(data) + } + + function checkUpdates() { + AWActions.checkUpdates() + } + + function dictKeys() { + return AWKeys.dictKeys() + } + + function editItem(type) { + AWKeys.editItem(type) + } + + function getAboutText(type) { + AWActions.getAboutText(type) + } + + function getDiskDevices() { + return AWActions.getDiskDevices() + } + + function getFanDevices() { + return AWActions.getFanDevices() + } + + function getFont(defaultFont) { + return AWActions.getFont(defaultFont) + } + + function getHddDevices() { + return AWActions.getHddDevices() + } + + function getMountDevices() { + return AWActions.getMountDevices() + } + + function getNetworkDevices() { + return AWActions.getNetworkDevices() + } + + function getTempDevices() { + return AWActions.getTempDevices() + } + + function isReady() { + return AWKeys.isReady() + } + + function parsePattern() { + return AWKeys.parsePattern(pattern) + } + + function selectDevice(all, current) { + return AWActions.selectDevices(all, current) + } + + function sendNotification(event, message) { + AWActions.sendNotification(event, message) + } + + function setDataBySource(sourceName, data) { + AWKeys.setDataBySource(sourceName, data, settings) + } + + function showValue(tag) { + return AWKeys.valueByKey(tag) + } + + function showReadme() { + AWActions.showReadme() + } +} diff --git a/sources/awesome-widget-kf5/package/contents/ui/main.qml b/sources/awesome-widget-kf5/package/contents/ui/main.qml index 4fd371b..929df63 100644 --- a/sources/awesome-widget-kf5/package/contents/ui/main.qml +++ b/sources/awesome-widget-kf5/package/contents/ui/main.qml @@ -21,64 +21,13 @@ 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 - Item { id: main - // variables - // internal - property bool debug: AWKeys.isDebugEnabled() - property variant fontWeight: { - "light": Font.Light, - "normal": Font.Normal, - "demibold": Font.DemiBold, - "bold": Font.Bold, - "black": Font.Black - } - property variant align: { - "left": Text.AlignLeft, - "center": Text.AlignHCenter, - "right": Text.AlignRight, - "justify": Text.AlignJustify - } - // external - property variant settings: { - "customTime": plasmoid.configuration.customTime, - "customUptime": plasmoid.configuration.customUptime, - "tempUnits": plasmoid.configuration.tempUnits, - "tempDevice": plasmoid.configuration.tempDevice, - "fanDevice": plasmoid.configuration.fanDevice, - "mount": plasmoid.configuration.mount, - "hdd": plasmoid.configuration.hdd, - "disk": plasmoid.configuration.disk, - "customNetdev": plasmoid.configuration.customNetdev, - "acOnline": plasmoid.configuration.acOnline, - "acOffline": plasmoid.configuration.acOffline - } - property variant tooltipSettings: { - "tooltipNumber": plasmoid.configuration.tooltipNumber, - "useTooltipBackground": plasmoid.configuration.useTooltipBackground, - "tooltipBackgroung": plasmoid.configuration.tooltipBackgroung, - "cpuTooltip": plasmoid.configuration.cpuTooltip, - "cpuclTooltip": plasmoid.configuration.cpuclTooltip, - "memTooltip": plasmoid.configuration.memTooltip, - "swapTooltip": plasmoid.configuration.swapTooltip, - "downTooltip": plasmoid.configuration.downTooltip, - "upTooltip": plasmoid.configuration.downTooltip, - "batteryTooltip": plasmoid.configuration.batteryTooltip, - "cpuTooltipColor": plasmoid.configuration.cpuTooltipColor, - "cpuclTooltipColor": plasmoid.configuration.cpuclTooltipColor, - "memTooltipColor": plasmoid.configuration.memTooltipColor, - "swapTooltipColor": plasmoid.configuration.swapTooltipColor, - "downTooltipColor": plasmoid.configuration.downTooltipColor, - "upTooltipColor": plasmoid.configuration.upTooltipColor, - "batteryTooltipColor": plasmoid.configuration.batteryTooltipColor, - "batteryInTooltipColor": plasmoid.configuration.batteryInTooltipColor - } - property string pattern: plasmoid.configuration.text - // signals + Loader { id: connector; source: "connector.qml" } + property bool debug: connector.item.debug + signal needUpdate // init @@ -96,14 +45,14 @@ Item { onNewData: { if (debug) console.log("[main::onNewData] : Update source " + sourceName) - if (!AWActions.checkKeys(data)) return - if (AWKeys.isReady()) AWKeys.setDataBySource(sourceName, data, settings) + if (!connector.item.checkKeys(data)) return + if (connector.item.isReady()) connector.item.setDataBySource(sourceName, data) } onSourceAdded: { if (debug) console.log("[main::onSourceAdded] : Source " + source) - AWActions.addDevice(source) + connector.item.addDevice(source) } } @@ -116,8 +65,8 @@ Item { onNewData: { if (debug) console.log("[main::onNewData] : Update source " + sourceName) - if (!AWActions.checkKeys(data)) return - if (AWKeys.isReady()) AWKeys.setDataBySource(sourceName, data, settings) + if (!connector.item.checkKeys(data)) return + if (connector.item.isReady()) connector.item.setDataBySource(sourceName, data) // update if (sourceName == "update") needUpdate() } @@ -132,8 +81,8 @@ Item { onNewData: { if (debug) console.log("[main::onNewData] : Update source " + sourceName) - if (!AWActions.checkKeys(data)) return - if (AWKeys.isReady()) AWKeys.setDataBySource(sourceName, data, settings) + if (!connector.item.checkKeys(data)) return + if (connector.item.isReady()) connector.item.setDataBySource(sourceName, data) } } @@ -148,8 +97,8 @@ Item { font.family: plasmoid.configuration.fontFamily font.italic: plasmoid.configuration.fontStyle == "italic" ? true : false font.pointSize: plasmoid.configuration.fontSize - font.weight: fontWeight[plasmoid.configuration.fontWeight] - horizontalAlignment: align[plasmoid.configuration.textAlign] + font.weight: connector.item.fontWeight[plasmoid.configuration.fontWeight] + horizontalAlignment: connector.item.align[plasmoid.configuration.textAlign] textFormat: Text.RichText text: plasmoid.configuration.text } @@ -158,8 +107,6 @@ Item { Component.onCompleted: { if (debug) console.log("[main::onCompleted]") - // init submodule - AWKeys.initKeys(pattern, settings, tooltipSettings) // actions plasmoid.setAction("showReadme", i18n("Show README"), "text-x-readme") plasmoid.setAction("updateText", i18n("Update text"), "stock-refresh") @@ -169,7 +116,7 @@ Item { onNeedUpdate: { if (debug) console.log("[main::onNeedUpdate]") - text.text = AWKeys.parsePattern(pattern) + text.text = connector.item.parsePattern() // update geometry text.update() height = text.contentHeight @@ -180,13 +127,13 @@ Item { function action_checkUpdates() { if (debug) console.log("[main::action_checkUpdates]") - AWActions.checkUpdates() + connector.item.checkUpdates() } function action_showReadme() { if (debug) console.log("[main::action_showReadme]") - AWActions.showReadme() + connector.item.showReadme() } function action_updateText() { diff --git a/sources/awesome-widget-kf5/package/contents/ui/widget.qml b/sources/awesome-widget-kf5/package/contents/ui/widget.qml index af41a68..a060d93 100644 --- a/sources/awesome-widget-kf5/package/contents/ui/widget.qml +++ b/sources/awesome-widget-kf5/package/contents/ui/widget.qml @@ -21,8 +21,6 @@ import QtQuick.Dialogs 1.1 as QtDialogs import QtQuick.Layouts 1.0 as QtLayouts import QtQuick.Controls.Styles 1.3 as QtStyles -import org.kde.plasma.private.awesomewidget 1.0 - Item { id: widgetPage @@ -31,7 +29,8 @@ Item { implicitWidth: pageColumn.implicitWidth implicitHeight: pageColumn.implicitHeight - property bool debug: AWKeys.isDebugEnabled() + Loader { id: connector; source: "connector.qml" } + property bool debug: connector.item.debug property alias cfg_text: textPattern.text @@ -60,7 +59,7 @@ Item { "family": plasmoid.configuration.fontFamily, "size": plasmoid.configuration.fontSize } - var font = AWActions.getFont(defaultFont) + var font = connector.item.getFont(defaultFont) var pos = textPattern.cursorPosition var selected = textPattern.selectedText textPattern.remove(textPattern.selectionStart, textPattern.selectionEnd) @@ -183,7 +182,7 @@ Item { QtControls.ComboBox { id: tags - model: AWKeys.dictKeys() + model: connector.item.dictKeys() } QtControls.Button { text: i18n("Add") @@ -203,8 +202,10 @@ Item { onClicked: { if (debug) console.log("[widget::onClicked] : Show tag button") - var message = i18n("Tag: %1
Value: %2", tags.currentText, AWKeys.valueByKey(tags.currentText)) - AWActions.sendNotification("tag", message) + var message = i18n("Tag: %1", tags.currentText) + message += "
" + message += i18n("Value: %1", connector.item.showValue(tags.currentText)) + connector.item.sendNotification("tag", message) } } } diff --git a/sources/awesome-widget-kf5/plugin/awactions.cpp b/sources/awesome-widget-kf5/plugin/awactions.cpp index f9198f7..d2714dc 100644 --- a/sources/awesome-widget-kf5/plugin/awactions.cpp +++ b/sources/awesome-widget-kf5/plugin/awactions.cpp @@ -267,11 +267,13 @@ QString AWActions::selectDevices(const QStringList source, const QStringList cur QDialog *dialog = new QDialog(0); QListWidget *widget = new QListWidget(dialog); QDialogButtonBox *buttons = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, - Qt::Horizontal, dialog); + Qt::Vertical, dialog); QHBoxLayout *layout = new QHBoxLayout(dialog); layout->addWidget(widget); layout->addWidget(buttons); dialog->setLayout(layout); + connect(buttons, SIGNAL(accepted()), dialog, SLOT(accept())); + connect(buttons, SIGNAL(rejected()), dialog, SLOT(reject())); // fill for (int i=0; iexec(); + if (debug) qDebug() << PDEBUG << ":" << "Dialog returns" << ret; if (ret == QDialog::Accepted) { for (int i=0; icount(); i++) if (widget->item(i)->checkState() == Qt::Checked) diff --git a/sources/awesome-widget-kf5/plugin/awkeys.cpp b/sources/awesome-widget-kf5/plugin/awkeys.cpp index fe5dda3..40e68e7 100644 --- a/sources/awesome-widget-kf5/plugin/awkeys.cpp +++ b/sources/awesome-widget-kf5/plugin/awkeys.cpp @@ -17,9 +17,13 @@ #include "awkeys.h" +#include + #include #include #include +#include +#include #include #include #include @@ -42,12 +46,27 @@ AWKeys::AWKeys(QObject *parent) QProcessEnvironment environment = QProcessEnvironment::systemEnvironment(); QString debugEnv = environment.value(QString("DEBUG"), QString("no")); debug = (debugEnv == QString("yes")); + + dialog = new QDialog(0); + widgetDialog = new QListWidget(dialog); + dialogButtons = new QDialogButtonBox(QDialogButtonBox::Open | QDialogButtonBox::Close, + Qt::Vertical, dialog); + copyButton = dialogButtons->addButton(i18n("Copy"), QDialogButtonBox::ActionRole); + createButton = dialogButtons->addButton(i18n("Create"), QDialogButtonBox::ActionRole); + QHBoxLayout *layout = new QHBoxLayout(dialog); + layout->addWidget(widgetDialog); + layout->addWidget(dialogButtons); + dialog->setLayout(layout); + connect(dialogButtons, SIGNAL(clicked(QAbstractButton *)), this, SLOT(editItemButtonPressed(QAbstractButton *))); + connect(dialogButtons, SIGNAL(rejected()), dialog, SLOT(reject())); } AWKeys::~AWKeys() { if (debug) qDebug() << PDEBUG; + + delete dialog; } @@ -224,55 +243,6 @@ QStringList AWKeys::dictKeys() } -QStringList AWKeys::extScriptsInfo() -{ - if (debug) qDebug() << PDEBUG; - - QStringList info; - for (int i=0; ifileName()); - info.append(extScripts[i]->name()); - info.append(extScripts[i]->comment()); - info.append(extScripts[i]->executable()); - info.append(QVariant(extScripts[i]->isActive()).toString()); - } - - return info; -} - - -QStringList AWKeys::extUpgradeInfo() -{ - if (debug) qDebug() << PDEBUG; - - QStringList info; - for (int i=0; ifileName()); - info.append(extUpgrade[i]->name()); - info.append(extUpgrade[i]->comment()); - info.append(extUpgrade[i]->executable()); - info.append(QVariant(extUpgrade[i]->isActive()).toString()); - } - - return info; -} - - -QStringList AWKeys::graphicalItemsInfo() -{ - if (debug) qDebug() << PDEBUG; - - QStringList info; - for (int i=0; ifileName()); - info.append(graphicalItems[i]->name() + graphicalItems[i]->bar()); - info.append(graphicalItems[i]->comment()); - } - - return info; -} - - void AWKeys::setDataBySource(const QString sourceName, const QMap data, const QMap params) @@ -537,6 +507,254 @@ QString AWKeys::valueByKey(QString key) } +void AWKeys::editItem(const QString type) +{ + if (debug) qDebug() << PDEBUG; + + widgetDialog->clear(); + if (type == QString("graphicalitem")) { + requestedItem = RequestedGraphicalItem; + for (int i=0; ifileName()); + QStringList tooltip; + tooltip.append(i18n("Tag: %1", graphicalItems[i]->name() + graphicalItems[i]->bar())); + tooltip.append(i18n("Comment: %1", graphicalItems[i]->comment())); + item->setToolTip(tooltip.join(QChar('\n'))); + widgetDialog->addItem(item); + } + } else if (type == QString("extscript")) { + requestedItem = RequestedExtScript; + for (int i=0; ifileName()); + QStringList tooltip; + tooltip.append(i18n("Name: %1", extScripts[i]->name())); + tooltip.append(i18n("Comment: %1", extScripts[i]->comment())); + tooltip.append(i18n("Exec: %1", extScripts[i]->executable())); + item->setToolTip(tooltip.join(QChar('\n'))); + widgetDialog->addItem(item); + } + } else if (type == QString("extupgrade")) { + requestedItem = RequestedExtUpgrade; + for (int i=0; ifileName()); + QStringList tooltip; + tooltip.append(i18n("Name: %1", extUpgrade[i]->name())); + tooltip.append(i18n("Comment: %1", extUpgrade[i]->comment())); + tooltip.append(i18n("Exec: %1", extUpgrade[i]->executable())); + item->setToolTip(tooltip.join(QChar('\n'))); + widgetDialog->addItem(item); + } + } + + int ret = dialog->exec(); + if (debug) qDebug() << PDEBUG << ":" << "Dialog returns" << ret; + requestedItem = Nothing; +} + + +void AWKeys::editItemButtonPressed(QAbstractButton *button) +{ + if (debug) qDebug() << PDEBUG; + + QListWidgetItem *item = widgetDialog->currentItem(); + if (dynamic_cast(button) == copyButton) { + if (item == nullptr) return; + QString current = item->text(); + switch (requestedItem) { + case RequestedExtScript: + copyScript(current); + break; + case RequestedExtUpgrade: + copyUpgrade(current); + break; + case RequestedGraphicalItem: + copyBar(current); + break; + case Nothing: + default: + break; + } + } else if (dynamic_cast(button) == createButton) { + switch (requestedItem) { + case RequestedExtScript: + copyScript(QString("")); + break; + case RequestedExtUpgrade: + copyUpgrade(QString("")); + break; + case RequestedGraphicalItem: + copyBar(QString("")); + break; + case Nothing: + default: + break; + } + } else if (dialogButtons->buttonRole(button) == QDialogButtonBox::AcceptRole) { + if (item == nullptr) return; + QString current = item->text(); + switch (requestedItem) { + case RequestedExtScript: + for (int i=0; ifileName() != current) continue; + extScripts[i]->showConfiguration(); + break; + } + break; + case RequestedExtUpgrade: + for (int i=0; ifileName() != current) continue; + extUpgrade[i]->showConfiguration(); + break; + } + break; + case RequestedGraphicalItem: + for (int i=0; ifileName() != current) continue; + graphicalItems[i]->showConfiguration(); + break; + } + break; + case Nothing: + default: + break; + } + } +} + + +void AWKeys::copyBar(const QString original) +{ + if (debug) qDebug() << PDEBUG; + + int number = 0; + while (true) { + bool exit = true; + for (int i=0; iname() == QString("bar%1").arg(number)) { + number++; + exit = false; + break; + } + if (exit) break; + } + QStringList dirs = QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, + QString("plasma_applet_awesome-widget/desktops"), + QStandardPaths::LocateDirectory); + bool ok; + QString name = QInputDialog::getText(0, i18n("Enter file name"), + i18n("File name"), QLineEdit::Normal, + QString(""), &ok); + if ((!ok) || (name.isEmpty())) return; + if (!name.endsWith(QString(".desktop"))) name += QString(".desktop"); + QStringList bars; + bars.append(keys.filter((QRegExp(QString("cpu(?!cl).*"))))); + bars.append(keys.filter((QRegExp(QString("^gpu$"))))); + bars.append(keys.filter((QRegExp(QString("^mem$"))))); + bars.append(keys.filter((QRegExp(QString("^swap$"))))); + bars.append(keys.filter((QRegExp(QString("^hdd[0-9].*"))))); + bars.append(keys.filter((QRegExp(QString("^bat.*"))))); + + int originalItem = -1; + for (int i=0; ifileName() != original) || + (graphicalItems[i]->fileName() != name)) + continue; + originalItem = i; + break; + } + GraphicalItem *item = new GraphicalItem(0, name, dirs, debug); + item->setName(QString("bar%1").arg(number)); + if (originalItem != -1) { + item->setComment(graphicalItems[originalItem]->comment()); + item->setBar(graphicalItems[originalItem]->bar()); + item->setActiveColor(graphicalItems[originalItem]->activeColor()); + item->setInactiveColor(graphicalItems[originalItem]->inactiveColor()); + item->setType(graphicalItems[originalItem]->type()); + item->setDirection(graphicalItems[originalItem]->direction()); + item->setHeight(graphicalItems[originalItem]->height()); + item->setWidth(graphicalItems[originalItem]->width()); + } + + item->showConfiguration(bars); + delete item; +} + + +void AWKeys::copyScript(const QString original) +{ + if (debug) qDebug() << PDEBUG; + + QStringList dirs = QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, + QString("plasma_dataengine_extsysmon/scripts"), + QStandardPaths::LocateDirectory); + bool ok; + QString name = QInputDialog::getText(0, i18n("Enter file name"), + i18n("File name"), QLineEdit::Normal, + QString(""), &ok); + if ((!ok) || (name.isEmpty())) return; + if (!name.endsWith(QString(".desktop"))) name += QString(".desktop"); + + int originalItem = -1; + for (int i=0; ifileName() != original) || + (extScripts[i]->fileName() != name)) + continue; + originalItem = i; + break; + } + ExtScript *script = new ExtScript(0, name, dirs, debug); + if (originalItem != -1) { + script->setActive(extScripts[originalItem]->isActive()); + script->setComment(extScripts[originalItem]->comment()); + script->setExecutable(extScripts[originalItem]->executable()); + script->setHasOutput(extScripts[originalItem]->hasOutput()); + script->setInterval(extScripts[originalItem]->interval()); + script->setName(extScripts[originalItem]->name()); + script->setPrefix(extScripts[originalItem]->prefix()); + script->setRedirect(extScripts[originalItem]->redirect()); + } + + script->showConfiguration(); + delete script; +} + + +void AWKeys::copyUpgrade(const QString original) +{ + if (debug) qDebug() << PDEBUG; + + QStringList dirs = QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, + QString("plasma_dataengine_extsysmon/upgrade"), + QStandardPaths::LocateDirectory); + bool ok; + QString name = QInputDialog::getText(0, i18n("Enter file name"), + i18n("File name"), QLineEdit::Normal, + QString(""), &ok); + if ((!ok) || (name.isEmpty())) return; + if (!name.endsWith(QString(".desktop"))) name += QString(".desktop"); + + int originalItem = -1; + for (int i=0; ifileName() != original) || + (extUpgrade[i]->fileName() != name)) + continue; + originalItem = i; + break; + } + ExtUpgrade *uprade = new ExtUpgrade(0, name, dirs, debug); + if (originalItem != -1) { + uprade->setActive(extUpgrade[originalItem]->isActive()); + uprade->setComment(extUpgrade[originalItem]->comment()); + uprade->setExecutable(extUpgrade[originalItem]->executable()); + uprade->setName(extUpgrade[originalItem]->name()); + uprade->setNull(extUpgrade[originalItem]->null()); + } + + uprade->showConfiguration(); + delete uprade; +} + + QString AWKeys::networkDevice(const QString custom) { if (debug) qDebug() << PDEBUG; @@ -648,13 +866,13 @@ QList AWKeys::getExtScripts() QList externalScripts; // create directory at $HOME - QString localDir = QStandardPaths::writableLocation(QStandardPaths::DataLocation) + + QString localDir = QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation) + QString("/plasma_dataengine_extsysmon/scripts"); QDir localDirectory; if ((!localDirectory.exists(localDir)) && (localDirectory.mkpath(localDir))) if (debug) qDebug() << PDEBUG << ":" << "Created directory" << localDir; - QStringList dirs = QStandardPaths::locateAll(QStandardPaths::DataLocation, + QStringList dirs = QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, QString("plasma_dataengine_extsysmon/scripts"), QStandardPaths::LocateDirectory); QStringList names; @@ -679,13 +897,13 @@ QList AWKeys::getExtUpgrade() QList externalUpgrade; // create directory at $HOME - QString localDir = QStandardPaths::writableLocation(QStandardPaths::DataLocation) + + QString localDir = QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation) + QString("/plasma_dataengine_extsysmon/upgrade"); QDir localDirectory; if ((!localDirectory.exists(localDir)) && (localDirectory.mkpath(localDir))) if (debug) qDebug() << PDEBUG << ":" << "Created directory" << localDir; - QStringList dirs = QStandardPaths::locateAll(QStandardPaths::DataLocation, + QStringList dirs = QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, QString("plasma_dataengine_extsysmon/upgrade"), QStandardPaths::LocateDirectory); QStringList names; @@ -710,13 +928,13 @@ QList AWKeys::getGraphicalItems() QList items; // create directory at $HOME - QString localDir = QStandardPaths::writableLocation(QStandardPaths::DataLocation) + + QString localDir = QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation) + QString("/plasma_applet_awesome-widget/desktops"); QDir localDirectory; if (localDirectory.mkpath(localDir)) if (debug) qDebug() << PDEBUG << ":" << "Created directory" << localDir; - QStringList dirs = QStandardPaths::locateAll(QStandardPaths::DataLocation, + QStringList dirs = QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, QString("plasma_applet_awesome-widget/desktops"), QStandardPaths::LocateDirectory); QStringList names; diff --git a/sources/awesome-widget-kf5/plugin/awkeys.h b/sources/awesome-widget-kf5/plugin/awkeys.h index c5200bf..b523daf 100644 --- a/sources/awesome-widget-kf5/plugin/awkeys.h +++ b/sources/awesome-widget-kf5/plugin/awkeys.h @@ -19,10 +19,14 @@ #ifndef AWKEYS_H #define AWKEYS_H +#include +#include +#include #include #include #include #include +#include #include @@ -35,6 +39,13 @@ class AWKeys : public QObject { Q_OBJECT + enum RequestedItem { + Nothing, + RequestedGraphicalItem, + RequestedExtScript, + RequestedExtUpgrade + }; + public: AWKeys(QObject *parent = 0); ~AWKeys(); @@ -48,14 +59,19 @@ public: Q_INVOKABLE QPixmap toolTipImage(); // keys Q_INVOKABLE QStringList dictKeys(); - Q_INVOKABLE QStringList extScriptsInfo(); - Q_INVOKABLE QStringList extUpgradeInfo(); - Q_INVOKABLE QStringList graphicalItemsInfo(); Q_INVOKABLE void setDataBySource(const QString sourceName, const QMap data, const QMap params); // values Q_INVOKABLE QString valueByKey(QString key); + // configuration + Q_INVOKABLE void editItem(const QString type); + +private slots: + void editItemButtonPressed(QAbstractButton *button); + void copyBar(const QString original); + void copyScript(const QString original); + void copyUpgrade(const QString original); private: // methods @@ -73,6 +89,13 @@ private: GraphicalItem *getItemByTag(const QString tag); QStringList getTimeKeys(); AWToolTip *toolTip = nullptr; + // graphical elements + QDialog *dialog = nullptr; + QListWidget *widgetDialog = nullptr; + QDialogButtonBox *dialogButtons = nullptr; + QPushButton *copyButton = nullptr; + QPushButton *createButton = nullptr; + RequestedItem requestedItem = Nothing; // variables bool debug = false; bool ready = false; diff --git a/sources/awesome-widget-kf5/plugin/graphicalitem.cpp b/sources/awesome-widget-kf5/plugin/graphicalitem.cpp index 6dd8159..1085239 100644 --- a/sources/awesome-widget-kf5/plugin/graphicalitem.cpp +++ b/sources/awesome-widget-kf5/plugin/graphicalitem.cpp @@ -125,7 +125,7 @@ QString GraphicalItem::image(const float value) } // convert - QPixmap pixmap = QPixmap::grabWidget(view).transformed(QTransform().scale(scale[0], scale[1])); + QPixmap pixmap = view->grab().transformed(QTransform().scale(scale[0], scale[1])); QByteArray byteArray; QBuffer buffer(&byteArray); pixmap.save(&buffer, "PNG"); diff --git a/sources/extsysmon/extsysmon.cpp b/sources/extsysmon/extsysmon.cpp index edd0b3c..5b248fe 100644 --- a/sources/extsysmon/extsysmon.cpp +++ b/sources/extsysmon/extsysmon.cpp @@ -131,13 +131,13 @@ void ExtendedSysMon::initScripts() dirs = KGlobal::dirs()->findDirs("data", "plasma_dataengine_extsysmon/scripts"); #else - localDir = QStandardPaths::writableLocation(QStandardPaths::DataLocation) + + localDir = QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation) + QString("/plasma_dataengine_extsysmon/scripts"); QDir localDirectory; if ((!localDirectory.exists(localDir)) && (localDirectory.mkpath(localDir))) if (debug) qDebug() << PDEBUG << ":" << "Created directory" << localDir; - dirs = QStandardPaths::locateAll(QStandardPaths::DataLocation, + dirs = QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, QString("plasma_dataengine_extsysmon/scripts"), QStandardPaths::LocateDirectory); #endif /* BUILD_KDE4 */ @@ -172,13 +172,13 @@ void ExtendedSysMon::initUpgrade() dirs = KGlobal::dirs()->findDirs("data", "plasma_dataengine_extsysmon/upgrade"); #else - localDir = QStandardPaths::writableLocation(QStandardPaths::DataLocation) + + localDir = QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation) + QString("/plasma_dataengine_extsysmon/upgrade"); QDir localDirectory; if ((!localDirectory.exists(localDir)) && (localDirectory.mkpath(localDir))) if (debug) qDebug() << PDEBUG << ":" << "Created directory" << localDir; - dirs = QStandardPaths::locateAll(QStandardPaths::DataLocation, + dirs = QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, QString("plasma_dataengine_extsysmon/upgrade"), QStandardPaths::LocateDirectory); #endif /* BUILD_KDE4 */