some work on tooltip

This commit is contained in:
arcan1s 2015-02-03 08:33:46 +03:00
parent 86d4bd76ea
commit eac1319889
6 changed files with 51 additions and 45 deletions

View File

@ -151,7 +151,7 @@ Item {
text.text = AWKeys.parsePattern(plasmoid.configuration.text) text.text = AWKeys.parsePattern(plasmoid.configuration.text)
// FIXME change to pixmap/image/etc // FIXME change to pixmap/image/etc
tooltip.mainText = AWKeys.toolTipImage() tooltip.image = AWKeys.toolTipImage()
// update geometry // update geometry
text.update() text.update()
height = text.contentHeight height = text.contentHeight

View File

@ -19,7 +19,7 @@
#include <KI18n/KLocalizedString> #include <KI18n/KLocalizedString>
#include <QBuffer> // #include <QBuffer>
#include <QDateTime> #include <QDateTime>
#include <QDebug> #include <QDebug>
#include <QDir> #include <QDir>
@ -141,17 +141,17 @@ QString AWKeys::parsePattern(const QString pattern)
} }
QString AWKeys::toolTipImage() QPixmap AWKeys::toolTipImage()
{ {
if(debug) qDebug() << PDEBUG; if(debug) qDebug() << PDEBUG;
if (!ready) return QString(); if (!ready) return QPixmap();
QPixmap tooltip = toolTip->image(); return toolTip->image();
QByteArray byteArray; // QByteArray byteArray;
QBuffer buffer(&byteArray); // QBuffer buffer(&byteArray);
tooltip.save(&buffer, "PNG"); // tooltip.save(&buffer, "PNG");
return QString("<img src=\"data:image/png;base64,%1\"/>").arg(QString(byteArray.toBase64())); // return QString("<img src=\"data:image/png;base64,%1\"/>").arg(QString(byteArray.toBase64()));
} }
@ -440,13 +440,13 @@ bool AWKeys::setDataBySource(const QString sourceName,
values[QString("ac")] = params[QString("acOffline")].toString(); values[QString("ac")] = params[QString("acOffline")].toString();
} else { } else {
values[data.keys()[i]] = QString("%1").arg(data[data.keys()[i]].toFloat(), 3, 'f', 0); values[data.keys()[i]] = QString("%1").arg(data[data.keys()[i]].toFloat(), 3, 'f', 0);
toolTip->setData(QString("bat"), data[data.keys()[i]].toFloat(), data[QString("ac")].toBool()); toolTip->setData(QString("batTooltip"), data[data.keys()[i]].toFloat(), data[QString("ac")].toBool());
} }
} }
} else if (sourceName == QString("cpu/system/TotalLoad")) { } else if (sourceName == QString("cpu/system/TotalLoad")) {
// cpu // cpu
values[QString("cpu")] = QString("%1").arg(data[QString("value")].toFloat(), 5, 'f', 1); values[QString("cpu")] = QString("%1").arg(data[QString("value")].toFloat(), 5, 'f', 1);
toolTip->setData(QString("cpu"), data[QString("value")].toFloat()); toolTip->setData(QString("cpuTooltip"), data[QString("value")].toFloat());
} else if (sourceName.contains(cpuRegExp)) { } else if (sourceName.contains(cpuRegExp)) {
// cpus // cpus
QString number = sourceName; QString number = sourceName;
@ -455,7 +455,7 @@ bool AWKeys::setDataBySource(const QString sourceName,
} else if (sourceName == QString("cpu/system/AverageClock")) { } else if (sourceName == QString("cpu/system/AverageClock")) {
// cpucl // cpucl
values[QString("cpucl")] = QString("%1").arg(data[QString("value")].toFloat(), 4, 'f', 0); values[QString("cpucl")] = QString("%1").arg(data[QString("value")].toFloat(), 4, 'f', 0);
toolTip->setData(QString("cpucl"), data[QString("value")].toFloat()); toolTip->setData(QString("cpuclTooltip"), data[QString("value")].toFloat());
} else if (sourceName.contains(cpuclRegExp)) { } else if (sourceName.contains(cpuclRegExp)) {
// cpucls // cpucls
QString number = sourceName; QString number = sourceName;
@ -565,7 +565,7 @@ bool AWKeys::setDataBySource(const QString sourceName,
// percentage // percentage
values[QString("mem")] = QString("%1").arg( values[QString("mem")] = QString("%1").arg(
100.0 * values[QString("memmb")].toFloat() / values[QString("memtotmb")].toFloat(), 5, 'f', 1); 100.0 * values[QString("memmb")].toFloat() / values[QString("memtotmb")].toFloat(), 5, 'f', 1);
toolTip->setData(QString("mem"), values[QString("mem")].toFloat()); toolTip->setData(QString("memTooltip"), values[QString("mem")].toFloat());
} else if (sourceName == QString("netdev")) { } else if (sourceName == QString("netdev")) {
// network device // network device
values[QString("netdev")] = data[QString("value")].toString(); values[QString("netdev")] = data[QString("value")].toString();
@ -581,7 +581,7 @@ bool AWKeys::setDataBySource(const QString sourceName,
} }
if (device == networkDevice()) { if (device == networkDevice()) {
values[QString("down")] = QString("%1").arg(data[QString("value")].toFloat(), 4, 'f', 0); values[QString("down")] = QString("%1").arg(data[QString("value")].toFloat(), 4, 'f', 0);
toolTip->setData(QString("down"), data[QString("value")].toFloat()); toolTip->setData(QString("downTooltip"), data[QString("value")].toFloat());
} }
} else if (sourceName.contains(netTransRegExp)) { } else if (sourceName.contains(netTransRegExp)) {
// upload speed // upload speed
@ -595,7 +595,7 @@ bool AWKeys::setDataBySource(const QString sourceName,
} }
if (device == networkDevice()) { if (device == networkDevice()) {
values[QString("up")] = QString("%1").arg(data[QString("value")].toFloat(), 4, 'f', 0); values[QString("up")] = QString("%1").arg(data[QString("value")].toFloat(), 4, 'f', 0);
toolTip->setData(QString("up"), data[QString("value")].toFloat()); toolTip->setData(QString("upTooltip"), data[QString("value")].toFloat());
} }
} else if (sourceName == QString("pkg")) { } else if (sourceName == QString("pkg")) {
// package manager // package manager
@ -629,7 +629,7 @@ bool AWKeys::setDataBySource(const QString sourceName,
// percentage // percentage
values[QString("swap")] = QString("%1").arg( values[QString("swap")] = QString("%1").arg(
100.0 * values[QString("swapmb")].toFloat() / values[QString("swaptotmb")].toFloat(), 5, 'f', 1); 100.0 * values[QString("swapmb")].toFloat() / values[QString("swaptotmb")].toFloat(), 5, 'f', 1);
toolTip->setData(QString("swap"), values[QString("swap")].toFloat()); toolTip->setData(QString("swapTooltip"), values[QString("swap")].toFloat());
} else if (sourceName.contains(tempRegExp)) { } else if (sourceName.contains(tempRegExp)) {
// temperature devices // temperature devices
if (data[QString("units")].toString() == QString("rpm")) { if (data[QString("units")].toString() == QString("rpm")) {

View File

@ -55,8 +55,7 @@ public:
const QMap<QString, QVariant> tooltipParams); const QMap<QString, QVariant> tooltipParams);
Q_INVOKABLE bool isDebugEnabled(); Q_INVOKABLE bool isDebugEnabled();
Q_INVOKABLE QString parsePattern(const QString pattern); Q_INVOKABLE QString parsePattern(const QString pattern);
// Q_INVOKABLE QPixmap toolTipImage(); Q_INVOKABLE QPixmap toolTipImage();
Q_INVOKABLE QString toolTipImage();
// keys // keys
Q_INVOKABLE bool addDevice(const QString source); Q_INVOKABLE bool addDevice(const QString source);
Q_INVOKABLE QStringList dictKeys(); Q_INVOKABLE QStringList dictKeys();

View File

@ -19,6 +19,7 @@
#include <QDebug> #include <QDebug>
#include <QProcessEnvironment> #include <QProcessEnvironment>
#include <math.h>
#include <pdebug/pdebug.h> #include <pdebug/pdebug.h>
@ -48,21 +49,21 @@ AWToolTip::AWToolTip(QObject *parent,
counts += configuration[QString("downTooltip")].toInt(); counts += configuration[QString("downTooltip")].toInt();
counts += configuration[QString("batteryTooltip")].toInt(); counts += configuration[QString("batteryTooltip")].toInt();
boundaries[QString("cpu")] = 100.0; boundaries[QString("cpuTooltip")] = 100.0;
boundaries[QString("cpucl")] = 4000.0; boundaries[QString("cpuclTooltip")] = 4000.0;
boundaries[QString("mem")] = 100.0; boundaries[QString("memTooltip")] = 100.0;
boundaries[QString("swap")] = 100.0; boundaries[QString("swapTooltip")] = 100.0;
boundaries[QString("down")] = 1.0; boundaries[QString("downTooltip")] = 1.0;
boundaries[QString("up")] = 1.0; boundaries[QString("upTooltip")] = 1.0;
boundaries[QString("bat")] = 100.0; boundaries[QString("batTooltip")] = 100.0;
if (configuration[QString("cpuTooltip")].toBool()) requiredKeys.append(QString("cpu")); if (configuration[QString("cpuTooltip")].toBool()) requiredKeys.append(QString("cpuTooltip"));
if (configuration[QString("cpuclTooltip")].toBool()) requiredKeys.append(QString("cpucl")); if (configuration[QString("cpuclTooltip")].toBool()) requiredKeys.append(QString("cpuclTooltip"));
if (configuration[QString("memTooltip")].toBool()) requiredKeys.append(QString("mem")); if (configuration[QString("memTooltip")].toBool()) requiredKeys.append(QString("memTooltip"));
if (configuration[QString("swapTooltip")].toBool()) requiredKeys.append(QString("swap")); if (configuration[QString("swapTooltip")].toBool()) requiredKeys.append(QString("swapTooltip"));
if (configuration[QString("downTooltip")].toBool()) requiredKeys.append(QString("down")); if (configuration[QString("downTooltip")].toBool()) requiredKeys.append(QString("downTooltip"));
if (configuration[QString("upTooltip")].toBool()) requiredKeys.append(QString("up")); if (configuration[QString("upTooltip")].toBool()) requiredKeys.append(QString("upTooltip"));
if (configuration[QString("batTooltip")].toBool()) requiredKeys.append(QString("bat")); if (configuration[QString("batTooltip")].toBool()) requiredKeys.append(QString("batTooltip"));
} }
@ -93,7 +94,7 @@ QPixmap AWToolTip::image()
for (int i=0; i<requiredKeys.count(); i++) { for (int i=0; i<requiredKeys.count(); i++) {
float normX = 100.0 / static_cast<float>(data[requiredKeys[i]].count()); float normX = 100.0 / static_cast<float>(data[requiredKeys[i]].count());
float normY = 100.0 / (1.5 * boundaries[requiredKeys[i]]); float normY = 100.0 / (1.5 * boundaries[requiredKeys[i]]);
if (requiredKeys[i] == QString("bat")) if (requiredKeys[i] == QString("batTooltip"))
isBattery = true; isBattery = true;
else else
isBattery = false; isBattery = false;
@ -113,14 +114,14 @@ QPixmap AWToolTip::image()
} }
toolTipScene->addLine(x1, y1, x2, y2, pen); toolTipScene->addLine(x1, y1, x2, y2, pen);
} }
if (requiredKeys[i] == QString("down")) down = true; if (requiredKeys[i] == QString("downTooltip")) down = true;
} }
return toolTipView->grab(); return toolTipView->grab();
} }
void AWToolTip::setData (const QString source, const float value, const bool ac) void AWToolTip::setData(const QString source, float value, const bool ac)
{ {
if (debug) qDebug() << PDEBUG; if (debug) qDebug() << PDEBUG;
@ -128,20 +129,21 @@ void AWToolTip::setData (const QString source, const float value, const bool ac)
data[source].append(0.0); data[source].append(0.0);
else if (data[source].count() > configuration[QString("tooltipNumber")].toInt()) else if (data[source].count() > configuration[QString("tooltipNumber")].toInt())
data[source].takeFirst(); data[source].takeFirst();
if (isnan(value)) value = 100.0;
if (ac) if (ac)
data[source].append(value); data[source].append(value);
else else
data[source].append(-value); data[source].append(-value);
if ((source == QString("down")) || (source == QString("up"))) { if ((source == QString("downTooltip")) || (source == QString("upTooltip"))) {
for (int i=0; i<data[QString("down")].count(); i++) for (int i=0; i<data[QString("downTooltip")].count(); i++)
if (boundaries[QString("down")] < data[QString("down")][i]) if (boundaries[QString("downTooltip")] < data[QString("downTooltip")][i])
boundaries[QString("down")] = data[QString("down")][i]; boundaries[QString("downTooltip")] = data[QString("downTooltip")][i];
for (int i=0; i<data[QString("up")].count(); i++) for (int i=0; i<data[QString("upTooltip")].count(); i++)
if (boundaries[QString("down")] < data[QString("up")][i]) if (boundaries[QString("downTooltip")] < data[QString("upTooltip")][i])
boundaries[QString("down")] = data[QString("up")][i]; boundaries[QString("downTooltip")] = data[QString("upTooltip")][i];
boundaries[QString("down")] *= 1.2; boundaries[QString("downTooltip")] *= 1.2;
boundaries[QString("up")] = boundaries[QString("down")]; boundaries[QString("upTooltip")] = boundaries[QString("downTooltip")];
} }
} }

View File

@ -37,7 +37,7 @@ public:
~AWToolTip(); ~AWToolTip();
QPixmap image(); QPixmap image();
void setData(const QString source, const float value, void setData(const QString source, float value,
const bool ac = true); const bool ac = true);
private: private:

View File

@ -8,6 +8,11 @@ Name=Information
Comment=Information Comment=Information
Action=Popup Action=Popup
[Event/event]
Name=Event
Comment=Some event occurs
Action=Popup
[Event/system] [Event/system]
Name=System information Name=System information
Comment=System information Comment=System information