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