author | mickeyl <mickeyl> | 2003-11-03 22:29:08 (UTC) |
---|---|---|
committer | mickeyl <mickeyl> | 2003-11-03 22:29:08 (UTC) |
commit | 28812a7f2c5bd370a55824a73f6a0010f8ea9f7e (patch) (unidiff) | |
tree | 0f90e62371740645a631f06c01750b9c2bd7b381 /noncore/settings | |
parent | fd87de118d519108b99125f190f3aa6bd2a0b4cb (diff) | |
download | opie-28812a7f2c5bd370a55824a73f6a0010f8ea9f7e.zip opie-28812a7f2c5bd370a55824a73f6a0010f8ea9f7e.tar.gz opie-28812a7f2c5bd370a55824a73f6a0010f8ea9f7e.tar.bz2 |
show swap memory on Memory tab
-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 | |||
@@ -10,89 +10,132 @@ | |||
10 | ** | 10 | ** |
11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE | 11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE |
12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. | 12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. |
13 | ** | 13 | ** |
14 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. | 14 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. |
15 | ** | 15 | ** |
16 | ** Contact info@trolltech.com if any conditions of this licensing are | 16 | ** Contact info@trolltech.com if any conditions of this licensing are |
17 | ** not clear to you. | 17 | ** not clear to you. |
18 | ** | 18 | ** |
19 | **********************************************************************/ | 19 | **********************************************************************/ |
20 | 20 | ||
21 | #include <qlabel.h> | 21 | #include <qlabel.h> |
22 | #include <qtimer.h> | ||
22 | #include <qfile.h> | 23 | #include <qfile.h> |
23 | #include <qlayout.h> | ||
24 | #include <qtextstream.h> | 24 | #include <qtextstream.h> |
25 | #include <qtimer.h> | 25 | #include <qlayout.h> |
26 | #include <qwhatsthis.h> | 26 | #include <qwhatsthis.h> |
27 | |||
28 | #include "graph.h" | 27 | #include "graph.h" |
29 | #include "memory.h" | 28 | #include "memory.h" |
30 | 29 | ||
31 | MemoryInfo::MemoryInfo( QWidget *parent, const char *name, WFlags ) | 30 | MemoryInfo::MemoryInfo( QWidget *parent, const char *name, WFlags f ) |
32 | : QWidget( parent, name, WStyle_ContextHelp ) | 31 | : QWidget( parent, name, f ) |
33 | { | 32 | { |
34 | QVBoxLayout *vb = new QVBoxLayout( this, 5 ); | 33 | QVBoxLayout *vb = new QVBoxLayout( this, 5 ); |
35 | 34 | ||
36 | totalMem = new QLabel( this ); | 35 | totalMem = new QLabel( this ); |
37 | vb->addWidget( totalMem ); | 36 | vb->addWidget( totalMem ); |
38 | 37 | ||
39 | data = new GraphData(); | 38 | data = new GraphData(); |
40 | // graph = new PieGraph( this ); | ||
41 | graph = new BarGraph( this ); | 39 | graph = new BarGraph( this ); |
42 | graph->setFrameStyle( QFrame::Panel | QFrame::Sunken ); | 40 | graph->setFrameStyle( QFrame::Panel | QFrame::Sunken ); |
43 | vb->addWidget( graph, 1 ); | 41 | vb->addWidget( graph, 1 ); |
44 | graph->setData( data ); | 42 | graph->setData( data ); |
45 | 43 | ||
46 | legend = new GraphLegend( this ); | 44 | legend = new GraphLegend( this ); |
47 | vb->addWidget( legend ); | 45 | vb->addWidget( legend ); |
48 | legend->setData( data ); | 46 | legend->setData( data ); |
49 | 47 | ||
48 | swapMem = new QLabel( this ); | ||
49 | vb->addWidget( swapMem ); | ||
50 | |||
51 | swapdata = new GraphData(); | ||
52 | swapgraph = new BarGraph( this ); | ||
53 | swapgraph->setFrameStyle( QFrame::Panel | QFrame::Sunken ); | ||
54 | vb->addWidget( swapgraph, 1 ); | ||
55 | swapgraph->setData( swapdata ); | ||
56 | |||
57 | swaplegend = new GraphLegend( this ); | ||
58 | vb->addWidget( swaplegend ); | ||
59 | swaplegend->setData( swapdata ); | ||
60 | |||
50 | vb->addStretch( 1 ); | 61 | vb->addStretch( 1 ); |
51 | updateData(); | 62 | updateData(); |
52 | 63 | ||
53 | QTimer *t = new QTimer( this ); | 64 | QTimer *t = new QTimer( this ); |
54 | connect( t, SIGNAL( timeout() ), this, SLOT( updateData() ) ); | 65 | connect( t, SIGNAL( timeout() ), this, SLOT( updateData() ) ); |
55 | t->start( 5000 ); | 66 | t->start( 5000 ); |
56 | 67 | ||
57 | 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." ) ); | 68 | 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." ) ); |
69 | |||
58 | } | 70 | } |
59 | 71 | ||
60 | MemoryInfo::~MemoryInfo() | 72 | MemoryInfo::~MemoryInfo() |
61 | { | 73 | { |
62 | delete data; | 74 | delete data; |
63 | } | 75 | } |
64 | 76 | ||
65 | void MemoryInfo::updateData() | 77 | void MemoryInfo::updateData() |
66 | { | 78 | { |
67 | QFile file( "/proc/meminfo" ); | 79 | QFile file( "/proc/meminfo" ); |
68 | 80 | ||
69 | if ( file.open( IO_ReadOnly ) ) { | 81 | if ( file.open( IO_ReadOnly ) ) |
70 | QTextStream t( &file ); | 82 | { |
71 | QString dummy = t.readLine();// title | 83 | QTextStream t( &file ); |
72 | t >> dummy; | 84 | QString dummy = t.readLine(); // title |
73 | int total, used, memfree, shared, buffers, cached; | 85 | t >> dummy; |
74 | t >> total; | 86 | t >> total; |
75 | total /= 1000; | 87 | total /= 1000; |
76 | t >> used; | 88 | t >> used; |
77 | used /= 1000; | 89 | used /= 1000; |
78 | t >> memfree; | 90 | t >> memfree; |
79 | memfree /= 1000; | 91 | memfree /= 1000; |
80 | t >> shared; | 92 | t >> shared; |
81 | shared /= 1000; | 93 | shared /= 1000; |
82 | t >> buffers; | 94 | t >> buffers; |
83 | buffers /= 1000; | 95 | buffers /= 1000; |
84 | t >> cached; | 96 | t >> cached; |
85 | cached /= 1000; | 97 | cached /= 1000; |
86 | int realUsed = total - ( buffers + cached + memfree ); | 98 | realUsed = total - ( buffers + cached + memfree ); |
87 | data->clear(); | 99 | |
88 | data->addItem( tr("Used (%1 kB)").arg(realUsed), realUsed ); | 100 | totalMem->setText( tr( "Total Memory: %1 kB" ).arg( total ) ); |
89 | data->addItem( tr("Buffers (%1 kB)").arg(buffers), buffers ); | 101 | data->clear(); |
90 | data->addItem( tr("Cached (%1 kB)").arg(cached), cached ); | 102 | data->addItem( tr("Used (%1 kB)").arg(realUsed), realUsed ); |
91 | data->addItem( tr("Free (%1 kB)").arg(memfree), memfree ); | 103 | data->addItem( tr("Buffers (%1 kB)").arg(buffers), buffers ); |
92 | totalMem->setText( tr( "Total Memory: %1 kB" ).arg( total ) ); | 104 | data->addItem( tr("Cached (%1 kB)").arg(cached), cached ); |
93 | graph->repaint( FALSE ); | 105 | data->addItem( tr("Free (%1 kB)").arg(memfree), memfree ); |
94 | legend->update(); | 106 | |
95 | } | 107 | graph->hide(); |
96 | } | 108 | graph->show(); |
109 | legend->update(); | ||
97 | 110 | ||
111 | // swapfile | ||
112 | t >> dummy; | ||
113 | t >> swaptotal; | ||
114 | swaptotal /= 1000; | ||
115 | t >> swapused; | ||
116 | swapused /= 1000; | ||
117 | t >> swapfree; | ||
118 | swapfree /= 1000; | ||
98 | 119 | ||
120 | if (swaptotal > 0) | ||
121 | { | ||
122 | swapMem->setText( tr( "Total Swap: %1 kB" ).arg( swaptotal ) ); | ||
123 | swapdata->clear(); | ||
124 | swapdata->addItem( tr("Used (%1 kB)").arg(swapused), swapused ); | ||
125 | swapdata->addItem( tr("Free (%1 kB)").arg(swapfree), swapfree ); | ||
126 | |||
127 | swapMem->show(); | ||
128 | swapgraph->show(); | ||
129 | swaplegend->show(); | ||
130 | |||
131 | swapgraph->repaint( FALSE ); | ||
132 | swaplegend->update(); | ||
133 | } | ||
134 | else | ||
135 | { | ||
136 | swapMem->hide(); | ||
137 | swapgraph->hide(); | ||
138 | swaplegend->hide(); | ||
139 | } | ||
140 | } | ||
141 | } | ||
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 | |||
@@ -26,23 +26,39 @@ | |||
26 | class GraphData; | 26 | class GraphData; |
27 | class Graph; | 27 | class Graph; |
28 | class GraphLegend; | 28 | class GraphLegend; |
29 | class QLabel; | 29 | class QLabel; |
30 | 30 | ||
31 | class MemoryInfo : public QWidget | 31 | class MemoryInfo : public QWidget |
32 | { | 32 | { |
33 | Q_OBJECT | 33 | Q_OBJECT |
34 | public: | 34 | public: |
35 | MemoryInfo( QWidget *parent = 0, const char *name = 0, WFlags f = 0 ); | 35 | MemoryInfo( QWidget *parent = 0, const char *name = 0, WFlags f = 0 ); |
36 | ~MemoryInfo(); | 36 | ~MemoryInfo(); |
37 | 37 | ||
38 | unsigned long total; | ||
39 | unsigned long used; | ||
40 | unsigned long memfree; | ||
41 | unsigned long shared; | ||
42 | unsigned long buffers; | ||
43 | unsigned long cached; | ||
44 | unsigned long realUsed; | ||
45 | unsigned long swaptotal; | ||
46 | unsigned long swapused; | ||
47 | unsigned long swapfree; | ||
48 | |||
38 | private slots: | 49 | private slots: |
39 | void updateData(); | 50 | void updateData(); |
40 | 51 | ||
41 | private: | 52 | private: |
42 | QLabel *totalMem; | 53 | QLabel *totalMem; |
43 | GraphData *data; | 54 | GraphData *data; |
44 | Graph *graph; | 55 | Graph *graph; |
45 | GraphLegend *legend; | 56 | GraphLegend *legend; |
57 | |||
58 | QLabel* swapMem; | ||
59 | GraphData *swapdata; | ||
60 | Graph *swapgraph; | ||
61 | GraphLegend *swaplegend; | ||
46 | }; | 62 | }; |
47 | 63 | ||
48 | #endif | 64 | #endif |