-rw-r--r-- | noncore/settings/sysinfo/memory.cpp | 115 | ||||
-rw-r--r-- | noncore/settings/sysinfo/memory.h | 16 |
2 files changed, 95 insertions, 36 deletions
diff --git a/noncore/settings/sysinfo/memory.cpp b/noncore/settings/sysinfo/memory.cpp index 4f612d8..23dd8bd 100644 --- a/noncore/settings/sysinfo/memory.cpp +++ b/noncore/settings/sysinfo/memory.cpp @@ -14,85 +14,128 @@ ** See http://www.trolltech.com/gpl/ for GPL licensing information. ** ** Contact info@trolltech.com if any conditions of this licensing are ** not clear to you. ** **********************************************************************/ #include <qlabel.h> +#include <qtimer.h> #include <qfile.h> -#include <qlayout.h> #include <qtextstream.h> -#include <qtimer.h> +#include <qlayout.h> #include <qwhatsthis.h> - #include "graph.h" #include "memory.h" -MemoryInfo::MemoryInfo( QWidget *parent, const char *name, WFlags ) - : QWidget( parent, name, WStyle_ContextHelp ) +MemoryInfo::MemoryInfo( QWidget *parent, const char *name, WFlags f ) + : QWidget( parent, name, f ) { QVBoxLayout *vb = new QVBoxLayout( this, 5 ); totalMem = new QLabel( this ); vb->addWidget( totalMem ); data = new GraphData(); -// graph = new PieGraph( this ); graph = new BarGraph( this ); graph->setFrameStyle( QFrame::Panel | QFrame::Sunken ); vb->addWidget( graph, 1 ); graph->setData( data ); legend = new GraphLegend( this ); vb->addWidget( legend ); legend->setData( data ); + swapMem = new QLabel( this ); + vb->addWidget( swapMem ); + + swapdata = new GraphData(); + swapgraph = new BarGraph( this ); + swapgraph->setFrameStyle( QFrame::Panel | QFrame::Sunken ); + vb->addWidget( swapgraph, 1 ); + swapgraph->setData( swapdata ); + + swaplegend = new GraphLegend( this ); + vb->addWidget( swaplegend ); + swaplegend->setData( swapdata ); + vb->addStretch( 1 ); updateData(); QTimer *t = new QTimer( this ); connect( t, SIGNAL( timeout() ), this, SLOT( updateData() ) ); t->start( 5000 ); - - QWhatsThis::add( this, tr( "This page shows how memory (i.e. RAM) is being allocated on your handheld device.\nMemory is categorized as follows:\n\n1. Used - memory used to by Opie and any running applications.\n2. Buffers - temporary storage used to improve performance\n3. Cached - information that has recently been used, but has not been freed yet.\n4. Free - memory not currently used by Opie or any running applications." ) ); + + QWhatsThis::add( this, tr( "This page shows how memory (i.e. RAM) is being allocated on your device.\nMemory is categorized as follows:\n\n1. Used - memory used to by Opie and any running applications.\n2. Buffers - temporary storage used to improve performance\n3. Cached - information that has recently been used, but has not been freed yet.\n4. Free - memory not currently used by Opie or any running applications." ) ); + } MemoryInfo::~MemoryInfo() { delete data; } void MemoryInfo::updateData() { QFile file( "/proc/meminfo" ); - if ( file.open( IO_ReadOnly ) ) { - QTextStream t( &file ); - QString dummy = t.readLine(); // title - t >> dummy; - int total, used, memfree, shared, buffers, cached; - t >> total; - total /= 1000; - t >> used; - used /= 1000; - t >> memfree; - memfree /= 1000; - t >> shared; - shared /= 1000; - t >> buffers; - buffers /= 1000; - t >> cached; - cached /= 1000; - int realUsed = total - ( buffers + cached + memfree ); - 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 ); - totalMem->setText( tr( "Total Memory: %1 kB" ).arg( total ) ); - graph->repaint( FALSE ); - legend->update(); - } -} + if ( file.open( IO_ReadOnly ) ) + { + 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; + realUsed = total - ( buffers + cached + memfree ); + + 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(); + swapgraph->show(); + swaplegend->show(); + + swapgraph->repaint( FALSE ); + swaplegend->update(); + } + else + { + swapMem->hide(); + swapgraph->hide(); + swaplegend->hide(); + } + } +} diff --git a/noncore/settings/sysinfo/memory.h b/noncore/settings/sysinfo/memory.h index 696f97c..c2af948 100644 --- a/noncore/settings/sysinfo/memory.h +++ b/noncore/settings/sysinfo/memory.h @@ -30,19 +30,35 @@ class QLabel; 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: void updateData(); private: QLabel *totalMem; GraphData *data; Graph *graph; GraphLegend *legend; + + QLabel* swapMem; + GraphData *swapdata; + Graph *swapgraph; + GraphLegend *swaplegend; }; #endif |