-rw-r--r-- | noncore/settings/sysinfo/benchmarkinfo.cpp | 53 | ||||
-rw-r--r-- | noncore/settings/sysinfo/benchmarkinfo.h | 22 | ||||
-rw-r--r-- | noncore/settings/sysinfo/detail.cpp | 4 | ||||
-rw-r--r-- | noncore/settings/sysinfo/detail.h | 6 | ||||
-rw-r--r-- | noncore/settings/sysinfo/modulesinfo.cpp | 22 | ||||
-rw-r--r-- | noncore/settings/sysinfo/modulesinfo.h | 8 | ||||
-rw-r--r-- | noncore/settings/sysinfo/processinfo.cpp | 24 | ||||
-rw-r--r-- | noncore/settings/sysinfo/processinfo.h | 11 | ||||
-rw-r--r-- | noncore/settings/sysinfo/versioninfo.cpp | 9 |
9 files changed, 84 insertions, 75 deletions
diff --git a/noncore/settings/sysinfo/benchmarkinfo.cpp b/noncore/settings/sysinfo/benchmarkinfo.cpp index 2c68fd5..3c2c15f 100644 --- a/noncore/settings/sysinfo/benchmarkinfo.cpp +++ b/noncore/settings/sysinfo/benchmarkinfo.cpp | |||
@@ -1,472 +1,477 @@ | |||
1 | /********************************************************************** | 1 | /********************************************************************** |
2 | ** BenchmarkInfo | 2 | ** BenchmarkInfo |
3 | ** | 3 | ** |
4 | ** A benchmark for Qt/Embedded | 4 | ** A benchmark for Qt/Embedded |
5 | ** | 5 | ** |
6 | ** Copyright (C) 2004 Michael Lauer <mickey@vanille.de> | 6 | ** Copyright (C) 2004 Michael Lauer <mickey@vanille.de> |
7 | ** Inspired by ZBench (C) 2002 Satoshi <af230533@im07.alpha-net.ne.jp> | 7 | ** Inspired by ZBench (C) 2002 Satoshi <af230533@im07.alpha-net.ne.jp> |
8 | ** | 8 | ** |
9 | ** This file may be distributed and/or modified under the terms of the | 9 | ** This file may be distributed and/or modified under the terms of the |
10 | ** GNU General Public License version 2 as published by the Free Software | 10 | ** GNU General Public License version 2 as published by the Free Software |
11 | ** Foundation and appearing in the file LICENSE.GPL included in the | 11 | ** Foundation and appearing in the file LICENSE.GPL included in the |
12 | ** packaging of this file. | 12 | ** packaging of this file. |
13 | ** | 13 | ** |
14 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE | 14 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE |
15 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. | 15 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. |
16 | ** | 16 | ** |
17 | **********************************************************************/ | 17 | **********************************************************************/ |
18 | 18 | ||
19 | #include "benchmarkinfo.h" | ||
20 | |||
19 | /* OPIE */ | 21 | /* OPIE */ |
20 | #include <opie2/ostorageinfo.h> | 22 | #include <opie2/ostorageinfo.h> |
23 | #include <opie2/olistview.h> | ||
21 | #include <qpe/qpeapplication.h> | 24 | #include <qpe/qpeapplication.h> |
22 | #include <qpe/qcopenvelope_qws.h> | 25 | #include <qpe/qcopenvelope_qws.h> |
23 | #include <qpe/qpedecoration_qws.h> | 26 | #include <qpe/qpedecoration_qws.h> |
24 | #include <qpe/resource.h> | 27 | #include <qpe/resource.h> |
25 | #include <qpe/config.h> | 28 | #include <qpe/config.h> |
26 | 29 | ||
27 | /* QT */ | 30 | /* QT */ |
28 | #include <qclipboard.h> | 31 | #include <qclipboard.h> |
29 | #include <qcolor.h> | 32 | #include <qcolor.h> |
30 | #include <qcombobox.h> | 33 | #include <qcombobox.h> |
31 | #include <qdirectpainter_qws.h> | 34 | #include <qdirectpainter_qws.h> |
32 | #include <qfile.h> | 35 | #include <qfile.h> |
33 | #include <qtextstream.h> | 36 | #include <qtextstream.h> |
34 | #include <qfiledialog.h> | 37 | #include <qfiledialog.h> |
35 | #include <qlabel.h> | 38 | #include <qlabel.h> |
36 | #include <qlayout.h> | 39 | #include <qlayout.h> |
37 | #include <qpainter.h> | 40 | #include <qpainter.h> |
38 | #include <qpushbutton.h> | 41 | #include <qpushbutton.h> |
39 | #include <qtimer.h> | 42 | #include <qtimer.h> |
43 | #include <qwhatsthis.h> | ||
40 | 44 | ||
41 | /* STD */ | 45 | /* STD */ |
42 | #include <time.h> | 46 | #include <time.h> |
43 | #include <stdio.h> | 47 | #include <stdio.h> |
44 | #include <stdlib.h> | 48 | #include <stdlib.h> |
45 | #include <math.h> | 49 | #include <math.h> |
46 | #if defined (__GNUC__) && (__GNUC__ < 3) | 50 | #if defined (__GNUC__) && (__GNUC__ < 3) |
47 | extern double round(double); | 51 | extern double round(double); |
48 | #endif | 52 | #endif |
49 | 53 | ||
50 | |||
51 | #include "benchmarkinfo.h" | ||
52 | |||
53 | extern "C" | 54 | extern "C" |
54 | { | 55 | { |
55 | void BenchFFT( void ); | 56 | void BenchFFT( void ); |
56 | double dhry_main( int ); | 57 | double dhry_main( int ); |
57 | } | 58 | } |
58 | 59 | ||
59 | #define DHRYSTONE_RUNS 20000000 | 60 | #define DHRYSTONE_RUNS 20000000 |
60 | #define TEST_DURATION 3 | 61 | #define TEST_DURATION 3 |
61 | 62 | ||
62 | #define BUFF_SIZE 8192 | 63 | #define BUFF_SIZE 8192 |
63 | #define FILE_SIZE 1024 * 1024 // 1Mb | 64 | #define FILE_SIZE 1024 * 1024 // 1Mb |
64 | 65 | ||
65 | //=========================================================================== | 66 | //=========================================================================== |
66 | 67 | ||
67 | class BenchmarkPaintWidget : public QWidget | 68 | class BenchmarkPaintWidget : public QWidget |
68 | { | 69 | { |
69 | public: | 70 | public: |
70 | BenchmarkPaintWidget() : QWidget( 0, "Benchmark Paint Widget", WStyle_Customize|WStyle_StaysOnTop|WPaintUnclipped|WPaintClever ) | 71 | BenchmarkPaintWidget() : QWidget( 0, "Benchmark Paint Widget", WStyle_Customize|WStyle_StaysOnTop|WPaintUnclipped|WPaintClever ) |
71 | { | 72 | { |
72 | resize( QApplication::desktop()->size() ); | 73 | resize( QApplication::desktop()->size() ); |
73 | show(); | 74 | show(); |
74 | p.begin( this ); | 75 | p.begin( this ); |
75 | }; | 76 | }; |
76 | 77 | ||
77 | ~BenchmarkPaintWidget() | 78 | ~BenchmarkPaintWidget() |
78 | { | 79 | { |
79 | p.end(); | 80 | p.end(); |
80 | hide(); | 81 | hide(); |
81 | }; | 82 | }; |
82 | 83 | ||
83 | QPainter p; | 84 | QPainter p; |
84 | }; | 85 | }; |
85 | 86 | ||
86 | //=========================================================================== | 87 | //=========================================================================== |
87 | 88 | ||
88 | BenchmarkInfo::BenchmarkInfo( QWidget *parent, const char *name, int wFlags ) | 89 | BenchmarkInfo::BenchmarkInfo( QWidget *parent, const char *name, int wFlags ) |
89 | : QWidget( parent, name, wFlags ) | 90 | : QWidget( parent, name, wFlags ) |
90 | { | 91 | { |
91 | 92 | ||
92 | setMinimumSize( 200, 150 ); | 93 | setMinimumSize( 200, 150 ); |
93 | 94 | ||
94 | QVBoxLayout* vb = new QVBoxLayout( this ); | 95 | QVBoxLayout* vb = new QVBoxLayout( this ); |
95 | vb->setSpacing( 4 ); | 96 | vb->setSpacing( 4 ); |
96 | vb->setMargin( 4 ); | 97 | vb->setMargin( 4 ); |
97 | 98 | ||
98 | tests = new QListView( this ); | 99 | tests = new OListView( this ); |
100 | QWhatsThis::add( tests->viewport(), tr( "This area shows the available tests, the results for which the tests " | ||
101 | "have been performed, and comparison values for one selected device. " | ||
102 | "Use the checkboxes to define which tests you want to perform." ) ); | ||
99 | tests->setMargin( 0 ); | 103 | tests->setMargin( 0 ); |
100 | tests->addColumn( tr( "Tests" ) ); | 104 | tests->addColumn( tr( "Tests" ) ); |
101 | tests->addColumn( tr( "Results" ) ); | 105 | tests->addColumn( tr( "Results" ) ); |
102 | tests->addColumn( tr( "Comparison" ) ); | 106 | tests->addColumn( tr( "Comparison" ) ); |
103 | tests->setShowSortIndicator( true ); | 107 | tests->setShowSortIndicator( true ); |
104 | 108 | ||
105 | test_alu = new QCheckListItem( tests, tr( "1. Integer Arithmetic " ), QCheckListItem::CheckBox ); | 109 | test_alu = new OCheckListItem( tests, tr( "1. Integer Arithmetic " ), OCheckListItem::CheckBox ); |
106 | test_fpu = new QCheckListItem( tests, tr( "2. Floating Point Unit " ), QCheckListItem::CheckBox ); | 110 | test_fpu = new OCheckListItem( tests, tr( "2. Floating Point Unit " ), OCheckListItem::CheckBox ); |
107 | test_txt = new QCheckListItem( tests, tr( "3. Text Rendering " ), QCheckListItem::CheckBox ); | 111 | test_txt = new OCheckListItem( tests, tr( "3. Text Rendering " ), OCheckListItem::CheckBox ); |
108 | test_gfx = new QCheckListItem( tests, tr( "4. Gfx Rendering " ), QCheckListItem::CheckBox ); | 112 | test_gfx = new OCheckListItem( tests, tr( "4. Gfx Rendering " ), OCheckListItem::CheckBox ); |
109 | test_ram = new QCheckListItem( tests, tr( "5. RAM Performance " ), QCheckListItem::CheckBox ); | 113 | test_ram = new OCheckListItem( tests, tr( "5. RAM Performance " ), OCheckListItem::CheckBox ); |
110 | test_sd = new QCheckListItem( tests, tr( "6. SD Card Performance " ), QCheckListItem::CheckBox ); | 114 | test_sd = new OCheckListItem( tests, tr( "6. SD Card Performance " ), OCheckListItem::CheckBox ); |
111 | test_cf = new QCheckListItem( tests, tr( "7. CF Card Performance " ), QCheckListItem::CheckBox ); | 115 | test_cf = new OCheckListItem( tests, tr( "7. CF Card Performance " ), OCheckListItem::CheckBox ); |
112 | 116 | ||
113 | test_alu->setText( 1, "n/a" ); | 117 | test_alu->setText( 1, "n/a" ); |
114 | test_fpu->setText( 1, "n/a" ); | 118 | test_fpu->setText( 1, "n/a" ); |
115 | test_txt->setText( 1, "n/a" ); | 119 | test_txt->setText( 1, "n/a" ); |
116 | test_gfx->setText( 1, "n/a" ); | 120 | test_gfx->setText( 1, "n/a" ); |
117 | test_ram->setText( 1, "n/a" ); | 121 | test_ram->setText( 1, "n/a" ); |
118 | test_sd->setText( 1, "n/a" ); | 122 | test_sd->setText( 1, "n/a" ); |
119 | test_cf->setText( 1, "n/a" ); | 123 | test_cf->setText( 1, "n/a" ); |
120 | 124 | ||
121 | test_alu->setText( 2, "n/a" ); | 125 | test_alu->setText( 2, "n/a" ); |
122 | test_fpu->setText( 2, "n/a" ); | 126 | test_fpu->setText( 2, "n/a" ); |
123 | test_txt->setText( 2, "n/a" ); | 127 | test_txt->setText( 2, "n/a" ); |
124 | test_gfx->setText( 2, "n/a" ); | 128 | test_gfx->setText( 2, "n/a" ); |
125 | test_ram->setText( 2, "n/a" ); | 129 | test_ram->setText( 2, "n/a" ); |
126 | test_sd->setText( 2, "n/a" ); | 130 | test_sd->setText( 2, "n/a" ); |
127 | test_cf->setText( 2, "n/a" ); | 131 | test_cf->setText( 2, "n/a" ); |
128 | 132 | ||
129 | startButton = new QPushButton( tr( "&Start Tests!" ), this ); | 133 | startButton = new QPushButton( tr( "&Start Tests!" ), this ); |
134 | QWhatsThis::add( startButton, tr( "Click here to perform the selected tests." ) ); | ||
130 | connect( startButton, SIGNAL( clicked() ), this, SLOT( run() ) ); | 135 | connect( startButton, SIGNAL( clicked() ), this, SLOT( run() ) ); |
131 | |||
132 | vb->addWidget( tests, 2 ); | 136 | vb->addWidget( tests, 2 ); |
133 | 137 | ||
134 | QFile f( QPEApplication::qpeDir() + "/share/sysinfo/results" ); | 138 | QFile f( QPEApplication::qpeDir() + "/share/sysinfo/results" ); |
135 | if ( f.open( IO_ReadOnly ) ) | 139 | if ( f.open( IO_ReadOnly ) ) |
136 | { | 140 | { |
137 | machineCombo = new QComboBox( this ); | 141 | machineCombo = new QComboBox( this ); |
138 | 142 | QWhatsThis::add( machineCombo, tr( "Choose a model to compare your results with." ) ); | |
143 | |||
139 | QTextStream ts( &f ); | 144 | QTextStream ts( &f ); |
140 | while( !ts.eof() ) | 145 | while( !ts.eof() ) |
141 | { | 146 | { |
142 | QString machline = ts.readLine(); | 147 | QString machline = ts.readLine(); |
143 | qDebug( "sysinfo: parsing benchmark results for '%s'", (const char*) machline ); | 148 | qDebug( "sysinfo: parsing benchmark results for '%s'", (const char*) machline ); |
144 | QString resline = ts.readLine(); | 149 | QString resline = ts.readLine(); |
145 | machines.insert( machline, new QStringList( QStringList::split( ",", resline ) ) ); | 150 | machines.insert( machline, new QStringList( QStringList::split( ",", resline ) ) ); |
146 | machineCombo->insertItem( machline ); | 151 | machineCombo->insertItem( machline ); |
147 | } | 152 | } |
148 | 153 | ||
149 | QHBoxLayout* hb = new QHBoxLayout( vb ); | 154 | QHBoxLayout* hb = new QHBoxLayout( vb ); |
150 | hb->addWidget( new QLabel( tr( "Compare To:" ), this ) ); | 155 | hb->addWidget( new QLabel( tr( "Compare To:" ), this ) ); |
151 | hb->addWidget( machineCombo, 2 ); | 156 | hb->addWidget( machineCombo, 2 ); |
152 | connect( machineCombo, SIGNAL( activated(int) ), this, SLOT( machineActivated(int) ) ); | 157 | connect( machineCombo, SIGNAL( activated(int) ), this, SLOT( machineActivated(int) ) ); |
153 | } | 158 | } |
154 | 159 | ||
155 | vb->addWidget( startButton, 2 ); | 160 | vb->addWidget( startButton, 2 ); |
156 | } | 161 | } |
157 | 162 | ||
158 | 163 | ||
159 | BenchmarkInfo::~BenchmarkInfo() | 164 | BenchmarkInfo::~BenchmarkInfo() |
160 | {} | 165 | {} |
161 | 166 | ||
162 | 167 | ||
163 | void BenchmarkInfo::machineActivated( int index ) | 168 | void BenchmarkInfo::machineActivated( int index ) |
164 | { | 169 | { |
165 | QStringList* results = machines[ machineCombo->text( index ) ]; | 170 | QStringList* results = machines[ machineCombo->text( index ) ]; |
166 | if ( !results ) | 171 | if ( !results ) |
167 | { | 172 | { |
168 | qDebug( "sysinfo: no results available." ); | 173 | qDebug( "sysinfo: no results available." ); |
169 | return; | 174 | return; |
170 | } | 175 | } |
171 | QStringList::Iterator it = results->begin(); | 176 | QStringList::Iterator it = results->begin(); |
172 | test_alu->setText( 2, *(it++) ); | 177 | test_alu->setText( 2, *(it++) ); |
173 | test_fpu->setText( 2, *(it++) ); | 178 | test_fpu->setText( 2, *(it++) ); |
174 | test_txt->setText( 2, *(it++) ); | 179 | test_txt->setText( 2, *(it++) ); |
175 | test_gfx->setText( 2, *(it++) ); | 180 | test_gfx->setText( 2, *(it++) ); |
176 | test_ram->setText( 2, *(it++) ); | 181 | test_ram->setText( 2, *(it++) ); |
177 | test_sd->setText( 2, *(it++) ); | 182 | test_sd->setText( 2, *(it++) ); |
178 | test_cf->setText( 2, *(it++) ); | 183 | test_cf->setText( 2, *(it++) ); |
179 | } | 184 | } |
180 | 185 | ||
181 | 186 | ||
182 | void BenchmarkInfo::run() | 187 | void BenchmarkInfo::run() |
183 | { | 188 | { |
184 | startButton->setText( "> Don't touch! Running Tests! Don't touch! <" ); | 189 | startButton->setText( "> Don't touch! Running Tests! Don't touch! <" ); |
185 | qApp->processEvents(); | 190 | qApp->processEvents(); |
186 | QTime t; | 191 | QTime t; |
187 | 192 | ||
188 | if ( test_alu->isOn() ) | 193 | if ( test_alu->isOn() ) |
189 | { | 194 | { |
190 | int d = round( dhry_main( DHRYSTONE_RUNS ) ); | 195 | int d = round( dhry_main( DHRYSTONE_RUNS ) ); |
191 | test_alu->setText( 1, QString( "%1 dhrys" ).arg( QString::number( d ) ) ); | 196 | test_alu->setText( 1, QString( "%1 dhrys" ).arg( QString::number( d ) ) ); |
192 | test_alu->setOn( false ); | 197 | test_alu->setOn( false ); |
193 | } | 198 | } |
194 | 199 | ||
195 | if ( test_fpu->isOn() ) | 200 | if ( test_fpu->isOn() ) |
196 | { | 201 | { |
197 | t.start(); | 202 | t.start(); |
198 | BenchFFT(); | 203 | BenchFFT(); |
199 | test_fpu->setText( 1, QString( "%1 secs" ).arg( QString::number( t.elapsed() / 1000.0 ) ) ); | 204 | test_fpu->setText( 1, QString( "%1 secs" ).arg( QString::number( t.elapsed() / 1000.0 ) ) ); |
200 | test_fpu->setOn( false ); | 205 | test_fpu->setOn( false ); |
201 | } | 206 | } |
202 | 207 | ||
203 | if ( test_txt->isOn() ) | 208 | if ( test_txt->isOn() ) |
204 | { | 209 | { |
205 | int value = textRendering( TEST_DURATION ); | 210 | int value = textRendering( TEST_DURATION ); |
206 | test_txt->setText( 1, QString( "%1 chars/sec" ).arg( QString::number( value / TEST_DURATION ) ) ); | 211 | test_txt->setText( 1, QString( "%1 chars/sec" ).arg( QString::number( value / TEST_DURATION ) ) ); |
207 | test_txt->setOn( false ); | 212 | test_txt->setOn( false ); |
208 | } | 213 | } |
209 | 214 | ||
210 | if ( test_gfx->isOn() ) | 215 | if ( test_gfx->isOn() ) |
211 | { | 216 | { |
212 | int value = gfxRendering( TEST_DURATION ); | 217 | int value = gfxRendering( TEST_DURATION ); |
213 | test_gfx->setText( 1, QString( "%1 gops/sec" ).arg( QString::number( value / 4 / TEST_DURATION ) ) ); // 4 tests | 218 | test_gfx->setText( 1, QString( "%1 gops/sec" ).arg( QString::number( value / 4 / TEST_DURATION ) ) ); // 4 tests |
214 | test_gfx->setOn( false ); | 219 | test_gfx->setOn( false ); |
215 | } | 220 | } |
216 | 221 | ||
217 | if ( test_ram->isOn() ) // /tmp is supposed to be in RAM on a PDA | 222 | if ( test_ram->isOn() ) // /tmp is supposed to be in RAM on a PDA |
218 | { | 223 | { |
219 | performFileTest( "/tmp/benchmarkFile.dat", test_ram ); | 224 | performFileTest( "/tmp/benchmarkFile.dat", test_ram ); |
220 | } | 225 | } |
221 | 226 | ||
222 | if ( test_cf->isOn() ) | 227 | if ( test_cf->isOn() ) |
223 | { | 228 | { |
224 | OStorageInfo storage; | 229 | OStorageInfo storage; |
225 | performFileTest( storage.cfPath() + "/benchmarkFile.dat", test_cf ); | 230 | performFileTest( storage.cfPath() + "/benchmarkFile.dat", test_cf ); |
226 | } | 231 | } |
227 | 232 | ||
228 | if ( test_sd->isOn() ) | 233 | if ( test_sd->isOn() ) |
229 | { | 234 | { |
230 | OStorageInfo storage; | 235 | OStorageInfo storage; |
231 | performFileTest( storage.sdPath() + "/benchmarkFile.dat", test_sd ); | 236 | performFileTest( storage.sdPath() + "/benchmarkFile.dat", test_sd ); |
232 | } | 237 | } |
233 | 238 | ||
234 | startButton->setText( tr( "&Start Tests!" ) ); | 239 | startButton->setText( tr( "&Start Tests!" ) ); |
235 | } | 240 | } |
236 | 241 | ||
237 | 242 | ||
238 | int BenchmarkInfo::textRendering( int seconds ) | 243 | int BenchmarkInfo::textRendering( int seconds ) |
239 | { | 244 | { |
240 | QTime t; | 245 | QTime t; |
241 | t.start(); | 246 | t.start(); |
242 | int stop = t.elapsed() + seconds * 1000; | 247 | int stop = t.elapsed() + seconds * 1000; |
243 | 248 | ||
244 | int rr[] = { 255, 255, 255, 0, 0, 0, 0, 128, 128 }; | 249 | int rr[] = { 255, 255, 255, 0, 0, 0, 0, 128, 128 }; |
245 | int gg[] = { 0, 255, 0, 0, 255, 255, 0, 128, 128 }; | 250 | int gg[] = { 0, 255, 0, 0, 255, 255, 0, 128, 128 }; |
246 | int bb[] = { 0, 0, 255, 0, 0, 255, 255, 128, 0 }; | 251 | int bb[] = { 0, 0, 255, 0, 0, 255, 255, 128, 0 }; |
247 | const QString text( "Opie Benchmark Test" ); | 252 | const QString text( "Opie Benchmark Test" ); |
248 | 253 | ||
249 | int w = QApplication::desktop()->width(); | 254 | int w = QApplication::desktop()->width(); |
250 | int h = QApplication::desktop()->height(); | 255 | int h = QApplication::desktop()->height(); |
251 | 256 | ||
252 | srand( time( NULL ) ); | 257 | srand( time( NULL ) ); |
253 | 258 | ||
254 | BenchmarkPaintWidget bpw; | 259 | BenchmarkPaintWidget bpw; |
255 | 260 | ||
256 | int loops = 0; | 261 | int loops = 0; |
257 | 262 | ||
258 | while ( t.elapsed() < stop ) | 263 | while ( t.elapsed() < stop ) |
259 | { | 264 | { |
260 | int k = rand() % 9; | 265 | int k = rand() % 9; |
261 | int s = rand() % 100; | 266 | int s = rand() % 100; |
262 | bpw.p.setPen( QColor( rr[ k ], gg[ k ], bb[ k ] ) ); | 267 | bpw.p.setPen( QColor( rr[ k ], gg[ k ], bb[ k ] ) ); |
263 | bpw.p.setFont( QFont( "Vera", s ) ); | 268 | bpw.p.setFont( QFont( "Vera", s ) ); |
264 | bpw.p.drawText( rand() % w, rand() % h, text, text.length() ); | 269 | bpw.p.drawText( rand() % w, rand() % h, text, text.length() ); |
265 | ++loops; | 270 | ++loops; |
266 | } | 271 | } |
267 | 272 | ||
268 | return loops * text.length(); | 273 | return loops * text.length(); |
269 | } | 274 | } |
270 | 275 | ||
271 | int BenchmarkInfo::gfxRendering( int seconds ) | 276 | int BenchmarkInfo::gfxRendering( int seconds ) |
272 | { | 277 | { |
273 | int rr[] = { 255, 255, 255, 0, 0, 0, 0, 128, 128 }; | 278 | int rr[] = { 255, 255, 255, 0, 0, 0, 0, 128, 128 }; |
274 | int gg[] = { 0, 255, 0, 0, 255, 255, 0, 128, 128 }; | 279 | int gg[] = { 0, 255, 0, 0, 255, 255, 0, 128, 128 }; |
275 | int bb[] = { 0, 0, 255, 0, 0, 255, 255, 128, 0 }; | 280 | int bb[] = { 0, 0, 255, 0, 0, 255, 255, 128, 0 }; |
276 | 281 | ||
277 | int w = QApplication::desktop()->width(); | 282 | int w = QApplication::desktop()->width(); |
278 | int h = QApplication::desktop()->height(); | 283 | int h = QApplication::desktop()->height(); |
279 | 284 | ||
280 | srand( time( NULL ) ); | 285 | srand( time( NULL ) ); |
281 | 286 | ||
282 | BenchmarkPaintWidget bpw; | 287 | BenchmarkPaintWidget bpw; |
283 | 288 | ||
284 | QTime t; | 289 | QTime t; |
285 | t.start(); | 290 | t.start(); |
286 | int stop = t.elapsed() + seconds*1000; | 291 | int stop = t.elapsed() + seconds*1000; |
287 | int loops = 0; | 292 | int loops = 0; |
288 | 293 | ||
289 | while ( t.elapsed() < stop ) | 294 | while ( t.elapsed() < stop ) |
290 | { | 295 | { |
291 | int k = rand() % 9; | 296 | int k = rand() % 9; |
292 | bpw.p.setPen( QColor( rr[ k ], gg[ k ], bb[ k ] ) ); | 297 | bpw.p.setPen( QColor( rr[ k ], gg[ k ], bb[ k ] ) ); |
293 | bpw.p.drawLine( rand()%w, rand()%h, rand()%w, rand()%h ); | 298 | bpw.p.drawLine( rand()%w, rand()%h, rand()%w, rand()%h ); |
294 | ++loops; | 299 | ++loops; |
295 | } | 300 | } |
296 | 301 | ||
297 | t.restart(); | 302 | t.restart(); |
298 | stop = t.elapsed() + seconds*1000; | 303 | stop = t.elapsed() + seconds*1000; |
299 | 304 | ||
300 | while ( t.elapsed() < stop ) | 305 | while ( t.elapsed() < stop ) |
301 | { | 306 | { |
302 | int k = rand() % 9; | 307 | int k = rand() % 9; |
303 | bpw.p.setPen( QColor( rr[ k ], gg[ k ], bb[ k ] ) ); | 308 | bpw.p.setPen( QColor( rr[ k ], gg[ k ], bb[ k ] ) ); |
304 | bpw.p.drawArc( rand()%w, rand()%h, rand()%w, rand()%h, 360 * 16, 360 * 16 ); | 309 | bpw.p.drawArc( rand()%w, rand()%h, rand()%w, rand()%h, 360 * 16, 360 * 16 ); |
305 | ++loops; | 310 | ++loops; |
306 | } | 311 | } |
307 | 312 | ||
308 | QBrush br1; | 313 | QBrush br1; |
309 | br1.setStyle( SolidPattern ); | 314 | br1.setStyle( SolidPattern ); |
310 | t.restart(); | 315 | t.restart(); |
311 | stop = t.elapsed() + seconds*1000; | 316 | stop = t.elapsed() + seconds*1000; |
312 | 317 | ||
313 | while ( t.elapsed() < stop ) | 318 | while ( t.elapsed() < stop ) |
314 | { | 319 | { |
315 | int k = rand() % 9; | 320 | int k = rand() % 9; |
316 | br1.setColor( QColor( rr[ k ], gg[ k ], bb[ k ] ) ); | 321 | br1.setColor( QColor( rr[ k ], gg[ k ], bb[ k ] ) ); |
317 | bpw.p.fillRect( rand()%w, rand()%h, rand()%w, rand()%h, br1 ); | 322 | bpw.p.fillRect( rand()%w, rand()%h, rand()%w, rand()%h, br1 ); |
318 | ++loops; | 323 | ++loops; |
319 | } | 324 | } |
320 | 325 | ||
321 | QPixmap p = Resource::loadPixmap( "sysinfo/pattern" ); | 326 | QPixmap p = Resource::loadPixmap( "sysinfo/pattern" ); |
322 | t.restart(); | 327 | t.restart(); |
323 | stop = t.elapsed() + seconds*1000; | 328 | stop = t.elapsed() + seconds*1000; |
324 | 329 | ||
325 | while ( t.elapsed() < stop ) | 330 | while ( t.elapsed() < stop ) |
326 | { | 331 | { |
327 | bpw.p.drawPixmap( rand()%w, rand()%h, p ); | 332 | bpw.p.drawPixmap( rand()%w, rand()%h, p ); |
328 | ++loops; | 333 | ++loops; |
329 | } | 334 | } |
330 | 335 | ||
331 | return loops; | 336 | return loops; |
332 | 337 | ||
333 | } | 338 | } |
334 | 339 | ||
335 | void BenchmarkInfo::performFileTest( const QString& fname, QCheckListItem* item ) | 340 | void BenchmarkInfo::performFileTest( const QString& fname, OCheckListItem* item ) |
336 | { | 341 | { |
337 | QTime time; | 342 | QTime time; |
338 | time.start(); | 343 | time.start(); |
339 | if ( writeFile( fname ) && | 344 | if ( writeFile( fname ) && |
340 | readFile( fname ) ) | 345 | readFile( fname ) ) |
341 | { | 346 | { |
342 | QFile::remove( fname ); | 347 | QFile::remove( fname ); |
343 | item->setText( 1, QString( "%1 kb/sec" ).arg( QString::number( 1024.0 / ( time.elapsed() / 1000.0 ) ) ) ); | 348 | item->setText( 1, QString( "%1 kb/sec" ).arg( QString::number( 1024.0 / ( time.elapsed() / 1000.0 ) ) ) ); |
344 | item->setOn( false ); | 349 | item->setOn( false ); |
345 | } | 350 | } |
346 | else | 351 | else |
347 | { | 352 | { |
348 | item->setText( 1, tr( "error" ) ); | 353 | item->setText( 1, tr( "error" ) ); |
349 | } | 354 | } |
350 | } | 355 | } |
351 | 356 | ||
352 | char FileBuf[ BUFF_SIZE + 1 ]; | 357 | char FileBuf[ BUFF_SIZE + 1 ]; |
353 | 358 | ||
354 | bool BenchmarkInfo::writeFile( const QString& w_path ) | 359 | bool BenchmarkInfo::writeFile( const QString& w_path ) |
355 | { | 360 | { |
356 | int i; | 361 | int i; |
357 | int k; | 362 | int k; |
358 | int n; | 363 | int n; |
359 | int pos; | 364 | int pos; |
360 | int len; | 365 | int len; |
361 | char *data = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; // 62 | 366 | char *data = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; // 62 |
362 | 367 | ||
363 | 368 | ||
364 | // /*------------------------------------ | 369 | // /*------------------------------------ |
365 | int w_len; | 370 | int w_len; |
366 | 371 | ||
367 | QFile writeFile( w_path ); | 372 | QFile writeFile( w_path ); |
368 | srand( time( NULL ) ); | 373 | srand( time( NULL ) ); |
369 | 374 | ||
370 | for ( n = 0 ; n < 20 ; n++ ) | 375 | for ( n = 0 ; n < 20 ; n++ ) |
371 | { | 376 | { |
372 | if ( ! writeFile.open( IO_WriteOnly ) ) | 377 | if ( ! writeFile.open( IO_WriteOnly ) ) |
373 | { | 378 | { |
374 | writeFile.close(); | 379 | writeFile.close(); |
375 | writeFile.remove(); | 380 | writeFile.remove(); |
376 | return ( false ); | 381 | return ( false ); |
377 | } | 382 | } |
378 | // ------------------------------------------ sequential write | 383 | // ------------------------------------------ sequential write |
379 | for ( k = 0 ; k < 256 ; k++ ) | 384 | for ( k = 0 ; k < 256 ; k++ ) |
380 | { | 385 | { |
381 | n = rand() % 30; | 386 | n = rand() % 30; |
382 | memcpy( &FileBuf[ k * 32 ], &data[ n ], 32 ); | 387 | memcpy( &FileBuf[ k * 32 ], &data[ n ], 32 ); |
383 | } | 388 | } |
384 | 389 | ||
385 | for ( i = 0 ; i < FILE_SIZE / BUFF_SIZE ; i++ ) | 390 | for ( i = 0 ; i < FILE_SIZE / BUFF_SIZE ; i++ ) |
386 | { | 391 | { |
387 | w_len = writeFile.writeBlock( FileBuf, BUFF_SIZE ); | 392 | w_len = writeFile.writeBlock( FileBuf, BUFF_SIZE ); |
388 | if ( w_len != BUFF_SIZE ) | 393 | if ( w_len != BUFF_SIZE ) |
389 | { | 394 | { |
390 | writeFile.close(); | 395 | writeFile.close(); |
391 | writeFile.remove(); | 396 | writeFile.remove(); |
392 | return ( false ); | 397 | return ( false ); |
393 | } | 398 | } |
394 | writeFile.flush(); | 399 | writeFile.flush(); |
395 | } | 400 | } |
396 | // ------------------------------------------ random write | 401 | // ------------------------------------------ random write |
397 | for ( i = 0 ; i < 400 ; i++ ) | 402 | for ( i = 0 ; i < 400 ; i++ ) |
398 | { | 403 | { |
399 | len = rand() % 90 + 4000; | 404 | len = rand() % 90 + 4000; |
400 | for ( k = 0 ; k < 128 ; k++ ) | 405 | for ( k = 0 ; k < 128 ; k++ ) |
401 | { | 406 | { |
402 | n = rand() % 30; | 407 | n = rand() % 30; |
403 | memcpy( &FileBuf[ k * 8 ], &data[ n ], 32 ); | 408 | memcpy( &FileBuf[ k * 8 ], &data[ n ], 32 ); |
404 | } | 409 | } |
405 | pos = rand() % ( FILE_SIZE - BUFF_SIZE ); | 410 | pos = rand() % ( FILE_SIZE - BUFF_SIZE ); |
406 | 411 | ||
407 | writeFile.at( pos ); | 412 | writeFile.at( pos ); |
408 | w_len = writeFile.writeBlock( FileBuf, len ); | 413 | w_len = writeFile.writeBlock( FileBuf, len ); |
409 | if ( w_len != len ) | 414 | if ( w_len != len ) |
410 | { | 415 | { |
411 | writeFile.close(); | 416 | writeFile.close(); |
412 | writeFile.remove(); | 417 | writeFile.remove(); |
413 | return ( false ); | 418 | return ( false ); |
414 | } | 419 | } |
415 | writeFile.flush(); | 420 | writeFile.flush(); |
416 | } | 421 | } |
417 | writeFile.close(); | 422 | writeFile.close(); |
418 | } | 423 | } |
419 | return ( true ); | 424 | return ( true ); |
420 | 425 | ||
421 | } | 426 | } |
422 | 427 | ||
423 | 428 | ||
424 | bool BenchmarkInfo::readFile( const QString& r_path ) | 429 | bool BenchmarkInfo::readFile( const QString& r_path ) |
425 | { | 430 | { |
426 | int i; | 431 | int i; |
427 | int k; | 432 | int k; |
428 | int len; | 433 | int len; |
429 | int pos; | 434 | int pos; |
430 | int r_len; | 435 | int r_len; |
431 | 436 | ||
432 | QFile readFile( r_path ); | 437 | QFile readFile( r_path ); |
433 | srand( time( NULL ) ); | 438 | srand( time( NULL ) ); |
434 | 439 | ||
435 | for ( k = 0 ; k < 200 ; k++ ) | 440 | for ( k = 0 ; k < 200 ; k++ ) |
436 | { | 441 | { |
437 | if ( ! readFile.open( IO_ReadOnly ) ) | 442 | if ( ! readFile.open( IO_ReadOnly ) ) |
438 | { | 443 | { |
439 | readFile.remove(); | 444 | readFile.remove(); |
440 | return ( false ); | 445 | return ( false ); |
441 | } | 446 | } |
442 | // ------------------------------------------ sequential read | 447 | // ------------------------------------------ sequential read |
443 | readFile.at( 0 ); | 448 | readFile.at( 0 ); |
444 | for ( i = 0 ; i < FILE_SIZE / BUFF_SIZE ; i++ ) | 449 | for ( i = 0 ; i < FILE_SIZE / BUFF_SIZE ; i++ ) |
445 | { | 450 | { |
446 | readFile.at( i * BUFF_SIZE ); | 451 | readFile.at( i * BUFF_SIZE ); |
447 | r_len = readFile.readBlock( FileBuf, BUFF_SIZE ); | 452 | r_len = readFile.readBlock( FileBuf, BUFF_SIZE ); |
448 | if ( r_len != BUFF_SIZE ) | 453 | if ( r_len != BUFF_SIZE ) |
449 | { | 454 | { |
450 | readFile.close(); | 455 | readFile.close(); |
451 | readFile.remove(); | 456 | readFile.remove(); |
452 | return ( false ); | 457 | return ( false ); |
453 | } | 458 | } |
454 | } | 459 | } |
455 | // ------------------------------------------ random read | 460 | // ------------------------------------------ random read |
456 | for ( i = 0 ; i < 1000 ; i++ ) | 461 | for ( i = 0 ; i < 1000 ; i++ ) |
457 | { | 462 | { |
458 | len = rand() % 120 + 8; | 463 | len = rand() % 120 + 8; |
459 | pos = rand() % ( FILE_SIZE / BUFF_SIZE - BUFF_SIZE ); | 464 | pos = rand() % ( FILE_SIZE / BUFF_SIZE - BUFF_SIZE ); |
460 | readFile.at( pos ); | 465 | readFile.at( pos ); |
461 | r_len = readFile.readBlock( FileBuf, len ); | 466 | r_len = readFile.readBlock( FileBuf, len ); |
462 | if ( r_len != len ) | 467 | if ( r_len != len ) |
463 | { | 468 | { |
464 | readFile.close(); | 469 | readFile.close(); |
465 | readFile.remove(); | 470 | readFile.remove(); |
466 | return ( false ); | 471 | return ( false ); |
467 | } | 472 | } |
468 | } | 473 | } |
469 | readFile.close(); | 474 | readFile.close(); |
470 | } | 475 | } |
471 | return ( true ); | 476 | return ( true ); |
472 | } | 477 | } |
diff --git a/noncore/settings/sysinfo/benchmarkinfo.h b/noncore/settings/sysinfo/benchmarkinfo.h index d143602..c3d44ec 100644 --- a/noncore/settings/sysinfo/benchmarkinfo.h +++ b/noncore/settings/sysinfo/benchmarkinfo.h | |||
@@ -1,69 +1,69 @@ | |||
1 | /********************************************************************** | 1 | /********************************************************************** |
2 | ** BenchmarkInfo | 2 | ** BenchmarkInfo |
3 | ** | 3 | ** |
4 | ** A benchmark for Qt/Embedded | 4 | ** A benchmark for Qt/Embedded |
5 | ** | 5 | ** |
6 | ** Copyright (C) 2004 Michael Lauer <mickey@vanille.de> | 6 | ** Copyright (C) 2004 Michael Lauer <mickey@vanille.de> |
7 | ** Inspired by ZBench (C) 2002 Satoshi <af230533@im07.alpha-net.ne.jp> | 7 | ** Inspired by ZBench (C) 2002 Satoshi <af230533@im07.alpha-net.ne.jp> |
8 | ** | 8 | ** |
9 | ** This file may be distributed and/or modified under the terms of the | 9 | ** This file may be distributed and/or modified under the terms of the |
10 | ** GNU General Public License version 2 as published by the Free Software | 10 | ** GNU General Public License version 2 as published by the Free Software |
11 | ** Foundation and appearing in the file LICENSE.GPL included in the | 11 | ** Foundation and appearing in the file LICENSE.GPL included in the |
12 | ** packaging of this file. | 12 | ** packaging of this file. |
13 | ** | 13 | ** |
14 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE | 14 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE |
15 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. | 15 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. |
16 | ** | 16 | ** |
17 | **********************************************************************/ | 17 | **********************************************************************/ |
18 | 18 | ||
19 | #include <qwidget.h> | 19 | #include <qwidget.h> |
20 | #include <qdialog.h> | 20 | #include <qdialog.h> |
21 | #include <qdict.h> | 21 | #include <qdict.h> |
22 | #include <qstringlist.h> | 22 | #include <qstringlist.h> |
23 | 23 | ||
24 | class QClipboard; | 24 | class QClipboard; |
25 | class QComboBox; | 25 | class QComboBox; |
26 | class QCheckListItem; | 26 | class OCheckListItem; |
27 | class QPushButton; | 27 | class QPushButton; |
28 | class QListView; | 28 | class OListView; |
29 | 29 | ||
30 | class BenchmarkInfo : public QWidget | 30 | class BenchmarkInfo : public QWidget |
31 | { | 31 | { |
32 | Q_OBJECT | 32 | Q_OBJECT |
33 | 33 | ||
34 | public: | 34 | public: |
35 | BenchmarkInfo( QWidget *parent = 0, const char *name = 0, int wFlags = 0 ); | 35 | BenchmarkInfo( QWidget *parent = 0, const char *name = 0, int wFlags = 0 ); |
36 | ~BenchmarkInfo(); | 36 | ~BenchmarkInfo(); |
37 | 37 | ||
38 | QCheckListItem* test_alu; | 38 | OCheckListItem* test_alu; |
39 | QCheckListItem* test_fpu; | 39 | OCheckListItem* test_fpu; |
40 | QCheckListItem* test_txt; | 40 | OCheckListItem* test_txt; |
41 | QCheckListItem* test_gfx; | 41 | OCheckListItem* test_gfx; |
42 | QCheckListItem* test_ram; | 42 | OCheckListItem* test_ram; |
43 | QCheckListItem* test_sd; | 43 | OCheckListItem* test_sd; |
44 | QCheckListItem* test_cf; | 44 | OCheckListItem* test_cf; |
45 | 45 | ||
46 | bool main_rd; | 46 | bool main_rd; |
47 | bool main_wt; | 47 | bool main_wt; |
48 | bool sd_rd; | 48 | bool sd_rd; |
49 | bool sd_wt; | 49 | bool sd_wt; |
50 | bool cf_rd; | 50 | bool cf_rd; |
51 | bool cf_wt; | 51 | bool cf_wt; |
52 | 52 | ||
53 | QClipboard* clb; | 53 | QClipboard* clb; |
54 | QComboBox* machineCombo; | 54 | QComboBox* machineCombo; |
55 | QListView* tests; | 55 | OListView* tests; |
56 | QPushButton* startButton; | 56 | QPushButton* startButton; |
57 | QDict <QStringList> machines; | 57 | QDict <QStringList> machines; |
58 | 58 | ||
59 | int textRendering( int ); | 59 | int textRendering( int ); |
60 | int gfxRendering( int ); | 60 | int gfxRendering( int ); |
61 | void performFileTest( const QString& fname, QCheckListItem* item ); | 61 | void performFileTest( const QString& fname, OCheckListItem* item ); |
62 | 62 | ||
63 | private slots: | 63 | private slots: |
64 | bool writeFile( const QString& ); | 64 | bool writeFile( const QString& ); |
65 | bool readFile( const QString& ); | 65 | bool readFile( const QString& ); |
66 | void run(); | 66 | void run(); |
67 | void machineActivated( int ); | 67 | void machineActivated( int ); |
68 | }; | 68 | }; |
69 | 69 | ||
diff --git a/noncore/settings/sysinfo/detail.cpp b/noncore/settings/sysinfo/detail.cpp index 79daa2b..6645fdd 100644 --- a/noncore/settings/sysinfo/detail.cpp +++ b/noncore/settings/sysinfo/detail.cpp | |||
@@ -1,44 +1,42 @@ | |||
1 | /********************************************************************** | 1 | /********************************************************************** |
2 | ** Detail | 2 | ** Detail |
3 | ** | 3 | ** |
4 | ** Display module information | 4 | ** Display module information |
5 | ** | 5 | ** |
6 | ** Copyright (C) 2002, Michael Lauer | 6 | ** Copyright (C) 2002, Michael Lauer |
7 | ** mickey@tm.informatik.uni-frankfurt.de | 7 | ** mickey@tm.informatik.uni-frankfurt.de |
8 | ** http://www.Vanille.de | 8 | ** http://www.Vanille.de |
9 | ** | 9 | ** |
10 | ** Based on ProcessDetail by Dan Williams <williamsdr@acm.org> | 10 | ** Based on ProcessDetail by Dan Williams <williamsdr@acm.org> |
11 | ** | 11 | ** |
12 | ** This file may be distributed and/or modified under the terms of the | 12 | ** This file may be distributed and/or modified under the terms of the |
13 | ** GNU General Public License version 2 as published by the Free Software | 13 | ** GNU General Public License version 2 as published by the Free Software |
14 | ** Foundation and appearing in the file LICENSE.GPL included in the | 14 | ** Foundation and appearing in the file LICENSE.GPL included in the |
15 | ** packaging of this file. | 15 | ** packaging of this file. |
16 | ** | 16 | ** |
17 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE | 17 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE |
18 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. | 18 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. |
19 | ** | 19 | ** |
20 | **********************************************************************/ | 20 | **********************************************************************/ |
21 | 21 | ||
22 | #include "detail.h" | 22 | #include "detail.h" |
23 | 23 | ||
24 | #include <sys/types.h> | 24 | #include <qtextview.h> |
25 | #include <stdio.h> | ||
26 | |||
27 | #include <qlayout.h> | 25 | #include <qlayout.h> |
28 | 26 | ||
29 | Detail::Detail( QWidget* parent, const char* name, WFlags ) | 27 | Detail::Detail( QWidget* parent, const char* name, WFlags ) |
30 | : QWidget( parent, name, WStyle_ContextHelp ) | 28 | : QWidget( parent, name, WStyle_ContextHelp ) |
31 | { | 29 | { |
32 | QVBoxLayout *layout = new QVBoxLayout( this ); | 30 | QVBoxLayout *layout = new QVBoxLayout( this ); |
33 | 31 | ||
34 | detailView = new QTextView( this ); | 32 | detailView = new QTextView( this ); |
35 | detailView->setTextFormat( PlainText ); | 33 | detailView->setTextFormat( PlainText ); |
36 | 34 | ||
37 | layout->addWidget( detailView ); | 35 | layout->addWidget( detailView ); |
38 | } | 36 | } |
39 | 37 | ||
40 | Detail::~Detail() | 38 | Detail::~Detail() |
41 | { | 39 | { |
42 | } | 40 | } |
43 | 41 | ||
44 | 42 | ||
diff --git a/noncore/settings/sysinfo/detail.h b/noncore/settings/sysinfo/detail.h index 7ca9d45..71d3e3a 100644 --- a/noncore/settings/sysinfo/detail.h +++ b/noncore/settings/sysinfo/detail.h | |||
@@ -1,42 +1,40 @@ | |||
1 | /********************************************************************** | 1 | /********************************************************************** |
2 | ** ModulesDetail | 2 | ** ModulesDetail |
3 | ** | 3 | ** |
4 | ** Display module information | 4 | ** Display module information |
5 | ** | 5 | ** |
6 | ** Copyright (C) 2002, Michael Lauer | 6 | ** Copyright (C) 2002, Michael Lauer |
7 | ** mickey@tm.informatik.uni-frankfurt.de | 7 | ** mickey@tm.informatik.uni-frankfurt.de |
8 | ** http://www.Vanille.de | 8 | ** http://www.Vanille.de |
9 | ** | 9 | ** |
10 | ** Based on ProcessDetail by Dan Williams <williamsdr@acm.org> | 10 | ** Based on ProcessDetail by Dan Williams <williamsdr@acm.org> |
11 | ** | 11 | ** |
12 | ** This file may be distributed and/or modified under the terms of the | 12 | ** This file may be distributed and/or modified under the terms of the |
13 | ** GNU General Public License version 2 as published by the Free Software | 13 | ** GNU General Public License version 2 as published by the Free Software |
14 | ** Foundation and appearing in the file LICENSE.GPL included in the | 14 | ** Foundation and appearing in the file LICENSE.GPL included in the |
15 | ** packaging of this file. | 15 | ** packaging of this file. |
16 | ** | 16 | ** |
17 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE | 17 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE |
18 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. | 18 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. |
19 | ** | 19 | ** |
20 | **********************************************************************/ | 20 | **********************************************************************/ |
21 | 21 | ||
22 | #ifndef DETAIL_H | 22 | #ifndef DETAIL_H |
23 | #define DETAIL_H | 23 | #define DETAIL_H |
24 | 24 | ||
25 | #include <qwidget.h> | 25 | #include <qwidget.h> |
26 | #include <qcombo.h> | 26 | |
27 | #include <qtextview.h> | 27 | class QTextView; |
28 | #include <qpushbutton.h> | ||
29 | #include <qlistview.h> | ||
30 | 28 | ||
31 | class Detail : public QWidget | 29 | class Detail : public QWidget |
32 | { | 30 | { |
33 | Q_OBJECT | 31 | Q_OBJECT |
34 | 32 | ||
35 | public: | 33 | public: |
36 | Detail( QWidget * = 0x0, const char * = 0x0, WFlags = 0 ); | 34 | Detail( QWidget * = 0x0, const char * = 0x0, WFlags = 0 ); |
37 | ~Detail(); | 35 | ~Detail(); |
38 | 36 | ||
39 | QTextView* detailView; | 37 | QTextView* detailView; |
40 | }; | 38 | }; |
41 | 39 | ||
42 | #endif // DETAIL_H | 40 | #endif // DETAIL_H |
diff --git a/noncore/settings/sysinfo/modulesinfo.cpp b/noncore/settings/sysinfo/modulesinfo.cpp index e688a29..dfe48e1 100644 --- a/noncore/settings/sysinfo/modulesinfo.cpp +++ b/noncore/settings/sysinfo/modulesinfo.cpp | |||
@@ -1,190 +1,194 @@ | |||
1 | /********************************************************************** | 1 | /********************************************************************** |
2 | ** ModulesInfo | 2 | ** ModulesInfo |
3 | ** | 3 | ** |
4 | ** Display Modules information | 4 | ** Display Modules information |
5 | ** | 5 | ** |
6 | ** Copyright (C) 2002, Michael Lauer | 6 | ** Copyright (C) 2002, Michael Lauer |
7 | ** mickey@tm.informatik.uni-frankfurt.de | 7 | ** mickey@tm.informatik.uni-frankfurt.de |
8 | ** http://www.Vanille.de | 8 | ** http://www.Vanille.de |
9 | ** | 9 | ** |
10 | ** Based on ProcessInfo by Dan Williams <williamsdr@acm.org> | 10 | ** Based on ProcessInfo by Dan Williams <williamsdr@acm.org> |
11 | ** | 11 | ** |
12 | ** This file may be distributed and/or modified under the terms of the | 12 | ** This file may be distributed and/or modified under the terms of the |
13 | ** GNU General Public License version 2 as published by the Free Software | 13 | ** GNU General Public License version 2 as published by the Free Software |
14 | ** Foundation and appearing in the file LICENSE.GPL included in the | 14 | ** Foundation and appearing in the file LICENSE.GPL included in the |
15 | ** packaging of this file. | 15 | ** packaging of this file. |
16 | ** | 16 | ** |
17 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE | 17 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE |
18 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. | 18 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. |
19 | ** | 19 | ** |
20 | **********************************************************************/ | 20 | **********************************************************************/ |
21 | 21 | ||
22 | #include "modulesinfo.h" | 22 | #include "modulesinfo.h" |
23 | #include "detail.h" | 23 | #include "detail.h" |
24 | 24 | ||
25 | /* OPIE */ | 25 | /* OPIE */ |
26 | #include <opie2/olistview.h> | ||
26 | #include <qpe/qpeapplication.h> | 27 | #include <qpe/qpeapplication.h> |
27 | 28 | ||
28 | /* QT */ | 29 | /* QT */ |
30 | #include <qcombobox.h> | ||
29 | #include <qfile.h> | 31 | #include <qfile.h> |
30 | #include <qlayout.h> | 32 | #include <qlayout.h> |
31 | #include <qmessagebox.h> | 33 | #include <qmessagebox.h> |
34 | #include <qpushbutton.h> | ||
35 | #include <qtextview.h> | ||
32 | #include <qtimer.h> | 36 | #include <qtimer.h> |
33 | #include <qwhatsthis.h> | 37 | #include <qwhatsthis.h> |
34 | 38 | ||
35 | ModulesInfo::ModulesInfo( QWidget* parent, const char* name, WFlags fl ) | 39 | ModulesInfo::ModulesInfo( QWidget* parent, const char* name, WFlags fl ) |
36 | : QWidget( parent, name, fl ) | 40 | : QWidget( parent, name, fl ) |
37 | { | 41 | { |
38 | QGridLayout *layout = new QGridLayout( this ); | 42 | QGridLayout *layout = new QGridLayout( this ); |
39 | layout->setSpacing( 4 ); | 43 | layout->setSpacing( 4 ); |
40 | layout->setMargin( 4 ); | 44 | layout->setMargin( 4 ); |
41 | 45 | ||
42 | ModulesView = new QListView( this ); | 46 | ModulesView = new OListView( this ); |
43 | int colnum = ModulesView->addColumn( tr( "Module" ) ); | 47 | int colnum = ModulesView->addColumn( tr( "Module" ) ); |
44 | colnum = ModulesView->addColumn( tr( "Size" ) ); | 48 | colnum = ModulesView->addColumn( tr( "Size" ) ); |
45 | ModulesView->setColumnAlignment( colnum, Qt::AlignRight ); | 49 | ModulesView->setColumnAlignment( colnum, Qt::AlignRight ); |
46 | colnum = ModulesView->addColumn( tr( "Use#" ) ); | 50 | colnum = ModulesView->addColumn( tr( "Use#" ) ); |
47 | ModulesView->setColumnAlignment( colnum, Qt::AlignRight ); | 51 | ModulesView->setColumnAlignment( colnum, Qt::AlignRight ); |
48 | colnum = ModulesView->addColumn( tr( "Used by" ) ); | 52 | colnum = ModulesView->addColumn( tr( "Used by" ) ); |
49 | ModulesView->setAllColumnsShowFocus( TRUE ); | 53 | ModulesView->setAllColumnsShowFocus( TRUE ); |
50 | layout->addMultiCellWidget( ModulesView, 0, 0, 0, 1 ); | 54 | layout->addMultiCellWidget( ModulesView, 0, 0, 0, 1 ); |
51 | QWhatsThis::add( ModulesView, tr( "This is a list of all the kernel modules currently loaded on this handheld device.\n\nClick and hold on a module to see additional information about the module, or to unload it." ) ); | 55 | QWhatsThis::add( ModulesView, tr( "This is a list of all the kernel modules currently loaded on this handheld device.\n\nClick and hold on a module to see additional information about the module, or to unload it." ) ); |
52 | 56 | ||
53 | // Test if we have /sbin/modinfo, and if so, allow module detail window | 57 | // Test if we have /sbin/modinfo, and if so, allow module detail window |
54 | if ( QFile::exists( "/sbin/modinfo" ) ) | 58 | if ( QFile::exists( "/sbin/modinfo" ) ) |
55 | { | 59 | { |
56 | QPEApplication::setStylusOperation( ModulesView->viewport(), QPEApplication::RightOnHold ); | 60 | QPEApplication::setStylusOperation( ModulesView->viewport(), QPEApplication::RightOnHold ); |
57 | connect( ModulesView, SIGNAL( rightButtonPressed(QListViewItem*,const QPoint&,int) ), | 61 | connect( ModulesView, SIGNAL( rightButtonPressed(OListViewItem*,const QPoint&,int) ), |
58 | this, SLOT( viewModules(QListViewItem*) ) ); | 62 | this, SLOT( viewModules(OListViewItem*) ) ); |
59 | } | 63 | } |
60 | 64 | ||
61 | CommandCB = new QComboBox( FALSE, this ); | 65 | CommandCB = new QComboBox( FALSE, this ); |
62 | CommandCB->insertItem( "modprobe -r" ); | 66 | CommandCB->insertItem( "modprobe -r" ); |
63 | CommandCB->insertItem( "rmmod" ); | 67 | CommandCB->insertItem( "rmmod" ); |
64 | // I can't think of other useful commands yet. Anyone? | 68 | // I can't think of other useful commands yet. Anyone? |
65 | layout->addWidget( CommandCB, 1, 0 ); | 69 | layout->addWidget( CommandCB, 1, 0 ); |
66 | QWhatsThis::add( CommandCB, tr( "Select a command here and then click the Send button to the right to send the command to module selected above." ) ); | 70 | QWhatsThis::add( CommandCB, tr( "Select a command here and then click the Send button to the right to send the command to module selected above." ) ); |
67 | 71 | ||
68 | QPushButton *btn = new QPushButton( this ); | 72 | QPushButton *btn = new QPushButton( this ); |
69 | btn->setMinimumSize( QSize( 50, 24 ) ); | 73 | btn->setMinimumSize( QSize( 50, 24 ) ); |
70 | btn->setMaximumSize( QSize( 50, 24 ) ); | 74 | btn->setMaximumSize( QSize( 50, 24 ) ); |
71 | btn->setText( tr( "Send" ) ); | 75 | btn->setText( tr( "Send" ) ); |
72 | connect( btn, SIGNAL( clicked() ), this, SLOT( slotSendClicked() ) ); | 76 | connect( btn, SIGNAL( clicked() ), this, SLOT( slotSendClicked() ) ); |
73 | layout->addWidget( btn, 1, 1 ); | 77 | layout->addWidget( btn, 1, 1 ); |
74 | QWhatsThis::add( btn, tr( "Click here to send the selected command to the module selected above." ) ); | 78 | QWhatsThis::add( btn, tr( "Click here to send the selected command to the module selected above." ) ); |
75 | 79 | ||
76 | QTimer *t = new QTimer( this ); | 80 | QTimer *t = new QTimer( this ); |
77 | connect( t, SIGNAL( timeout() ), this, SLOT( updateData() ) ); | 81 | connect( t, SIGNAL( timeout() ), this, SLOT( updateData() ) ); |
78 | t->start( 5000 ); | 82 | t->start( 5000 ); |
79 | 83 | ||
80 | updateData(); | 84 | updateData(); |
81 | 85 | ||
82 | ModulesDtl = new Detail(); | 86 | ModulesDtl = new Detail(); |
83 | QWhatsThis::add( ModulesDtl->detailView, tr( "This area shows detailed information about this module." ) ); | 87 | QWhatsThis::add( ModulesDtl->detailView, tr( "This area shows detailed information about this module." ) ); |
84 | } | 88 | } |
85 | 89 | ||
86 | ModulesInfo::~ModulesInfo() | 90 | ModulesInfo::~ModulesInfo() |
87 | {} | 91 | {} |
88 | 92 | ||
89 | void ModulesInfo::updateData() | 93 | void ModulesInfo::updateData() |
90 | { | 94 | { |
91 | char modname[64]; | 95 | char modname[64]; |
92 | char usage[200]; | 96 | char usage[200]; |
93 | int modsize, usecount; | 97 | int modsize, usecount; |
94 | 98 | ||
95 | QString selectedmod; | 99 | QString selectedmod; |
96 | QListViewItem *curritem = ModulesView->currentItem(); | 100 | OListViewItem *curritem = static_cast<OListViewItem*>( ModulesView->currentItem() ); |
97 | if ( curritem ) | 101 | if ( curritem ) |
98 | { | 102 | { |
99 | selectedmod = curritem->text( 0 ); | 103 | selectedmod = curritem->text( 0 ); |
100 | } | 104 | } |
101 | 105 | ||
102 | ModulesView->clear(); | 106 | ModulesView->clear(); |
103 | 107 | ||
104 | FILE *procfile = fopen( ( QString ) ( "/proc/modules"), "r"); | 108 | FILE *procfile = fopen( ( QString ) ( "/proc/modules"), "r"); |
105 | 109 | ||
106 | if ( procfile ) | 110 | if ( procfile ) |
107 | { | 111 | { |
108 | QListViewItem *newitem; | 112 | OListViewItem *newitem; |
109 | QListViewItem *selecteditem = 0x0; | 113 | OListViewItem *selecteditem = 0x0; |
110 | while ( true ) | 114 | while ( true ) |
111 | { | 115 | { |
112 | modname[0] = '\0'; | 116 | modname[0] = '\0'; |
113 | usage[0] = '\0'; | 117 | usage[0] = '\0'; |
114 | int success = fscanf( procfile, "%s%d%d%[^\n]", modname, &modsize, &usecount, usage ); | 118 | int success = fscanf( procfile, "%s%d%d%[^\n]", modname, &modsize, &usecount, usage ); |
115 | 119 | ||
116 | if ( success == EOF ) | 120 | if ( success == EOF ) |
117 | break; | 121 | break; |
118 | 122 | ||
119 | QString qmodname = QString( modname ); | 123 | QString qmodname = QString( modname ); |
120 | QString qmodsize = QString::number( modsize ).rightJustify( 6, ' ' ); | 124 | QString qmodsize = QString::number( modsize ).rightJustify( 6, ' ' ); |
121 | QString qusecount = QString::number( usecount ).rightJustify( 2, ' ' ); | 125 | QString qusecount = QString::number( usecount ).rightJustify( 2, ' ' ); |
122 | QString qusage = QString( usage ); | 126 | QString qusage = QString( usage ); |
123 | 127 | ||
124 | newitem = new QListViewItem( ModulesView, qmodname, qmodsize, qusecount, qusage ); | 128 | newitem = new OListViewItem( ModulesView, qmodname, qmodsize, qusecount, qusage ); |
125 | if ( qmodname == selectedmod ) | 129 | if ( qmodname == selectedmod ) |
126 | { | 130 | { |
127 | selecteditem = newitem; | 131 | selecteditem = newitem; |
128 | } | 132 | } |
129 | } | 133 | } |
130 | ModulesView->setCurrentItem( selecteditem ); | 134 | ModulesView->setCurrentItem( selecteditem ); |
131 | 135 | ||
132 | fclose( procfile ); | 136 | fclose( procfile ); |
133 | } | 137 | } |
134 | } | 138 | } |
135 | 139 | ||
136 | void ModulesInfo::slotSendClicked() | 140 | void ModulesInfo::slotSendClicked() |
137 | { | 141 | { |
138 | if ( !ModulesView->currentItem() ) | 142 | if ( !ModulesView->currentItem() ) |
139 | { | 143 | { |
140 | return; | 144 | return; |
141 | } | 145 | } |
142 | 146 | ||
143 | QString capstr = tr( "You really want to execute %1 for this module?" ).arg( CommandCB->currentText() ); | 147 | QString capstr = tr( "You really want to execute\n%1 for this module?" ).arg( CommandCB->currentText() ); |
144 | 148 | ||
145 | QString modname = ModulesView->currentItem()->text( 0 ); | 149 | QString modname = ModulesView->currentItem()->text( 0 ); |
146 | 150 | ||
147 | if ( QMessageBox::warning( this, modname, capstr, | 151 | if ( QMessageBox::warning( this, modname, capstr, |
148 | QMessageBox::Yes | QMessageBox::Default, QMessageBox::No | QMessageBox::Escape ) == QMessageBox::Yes ) | 152 | QMessageBox::Yes | QMessageBox::Default, QMessageBox::No | QMessageBox::Escape ) == QMessageBox::Yes ) |
149 | { | 153 | { |
150 | QString command = "/sbin/"; | 154 | QString command = "/sbin/"; |
151 | command.append( CommandCB->currentText() ); | 155 | command.append( CommandCB->currentText() ); |
152 | command.append( " " ); | 156 | command.append( " " ); |
153 | command.append( modname ); | 157 | command.append( modname ); |
154 | 158 | ||
155 | FILE* stream = popen( command, "r" ); | 159 | FILE* stream = popen( command, "r" ); |
156 | if ( stream ) | 160 | if ( stream ) |
157 | pclose( stream ); | 161 | pclose( stream ); |
158 | } | 162 | } |
159 | 163 | ||
160 | } | 164 | } |
161 | 165 | ||
162 | void ModulesInfo::viewModules( QListViewItem *modules ) | 166 | void ModulesInfo::viewModules( OListViewItem *modules ) |
163 | { | 167 | { |
164 | QString modname = modules->text( 0 ); | 168 | QString modname = modules->text( 0 ); |
165 | QString capstr = "Module: "; | 169 | QString capstr = "Module: "; |
166 | capstr.append( modname ); | 170 | capstr.append( modname ); |
167 | ModulesDtl->setCaption( capstr ); | 171 | ModulesDtl->setCaption( capstr ); |
168 | QString command = "/sbin/modinfo "; | 172 | QString command = "/sbin/modinfo "; |
169 | command.append( modname ); | 173 | command.append( modname ); |
170 | FILE* modinfo = popen( command, "r" ); | 174 | FILE* modinfo = popen( command, "r" ); |
171 | 175 | ||
172 | if ( modinfo ) | 176 | if ( modinfo ) |
173 | { | 177 | { |
174 | char line[200]; | 178 | char line[200]; |
175 | ModulesDtl->detailView->setText( " Details:\n------------\n" ); | 179 | ModulesDtl->detailView->setText( " Details:\n------------\n" ); |
176 | 180 | ||
177 | while( true ) | 181 | while( true ) |
178 | { | 182 | { |
179 | int success = fscanf( modinfo, "%[^\n]\n", line ); | 183 | int success = fscanf( modinfo, "%[^\n]\n", line ); |
180 | if ( success == EOF ) | 184 | if ( success == EOF ) |
181 | break; | 185 | break; |
182 | ModulesDtl->detailView->append( line ); | 186 | ModulesDtl->detailView->append( line ); |
183 | } | 187 | } |
184 | 188 | ||
185 | pclose( modinfo ); | 189 | pclose( modinfo ); |
186 | } | 190 | } |
187 | 191 | ||
188 | QPEApplication::showWidget( ModulesDtl ); | 192 | QPEApplication::showWidget( ModulesDtl ); |
189 | } | 193 | } |
190 | 194 | ||
diff --git a/noncore/settings/sysinfo/modulesinfo.h b/noncore/settings/sysinfo/modulesinfo.h index e974610..78dce73 100644 --- a/noncore/settings/sysinfo/modulesinfo.h +++ b/noncore/settings/sysinfo/modulesinfo.h | |||
@@ -1,51 +1,51 @@ | |||
1 | /********************************************************************** | 1 | /********************************************************************** |
2 | ** ModulesInfo | 2 | ** ModulesInfo |
3 | ** | 3 | ** |
4 | ** Display modules information | 4 | ** Display modules information |
5 | ** | 5 | ** |
6 | ** Copyright (C) 2002, Michael Lauer | 6 | ** Copyright (C) 2002, Michael Lauer |
7 | ** mickey@tm.informatik.uni-frankfurt.de | 7 | ** mickey@tm.informatik.uni-frankfurt.de |
8 | ** http://www.Vanille.de | 8 | ** http://www.Vanille.de |
9 | ** | 9 | ** |
10 | ** Based on ProcessInfo by Dan Williams <williamsdr@acm.org> | 10 | ** Based on ProcessInfo by Dan Williams <williamsdr@acm.org> |
11 | ** | 11 | ** |
12 | ** This file may be distributed and/or modified under the terms of the | 12 | ** This file may be distributed and/or modified under the terms of the |
13 | ** GNU General Public License version 2 as published by the Free Software | 13 | ** GNU General Public License version 2 as published by the Free Software |
14 | ** Foundation and appearing in the file LICENSE.GPL included in the | 14 | ** Foundation and appearing in the file LICENSE.GPL included in the |
15 | ** packaging of this file. | 15 | ** packaging of this file. |
16 | ** | 16 | ** |
17 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE | 17 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE |
18 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. | 18 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. |
19 | ** | 19 | ** |
20 | **********************************************************************/ | 20 | **********************************************************************/ |
21 | 21 | ||
22 | #ifndef MODULESINFO_H | 22 | #ifndef MODULESINFO_H |
23 | #define MODULESINFO_H | 23 | #define MODULESINFO_H |
24 | 24 | ||
25 | #include <qwidget.h> | 25 | #include <qwidget.h> |
26 | 26 | ||
27 | class Detail; | 27 | class Detail; |
28 | class QComboBox; | 28 | class QComboBox; |
29 | class QListView; | 29 | class OListView; |
30 | class QListViewItem; | 30 | class OListViewItem; |
31 | 31 | ||
32 | class ModulesInfo : public QWidget | 32 | class ModulesInfo : public QWidget |
33 | { | 33 | { |
34 | Q_OBJECT | 34 | Q_OBJECT |
35 | public: | 35 | public: |
36 | ModulesInfo( QWidget *parent = 0, const char *name = 0, WFlags f = 0 ); | 36 | ModulesInfo( QWidget *parent = 0, const char *name = 0, WFlags f = 0 ); |
37 | ~ModulesInfo(); | 37 | ~ModulesInfo(); |
38 | 38 | ||
39 | private: | 39 | private: |
40 | QListView* ModulesView; | 40 | OListView* ModulesView; |
41 | QComboBox* CommandCB; | 41 | QComboBox* CommandCB; |
42 | 42 | ||
43 | Detail* ModulesDtl; | 43 | Detail* ModulesDtl; |
44 | 44 | ||
45 | private slots: | 45 | private slots: |
46 | void updateData(); | 46 | void updateData(); |
47 | void slotSendClicked(); | 47 | void slotSendClicked(); |
48 | void viewModules( QListViewItem * ); | 48 | void viewModules( OListViewItem * ); |
49 | }; | 49 | }; |
50 | 50 | ||
51 | #endif | 51 | #endif |
diff --git a/noncore/settings/sysinfo/processinfo.cpp b/noncore/settings/sysinfo/processinfo.cpp index 69b4ab5..dd9a05d 100644 --- a/noncore/settings/sysinfo/processinfo.cpp +++ b/noncore/settings/sysinfo/processinfo.cpp | |||
@@ -1,202 +1,206 @@ | |||
1 | /********************************************************************** | 1 | /********************************************************************** |
2 | ** ProcessInfo | 2 | ** ProcessInfo |
3 | ** | 3 | ** |
4 | ** Display process information | 4 | ** Display process information |
5 | ** | 5 | ** |
6 | ** Copyright (C) 2002, Dan Williams | 6 | ** Copyright (C) 2002, Dan Williams |
7 | ** williamsdr@acm.org | 7 | ** williamsdr@acm.org |
8 | ** http://draknor.net | 8 | ** http://draknor.net |
9 | ** | 9 | ** |
10 | ** This file may be distributed and/or modified under the terms of the | 10 | ** This file may be distributed and/or modified under the terms of the |
11 | ** GNU General Public License version 2 as published by the Free Software | 11 | ** GNU General Public License version 2 as published by the Free Software |
12 | ** Foundation and appearing in the file LICENSE.GPL included in the | 12 | ** Foundation and appearing in the file LICENSE.GPL included in the |
13 | ** packaging of this file. | 13 | ** packaging of this file. |
14 | ** | 14 | ** |
15 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE | 15 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE |
16 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. | 16 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. |
17 | ** | 17 | ** |
18 | **********************************************************************/ | 18 | **********************************************************************/ |
19 | 19 | ||
20 | #include "processinfo.h" | 20 | #include "processinfo.h" |
21 | #include "detail.h" | 21 | #include "detail.h" |
22 | 22 | ||
23 | /* OPIE */ | 23 | /* OPIE */ |
24 | #include <opie2/olistview.h> | ||
24 | #include <qpe/qpeapplication.h> | 25 | #include <qpe/qpeapplication.h> |
25 | 26 | ||
26 | /* QT */ | 27 | /* QT */ |
28 | #include <qcombobox.h> | ||
27 | #include <qdir.h> | 29 | #include <qdir.h> |
28 | #include <qlayout.h> | 30 | #include <qlayout.h> |
29 | #include <qmessagebox.h> | 31 | #include <qmessagebox.h> |
32 | #include <qpushbutton.h> | ||
33 | #include <qtextview.h> | ||
30 | #include <qtimer.h> | 34 | #include <qtimer.h> |
31 | #include <qwhatsthis.h> | 35 | #include <qwhatsthis.h> |
32 | 36 | ||
33 | /* STD */ | 37 | /* STD */ |
34 | #include <sys/types.h> | 38 | #include <sys/types.h> |
35 | #include <signal.h> | 39 | #include <signal.h> |
36 | 40 | ||
37 | ProcessInfo::ProcessInfo( QWidget* parent, const char* name, WFlags fl ) | 41 | ProcessInfo::ProcessInfo( QWidget* parent, const char* name, WFlags fl ) |
38 | : QWidget( parent, name, fl ) | 42 | : QWidget( parent, name, fl ) |
39 | { | 43 | { |
40 | QGridLayout *layout = new QGridLayout( this ); | 44 | QGridLayout *layout = new QGridLayout( this ); |
41 | layout->setSpacing( 4 ); | 45 | layout->setSpacing( 4 ); |
42 | layout->setMargin( 4 ); | 46 | layout->setMargin( 4 ); |
43 | 47 | ||
44 | 48 | ||
45 | ProcessView = new QListView( this, "ProcessView" ); | 49 | ProcessView = new OListView( this, "ProcessView" ); |
46 | int colnum = ProcessView->addColumn( tr( "PID" ) ); | 50 | int colnum = ProcessView->addColumn( tr( "PID" ) ); |
47 | ProcessView->setColumnAlignment( colnum, Qt::AlignRight ); | 51 | ProcessView->setColumnAlignment( colnum, Qt::AlignRight ); |
48 | colnum = ProcessView->addColumn( tr( "Command" ),96 ); | 52 | colnum = ProcessView->addColumn( tr( "Command" ),96 ); |
49 | colnum = ProcessView->addColumn( tr( "Status" ) ); | 53 | colnum = ProcessView->addColumn( tr( "Status" ) ); |
50 | colnum = ProcessView->addColumn( tr( "Time" ) ); | 54 | colnum = ProcessView->addColumn( tr( "Time" ) ); |
51 | ProcessView->setColumnAlignment( colnum, Qt::AlignRight ); | 55 | ProcessView->setColumnAlignment( colnum, Qt::AlignRight ); |
52 | ProcessView->setAllColumnsShowFocus( TRUE ); | 56 | ProcessView->setAllColumnsShowFocus( TRUE ); |
53 | QPEApplication::setStylusOperation( ProcessView->viewport(), QPEApplication::RightOnHold ); | 57 | QPEApplication::setStylusOperation( ProcessView->viewport(), QPEApplication::RightOnHold ); |
54 | connect( ProcessView, SIGNAL( rightButtonPressed(QListViewItem*,const QPoint&,int) ), | 58 | connect( ProcessView, SIGNAL( rightButtonPressed(OListViewItem*,const QPoint&,int) ), |
55 | this, SLOT( viewProcess(QListViewItem*) ) ); | 59 | this, SLOT( viewProcess(OListViewItem*) ) ); |
56 | layout->addMultiCellWidget( ProcessView, 0, 0, 0, 1 ); | 60 | layout->addMultiCellWidget( ProcessView, 0, 0, 0, 1 ); |
57 | QWhatsThis::add( ProcessView, tr( "This is a list of all the processes on this handheld device.\n\nClick and hold on a process to see additional information about the process, or to send a signal to it." ) ); | 61 | QWhatsThis::add( ProcessView, tr( "This is a list of all the processes on this handheld device.\n\nClick and hold on a process to see additional information about the process, or to send a signal to it." ) ); |
58 | 62 | ||
59 | SignalCB = new QComboBox( FALSE, this, "SignalCB" ); | 63 | SignalCB = new QComboBox( FALSE, this, "SignalCB" ); |
60 | SignalCB->insertItem( " 1: SIGHUP" ); | 64 | SignalCB->insertItem( " 1: SIGHUP" ); |
61 | SignalCB->insertItem( " 2: SIGINT" ); | 65 | SignalCB->insertItem( " 2: SIGINT" ); |
62 | SignalCB->insertItem( " 3: SIGQUIT" ); | 66 | SignalCB->insertItem( " 3: SIGQUIT" ); |
63 | SignalCB->insertItem( " 5: SIGTRAP" ); | 67 | SignalCB->insertItem( " 5: SIGTRAP" ); |
64 | SignalCB->insertItem( " 6: SIGABRT" ); | 68 | SignalCB->insertItem( " 6: SIGABRT" ); |
65 | SignalCB->insertItem( " 9: SIGKILL" ); | 69 | SignalCB->insertItem( " 9: SIGKILL" ); |
66 | SignalCB->insertItem( "14: SIGALRM" ); | 70 | SignalCB->insertItem( "14: SIGALRM" ); |
67 | SignalCB->insertItem( "15: SIGTERM" ); | 71 | SignalCB->insertItem( "15: SIGTERM" ); |
68 | SignalCB->insertItem( "18: SIGCONT" ); | 72 | SignalCB->insertItem( "18: SIGCONT" ); |
69 | SignalCB->insertItem( "19: SIGSTOP" ); | 73 | SignalCB->insertItem( "19: SIGSTOP" ); |
70 | layout->addWidget( SignalCB, 1, 0 ); | 74 | layout->addWidget( SignalCB, 1, 0 ); |
71 | QWhatsThis::add( SignalCB, tr( "Select a signal here and then click the Send button to the right to send to this process." ) ); | 75 | QWhatsThis::add( SignalCB, tr( "Select a signal here and then click the Send button to the right to send to this process." ) ); |
72 | 76 | ||
73 | SendButton = new QPushButton( this, "SendButton" ); | 77 | SendButton = new QPushButton( this, "SendButton" ); |
74 | SendButton->setMinimumSize( QSize( 50, 24 ) ); | 78 | SendButton->setMinimumSize( QSize( 50, 24 ) ); |
75 | SendButton->setMaximumSize( QSize( 50, 24 ) ); | 79 | SendButton->setMaximumSize( QSize( 50, 24 ) ); |
76 | SendButton->setText( tr( "Send" ) ); | 80 | SendButton->setText( tr( "Send" ) ); |
77 | connect( SendButton, SIGNAL( clicked() ), this, SLOT( slotSendClicked() ) ); | 81 | connect( SendButton, SIGNAL( clicked() ), this, SLOT( slotSendClicked() ) ); |
78 | layout->addWidget( SendButton, 1, 1 ); | 82 | layout->addWidget( SendButton, 1, 1 ); |
79 | QWhatsThis::add( SendButton, tr( "Click here to send the selected signal to this process." ) ); | 83 | QWhatsThis::add( SendButton, tr( "Click here to send the selected signal to this process." ) ); |
80 | 84 | ||
81 | QTimer *t = new QTimer( this ); | 85 | QTimer *t = new QTimer( this ); |
82 | connect( t, SIGNAL( timeout() ), this, SLOT( updateData() ) ); | 86 | connect( t, SIGNAL( timeout() ), this, SLOT( updateData() ) ); |
83 | t->start( 5000 ); | 87 | t->start( 5000 ); |
84 | 88 | ||
85 | updateData(); | 89 | updateData(); |
86 | 90 | ||
87 | ProcessDtl = new Detail(); | 91 | ProcessDtl = new Detail(); |
88 | QWhatsThis::add( ProcessDtl->detailView, tr( "This area shows detailed information about this process." ) ); | 92 | QWhatsThis::add( ProcessDtl->detailView, tr( "This area shows detailed information about this process." ) ); |
89 | } | 93 | } |
90 | 94 | ||
91 | ProcessInfo::~ProcessInfo() | 95 | ProcessInfo::~ProcessInfo() |
92 | {} | 96 | {} |
93 | 97 | ||
94 | void ProcessInfo::updateData() | 98 | void ProcessInfo::updateData() |
95 | { | 99 | { |
96 | int pid, ppid, pgrp, session, tty, tpgid, utime, stime, cutime, cstime, counter, priority, starttime, | 100 | int pid, ppid, pgrp, session, tty, tpgid, utime, stime, cutime, cstime, counter, priority, starttime, |
97 | signal, blocked, sigignore, sigcatch; | 101 | signal, blocked, sigignore, sigcatch; |
98 | uint flags, minflt, cminflt, majflt, cmajflt, timeout, itrealvalue, vsize, rss, rlim, startcode, | 102 | uint flags, minflt, cminflt, majflt, cmajflt, timeout, itrealvalue, vsize, rss, rlim, startcode, |
99 | endcode, startstack, kstkesp, kstkeip, wchan; | 103 | endcode, startstack, kstkesp, kstkeip, wchan; |
100 | char state; | 104 | char state; |
101 | char comm[64]; | 105 | char comm[64]; |
102 | 106 | ||
103 | QString selectedpid; | 107 | QString selectedpid; |
104 | QListViewItem *curritem = ProcessView->currentItem(); | 108 | OListViewItem *curritem = static_cast<OListViewItem*>( ProcessView->currentItem() ); |
105 | if ( curritem ) | 109 | if ( curritem ) |
106 | { | 110 | { |
107 | selectedpid = curritem->text( 0 ); | 111 | selectedpid = curritem->text( 0 ); |
108 | } | 112 | } |
109 | 113 | ||
110 | ProcessView->clear(); | 114 | ProcessView->clear(); |
111 | 115 | ||
112 | QListViewItem *newitem; | 116 | OListViewItem *newitem; |
113 | QListViewItem *selecteditem = 0x0; | 117 | OListViewItem *selecteditem = 0x0; |
114 | QDir *procdir = new QDir("/proc", 0, QDir::Name, QDir::Dirs); | 118 | QDir *procdir = new QDir("/proc", 0, QDir::Name, QDir::Dirs); |
115 | QFileInfoList *proclist = new QFileInfoList(*(procdir->entryInfoList())); | 119 | QFileInfoList *proclist = new QFileInfoList(*(procdir->entryInfoList())); |
116 | if ( proclist ) | 120 | if ( proclist ) |
117 | { | 121 | { |
118 | QFileInfoListIterator it(*proclist); | 122 | QFileInfoListIterator it(*proclist); |
119 | QFileInfo *f; | 123 | QFileInfo *f; |
120 | while ( ( f = it.current() ) != 0 ) | 124 | while ( ( f = it.current() ) != 0 ) |
121 | { | 125 | { |
122 | ++it; | 126 | ++it; |
123 | QString processnum = f->fileName(); | 127 | QString processnum = f->fileName(); |
124 | if ( processnum >= "1" && processnum <= "99999" ) | 128 | if ( processnum >= "1" && processnum <= "99999" ) |
125 | { | 129 | { |
126 | FILE *procfile = fopen( ( QString ) ( "/proc/" + processnum + "/stat"), "r"); | 130 | FILE *procfile = fopen( ( QString ) ( "/proc/" + processnum + "/stat"), "r"); |
127 | 131 | ||
128 | if ( procfile ) | 132 | if ( procfile ) |
129 | { | 133 | { |
130 | fscanf( procfile, | 134 | fscanf( procfile, |
131 | "%d %s %c %d %d %d %d %d %u %u %u %u %u %d %d %d %d %d %d %u %u %d %u %u %u %u %u %u %u %u %d %d %d %d %u", | 135 | "%d %s %c %d %d %d %d %d %u %u %u %u %u %d %d %d %d %d %d %u %u %d %u %u %u %u %u %u %u %u %d %d %d %d %u", |
132 | &pid, comm, &state, &ppid, &pgrp, &session,&tty, &tpgid, &flags, &minflt, &cminflt, | 136 | &pid, comm, &state, &ppid, &pgrp, &session,&tty, &tpgid, &flags, &minflt, &cminflt, |
133 | &majflt, &cmajflt, &utime, &stime, &cutime, &cstime, &counter, &priority, &timeout, | 137 | &majflt, &cmajflt, &utime, &stime, &cutime, &cstime, &counter, &priority, &timeout, |
134 | &itrealvalue, &starttime, &vsize, &rss, &rlim, &startcode, &endcode, &startstack, | 138 | &itrealvalue, &starttime, &vsize, &rss, &rlim, &startcode, &endcode, &startstack, |
135 | &kstkesp, &kstkeip, &signal, &blocked, &sigignore, &sigcatch, &wchan ); | 139 | &kstkesp, &kstkeip, &signal, &blocked, &sigignore, &sigcatch, &wchan ); |
136 | processnum = processnum.rightJustify( 5, ' ' ); | 140 | processnum = processnum.rightJustify( 5, ' ' ); |
137 | QString processcmd = QString( comm ).replace( QRegExp( "[()]" ), "" ); | 141 | QString processcmd = QString( comm ).replace( QRegExp( "[()]" ), "" ); |
138 | QString processstatus = QChar(state); | 142 | QString processstatus = QChar(state); |
139 | QString processtime = QString::number( ( utime + stime ) / 100 ); | 143 | QString processtime = QString::number( ( utime + stime ) / 100 ); |
140 | processtime = processtime.rightJustify( 9, ' ' ); | 144 | processtime = processtime.rightJustify( 9, ' ' ); |
141 | fclose( procfile ); | 145 | fclose( procfile ); |
142 | 146 | ||
143 | newitem = new QListViewItem( ProcessView, processnum, processcmd, processstatus, processtime ); | 147 | newitem = new OListViewItem( ProcessView, processnum, processcmd, processstatus, processtime ); |
144 | if ( processnum == selectedpid ) | 148 | if ( processnum == selectedpid ) |
145 | { | 149 | { |
146 | selecteditem = newitem; | 150 | selecteditem = newitem; |
147 | } | 151 | } |
148 | } | 152 | } |
149 | } | 153 | } |
150 | } | 154 | } |
151 | ProcessView->setCurrentItem( selecteditem ); | 155 | ProcessView->setCurrentItem( selecteditem ); |
152 | } | 156 | } |
153 | 157 | ||
154 | delete proclist; | 158 | delete proclist; |
155 | delete procdir; | 159 | delete procdir; |
156 | } | 160 | } |
157 | 161 | ||
158 | void ProcessInfo::slotSendClicked() | 162 | void ProcessInfo::slotSendClicked() |
159 | { | 163 | { |
160 | QListViewItem *currprocess = ProcessView->currentItem(); | 164 | OListViewItem *currprocess = static_cast<OListViewItem*>( ProcessView->currentItem() ); |
161 | if ( !currprocess ) | 165 | if ( !currprocess ) |
162 | { | 166 | { |
163 | return; | 167 | return; |
164 | } | 168 | } |
165 | 169 | ||
166 | QString capstr = tr( "Really want to send %1\nto this process?" ).arg( SignalCB->currentText() ); | 170 | QString capstr = tr( "Really want to send %1\nto this process?" ).arg( SignalCB->currentText() ); |
167 | 171 | ||
168 | 172 | ||
169 | if ( QMessageBox::warning( this, currprocess->text( 1 ), capstr, | 173 | if ( QMessageBox::warning( this, currprocess->text( 1 ), capstr, |
170 | QMessageBox::Yes | QMessageBox::Default, QMessageBox::No | QMessageBox::Escape ) == QMessageBox::Yes ) | 174 | QMessageBox::Yes | QMessageBox::Default, QMessageBox::No | QMessageBox::Escape ) == QMessageBox::Yes ) |
171 | { | 175 | { |
172 | currprocess = ProcessView->currentItem(); | 176 | currprocess = static_cast<OListViewItem*>( ProcessView->currentItem() ); |
173 | if ( currprocess ) | 177 | if ( currprocess ) |
174 | { | 178 | { |
175 | QString sigstr = SignalCB->currentText(); | 179 | QString sigstr = SignalCB->currentText(); |
176 | sigstr.truncate(2); | 180 | sigstr.truncate(2); |
177 | int sigid = sigstr.toUInt(); | 181 | int sigid = sigstr.toUInt(); |
178 | kill( currprocess->text( 0 ).stripWhiteSpace().toUInt(), sigid ); | 182 | kill( currprocess->text( 0 ).stripWhiteSpace().toUInt(), sigid ); |
179 | } | 183 | } |
180 | } | 184 | } |
181 | 185 | ||
182 | } | 186 | } |
183 | 187 | ||
184 | void ProcessInfo::viewProcess( QListViewItem *process ) | 188 | void ProcessInfo::viewProcess( OListViewItem *process ) |
185 | { | 189 | { |
186 | QString pid= process->text( 0 ).stripWhiteSpace(); | 190 | QString pid= process->text( 0 ).stripWhiteSpace(); |
187 | QString command = process->text( 1 ); | 191 | QString command = process->text( 1 ); |
188 | ProcessDtl->setCaption( pid + " - " + command ); | 192 | ProcessDtl->setCaption( pid + " - " + command ); |
189 | FILE *statfile = fopen( ( QString ) ( "/proc/" + pid + "/status"), "r"); | 193 | FILE *statfile = fopen( ( QString ) ( "/proc/" + pid + "/status"), "r"); |
190 | if ( statfile ) | 194 | if ( statfile ) |
191 | { | 195 | { |
192 | char line[81]; | 196 | char line[81]; |
193 | fgets( line, 81, statfile ); | 197 | fgets( line, 81, statfile ); |
194 | ProcessDtl->detailView->setText( line ); | 198 | ProcessDtl->detailView->setText( line ); |
195 | while ( fgets( line, 81, statfile ) ) | 199 | while ( fgets( line, 81, statfile ) ) |
196 | { | 200 | { |
197 | ProcessDtl->detailView->append( line ); | 201 | ProcessDtl->detailView->append( line ); |
198 | } | 202 | } |
199 | fclose( statfile ); | 203 | fclose( statfile ); |
200 | } | 204 | } |
201 | QPEApplication::showWidget( ProcessDtl ); | 205 | QPEApplication::showWidget( ProcessDtl ); |
202 | } | 206 | } |
diff --git a/noncore/settings/sysinfo/processinfo.h b/noncore/settings/sysinfo/processinfo.h index 687e080..6e7acd5 100644 --- a/noncore/settings/sysinfo/processinfo.h +++ b/noncore/settings/sysinfo/processinfo.h | |||
@@ -1,51 +1,50 @@ | |||
1 | /********************************************************************** | 1 | /********************************************************************** |
2 | ** ProcessInfo | 2 | ** ProcessInfo |
3 | ** | 3 | ** |
4 | ** Display process information | 4 | ** Display process information |
5 | ** | 5 | ** |
6 | ** Copyright (C) 2002, Dan Williams | 6 | ** Copyright (C) 2002, Dan Williams |
7 | ** williamsdr@acm.org | 7 | ** williamsdr@acm.org |
8 | ** http://draknor.net | 8 | ** http://draknor.net |
9 | ** | 9 | ** |
10 | ** This file may be distributed and/or modified under the terms of the | 10 | ** This file may be distributed and/or modified under the terms of the |
11 | ** GNU General Public License version 2 as published by the Free Software | 11 | ** GNU General Public License version 2 as published by the Free Software |
12 | ** Foundation and appearing in the file LICENSE.GPL included in the | 12 | ** Foundation and appearing in the file LICENSE.GPL included in the |
13 | ** packaging of this file. | 13 | ** packaging of this file. |
14 | ** | 14 | ** |
15 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE | 15 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE |
16 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. | 16 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. |
17 | ** | 17 | ** |
18 | **********************************************************************/ | 18 | **********************************************************************/ |
19 | 19 | ||
20 | #ifndef PROCESSINFO_H | 20 | #ifndef PROCESSINFO_H |
21 | #define PROCESSINFO_H | 21 | #define PROCESSINFO_H |
22 | 22 | ||
23 | #include <qwidget.h> | 23 | #include <qwidget.h> |
24 | #include <qlistview.h> | ||
25 | 24 | ||
26 | class Detail; | 25 | class Detail; |
27 | class QComboBox; | 26 | class QComboBox; |
28 | class QListView; | 27 | class OListView; |
29 | class QListViewItem; | 28 | class OListViewItem; |
30 | 29 | ||
31 | class ProcessInfo : public QWidget | 30 | class ProcessInfo : public QWidget |
32 | { | 31 | { |
33 | Q_OBJECT | 32 | Q_OBJECT |
34 | public: | 33 | public: |
35 | ProcessInfo( QWidget *parent = 0, const char *name = 0, WFlags f = 0 ); | 34 | ProcessInfo( QWidget *parent = 0, const char *name = 0, WFlags f = 0 ); |
36 | ~ProcessInfo(); | 35 | ~ProcessInfo(); |
37 | 36 | ||
38 | private: | 37 | private: |
39 | QListView* ProcessView; | 38 | OListView* ProcessView; |
40 | QComboBox* SignalCB; | 39 | QComboBox* SignalCB; |
41 | QPushButton* SendButton; | 40 | QPushButton* SendButton; |
42 | 41 | ||
43 | Detail *ProcessDtl; | 42 | Detail *ProcessDtl; |
44 | 43 | ||
45 | private slots: | 44 | private slots: |
46 | void updateData(); | 45 | void updateData(); |
47 | void slotSendClicked(); | 46 | void slotSendClicked(); |
48 | void viewProcess( QListViewItem * ); | 47 | void viewProcess( OListViewItem * ); |
49 | }; | 48 | }; |
50 | 49 | ||
51 | #endif | 50 | #endif |
diff --git a/noncore/settings/sysinfo/versioninfo.cpp b/noncore/settings/sysinfo/versioninfo.cpp index 0ebcebe..4bebd06 100644 --- a/noncore/settings/sysinfo/versioninfo.cpp +++ b/noncore/settings/sysinfo/versioninfo.cpp | |||
@@ -1,171 +1,172 @@ | |||
1 | /********************************************************************** | 1 | /********************************************************************** |
2 | ** Copyright (C) 2000 Trolltech AS. All rights reserved. | 2 | ** Copyright (C) 2000 Trolltech AS. All rights reserved. |
3 | ** | 3 | ** |
4 | ** This file is part of Qtopia Environment. | 4 | ** This file is part of Qtopia Environment. |
5 | ** | 5 | ** |
6 | ** This file may be distributed and/or modified under the terms of the | 6 | ** This file may be distributed and/or modified under the terms of the |
7 | ** GNU General Public License version 2 as published by the Free Software | 7 | ** GNU General Public License version 2 as published by the Free Software |
8 | ** Foundation and appearing in the file LICENSE.GPL included in the | 8 | ** Foundation and appearing in the file LICENSE.GPL included in the |
9 | ** packaging of this file. | 9 | ** packaging of this file. |
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 "versioninfo.h" | ||
22 | |||
23 | /* OPIE */ | ||
24 | #include <opie2/odevice.h> | ||
21 | #include <qpe/resource.h> | 25 | #include <qpe/resource.h> |
22 | #include <qpe/version.h> | 26 | #include <qpe/version.h> |
23 | 27 | ||
28 | /* QT */ | ||
24 | #include <qfile.h> | 29 | #include <qfile.h> |
25 | #include <qlabel.h> | 30 | #include <qlabel.h> |
26 | #include <qlayout.h> | 31 | #include <qlayout.h> |
27 | #include <qscrollview.h> | 32 | #include <qscrollview.h> |
28 | #include <qtextstream.h> | 33 | #include <qtextstream.h> |
29 | #include <qwhatsthis.h> | 34 | #include <qwhatsthis.h> |
30 | 35 | ||
31 | #include "versioninfo.h" | ||
32 | |||
33 | #include <opie2/odevice.h> | ||
34 | |||
35 | using namespace Opie; | 36 | using namespace Opie; |
36 | 37 | ||
37 | VersionInfo::VersionInfo( QWidget *parent, const char *name, WFlags f ) | 38 | VersionInfo::VersionInfo( QWidget *parent, const char *name, WFlags f ) |
38 | : QWidget( parent, name, f ) | 39 | : QWidget( parent, name, f ) |
39 | { | 40 | { |
40 | setMinimumSize( 200, 150 ); | 41 | setMinimumSize( 200, 150 ); |
41 | 42 | ||
42 | QVBoxLayout *tmpvb = new QVBoxLayout( this ); | 43 | QVBoxLayout *tmpvb = new QVBoxLayout( this ); |
43 | QScrollView *sv = new QScrollView( this ); | 44 | QScrollView *sv = new QScrollView( this ); |
44 | tmpvb->addWidget( sv, 0, 0 ); | 45 | tmpvb->addWidget( sv, 0, 0 ); |
45 | sv->setResizePolicy( QScrollView::AutoOneFit ); | 46 | sv->setResizePolicy( QScrollView::AutoOneFit ); |
46 | sv->setFrameStyle( QFrame::NoFrame ); | 47 | sv->setFrameStyle( QFrame::NoFrame ); |
47 | QWidget *container = new QWidget( sv->viewport() ); | 48 | QWidget *container = new QWidget( sv->viewport() ); |
48 | sv->addChild( container ); | 49 | sv->addChild( container ); |
49 | 50 | ||
50 | QVBoxLayout *vb = new QVBoxLayout( container, 3 ); | 51 | QVBoxLayout *vb = new QVBoxLayout( container, 3 ); |
51 | 52 | ||
52 | QString kernelVersionString; | 53 | QString kernelVersionString; |
53 | QFile file( "/proc/version" ); | 54 | QFile file( "/proc/version" ); |
54 | if ( file.open( IO_ReadOnly ) ) | 55 | if ( file.open( IO_ReadOnly ) ) |
55 | { | 56 | { |
56 | QTextStream t( &file ); | 57 | QTextStream t( &file ); |
57 | QStringList strList; | 58 | QStringList strList; |
58 | 59 | ||
59 | strList = QStringList::split( " " , t.read(), false ); | 60 | strList = QStringList::split( " " , t.read(), false ); |
60 | 61 | ||
61 | kernelVersionString = "<qt>" + tr( "<b>Linux Kernel</b><p>Version: " ); | 62 | kernelVersionString = "<qt>" + tr( "<b>Linux Kernel</b><p>Version: " ); |
62 | kernelVersionString.append( strList[2] ); | 63 | kernelVersionString.append( strList[2] ); |
63 | kernelVersionString.append( "<br>" ); | 64 | kernelVersionString.append( "<br>" ); |
64 | kernelVersionString.append( tr( "Compiled by: " ) ); | 65 | kernelVersionString.append( tr( "Compiled by: " ) ); |
65 | kernelVersionString.append( strList[3] ); | 66 | kernelVersionString.append( strList[3] ); |
66 | kernelVersionString.append("</qt>"); | 67 | kernelVersionString.append("</qt>"); |
67 | file.close(); | 68 | file.close(); |
68 | } | 69 | } |
69 | 70 | ||
70 | QString palmtopVersionString = "<qt>" + tr( "<b>Opie</b><p>Version: " ); | 71 | QString palmtopVersionString = "<qt>" + tr( "<b>Opie</b><p>Version: " ); |
71 | palmtopVersionString.append( QPE_VERSION ); | 72 | palmtopVersionString.append( QPE_VERSION ); |
72 | palmtopVersionString.append( "<br>" ); | 73 | palmtopVersionString.append( "<br>" ); |
73 | #ifdef QPE_VENDOR | 74 | #ifdef QPE_VENDOR |
74 | QString builder = QPE_VENDOR; | 75 | QString builder = QPE_VENDOR; |
75 | #else | 76 | #else |
76 | QString builder = "Unknown"; | 77 | QString builder = "Unknown"; |
77 | #endif | 78 | #endif |
78 | palmtopVersionString.append( tr( "Compiled by: " ) ); | 79 | palmtopVersionString.append( tr( "Compiled by: " ) ); |
79 | palmtopVersionString.append( builder ); | 80 | palmtopVersionString.append( builder ); |
80 | palmtopVersionString.append( "<br>" ); | 81 | palmtopVersionString.append( "<br>" ); |
81 | palmtopVersionString.append( tr( "Built on: " ) ); | 82 | palmtopVersionString.append( tr( "Built on: " ) ); |
82 | palmtopVersionString.append( __DATE__ ); | 83 | palmtopVersionString.append( __DATE__ ); |
83 | palmtopVersionString.append( "</qt>" ); | 84 | palmtopVersionString.append( "</qt>" ); |
84 | 85 | ||
85 | QHBoxLayout *hb1 = new QHBoxLayout( vb ); | 86 | QHBoxLayout *hb1 = new QHBoxLayout( vb ); |
86 | hb1->setSpacing( 2 ); | 87 | hb1->setSpacing( 2 ); |
87 | 88 | ||
88 | QLabel *palmtopLogo = new QLabel( container ); | 89 | QLabel *palmtopLogo = new QLabel( container ); |
89 | QImage logo1 = Resource::loadImage( "logo/opielogo" ); | 90 | QImage logo1 = Resource::loadImage( "logo/opielogo" ); |
90 | logo1 = logo1.smoothScale( 50, 55 ); | 91 | logo1 = logo1.smoothScale( 50, 55 ); |
91 | QPixmap logo1Pixmap; | 92 | QPixmap logo1Pixmap; |
92 | logo1Pixmap.convertFromImage( logo1 ); | 93 | logo1Pixmap.convertFromImage( logo1 ); |
93 | palmtopLogo->setPixmap( logo1Pixmap ); | 94 | palmtopLogo->setPixmap( logo1Pixmap ); |
94 | palmtopLogo->setFixedSize( 60, 60 ); | 95 | palmtopLogo->setFixedSize( 60, 60 ); |
95 | hb1->addWidget( palmtopLogo, 0, Qt::AlignTop + Qt::AlignLeft ); | 96 | hb1->addWidget( palmtopLogo, 0, Qt::AlignTop + Qt::AlignLeft ); |
96 | 97 | ||
97 | QLabel *palmtopVersion = new QLabel( container ); | 98 | QLabel *palmtopVersion = new QLabel( container ); |
98 | palmtopVersion->setText( palmtopVersionString ); | 99 | palmtopVersion->setText( palmtopVersionString ); |
99 | hb1->addWidget( palmtopVersion, 1, Qt::AlignTop + Qt::AlignLeft ); | 100 | hb1->addWidget( palmtopVersion, 1, Qt::AlignTop + Qt::AlignLeft ); |
100 | 101 | ||
101 | 102 | ||
102 | QHBoxLayout *hb2 = new QHBoxLayout( vb ); | 103 | QHBoxLayout *hb2 = new QHBoxLayout( vb ); |
103 | hb1->setSpacing( 2 ); | 104 | hb1->setSpacing( 2 ); |
104 | 105 | ||
105 | QLabel *linuxLogo = new QLabel( container ); | 106 | QLabel *linuxLogo = new QLabel( container ); |
106 | QImage logo2 = Resource::loadImage( "logo/tux-logo" ); | 107 | QImage logo2 = Resource::loadImage( "logo/tux-logo" ); |
107 | logo2 = logo2.smoothScale( 55, 60 ); | 108 | logo2 = logo2.smoothScale( 55, 60 ); |
108 | QPixmap logo2Pixmap; | 109 | QPixmap logo2Pixmap; |
109 | logo2Pixmap.convertFromImage( logo2 ); | 110 | logo2Pixmap.convertFromImage( logo2 ); |
110 | linuxLogo->setPixmap( logo2Pixmap ); | 111 | linuxLogo->setPixmap( logo2Pixmap ); |
111 | linuxLogo->setFixedSize( 60, 60 ); | 112 | linuxLogo->setFixedSize( 60, 60 ); |
112 | hb2->addWidget( linuxLogo, 0, Qt::AlignTop + Qt::AlignLeft ); | 113 | hb2->addWidget( linuxLogo, 0, Qt::AlignTop + Qt::AlignLeft ); |
113 | 114 | ||
114 | QLabel *kernelVersion = new QLabel( container ); | 115 | QLabel *kernelVersion = new QLabel( container ); |
115 | kernelVersion->setText( kernelVersionString ); | 116 | kernelVersion->setText( kernelVersionString ); |
116 | hb2->addWidget( kernelVersion, 1, Qt::AlignTop + Qt::AlignLeft ); | 117 | hb2->addWidget( kernelVersion, 1, Qt::AlignTop + Qt::AlignLeft ); |
117 | 118 | ||
118 | 119 | ||
119 | QHBoxLayout *hb3 = new QHBoxLayout( vb ); | 120 | QHBoxLayout *hb3 = new QHBoxLayout( vb ); |
120 | hb3->setSpacing( 2 ); | 121 | hb3->setSpacing( 2 ); |
121 | 122 | ||
122 | QLabel *palmtopLogo3 = new QLabel( container ); | 123 | QLabel *palmtopLogo3 = new QLabel( container ); |
123 | 124 | ||
124 | OModel model = ODevice::inst()->model(); | 125 | OModel model = ODevice::inst()->model(); |
125 | QString modelPixmap = "sysinfo/"; | 126 | QString modelPixmap = "sysinfo/"; |
126 | if ( model == Model_Zaurus_SLC7x0 ) | 127 | if ( model == Model_Zaurus_SLC7x0 ) |
127 | modelPixmap += "zaurusc700"; | 128 | modelPixmap += "zaurusc700"; |
128 | else if ( model >= Model_Zaurus_SL5000 && model <= Model_Zaurus_SLB600 ) | 129 | else if ( model >= Model_Zaurus_SL5000 && model <= Model_Zaurus_SLB600 ) |
129 | modelPixmap += "zaurus5500"; | 130 | modelPixmap += "zaurus5500"; |
130 | else if ( model >= Model_iPAQ_H31xx && model <= Model_iPAQ_H5xxx ) | 131 | else if ( model >= Model_iPAQ_H31xx && model <= Model_iPAQ_H5xxx ) |
131 | modelPixmap += "ipaq3600"; | 132 | modelPixmap += "ipaq3600"; |
132 | else if ( model >= Model_SIMpad_CL4 && model <= Model_SIMpad_TSinus ) | 133 | else if ( model >= Model_SIMpad_CL4 && model <= Model_SIMpad_TSinus ) |
133 | modelPixmap += "simpad"; | 134 | modelPixmap += "simpad"; |
134 | else | 135 | else |
135 | modelPixmap += "pda"; | 136 | modelPixmap += "pda"; |
136 | 137 | ||
137 | QImage logo3 = Resource::loadImage( modelPixmap ); | 138 | QImage logo3 = Resource::loadImage( modelPixmap ); |
138 | 139 | ||
139 | int width = logo3.width(); | 140 | int width = logo3.width(); |
140 | int height = logo3.height(); | 141 | int height = logo3.height(); |
141 | float aspect = float( height ) / width; | 142 | float aspect = float( height ) / width; |
142 | logo3 = logo3.smoothScale( 50, 50.0 * aspect ); | 143 | logo3 = logo3.smoothScale( 50, 50.0 * aspect ); |
143 | 144 | ||
144 | QPixmap logo3Pixmap; | 145 | QPixmap logo3Pixmap; |
145 | logo3Pixmap.convertFromImage( logo3 ); | 146 | logo3Pixmap.convertFromImage( logo3 ); |
146 | palmtopLogo3->setPixmap( logo3Pixmap ); | 147 | palmtopLogo3->setPixmap( logo3Pixmap ); |
147 | palmtopLogo3->setFixedSize( 60, 100 ); | 148 | palmtopLogo3->setFixedSize( 60, 100 ); |
148 | hb3->addWidget( palmtopLogo3, 0, Qt::AlignTop + Qt::AlignLeft ); | 149 | hb3->addWidget( palmtopLogo3, 0, Qt::AlignTop + Qt::AlignLeft ); |
149 | 150 | ||
150 | QString systemString = "<qt><b>"; | 151 | QString systemString = "<qt><b>"; |
151 | systemString.append( ODevice::inst()->systemString() ); | 152 | systemString.append( ODevice::inst()->systemString() ); |
152 | systemString.append( "</b>" ); | 153 | systemString.append( "</b>" ); |
153 | systemString.append( tr( "<p>Version: " ) ); | 154 | systemString.append( tr( "<p>Version: " ) ); |
154 | systemString.append( ODevice::inst()->systemVersionString() ); | 155 | systemString.append( ODevice::inst()->systemVersionString() ); |
155 | systemString.append( tr( "<br>Model: " ) ); | 156 | systemString.append( tr( "<br>Model: " ) ); |
156 | systemString.append( ODevice::inst()->modelString() ); | 157 | systemString.append( ODevice::inst()->modelString() ); |
157 | systemString.append( tr( "<br>Vendor: " ) ); | 158 | systemString.append( tr( "<br>Vendor: " ) ); |
158 | systemString.append( ODevice::inst()->vendorString() ); | 159 | systemString.append( ODevice::inst()->vendorString() ); |
159 | systemString.append("</qt>"); | 160 | systemString.append("</qt>"); |
160 | 161 | ||
161 | QLabel *systemVersion = new QLabel( container ); | 162 | QLabel *systemVersion = new QLabel( container ); |
162 | systemVersion->setText( systemString ); | 163 | systemVersion->setText( systemString ); |
163 | hb3->addWidget( systemVersion, 1, Qt::AlignTop + Qt::AlignLeft ); | 164 | hb3->addWidget( systemVersion, 1, Qt::AlignTop + Qt::AlignLeft ); |
164 | 165 | ||
165 | QWhatsThis::add( this, tr( "This page shows the current versions of Opie, the Linux kernel and distribution running on this handheld device." ) ); | 166 | QWhatsThis::add( this, tr( "This page shows the current versions of Opie, the Linux kernel and distribution running on this handheld device." ) ); |
166 | } | 167 | } |
167 | 168 | ||
168 | VersionInfo::~VersionInfo() | 169 | VersionInfo::~VersionInfo() |
169 | { | 170 | { |
170 | } | 171 | } |
171 | 172 | ||