-rw-r--r-- | ChangeLog | 1 | ||||
-rw-r--r-- | noncore/applets/memoryapplet/graph.cpp | 183 | ||||
-rw-r--r-- | noncore/applets/memoryapplet/graph.h | 89 | ||||
-rw-r--r-- | noncore/applets/memoryapplet/load.cpp | 212 | ||||
-rw-r--r-- | noncore/applets/memoryapplet/load.h | 60 | ||||
-rw-r--r-- | noncore/applets/memoryapplet/memory.cpp | 165 | ||||
-rw-r--r-- | noncore/applets/memoryapplet/memory.h | 63 | ||||
-rw-r--r-- | noncore/applets/memoryapplet/memoryapplet.pro | 14 | ||||
-rw-r--r-- | noncore/applets/memoryapplet/swapfile.cpp | 15 |
9 files changed, 794 insertions, 8 deletions
@@ -1,193 +1,194 @@ | |||
1 | 2005-??-??Opie 1.1.9 | 1 | 2005-??-??Opie 1.1.9 |
2 | 2 | ||
3 | New Features | 3 | New Features |
4 | ------------ | 4 | ------------ |
5 | * Number of icon columns in Launcher is customizable through Launcher.conf (hrw,zecke,mickeyl) | 5 | * Number of icon columns in Launcher is customizable through Launcher.conf (hrw,zecke,mickeyl) |
6 | * Number of icon columns in Launcher is customizable through LauncherSettings (mickeyl) | 6 | * Number of icon columns in Launcher is customizable through LauncherSettings (mickeyl) |
7 | 7 | ||
8 | Fixed Bugs | 8 | Fixed Bugs |
9 | ---------- | 9 | ---------- |
10 | * #1501 - Fixed bug in todo sql backend (eilers) | 10 | * #1501 - Fixed bug in todo sql backend (eilers) |
11 | * #1505 - Added more Swap sizes in memoryapplet (mickeyl) | ||
11 | * #1525 - Hopefully fixed double alarms and not removing alarms set with the Clock application (zecke) | 12 | * #1525 - Hopefully fixed double alarms and not removing alarms set with the Clock application (zecke) |
12 | * #1533 - Security Owner Dialog (shown in case of unsuccessfull authentiacation) wasn't able to display information in non latin1 encoding (zecke) | 13 | * #1533 - Security Owner Dialog (shown in case of unsuccessfull authentiacation) wasn't able to display information in non latin1 encoding (zecke) |
13 | * n.a. - Removed hard coded font sizes in a couple of inputmethods (mickeyl) | 14 | * n.a. - Removed hard coded font sizes in a couple of inputmethods (mickeyl) |
14 | * n.a. - Removed MediumDlg appearing prior to FirstUsage wizard (i.e. calibration) (mickeyl) | 15 | * n.a. - Removed MediumDlg appearing prior to FirstUsage wizard (i.e. calibration) (mickeyl) |
15 | 16 | ||
16 | Internal | 17 | Internal |
17 | -------- | 18 | -------- |
18 | * Added the Qtopia 1.7 SDK macros for quick-apps to easa compilation of 3rd party apps against our headers (mickeyl) | 19 | * Added the Qtopia 1.7 SDK macros for quick-apps to easa compilation of 3rd party apps against our headers (mickeyl) |
19 | * You can now use the Opie build system in combination with a OpenEmbedded staging area which makes a nice cross development environment (mickeyl) | 20 | * You can now use the Opie build system in combination with a OpenEmbedded staging area which makes a nice cross development environment (mickeyl) |
20 | * Made Opie compilable with Qt/Embedded 2.3.10 (ar) | 21 | * Made Opie compilable with Qt/Embedded 2.3.10 (ar) |
21 | * Changed Launcher to get default orientation from ODevice w/ QWS_DISPLAY overriding (mickeyl) | 22 | * Changed Launcher to get default orientation from ODevice w/ QWS_DISPLAY overriding (mickeyl) |
22 | 23 | ||
23 | 2004-11-26Opie 1.1.8 | 24 | 2004-11-26Opie 1.1.8 |
24 | 25 | ||
25 | New Features | 26 | New Features |
26 | ------------ | 27 | ------------ |
27 | * PackageManager supports installation of local ipkg files (drw) | 28 | * PackageManager supports installation of local ipkg files (drw) |
28 | * PackageManager supports linking of applications to root (drw) | 29 | * PackageManager supports linking of applications to root (drw) |
29 | * PackageManager supports src/gz feeds (drw,wimpie) | 30 | * PackageManager supports src/gz feeds (drw,wimpie) |
30 | * Added a syslog information tab to sysinfo (mickeyl) | 31 | * Added a syslog information tab to sysinfo (mickeyl) |
31 | * Added new, more consistent, PIM icons + a GIMP teplate (ar) | 32 | * Added new, more consistent, PIM icons + a GIMP teplate (ar) |
32 | 33 | ||
33 | Fixed Bugs | 34 | Fixed Bugs |
34 | ---------- | 35 | ---------- |
35 | * #1017 - Tetrix doesn't display correctly for high resolution screens (drw) | 36 | * #1017 - Tetrix doesn't display correctly for high resolution screens (drw) |
36 | * #1269 - VCards were imported into personal area if it was activated (eilers) | 37 | * #1269 - VCards were imported into personal area if it was activated (eilers) |
37 | * #1464 - Packagemanager dont set active filter after install a package (drw) | 38 | * #1464 - Packagemanager dont set active filter after install a package (drw) |
38 | * #1479 - Improved VCard-Parser to import VCards created by Evolution 2 and Apple Addressbook (eilers) | 39 | * #1479 - Improved VCard-Parser to import VCards created by Evolution 2 and Apple Addressbook (eilers) |
39 | * #1493 - Fixed one column layout bug of the launcher (hrw) | 40 | * #1493 - Fixed one column layout bug of the launcher (hrw) |
40 | * n.a. - PackageManager - (Minor UI tweak) in filter dialog, when option is enabled, set focus to widget that corresponds to that option (drw) | 41 | * n.a. - PackageManager - (Minor UI tweak) in filter dialog, when option is enabled, set focus to widget that corresponds to that option (drw) |
41 | * n.a. - PackageManager - (Minor UI tweak) fix double entry in source feed configuration when adding a new feed (drw) | 42 | * n.a. - PackageManager - (Minor UI tweak) fix double entry in source feed configuration when adding a new feed (drw) |
42 | * n.a. - Battery Applet - fix sizing of battery info popup (drw,mickeyl) | 43 | * n.a. - Battery Applet - fix sizing of battery info popup (drw,mickeyl) |
43 | 44 | ||
44 | Internal | 45 | Internal |
45 | -------- | 46 | -------- |
46 | * Moved libopie1 to unsupported (mickeyl) | 47 | * Moved libopie1 to unsupported (mickeyl) |
47 | * Implemented generic queryByExample() with incremental searching. A lot of internal changes of the Pim2-library (eilers) | 48 | * Implemented generic queryByExample() with incremental searching. A lot of internal changes of the Pim2-library (eilers) |
48 | * Added fast and full featured and incremental sorted() for SQL addressbook backend (eilers) | 49 | * Added fast and full featured and incremental sorted() for SQL addressbook backend (eilers) |
49 | 50 | ||
50 | 2004-11-14Opie 1.1.7 | 51 | 2004-11-14Opie 1.1.7 |
51 | 52 | ||
52 | New Features | 53 | New Features |
53 | ------------ | 54 | ------------ |
54 | * libOpieDB now uses SQLite V3 instead V2. Remember to upgrade your database files! (eilers) | 55 | * libOpieDB now uses SQLite V3 instead V2. Remember to upgrade your database files! (eilers) |
55 | * Backup now uses the busy indicator when backing up and restore (ar) | 56 | * Backup now uses the busy indicator when backing up and restore (ar) |
56 | * OpiePlayer2 gained adding of Directories to the playlist (zecke) | 57 | * OpiePlayer2 gained adding of Directories to the playlist (zecke) |
57 | * OpiePlayer2 better error handling (zecke) | 58 | * OpiePlayer2 better error handling (zecke) |
58 | * OpiePlayer2 progress indication while streaming (zecke) | 59 | * OpiePlayer2 progress indication while streaming (zecke) |
59 | * OpiePlayer2 ported to use libxine 1.0.0-rc6a (brad,zecke) | 60 | * OpiePlayer2 ported to use libxine 1.0.0-rc6a (brad,zecke) |
60 | * Ported brightnessapplet from Qtopia 1.7 (mickeyl) | 61 | * Ported brightnessapplet from Qtopia 1.7 (mickeyl) |
61 | * Opie-Eye got a Digital Camera File Backend (alwin,zecke) | 62 | * Opie-Eye got a Digital Camera File Backend (alwin,zecke) |
62 | * Support for Tuxpad1 of Tradesquare.NL (mickeyl,zecke) | 63 | * Support for Tuxpad1 of Tradesquare.NL (mickeyl,zecke) |
63 | * Opie-Console use Custom Font and Size in a Profile (harlekin) | 64 | * Opie-Console use Custom Font and Size in a Profile (harlekin) |
64 | * Opie-Console transparently log the Output and Input to a file (harlekin) | 65 | * Opie-Console transparently log the Output and Input to a file (harlekin) |
65 | * Added new O-menu icon to lock the PDA immediately: opie-lockapplet (clem) | 66 | * Added new O-menu icon to lock the PDA immediately: opie-lockapplet (clem) |
66 | * Opie-Security now hides the plugin-based authentication tabs if no auth. plugin package is installed (clem) | 67 | * Opie-Security now hides the plugin-based authentication tabs if no auth. plugin package is installed (clem) |
67 | * Opie-Security gained a 'test authentication' button (clem) | 68 | * Opie-Security gained a 'test authentication' button (clem) |
68 | * Opie-Eye got a more unique layout (menubar), a slideshow, user can setup some defaults | 69 | * Opie-Eye got a more unique layout (menubar), a slideshow, user can setup some defaults |
69 | * Opie-Mail improve the handling of POP mail boxes (alwin) | 70 | * Opie-Mail improve the handling of POP mail boxes (alwin) |
70 | * Both Opie-Eye and Opie-Mail were greatly improved due the hard work of Rajko Albrecht(alwin) | 71 | * Both Opie-Eye and Opie-Mail were greatly improved due the hard work of Rajko Albrecht(alwin) |
71 | * Opie IRC - backports of the 'NeIRC fork' (zecke) | 72 | * Opie IRC - backports of the 'NeIRC fork' (zecke) |
72 | 73 | ||
73 | Fixed Bugs | 74 | Fixed Bugs |
74 | ---------- | 75 | ---------- |
75 | * #501 - Pickboard is able to show 'Umlaute' (TT,zecke) | 76 | * #501 - Pickboard is able to show 'Umlaute' (TT,zecke) |
76 | * #608 - Make Opie usable for left handed users (zecke) | 77 | * #608 - Make Opie usable for left handed users (zecke) |
77 | * #957 - Import of VCards/VTodos/VEvents with BASE64 encoding (ljp,zecke) | 78 | * #957 - Import of VCards/VTodos/VEvents with BASE64 encoding (ljp,zecke) |
78 | * #1245 - Opie-Go 'paused' (zecke) | 79 | * #1245 - Opie-Go 'paused' (zecke) |
79 | * #1358 - DocTab didn't show any MimeTypes (was fixed earlier) (zecke) | 80 | * #1358 - DocTab didn't show any MimeTypes (was fixed earlier) (zecke) |
80 | * #1380 - QDateBookAccess::remove() doesn't remove entries (eilers, zecke) | 81 | * #1380 - QDateBookAccess::remove() doesn't remove entries (eilers, zecke) |
81 | * #1395 - Build VNC Backend with gcc3.4 | 82 | * #1395 - Build VNC Backend with gcc3.4 |
82 | * #1440 - The icon of opie-mobilemsg is missing (CoreDump) | 83 | * #1440 - The icon of opie-mobilemsg is missing (CoreDump) |
83 | * #1426 - Add missing opie-bartender Icon (CoreDump) | 84 | * #1426 - Add missing opie-bartender Icon (CoreDump) |
84 | * #1445 - Opie-Sheet Has No Icon (CoreDump) | 85 | * #1445 - Opie-Sheet Has No Icon (CoreDump) |
85 | * #1448 - Brightness Applet added (mickeyl) | 86 | * #1448 - Brightness Applet added (mickeyl) |
86 | * #1450 - ZSame didn't clear the bonus item after winning a game (zecke) | 87 | * #1450 - ZSame didn't clear the bonus item after winning a game (zecke) |
87 | * #1482 - Fix OFileSelector to be able to sort by size (zecke) | 88 | * #1482 - Fix OFileSelector to be able to sort by size (zecke) |
88 | * n.a. - Opie-mail: fixed some crasher, some layout-problems | 89 | * n.a. - Opie-mail: fixed some crasher, some layout-problems |
89 | * n.a. - Converted applications to not hardcode /opt/QtPalmtop but to use QPEApplication::qpeDir (zecke) | 90 | * n.a. - Converted applications to not hardcode /opt/QtPalmtop but to use QPEApplication::qpeDir (zecke) |
90 | * n.a. - Converted usage of qpeDir() not to include a '/' as first charachter of the string (zecke) | 91 | * n.a. - Converted usage of qpeDir() not to include a '/' as first charachter of the string (zecke) |
91 | * n.a. - Build system: Enable distcc and ccache when crosscompiling too, and use them everywhere we can (clem) | 92 | * n.a. - Build system: Enable distcc and ccache when crosscompiling too, and use them everywhere we can (clem) |
92 | * n.a. - Build system: Fix deps in several config.in (and fix scripts/deps.pl too) to stop breaking builds, especially with make -j highNumber (clem) | 93 | * n.a. - Build system: Fix deps in several config.in (and fix scripts/deps.pl too) to stop breaking builds, especially with make -j highNumber (clem) |
93 | * n.a. - Removed hardcoded icon size in a couple of applets (mickeyl) | 94 | * n.a. - Removed hardcoded icon size in a couple of applets (mickeyl) |
94 | 95 | ||
95 | Internal | 96 | Internal |
96 | -------- | 97 | -------- |
97 | * Opie-Qashmoney has been moved to unsupported (mickeyl) | 98 | * Opie-Qashmoney has been moved to unsupported (mickeyl) |
98 | * Opie-Ubrowser has been moved to unsupported (mickeyl) | 99 | * Opie-Ubrowser has been moved to unsupported (mickeyl) |
99 | 100 | ||
100 | 2004-09-17Opie 1.1.6 | 101 | 2004-09-17Opie 1.1.6 |
101 | 102 | ||
102 | New Features | 103 | New Features |
103 | ------------ | 104 | ------------ |
104 | * Fifteen gained configurable number of items (zecke) | 105 | * Fifteen gained configurable number of items (zecke) |
105 | * Fifteen can have custom background images (zecke) | 106 | * Fifteen can have custom background images (zecke) |
106 | * Added daemonizing capabilities to QWS Server [via Qt/Embedded] (mickeyl) | 107 | * Added daemonizing capabilities to QWS Server [via Qt/Embedded] (mickeyl) |
107 | * Integrated the new security framework into libopie2 (zecke,clem) | 108 | * Integrated the new security framework into libopie2 (zecke,clem) |
108 | * Converted the launcher to use the new security framework (zecke) | 109 | * Converted the launcher to use the new security framework (zecke) |
109 | * Backup can now handle custom locations for backup and restore (ar) | 110 | * Backup can now handle custom locations for backup and restore (ar) |
110 | * Implemented right-on-hold feedback (wimpie,zecke) | 111 | * Implemented right-on-hold feedback (wimpie,zecke) |
111 | * Lots of new features in opie-reader (tim,pohly) | 112 | * Lots of new features in opie-reader (tim,pohly) |
112 | * Build system cleanups (schurig) | 113 | * Build system cleanups (schurig) |
113 | 114 | ||
114 | Fixed Bugs | 115 | Fixed Bugs |
115 | -------- | 116 | -------- |
116 | * #1005 - Fixed backup to CompactFlash (ar) | 117 | * #1005 - Fixed backup to CompactFlash (ar) |
117 | * #1167 - Fixed Opie write crashing on more text than one page (ar) | 118 | * #1167 - Fixed Opie write crashing on more text than one page (ar) |
118 | * #1225 - Fixed repeated light flashing on Zaurus with keyz (mickeyl) | 119 | * #1225 - Fixed repeated light flashing on Zaurus with keyz (mickeyl) |
119 | * #1359 - Fixed bookmarks in Gutenbrowser (ljp) | 120 | * #1359 - Fixed bookmarks in Gutenbrowser (ljp) |
120 | * #1361 - Fixed auto upercase in Opie-Addressbook (eilers) | 121 | * #1361 - Fixed auto upercase in Opie-Addressbook (eilers) |
121 | * #1370 - Pimconverter now reacts on cancel key (eilers) | 122 | * #1370 - Pimconverter now reacts on cancel key (eilers) |
122 | * #1376 - Bring back the capslock/numlock display (zecke) | 123 | * #1376 - Bring back the capslock/numlock display (zecke) |
123 | * #1383 - Language settings now warns about losing open apps (Markus Litz) | 124 | * #1383 - Language settings now warns about losing open apps (Markus Litz) |
124 | * #1393 - Fixed line wrap issues in opie-console for the default profile (mickeyl) | 125 | * #1393 - Fixed line wrap issues in opie-console for the default profile (mickeyl) |
125 | * #1394 - Fixed oversized headline in opie-login (coredump) | 126 | * #1394 - Fixed oversized headline in opie-login (coredump) |
126 | * #1396 - Opie-console captures the escape key and vim is working (zecke) | 127 | * #1396 - Opie-console captures the escape key and vim is working (zecke) |
127 | * #1401 - Scrollbar is now only visible if necessary in DocTab (mickeyl) | 128 | * #1401 - Scrollbar is now only visible if necessary in DocTab (mickeyl) |
128 | 129 | ||
129 | 2004-07-06Opie 1.1.4 | 130 | 2004-07-06Opie 1.1.4 |
130 | 131 | ||
131 | New Features | 132 | New Features |
132 | ------------ | 133 | ------------ |
133 | * Added four themes courtesy Robert Griebl (http://www.softforge.de/zstyle) | 134 | * Added four themes courtesy Robert Griebl (http://www.softforge.de/zstyle) |
134 | * Added Conversion tool for pim-data (eilers) | 135 | * Added Conversion tool for pim-data (eilers) |
135 | * Introduced new OPimAccessFactory and OBackendFactory which simplyfies database access (eilers) | 136 | * Introduced new OPimAccessFactory and OBackendFactory which simplyfies database access (eilers) |
136 | * Modified the PIM API for providing generic use of OPimRecords (eilers) | 137 | * Modified the PIM API for providing generic use of OPimRecords (eilers) |
137 | * Clicking on the application symbol now iterates over the application's top level widgets if already raised (zecke) | 138 | * Clicking on the application symbol now iterates over the application's top level widgets if already raised (zecke) |
138 | 139 | ||
139 | Fixed Bugs | 140 | Fixed Bugs |
140 | -------- | 141 | -------- |
141 | * #1068 - Country Drop Down Box Off Screen | 142 | * #1068 - Country Drop Down Box Off Screen |
142 | * #1291 - Opie tinykate does not open .desktop files (ar) | 143 | * #1291 - Opie tinykate does not open .desktop files (ar) |
143 | * #1291 - Opie sheet not saving correctly (ar) | 144 | * #1291 - Opie sheet not saving correctly (ar) |
144 | * #1294 - Opie does not know about British Summer Time | 145 | * #1294 - Opie does not know about British Summer Time |
145 | * #1314 - Drawpad initialization (mickeyl) | 146 | * #1314 - Drawpad initialization (mickeyl) |
146 | * #1317 - Packagemanager crashes on hold-down or install (chicken) | 147 | * #1317 - Packagemanager crashes on hold-down or install (chicken) |
147 | * #1321 - Batteryapplet graphic glitch (harlekin) | 148 | * #1321 - Batteryapplet graphic glitch (harlekin) |
148 | * #1324 - ZSafe not starting up (mickeyl) | 149 | * #1324 - ZSafe not starting up (mickeyl) |
149 | * #1328 - Personal Home Address fields is trimmed to 1char (eilers) | 150 | * #1328 - Personal Home Address fields is trimmed to 1char (eilers) |
150 | * #1327 - Opie-mail ipk does not depend on libopiedb2 (chicken) | 151 | * #1327 - Opie-mail ipk does not depend on libopiedb2 (chicken) |
151 | * #1345 - Networksettingsplugin wlan plugin dependency on libpcap0 (mickeyl) | 152 | * #1345 - Networksettingsplugin wlan plugin dependency on libpcap0 (mickeyl) |
152 | * #1348 - Datebook dependency on libopiedb2 (chicken) | 153 | * #1348 - Datebook dependency on libopiedb2 (chicken) |
153 | * #1328 - Switched SQLDatabase and VCards char encoding from latin1 to unicode (eilers) | 154 | * #1328 - Switched SQLDatabase and VCards char encoding from latin1 to unicode (eilers) |
154 | 155 | ||
155 | 2004-04-25Opie 1.1.3 | 156 | 2004-04-25Opie 1.1.3 |
156 | 157 | ||
157 | * Introduced first implementation of SQL-Support using SQLite (eilers) | 158 | * Introduced first implementation of SQL-Support using SQLite (eilers) |
158 | * Added a new Gutenberg Project reader app - opie-gutenbrowser (ljp) | 159 | * Added a new Gutenberg Project reader app - opie-gutenbrowser (ljp) |
159 | * Added a real system graffiti character set (brad) | 160 | * Added a real system graffiti character set (brad) |
160 | * Added Generic Keyconfig Widget (zecke) | 161 | * Added Generic Keyconfig Widget (zecke) |
161 | * Improved Screenshotapplet and Drawpad integration. You can now open a screenshot in drawpad and take notes (zecke) | 162 | * Improved Screenshotapplet and Drawpad integration. You can now open a screenshot in drawpad and take notes (zecke) |
162 | * Added new Bible reader app - opie-dagger (drw) | 163 | * Added new Bible reader app - opie-dagger (drw) |
163 | * Added a new Image Viewer. Work is ongoing (zecke,alwin) | 164 | * Added a new Image Viewer. Work is ongoing (zecke,alwin) |
164 | * Added namespace usage in libopie2 and everywhere (zecke,alwin) | 165 | * Added namespace usage in libopie2 and everywhere (zecke,alwin) |
165 | * Enabled the possibility to pass command line arguments to applications (mickeyl) | 166 | * Enabled the possibility to pass command line arguments to applications (mickeyl) |
166 | * Added an about applet showing some credits and information about Opie (mickeyl) | 167 | * Added an about applet showing some credits and information about Opie (mickeyl) |
167 | * Added benchmarking functionality to sysinfo (mickeyl) | 168 | * Added benchmarking functionality to sysinfo (mickeyl) |
168 | * Added applet and configuration application for switching hardware keyboard layouts (alwin) | 169 | * Added applet and configuration application for switching hardware keyboard layouts (alwin) |
169 | * Ported applications from libopie1 to libopie2* (drw,ar,alwin) | 170 | * Ported applications from libopie1 to libopie2* (drw,ar,alwin) |
170 | * Imported fullscreen and font improvements from the Qkonsole fork to embeddedkonsole (waspe) | 171 | * Imported fullscreen and font improvements from the Qkonsole fork to embeddedkonsole (waspe) |
171 | * Clean-up of package information in control files (drw) | 172 | * Clean-up of package information in control files (drw) |
172 | * Repaired mediummount which was broken since integrating the quicklauncher (alwin) | 173 | * Repaired mediummount which was broken since integrating the quicklauncher (alwin) |
173 | * Improved big-screen support (zecke,ar) | 174 | * Improved big-screen support (zecke,ar) |
174 | * Improved multikeyboard support, added keyboard layout switching applet (mouse) | 175 | * Improved multikeyboard support, added keyboard layout switching applet (mouse) |
175 | * Added a new mail client based on libetpan (harlekin,alwin,jgf) | 176 | * Added a new mail client based on libetpan (harlekin,alwin,jgf) |
176 | * Added new package manager - opie-packagemanager (drw) | 177 | * Added new package manager - opie-packagemanager (drw) |
177 | * Improved light-n-power for C7x0 (mickeyl) | 178 | * Improved light-n-power for C7x0 (mickeyl) |
178 | * Added automatic rotation support for C7x0 (treke) | 179 | * Added automatic rotation support for C7x0 (treke) |
179 | * Split libopie1 up into a set of smaller - functionally grouped - libraries (mickeyl) | 180 | * Split libopie1 up into a set of smaller - functionally grouped - libraries (mickeyl) |
180 | * Added scanning the wireless network neighbourhood to networksettings (mickeyl) | 181 | * Added scanning the wireless network neighbourhood to networksettings (mickeyl) |
181 | 182 | ||
182 | 2003-11-29Opie 1.0.3 | 183 | 2003-11-29Opie 1.0.3 |
183 | 184 | ||
184 | * Released as Version 1.0.3 | 185 | * Released as Version 1.0.3 |
185 | * Improved i18n (various contributors) | 186 | * Improved i18n (various contributors) |
186 | * Reduced application startup time by integrating the TT quicklauncher (zecke,harlekin) | 187 | * Reduced application startup time by integrating the TT quicklauncher (zecke,harlekin) |
187 | * Made the Documents Tab optional (mickeyl) | 188 | * Made the Documents Tab optional (mickeyl) |
188 | * Integrated basic support for HP iPAQ 54xx and the Jornada 5xx (chicken) | 189 | * Integrated basic support for HP iPAQ 54xx and the Jornada 5xx (chicken) |
189 | 190 | ||
190 | 2003-08-04Opie 1.0.0 | 191 | 2003-08-04Opie 1.0.0 |
191 | 192 | ||
192 | * Released as Version 1.0.0 | 193 | * Released as Version 1.0.0 |
193 | * Including a PPP module for easy dial up (tille,harlekin,zecke) | 194 | * Including a PPP module for easy dial up (tille,harlekin,zecke) |
diff --git a/noncore/applets/memoryapplet/graph.cpp b/noncore/applets/memoryapplet/graph.cpp new file mode 100644 index 0000000..0b02bf7 --- a/dev/null +++ b/noncore/applets/memoryapplet/graph.cpp | |||
@@ -0,0 +1,183 @@ | |||
1 | /********************************************************************** | ||
2 | ** Copyright (C) 2000 Trolltech AS. All rights reserved. | ||
3 | ** | ||
4 | ** This file is part of Qtopia Environment. | ||
5 | ** | ||
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 | ||
8 | ** Foundation and appearing in the file LICENSE.GPL included in the | ||
9 | ** packaging of this file. | ||
10 | ** | ||
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. | ||
13 | ** | ||
14 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. | ||
15 | ** | ||
16 | ** Contact info@trolltech.com if any conditions of this licensing are | ||
17 | ** not clear to you. | ||
18 | ** | ||
19 | **********************************************************************/ | ||
20 | |||
21 | #include <qpainter.h> | ||
22 | #include <qpixmap.h> | ||
23 | #include "graph.h" | ||
24 | |||
25 | void GraphData::clear() | ||
26 | { | ||
27 | names.clear(); | ||
28 | values.resize(0); | ||
29 | } | ||
30 | |||
31 | void GraphData::addItem( const QString &name, int value ) | ||
32 | { | ||
33 | names.append( name ); | ||
34 | values.resize( values.size() + 1 ); | ||
35 | values[values.size()-1] = value; | ||
36 | } | ||
37 | |||
38 | Graph::Graph(QWidget *parent, const char *name, WFlags f ) | ||
39 | : QFrame( parent, name, f ) | ||
40 | { | ||
41 | } | ||
42 | |||
43 | PieGraph::PieGraph(QWidget *parent, const char *name, WFlags f ) | ||
44 | : Graph( parent, name, f ) | ||
45 | { | ||
46 | } | ||
47 | |||
48 | void PieGraph::drawContents( QPainter *p ) | ||
49 | { | ||
50 | int size = QMIN( contentsRect().width(), contentsRect().height() ) - 1; | ||
51 | |||
52 | int total = 0; | ||
53 | for ( unsigned i = 0; i < data->count(); i++ ) | ||
54 | total += data->value(i); | ||
55 | |||
56 | int angle = 0; | ||
57 | for ( unsigned i = 0; i < data->count(); i++ ) { | ||
58 | int len; | ||
59 | if ( i == data->count() - 1 || !total ) | ||
60 | len = 5760 - angle; | ||
61 | else | ||
62 | len = data->value(i) * 5760 / total; | ||
63 | QColor col; | ||
64 | col.setHsv( i * 360 / data->count(), 255, 255 ); | ||
65 | p->setBrush( col ); | ||
66 | p->drawPie ( contentsRect().x(), contentsRect().y(), | ||
67 | size, size, angle, len+32 ); | ||
68 | angle += len; | ||
69 | } | ||
70 | } | ||
71 | |||
72 | BarGraph::BarGraph(QWidget *parent, const char *name, WFlags f ) | ||
73 | : Graph( parent, name, f ) | ||
74 | { | ||
75 | setMinimumHeight( 10 ); | ||
76 | setMaximumHeight( 45 ); | ||
77 | } | ||
78 | |||
79 | void BarGraph::drawContents( QPainter *p ) | ||
80 | { | ||
81 | int h = contentsRect().height(); | ||
82 | int y = contentsRect().top(); | ||
83 | |||
84 | int total = 0; | ||
85 | for ( unsigned i = 0; i < data->count(); i++ ) | ||
86 | total += data->value(i); | ||
87 | |||
88 | int pos = 0; | ||
89 | for ( unsigned i = 0; i < data->count(); i++ ) { | ||
90 | int len; | ||
91 | if ( i == data->count() - 1 || !total ) | ||
92 | len = contentsRect().width() - pos; | ||
93 | else | ||
94 | len = data->value(i) * contentsRect().width() / total; | ||
95 | QColor col; | ||
96 | col.setHsv( i * 360 / data->count(), 255, 255 ); | ||
97 | drawSegment( p, QRect(contentsRect().x() + pos, y, len, h), col ); | ||
98 | pos += len; | ||
99 | } | ||
100 | } | ||
101 | |||
102 | void BarGraph::drawSegment( QPainter *p, const QRect &r, const QColor &c ) | ||
103 | { | ||
104 | if ( QPixmap::defaultDepth() > 8 ) { | ||
105 | QColor topgrad = c.light(170); | ||
106 | QColor botgrad = c.dark(); | ||
107 | |||
108 | int h1, h2, s1, s2, v1, v2; | ||
109 | topgrad.hsv( &h1, &s1, &v1 ); | ||
110 | botgrad.hsv( &h2, &s2, &v2 ); | ||
111 | int ng = r.height(); | ||
112 | for ( int j =0; j < ng; j++ ) { | ||
113 | p->setPen( QColor( h1 + ((h2-h1)*j)/(ng-1), | ||
114 | s1 + ((s2-s1)*j)/(ng-1), | ||
115 | v1 + ((v2-v1)*j)/(ng-1), QColor::Hsv ) ); | ||
116 | p->drawLine( r.x(), r.top()+j, r.x()+r.width(), r.top()+j ); | ||
117 | } | ||
118 | } else { | ||
119 | p->fillRect( r.x(), r.top(), r.width(), r.height(), c ); | ||
120 | } | ||
121 | } | ||
122 | |||
123 | |||
124 | GraphLegend::GraphLegend( QWidget *parent, const char *name, WFlags f ) | ||
125 | : QFrame( parent, name, f ) | ||
126 | { | ||
127 | horz = FALSE; | ||
128 | } | ||
129 | |||
130 | void GraphLegend::setOrientation(Orientation o) | ||
131 | { | ||
132 | horz = o == Horizontal; | ||
133 | } | ||
134 | |||
135 | void GraphLegend::drawContents( QPainter *p ) | ||
136 | { | ||
137 | int total = 0; | ||
138 | for ( unsigned i = 0; i < data->count(); i++ ) | ||
139 | total += data->value(i); | ||
140 | |||
141 | int tw = width()/data->count()-1; | ||
142 | int th = height()/(horz ? 1 : data->count()); | ||
143 | if ( th > p->fontMetrics().height() ) | ||
144 | th = p->fontMetrics().height(); | ||
145 | int x = 0; | ||
146 | int y = 0; | ||
147 | for ( unsigned i = 0; i < data->count(); i++ ) { | ||
148 | QColor col; | ||
149 | col.setHsv( i * 360 / data->count(), 255, 255 ); | ||
150 | p->setBrush( col ); | ||
151 | p->drawRect( x+1, y+1, th - 2, th - 2 ); | ||
152 | p->drawText( x+th + 1, y + p->fontMetrics().ascent()+1, data->name(i) ); | ||
153 | if ( horz ) { | ||
154 | x += tw; | ||
155 | } else { | ||
156 | y += th; | ||
157 | } | ||
158 | } | ||
159 | } | ||
160 | |||
161 | QSize GraphLegend::sizeHint() const | ||
162 | { | ||
163 | int th = fontMetrics().height() + 2; | ||
164 | int maxw = 0; | ||
165 | for ( unsigned i = 0; i < data->count(); i++ ) { | ||
166 | int w = fontMetrics().width( data->name(i) ); | ||
167 | if ( w > maxw ) | ||
168 | maxw = w; | ||
169 | } | ||
170 | if ( 0 && horz ) { | ||
171 | return QSize( maxw * data->count(), th ); | ||
172 | } else { | ||
173 | return QSize( maxw, th * data->count() ); | ||
174 | } | ||
175 | } | ||
176 | |||
177 | void GraphLegend::setData( const GraphData *p ) | ||
178 | { | ||
179 | data = p; | ||
180 | int th = fontMetrics().height(); | ||
181 | setMinimumHeight( th * ( horz ? 1 : data->count() ) ); | ||
182 | updateGeometry(); | ||
183 | } | ||
diff --git a/noncore/applets/memoryapplet/graph.h b/noncore/applets/memoryapplet/graph.h new file mode 100644 index 0000000..5a65e79 --- a/dev/null +++ b/noncore/applets/memoryapplet/graph.h | |||
@@ -0,0 +1,89 @@ | |||
1 | /********************************************************************** | ||
2 | ** Copyright (C) 2000 Trolltech AS. All rights reserved. | ||
3 | ** | ||
4 | ** This file is part of Qtopia Environment. | ||
5 | ** | ||
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 | ||
8 | ** Foundation and appearing in the file LICENSE.GPL included in the | ||
9 | ** packaging of this file. | ||
10 | ** | ||
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. | ||
13 | ** | ||
14 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. | ||
15 | ** | ||
16 | ** Contact info@trolltech.com if any conditions of this licensing are | ||
17 | ** not clear to you. | ||
18 | ** | ||
19 | **********************************************************************/ | ||
20 | |||
21 | #include <qframe.h> | ||
22 | #include <qarray.h> | ||
23 | #include <qstringlist.h> | ||
24 | |||
25 | class GraphData | ||
26 | { | ||
27 | public: | ||
28 | void clear(); | ||
29 | void addItem( const QString &name, int value ); | ||
30 | |||
31 | const QString &name( int i ) const { return names[i]; } | ||
32 | int value( int i ) const { return values[i]; } | ||
33 | unsigned count() const { return values.size(); } | ||
34 | |||
35 | private: | ||
36 | QStringList names; | ||
37 | QArray<int> values; | ||
38 | }; | ||
39 | |||
40 | class Graph : public QFrame | ||
41 | { | ||
42 | Q_OBJECT | ||
43 | public: | ||
44 | Graph( QWidget *parent = 0, const char *name = 0, WFlags f = 0 ); | ||
45 | |||
46 | void setData( const GraphData *p ) { data = p; } | ||
47 | |||
48 | protected: | ||
49 | const GraphData *data; | ||
50 | }; | ||
51 | |||
52 | class PieGraph : public Graph | ||
53 | { | ||
54 | Q_OBJECT | ||
55 | public: | ||
56 | PieGraph( QWidget *parent = 0, const char *name = 0, WFlags f = 0 ); | ||
57 | |||
58 | protected: | ||
59 | virtual void drawContents( QPainter *p ); | ||
60 | }; | ||
61 | |||
62 | class BarGraph : public Graph | ||
63 | { | ||
64 | Q_OBJECT | ||
65 | public: | ||
66 | BarGraph( QWidget *parent = 0, const char *name = 0, WFlags f = 0 ); | ||
67 | |||
68 | protected: | ||
69 | virtual void drawContents( QPainter *p ); | ||
70 | void drawSegment( QPainter *p, const QRect &r, const QColor &c ); | ||
71 | }; | ||
72 | |||
73 | class GraphLegend : public QFrame | ||
74 | { | ||
75 | Q_OBJECT | ||
76 | public: | ||
77 | GraphLegend( QWidget *parent = 0, const char *name = 0, WFlags f = 0 ); | ||
78 | |||
79 | void setData( const GraphData *p ); | ||
80 | virtual QSize sizeHint() const; | ||
81 | void setOrientation(Orientation o); | ||
82 | |||
83 | protected: | ||
84 | virtual void drawContents( QPainter *p ); | ||
85 | |||
86 | private: | ||
87 | const GraphData *data; | ||
88 | bool horz; | ||
89 | }; | ||
diff --git a/noncore/applets/memoryapplet/load.cpp b/noncore/applets/memoryapplet/load.cpp new file mode 100644 index 0000000..d9d7a66 --- a/dev/null +++ b/noncore/applets/memoryapplet/load.cpp | |||
@@ -0,0 +1,212 @@ | |||
1 | /********************************************************************** | ||
2 | ** Copyright (C) 2000 Trolltech AS. All rights reserved. | ||
3 | ** | ||
4 | ** This file is part of Qtopia Environment. | ||
5 | ** | ||
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 | ||
8 | ** Foundation and appearing in the file LICENSE.GPL included in the | ||
9 | ** packaging of this file. | ||
10 | ** | ||
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. | ||
13 | ** | ||
14 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. | ||
15 | ** | ||
16 | ** Contact info@trolltech.com if any conditions of this licensing are | ||
17 | ** not clear to you. | ||
18 | ** | ||
19 | **********************************************************************/ | ||
20 | |||
21 | #include <stdio.h> | ||
22 | |||
23 | #include <qfile.h> | ||
24 | #include <qlayout.h> | ||
25 | #include <qlabel.h> | ||
26 | #include <qpainter.h> | ||
27 | #include <qpixmap.h> | ||
28 | #include <qtextstream.h> | ||
29 | #include <qtimer.h> | ||
30 | #include <qwhatsthis.h> | ||
31 | |||
32 | #include "load.h" | ||
33 | |||
34 | LoadInfo::LoadInfo( QWidget *parent, const char *name, WFlags f ) | ||
35 | : QWidget( parent, name, f ) | ||
36 | { | ||
37 | QVBoxLayout *vb = new QVBoxLayout( this, 6 ); | ||
38 | |||
39 | QString cpuInfo = getCpuInfo(); | ||
40 | if ( !cpuInfo.isNull() ) | ||
41 | vb->addWidget( new QLabel( cpuInfo, this ) ); | ||
42 | vb->addWidget( new Load( this ), 100 ); | ||
43 | QLabel *l = new QLabel( this ); | ||
44 | l->setPixmap( makeLabel( red, tr("Application CPU usage (%)") ) ); | ||
45 | vb->addWidget( l, 1 ); | ||
46 | l = new QLabel( this ); | ||
47 | l->setPixmap( makeLabel( green, tr("System CPU usage (%)") ) ); | ||
48 | vb->addWidget( l, 1 ); | ||
49 | vb->addStretch(50); | ||
50 | |||
51 | QWhatsThis::add( this, tr( "This page shows how much this device's processor is being used." ) ); | ||
52 | } | ||
53 | |||
54 | QPixmap LoadInfo::makeLabel( const QColor &col, const QString &text ) | ||
55 | { | ||
56 | int h = fontMetrics().height(); | ||
57 | QPixmap pm( 20 + fontMetrics().width( text ), h ); | ||
58 | QPainter p( &pm ); | ||
59 | p.fillRect( pm.rect(), colorGroup().background() ); | ||
60 | p.fillRect( 0, h/2-4, 18, h/2+3, black ); | ||
61 | p.setPen( col ); | ||
62 | p.drawLine( 2, h/2, 15, h/2 ); | ||
63 | p.setPen( colorGroup().text() ); | ||
64 | p.drawText( 20, fontMetrics().ascent(), text ); | ||
65 | |||
66 | return pm; | ||
67 | } | ||
68 | |||
69 | QString LoadInfo::getCpuInfo() | ||
70 | { | ||
71 | bool haveInfo = FALSE; | ||
72 | QString info = tr("Type: "); | ||
73 | QFile f( "/proc/cpuinfo" ); | ||
74 | if ( f.open( IO_ReadOnly ) ) { | ||
75 | QTextStream ts( &f ); | ||
76 | |||
77 | while ( !ts.atEnd() ) { | ||
78 | QString s = ts.readLine(); | ||
79 | if ( s.find( "model name" ) == 0 ) { | ||
80 | info += s.mid( s.find( ':' ) + 2 ); | ||
81 | haveInfo = TRUE; | ||
82 | } else if ( s.find( "cpu MHz" ) == 0 ) { | ||
83 | double mhz = s.mid( s.find( ':' ) + 2 ).toDouble(); | ||
84 | info += " " + QString::number( mhz, 'f', 0 ); | ||
85 | info += "MHz"; | ||
86 | break; | ||
87 | } else if ( s.find( "Processor" ) == 0 ) { | ||
88 | info += s.mid( s.find( ':' ) + 2 ); | ||
89 | haveInfo = TRUE; | ||
90 | break; | ||
91 | #ifdef __MIPSEL__ | ||
92 | } else if ( s.find( "cpu model" ) == 0 ) { | ||
93 | info += " " + s.mid( s.find( ':' ) + 2 ); | ||
94 | break; | ||
95 | } else if ( s.find( "cpu" ) == 0 ) { | ||
96 | info += s.mid( s.find( ':' ) + 2 ); | ||
97 | haveInfo = TRUE; | ||
98 | #endif | ||
99 | } | ||
100 | } | ||
101 | } | ||
102 | |||
103 | if ( !haveInfo ) | ||
104 | info = QString(); | ||
105 | |||
106 | return info; | ||
107 | } | ||
108 | |||
109 | Load::Load( QWidget *parent, const char *name, WFlags f ) | ||
110 | : QWidget( parent, name, f ) | ||
111 | { | ||
112 | setMinimumHeight( 30 ); | ||
113 | setBackgroundColor( black ); | ||
114 | points = 100; | ||
115 | setMinimumWidth( points ); | ||
116 | userLoad = new double [points]; | ||
117 | systemLoad = new double [points]; | ||
118 | for ( int i = 0; i < points; i++ ) { | ||
119 | userLoad[i] = 0.0; | ||
120 | systemLoad[i] = 0.0; | ||
121 | } | ||
122 | maxLoad = 1.3; | ||
123 | QTimer *timer = new QTimer( this ); | ||
124 | connect( timer, SIGNAL(timeout()), SLOT(timeout()) ); | ||
125 | timer->start( 2000 ); | ||
126 | gettimeofday( &last, 0 ); | ||
127 | first = TRUE; | ||
128 | timeout(); | ||
129 | } | ||
130 | |||
131 | void Load::paintEvent( QPaintEvent * ) | ||
132 | { | ||
133 | QPainter p( this ); | ||
134 | |||
135 | int h = height() - 5; | ||
136 | |||
137 | int mult = (int)(h / maxLoad); | ||
138 | |||
139 | p.setPen( gray ); | ||
140 | p.drawLine( 0, h - mult, width(), h - mult ); | ||
141 | p.drawText( 0, h - mult, "100" ); | ||
142 | p.drawText( 0, h, "0" ); | ||
143 | |||
144 | p.setPen( green ); | ||
145 | for ( int i = 1; i < points; i++ ) { | ||
146 | int x1 = (i - 1) * width() / points; | ||
147 | int x2 = i * width() / points; | ||
148 | p.drawLine( x1, h - systemLoad[i-1] * mult, | ||
149 | x2, h - systemLoad[i] * mult ); | ||
150 | } | ||
151 | |||
152 | p.setPen( red ); | ||
153 | for ( int i = 1; i < points; i++ ) { | ||
154 | int x1 = (i - 1) * width() / points; | ||
155 | int x2 = i * width() / points; | ||
156 | p.drawLine( x1, h - userLoad[i-1] * mult, | ||
157 | x2, h - userLoad[i] * mult ); | ||
158 | } | ||
159 | } | ||
160 | |||
161 | void Load::timeout() | ||
162 | { | ||
163 | int user; | ||
164 | int usernice; | ||
165 | int sys; | ||
166 | int idle; | ||
167 | FILE *fp; | ||
168 | fp = fopen( "/proc/stat", "r" ); | ||
169 | fscanf( fp, "cpu %d %d %d %d", &user, &usernice, &sys, &idle ); | ||
170 | fclose( fp ); | ||
171 | struct timeval now; | ||
172 | gettimeofday( &now, 0 ); | ||
173 | int tdiff = now.tv_usec - last.tv_usec; | ||
174 | tdiff += (now.tv_sec - last.tv_sec) * 1000000; | ||
175 | tdiff /= 10000; | ||
176 | |||
177 | int udiff = user - lastUser; | ||
178 | int sdiff = sys - lastSys; | ||
179 | if ( tdiff > 0 ) { | ||
180 | double uload = (double)udiff / (double)tdiff; | ||
181 | double sload = (double)sdiff / (double)tdiff; | ||
182 | if ( !first ) { | ||
183 | for ( int i = 1; i < points; i++ ) { | ||
184 | userLoad[i-1] = userLoad[i]; | ||
185 | systemLoad[i-1] = systemLoad[i]; | ||
186 | } | ||
187 | userLoad[points-1] = uload; | ||
188 | systemLoad[points-1] = sload; | ||
189 | // scroll( -width()/points, 0, QRect( 0, 0, width() - width()/points + 1, height() ) ); | ||
190 | repaint( TRUE ); | ||
191 | double ml = 1.3; | ||
192 | /* | ||
193 | for ( int i = 0; i < points; i++ ) { | ||
194 | if ( userLoad[i] > ml ) | ||
195 | ml = userLoad[i]; | ||
196 | } | ||
197 | */ | ||
198 | if ( maxLoad != ml ) { | ||
199 | maxLoad = ml; | ||
200 | update(); | ||
201 | } | ||
202 | } | ||
203 | |||
204 | last = now; | ||
205 | lastUser = user; | ||
206 | lastSys = sys; | ||
207 | first = FALSE; | ||
208 | } else if ( tdiff < 0 ) { | ||
209 | last = now; | ||
210 | } | ||
211 | } | ||
212 | |||
diff --git a/noncore/applets/memoryapplet/load.h b/noncore/applets/memoryapplet/load.h new file mode 100644 index 0000000..e7f5388 --- a/dev/null +++ b/noncore/applets/memoryapplet/load.h | |||
@@ -0,0 +1,60 @@ | |||
1 | /********************************************************************** | ||
2 | ** Copyright (C) 2000 Trolltech AS. All rights reserved. | ||
3 | ** | ||
4 | ** This file is part of Qtopia Environment. | ||
5 | ** | ||
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 | ||
8 | ** Foundation and appearing in the file LICENSE.GPL included in the | ||
9 | ** packaging of this file. | ||
10 | ** | ||
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. | ||
13 | ** | ||
14 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. | ||
15 | ** | ||
16 | ** Contact info@trolltech.com if any conditions of this licensing are | ||
17 | ** not clear to you. | ||
18 | ** | ||
19 | **********************************************************************/ | ||
20 | |||
21 | #include <sys/time.h> | ||
22 | #include <qwidget.h> | ||
23 | |||
24 | /* | ||
25 | Little load meter | ||
26 | */ | ||
27 | class Load : public QWidget { | ||
28 | Q_OBJECT | ||
29 | public: | ||
30 | Load( QWidget *parent = 0, const char *name = 0, WFlags f = 0 ); | ||
31 | |||
32 | protected: | ||
33 | void paintEvent( QPaintEvent *ev ); | ||
34 | |||
35 | private slots: | ||
36 | void timeout(); | ||
37 | |||
38 | private: | ||
39 | int points; | ||
40 | double *userLoad; | ||
41 | double *systemLoad; | ||
42 | double maxLoad; | ||
43 | struct timeval last; | ||
44 | int lastUser; | ||
45 | int lastUsernice; | ||
46 | int lastSys; | ||
47 | int lastIdle; | ||
48 | bool first; | ||
49 | }; | ||
50 | |||
51 | class LoadInfo : public QWidget | ||
52 | { | ||
53 | Q_OBJECT | ||
54 | public: | ||
55 | LoadInfo( QWidget *parent = 0, const char *name = 0, WFlags f = 0 ); | ||
56 | |||
57 | private: | ||
58 | QPixmap makeLabel( const QColor &col, const QString &text ); | ||
59 | QString getCpuInfo(); | ||
60 | }; | ||
diff --git a/noncore/applets/memoryapplet/memory.cpp b/noncore/applets/memoryapplet/memory.cpp new file mode 100644 index 0000000..05349e4 --- a/dev/null +++ b/noncore/applets/memoryapplet/memory.cpp | |||
@@ -0,0 +1,165 @@ | |||
1 | /********************************************************************** | ||
2 | ** Copyright (C) 2000 Trolltech AS. All rights reserved. | ||
3 | ** | ||
4 | ** This file is part of Qtopia Environment. | ||
5 | ** | ||
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 | ||
8 | ** Foundation and appearing in the file LICENSE.GPL included in the | ||
9 | ** packaging of this file. | ||
10 | ** | ||
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. | ||
13 | ** | ||
14 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. | ||
15 | ** | ||
16 | ** Contact info@trolltech.com if any conditions of this licensing are | ||
17 | ** not clear to you. | ||
18 | ** | ||
19 | **********************************************************************/ | ||
20 | |||
21 | #include <qlabel.h> | ||
22 | #include <qtimer.h> | ||
23 | #include <qfile.h> | ||
24 | #include <qtextstream.h> | ||
25 | #include <qlayout.h> | ||
26 | #include <qwhatsthis.h> | ||
27 | #include "graph.h" | ||
28 | #include "memory.h" | ||
29 | |||
30 | MemoryInfo::MemoryInfo( QWidget *parent, const char *name, WFlags f ) | ||
31 | : QWidget( parent, name, f ) | ||
32 | { | ||
33 | QVBoxLayout *vb = new QVBoxLayout( this, 5 ); | ||
34 | |||
35 | totalMem = new QLabel( this ); | ||
36 | vb->addWidget( totalMem ); | ||
37 | |||
38 | data = new GraphData(); | ||
39 | graph = new BarGraph( this ); | ||
40 | graph->setFrameStyle( QFrame::Panel | QFrame::Sunken ); | ||
41 | vb->addWidget( graph, 1 ); | ||
42 | graph->setData( data ); | ||
43 | |||
44 | legend = new GraphLegend( this ); | ||
45 | vb->addWidget( legend ); | ||
46 | legend->setData( data ); | ||
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 | |||
61 | vb->addStretch( 1 ); | ||
62 | updateData(); | ||
63 | |||
64 | QTimer *t = new QTimer( this ); | ||
65 | connect( t, SIGNAL( timeout() ), this, SLOT( updateData() ) ); | ||
66 | t->start( 5000 ); | ||
67 | |||
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 | |||
70 | } | ||
71 | |||
72 | MemoryInfo::~MemoryInfo() | ||
73 | { | ||
74 | delete data; | ||
75 | } | ||
76 | |||
77 | void MemoryInfo::updateData() | ||
78 | { | ||
79 | QFile file( "/proc/meminfo" ); | ||
80 | |||
81 | if ( file.open( IO_ReadOnly ) ) | ||
82 | { | ||
83 | // local variables | ||
84 | QString line; | ||
85 | QString identifier; | ||
86 | QString value; | ||
87 | int position; | ||
88 | QTextStream t( &file ); | ||
89 | |||
90 | while ( !t.atEnd() ) | ||
91 | { | ||
92 | // read a line | ||
93 | line = t.readLine(); | ||
94 | |||
95 | // extract identifier and value from line | ||
96 | position = line.find( ":" ); | ||
97 | identifier = line.left( position ); | ||
98 | value = line.mid( position + 1, line.length() - position - 3 ); | ||
99 | value = value.stripWhiteSpace(); | ||
100 | |||
101 | // copy values in variables | ||
102 | if ( identifier == "MemTotal" ) | ||
103 | { | ||
104 | total = value.toULong(); | ||
105 | } else if ( identifier == "MemFree" ) | ||
106 | { | ||
107 | memfree = value.toULong(); | ||
108 | } else if ( identifier == "Buffers" ) | ||
109 | { | ||
110 | buffers = value.toULong(); | ||
111 | } else if ( identifier == "Cached" ) | ||
112 | { | ||
113 | cached = value.toULong(); | ||
114 | } else if ( identifier == "SwapCached" ) | ||
115 | { | ||
116 | } else if ( identifier == "SwapTotal" ) | ||
117 | { | ||
118 | swaptotal = value.toULong(); | ||
119 | } else if ( identifier == "SwapFree" ) | ||
120 | { | ||
121 | swapfree = value.toULong(); | ||
122 | } | ||
123 | } | ||
124 | |||
125 | file.close(); | ||
126 | |||
127 | // calculate values | ||
128 | used = total - memfree; | ||
129 | swapused = swaptotal - swapfree; | ||
130 | realUsed = total - ( buffers + cached + memfree ); | ||
131 | |||
132 | // visualize values | ||
133 | totalMem->setText( tr( "Total Memory: %1 kB" ).arg( total ) ); | ||
134 | data->clear(); | ||
135 | data->addItem( tr("Used (%1 kB)").arg(realUsed), realUsed ); | ||
136 | data->addItem( tr("Buffers (%1 kB)").arg(buffers), buffers ); | ||
137 | data->addItem( tr("Cached (%1 kB)").arg(cached), cached ); | ||
138 | data->addItem( tr("Free (%1 kB)").arg(memfree), memfree ); | ||
139 | |||
140 | graph->hide(); | ||
141 | graph->show(); | ||
142 | legend->update(); | ||
143 | |||
144 | if (swaptotal > 0) | ||
145 | { | ||
146 | swapMem->setText( tr( "Total Swap: %1 kB" ).arg( swaptotal ) ); | ||
147 | swapdata->clear(); | ||
148 | swapdata->addItem( tr("Used (%1 kB)").arg(swapused), swapused ); | ||
149 | swapdata->addItem( tr("Free (%1 kB)").arg(swapfree), swapfree ); | ||
150 | |||
151 | swapMem->show(); | ||
152 | swapgraph->show(); | ||
153 | swaplegend->show(); | ||
154 | |||
155 | swapgraph->repaint( FALSE ); | ||
156 | swaplegend->update(); | ||
157 | } | ||
158 | else | ||
159 | { | ||
160 | swapMem->hide(); | ||
161 | swapgraph->hide(); | ||
162 | swaplegend->hide(); | ||
163 | } | ||
164 | } | ||
165 | } | ||
diff --git a/noncore/applets/memoryapplet/memory.h b/noncore/applets/memoryapplet/memory.h new file mode 100644 index 0000000..f655604 --- a/dev/null +++ b/noncore/applets/memoryapplet/memory.h | |||
@@ -0,0 +1,63 @@ | |||
1 | /********************************************************************** | ||
2 | ** Copyright (C) 2000 Trolltech AS. All rights reserved. | ||
3 | ** | ||
4 | ** This file is part of Qtopia Environment. | ||
5 | ** | ||
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 | ||
8 | ** Foundation and appearing in the file LICENSE.GPL included in the | ||
9 | ** packaging of this file. | ||
10 | ** | ||
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. | ||
13 | ** | ||
14 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. | ||
15 | ** | ||
16 | ** Contact info@trolltech.com if any conditions of this licensing are | ||
17 | ** not clear to you. | ||
18 | ** | ||
19 | **********************************************************************/ | ||
20 | |||
21 | #ifndef MEMORY_H | ||
22 | #define MEMORY_H | ||
23 | |||
24 | #include <qwidget.h> | ||
25 | |||
26 | class GraphData; | ||
27 | class Graph; | ||
28 | class GraphLegend; | ||
29 | class QLabel; | ||
30 | |||
31 | class MemoryInfo : public QWidget | ||
32 | { | ||
33 | Q_OBJECT | ||
34 | public: | ||
35 | MemoryInfo( QWidget *parent = 0, const char *name = 0, WFlags f = 0 ); | ||
36 | ~MemoryInfo(); | ||
37 | |||
38 | unsigned long total; | ||
39 | unsigned long used; | ||
40 | unsigned long memfree; | ||
41 | unsigned long buffers; | ||
42 | unsigned long cached; | ||
43 | unsigned long realUsed; | ||
44 | unsigned long swaptotal; | ||
45 | unsigned long swapused; | ||
46 | unsigned long swapfree; | ||
47 | |||
48 | private slots: | ||
49 | void updateData(); | ||
50 | |||
51 | private: | ||
52 | QLabel *totalMem; | ||
53 | GraphData *data; | ||
54 | Graph *graph; | ||
55 | GraphLegend *legend; | ||
56 | |||
57 | QLabel* swapMem; | ||
58 | GraphData *swapdata; | ||
59 | Graph *swapgraph; | ||
60 | GraphLegend *swaplegend; | ||
61 | }; | ||
62 | |||
63 | #endif | ||
diff --git a/noncore/applets/memoryapplet/memoryapplet.pro b/noncore/applets/memoryapplet/memoryapplet.pro index 57bb1c9..1dfc02f 100644 --- a/noncore/applets/memoryapplet/memoryapplet.pro +++ b/noncore/applets/memoryapplet/memoryapplet.pro | |||
@@ -1,22 +1,22 @@ | |||
1 | TEMPLATE = lib | 1 | TEMPLATE = lib |
2 | CONFIG += qt plugin warn_on | 2 | CONFIG += qt plugin warn_on |
3 | HEADERS = ../../settings/sysinfo/graph.h \ | 3 | HEADERS = graph.h \ |
4 | ../../settings/sysinfo/load.h \ | 4 | load.h \ |
5 | ../../settings/sysinfo/memory.h \ | 5 | memory.h \ |
6 | memorymeter.h \ | 6 | memorymeter.h \ |
7 | memorystatus.h \ | 7 | memorystatus.h \ |
8 | swapfile.h | 8 | swapfile.h |
9 | SOURCES = ../../settings/sysinfo/graph.cpp \ | 9 | SOURCES = graph.cpp \ |
10 | ../../settings/sysinfo/load.cpp \ | 10 | load.cpp \ |
11 | ../../settings/sysinfo/memory.cpp \ | 11 | memory.cpp \ |
12 | memorymeter.cpp \ | 12 | memorymeter.cpp \ |
13 | memorystatus.cpp \ | 13 | memorystatus.cpp \ |
14 | swapfile.cpp | 14 | swapfile.cpp |
15 | TARGET = memoryapplet | 15 | TARGET = memoryapplet |
16 | DESTDIR = $(OPIEDIR)/plugins/applets | 16 | DESTDIR = $(OPIEDIR)/plugins/applets |
17 | INCLUDEPATH += $(OPIEDIR)/include | 17 | INCLUDEPATH += $(OPIEDIR)/include |
18 | DEPENDPATH += | 18 | DEPENDPATH += |
19 | VERSION = 1.0.0 | 19 | VERSION = 1.0.1 |
20 | LIBS += -lqpe -lopiecore2 -lopieui2 | 20 | LIBS += -lqpe -lopiecore2 -lopieui2 |
21 | 21 | ||
22 | include( $(OPIEDIR)/include.pro ) | 22 | include( $(OPIEDIR)/include.pro ) |
diff --git a/noncore/applets/memoryapplet/swapfile.cpp b/noncore/applets/memoryapplet/swapfile.cpp index 96010c8..4609c13 100644 --- a/noncore/applets/memoryapplet/swapfile.cpp +++ b/noncore/applets/memoryapplet/swapfile.cpp | |||
@@ -1,439 +1,452 @@ | |||
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 "swapfile.h" | 21 | #include "swapfile.h" |
22 | 22 | ||
23 | /* OPIE */ | 23 | /* OPIE */ |
24 | #include <opie2/odebug.h> | 24 | #include <opie2/odebug.h> |
25 | #include <qpe/resource.h> | 25 | #include <qpe/resource.h> |
26 | using namespace Opie::Core; | 26 | using namespace Opie::Core; |
27 | 27 | ||
28 | /* QT */ | 28 | /* QT */ |
29 | #include <qfile.h> | 29 | #include <qfile.h> |
30 | #include <qtextstream.h> | 30 | #include <qtextstream.h> |
31 | #include <qlabel.h> | 31 | #include <qlabel.h> |
32 | #include <qtimer.h> | 32 | #include <qtimer.h> |
33 | #include <qlayout.h> | 33 | #include <qlayout.h> |
34 | #include <qpushbutton.h> | 34 | #include <qpushbutton.h> |
35 | #include <qhbuttongroup.h> | 35 | #include <qhbuttongroup.h> |
36 | #include <qradiobutton.h> | 36 | #include <qradiobutton.h> |
37 | #include <qlineedit.h> | 37 | #include <qlineedit.h> |
38 | #include <qprogressbar.h> | 38 | #include <qprogressbar.h> |
39 | #include <qcombobox.h> | 39 | #include <qcombobox.h> |
40 | #include <qvgroupbox.h> | 40 | #include <qvgroupbox.h> |
41 | #include <qhbox.h> | 41 | #include <qhbox.h> |
42 | #include <qmessagebox.h> | 42 | #include <qmessagebox.h> |
43 | #include <qcopchannel_qws.h> | 43 | #include <qcopchannel_qws.h> |
44 | 44 | ||
45 | /* STD */ | 45 | /* STD */ |
46 | #include <stdio.h> | 46 | #include <stdio.h> |
47 | #include <stdlib.h> | 47 | #include <stdlib.h> |
48 | #include <string.h> | 48 | #include <string.h> |
49 | #include <unistd.h> | 49 | #include <unistd.h> |
50 | #include <fcntl.h> | 50 | #include <fcntl.h> |
51 | #include <sys/vfs.h> | 51 | #include <sys/vfs.h> |
52 | #include <mntent.h> | 52 | #include <mntent.h> |
53 | #include <unistd.h> | 53 | #include <unistd.h> |
54 | #include <sys/types.h> | 54 | #include <sys/types.h> |
55 | 55 | ||
56 | Swapfile::Swapfile( QWidget *parent, const char *name, WFlags f ) | 56 | Swapfile::Swapfile( QWidget *parent, const char *name, WFlags f ) |
57 | : QWidget( parent, name, f ) | 57 | : QWidget( parent, name, f ) |
58 | { | 58 | { |
59 | // are we running as root? | 59 | // are we running as root? |
60 | isRoot = geteuid() == 0; | 60 | isRoot = geteuid() == 0; |
61 | 61 | ||
62 | QVBoxLayout* vb = new QVBoxLayout(this, 5); | 62 | QVBoxLayout* vb = new QVBoxLayout(this, 5); |
63 | 63 | ||
64 | QHButtonGroup* cfsdRBG = new QHButtonGroup(tr("Swapfile location"), this); | 64 | QHButtonGroup* cfsdRBG = new QHButtonGroup(tr("Swapfile location"), this); |
65 | cfsdRBG->setRadioButtonExclusive(true); | 65 | cfsdRBG->setRadioButtonExclusive(true); |
66 | vb->addWidget(cfsdRBG); | 66 | vb->addWidget(cfsdRBG); |
67 | 67 | ||
68 | ramRB = new QRadioButton(tr("RAM"), cfsdRBG); | 68 | ramRB = new QRadioButton(tr("RAM"), cfsdRBG); |
69 | cfRB = new QRadioButton(tr("CF Card"), cfsdRBG); | 69 | cfRB = new QRadioButton(tr("CF Card"), cfsdRBG); |
70 | sdRB = new QRadioButton(tr("SD Card"), cfsdRBG); | 70 | sdRB = new QRadioButton(tr("SD Card"), cfsdRBG); |
71 | 71 | ||
72 | QHBox *hb1 = new QHBox(this); | 72 | QHBox *hb1 = new QHBox(this); |
73 | hb1->setSpacing(5); | 73 | hb1->setSpacing(5); |
74 | 74 | ||
75 | swapPath1 = new QLineEdit(hb1); | 75 | swapPath1 = new QLineEdit(hb1); |
76 | swapPath1->setEnabled(false); | 76 | swapPath1->setEnabled(false); |
77 | 77 | ||
78 | QPushButton* swapOn = new QPushButton(tr(" On "), hb1); | 78 | QPushButton* swapOn = new QPushButton(tr(" On "), hb1); |
79 | QPushButton* swapOff = new QPushButton(tr(" Off "), hb1); | 79 | QPushButton* swapOff = new QPushButton(tr(" Off "), hb1); |
80 | vb->addWidget(hb1); | 80 | vb->addWidget(hb1); |
81 | 81 | ||
82 | QVGroupBox* box1 = new QVGroupBox(tr("Manage Swapfile"), this); | 82 | QVGroupBox* box1 = new QVGroupBox(tr("Manage Swapfile"), this); |
83 | vb->addWidget(box1); | 83 | vb->addWidget(box1); |
84 | 84 | ||
85 | QHBox *hb2 = new QHBox(box1); | 85 | QHBox *hb2 = new QHBox(box1); |
86 | hb2->setSpacing(5); | 86 | hb2->setSpacing(5); |
87 | QPushButton* mkSwap = new QPushButton(tr("Generate"), hb2); | 87 | QPushButton* mkSwap = new QPushButton(tr("Generate"), hb2); |
88 | QPushButton* rmSwap = new QPushButton(tr("Remove"), hb2); | 88 | QPushButton* rmSwap = new QPushButton(tr("Remove"), hb2); |
89 | 89 | ||
90 | QHBox *hb3 = new QHBox(box1); | 90 | QHBox *hb3 = new QHBox(box1); |
91 | hb3->setSpacing(5); | 91 | hb3->setSpacing(5); |
92 | swapSize = new QComboBox(hb3); | 92 | swapSize = new QComboBox(hb3); |
93 | swapSize->insertStringList(QStringList::split(",", tr("2 Mb,4 Mb,6 Mb,8 Mb"))); | 93 | swapSize->insertStringList(QStringList::split(",", tr("2 Mb,4 Mb,6 Mb,8 Mb,16 Mb,32 Mb,64 Mb"))); |
94 | 94 | ||
95 | mkswapProgress = new QProgressBar(3, hb3); | 95 | mkswapProgress = new QProgressBar(3, hb3); |
96 | mkswapProgress->setCenterIndicator(true); | 96 | mkswapProgress->setCenterIndicator(true); |
97 | 97 | ||
98 | QHBox *hb4 = new QHBox(this); | 98 | QHBox *hb4 = new QHBox(this); |
99 | hb4->setSpacing(5); | 99 | hb4->setSpacing(5); |
100 | 100 | ||
101 | swapStatusIcon = new QLabel(hb4); | 101 | swapStatusIcon = new QLabel(hb4); |
102 | swapStatus = new QLabel("", hb4); | 102 | swapStatus = new QLabel("", hb4); |
103 | hb4->setStretchFactor(swapStatus, 99); | 103 | hb4->setStretchFactor(swapStatus, 99); |
104 | vb->addWidget(hb4); | 104 | vb->addWidget(hb4); |
105 | 105 | ||
106 | connect(swapOn, SIGNAL(clicked()), this, SLOT(swapon())); | 106 | connect(swapOn, SIGNAL(clicked()), this, SLOT(swapon())); |
107 | connect(swapOff, SIGNAL(clicked()), this, SLOT(swapoff())); | 107 | connect(swapOff, SIGNAL(clicked()), this, SLOT(swapoff())); |
108 | connect(cfRB, SIGNAL(clicked()), this, SLOT(cfsdchecked())); | 108 | connect(cfRB, SIGNAL(clicked()), this, SLOT(cfsdchecked())); |
109 | connect(sdRB, SIGNAL(clicked()), this, SLOT(cfsdchecked())); | 109 | connect(sdRB, SIGNAL(clicked()), this, SLOT(cfsdchecked())); |
110 | connect(ramRB, SIGNAL(clicked()), this, SLOT(cfsdchecked())); | 110 | connect(ramRB, SIGNAL(clicked()), this, SLOT(cfsdchecked())); |
111 | connect(mkSwap, SIGNAL(clicked()), this, SLOT(makeswapfile())); | 111 | connect(mkSwap, SIGNAL(clicked()), this, SLOT(makeswapfile())); |
112 | connect(rmSwap, SIGNAL(clicked()), this, SLOT(removeswapfile())); | 112 | connect(rmSwap, SIGNAL(clicked()), this, SLOT(removeswapfile())); |
113 | 113 | ||
114 | cfRB->setEnabled(FALSE); | 114 | cfRB->setEnabled(FALSE); |
115 | sdRB->setEnabled(FALSE); | 115 | sdRB->setEnabled(FALSE); |
116 | 116 | ||
117 | QCopChannel *pcmciaChannel = new QCopChannel("QPE/Card", this); | 117 | QCopChannel *pcmciaChannel = new QCopChannel("QPE/Card", this); |
118 | connect(pcmciaChannel, SIGNAL(received(const QCString&,const QByteArray&)), this, SLOT(cardnotify(const QCString&,const QByteArray&))); | 118 | connect(pcmciaChannel, SIGNAL(received(const QCString&,const QByteArray&)), this, SLOT(cardnotify(const QCString&,const QByteArray&))); |
119 | QCopChannel *sdChannel = new QCopChannel("QPE/Card", this); | 119 | QCopChannel *sdChannel = new QCopChannel("QPE/Card", this); |
120 | connect(sdChannel, SIGNAL(received(const QCString&,const QByteArray&)), this, SLOT(cardnotify(const QCString&,const QByteArray&))); | 120 | connect(sdChannel, SIGNAL(received(const QCString&,const QByteArray&)), this, SLOT(cardnotify(const QCString&,const QByteArray&))); |
121 | 121 | ||
122 | cardInPcmcia0 = FALSE; | 122 | cardInPcmcia0 = FALSE; |
123 | cardInPcmcia1 = FALSE; | 123 | cardInPcmcia1 = FALSE; |
124 | cardInSd = FALSE; | 124 | cardInSd = FALSE; |
125 | 125 | ||
126 | Swapfile::status(); | 126 | Swapfile::status(); |
127 | Swapfile::getStatusPcmcia(); | 127 | Swapfile::getStatusPcmcia(); |
128 | Swapfile::getStatusSd(); | 128 | Swapfile::getStatusSd(); |
129 | } | 129 | } |
130 | 130 | ||
131 | int Swapfile::exec(const QString& arg) | 131 | int Swapfile::exec(const QString& arg) |
132 | { | 132 | { |
133 | return system((!isRoot ? "sudo " : "") + arg); | 133 | return system((!isRoot ? "sudo " : "") + arg); |
134 | } | 134 | } |
135 | 135 | ||
136 | 136 | ||
137 | Swapfile::~Swapfile() | 137 | Swapfile::~Swapfile() |
138 | { | 138 | { |
139 | } | 139 | } |
140 | 140 | ||
141 | void Swapfile::cardnotify(const QCString & msg, const QByteArray &) | 141 | void Swapfile::cardnotify(const QCString & msg, const QByteArray &) |
142 | { | 142 | { |
143 | if (msg == "stabChanged()") | 143 | if (msg == "stabChanged()") |
144 | { | 144 | { |
145 | getStatusPcmcia(); | 145 | getStatusPcmcia(); |
146 | } | 146 | } |
147 | else if (msg == "mtabChanged()") | 147 | else if (msg == "mtabChanged()") |
148 | { | 148 | { |
149 | getStatusSd(); | 149 | getStatusSd(); |
150 | } | 150 | } |
151 | } | 151 | } |
152 | 152 | ||
153 | void Swapfile::getStatusPcmcia() | 153 | void Swapfile::getStatusPcmcia() |
154 | { | 154 | { |
155 | 155 | ||
156 | bool cardWas0 = cardInPcmcia0;// remember last state | 156 | bool cardWas0 = cardInPcmcia0;// remember last state |
157 | bool cardWas1 = cardInPcmcia1; | 157 | bool cardWas1 = cardInPcmcia1; |
158 | 158 | ||
159 | QString fileName; | 159 | QString fileName; |
160 | 160 | ||
161 | // one of these 3 files should exist | 161 | // one of these 3 files should exist |
162 | if (QFile::exists("/var/run/stab")) { | 162 | if (QFile::exists("/var/run/stab")) { |
163 | fileName = "/var/run/stab"; | 163 | fileName = "/var/run/stab"; |
164 | } else if (QFile::exists("/var/state/pcmcia/stab")) { | 164 | } else if (QFile::exists("/var/state/pcmcia/stab")) { |
165 | fileName = "/var/state/pcmcia/stab"; | 165 | fileName = "/var/state/pcmcia/stab"; |
166 | } else { | 166 | } else { |
167 | fileName = "/var/lib/pcmcia/stab"; | 167 | fileName = "/var/lib/pcmcia/stab"; |
168 | } | 168 | } |
169 | 169 | ||
170 | QFile f(fileName); | 170 | QFile f(fileName); |
171 | 171 | ||
172 | if (f.open(IO_ReadOnly)) { | 172 | if (f.open(IO_ReadOnly)) { |
173 | QStringList list; | 173 | QStringList list; |
174 | QTextStream stream(&f); | 174 | QTextStream stream(&f); |
175 | QString streamIn; | 175 | QString streamIn; |
176 | streamIn = stream.read(); | 176 | streamIn = stream.read(); |
177 | list = QStringList::split("\n", streamIn); | 177 | list = QStringList::split("\n", streamIn); |
178 | for (QStringList::Iterator line = list.begin(); line != list.end(); | 178 | for (QStringList::Iterator line = list.begin(); line != list.end(); |
179 | line++) { | 179 | line++) { |
180 | if ((*line).startsWith("Socket 0:")) { | 180 | if ((*line).startsWith("Socket 0:")) { |
181 | if ((*line).startsWith("Socket 0: empty") && cardInPcmcia0) { | 181 | if ((*line).startsWith("Socket 0: empty") && cardInPcmcia0) { |
182 | cardInPcmcia0 = FALSE; | 182 | cardInPcmcia0 = FALSE; |
183 | } else if (!(*line).startsWith("Socket 0: empty") | 183 | } else if (!(*line).startsWith("Socket 0: empty") |
184 | && !cardInPcmcia0) { | 184 | && !cardInPcmcia0) { |
185 | cardInPcmcia0 = TRUE; | 185 | cardInPcmcia0 = TRUE; |
186 | } | 186 | } |
187 | } else if ((*line).startsWith("Socket 1:")) { | 187 | } else if ((*line).startsWith("Socket 1:")) { |
188 | if ((*line).startsWith("Socket 1: empty") && cardInPcmcia1) { | 188 | if ((*line).startsWith("Socket 1: empty") && cardInPcmcia1) { |
189 | cardInPcmcia1 = FALSE; | 189 | cardInPcmcia1 = FALSE; |
190 | } else if (!(*line).startsWith("Socket 1: empty") | 190 | } else if (!(*line).startsWith("Socket 1: empty") |
191 | && !cardInPcmcia1) { | 191 | && !cardInPcmcia1) { |
192 | cardInPcmcia1 = TRUE; | 192 | cardInPcmcia1 = TRUE; |
193 | } | 193 | } |
194 | } | 194 | } |
195 | } | 195 | } |
196 | f.close(); | 196 | f.close(); |
197 | 197 | ||
198 | if (cardWas0 != cardInPcmcia0 || cardWas1 != cardInPcmcia1) { | 198 | if (cardWas0 != cardInPcmcia0 || cardWas1 != cardInPcmcia1) { |
199 | QString text = QString::null; | 199 | QString text = QString::null; |
200 | QString what = QString::null; | 200 | QString what = QString::null; |
201 | if (cardWas0 != cardInPcmcia0) { | 201 | if (cardWas0 != cardInPcmcia0) { |
202 | if (cardInPcmcia0) { | 202 | if (cardInPcmcia0) { |
203 | cfRB->setEnabled(TRUE); | 203 | cfRB->setEnabled(TRUE); |
204 | } else { | 204 | } else { |
205 | cfRB->setChecked(FALSE); | 205 | cfRB->setChecked(FALSE); |
206 | cfRB->setEnabled(FALSE); | 206 | cfRB->setEnabled(FALSE); |
207 | } | 207 | } |
208 | } | 208 | } |
209 | 209 | ||
210 | if (cardWas1 != cardInPcmcia1) { | 210 | if (cardWas1 != cardInPcmcia1) { |
211 | if (cardInPcmcia1) { | 211 | if (cardInPcmcia1) { |
212 | cfRB->setEnabled(TRUE); | 212 | cfRB->setEnabled(TRUE); |
213 | } else { | 213 | } else { |
214 | cfRB->setChecked(FALSE); | 214 | cfRB->setChecked(FALSE); |
215 | cfRB->setEnabled(FALSE); | 215 | cfRB->setEnabled(FALSE); |
216 | } | 216 | } |
217 | } | 217 | } |
218 | } | 218 | } |
219 | } else { | 219 | } else { |
220 | // no file found | 220 | // no file found |
221 | odebug << "no file found" << oendl; | 221 | odebug << "no file found" << oendl; |
222 | cardInPcmcia0 = FALSE; | 222 | cardInPcmcia0 = FALSE; |
223 | cardInPcmcia1 = FALSE; | 223 | cardInPcmcia1 = FALSE; |
224 | } | 224 | } |
225 | Swapfile::cfsdchecked(); | 225 | Swapfile::cfsdchecked(); |
226 | } | 226 | } |
227 | 227 | ||
228 | 228 | ||
229 | void Swapfile::getStatusSd() | 229 | void Swapfile::getStatusSd() |
230 | { | 230 | { |
231 | 231 | ||
232 | bool cardWas = cardInSd;// remember last state | 232 | bool cardWas = cardInSd;// remember last state |
233 | cardInSd = FALSE; | 233 | cardInSd = FALSE; |
234 | 234 | ||
235 | #if defined(_OS_LINUX_) || defined(Q_OS_LINUX) | 235 | #if defined(_OS_LINUX_) || defined(Q_OS_LINUX) |
236 | struct mntent *me; | 236 | struct mntent *me; |
237 | FILE *mntfp = setmntent("/etc/mtab", "r"); | 237 | FILE *mntfp = setmntent("/etc/mtab", "r"); |
238 | 238 | ||
239 | if (mntfp) { | 239 | if (mntfp) { |
240 | while ((me = getmntent(mntfp)) != 0) { | 240 | while ((me = getmntent(mntfp)) != 0) { |
241 | QString fs = me->mnt_fsname; | 241 | QString fs = me->mnt_fsname; |
242 | if (fs.left(14) == "/dev/mmc/part1" || fs.left(7) == "/dev/sd" | 242 | if (fs.left(14) == "/dev/mmc/part1" || fs.left(7) == "/dev/sd" |
243 | || fs.left(9) == "/dev/mmcd") { | 243 | || fs.left(9) == "/dev/mmcd") { |
244 | cardInSd = TRUE; | 244 | cardInSd = TRUE; |
245 | show(); | 245 | show(); |
246 | } | 246 | } |
247 | } | 247 | } |
248 | endmntent(mntfp); | 248 | endmntent(mntfp); |
249 | } | 249 | } |
250 | 250 | ||
251 | if (cardWas != cardInSd) { | 251 | if (cardWas != cardInSd) { |
252 | QString text = QString::null; | 252 | QString text = QString::null; |
253 | QString what = QString::null; | 253 | QString what = QString::null; |
254 | if (cardInSd) { | 254 | if (cardInSd) { |
255 | sdRB->setEnabled(TRUE); | 255 | sdRB->setEnabled(TRUE); |
256 | } else { | 256 | } else { |
257 | sdRB->setChecked(FALSE); | 257 | sdRB->setChecked(FALSE); |
258 | sdRB->setEnabled(FALSE); | 258 | sdRB->setEnabled(FALSE); |
259 | } | 259 | } |
260 | } | 260 | } |
261 | #else | 261 | #else |
262 | #error "Not on Linux" | 262 | #error "Not on Linux" |
263 | #endif | 263 | #endif |
264 | Swapfile::cfsdchecked(); | 264 | Swapfile::cfsdchecked(); |
265 | } | 265 | } |
266 | 266 | ||
267 | int rc=0; | 267 | int rc=0; |
268 | 268 | ||
269 | void Swapfile::swapon() | 269 | void Swapfile::swapon() |
270 | { | 270 | { |
271 | char swapcmd[128] ="swapon "; | 271 | char swapcmd[128] ="swapon "; |
272 | Swapfile::cfsdchecked(); | 272 | Swapfile::cfsdchecked(); |
273 | strcat(swapcmd,swapPath1->text()); | 273 | strcat(swapcmd,swapPath1->text()); |
274 | char *runcmd = swapcmd; | 274 | char *runcmd = swapcmd; |
275 | rc = exec(QString("%1").arg(runcmd)); | 275 | rc = exec(QString("%1").arg(runcmd)); |
276 | if (rc != 0) { | 276 | if (rc != 0) { |
277 | setStatusMessage("Failed to attach swapfile.", true); | 277 | setStatusMessage("Failed to attach swapfile.", true); |
278 | } | 278 | } |
279 | else { | 279 | else { |
280 | /* QMessageBox::information(this, "Information", "Swapfile is active!"); */ | 280 | /* QMessageBox::information(this, "Information", "Swapfile is active!"); */ |
281 | setStatusMessage("Swapfile activated."); | 281 | setStatusMessage("Swapfile activated."); |
282 | } | 282 | } |
283 | Swapfile::status(); | 283 | Swapfile::status(); |
284 | } | 284 | } |
285 | 285 | ||
286 | 286 | ||
287 | void Swapfile::setStatusMessage(const QString& text, bool error /* = false */) | 287 | void Swapfile::setStatusMessage(const QString& text, bool error /* = false */) |
288 | { | 288 | { |
289 | swapStatus->setText("<b>" + text + "</b>"); | 289 | swapStatus->setText("<b>" + text + "</b>"); |
290 | swapStatusIcon->setPixmap(Resource::loadPixmap(error ? "close" : "done")); | 290 | swapStatusIcon->setPixmap(Resource::loadPixmap(error ? "close" : "done")); |
291 | } | 291 | } |
292 | 292 | ||
293 | 293 | ||
294 | void Swapfile::swapoff() | 294 | void Swapfile::swapoff() |
295 | { | 295 | { |
296 | char swapcmd[128] ="swapoff "; | 296 | char swapcmd[128] ="swapoff "; |
297 | if (Swapfile::cfRB->isChecked() == TRUE) | 297 | if (Swapfile::cfRB->isChecked() == TRUE) |
298 | Swapfile::cfsdchecked(); | 298 | Swapfile::cfsdchecked(); |
299 | strcat(swapcmd,swapPath1->text()); | 299 | strcat(swapcmd,swapPath1->text()); |
300 | char *runcmd = swapcmd; | 300 | char *runcmd = swapcmd; |
301 | rc = exec(QString("%1").arg(runcmd)); | 301 | rc = exec(QString("%1").arg(runcmd)); |
302 | if (rc != 0) { | 302 | if (rc != 0) { |
303 | setStatusMessage(tr("Failed to detach swapfile."), true); | 303 | setStatusMessage(tr("Failed to detach swapfile."), true); |
304 | } | 304 | } |
305 | else { | 305 | else { |
306 | /* QMessageBox::information(this, "Information", "Swapfile is inactive!"); */ | 306 | /* QMessageBox::information(this, "Information", "Swapfile is inactive!"); */ |
307 | setStatusMessage(tr("Swapfile deactivated.")); | 307 | setStatusMessage(tr("Swapfile deactivated.")); |
308 | /* Swapfile::swapPath->clear();*/ | 308 | /* Swapfile::swapPath->clear();*/ |
309 | } | 309 | } |
310 | Swapfile::status(); | 310 | Swapfile::status(); |
311 | } | 311 | } |
312 | 312 | ||
313 | void Swapfile::cfsdchecked() | 313 | void Swapfile::cfsdchecked() |
314 | { | 314 | { |
315 | /* Swapfile::swapPath->clear();*/ | 315 | /* Swapfile::swapPath->clear();*/ |
316 | Swapfile::swapPath1->clear(); | 316 | Swapfile::swapPath1->clear(); |
317 | if (Swapfile::ramRB->isChecked() == TRUE) | 317 | if (Swapfile::ramRB->isChecked() == TRUE) |
318 | { | 318 | { |
319 | Swapfile::swapPath1->insert("/home/swapfile"); | 319 | Swapfile::swapPath1->insert("/home/swapfile"); |
320 | } | 320 | } |
321 | if (Swapfile::sdRB->isChecked() == TRUE) | 321 | if (Swapfile::sdRB->isChecked() == TRUE) |
322 | { | 322 | { |
323 | Swapfile::swapPath1->insert("/mnt/card/swapfile"); | 323 | Swapfile::swapPath1->insert("/mnt/card/swapfile"); |
324 | } | 324 | } |
325 | if (Swapfile::cfRB->isChecked() == TRUE) | 325 | if (Swapfile::cfRB->isChecked() == TRUE) |
326 | { | 326 | { |
327 | Swapfile::swapPath1->insert("/mnt/cf/swapfile"); | 327 | Swapfile::swapPath1->insert("/mnt/cf/swapfile"); |
328 | } | 328 | } |
329 | /*Swapfile::swapPath->insert(Swapfile::swapPath1->text());*/ | 329 | /*Swapfile::swapPath->insert(Swapfile::swapPath1->text());*/ |
330 | } | 330 | } |
331 | 331 | ||
332 | void Swapfile::makeswapfile() | 332 | void Swapfile::makeswapfile() |
333 | { | 333 | { |
334 | int i = swapSize->currentItem(); | 334 | int i = swapSize->currentItem(); |
335 | 335 | ||
336 | mkswapProgress->setProgress(1); | 336 | mkswapProgress->setProgress(1); |
337 | switch ( i ) { | 337 | switch ( i ) { |
338 | case 0: rc=exec(QString("dd if=/dev/zero of=%1 bs=1k count=2048").arg(swapPath1->text())); | 338 | case 0: rc=exec(QString("dd if=/dev/zero of=%1 bs=1k count=2048").arg(swapPath1->text())); |
339 | break; | 339 | break; |
340 | case 1: rc=exec(QString("dd if=/dev/zero of=%1 bs=1k count=4096").arg(swapPath1->text())); | 340 | case 1: rc=exec(QString("dd if=/dev/zero of=%1 bs=1k count=4096").arg(swapPath1->text())); |
341 | break; | 341 | break; |
342 | case 2: rc=exec(QString("dd if=/dev/zero of=%1 bs=1k count=6144").arg(swapPath1->text())); | 342 | case 2: rc=exec(QString("dd if=/dev/zero of=%1 bs=1k count=6144").arg(swapPath1->text())); |
343 | break; | 343 | break; |
344 | case 3: rc=exec(QString("dd if=/dev/zero of=%1 bs=1k count=8192").arg(swapPath1->text())); | 344 | case 3: rc=exec(QString("dd if=/dev/zero of=%1 bs=1k count=8192").arg(swapPath1->text())); |
345 | break; | 345 | break; |
346 | case 4: rc=exec(QString("dd if=/dev/zero of=%1 bs=1k count=16384").arg(swapPath1->text())); | ||
347 | break; | ||
348 | case 5: rc=exec(QString("dd if=/dev/zero of=%1 bs=1k count=32768").arg(swapPath1->text())); | ||
349 | break; | ||
350 | case 6: rc=exec(QString("dd if=/dev/zero of=%1 bs=1k count=65536").arg(swapPath1->text())); | ||
351 | break; | ||
352 | |||
346 | } | 353 | } |
347 | if (rc != 0) { | 354 | if (rc != 0) { |
348 | setStatusMessage(tr("Failed to create swapfile."), true); | 355 | setStatusMessage(tr("Failed to create swapfile."), true); |
349 | } | 356 | } |
350 | 357 | ||
351 | mkswapProgress->setProgress(2); | 358 | mkswapProgress->setProgress(2); |
352 | rc=exec(QString("mkswap %1").arg(swapPath1->text())); | 359 | rc=exec(QString("mkswap %1").arg(swapPath1->text())); |
353 | if (rc != 0) { | 360 | if (rc != 0) { |
354 | setStatusMessage(tr("Failed to initialize swapfile."), true); | 361 | setStatusMessage(tr("Failed to initialize swapfile."), true); |
355 | } | 362 | } |
356 | mkswapProgress->setProgress(3); | 363 | mkswapProgress->setProgress(3); |
357 | mkswapProgress->reset(); | 364 | mkswapProgress->reset(); |
358 | setStatusMessage(tr("Swapfile created.")); | 365 | setStatusMessage(tr("Swapfile created.")); |
359 | } | 366 | } |
360 | 367 | ||
361 | void Swapfile::removeswapfile() | 368 | void Swapfile::removeswapfile() |
362 | { | 369 | { |
363 | exec(QString("swapoff %1").arg(swapPath1->text())); | 370 | exec(QString("swapoff %1").arg(swapPath1->text())); |
364 | rc=exec(QString("rm -rf %1").arg(swapPath1->text())); | 371 | rc=exec(QString("rm -rf %1").arg(swapPath1->text())); |
365 | if (rc != 0) { | 372 | if (rc != 0) { |
366 | setStatusMessage(tr("Failed to remove swapfile."), true); | 373 | setStatusMessage(tr("Failed to remove swapfile."), true); |
367 | } | 374 | } |
368 | Swapfile::status(); | 375 | Swapfile::status(); |
369 | Swapfile::cfsdchecked(); | 376 | Swapfile::cfsdchecked(); |
370 | setStatusMessage(tr("Swapfile removed.")); | 377 | setStatusMessage(tr("Swapfile removed.")); |
371 | } | 378 | } |
372 | 379 | ||
373 | void Swapfile::status() | 380 | void Swapfile::status() |
374 | { | 381 | { |
375 | FILE *fp; | 382 | FILE *fp; |
376 | char buffer[128], swapfile[128], temp[128]; | 383 | char buffer[128], swapfile[128], temp[128]; |
377 | int swapsize=2000, i=1; | 384 | int swapsize=2000, i=1; |
378 | 385 | ||
379 | fp=fopen("/proc/swaps", "r"); | 386 | fp=fopen("/proc/swaps", "r"); |
380 | while ( (fgets(buffer,128,fp)) != NULL ) { | 387 | while ( (fgets(buffer,128,fp)) != NULL ) { |
381 | sscanf(buffer, "%s %s %d %s %s\n", swapfile, temp, &swapsize, temp, temp); | 388 | sscanf(buffer, "%s %s %d %s %s\n", swapfile, temp, &swapsize, temp, temp); |
382 | } | 389 | } |
383 | fclose(fp); | 390 | fclose(fp); |
384 | 391 | ||
385 | ramRB->setChecked(FALSE); | 392 | ramRB->setChecked(FALSE); |
386 | cfRB->setChecked(FALSE); | 393 | cfRB->setChecked(FALSE); |
387 | sdRB->setChecked(FALSE); | 394 | sdRB->setChecked(FALSE); |
388 | 395 | ||
389 | i=strcmp(swapfile, "/home/swapfile"); | 396 | i=strcmp(swapfile, "/home/swapfile"); |
390 | if ( i == 0 ) { | 397 | if ( i == 0 ) { |
391 | ramRB->setChecked(TRUE); | 398 | ramRB->setChecked(TRUE); |
392 | /* QMessageBox::information(this, "Information", "Swapfile is active!"); */ | 399 | /* QMessageBox::information(this, "Information", "Swapfile is active!"); */ |
393 | setStatusMessage(tr("Swapfile activated.")); | 400 | setStatusMessage(tr("Swapfile activated.")); |
394 | } | 401 | } |
395 | i=strcmp(swapfile, "/usr/mnt.rom/cf/swapfile"); | 402 | i=strcmp(swapfile, "/usr/mnt.rom/cf/swapfile"); |
396 | if ( i == 0 ) { | 403 | if ( i == 0 ) { |
397 | cfRB->setChecked(TRUE); | 404 | cfRB->setChecked(TRUE); |
398 | /* QMessageBox::information(this, "Information", "Swapfile is active!"); */ | 405 | /* QMessageBox::information(this, "Information", "Swapfile is active!"); */ |
399 | setStatusMessage(tr("Swapfile activated.")); | 406 | setStatusMessage(tr("Swapfile activated.")); |
400 | } | 407 | } |
401 | i=strcmp(swapfile, "/mnt/cf/swapfile"); | 408 | i=strcmp(swapfile, "/mnt/cf/swapfile"); |
402 | if ( i == 0 ) { | 409 | if ( i == 0 ) { |
403 | cfRB->setChecked(TRUE); | 410 | cfRB->setChecked(TRUE); |
404 | /* QMessageBox::information(this, "Information", "Swapfile is active!"); */ | 411 | /* QMessageBox::information(this, "Information", "Swapfile is active!"); */ |
405 | setStatusMessage(tr("Swapfile activated.")); | 412 | setStatusMessage(tr("Swapfile activated.")); |
406 | } | 413 | } |
407 | i=strcmp(swapfile, "/usr/mnt.rom/card/swapfile"); | 414 | i=strcmp(swapfile, "/usr/mnt.rom/card/swapfile"); |
408 | if ( i == 0 ) { | 415 | if ( i == 0 ) { |
409 | sdRB->setChecked(TRUE); | 416 | sdRB->setChecked(TRUE); |
410 | /* QMessageBox::information(this, "Information", "Swapfile is active!"); */ | 417 | /* QMessageBox::information(this, "Information", "Swapfile is active!"); */ |
411 | setStatusMessage(tr("Swapfile activated.")); | 418 | setStatusMessage(tr("Swapfile activated.")); |
412 | } | 419 | } |
413 | i=strcmp(swapfile, "/mnt/card/swapfile"); | 420 | i=strcmp(swapfile, "/mnt/card/swapfile"); |
414 | if ( i == 0 ) { | 421 | if ( i == 0 ) { |
415 | sdRB->setChecked(TRUE); | 422 | sdRB->setChecked(TRUE); |
416 | /* QMessageBox::information(this, "Information", "Swapfile is active!"); */ | 423 | /* QMessageBox::information(this, "Information", "Swapfile is active!"); */ |
417 | setStatusMessage(tr("Swapfile activated.")); | 424 | setStatusMessage(tr("Swapfile activated.")); |
418 | } | 425 | } |
419 | 426 | ||
420 | Swapfile::cfsdchecked(); | 427 | Swapfile::cfsdchecked(); |
421 | 428 | ||
422 | 429 | ||
423 | swapsize /=1000; | 430 | swapsize /=1000; |
424 | 431 | ||
425 | switch ( swapsize ) { | 432 | switch ( swapsize ) { |
426 | case 2: swapSize->setCurrentItem(0); | 433 | case 2: swapSize->setCurrentItem(0); |
427 | break; | 434 | break; |
428 | case 4: swapSize->setCurrentItem(1); | 435 | case 4: swapSize->setCurrentItem(1); |
429 | break; | 436 | break; |
430 | case 6: swapSize->setCurrentItem(2); | 437 | case 6: swapSize->setCurrentItem(2); |
431 | break; | 438 | break; |
432 | case 8: swapSize->setCurrentItem(3); | 439 | case 8: swapSize->setCurrentItem(3); |
433 | break; | 440 | break; |
441 | case 16: swapSize->setCurrentItem(4); | ||
442 | break; | ||
443 | case 32: swapSize->setCurrentItem(5); | ||
444 | break; | ||
445 | case 64: swapSize->setCurrentItem(6); | ||
446 | break; | ||
434 | } | 447 | } |
435 | 448 | ||
436 | 449 | ||
437 | } | 450 | } |
438 | 451 | ||
439 | 452 | ||