end work on awesomewidget

edit setdatabysource method
This commit is contained in:
arcan1s
2015-02-02 08:21:56 +03:00
parent 9611677254
commit 27fd4e8f1e
12 changed files with 945 additions and 67 deletions

View File

@ -153,48 +153,6 @@ QMap<QString, QVariant> AWActions::getFont(const QMap<QString, QVariant> 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; i<source.count(); i++) {
QListWidgetItem *item = new QListWidgetItem(source[i]);
if (current.contains(source[i]))
item->setCheckState(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; i<widget->count(); i++)
if (widget->item(i)->checkState() == Qt::Checked)
selected.append(widget->item(i)->text());
} else
selected = current;
delete dialog;
return selected.join(QString("@@"));
}
QMap<QString, QVariant> AWActions::readDataEngineConfiguration()
{
if (debug) qDebug() << PDEBUG;

View File

@ -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; i<graphicalItems.count(); i++)
allKeys.append(graphicalItems[i]->name() + 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<QString, QVariant> data,
const QMap<QString, QVariant> 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; i<diskDevices.count(); i++)
if (params[QString("disk")].toString().split(QString("@@"))[i] == device) {
if (diskDevices[i] == device) {
values[QString("hddr") + QString::number(i)] = QString("%1").arg(data[QString("value")].toFloat(), 5, 'f', 0);
break;
}
@ -425,7 +437,7 @@ void AWKeys::setDataBySource(const QString sourceName,
QString device = sourceName;
device.remove(QString("/Rate/wblk"));
for (int i=0; i<diskDevices.count(); i++)
if (params[QString("disk")].toString().split(QString("@@"))[i] == device) {
if (diskDevices[i] == device) {
values[QString("hddw") + QString::number(i)] = QString("%1").arg(data[QString("value")].toFloat(), 5, 'f', 0);
break;
}
@ -441,7 +453,7 @@ void AWKeys::setDataBySource(const QString sourceName,
QString mount = sourceName;
mount.remove(QString("partitions")).remove(QString("/filllevel"));
for (int i=0; i<mountDevices.count(); i++)
if (params[QString("mount")].toString().split(QString("@@"))[i] == mount) {
if (mountDevices[i] == mount) {
values[QString("hdd") + QString::number(i)] = QString("%1").arg(data[QString("value")].toFloat(), 5, 'f', 1);
break;
}
@ -450,7 +462,7 @@ void AWKeys::setDataBySource(const QString sourceName,
QString mount = sourceName;
mount.remove(QString("partitions")).remove(QString("/freespace"));
for (int i=0; i<mountDevices.count(); i++)
if (params[QString("mount")].toString().split(QString("@@"))[i] == mount) {
if (mountDevices[i] == mount) {
values[QString("hddfreemb") + QString::number(i)] = QString("%1").arg(
data[QString("value")].toFloat() / 1024.0, 5, 'f', 0);
values[QString("hddfreegb") + QString::number(i)] = QString("%1").arg(
@ -462,7 +474,7 @@ void AWKeys::setDataBySource(const QString sourceName,
QString mount = sourceName;
mount.remove(QString("partitions")).remove(QString("/usedspace"));
for (int i=0; i<mountDevices.count(); i++)
if (params[QString("mount")].toString().split(QString("@@"))[i] == mount) {
if (mountDevices[i] == mount) {
values[QString("hddmb") + QString::number(i)] = QString("%1").arg(
data[QString("value")].toFloat() / 1024.0, 5, 'f', 0);
values[QString("hddgb") + QString::number(i)] = QString("%1").arg(
@ -478,9 +490,10 @@ void AWKeys::setDataBySource(const QString sourceName,
}
} else if (sourceName == QString("hddtemp")) {
// hdd temperature
QStringList hddDevices = getHddDevices();
for (int i=0; i<data.keys().count(); i++)
for (int j=0; j<getHddDevices().count(); j++)
if (data.keys()[i] == params[QString("hdd")].toString().split(QString("@@"))[j]) {
for (int j=0; j<hddDevices.count(); j++)
if (hddDevices[j] == data.keys()[i]) {
values[QString("hddtemp") + QString::number(j)] = QString("%1").arg(
temperature(data[data.keys()[i]].toFloat(), params[QString("tempUnits")].toString()), 4, 'f', 1);
break;
@ -513,6 +526,12 @@ void AWKeys::setDataBySource(const QString sourceName,
// download speed
QString device = sourceName;
device.remove(QString("network/interfaces/")).remove(QString("/receiver/data"));
QStringList allNetworkDevices = getNetworkDevices();
for (int i=0; i<allNetworkDevices.count(); i++)
if (allNetworkDevices[i] == device) {
values[QString("down") + QString::number(i)] = QString("%1").arg(data[QString("value")].toFloat(), 4, 'f', 0);
break;
}
if (device == networkDevice()) {
values[QString("down")] = QString("%1").arg(data[QString("value")].toFloat(), 4, 'f', 0);
toolTip->setData(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; i<allNetworkDevices.count(); i++)
if (allNetworkDevices[i] == device) {
values[QString("up") + QString::number(i)] = QString("%1").arg(data[QString("value")].toFloat(), 4, 'f', 0);
break;
}
if (device == networkDevice()) {
values[QString("up")] = QString("%1").arg(data[QString("value")].toFloat(), 4, 'f', 0);
toolTip->setData(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<fanDevices.count(); i++)
if (sourceName == params[QString("fanDevice")].toString().split(QString("@@"))[i]) {
if (sourceName == fanDevices[i]) {
values[QString("fan") + QString::number(i)] = QString("%1").arg(data[QString("value")].toFloat(), 4, 'f', 1);
break;
}
} else {
for (int i=0; i<tempDevices.count(); i++)
if (sourceName == params[QString("tempDevice")].toString().split(QString("@@"))[i]) {
if (sourceName == tempDevices[i]) {
values[QString("temp") + QString::number(i)] = QString("%1").arg(
temperature(data[QString("value")].toFloat(), params[QString("tempUnits")].toString()), 4, 'f', 1);
break;
@ -600,7 +625,12 @@ void AWKeys::setDataBySource(const QString sourceName,
values[QString("cuptime")].replace(QString("$h"), QString("%1").arg(hours));
values[QString("cuptime")].replace(QString("$mm"), QString("%1").arg(minutes, 2, 10, QChar('0')));
values[QString("cuptime")].replace(QString("$m"), QString("%1").arg(minutes));
} else {
if (debug) qDebug() << PDEBUG << ":" << "Source not found";
return false;
}
return true;
}

View File

@ -61,11 +61,11 @@ public:
Q_INVOKABLE QStringList dictKeys();
Q_INVOKABLE QStringList getDiskDevices();
Q_INVOKABLE QStringList getFanDevices();
Q_INVOKABLE QStringList getHddDevices();
Q_INVOKABLE QStringList getHddDevices(const bool needAbstract = false);
Q_INVOKABLE QStringList getMountDevices();
Q_INVOKABLE QStringList getNetworkDevices();
Q_INVOKABLE QStringList getTempDevices();
Q_INVOKABLE void setDataBySource(const QString sourceName,
Q_INVOKABLE bool setDataBySource(const QString sourceName,
const QMap<QString, QVariant> data,
const QMap<QString, QVariant> params);
// values

View File

@ -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<requiredKeys.count(); i++) {
float normX = 100.0 / static_cast<float>(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<data[requiredKeys[i]].count()-1; j++) {
float x1 = j * normX + shift;
float y1 = - fabs(data[requiredKeys[i]][j]) * normY + 5.0;
float x2 = (j + 1) * normX + shift;
float y2 = - fabs(data[requiredKeys[i]][j+1]) * normY + 5.0;
if (isBattery) {
if (data[requiredKeys[i]][j+1] > 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<data[QString("down")].count(); i++)
if (boundaries[QString("down")] < data[QString("down")][i])
boundaries[QString("down")] = data[QString("down")][i];
for (int i=0; i<data[QString("up")].count(); i++)
if (boundaries[QString("down")] < data[QString("up")][i])
boundaries[QString("down")] = data[QString("up")][i];
boundaries[QString("down")] *= 1.2;
boundaries[QString("up")] = boundaries[QString("down")];
}
}

View File

@ -19,6 +19,8 @@
#ifndef AWTOOLTIP_H
#define AWTOOLTIP_H
#include <QGraphicsScene>
#include <QGraphicsView>
#include <QMap>
#include <QObject>
#include <QPixmap>
@ -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<QString, QVariant> m_settings;
QMap<QString, float> boundaries;
QMap<QString, QList<float>> data;
QStringList requiredKeys;
};