mirror of
https://github.com/GoldenCheetah/GoldenCheetah.git
synced 2026-02-14 16:39:57 +00:00
113 lines
3.3 KiB
C++
113 lines
3.3 KiB
C++
#include <qapplication.h>
|
|
#include <qwidget.h>
|
|
#include <qfont.h>
|
|
#include <qlabel.h>
|
|
#include <qgroupbox.h>
|
|
#include <qlayout.h>
|
|
#include <qwt_thermo.h>
|
|
|
|
class ValueBar: public QWidget
|
|
{
|
|
public:
|
|
ValueBar(Qt::Orientation orientation,
|
|
const QString &text, QWidget *parent, double value = 0.0):
|
|
QWidget(parent)
|
|
{
|
|
d_label = new QLabel(text, this);
|
|
d_label->setFont(QFont("Helvetica", 10));
|
|
|
|
d_thermo = new QwtThermo(this);
|
|
d_thermo->setRange(0.0,100.0);
|
|
d_thermo->setValue(value);
|
|
d_thermo->setFont(QFont("Helvetica", 8));
|
|
d_thermo->setPipeWidth(6);
|
|
d_thermo->setScaleMaxMajor(6);
|
|
d_thermo->setScaleMaxMinor(5);
|
|
d_thermo->setMargin(10);
|
|
d_thermo->setFillColor(QColor("DarkMagenta"));
|
|
|
|
QVBoxLayout *layout = new QVBoxLayout(this);
|
|
layout->setMargin(0);
|
|
layout->setSpacing(0);
|
|
|
|
if ( orientation == Qt::Horizontal )
|
|
{
|
|
d_label->setAlignment(Qt::AlignCenter);
|
|
d_thermo->setOrientation(orientation, QwtThermo::BottomScale);
|
|
layout->addWidget(d_label);
|
|
layout->addWidget(d_thermo);
|
|
}
|
|
else
|
|
{
|
|
d_label->setAlignment(Qt::AlignRight);
|
|
d_thermo->setOrientation(orientation, QwtThermo::LeftScale);
|
|
layout->addWidget(d_thermo, 10, Qt::AlignHCenter);
|
|
layout->addWidget(d_label, 0);
|
|
}
|
|
}
|
|
|
|
void setValue(double value)
|
|
{
|
|
d_thermo->setValue(value);
|
|
}
|
|
private:
|
|
QLabel *d_label;
|
|
QwtThermo *d_thermo;
|
|
};
|
|
|
|
class SysInfo : public QFrame
|
|
{
|
|
public:
|
|
SysInfo(QWidget *parent = NULL):
|
|
QFrame(parent)
|
|
{
|
|
QGroupBox *memBox = new QGroupBox("Memory Usage", this);
|
|
memBox->setFont(QFont("Helvetica", 10));
|
|
|
|
QVBoxLayout *memLayout = new QVBoxLayout(memBox);
|
|
memLayout->setMargin(15);
|
|
memLayout->setSpacing(5);
|
|
|
|
Qt::Orientation o = Qt::Horizontal;
|
|
memLayout->addWidget(new ValueBar(o, "Used", memBox, 57));
|
|
memLayout->addWidget(new ValueBar(o, "Shared", memBox, 17));
|
|
memLayout->addWidget(new ValueBar(o, "Cache", memBox, 30));
|
|
memLayout->addWidget(new ValueBar(o, "Buffers", memBox, 22));
|
|
memLayout->addWidget(new ValueBar(o, "Swap Used", memBox, 57));
|
|
memLayout->addWidget(new QWidget(memBox), 10); // spacer
|
|
|
|
QGroupBox *cpuBox = new QGroupBox("Cpu Usage", this);
|
|
cpuBox->setFont(QFont("Helvetica", 10));
|
|
|
|
QHBoxLayout *cpuLayout = new QHBoxLayout(cpuBox);
|
|
cpuLayout->setMargin(15);
|
|
cpuLayout->setSpacing(5);
|
|
|
|
o = Qt::Vertical;
|
|
cpuLayout->addWidget(new ValueBar(o, "User", cpuBox, 57));
|
|
cpuLayout->addWidget(new ValueBar(o, "Total", cpuBox, 73));
|
|
cpuLayout->addWidget(new ValueBar(o, "System", cpuBox, 16));
|
|
cpuLayout->addWidget(new ValueBar(o, "Idle", cpuBox, 27));
|
|
|
|
QHBoxLayout *layout = new QHBoxLayout(this);
|
|
layout->setMargin(10);
|
|
layout->addWidget(memBox, 10);
|
|
layout->addWidget(cpuBox, 0);
|
|
}
|
|
};
|
|
|
|
int main (int argc, char **argv)
|
|
{
|
|
QApplication a(argc, argv);
|
|
|
|
SysInfo info;
|
|
info.resize(info.sizeHint().expandedTo(QSize(600, 400)));
|
|
#if QT_VERSION < 0x040000
|
|
a.setMainWidget(&info);
|
|
#endif
|
|
info.show();
|
|
|
|
int rv = a.exec();
|
|
return rv;
|
|
}
|