summaryrefslogtreecommitdiffstats
path: root/src/rampanel.cpp
blob: b927ffb12fd812bba094d64d3f123478912b57e3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
/***************************************************************************
                          rampanel.cpp  -  description
                             -------------------
    begin                : Fri Jan 11 2002
    copyright            : (C) 2002 by Miguel Novas
    email                : michaell@teleline.es
 ***************************************************************************/

/***************************************************************************
 *                                                                         *
 *   This program 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 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 ***************************************************************************/

#include "rampanel.h"

#include "procinfo.h"

RamPanel::RamPanel(QWidget *parent, const char *name, RamType type): Panel(parent,name)
{
 ramType= type;
 memTotal= -1;
 memUsed = -1;

 arc = new QDialArc(this);
 arc->installEventFilter(this);
 arc->setAngles(180,-180);
 arc->setGeometry( 6 , 64/4+9, 64-10, 64/2-8);
 arc->setColorRanges(red,red,QColor(0,200,150)); // QColor(0,200,0));

 lcd1= new QLCDString(this);
 lcd1->setGeometry(6, 8,54,11);
 lcd1->setShadow(true);
 lcd1->setForeColor(getColorValue());
 lcd1->setAlign(QLCDString::alignCenter);
 lcd1->installEventFilter(this);

 lcd2= new QLCDString(this);
 lcd2->setGeometry(4, 52,58,8);
 lcd2->setForeColor(getColorTitle());
 lcd2->setAlign(QLCDString::alignCenter);
 lcd2->installEventFilter(this);

 updateInfo();
}

RamPanel::~RamPanel(){
}


void RamPanel::updateInfo()
{
 int newMemTotal,newMemUsed,newSwapTotal,newSwapUsed;

 getMemInfo(&newMemTotal,&newMemUsed,&newSwapTotal,&newSwapUsed);

 if(ramType==memSWAP) {
    newMemTotal= newSwapTotal;
    newMemUsed = newSwapUsed;
 }

 newMemUsed /=1024;
 newMemTotal/=1024;

 if(memTotal!=newMemTotal) {
    arc->setValueRanges(0,newMemTotal);
    QString str;
    str.sprintf ( ramType==memSWAP ? "SWP %dM" : "RAM %dM", newMemTotal);
    lcd2->display(str);
    memTotal= newMemTotal;
 }

 if(memUsed!=newMemUsed)  {
    QString str;
    str.sprintf ("%dM" , newMemUsed );
    lcd1->display(str);
    arc->setValue(newMemUsed);
    arc->setValueLimitRanges(newMemUsed,newMemUsed);
    memUsed = newMemUsed;
 }

}


void RamPanel::paletteChange(const QPalette &oldPalette)
{
 lcd2->setForeColor(getColorTitle());
 lcd1->setForeColor(getColorValue());
 arc->setArrowColor(getColorValue());
}

void RamPanel::resizeEvent ( QResizeEvent *e )
{
 int w= width();
 int h= height();

 int i1= (h * 2) / 5;
 int i2= (h * 4) / 5;

 lcd1->setGeometry( 3 , h/8 , w -4  , h/4-h/16);
 arc ->setGeometry( 3 , i1  , w -6 , i2-i1-2  );
 lcd2->setGeometry( 3 , i2+1, w -6 , h-i2-h/11);
}