author | mickeyl <mickeyl> | 2005-01-29 09:35:52 (UTC) |
---|---|---|
committer | mickeyl <mickeyl> | 2005-01-29 09:35:52 (UTC) |
commit | d4cf8c6020c46e5dc97b75f3a9781ddc15416b3a (patch) (unidiff) | |
tree | c17be6e75e277c3fa0378f352f45766f75031cdb | |
parent | f85af28663814f3262f5ecfcd20a4b4f67c23067 (diff) | |
download | opie-d4cf8c6020c46e5dc97b75f3a9781ddc15416b3a.zip opie-d4cf8c6020c46e5dc97b75f3a9781ddc15416b3a.tar.gz opie-d4cf8c6020c46e5dc97b75f3a9781ddc15416b3a.tar.bz2 |
fix 1505 and suck sysinfo files into the tree instead of cross referencing
eventually we may find that graph and load are of universal usage, then
they should appear in some kind of library
-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 | ||