summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/settings/sysinfo/memory.cpp70
-rw-r--r--noncore/settings/sysinfo/memory.h1
2 files changed, 47 insertions, 24 deletions
diff --git a/noncore/settings/sysinfo/memory.cpp b/noncore/settings/sysinfo/memory.cpp
index 23dd8bd..05349e4 100644
--- a/noncore/settings/sysinfo/memory.cpp
+++ b/noncore/settings/sysinfo/memory.cpp
@@ -75,53 +75,77 @@ MemoryInfo::~MemoryInfo()
}
void MemoryInfo::updateData()
{
QFile file( "/proc/meminfo" );
if ( file.open( IO_ReadOnly ) )
{
+ // local variables
+ QString line;
+ QString identifier;
+ QString value;
+ int position;
QTextStream t( &file );
- QString dummy = t.readLine(); // title
- t >> dummy;
- t >> total;
- total /= 1000;
- t >> used;
- used /= 1000;
- t >> memfree;
- memfree /= 1000;
- t >> shared;
- shared /= 1000;
- t >> buffers;
- buffers /= 1000;
- t >> cached;
- cached /= 1000;
+
+ while ( !t.atEnd() )
+ {
+ // read a line
+ line = t.readLine();
+
+ // extract identifier and value from line
+ position = line.find( ":" );
+ identifier = line.left( position );
+ value = line.mid( position + 1, line.length() - position - 3 );
+ value = value.stripWhiteSpace();
+
+ // copy values in variables
+ if ( identifier == "MemTotal" )
+ {
+ total = value.toULong();
+ } else if ( identifier == "MemFree" )
+ {
+ memfree = value.toULong();
+ } else if ( identifier == "Buffers" )
+ {
+ buffers = value.toULong();
+ } else if ( identifier == "Cached" )
+ {
+ cached = value.toULong();
+ } else if ( identifier == "SwapCached" )
+ {
+ } else if ( identifier == "SwapTotal" )
+ {
+ swaptotal = value.toULong();
+ } else if ( identifier == "SwapFree" )
+ {
+ swapfree = value.toULong();
+ }
+ }
+
+ file.close();
+
+ // calculate values
+ used = total - memfree;
+ swapused = swaptotal - swapfree;
realUsed = total - ( buffers + cached + memfree );
+ // visualize values
totalMem->setText( tr( "Total Memory: %1 kB" ).arg( total ) );
data->clear();
data->addItem( tr("Used (%1 kB)").arg(realUsed), realUsed );
data->addItem( tr("Buffers (%1 kB)").arg(buffers), buffers );
data->addItem( tr("Cached (%1 kB)").arg(cached), cached );
data->addItem( tr("Free (%1 kB)").arg(memfree), memfree );
graph->hide();
graph->show();
legend->update();
- // swapfile
- t >> dummy;
- t >> swaptotal;
- swaptotal /= 1000;
- t >> swapused;
- swapused /= 1000;
- t >> swapfree;
- swapfree /= 1000;
-
if (swaptotal > 0)
{
swapMem->setText( tr( "Total Swap: %1 kB" ).arg( swaptotal ) );
swapdata->clear();
swapdata->addItem( tr("Used (%1 kB)").arg(swapused), swapused );
swapdata->addItem( tr("Free (%1 kB)").arg(swapfree), swapfree );
swapMem->show();
diff --git a/noncore/settings/sysinfo/memory.h b/noncore/settings/sysinfo/memory.h
index c2af948..f655604 100644
--- a/noncore/settings/sysinfo/memory.h
+++ b/noncore/settings/sysinfo/memory.h
@@ -33,17 +33,16 @@ class MemoryInfo : public QWidget
Q_OBJECT
public:
MemoryInfo( QWidget *parent = 0, const char *name = 0, WFlags f = 0 );
~MemoryInfo();
unsigned long total;
unsigned long used;
unsigned long memfree;
- unsigned long shared;
unsigned long buffers;
unsigned long cached;
unsigned long realUsed;
unsigned long swaptotal;
unsigned long swapused;
unsigned long swapfree;
private slots: