diff --git a/sources/awesome-widget-kf5/package/contents/config/config.qml b/sources/awesome-widget-kf5/package/contents/config/config.qml index 5f62ce6..ad08409 100644 --- a/sources/awesome-widget-kf5/package/contents/config/config.qml +++ b/sources/awesome-widget-kf5/package/contents/config/config.qml @@ -33,12 +33,24 @@ ConfigModel { source: "advanced.qml" } + ConfigCategory { + name: i18n("Tooltip") + icon: "preferences-desktop-color" + source: "tooltip.qml" + } + ConfigCategory { name: i18n("Appearance") icon: "preferences-desktop-theme" source: "appearance.qml" } + ConfigCategory { + name: i18n("DataEngine") + icon: "utilities-system-monitor" + source: "dataengine.qml" + } + ConfigCategory { name: i18n("About") icon: "help-about" diff --git a/sources/awesome-widget-kf5/package/contents/config/main.xml b/sources/awesome-widget-kf5/package/contents/config/main.xml index fd72949..0045137 100644 --- a/sources/awesome-widget-kf5/package/contents/config/main.xml +++ b/sources/awesome-widget-kf5/package/contents/config/main.xml @@ -44,7 +44,7 @@ true - + #ffffff diff --git a/sources/awesome-widget-kf5/package/contents/ui/dataengine.qml b/sources/awesome-widget-kf5/package/contents/ui/dataengine.qml new file mode 100644 index 0000000..46cea63 --- /dev/null +++ b/sources/awesome-widget-kf5/package/contents/ui/dataengine.qml @@ -0,0 +1,275 @@ +/*************************************************************************** + * 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 QtQuick.Controls 1.0 as QtControls +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 +import "." + + +Item { + id: dataenginePage + width: childrenRect.width + height: childrenRect.height + implicitWidth: pageColumn.implicitWidth + implicitHeight: pageColumn.implicitHeight + + property bool debug: AWKeys.isDebugEnabled() + 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 variant cfg_dataengine: AWActions.readDataEngineConfiguration() + + Column { + id: pageColumn + width: units.gridUnit * 25 + Row { + height: implicitHeight + width: parent.width + QtControls.Label { + height: parent.height + width: parent.width * 2 / 5 + horizontalAlignment: Text.AlignRight + verticalAlignment: Text.AlignVCenter + text: i18n("ACPI path") + } + QtControls.TextField { + height: parent.height + width: parent.width * 3 / 5 + text: cfg_dataengine["ACPIPATH"] + } + } + + Row { + height: implicitHeight + width: parent.width + QtControls.Label { + height: parent.height + width: parent.width * 2 / 5 + horizontalAlignment: Text.AlignRight + verticalAlignment: Text.AlignVCenter + text: i18n("Custom scripts") + } + QtControls.Button { + width: parent.width * 3 / 5 + text: i18n("Edit scripts") + onClicked: AWKeys.editItem("extscript") + } + } + + Row { + height: implicitHeight + width: parent.width + QtControls.Label { + height: parent.height + width: parent.width * 2 / 5 + horizontalAlignment: Text.AlignRight + verticalAlignment: Text.AlignVCenter + text: i18n("GPU device") + } + QtControls.ComboBox { + id: gpuDev + width: parent.width * 3 / 5 + model: ["auto", "disable", "ati", "nvidia"] + onCurrentIndexChanged: cfg_dataengine["GPUDEV"] = gpuDev.currentText + Component.onCompleted: { + for (var i=0; i AWActions::getFont(const QMap default } -QString AWActions::selectDevices(const QStringList source, const QStringList current) -{ - if (debug) qDebug() << PDEBUG; - - // paint - QDialog *dialog = new QDialog(0); - QListWidget *widget = new QListWidget(dialog); - QDialogButtonBox *buttons = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, - 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; isetCheckState(Qt::Checked); - else - item->setCheckState(Qt::Unchecked); - widget->addItem(item); - } - - // exec - QStringList selected; - int ret = dialog->exec(); - if (debug) qDebug() << PDEBUG << ":" << "Dialog returns" << ret; - if (ret == QDialog::Accepted) { - for (int i=0; icount(); i++) - if (widget->item(i)->checkState() == Qt::Checked) - selected.append(widget->item(i)->text()); - } else - selected = current; - delete dialog; - - return selected.join(QString("@@")); -} - - QMap AWActions::readDataEngineConfiguration() { if (debug) qDebug() << PDEBUG; diff --git a/sources/awesome-widget-kf5/plugin/awkeys.cpp b/sources/awesome-widget-kf5/plugin/awkeys.cpp index 2cf9bfb..24c7fc2 100644 --- a/sources/awesome-widget-kf5/plugin/awkeys.cpp +++ b/sources/awesome-widget-kf5/plugin/awkeys.cpp @@ -238,11 +238,15 @@ QStringList AWKeys::dictKeys() allKeys.append(QString("hddw") + QString::number(i)); } // hdd temp - for (int i=getHddDevices.count()-1; i>=0; i--) { + for (int i=getHddDevices().count()-1; i>=0; i--) { allKeys.append(QString("hddtemp") + QString::number(i)); allKeys.append(QString("hddtemp") + QString::number(i)); } // network + for (int i=getNetworkDevices().count()-1; i>=0; i--) { + allKeys.append(QString("down") + QString::number(i)); + allKeys.append(QString("up") + QString::number(i)); + } allKeys.append(QString("down")); allKeys.append(QString("up")); allKeys.append(QString("netdev")); @@ -274,6 +278,9 @@ QStringList AWKeys::dictKeys() allKeys.append(QString("desktop")); allKeys.append(QString("ndesktop")); allKeys.append(QString("tdesktops")); + // bars + for (int i=0; iname() + graphicalItems[i]->bar()); return allKeys; } @@ -299,7 +306,7 @@ QStringList AWKeys::getFanDevices() } -QStringList AWKeys::getHddDevices() +QStringList AWKeys::getHddDevices(const bool needAbstract) { if (debug) qDebug() << PDEBUG; @@ -309,6 +316,11 @@ QStringList AWKeys::getHddDevices() devices[i] = QString("/dev/") + devices[i]; devices.sort(); + if (needAbstract) { + devices.insert(0, QString("disable")); + devices.insert(0, QString("auto")); + } + return devices; } @@ -347,7 +359,7 @@ QStringList AWKeys::getTempDevices() } -void AWKeys::setDataBySource(const QString sourceName, +bool AWKeys::setDataBySource(const QString sourceName, const QMap data, const QMap params) { @@ -355,8 +367,8 @@ void AWKeys::setDataBySource(const QString sourceName, if (debug) qDebug() << PDEBUG << ":" << "Source" << sourceName; // checking - if (!checkKeys(data)) return; - if (!ready) return; + if (!checkKeys(data)) return false; + if (!ready) return false; // regular expressions QRegExp cpuRegExp = QRegExp(QString("cpu/cpu.*/TotalLoad")); @@ -416,7 +428,7 @@ void AWKeys::setDataBySource(const QString sourceName, QString device = sourceName; device.remove(QString("/Rate/rblk")); for (int i=0; isetData(QString("down"), data[QString("value")].toFloat()); @@ -521,6 +540,12 @@ void AWKeys::setDataBySource(const QString sourceName, // upload speed QString device = sourceName; device.remove(QString("network/interfaces/")).remove(QString("/transmitter/data")); + QStringList allNetworkDevices = getNetworkDevices(); + for (int i=0; isetData(QString("up"), data[QString("value")].toFloat()); @@ -562,13 +587,13 @@ void AWKeys::setDataBySource(const QString sourceName, // temperature devices if (data[QString("units")].toString() == QString("rpm")) { for (int i=0; i data, const QMap params); // values diff --git a/sources/awesome-widget-kf5/plugin/awtooltip.cpp b/sources/awesome-widget-kf5/plugin/awtooltip.cpp index 50fc193..1e7f77c 100644 --- a/sources/awesome-widget-kf5/plugin/awtooltip.cpp +++ b/sources/awesome-widget-kf5/plugin/awtooltip.cpp @@ -32,12 +32,46 @@ AWToolTip::AWToolTip(QObject *parent, QProcessEnvironment environment = QProcessEnvironment::systemEnvironment(); QString debugEnv = environment.value(QString("DEBUG"), QString("no")); debug = (debugEnv == QString("yes")); + + toolTipScene = new QGraphicsScene(); + toolTipView = new QGraphicsView(toolTipScene); + toolTipView->setStyleSheet(QString("background: transparent")); + toolTipView->setContentsMargins(0, 0, 0, 0); + toolTipView->setFrameShape(QFrame::NoFrame); + toolTipView->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + toolTipView->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + + m_counts += m_settings[QString("cpuTooltip")].toInt(); + m_counts += m_settings[QString("cpuclTooltip")].toInt(); + m_counts += m_settings[QString("memTooltip")].toInt(); + m_counts += m_settings[QString("swapTooltip")].toInt(); + m_counts += m_settings[QString("downTooltip")].toInt(); + m_counts += m_settings[QString("batteryTooltip")].toInt(); + + boundaries[QString("cpu")] = 100.0; + boundaries[QString("cpucl")] = 4000.0; + boundaries[QString("mem")] = 100.0; + boundaries[QString("swap")] = 100.0; + boundaries[QString("down")] = 1.0; + boundaries[QString("up")] = 1.0; + boundaries[QString("bat")] = 100.0; + + if (m_settings[QString("cpuTooltip")].toBool()) requiredKeys.append(QString("cpu")); + if (m_settings[QString("cpuclTooltip")].toBool()) requiredKeys.append(QString("cpucl")); + if (m_settings[QString("memTooltip")].toBool()) requiredKeys.append(QString("mem")); + if (m_settings[QString("swapTooltip")].toBool()) requiredKeys.append(QString("swap")); + if (m_settings[QString("downTooltip")].toBool()) requiredKeys.append(QString("down")); + if (m_settings[QString("upTooltip")].toBool()) requiredKeys.append(QString("up")); + if (m_settings[QString("batTooltip")].toBool()) requiredKeys.append(QString("bat")); } AWToolTip::~AWToolTip() { if (debug) qDebug() << PDEBUG; + + delete toolTipView; + delete toolTipScene; } @@ -45,7 +79,44 @@ QPixmap AWToolTip::image() { if (debug) qDebug() << PDEBUG; - return QPixmap(); + toolTipView->resize(100.0 * m_counts, 105.0); + // create image + toolTipScene->clear(); + QPen pen = QPen(); + // background + if (m_settings[QString("useTooltipBackground")].toBool()) + toolTipScene->setBackgroundBrush(QColor(m_settings[QString("tooltipBackground")].toString())); + else + toolTipScene->setBackgroundBrush(QBrush(Qt::NoBrush)); + bool down = false; + bool isBattery = false; + for (int i=0; i(data[requiredKeys[i]].count()); + float normY = 100.0 / (1.5 * boundaries[requiredKeys[i]]); + if (requiredKeys[i] == QString("bat")) + isBattery = true; + else + isBattery = false; + if (!isBattery) pen.setColor(QColor(m_settings[requiredKeys[i] + QString("Color")].toString())); + float shift = i * 100.0; + if (down) shift -= 100.0; + for (int j=0; j 0) + pen.setColor(QColor(m_settings[QString("batteryColor")].toString())); + else + pen.setColor(QColor(m_settings[QString("batteryInColor")].toString())); + } + toolTipScene->addLine(x1, y1, x2, y2, pen); + } + if (requiredKeys[i] == QString("down")) down = true; + } + + return toolTipView->grab(); } @@ -62,4 +133,15 @@ void AWToolTip::setData (const QString source, const float value, const bool ac) data[source].append(value); else data[source].append(-value); + + if ((source == QString("down")) || (source == QString("up"))) { + for (int i=0; i +#include #include #include #include @@ -39,10 +41,16 @@ public: const bool ac = true); private: + // ui + QGraphicsScene *toolTipScene = nullptr; + QGraphicsView *toolTipView = nullptr; // variables bool debug = false; + int m_counts = 0; QMap m_settings; + QMap boundaries; QMap> data; + QStringList requiredKeys; }; diff --git a/sources/extsysmon/extsysmon.cpp b/sources/extsysmon/extsysmon.cpp index 24da651..2278f80 100644 --- a/sources/extsysmon/extsysmon.cpp +++ b/sources/extsysmon/extsysmon.cpp @@ -261,8 +261,9 @@ QMap ExtendedSysMon::updateConfiguration(QMap ExtendedSysMon::updateConfiguration(QMap -1)) devices.append(deviceList[i]); if (devices.isEmpty()) - rawConfig[QString("HDDDEV")] = getAllHdd(); + rawConfig[QString("HDDDEV")] = allHddDevices.join(QChar(',')); else rawConfig[QString("HDDDEV")] = devices.join(QChar(',')); } @@ -627,6 +628,9 @@ bool ExtendedSysMon::updateSourceEvent(const QString &source) } else if (source == QString("gputemp")) { setData(source, QString("value"), getGpuTemp(configuration[QString("GPUDEV")])); } else if (source == QString("hddtemp")) { + // fill empty list + for (int i=0; i