|
|
|
@ -27,17 +27,22 @@ const QColor StatDock::colorLower(255, 255, 255);
|
|
|
|
|
const QColor StatDock::colorLowerInactive(125, 125, 125);
|
|
|
|
|
const QColor StatDock::colorBlack(0, 0, 0);
|
|
|
|
|
|
|
|
|
|
#define DOCK_SIZE 24
|
|
|
|
|
#define DOCK_SCALE 4.34783 // Approx. 100/23.
|
|
|
|
|
//#define DOCK_SIZE 24
|
|
|
|
|
#define DOCK_SIZE width()
|
|
|
|
|
#define DOCK_SCALE (100/(DOCK_SIZE-1))
|
|
|
|
|
#define SOFT_STEP 3
|
|
|
|
|
|
|
|
|
|
StatDock::StatDock(int whichDock, const QString& useLabel,
|
|
|
|
|
StatPopup *parent, const char *name) :
|
|
|
|
|
KSystemTray(parent,name),
|
|
|
|
|
label(useLabel),
|
|
|
|
|
bufUpper(new int[DOCK_SIZE]),
|
|
|
|
|
bufLower(new int[DOCK_SIZE]),
|
|
|
|
|
bufUpper(0),
|
|
|
|
|
bufLower(0),
|
|
|
|
|
pos(0) {
|
|
|
|
|
|
|
|
|
|
bufUpper = new int[DOCK_SIZE];
|
|
|
|
|
bufLower = new int[DOCK_SIZE];
|
|
|
|
|
|
|
|
|
|
// Initialise the stored readings.
|
|
|
|
|
for (i = 0; i < DOCK_SIZE; i++)
|
|
|
|
|
bufUpper[i] = bufLower[i] = 0;
|
|
|
|
@ -45,7 +50,7 @@ StatDock::StatDock(int whichDock, const QString& useLabel,
|
|
|
|
|
// Initialise the display.
|
|
|
|
|
parent->initDock(this, contextMenu(), whichDock);
|
|
|
|
|
setBackgroundColor(colorBlack);
|
|
|
|
|
resize(24, 24);
|
|
|
|
|
resize(DOCK_SIZE, DOCK_SIZE);
|
|
|
|
|
show();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -54,6 +59,28 @@ StatDock::~StatDock() {
|
|
|
|
|
delete[] bufLower;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void StatDock::resizeEvent ( QResizeEvent * )
|
|
|
|
|
{
|
|
|
|
|
// Honor Free Desktop specifications that allow for arbitrary system tray icon sizes
|
|
|
|
|
int* bufUpperOld;
|
|
|
|
|
int* bufLowerOld;
|
|
|
|
|
|
|
|
|
|
bufUpperOld = bufUpper;
|
|
|
|
|
bufLowerOld = bufLower;
|
|
|
|
|
|
|
|
|
|
bufUpper = new int[DOCK_SIZE];
|
|
|
|
|
bufLower = new int[DOCK_SIZE];
|
|
|
|
|
|
|
|
|
|
// Re-initialise the stored readings.
|
|
|
|
|
for (i = 0; i < DOCK_SIZE; i++)
|
|
|
|
|
bufUpper[i] = bufLower[i] = 0;
|
|
|
|
|
|
|
|
|
|
delete[] bufUpperOld;
|
|
|
|
|
delete[] bufLowerOld;
|
|
|
|
|
|
|
|
|
|
repaint();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void StatDock::setGrid(bool set) {
|
|
|
|
|
grid = set;
|
|
|
|
|
repaint();
|
|
|
|
@ -146,15 +173,14 @@ void StatDock::paintEvent(QPaintEvent*) {
|
|
|
|
|
// Start by drawing the grid.
|
|
|
|
|
if(grid) {
|
|
|
|
|
p.setPen((active) ? colorGrid : colorGridInactive);
|
|
|
|
|
p.drawLine(0, 4, 23, 4);
|
|
|
|
|
p.drawLine(0, 9, 23, 9);
|
|
|
|
|
p.drawLine(0, 14, 23, 14);
|
|
|
|
|
p.drawLine(0, 19, 23, 19);
|
|
|
|
|
for(i = (((DOCK_SIZE+1)/5)-1); i < (DOCK_SIZE-1); i=i+((DOCK_SIZE+1)/5)) {
|
|
|
|
|
p.drawLine(0, i, (DOCK_SIZE-1), i);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(fill == fillShaded) {
|
|
|
|
|
// Shaded
|
|
|
|
|
for(i = 0; i < 24; i++) {
|
|
|
|
|
for(i = 0; i < DOCK_SIZE; i++) {
|
|
|
|
|
tmpPos = (pos + i + 1) % DOCK_SIZE;
|
|
|
|
|
for(j = 0; j <= bufUpper[tmpPos]; j++) {
|
|
|
|
|
if (bufUpper[tmpPos] == 0 || j == 0)
|
|
|
|
@ -179,7 +205,7 @@ void StatDock::paintEvent(QPaintEvent*) {
|
|
|
|
|
else
|
|
|
|
|
p.setPen(colorLower.dark((200 * bufLower[tmpPos]) / j));
|
|
|
|
|
|
|
|
|
|
p.drawPoint(i, 23 - j);
|
|
|
|
|
p.drawPoint(i, (DOCK_SIZE-1) - j);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -189,20 +215,20 @@ void StatDock::paintEvent(QPaintEvent*) {
|
|
|
|
|
// Draw the upper bars, then the lower to save on pen
|
|
|
|
|
// adjustments.
|
|
|
|
|
p.setPen(active ? colorUpper : colorUpperInactive);
|
|
|
|
|
for(i = 0; i < 24; i++) {
|
|
|
|
|
for(i = 0; i < DOCK_SIZE; i++) {
|
|
|
|
|
tmpPos = (pos + i + 1) % DOCK_SIZE;
|
|
|
|
|
p.drawLine(i, DOCK_SIZE - 1 - bufUpper[tmpPos] -
|
|
|
|
|
bufLower[tmpPos], i, DOCK_SIZE - 1 - bufLower[tmpPos]);
|
|
|
|
|
}
|
|
|
|
|
p.setPen(active ? colorLower : colorLowerInactive);
|
|
|
|
|
for(i = 0; i < 24; i++) {
|
|
|
|
|
for(i = 0; i < DOCK_SIZE; i++) {
|
|
|
|
|
tmpPos = (pos + i + 1) % DOCK_SIZE;
|
|
|
|
|
p.drawLine(i, DOCK_SIZE - 1 - bufLower[tmpPos],
|
|
|
|
|
i, DOCK_SIZE - 1);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
p.setPen(active ? colorUpper : colorUpperInactive);
|
|
|
|
|
for(i = 0; i < 24; i++) {
|
|
|
|
|
for(i = 0; i < DOCK_SIZE; i++) {
|
|
|
|
|
tmpPos = (pos + i + 1) % DOCK_SIZE;
|
|
|
|
|
p.drawLine(i, DOCK_SIZE - 1 - bufUpper[tmpPos],
|
|
|
|
|
i, DOCK_SIZE - 1);
|
|
|
|
@ -214,19 +240,19 @@ void StatDock::paintEvent(QPaintEvent*) {
|
|
|
|
|
// Draw the upper line, then the lower to save on pen
|
|
|
|
|
// adjustments.
|
|
|
|
|
p.setPen(active ? colorUpper : colorUpperInactive);
|
|
|
|
|
for(i = 0; i < 24; i++) {
|
|
|
|
|
for(i = 0; i < DOCK_SIZE; i++) {
|
|
|
|
|
tmpPos = (pos + i + 1) % DOCK_SIZE;
|
|
|
|
|
p.drawPoint(i, DOCK_SIZE - 1 -
|
|
|
|
|
bufUpper[tmpPos] - bufLower[tmpPos]);
|
|
|
|
|
}
|
|
|
|
|
p.setPen(active ? colorLower : colorLowerInactive);
|
|
|
|
|
for(i = 0; i < 24; i++) {
|
|
|
|
|
for(i = 0; i < DOCK_SIZE; i++) {
|
|
|
|
|
tmpPos = (pos + i + 1) % DOCK_SIZE;
|
|
|
|
|
p.drawPoint(i, DOCK_SIZE - 1 - bufLower[tmpPos]);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
p.setPen(active ? colorUpper : colorUpperInactive);
|
|
|
|
|
for(i = 0; i < 24; i++) {
|
|
|
|
|
for(i = 0; i < DOCK_SIZE; i++) {
|
|
|
|
|
tmpPos = (pos + i + 1) % DOCK_SIZE;
|
|
|
|
|
p.drawPoint(i, DOCK_SIZE - 1 - bufUpper[tmpPos]);
|
|
|
|
|
}
|
|
|
|
@ -235,7 +261,7 @@ void StatDock::paintEvent(QPaintEvent*) {
|
|
|
|
|
|
|
|
|
|
// Finally label the diagrams.
|
|
|
|
|
if(labelled) {
|
|
|
|
|
p.setFont(QFont("Helvetica", 8));
|
|
|
|
|
p.setFont(QFont( "Helvetica", ((8*DOCK_SIZE)/24) ));
|
|
|
|
|
p.setPen((active) ? colorLabel : colorLabelInactive);
|
|
|
|
|
p.drawText(rect(), AlignLeft | AlignTop, label);
|
|
|
|
|
}
|
|
|
|
|