mirror of
https://github.com/arcan1s/awesome-widgets.git
synced 2025-04-25 07:57:19 +00:00
add tooltip
This commit is contained in:
parent
5b26d835df
commit
5921bd4c1d
@ -17,7 +17,10 @@
|
||||
|
||||
#include "awesome-widget.h"
|
||||
|
||||
#include <Plasma/ToolTipManager>
|
||||
#include <QGraphicsLinearLayout>
|
||||
#include <QGraphicsScene>
|
||||
#include <QGraphicsView>
|
||||
#include <QNetworkInterface>
|
||||
#include <QProcessEnvironment>
|
||||
#include <QTextCodec>
|
||||
@ -84,6 +87,30 @@ int AwesomeWidget::getNumberCpus()
|
||||
}
|
||||
|
||||
|
||||
float AwesomeWidget::getTemp(const float temp)
|
||||
{
|
||||
if (debug) qDebug() << PDEBUG;
|
||||
|
||||
float convertedTemp = temp;
|
||||
if (configuration[QString("tempUnits")] == QString("Celsius"))
|
||||
;
|
||||
else if (configuration[QString("tempUnits")] == QString("Fahrenheit"))
|
||||
convertedTemp = temp * 9.0 / 5.0 + 32.0;
|
||||
else if (configuration[QString("tempUnits")] == QString("Kelvin"))
|
||||
convertedTemp = temp + 273.15;
|
||||
else if (configuration[QString("tempUnits")] == QString("Reaumur"))
|
||||
convertedTemp = temp * 0.8;
|
||||
else if (configuration[QString("tempUnits")] == QString("cm^-1"))
|
||||
convertedTemp = temp * 0.695;
|
||||
else if (configuration[QString("tempUnits")] == QString("kJ/mol"))
|
||||
convertedTemp = temp * 8.31;
|
||||
else if (configuration[QString("tempUnits")] == QString("kcal/mol"))
|
||||
convertedTemp = temp * 1.98;
|
||||
|
||||
return convertedTemp;
|
||||
}
|
||||
|
||||
|
||||
QStringList AwesomeWidget::getTimeKeys()
|
||||
{
|
||||
if (debug) qDebug() << PDEBUG;
|
||||
@ -114,14 +141,27 @@ void AwesomeWidget::init()
|
||||
{
|
||||
if (debug) qDebug() << PDEBUG;
|
||||
|
||||
// dataengines
|
||||
extsysmonEngine = dataEngine(QString("ext-sysmon"));
|
||||
sysmonEngine = dataEngine(QString("systemmonitor"));
|
||||
timeEngine = dataEngine(QString("time"));
|
||||
|
||||
// tooltip
|
||||
toolTip = Plasma::ToolTipContent();
|
||||
toolTip.setMainText(QString("Awesome Widget"));
|
||||
toolTip.setSubText(QString(""));
|
||||
toolTipScene = new QGraphicsScene();
|
||||
toolTipView = new QGraphicsView(toolTipScene);
|
||||
toolTipView->setStyleSheet(QString("background: transparent"));
|
||||
toolTipView->setContentsMargins(0, 0, 0, 0);
|
||||
toolTipView->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
|
||||
toolTipView->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
|
||||
Plasma::ToolTipManager::self()->setContent(this, toolTip);
|
||||
|
||||
// body
|
||||
mainLayout = new QGraphicsLinearLayout();
|
||||
mainLayout->setContentsMargins(1, 1, 1, 1);
|
||||
setLayout(mainLayout);
|
||||
|
||||
textLabel = new CustomLabel(this, debug);
|
||||
|
||||
// read variables
|
||||
|
@ -21,6 +21,7 @@
|
||||
|
||||
#include <Plasma/Applet>
|
||||
#include <Plasma/DataEngine>
|
||||
#include <Plasma/ToolTipContent>
|
||||
|
||||
#include <ui_advanced.h>
|
||||
#include <ui_appearance.h>
|
||||
@ -31,6 +32,7 @@
|
||||
|
||||
class CustomLabel;
|
||||
class QGraphicsLinearLayout;
|
||||
class QGraphicsScene;
|
||||
|
||||
class AwesomeWidget : public Plasma::Applet
|
||||
{
|
||||
@ -41,6 +43,7 @@ public:
|
||||
~AwesomeWidget();
|
||||
QString getNetworkDevice();
|
||||
int getNumberCpus();
|
||||
float getTemp(const float temp);
|
||||
QStringList getTimeKeys();
|
||||
void init();
|
||||
// de configuration
|
||||
@ -76,6 +79,10 @@ private:
|
||||
QGraphicsLinearLayout *mainLayout;
|
||||
CustomLabel *textLabel;
|
||||
QTimer *timer;
|
||||
// tooltip
|
||||
Plasma::ToolTipContent toolTip;
|
||||
QGraphicsScene *toolTipScene;
|
||||
QGraphicsView *toolTipView;
|
||||
// values
|
||||
int networkDeviceUpdate;
|
||||
QMap<QString, int> counts;
|
||||
|
@ -272,11 +272,11 @@ void AwesomeWidget::createConfigurationInterface(KConfigDialog *parent)
|
||||
else
|
||||
uiTooltipConfig.checkBox_cpu->setCheckState(Qt::Checked);
|
||||
uiTooltipConfig.kcolorcombo_cpu->setColor(QColor(configuration[QString("cpuColor")]));
|
||||
if (configuration[QString("cpuclockTooltip")].toInt() == 0)
|
||||
if (configuration[QString("cpuclTooltip")].toInt() == 0)
|
||||
uiTooltipConfig.checkBox_cpuclock->setCheckState(Qt::Unchecked);
|
||||
else
|
||||
uiTooltipConfig.checkBox_cpuclock->setCheckState(Qt::Checked);
|
||||
uiTooltipConfig.kcolorcombo_cpuclock->setColor(QColor(configuration[QString("cpuclockColor")]));
|
||||
uiTooltipConfig.kcolorcombo_cpuclock->setColor(QColor(configuration[QString("cpuclColor")]));
|
||||
if (configuration[QString("memTooltip")].toInt() == 0)
|
||||
uiTooltipConfig.checkBox_mem->setCheckState(Qt::Unchecked);
|
||||
else
|
||||
@ -426,8 +426,8 @@ void AwesomeWidget::configAccepted()
|
||||
cg.writeEntry("tooltipBackground", uiTooltipConfig.kcolorcombo_background->color().name());
|
||||
cg.writeEntry("cpuTooltip", QString::number(uiTooltipConfig.checkBox_cpu->checkState()));
|
||||
cg.writeEntry("cpuColor", uiTooltipConfig.kcolorcombo_cpu->color().name());
|
||||
cg.writeEntry("cpuclockTooltip", QString::number(uiTooltipConfig.checkBox_cpuclock->checkState()));
|
||||
cg.writeEntry("cpuclockColor", uiTooltipConfig.kcolorcombo_cpuclock->color().name());
|
||||
cg.writeEntry("cpuclTooltip", QString::number(uiTooltipConfig.checkBox_cpuclock->checkState()));
|
||||
cg.writeEntry("cpuclColor", uiTooltipConfig.kcolorcombo_cpuclock->color().name());
|
||||
cg.writeEntry("memTooltip", QString::number(uiTooltipConfig.checkBox_mem->checkState()));
|
||||
cg.writeEntry("memColor", uiTooltipConfig.kcolorcombo_mem->color().name());
|
||||
cg.writeEntry("swapTooltip", QString::number(uiTooltipConfig.checkBox_swap->checkState()));
|
||||
@ -509,8 +509,8 @@ void AwesomeWidget::configChanged()
|
||||
configuration[QString("tooltipBackground")] = cg.readEntry("tooltipBackground", "#ffffff");
|
||||
configuration[QString("cpuTooltip")] = cg.readEntry("cpuTooltip", "2");
|
||||
configuration[QString("cpuColor")] = cg.readEntry("cpuColor", "#ff0000");
|
||||
configuration[QString("cpuclockTooltip")] = cg.readEntry("cpuclockTooltip", "2");
|
||||
configuration[QString("cpuclockColor")] = cg.readEntry("cpuclockColor", "#00ff00");
|
||||
configuration[QString("cpuclTooltip")] = cg.readEntry("cpuclTooltip", "2");
|
||||
configuration[QString("cpuclColor")] = cg.readEntry("cpuclColor", "#00ff00");
|
||||
configuration[QString("memTooltip")] = cg.readEntry("memTooltip", "2");
|
||||
configuration[QString("memColor")] = cg.readEntry("memColor", "#0000ff");
|
||||
configuration[QString("swapTooltip")] = cg.readEntry("swapTooltip", "2");
|
||||
@ -546,6 +546,15 @@ void AwesomeWidget::configChanged()
|
||||
counts[QString("mount")] = configuration[QString("mount")].split(QString("@@")).count();
|
||||
counts[QString("pkg")] = deSettings[QString("PKGCMD")].split(QChar(',')).count();
|
||||
counts[QString("temp")] = configuration[QString("tempDevice")].split(QString("@@")).count();
|
||||
counts[QString("tooltip")] = 0;
|
||||
counts[QString("tooltip")] += configuration[QString("cpuTooltip")].toInt();
|
||||
counts[QString("tooltip")] += configuration[QString("cpuclTooltip")].toInt();
|
||||
counts[QString("tooltip")] += configuration[QString("memTooltip")].toInt();
|
||||
counts[QString("tooltip")] += configuration[QString("swapTooltip")].toInt();
|
||||
if ((configuration[QString("downTooltip")].toInt() == 2) ||
|
||||
(configuration[QString("upTooltip")].toInt() == 2))
|
||||
counts[QString("tooltip")] += 2;
|
||||
counts[QString("tooltip")] = counts[QString("tooltip")] / 2;
|
||||
|
||||
reinit();
|
||||
}
|
||||
|
@ -191,7 +191,7 @@ void AwesomeWidget::dataUpdated(const QString &sourceName, const Plasma::DataEng
|
||||
values[QString("cpu") + number] = QString("%5.1f").arg(data[QString("value")].toFloat());
|
||||
} else if (sourceName == QString("cpu/system/AverageClock")) {
|
||||
values[QString("cpucl")] = QString("%5.1f").arg(data[QString("value")].toFloat());
|
||||
if (configuration[QString("cpuclockTooltip")].toInt() == 2)
|
||||
if (configuration[QString("cpuclTooltip")].toInt() == 2)
|
||||
tooltipValues[QString("cpucl")].append(data[QString("value")].toFloat());
|
||||
} else if (sourceName.indexOf(cpuclRegExp) > -1) {
|
||||
QString number = sourceName;
|
||||
@ -224,7 +224,7 @@ void AwesomeWidget::dataUpdated(const QString &sourceName, const Plasma::DataEng
|
||||
} else if (sourceName == QString("gpu")) {
|
||||
values[QString("gpu")] = QString("%4.1f").arg(data[QString("GPU")].toFloat());
|
||||
} else if (sourceName == QString("gputemp")) {
|
||||
values[QString("gputemp")] = QString("%4.1f").arg(data[QString("GPUTemp")].toFloat());
|
||||
values[QString("gputemp")] = QString("%4.1f").arg(getTemp(data[QString("GPUTemp")].toFloat()));
|
||||
} else if (sourceName.indexOf(mountFillRegExp) > -1) {
|
||||
QString mount = sourceName;
|
||||
mount.remove(QString("partitions"));
|
||||
@ -269,7 +269,7 @@ void AwesomeWidget::dataUpdated(const QString &sourceName, const Plasma::DataEng
|
||||
for (int i=0; i<data.keys().count(); i++)
|
||||
for (int j=0; j<counts[QString("hddtemp")]; j++)
|
||||
if (data.keys()[i] == configuration[QString("hdd")].split(QString("@@"))[j]) {
|
||||
values[QString("hddtemp") + QString::number(j)] = QString("%4.1f").arg(data[data.keys()[i]].toFloat());
|
||||
values[QString("hddtemp") + QString::number(j)] = QString("%4.1f").arg(getTemp(data[data.keys()[i]].toFloat()));
|
||||
break;
|
||||
}
|
||||
} else if (sourceName == QString("mem/physical/application")) {
|
||||
@ -342,7 +342,7 @@ void AwesomeWidget::dataUpdated(const QString &sourceName, const Plasma::DataEng
|
||||
} else if (sourceName.indexOf(tempRegExp) > -1) {
|
||||
for (int i=0; i<counts[QString("temp")]; i++)
|
||||
if (sourceName == configuration[QString("tempDevice")].split(QString("@@"))[i]) {
|
||||
values[QString("temp") + QString::number(i)] = QString("%4.1f").arg(data[QString("value")].toFloat());
|
||||
values[QString("temp") + QString::number(i)] = QString("%4.1f").arg(getTemp(data[QString("value")].toFloat()));
|
||||
break;
|
||||
}
|
||||
} else if (sourceName == QString("Local")) {
|
||||
|
@ -17,7 +17,9 @@
|
||||
|
||||
#include "awesome-widget.h"
|
||||
|
||||
#include <Plasma/ToolTipManager>
|
||||
#include <QGraphicsLinearLayout>
|
||||
#include <QGraphicsView>
|
||||
//#include <QThread>
|
||||
|
||||
#include "customlabel.h"
|
||||
@ -67,10 +69,63 @@ void AwesomeWidget::reinit()
|
||||
void AwesomeWidget::updateText()
|
||||
{
|
||||
if (debug) qDebug() << PDEBUG;
|
||||
|
||||
QString text = configuration[QString("text")];
|
||||
for (int i=0; i<foundKeys.count(); i++)
|
||||
text.replace(QString("$") + foundKeys[i] + QString("$"), values[foundKeys[i]]);
|
||||
textLabel->setText(text);
|
||||
}
|
||||
|
||||
|
||||
void AwesomeWidget::updateTooltip()
|
||||
{
|
||||
if (debug) qDebug() << PDEBUG;
|
||||
|
||||
toolTipView->resize(100.0 * counts[QString("tooltip")], 100.0);
|
||||
|
||||
// boundaries
|
||||
QMap<QString, float> boundaries;
|
||||
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;
|
||||
if (configuration[QString("downTooltip")].toInt() == 2)
|
||||
for (int i=0; i<tooltipValues[QString("down")].count(); i++)
|
||||
if (boundaries[QString("down")] < tooltipValues[QString("down")][i])
|
||||
boundaries[QString("down")] = tooltipValues[QString("down")][i];
|
||||
if (configuration[QString("upTooltip")].toInt() == 2)
|
||||
for (int i=0; i<tooltipValues[QString("up")].count(); i++)
|
||||
if (boundaries[QString("down")] < tooltipValues[QString("up")][i])
|
||||
boundaries[QString("down")] = tooltipValues[QString("up")][i];
|
||||
boundaries[QString("up")] = boundaries[QString("down")];
|
||||
|
||||
// create image
|
||||
toolTipScene->clear();
|
||||
QPen pen = QPen();
|
||||
if (configuration[QString("useTooltipBackground")].toInt() == 2)
|
||||
toolTipScene->setBackgroundBrush(QColor(configuration[QString("tooltipBackground")]));
|
||||
else
|
||||
toolTipScene->setBackgroundBrush(QBrush(Qt::NoBrush));
|
||||
bool down = false;
|
||||
for (int i=0; i<tooltipValues.keys().count(); i++) {
|
||||
float normX = 100.0 / tooltipValues[tooltipValues.keys()[i]].count();
|
||||
float normY = 100.0 / (1.5 * boundaries[tooltipValues.keys()[i]]);
|
||||
pen.setColor(QColor(configuration[tooltipValues.keys()[i] + QString("Color")]));
|
||||
float shift = i * 100.0;
|
||||
if (down)
|
||||
shift -= 100.0;
|
||||
for (int j=0; j<tooltipValues[tooltipValues.keys()[i]].count()-1; j++) {
|
||||
float x1 = j * normX + shift;
|
||||
float y1 = -tooltipValues[tooltipValues.keys()[i]][j] * normY;
|
||||
float x2 = (j + 1) * normX + shift;
|
||||
float y2 = -tooltipValues[tooltipValues.keys()[i]][j+1] * normY;
|
||||
toolTipScene->addLine(x1, y1, x2, y2, pen);
|
||||
}
|
||||
if (tooltipValues.keys()[i] == QString("down"))
|
||||
down = true;
|
||||
}
|
||||
|
||||
toolTip.setImage(QPixmap::grabWidget(toolTipView));
|
||||
Plasma::ToolTipManager::self()->setContent(this, toolTip);
|
||||
}
|
||||
|
77
sources/awesome-widget/tooltip.cpp
Normal file
77
sources/awesome-widget/tooltip.cpp
Normal file
@ -0,0 +1,77 @@
|
||||
/***************************************************************************
|
||||
* This file is part of pytextmonitor *
|
||||
* *
|
||||
* pytextmonitor 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. *
|
||||
* *
|
||||
* pytextmonitor 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 pytextmonitor. If not, see http://www.gnu.org/licenses/ *
|
||||
***************************************************************************/
|
||||
|
||||
#include "awesome-widget.h"
|
||||
|
||||
#include <pdebug/pdebug.h>
|
||||
|
||||
|
||||
void AwesomeWidget::initValues()
|
||||
{
|
||||
if (debug) qDebug() << PDEBUG;
|
||||
}
|
||||
|
||||
|
||||
void AwesomeWidget::reinit()
|
||||
{
|
||||
if (debug) qDebug() << PDEBUG;
|
||||
|
||||
mainLayout = new QGraphicsLinearLayout();
|
||||
mainLayout->setContentsMargins(1, 1, 1, 1);
|
||||
setLayout(mainLayout);
|
||||
|
||||
if (configuration[QString("background")].toInt() == 0)
|
||||
setBackgroundHints(NoBackground);
|
||||
else
|
||||
setBackgroundHints(DefaultBackground);
|
||||
if (configuration[QString("layout")].toInt() == 0)
|
||||
mainLayout->setOrientation(Qt::Horizontal);
|
||||
else
|
||||
mainLayout->setOrientation(Qt::Vertical);
|
||||
if (configuration[QString("leftStretch")].toInt() == 2)
|
||||
mainLayout->addStretch(1);
|
||||
if (configuration[QString("popup")].toInt() == 0)
|
||||
textLabel->setPopupEnabled(true);
|
||||
mainLayout->addItem(textLabel);
|
||||
if (configuration[QString("rightStretch")].toInt() == 2)
|
||||
mainLayout->addStretch(1);
|
||||
|
||||
keys = getKeys();
|
||||
foundKeys = findKeys();
|
||||
initValues();
|
||||
values[QString("netdev")] = getNetworkDevice();
|
||||
// thread()->wait(60000);
|
||||
connectToEngine();
|
||||
resize(10, 10);
|
||||
}
|
||||
|
||||
|
||||
void AwesomeWidget::updateText()
|
||||
{
|
||||
if (debug) qDebug() << PDEBUG;
|
||||
|
||||
QString text = configuration[QString("text")];
|
||||
for (int i=0; i<foundKeys.count(); i++)
|
||||
text.replace(QString("$") + foundKeys[i] + QString("$"), values[foundKeys[i]]);
|
||||
textLabel->setText(text);
|
||||
}
|
||||
|
||||
|
||||
void AwesomeWidget::updateTooltip()
|
||||
{
|
||||
if (debug) qDebug() << PDEBUG;
|
||||
}
|
Loading…
Reference in New Issue
Block a user