summaryrefslogtreecommitdiff
authorhrw <hrw>2005-10-16 19:00:43 (UTC)
committer hrw <hrw>2005-10-16 19:00:43 (UTC)
commit965a373e7685c8ae2cfc9955efe20424aa95e10c (patch) (unidiff)
tree2ff27d09825648d8c7b1bb5795de5bf9beb6bb55
parent611de84768e4825d6851dc833bd6402efd572383 (diff)
downloadopie-965a373e7685c8ae2cfc9955efe20424aa95e10c.zip
opie-965a373e7685c8ae2cfc9955efe20424aa95e10c.tar.gz
opie-965a373e7685c8ae2cfc9955efe20424aa95e10c.tar.bz2
fixed bug #1492 - Backup and Restore does not show list of backups to restore on start
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--ChangeLog1
-rw-r--r--noncore/settings/backup/backuprestore.cpp1
2 files changed, 2 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 53a498d..85a26bd 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,341 +1,342 @@
1 2005-??-??Opie 1.2.2 1 2005-??-??Opie 1.2.2
2 2
3 3
4 New Features 4 New Features
5 ------------ 5 ------------
6 6
7 7
8 Fixed Bugs 8 Fixed Bugs
9 ---------- 9 ----------
10 * #1695 - Date selector use too small fontsize on VGA screen (hrw) 10 * #1695 - Date selector use too small fontsize on VGA screen (hrw)
11 * #1686 - opie-console lack UI setting for switching scrollbar (hrw) 11 * #1686 - opie-console lack UI setting for switching scrollbar (hrw)
12 * #1624 - Button settngs changes are applied only after restart (hrw) 12 * #1624 - Button settngs changes are applied only after restart (hrw)
13 * #1492 - Backup and Restore does not show list of backups to restore on start (hrw)
13 * n.a. - remove hardcoded font size from wellenreiter (hrw) 14 * n.a. - remove hardcoded font size from wellenreiter (hrw)
14 * n.a. - added patch to build QT/E 2.3.10 with gc 4.x.x (hrw) 15 * n.a. - added patch to build QT/E 2.3.10 with gc 4.x.x (hrw)
15 16
16 2005-09-11Opie 1.2.1 17 2005-09-11Opie 1.2.1
17 18
18 19
19 New Features 20 New Features
20 ------------ 21 ------------
21 * OpieStumbler: Scans WiFi networks using the wireless extension scanning (skyhusker) 22 * OpieStumbler: Scans WiFi networks using the wireless extension scanning (skyhusker)
22 * Opie-Reader: Support for document formats ArriereGo and Reb, add flite output (tim,pohly) 23 * Opie-Reader: Support for document formats ArriereGo and Reb, add flite output (tim,pohly)
23 * Opie-Networksettings: Add support for wlan-ng devices and improve WEP handling (Dirk Opfer) 24 * Opie-Networksettings: Add support for wlan-ng devices and improve WEP handling (Dirk Opfer)
24 * Wellenreiter: Remove Joining networks - use OpieStumbler for that (mickeyl) 25 * Wellenreiter: Remove Joining networks - use OpieStumbler for that (mickeyl)
25 * Opie-Mobilemsg has gone unsupported - it never really worked and there will be a replacement (mickeyl) 26 * Opie-Mobilemsg has gone unsupported - it never really worked and there will be a replacement (mickeyl)
26 * Opie-Tabmanager has gone unsupported - it barely works and there is not much of a use of it anyway (mickeyl) 27 * Opie-Tabmanager has gone unsupported - it barely works and there is not much of a use of it anyway (mickeyl)
27 * Checkbook: Added configuration option to use smaller font for checkbook transaction tab (hrw) 28 * Checkbook: Added configuration option to use smaller font for checkbook transaction tab (hrw)
28 * ZSafe: Made UI conform to Opie standards (drw) 29 * ZSafe: Made UI conform to Opie standards (drw)
29 * Today Addressbook plugin: Fixed configuration to show/not show birthdays, use checkboxes for selection (hrw) 30 * Today Addressbook plugin: Fixed configuration to show/not show birthdays, use checkboxes for selection (hrw)
30 * Opie-Console: Read initial fixed font configuration from qpe.conf (mickeyl) 31 * Opie-Console: Read initial fixed font configuration from qpe.conf (mickeyl)
31 * Opie-PcmciaApplet: Configure insert/resume actions and bind unsupported cards (mickeyl) 32 * Opie-PcmciaApplet: Configure insert/resume actions and bind unsupported cards (mickeyl)
32 * SysInfo: Remove CPU tab and add Devices tab instead (mickeyl) 33 * SysInfo: Remove CPU tab and add Devices tab instead (mickeyl)
33 * Opie-smb: Added Opie front end for Samba (ljp) 34 * Opie-smb: Added Opie front end for Samba (ljp)
34 * Opie-Bluetooth: Replace obex send implementation and patch libopieobex and the bluetoothapplet (Michael Haynie) 35 * Opie-Bluetooth: Replace obex send implementation and patch libopieobex and the bluetoothapplet (Michael Haynie)
35 * Opieplayer: rudimentary podcast support (ljp) 36 * Opieplayer: rudimentary podcast support (ljp)
36 37
37 Fixed Bugs 38 Fixed Bugs
38 ---------- 39 ----------
39 * #1377 - Suspend Powermanagement when switched to another VT (mickeyl) 40 * #1377 - Suspend Powermanagement when switched to another VT (mickeyl)
40 - We actually suspend the complete Opie now in that case. 41 - We actually suspend the complete Opie now in that case.
41 * #1384 - Battery status updated improperly when charging (skyhusker) 42 * #1384 - Battery status updated improperly when charging (skyhusker)
42 * #1476 - Wrong order of application entries in the O-menu (skyhusker) 43 * #1476 - Wrong order of application entries in the O-menu (skyhusker)
43 * #1514 - Remove usage of cardmon/pcmcia picture in applications. pcmcia is now an inline picture (mickeyl) 44 * #1514 - Remove usage of cardmon/pcmcia picture in applications. pcmcia is now an inline picture (mickeyl)
44 * #1535- Missing line break and unnecessary location shown with Today-Calendar plugin (deller) 45 * #1535- Missing line break and unnecessary location shown with Today-Calendar plugin (deller)
45 * #1543 - Time Settings: "predict" tab is displayed twice after reopen (hrw) 46 * #1543 - Time Settings: "predict" tab is displayed twice after reopen (hrw)
46 * #1546 - Battery applet popup is not always large enough to show jacket remaining info (skyhusker) 47 * #1546 - Battery applet popup is not always large enough to show jacket remaining info (skyhusker)
47 * #1557 - Light&Power-Settings don't store warning intervall and warning levels (skyhusker) 48 * #1557 - Light&Power-Settings don't store warning intervall and warning levels (skyhusker)
48 * #1565 - crash-fix in odevice.cpp while scanning the distribution table (deller) 49 * #1565 - crash-fix in odevice.cpp while scanning the distribution table (deller)
49 * #1614 - Make Opie-console start in $HOME instead of / (skyhusker) 50 * #1614 - Make Opie-console start in $HOME instead of / (skyhusker)
50 * #1635 - opie-today, datebook-plugin does not show notes (skyhusker) 51 * #1635 - opie-today, datebook-plugin does not show notes (skyhusker)
51 * #1665 - Opie-IRC displays the host prepended to the message when peer is using and ipv6 address (skyhusker) 52 * #1665 - Opie-IRC displays the host prepended to the message when peer is using and ipv6 address (skyhusker)
52 * #1666 - Opie-IRC does not allow to add !channels in config asautojoin ones (skyhusker) 53 * #1666 - Opie-IRC does not allow to add !channels in config asautojoin ones (skyhusker)
53 * #1667 - Opie-IRC does not show messages from !channel (skyhusker) 54 * #1667 - Opie-IRC does not show messages from !channel (skyhusker)
54 * #1679 - Security PIN plugin is QVGA sized (hrw) 55 * #1679 - Security PIN plugin is QVGA sized (hrw)
55 * #1682 - Properly resize tab control in OTabWidget (drw) 56 * #1682 - Properly resize tab control in OTabWidget (drw)
56 * n.a. - always show volume and wireless applet popups inside visible screen (deller) 57 * n.a. - always show volume and wireless applet popups inside visible screen (deller)
57 * n.a. - scale O-Menu-Applets appropriately (mickeyl) 58 * n.a. - scale O-Menu-Applets appropriately (mickeyl)
58 * n.a. - libopienet: fix bugs in wireless scanning and setting SSID (skyhusker) 59 * n.a. - libopienet: fix bugs in wireless scanning and setting SSID (skyhusker)
59 * n.a. - Wellenreiter: relax WE version matching test a bit (mickeyl) 60 * n.a. - Wellenreiter: relax WE version matching test a bit (mickeyl)
60 * n.a. - scale BluezApplet appropriately and use larger icons (mickeyl) 61 * n.a. - scale BluezApplet appropriately and use larger icons (mickeyl)
61 * n.a. - memoryapplet: fix crash in memoryapplet on kernels without swap support (seneca cunningham) 62 * n.a. - memoryapplet: fix crash in memoryapplet on kernels without swap support (seneca cunningham)
62 * n.a. - networksettings: ignore hostap control interfaces wifi* (mickeyl) 63 * n.a. - networksettings: ignore hostap control interfaces wifi* (mickeyl)
63 * n.a. - Today Addressbook plugin fix configuration to show/not show birthdays, use checkboxes for selection (hrw) 64 * n.a. - Today Addressbook plugin fix configuration to show/not show birthdays, use checkboxes for selection (hrw)
64 * n.a. - remove hardcoded font size from netsystemtime (hrw) 65 * n.a. - remove hardcoded font size from netsystemtime (hrw)
65 * n.a. - remove hardcoded font size from checkbook graphs (hrw) 66 * n.a. - remove hardcoded font size from checkbook graphs (hrw)
66 * n.a. - Dagger - fixes for Sword 1.5.8, morph tag x-refs, closing last tab crash (drw) 67 * n.a. - Dagger - fixes for Sword 1.5.8, morph tag x-refs, closing last tab crash (drw)
67 68
68 69
69 Internal 70 Internal
70 -------- 71 --------
71 * Make BluezApplet use OTaskbarApplet (mickeyl) 72 * Make BluezApplet use OTaskbarApplet (mickeyl)
72 * libopiecore: rewrite OFileNotification to use the Linux 2.6 inotify interface (mickeyl) 73 * libopiecore: rewrite OFileNotification to use the Linux 2.6 inotify interface (mickeyl)
73 * libopiecore: add ODirNotification - recursive directory notifications (mickeyl) 74 * libopiecore: add ODirNotification - recursive directory notifications (mickeyl)
74 * libopienet: Skip hostap control interfaces 'wifi' and improve robustness in ONetworkInterface (mickeyl) 75 * libopienet: Skip hostap control interfaces 'wifi' and improve robustness in ONetworkInterface (mickeyl)
75 * libopieui: Remove OVersatileView and OVersatileViewItem (mickeyl) 76 * libopieui: Remove OVersatileView and OVersatileViewItem (mickeyl)
76 * libopienet: Miscellaneous API cleanups (mickeyl) 77 * libopienet: Miscellaneous API cleanups (mickeyl)
77 * libopiecore: Add linux pcmcia system abstraction classes (mickeyl) 78 * libopiecore: Add linux pcmcia system abstraction classes (mickeyl)
78 * libopiecore: ODevice now knows the default gfx driver to use (mteira,mickeyl) 79 * libopiecore: ODevice now knows the default gfx driver to use (mteira,mickeyl)
79 * libopiecore: Add support for the Sharp SL-C3100 "Borzoi" (mickeyl) 80 * libopiecore: Add support for the Sharp SL-C3100 "Borzoi" (mickeyl)
80 * libopiecore: Add support for the new Linux Inputsystem Switches type [necessary for auto rotation in 2.6.13] (mickeyl) 81 * libopiecore: Add support for the new Linux Inputsystem Switches type [necessary for auto rotation in 2.6.13] (mickeyl)
81 * Remove assumptions about default gfx driver ("Transformed") all over the place (mteira,mickeyl) 82 * Remove assumptions about default gfx driver ("Transformed") all over the place (mteira,mickeyl)
82 * Fix / Optimize number of scanned directories (ljp) 83 * Fix / Optimize number of scanned directories (ljp)
83 * Use five point mouse calibration to make calibrated mouse drivers work on newer Zaurii (rp,mickeyl) 84 * Use five point mouse calibration to make calibrated mouse drivers work on newer Zaurii (rp,mickeyl)
84 85
85 2005-03-25Opie 1.2.0 86 2005-03-25Opie 1.2.0
86 87
87 Fixed Bugs 88 Fixed Bugs
88 ---------- 89 ----------
89 * #1613 - AdvancedFM - scale toolbar icons appropriately (drw) 90 * #1613 - AdvancedFM - scale toolbar icons appropriately (drw)
90 * #1620 - OFileSelector - show the button on press and not on press on hold (alwin) 91 * #1620 - OFileSelector - show the button on press and not on press on hold (alwin)
91 * #1473 - Opie-Eye - Same as #1620 but we lack a common FileSystem Button class (zecke) 92 * #1473 - Opie-Eye - Same as #1620 but we lack a common FileSystem Button class (zecke)
92 * n.a. - PackageManager - fix bug where messages show up multiple times in install dialog (drw) 93 * n.a. - PackageManager - fix bug where messages show up multiple times in install dialog (drw)
93 * n.a.- make qpeglobal.h include qglobal.h (zecke) 94 * n.a.- make qpeglobal.h include qglobal.h (zecke)
94 95
95 2005-03-20Opie 1.2.0-rc1 96 2005-03-20Opie 1.2.0-rc1
96 97
97 98
98 New Features 99 New Features
99 ------------ 100 ------------
100 * Launcher: Support a static background pixmap (mickeyl) 101 * Launcher: Support a static background pixmap (mickeyl)
101 * LauncherSettings: Choose whether to have a static background pixmap (mickeyl) 102 * LauncherSettings: Choose whether to have a static background pixmap (mickeyl)
102 * PackageManager supports the 'lists_dir' ipkg configuration option (drw) 103 * PackageManager supports the 'lists_dir' ipkg configuration option (drw)
103 * Added hi-res inline images for large resolution devices (drw) 104 * Added hi-res inline images for large resolution devices (drw)
104 * Improved launcher icons for consistency (ar) 105 * Improved launcher icons for consistency (ar)
105 * Datebook: Added plugin system to datebook so holidays and birthdays from contacts may displayed in datebook (alwin) 106 * Datebook: Added plugin system to datebook so holidays and birthdays from contacts may displayed in datebook (alwin)
106 107
107 Fixed Bugs 108 Fixed Bugs
108 ---------- 109 ----------
109 * #1236 - VCards contained empty home and work address entries causing Palms to crash (eilers) 110 * #1236 - VCards contained empty home and work address entries causing Palms to crash (eilers)
110 * #1412 - Launcher Settings - fixed default settings for background in Edit tab dialog (drw) 111 * #1412 - Launcher Settings - fixed default settings for background in Edit tab dialog (drw)
111 * #1472 - Opie textedit now check for unsaved changes on ESC key (ljp) 112 * #1472 - Opie textedit now check for unsaved changes on ESC key (ljp)
112 * #1474 - Implement GUI for Scrollbars on the Left in Appearance (zecke) 113 * #1474 - Implement GUI for Scrollbars on the Left in Appearance (zecke)
113 * #1482 - Fix double '/' in paths (zecke) 114 * #1482 - Fix double '/' in paths (zecke)
114 * #1536 - Autosave of custom locations in opie backup (ar) 115 * #1536 - Autosave of custom locations in opie backup (ar)
115 * #1539 - Fixed displaying too long path in the delete dialog in opie-eye (zecke) 116 * #1539 - Fixed displaying too long path in the delete dialog in opie-eye (zecke)
116 * #1540 - Implemented deletion of DocLnks in opie-eye (zecke) 117 * #1540 - Implemented deletion of DocLnks in opie-eye (zecke)
117 * #1542 - Fixed Todo crash when priority < 1 or > 5 (drw) 118 * #1542 - Fixed Todo crash when priority < 1 or > 5 (drw)
118 * #1550 - Browse for alarm sound start in QPEDIR/sounds/ (zecke) 119 * #1550 - Browse for alarm sound start in QPEDIR/sounds/ (zecke)
119 * #1554 - Fixed Opie-Console name in .desktop file (mickeyl) 120 * #1554 - Fixed Opie-Console name in .desktop file (mickeyl)
120 * #1556 - Start to look for sound files in /opt/QtPalmtop/sounds (zecke) 121 * #1556 - Start to look for sound files in /opt/QtPalmtop/sounds (zecke)
121 * #1558 - Fixed opie-login breaking opie startup (mickeyl) 122 * #1558 - Fixed opie-login breaking opie startup (mickeyl)
122 * #1560 - Fixed Opie-Console picking up the wrong shell (bluelightning) 123 * #1560 - Fixed Opie-Console picking up the wrong shell (bluelightning)
123 * #1570 - Confirmation needed befor Restore a backup and overwrite local data (ar) 124 * #1570 - Confirmation needed befor Restore a backup and overwrite local data (ar)
124 * #1591 - Addressbook sortorder changed by clicking on column 0 (eilers) 125 * #1591 - Addressbook sortorder changed by clicking on column 0 (eilers)
125 * #1599 - Security - change recommendation for opie-multiauth to opie-securityplugin (gints) 126 * #1599 - Security - change recommendation for opie-multiauth to opie-securityplugin (gints)
126 * #1604 - Checkbook crashed on startup (drw) 127 * #1604 - Checkbook crashed on startup (drw)
127 * #1608 - Addressbook crashed after search, which may caused by not initialzed member variable (eilers) 128 * #1608 - Addressbook crashed after search, which may caused by not initialzed member variable (eilers)
128 * #1608 - QueryByExampe-Datediff on SQL database did not worked properly (eilers) 129 * #1608 - QueryByExampe-Datediff on SQL database did not worked properly (eilers)
129 * n.a. - Netsystemtime - fixed UI to prevent error dialog from displaying when it shouldn't, get rid of some compiler warnings (drw) 130 * n.a. - Netsystemtime - fixed UI to prevent error dialog from displaying when it shouldn't, get rid of some compiler warnings (drw)
130 * n.a. - PackageManager - fixed where last package in status file was not shown as installed when it should be (drw) 131 * n.a. - PackageManager - fixed where last package in status file was not shown as installed when it should be (drw)
131 * n.a. - PackageManager - fixed bug where lists_dir was not being honored at startup (drw) 132 * n.a. - PackageManager - fixed bug where lists_dir was not being honored at startup (drw)
132 * n.a. - PackageManager - provided default value for lists_dir when none is entered in configuration dialog (drw) 133 * n.a. - PackageManager - provided default value for lists_dir when none is entered in configuration dialog (drw)
133 * n.a. - OTabWidget - fixed scroll buttons, fix display position of tabs (drw) 134 * n.a. - OTabWidget - fixed scroll buttons, fix display position of tabs (drw)
134 * n.a. - AddressBook - fixed sorting by 'File As' name (drw) 135 * n.a. - AddressBook - fixed sorting by 'File As' name (drw)
135 * n.a. - AddressBook - fixed category handling for 'All' and 'Unfiled' (eilers) 136 * n.a. - AddressBook - fixed category handling for 'All' and 'Unfiled' (eilers)
136 * n.a. - AddressBook - fixed letter picker record selection and sort records afterwards (drw) 137 * n.a. - AddressBook - fixed letter picker record selection and sort records afterwards (drw)
137 138
138 Internal 139 Internal
139 -------- 140 --------
140 * Worked around bug in Qt/Embedded 2.3.10: qt_version() returns 231 (mickeyl) 141 * Worked around bug in Qt/Embedded 2.3.10: qt_version() returns 231 (mickeyl)
141 * Killed the need for weak symbols in QtE (zecke) 142 * Killed the need for weak symbols in QtE (zecke)
142 * Added optional building libqpe without inline images (mickeyl) 143 * Added optional building libqpe without inline images (mickeyl)
143 * OColorButton - fixed so does not emit a colorSelected signal inside of resizeEvent (drw) 144 * OColorButton - fixed so does not emit a colorSelected signal inside of resizeEvent (drw)
144 145
145 2005-02-03Opie 1.1.9 146 2005-02-03Opie 1.1.9
146 147
147 New Features 148 New Features
148 ------------ 149 ------------
149 * Number of icon columns in Launcher is customizable through Launcher.conf (hrw,zecke,mickeyl) 150 * Number of icon columns in Launcher is customizable through Launcher.conf (hrw,zecke,mickeyl)
150 * Number of icon columns in Launcher is customizable through LauncherSettings (mickeyl) 151 * Number of icon columns in Launcher is customizable through LauncherSettings (mickeyl)
151 * Usability enhancements in OpieIRC (skyhusker) 152 * Usability enhancements in OpieIRC (skyhusker)
152 153
153 Fixed Bugs 154 Fixed Bugs
154 ---------- 155 ----------
155 * #1501 - Fixed bug in todo sql backend (eilers) 156 * #1501 - Fixed bug in todo sql backend (eilers)
156 * #1505 - Added more Swap sizes in memoryapplet (mickeyl) 157 * #1505 - Added more Swap sizes in memoryapplet (mickeyl)
157 * #1525 - Hopefully fixed double alarms and not removing alarms set with the Clock application (zecke) 158 * #1525 - Hopefully fixed double alarms and not removing alarms set with the Clock application (zecke)
158 * #1533 - Security Owner Dialog (shown in case of unsuccessfull authentiacation) wasn't able to display information in non latin1 encoding (zecke) 159 * #1533 - Security Owner Dialog (shown in case of unsuccessfull authentiacation) wasn't able to display information in non latin1 encoding (zecke)
159 * n.a. - Removed hard coded font sizes in a couple of inputmethods (mickeyl) 160 * n.a. - Removed hard coded font sizes in a couple of inputmethods (mickeyl)
160 * n.a. - Removed MediumDlg appearing prior to FirstUsage wizard (i.e. calibration) (mickeyl) 161 * n.a. - Removed MediumDlg appearing prior to FirstUsage wizard (i.e. calibration) (mickeyl)
161 * n.a. - Fixed numerous buglets in OpieIRC (skyhusker) 162 * n.a. - Fixed numerous buglets in OpieIRC (skyhusker)
162 163
163 Internal 164 Internal
164 -------- 165 --------
165 * Added the Qtopia 1.7 SDK macros for quick-apps to easa compilation of 3rd party apps against our headers (mickeyl) 166 * Added the Qtopia 1.7 SDK macros for quick-apps to easa compilation of 3rd party apps against our headers (mickeyl)
166 * You can now use the Opie build system in combination with a OpenEmbedded staging area which makes a nice cross development environment (mickeyl) 167 * You can now use the Opie build system in combination with a OpenEmbedded staging area which makes a nice cross development environment (mickeyl)
167 * Made Opie compilable with Qt/Embedded 2.3.10 (ar) 168 * Made Opie compilable with Qt/Embedded 2.3.10 (ar)
168 * Changed Launcher to get default orientation from ODevice w/ QWS_DISPLAY overriding (mickeyl) 169 * Changed Launcher to get default orientation from ODevice w/ QWS_DISPLAY overriding (mickeyl)
169 * Build tree cleanups (mickeyl) 170 * Build tree cleanups (mickeyl)
170 171
171 2004-11-26Opie 1.1.8 172 2004-11-26Opie 1.1.8
172 173
173 New Features 174 New Features
174 ------------ 175 ------------
175 * PackageManager supports installation of local ipkg files (drw) 176 * PackageManager supports installation of local ipkg files (drw)
176 * PackageManager supports linking of applications to root (drw) 177 * PackageManager supports linking of applications to root (drw)
177 * PackageManager supports src/gz feeds (drw,wimpie) 178 * PackageManager supports src/gz feeds (drw,wimpie)
178 * Added a syslog information tab to sysinfo (mickeyl) 179 * Added a syslog information tab to sysinfo (mickeyl)
179 * Added new, more consistent, PIM icons + a GIMP teplate (ar) 180 * Added new, more consistent, PIM icons + a GIMP teplate (ar)
180 181
181 Fixed Bugs 182 Fixed Bugs
182 ---------- 183 ----------
183 * #1017 - Tetrix doesn't display correctly for high resolution screens (drw) 184 * #1017 - Tetrix doesn't display correctly for high resolution screens (drw)
184 * #1269 - VCards were imported into personal area if it was activated (eilers) 185 * #1269 - VCards were imported into personal area if it was activated (eilers)
185 * #1464 - Packagemanager dont set active filter after install a package (drw) 186 * #1464 - Packagemanager dont set active filter after install a package (drw)
186 * #1479 - Improved VCard-Parser to import VCards created by Evolution 2 and Apple Addressbook (eilers) 187 * #1479 - Improved VCard-Parser to import VCards created by Evolution 2 and Apple Addressbook (eilers)
187 * #1493 - Fixed one column layout bug of the launcher (hrw) 188 * #1493 - Fixed one column layout bug of the launcher (hrw)
188 * n.a. - PackageManager - (Minor UI tweak) in filter dialog, when option is enabled, set focus to widget that corresponds to that option (drw) 189 * n.a. - PackageManager - (Minor UI tweak) in filter dialog, when option is enabled, set focus to widget that corresponds to that option (drw)
189 * n.a. - PackageManager - (Minor UI tweak) fix double entry in source feed configuration when adding a new feed (drw) 190 * n.a. - PackageManager - (Minor UI tweak) fix double entry in source feed configuration when adding a new feed (drw)
190 * n.a. - Battery Applet - fix sizing of battery info popup (drw,mickeyl) 191 * n.a. - Battery Applet - fix sizing of battery info popup (drw,mickeyl)
191 192
192 Internal 193 Internal
193 -------- 194 --------
194 * Moved libopie1 to unsupported (mickeyl) 195 * Moved libopie1 to unsupported (mickeyl)
195 * Implemented generic queryByExample() with incremental searching. A lot of internal changes of the Pim2-library (eilers) 196 * Implemented generic queryByExample() with incremental searching. A lot of internal changes of the Pim2-library (eilers)
196 * Added fast and full featured and incremental sorted() for SQL addressbook backend (eilers) 197 * Added fast and full featured and incremental sorted() for SQL addressbook backend (eilers)
197 198
198 2004-11-14Opie 1.1.7 199 2004-11-14Opie 1.1.7
199 200
200 New Features 201 New Features
201 ------------ 202 ------------
202 * libOpieDB now uses SQLite V3 instead V2. Remember to upgrade your database files! (eilers) 203 * libOpieDB now uses SQLite V3 instead V2. Remember to upgrade your database files! (eilers)
203 * Backup now uses the busy indicator when backing up and restore (ar) 204 * Backup now uses the busy indicator when backing up and restore (ar)
204 * OpiePlayer2 gained adding of Directories to the playlist (zecke) 205 * OpiePlayer2 gained adding of Directories to the playlist (zecke)
205 * OpiePlayer2 better error handling (zecke) 206 * OpiePlayer2 better error handling (zecke)
206 * OpiePlayer2 progress indication while streaming (zecke) 207 * OpiePlayer2 progress indication while streaming (zecke)
207 * OpiePlayer2 ported to use libxine 1.0.0-rc6a (brad,zecke) 208 * OpiePlayer2 ported to use libxine 1.0.0-rc6a (brad,zecke)
208 * Ported brightnessapplet from Qtopia 1.7 (mickeyl) 209 * Ported brightnessapplet from Qtopia 1.7 (mickeyl)
209 * Opie-Eye got a Digital Camera File Backend (alwin,zecke) 210 * Opie-Eye got a Digital Camera File Backend (alwin,zecke)
210 * Support for Tuxpad1 of Tradesquare.NL (mickeyl,zecke) 211 * Support for Tuxpad1 of Tradesquare.NL (mickeyl,zecke)
211 * Opie-Console use Custom Font and Size in a Profile (harlekin) 212 * Opie-Console use Custom Font and Size in a Profile (harlekin)
212 * Opie-Console transparently log the Output and Input to a file (harlekin) 213 * Opie-Console transparently log the Output and Input to a file (harlekin)
213 * Added new O-menu icon to lock the PDA immediately: opie-lockapplet (clem) 214 * Added new O-menu icon to lock the PDA immediately: opie-lockapplet (clem)
214 * Opie-Security now hides the plugin-based authentication tabs if no auth. plugin package is installed (clem) 215 * Opie-Security now hides the plugin-based authentication tabs if no auth. plugin package is installed (clem)
215 * Opie-Security gained a 'test authentication' button (clem) 216 * Opie-Security gained a 'test authentication' button (clem)
216 * Opie-Eye got a more unique layout (menubar), a slideshow, user can setup some defaults 217 * Opie-Eye got a more unique layout (menubar), a slideshow, user can setup some defaults
217 * Opie-Mail improve the handling of POP mail boxes (alwin) 218 * Opie-Mail improve the handling of POP mail boxes (alwin)
218 * Both Opie-Eye and Opie-Mail were greatly improved due the hard work of Rajko Albrecht(alwin) 219 * Both Opie-Eye and Opie-Mail were greatly improved due the hard work of Rajko Albrecht(alwin)
219 * Opie IRC - backports of the 'NeIRC fork' (zecke) 220 * Opie IRC - backports of the 'NeIRC fork' (zecke)
220 221
221 Fixed Bugs 222 Fixed Bugs
222 ---------- 223 ----------
223 * #501 - Pickboard is able to show 'Umlaute' (TT,zecke) 224 * #501 - Pickboard is able to show 'Umlaute' (TT,zecke)
224 * #608 - Make Opie usable for left handed users (zecke) 225 * #608 - Make Opie usable for left handed users (zecke)
225 * #957 - Import of VCards/VTodos/VEvents with BASE64 encoding (ljp,zecke) 226 * #957 - Import of VCards/VTodos/VEvents with BASE64 encoding (ljp,zecke)
226 * #1245 - Opie-Go 'paused' (zecke) 227 * #1245 - Opie-Go 'paused' (zecke)
227 * #1358 - DocTab didn't show any MimeTypes (was fixed earlier) (zecke) 228 * #1358 - DocTab didn't show any MimeTypes (was fixed earlier) (zecke)
228 * #1380 - QDateBookAccess::remove() doesn't remove entries (eilers, zecke) 229 * #1380 - QDateBookAccess::remove() doesn't remove entries (eilers, zecke)
229 * #1395 - Build VNC Backend with gcc3.4 230 * #1395 - Build VNC Backend with gcc3.4
230 * #1440 - The icon of opie-mobilemsg is missing (CoreDump) 231 * #1440 - The icon of opie-mobilemsg is missing (CoreDump)
231 * #1426 - Add missing opie-bartender Icon (CoreDump) 232 * #1426 - Add missing opie-bartender Icon (CoreDump)
232 * #1445 - Opie-Sheet Has No Icon (CoreDump) 233 * #1445 - Opie-Sheet Has No Icon (CoreDump)
233 * #1448 - Brightness Applet added (mickeyl) 234 * #1448 - Brightness Applet added (mickeyl)
234 * #1450 - ZSame didn't clear the bonus item after winning a game (zecke) 235 * #1450 - ZSame didn't clear the bonus item after winning a game (zecke)
235 * #1482 - Fix OFileSelector to be able to sort by size (zecke) 236 * #1482 - Fix OFileSelector to be able to sort by size (zecke)
236 * n.a. - Opie-mail: fixed some crasher, some layout-problems 237 * n.a. - Opie-mail: fixed some crasher, some layout-problems
237 * n.a. - Converted applications to not hardcode /opt/QtPalmtop but to use QPEApplication::qpeDir (zecke) 238 * n.a. - Converted applications to not hardcode /opt/QtPalmtop but to use QPEApplication::qpeDir (zecke)
238 * n.a. - Converted usage of qpeDir() not to include a '/' as first charachter of the string (zecke) 239 * n.a. - Converted usage of qpeDir() not to include a '/' as first charachter of the string (zecke)
239 * n.a. - Build system: Enable distcc and ccache when crosscompiling too, and use them everywhere we can (clem) 240 * n.a. - Build system: Enable distcc and ccache when crosscompiling too, and use them everywhere we can (clem)
240 * 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) 241 * 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)
241 * n.a. - Removed hardcoded icon size in a couple of applets (mickeyl) 242 * n.a. - Removed hardcoded icon size in a couple of applets (mickeyl)
242 243
243 Internal 244 Internal
244 -------- 245 --------
245 * Opie-Qashmoney has been moved to unsupported (mickeyl) 246 * Opie-Qashmoney has been moved to unsupported (mickeyl)
246 * Opie-Ubrowser has been moved to unsupported (mickeyl) 247 * Opie-Ubrowser has been moved to unsupported (mickeyl)
247 248
248 2004-09-17Opie 1.1.6 249 2004-09-17Opie 1.1.6
249 250
250 New Features 251 New Features
251 ------------ 252 ------------
252 * Fifteen gained configurable number of items (zecke) 253 * Fifteen gained configurable number of items (zecke)
253 * Fifteen can have custom background images (zecke) 254 * Fifteen can have custom background images (zecke)
254 * Added daemonizing capabilities to QWS Server [via Qt/Embedded] (mickeyl) 255 * Added daemonizing capabilities to QWS Server [via Qt/Embedded] (mickeyl)
255 * Integrated the new security framework into libopie2 (zecke,clem) 256 * Integrated the new security framework into libopie2 (zecke,clem)
256 * Converted the launcher to use the new security framework (zecke) 257 * Converted the launcher to use the new security framework (zecke)
257 * Backup can now handle custom locations for backup and restore (ar) 258 * Backup can now handle custom locations for backup and restore (ar)
258 * Implemented right-on-hold feedback (wimpie,zecke) 259 * Implemented right-on-hold feedback (wimpie,zecke)
259 * Lots of new features in opie-reader (tim,pohly) 260 * Lots of new features in opie-reader (tim,pohly)
260 * Build system cleanups (schurig) 261 * Build system cleanups (schurig)
261 262
262 Fixed Bugs 263 Fixed Bugs
263 -------- 264 --------
264 * #1005 - Fixed backup to CompactFlash (ar) 265 * #1005 - Fixed backup to CompactFlash (ar)
265 * #1167 - Fixed Opie write crashing on more text than one page (ar) 266 * #1167 - Fixed Opie write crashing on more text than one page (ar)
266 * #1225 - Fixed repeated light flashing on Zaurus with keyz (mickeyl) 267 * #1225 - Fixed repeated light flashing on Zaurus with keyz (mickeyl)
267 * #1359 - Fixed bookmarks in Gutenbrowser (ljp) 268 * #1359 - Fixed bookmarks in Gutenbrowser (ljp)
268 * #1361 - Fixed auto upercase in Opie-Addressbook (eilers) 269 * #1361 - Fixed auto upercase in Opie-Addressbook (eilers)
269 * #1370 - Pimconverter now reacts on cancel key (eilers) 270 * #1370 - Pimconverter now reacts on cancel key (eilers)
270 * #1376 - Bring back the capslock/numlock display (zecke) 271 * #1376 - Bring back the capslock/numlock display (zecke)
271 * #1383 - Language settings now warns about losing open apps (Markus Litz) 272 * #1383 - Language settings now warns about losing open apps (Markus Litz)
272 * #1393 - Fixed line wrap issues in opie-console for the default profile (mickeyl) 273 * #1393 - Fixed line wrap issues in opie-console for the default profile (mickeyl)
273 * #1394 - Fixed oversized headline in opie-login (coredump) 274 * #1394 - Fixed oversized headline in opie-login (coredump)
274 * #1396 - Opie-console captures the escape key and vim is working (zecke) 275 * #1396 - Opie-console captures the escape key and vim is working (zecke)
275 * #1401 - Scrollbar is now only visible if necessary in DocTab (mickeyl) 276 * #1401 - Scrollbar is now only visible if necessary in DocTab (mickeyl)
276 277
277 2004-07-06Opie 1.1.4 278 2004-07-06Opie 1.1.4
278 279
279 New Features 280 New Features
280 ------------ 281 ------------
281 * Added four themes courtesy Robert Griebl (http://www.softforge.de/zstyle) 282 * Added four themes courtesy Robert Griebl (http://www.softforge.de/zstyle)
282 * Added Conversion tool for pim-data (eilers) 283 * Added Conversion tool for pim-data (eilers)
283 * Introduced new OPimAccessFactory and OBackendFactory which simplyfies database access (eilers) 284 * Introduced new OPimAccessFactory and OBackendFactory which simplyfies database access (eilers)
284 * Modified the PIM API for providing generic use of OPimRecords (eilers) 285 * Modified the PIM API for providing generic use of OPimRecords (eilers)
285 * Clicking on the application symbol now iterates over the application's top level widgets if already raised (zecke) 286 * Clicking on the application symbol now iterates over the application's top level widgets if already raised (zecke)
286 287
287 Fixed Bugs 288 Fixed Bugs
288 -------- 289 --------
289 * #1068 - Country Drop Down Box Off Screen 290 * #1068 - Country Drop Down Box Off Screen
290 * #1291 - Opie tinykate does not open .desktop files (ar) 291 * #1291 - Opie tinykate does not open .desktop files (ar)
291 * #1291 - Opie sheet not saving correctly (ar) 292 * #1291 - Opie sheet not saving correctly (ar)
292 * #1294 - Opie does not know about British Summer Time 293 * #1294 - Opie does not know about British Summer Time
293 * #1314 - Drawpad initialization (mickeyl) 294 * #1314 - Drawpad initialization (mickeyl)
294 * #1317 - Packagemanager crashes on hold-down or install (chicken) 295 * #1317 - Packagemanager crashes on hold-down or install (chicken)
295 * #1321 - Batteryapplet graphic glitch (harlekin) 296 * #1321 - Batteryapplet graphic glitch (harlekin)
296 * #1324 - ZSafe not starting up (mickeyl) 297 * #1324 - ZSafe not starting up (mickeyl)
297 * #1328 - Personal Home Address fields is trimmed to 1char (eilers) 298 * #1328 - Personal Home Address fields is trimmed to 1char (eilers)
298 * #1327 - Opie-mail ipk does not depend on libopiedb2 (chicken) 299 * #1327 - Opie-mail ipk does not depend on libopiedb2 (chicken)
299 * #1345 - Networksettingsplugin wlan plugin dependency on libpcap0 (mickeyl) 300 * #1345 - Networksettingsplugin wlan plugin dependency on libpcap0 (mickeyl)
300 * #1348 - Datebook dependency on libopiedb2 (chicken) 301 * #1348 - Datebook dependency on libopiedb2 (chicken)
301 * #1328 - Switched SQLDatabase and VCards char encoding from latin1 to unicode (eilers) 302 * #1328 - Switched SQLDatabase and VCards char encoding from latin1 to unicode (eilers)
302 303
303 2004-04-25Opie 1.1.3 304 2004-04-25Opie 1.1.3
304 305
305 * Introduced first implementation of SQL-Support using SQLite (eilers) 306 * Introduced first implementation of SQL-Support using SQLite (eilers)
306 * Added a new Gutenberg Project reader app - opie-gutenbrowser (ljp) 307 * Added a new Gutenberg Project reader app - opie-gutenbrowser (ljp)
307 * Added a real system graffiti character set (brad) 308 * Added a real system graffiti character set (brad)
308 * Added Generic Keyconfig Widget (zecke) 309 * Added Generic Keyconfig Widget (zecke)
309 * Improved Screenshotapplet and Drawpad integration. You can now open a screenshot in drawpad and take notes (zecke) 310 * Improved Screenshotapplet and Drawpad integration. You can now open a screenshot in drawpad and take notes (zecke)
310 * Added new Bible reader app - opie-dagger (drw) 311 * Added new Bible reader app - opie-dagger (drw)
311 * Added a new Image Viewer. Work is ongoing (zecke,alwin) 312 * Added a new Image Viewer. Work is ongoing (zecke,alwin)
312 * Added namespace usage in libopie2 and everywhere (zecke,alwin) 313 * Added namespace usage in libopie2 and everywhere (zecke,alwin)
313 * Enabled the possibility to pass command line arguments to applications (mickeyl) 314 * Enabled the possibility to pass command line arguments to applications (mickeyl)
314 * Added an about applet showing some credits and information about Opie (mickeyl) 315 * Added an about applet showing some credits and information about Opie (mickeyl)
315 * Added benchmarking functionality to sysinfo (mickeyl) 316 * Added benchmarking functionality to sysinfo (mickeyl)
316 * Added applet and configuration application for switching hardware keyboard layouts (alwin) 317 * Added applet and configuration application for switching hardware keyboard layouts (alwin)
317 * Ported applications from libopie1 to libopie2* (drw,ar,alwin) 318 * Ported applications from libopie1 to libopie2* (drw,ar,alwin)
318 * Imported fullscreen and font improvements from the Qkonsole fork to embeddedkonsole (waspe) 319 * Imported fullscreen and font improvements from the Qkonsole fork to embeddedkonsole (waspe)
319 * Clean-up of package information in control files (drw) 320 * Clean-up of package information in control files (drw)
320 * Repaired mediummount which was broken since integrating the quicklauncher (alwin) 321 * Repaired mediummount which was broken since integrating the quicklauncher (alwin)
321 * Improved big-screen support (zecke,ar) 322 * Improved big-screen support (zecke,ar)
322 * Improved multikeyboard support, added keyboard layout switching applet (mouse) 323 * Improved multikeyboard support, added keyboard layout switching applet (mouse)
323 * Added a new mail client based on libetpan (harlekin,alwin,jgf) 324 * Added a new mail client based on libetpan (harlekin,alwin,jgf)
324 * Added new package manager - opie-packagemanager (drw) 325 * Added new package manager - opie-packagemanager (drw)
325 * Improved light-n-power for C7x0 (mickeyl) 326 * Improved light-n-power for C7x0 (mickeyl)
326 * Added automatic rotation support for C7x0 (treke) 327 * Added automatic rotation support for C7x0 (treke)
327 * Split libopie1 up into a set of smaller - functionally grouped - libraries (mickeyl) 328 * Split libopie1 up into a set of smaller - functionally grouped - libraries (mickeyl)
328 * Added scanning the wireless network neighbourhood to networksettings (mickeyl) 329 * Added scanning the wireless network neighbourhood to networksettings (mickeyl)
329 330
330 2003-11-29Opie 1.0.3 331 2003-11-29Opie 1.0.3
331 332
332 * Released as Version 1.0.3 333 * Released as Version 1.0.3
333 * Improved i18n (various contributors) 334 * Improved i18n (various contributors)
334 * Reduced application startup time by integrating the TT quicklauncher (zecke,harlekin) 335 * Reduced application startup time by integrating the TT quicklauncher (zecke,harlekin)
335 * Made the Documents Tab optional (mickeyl) 336 * Made the Documents Tab optional (mickeyl)
336 * Integrated basic support for HP iPAQ 54xx and the Jornada 5xx (chicken) 337 * Integrated basic support for HP iPAQ 54xx and the Jornada 5xx (chicken)
337 338
338 2003-08-04Opie 1.0.0 339 2003-08-04Opie 1.0.0
339 340
340 * Released as Version 1.0.0 341 * Released as Version 1.0.0
341 * Including a PPP module for easy dial up (tille,harlekin,zecke) 342 * Including a PPP module for easy dial up (tille,harlekin,zecke)
diff --git a/noncore/settings/backup/backuprestore.cpp b/noncore/settings/backup/backuprestore.cpp
index eadfb63..711dab3 100644
--- a/noncore/settings/backup/backuprestore.cpp
+++ b/noncore/settings/backup/backuprestore.cpp
@@ -1,488 +1,489 @@
1/* 1/*
2 This file is part of the Opie Project 2 This file is part of the Opie Project
3 =. 3 =.
4 .=l. Copyright (c) 2002-2004 The Opie Team <opie-devel@handhelds.org> 4 .=l. Copyright (c) 2002-2004 The Opie Team <opie-devel@handhelds.org>
5 .>+-= 5 .>+-=
6_;:, .> :=|. This file is free software; you can 6_;:, .> :=|. This file is free software; you can
7.> <`_, > . <= redistribute it and/or modify it under 7.> <`_, > . <= redistribute it and/or modify it under
8:`=1 )Y*s>-.-- : the terms of the GNU General Public 8:`=1 )Y*s>-.-- : the terms of the GNU General Public
9.="- .-=="i, .._ License as published by the Free Software 9.="- .-=="i, .._ License as published by the Free Software
10- . .-<_> .<> Foundation; either version 2 of the License, 10- . .-<_> .<> Foundation; either version 2 of the License,
11 ._= =} : or (at your option) any later version. 11 ._= =} : or (at your option) any later version.
12 .%`+i> _;_. 12 .%`+i> _;_.
13 .i_,=:_. -<s. This file is distributed in the hope that 13 .i_,=:_. -<s. This file is distributed in the hope that
14 + . -:. = it will be useful, but WITHOUT ANY WARRANTY; 14 + . -:. = it will be useful, but WITHOUT ANY WARRANTY;
15 : .. .:, . . . without even the implied warranty of 15 : .. .:, . . . without even the implied warranty of
16 =_ + =;=|` MERCHANTABILITY or FITNESS FOR A 16 =_ + =;=|` MERCHANTABILITY or FITNESS FOR A
17 _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU General 17 _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU General
18..}^=.= = ; Public License for more details. 18..}^=.= = ; Public License for more details.
19++= -. .` .: 19++= -. .` .:
20: = ...= . :.=- You should have received a copy of the GNU 20: = ...= . :.=- You should have received a copy of the GNU
21-. .:....=;==+<; General Public License along with this file; 21-. .:....=;==+<; General Public License along with this file;
22 -_. . . )=. = see the file COPYING. If not, write to the 22 -_. . . )=. = see the file COPYING. If not, write to the
23 -- :-=` Free Software Foundation, Inc., 23 -- :-=` Free Software Foundation, Inc.,
24 59 Temple Place - Suite 330, 24 59 Temple Place - Suite 330,
25 Boston, MA 02111-1307, USA. 25 Boston, MA 02111-1307, USA.
26 26
27*/ 27*/
28 28
29#include "backuprestore.h" 29#include "backuprestore.h"
30#include "errordialog.h" 30#include "errordialog.h"
31 31
32/* OPIE */ 32/* OPIE */
33#include <opie2/odebug.h> 33#include <opie2/odebug.h>
34#include <opie2/odevice.h> 34#include <opie2/odevice.h>
35#include <opie2/ostorageinfo.h> 35#include <opie2/ostorageinfo.h>
36#include <opie2/ofiledialog.h> 36#include <opie2/ofiledialog.h>
37#include <opie2/oresource.h> 37#include <opie2/oresource.h>
38#include <opie2/owait.h> 38#include <opie2/owait.h>
39 39
40#include <qpe/qpeapplication.h> 40#include <qpe/qpeapplication.h>
41#include <qpe/config.h> 41#include <qpe/config.h>
42 42
43using namespace Opie::Core; 43using namespace Opie::Core;
44using namespace Opie::Ui; 44using namespace Opie::Ui;
45 45
46/* QT */ 46/* QT */
47#include <qapplication.h> 47#include <qapplication.h>
48#include <qmultilineedit.h> 48#include <qmultilineedit.h>
49#include <qdir.h> 49#include <qdir.h>
50#include <qfile.h> 50#include <qfile.h>
51#include <qfileinfo.h> 51#include <qfileinfo.h>
52#include <qlistview.h> 52#include <qlistview.h>
53#include <qpushbutton.h> 53#include <qpushbutton.h>
54#include <qradiobutton.h> 54#include <qradiobutton.h>
55#include <qheader.h> 55#include <qheader.h>
56#include <qmessagebox.h> 56#include <qmessagebox.h>
57#include <qcombobox.h> 57#include <qcombobox.h>
58#include <qlist.h> 58#include <qlist.h>
59#include <qregexp.h> 59#include <qregexp.h>
60#include <qtextstream.h> 60#include <qtextstream.h>
61#include <qtextview.h> 61#include <qtextview.h>
62#include <qlineedit.h> 62#include <qlineedit.h>
63#include <qstringlist.h> 63#include <qstringlist.h>
64 64
65/* STD */ 65/* STD */
66#include <errno.h> 66#include <errno.h>
67#include <stdlib.h> 67#include <stdlib.h>
68#include <unistd.h> 68#include <unistd.h>
69#include <sys/stat.h> 69#include <sys/stat.h>
70#include <dirent.h> 70#include <dirent.h>
71 71
72#define HEADER_NAME 0 72#define HEADER_NAME 0
73#define HEADER_BACKUP 1 73#define HEADER_BACKUP 1
74#define BACKUP_LOCATION 2 74#define BACKUP_LOCATION 2
75 75
76#define EXTENSION ".bck" 76#define EXTENSION ".bck"
77 77
78const QString tempFileName = "/tmp/backup.err"; 78const QString tempFileName = "/tmp/backup.err";
79 79
80BackupAndRestore::BackupAndRestore( QWidget* parent, const char* name, WFlags fl) 80BackupAndRestore::BackupAndRestore( QWidget* parent, const char* name, WFlags fl)
81 : BackupAndRestoreBase(parent, name, fl) 81 : BackupAndRestoreBase(parent, name, fl)
82{ 82{
83 backupList->header()->hide(); 83 backupList->header()->hide();
84 restoreList->header()->hide(); 84 restoreList->header()->hide();
85 locationList->header()->hide(); 85 locationList->header()->hide();
86 connect( backupButton, SIGNAL( clicked() ), this, SLOT( backup() ) ); 86 connect( backupButton, SIGNAL( clicked() ), this, SLOT( backup() ) );
87 connect( restoreButton, SIGNAL( clicked() ), this, SLOT( restore() ) ); 87 connect( restoreButton, SIGNAL( clicked() ), this, SLOT( restore() ) );
88 connect( backupList, SIGNAL( clicked( QListViewItem* ) ), this, SLOT( selectItem( QListViewItem* ) ) ); 88 connect( backupList, SIGNAL( clicked( QListViewItem* ) ), this, SLOT( selectItem( QListViewItem* ) ) );
89 connect( restoreSource, SIGNAL( activated( int ) ), this, SLOT( sourceDirChanged( int ) ) ); 89 connect( restoreSource, SIGNAL( activated( int ) ), this, SLOT( sourceDirChanged( int ) ) );
90 connect( addLocationButton, SIGNAL( clicked() ), this, SLOT( addLocation() ) ); 90 connect( addLocationButton, SIGNAL( clicked() ), this, SLOT( addLocation() ) );
91 connect( removeLocationButton, SIGNAL( clicked() ), this, SLOT( removeLocation() ) ); 91 connect( removeLocationButton, SIGNAL( clicked() ), this, SLOT( removeLocation() ) );
92 connect( selectLocationButton, SIGNAL( clicked() ), this, SLOT( selectLocation() ) ); 92 connect( selectLocationButton, SIGNAL( clicked() ), this, SLOT( selectLocation() ) );
93 93
94 //add directorys for backing up 94 //add directorys for backing up
95 applicationSettings = new QListViewItem(backupList, "Application Settings", "", "Settings/"); 95 applicationSettings = new QListViewItem(backupList, "Application Settings", "", "Settings/");
96 selectItem(applicationSettings); 96 selectItem(applicationSettings);
97 applicationSettings = new QListViewItem(backupList, "Application Data", "", "Applications/"); 97 applicationSettings = new QListViewItem(backupList, "Application Data", "", "Applications/");
98 selectItem(applicationSettings); 98 selectItem(applicationSettings);
99 documents= new QListViewItem(backupList, "Documents", "", "Documents/"); 99 documents= new QListViewItem(backupList, "Documents", "", "Documents/");
100 selectItem(documents); 100 selectItem(documents);
101 101
102 scanForApplicationSettings(); 102 scanForApplicationSettings();
103 refreshLocations(); 103 refreshLocations();
104 refreshBackupLocations(); 104 refreshBackupLocations();
105 sourceDirChanged(restoreSource->currentItem());
105 106
106 // Read the list of items to ignore. 107 // Read the list of items to ignore.
107 QList<QString> dontBackupList; 108 QList<QString> dontBackupList;
108 dontBackupList.setAutoDelete(true); 109 dontBackupList.setAutoDelete(true);
109 Config config("BackupAndRestore"); 110 Config config("BackupAndRestore");
110 config.setGroup("DontBackup"); 111 config.setGroup("DontBackup");
111 int total = config.readNumEntry("Total", 0); 112 int total = config.readNumEntry("Total", 0);
112 for(int i = 0; i < total; i++) 113 for(int i = 0; i < total; i++)
113 { 114 {
114 dontBackupList.append(new QString(config.readEntry(QString("%1").arg(i), ""))); 115 dontBackupList.append(new QString(config.readEntry(QString("%1").arg(i), "")));
115 } 116 }
116 117
117 QList<QListViewItem> list; 118 QList<QListViewItem> list;
118 getAllItems(backupList->firstChild(), list); 119 getAllItems(backupList->firstChild(), list);
119 120
120 for(uint i = 0; i < list.count(); i++) 121 for(uint i = 0; i < list.count(); i++)
121 { 122 {
122 QString text = list.at(i)->text(HEADER_NAME); 123 QString text = list.at(i)->text(HEADER_NAME);
123 for(uint i2 = 0; i2 < dontBackupList.count(); i2++) 124 for(uint i2 = 0; i2 < dontBackupList.count(); i2++)
124 { 125 {
125 if(*dontBackupList.at(i2) == text) 126 if(*dontBackupList.at(i2) == text)
126 { 127 {
127 selectItem(list.at(i)); 128 selectItem(list.at(i));
128 break; 129 break;
129 } 130 }
130 } 131 }
131 } 132 }
132 QPEApplication::showWidget( this ); 133 QPEApplication::showWidget( this );
133} 134}
134 135
135BackupAndRestore::~BackupAndRestore() 136BackupAndRestore::~BackupAndRestore()
136{ 137{
137 QList<QListViewItem> list; 138 QList<QListViewItem> list;
138 getAllItems(backupList->firstChild(), list); 139 getAllItems(backupList->firstChild(), list);
139 140
140 Config config("BackupAndRestore"); 141 Config config("BackupAndRestore");
141 config.setGroup("DontBackup"); 142 config.setGroup("DontBackup");
142 config.clearGroup(); 143 config.clearGroup();
143 144
144 int count = 0; 145 int count = 0;
145 for(uint i = 0; i < list.count(); i++) 146 for(uint i = 0; i < list.count(); i++)
146 { 147 {
147 if(list.at(i)->text(HEADER_BACKUP) == "") 148 if(list.at(i)->text(HEADER_BACKUP) == "")
148 { 149 {
149 config.writeEntry(QString("%1").arg(count), list.at(i)->text(HEADER_NAME)); 150 config.writeEntry(QString("%1").arg(count), list.at(i)->text(HEADER_NAME));
150 count++; 151 count++;
151 } 152 }
152 } 153 }
153 config.writeEntry("Total", count); 154 config.writeEntry("Total", count);
154 155
155 // Remove Temp File 156 // Remove Temp File
156 if ( QFile::exists( tempFileName ) ) 157 if ( QFile::exists( tempFileName ) )
157 QFile::remove( tempFileName ); 158 QFile::remove( tempFileName );
158} 159}
159 160
160void BackupAndRestore::refreshBackupLocations() 161void BackupAndRestore::refreshBackupLocations()
161{ 162{
162 backupLocations.clear(); 163 backupLocations.clear();
163 // Add cards 164 // Add cards
164 Opie::Core::OStorageInfo storage; 165 Opie::Core::OStorageInfo storage;
165 backupLocations.insert( "Documents", QDir::homeDirPath() + "/Documents" ); 166 backupLocations.insert( "Documents", QDir::homeDirPath() + "/Documents" );
166 if ( storage.hasCf() ) 167 if ( storage.hasCf() )
167 { 168 {
168 backupLocations.insert( "CF", storage.cfPath() ); 169 backupLocations.insert( "CF", storage.cfPath() );
169 odebug << "Cf Path: " + storage.cfPath() << oendl; 170 odebug << "Cf Path: " + storage.cfPath() << oendl;
170 } 171 }
171 if ( storage.hasSd() ) 172 if ( storage.hasSd() )
172 { 173 {
173 backupLocations.insert( "SD", storage.sdPath() ); 174 backupLocations.insert( "SD", storage.sdPath() );
174 odebug << " Sd Path: " + storage.sdPath() << oendl; 175 odebug << " Sd Path: " + storage.sdPath() << oendl;
175 } 176 }
176 if ( storage.hasMmc() ) 177 if ( storage.hasMmc() )
177 { 178 {
178 backupLocations.insert( "MMC", storage.mmcPath() ); 179 backupLocations.insert( "MMC", storage.mmcPath() );
179 odebug << "Mmc Path: " + storage.mmcPath() << oendl; 180 odebug << "Mmc Path: " + storage.mmcPath() << oendl;
180 } 181 }
181 182
182 for ( QListViewItemIterator it( locationList ); it.current(); ++it ) 183 for ( QListViewItemIterator it( locationList ); it.current(); ++it )
183 { 184 {
184 backupLocations.insert( it.current()->text( 0 ), it.current()->text( 0 ) ); 185 backupLocations.insert( it.current()->text( 0 ), it.current()->text( 0 ) );
185 } 186 }
186 187
187 //update QComboBox 188 //update QComboBox
188 storeToLocation->clear(); 189 storeToLocation->clear();
189 restoreSource->clear(); 190 restoreSource->clear();
190 191
191 //read last locations 192 //read last locations
192 Config config("BackupAndRestore"); 193 Config config("BackupAndRestore");
193 config.setGroup("LastLocation"); 194 config.setGroup("LastLocation");
194 QString lastStoreLocation = config.readEntry( "LastStoreLocation", "" ); 195 QString lastStoreLocation = config.readEntry( "LastStoreLocation", "" );
195 QString lastRestoreLocation = config.readEntry( "LastRestoreLocation", "" ); 196 QString lastRestoreLocation = config.readEntry( "LastRestoreLocation", "" );
196 int locationIndex = 0; 197 int locationIndex = 0;
197 198
198 //fill QComboBox 199 //fill QComboBox
199 QMap<QString, QString>::Iterator it; 200 QMap<QString, QString>::Iterator it;
200 for( it = backupLocations.begin(); it != backupLocations.end(); ++it ) 201 for( it = backupLocations.begin(); it != backupLocations.end(); ++it )
201 { 202 {
202 storeToLocation->insertItem(it.key()); 203 storeToLocation->insertItem(it.key());
203 restoreSource->insertItem(it.key()); 204 restoreSource->insertItem(it.key());
204 205
205 //check for last locations 206 //check for last locations
206 if ( it.key() == lastStoreLocation ) 207 if ( it.key() == lastStoreLocation )
207 storeToLocation->setCurrentItem( locationIndex ); 208 storeToLocation->setCurrentItem( locationIndex );
208 if ( it.key() == lastRestoreLocation ) 209 if ( it.key() == lastRestoreLocation )
209 restoreSource->setCurrentItem( locationIndex ); 210 restoreSource->setCurrentItem( locationIndex );
210 locationIndex++; 211 locationIndex++;
211 } 212 }
212} 213}
213 214
214QList<QListViewItem> BackupAndRestore::getAllItems(QListViewItem *item, QList<QListViewItem> &list) 215QList<QListViewItem> BackupAndRestore::getAllItems(QListViewItem *item, QList<QListViewItem> &list)
215{ 216{
216 while(item) 217 while(item)
217 { 218 {
218 if(item->childCount() > 0) 219 if(item->childCount() > 0)
219 getAllItems(item->firstChild(), list); 220 getAllItems(item->firstChild(), list);
220 list.append(item); 221 list.append(item);
221 item = item->nextSibling(); 222 item = item->nextSibling();
222 } 223 }
223 return list; 224 return list;
224} 225}
225 226
226/** 227/**
227 * Selects and unselects the item by setting the HEADER_BACKUP to B or !. 228 * Selects and unselects the item by setting the HEADER_BACKUP to B or !.
228 * and changing the icon to match 229 * and changing the icon to match
229 * @param currentItem the item to swich the selection choice. 230 * @param currentItem the item to swich the selection choice.
230 */ 231 */
231void BackupAndRestore::selectItem(QListViewItem *currentItem) 232void BackupAndRestore::selectItem(QListViewItem *currentItem)
232{ 233{
233 if(!currentItem) 234 if(!currentItem)
234 return; 235 return;
235 236
236 if(currentItem->text(HEADER_BACKUP) == "B") 237 if(currentItem->text(HEADER_BACKUP) == "B")
237 { 238 {
238 currentItem->setPixmap(HEADER_NAME, Opie::Core::OResource::loadPixmap("backup/null")); 239 currentItem->setPixmap(HEADER_NAME, Opie::Core::OResource::loadPixmap("backup/null"));
239 currentItem->setText(HEADER_BACKUP, ""); 240 currentItem->setText(HEADER_BACKUP, "");
240 } 241 }
241 else 242 else
242 { 243 {
243 currentItem->setPixmap(HEADER_NAME, Opie::Core::OResource::loadPixmap("backup/check")); 244 currentItem->setPixmap(HEADER_NAME, Opie::Core::OResource::loadPixmap("backup/check"));
244 currentItem->setText(HEADER_BACKUP, "B"); 245 currentItem->setText(HEADER_BACKUP, "B");
245 } 246 }
246} 247}
247 248
248void BackupAndRestore::scanForApplicationSettings() 249void BackupAndRestore::scanForApplicationSettings()
249{ 250{
250 QDir d( QDir::homeDirPath() + "/" + QString( applicationSettings->text(BACKUP_LOCATION) ) ); 251 QDir d( QDir::homeDirPath() + "/" + QString( applicationSettings->text(BACKUP_LOCATION) ) );
251 d.setFilter( QDir::Dirs | QDir::Files | QDir::NoSymLinks ); 252 d.setFilter( QDir::Dirs | QDir::Files | QDir::NoSymLinks );
252 const QFileInfoList *list = d.entryInfoList(); 253 const QFileInfoList *list = d.entryInfoList();
253 QFileInfoListIterator it( *list ); 254 QFileInfoListIterator it( *list );
254 QFileInfo *fi; 255 QFileInfo *fi;
255 while ( (fi=it.current()) ) 256 while ( (fi=it.current()) )
256 { 257 {
257 //odebug << (d.path()+"/"+fi->fileName()).latin1() << oendl; 258 //odebug << (d.path()+"/"+fi->fileName()).latin1() << oendl;
258 if ( ( fi->fileName() != "." ) && ( fi->fileName() != ".." ) ) 259 if ( ( fi->fileName() != "." ) && ( fi->fileName() != ".." ) )
259 { 260 {
260 QListViewItem *newItem = new QListViewItem(applicationSettings, fi->fileName()); 261 QListViewItem *newItem = new QListViewItem(applicationSettings, fi->fileName());
261 selectItem(newItem); 262 selectItem(newItem);
262 } 263 }
263 ++it; 264 ++it;
264 } 265 }
265} 266}
266 267
267/** 268/**
268 * The "Backup" button has been pressed. Get a list of all of the files that 269 * The "Backup" button has been pressed. Get a list of all of the files that
269 * should be backed up. If there are no files, emit and error and exit. 270 * should be backed up. If there are no files, emit and error and exit.
270 * Determine the file name to store the backup in. Backup the file(s) using 271 * Determine the file name to store the backup in. Backup the file(s) using
271 * tar and gzip --best. Report failure or success 272 * tar and gzip --best. Report failure or success
272 */ 273 */
273void BackupAndRestore::backup() 274void BackupAndRestore::backup()
274{ 275{
275 backupUserData(); 276 backupUserData();
276/* if ( cb_type_userdata->isChecked() ) 277/* if ( cb_type_userdata->isChecked() )
277 backupUserData(); 278 backupUserData();
278 else 279 else
279 backupRootFs();*/ 280 backupRootFs();*/
280} 281}
281 282
282 283
283void BackupAndRestore::backupRootFs() 284void BackupAndRestore::backupRootFs()
284{ 285{
285 if ( ( ODevice::inst()->model() != Model_Zaurus_SL5000 ) && ( ODevice::inst()->model() != Model_Zaurus_SL5500 ) ) 286 if ( ( ODevice::inst()->model() != Model_Zaurus_SL5000 ) && ( ODevice::inst()->model() != Model_Zaurus_SL5500 ) )
286 { 287 {
287 QMessageBox::critical( this, "Not yet implemented!", "<qt>Sorry, support for this model is not yet done.</qt>", "Ok" ); 288 QMessageBox::critical( this, "Not yet implemented!", "<qt>Sorry, support for this model is not yet done.</qt>", "Ok" );
288 return; 289 return;
289 } 290 }
290 291
291 if ( !QFile::exists( "/usr/bin/mkfs.jffs2" ) && !QFile::exists( "/usr/sbin/mkfs.jffs2" ) ) 292 if ( !QFile::exists( "/usr/bin/mkfs.jffs2" ) && !QFile::exists( "/usr/sbin/mkfs.jffs2" ) )
292 { 293 {
293 QMessageBox::critical( this, "Can't find utility!", "<qt>Can't find mkfs.jffs2 - Install mtd-utils.</qt>", "Ok" ); 294 QMessageBox::critical( this, "Can't find utility!", "<qt>Can't find mkfs.jffs2 - Install mtd-utils.</qt>", "Ok" );
294 return; 295 return;
295 } 296 }
296 297
297 // call 'mount' and parse its output to gather the device on which the root partition is mounted 298 // call 'mount' and parse its output to gather the device on which the root partition is mounted
298 FILE* mountp = popen( "mount", "r" ); 299 FILE* mountp = popen( "mount", "r" );
299 QString device; 300 QString device;
300 QString mountpoint; 301 QString mountpoint;
301 { 302 {
302 QTextStream mounto( mountp, IO_ReadOnly ); 303 QTextStream mounto( mountp, IO_ReadOnly );
303 QString on; 304 QString on;
304 QString type; 305 QString type;
305 QString filesystem; 306 QString filesystem;
306 QString options; 307 QString options;
307 while ( !mounto.atEnd() ) 308 while ( !mounto.atEnd() )
308 { 309 {
309 mounto >> device >> on >> mountpoint >> type >> filesystem >> options; 310 mounto >> device >> on >> mountpoint >> type >> filesystem >> options;
310 if ( mountpoint == "/" ) break; 311 if ( mountpoint == "/" ) break;
311 } 312 }
312 odebug << device << " is formatted w/ '" << filesystem << "' and mounted on '" << mountpoint << "'" << oendl; 313 odebug << device << " is formatted w/ '" << filesystem << "' and mounted on '" << mountpoint << "'" << oendl;
313 314
314 if ( !device.startsWith( "/dev/mtdblock" ) ) 315 if ( !device.startsWith( "/dev/mtdblock" ) )
315 { 316 {
316 QMessageBox::critical( this, "Can't backup!", QString( "<qt>unsupported root device '%1' - needs to be /dev/mtdblockN</qt>").arg( device ), "Ok" ); 317 QMessageBox::critical( this, "Can't backup!", QString( "<qt>unsupported root device '%1' - needs to be /dev/mtdblockN</qt>").arg( device ), "Ok" );
317 return; 318 return;
318 } 319 }
319 } // at this point, the QTextStream has been destroy and we can close the FILE* 320 } // at this point, the QTextStream has been destroy and we can close the FILE*
320 pclose( mountp ); 321 pclose( mountp );
321 322
322#if 1 323#if 1
323 int rootmtd = device.right( 1 ).toInt(); 324 int rootmtd = device.right( 1 ).toInt();
324#else 325#else
325 int rootmtd = 0; 326 int rootmtd = 0;
326#endif 327#endif
327 odebug << "root mtdblock seems to be '" << rootmtd << "'" << oendl; 328 odebug << "root mtdblock seems to be '" << rootmtd << "'" << oendl;
328 329
329 // scan /proc/mtd to gather the size and erasesize of the root mtdblock 330 // scan /proc/mtd to gather the size and erasesize of the root mtdblock
330 QFile procmtdf( "/proc/mtd" ); 331 QFile procmtdf( "/proc/mtd" );
331 if ( !procmtdf.open( IO_ReadOnly ) ) 332 if ( !procmtdf.open( IO_ReadOnly ) )
332 { 333 {
333 QMessageBox::critical( this, "Can't backup!", "<qt>Can't open /proc/mtd</qt>", "Ok" ); 334 QMessageBox::critical( this, "Can't backup!", "<qt>Can't open /proc/mtd</qt>", "Ok" );
334 return; 335 return;
335 } 336 }
336 337
337 QTextStream procmtd( &procmtdf ); 338 QTextStream procmtd( &procmtdf );
338 for ( int i = 0; i <= rootmtd; ++i ) procmtd.readLine(); // skip uninteresting things 339 for ( int i = 0; i <= rootmtd; ++i ) procmtd.readLine(); // skip uninteresting things
339 QString dev; 340 QString dev;
340 QString size; 341 QString size;
341 QString erasesize; 342 QString erasesize;
342 QString devname; 343 QString devname;
343 procmtd >> dev >> size >> erasesize >> devname; 344 procmtd >> dev >> size >> erasesize >> devname;
344 345
345 odebug << "device " << dev << " size = " << size << ", erase size = " << erasesize << ", name = " << devname << "\"" << oendl; 346 odebug << "device " << dev << " size = " << size << ", erase size = " << erasesize << ", name = " << devname << "\"" << oendl;
346 347
347 // compute pad 348 // compute pad
348 QString pad = "--pad"; 349 QString pad = "--pad";
349 switch ( ODevice::inst()->model() ) 350 switch ( ODevice::inst()->model() )
350 { 351 {
351 case Model_Zaurus_SL5000: pad = "--pad=14680064"; break; 352 case Model_Zaurus_SL5000: pad = "--pad=14680064"; break;
352 case Model_Zaurus_SL5500: pad = "--pad=14680064"; break; 353 case Model_Zaurus_SL5500: pad = "--pad=14680064"; break;
353 // FIXME: Add Beagle and SIMpad 354 // FIXME: Add Beagle and SIMpad
354 } 355 }
355 356
356 // compute eraseblock 357 // compute eraseblock
357 QString eraseblock = "--eraseblock=0x" + erasesize; 358 QString eraseblock = "--eraseblock=0x" + erasesize;
358 359
359 // compute output 360 // compute output
360 QString outputFile = "--output=" + backupLocations[storeToLocation->currentText()]; 361 QString outputFile = "--output=" + backupLocations[storeToLocation->currentText()];
361 QDateTime datetime = QDateTime::currentDateTime(); 362 QDateTime datetime = QDateTime::currentDateTime();
362 QString dateString = QString::number( datetime.date().year() ) + QString::number( datetime.date().month() ).rightJustify(2, '0') + 363 QString dateString = QString::number( datetime.date().year() ) + QString::number( datetime.date().month() ).rightJustify(2, '0') +
363 QString::number( datetime.date().day() ).rightJustify(2, '0'); 364 QString::number( datetime.date().day() ).rightJustify(2, '0');
364 outputFile += "/initrd.bin-" + dateString; 365 outputFile += "/initrd.bin-" + dateString;
365 366
366 // call mkfs.jffs2 to create the backup 367 // call mkfs.jffs2 to create the backup
367 QString cmdline = QString( "mkfs.jffs2 --faketime --root=/ %1 --little-endian %2 %3 -n" ).arg( outputFile ).arg( pad ).arg( eraseblock ); 368 QString cmdline = QString( "mkfs.jffs2 --faketime --root=/ %1 --little-endian %2 %3 -n" ).arg( outputFile ).arg( pad ).arg( eraseblock );
368 cmdline.append( " --ignore=/tmp --ignore=/mnt --ignore=/var --ignore=/proc" ); 369 cmdline.append( " --ignore=/tmp --ignore=/mnt --ignore=/var --ignore=/proc" );
369 owarn << "Calling '" << cmdline << "'" << oendl; 370 owarn << "Calling '" << cmdline << "'" << oendl;
370 371
371 OWait *owait = new OWait(); 372 OWait *owait = new OWait();
372 Global::statusMessage( tr( "Backing up..." ) ); 373 Global::statusMessage( tr( "Backing up..." ) );
373 owait->show(); 374 owait->show();
374 qApp->processEvents(); 375 qApp->processEvents();
375 376
376 int r = ::system( cmdline ); 377 int r = ::system( cmdline );
377 378
378 owait->hide(); 379 owait->hide();
379 delete owait; 380 delete owait;
380 381
381 if ( r != 0 ) 382 if ( r != 0 )
382 { 383 {
383 perror("Error: "); 384 perror("Error: ");
384 QString errorMsg = QString( tr( "<qt>%1</qt>" ).arg( strerror( errno ) ) ); 385 QString errorMsg = QString( tr( "<qt>%1</qt>" ).arg( strerror( errno ) ) );
385 QMessageBox::critical(this, tr( "Backup Failed!" ), errorMsg, QString( tr( "Ok" ) ) ); 386 QMessageBox::critical(this, tr( "Backup Failed!" ), errorMsg, QString( tr( "Ok" ) ) );
386 } 387 }
387 388
388 // FIXME: Add image postprocessing for C7x0 and C8x0, for Beagle, for SIMpad 389 // FIXME: Add image postprocessing for C7x0 and C8x0, for Beagle, for SIMpad
389} 390}
390 391
391void BackupAndRestore::backupUserData() 392void BackupAndRestore::backupUserData()
392{ 393{
393 QString backupFiles; 394 QString backupFiles;
394 if(getBackupFiles(backupFiles, NULL) == 0) 395 if(getBackupFiles(backupFiles, NULL) == 0)
395 { 396 {
396 QMessageBox::critical(this, "Message", 397 QMessageBox::critical(this, "Message",
397 "No items selected.",QString("Ok") ); 398 "No items selected.",QString("Ok") );
398 return; 399 return;
399 } 400 }
400 401
401 OWait *owait = new OWait(); 402 OWait *owait = new OWait();
402 Global::statusMessage( tr( "Backing up..." ) ); 403 Global::statusMessage( tr( "Backing up..." ) );
403 owait->show(); 404 owait->show();
404 qApp->processEvents(); 405 qApp->processEvents();
405 406
406 QString outputFile = backupLocations[storeToLocation->currentText()]; 407 QString outputFile = backupLocations[storeToLocation->currentText()];
407 408
408 QDateTime datetime = QDateTime::currentDateTime(); 409 QDateTime datetime = QDateTime::currentDateTime();
409 QString dateString = QString::number( datetime.date().year() ) + QString::number( datetime.date().month() ).rightJustify(2, '0') + 410 QString dateString = QString::number( datetime.date().year() ) + QString::number( datetime.date().month() ).rightJustify(2, '0') +
410 QString::number( datetime.date().day() ).rightJustify(2, '0'); 411 QString::number( datetime.date().day() ).rightJustify(2, '0');
411 412
412 outputFile += "/" + dateString; 413 outputFile += "/" + dateString;
413 414
414 QString t = outputFile; 415 QString t = outputFile;
415 int c = 1; 416 int c = 1;
416 while(QFile::exists(outputFile + EXTENSION)) 417 while(QFile::exists(outputFile + EXTENSION))
417 { 418 {
418 outputFile = t + QString("%1").arg(c); 419 outputFile = t + QString("%1").arg(c);
419 c++; 420 c++;
420 } 421 }
421 422
422 // We execute tar and compressing its output with gzip.. 423 // We execute tar and compressing its output with gzip..
423 // The error output will be written into a temp-file which could be provided 424 // The error output will be written into a temp-file which could be provided
424 // for debugging.. 425 // for debugging..
425 odebug << "Storing file: " << outputFile.latin1() << "" << oendl; 426 odebug << "Storing file: " << outputFile.latin1() << "" << oendl;
426 outputFile += EXTENSION; 427 outputFile += EXTENSION;
427 428
428 QString commandLine = QString( "cd %1 && (tar -X %1 -cz %2 Applications/backup/exclude -f %3 ) 2> %4" ).arg( QDir::homeDirPath() ) 429 QString commandLine = QString( "cd %1 && (tar -X %1 -cz %2 Applications/backup/exclude -f %3 ) 2> %4" ).arg( QDir::homeDirPath() )
429 .arg( getExcludeFile() ) 430 .arg( getExcludeFile() )
430 .arg( backupFiles ) 431 .arg( backupFiles )
431 .arg( outputFile.latin1() ) 432 .arg( outputFile.latin1() )
432 .arg( tempFileName.latin1() ); 433 .arg( tempFileName.latin1() );
433 434
434 odebug << commandLine << oendl; 435 odebug << commandLine << oendl;
435 436
436 int r = system( commandLine ); 437 int r = system( commandLine );
437 438
438 owait->hide(); 439 owait->hide();
439 delete owait; 440 delete owait;
440 441
441 //Error-Handling 442 //Error-Handling
442 if(r != 0) 443 if(r != 0)
443 { 444 {
444 perror("Error: "); 445 perror("Error: ");
445 QString errorMsg= tr( "Error from System:\n" ) + (QString)strerror( errno ); 446 QString errorMsg= tr( "Error from System:\n" ) + (QString)strerror( errno );
446 447
447 switch( QMessageBox::critical(this, tr( "Message" ), tr( "Backup Failed!" ) + "\n" 448 switch( QMessageBox::critical(this, tr( "Message" ), tr( "Backup Failed!" ) + "\n"
448 + errorMsg, QString( tr( "Ok" ) ), QString( tr( "Details" ) ) ) ) 449 + errorMsg, QString( tr( "Ok" ) ), QString( tr( "Details" ) ) ) )
449 { 450 {
450 451
451 case 1: 452 case 1:
452 owarn << "Details pressed !" << oendl; 453 owarn << "Details pressed !" << oendl;
453 ErrorDialog* pErrDialog = new ErrorDialog( this, NULL, true ); 454 ErrorDialog* pErrDialog = new ErrorDialog( this, NULL, true );
454 QFile errorFile( tempFileName ); 455 QFile errorFile( tempFileName );
455 if ( errorFile.open(IO_ReadOnly) ) 456 if ( errorFile.open(IO_ReadOnly) )
456 { 457 {
457 QTextStream t( &errorFile ); 458 QTextStream t( &errorFile );
458 QString s; 459 QString s;
459 while ( !t.eof() ) 460 while ( !t.eof() )
460 { // until end of file... 461 { // until end of file...
461 s += t.readLine(); // line of text excluding '\n' 462 s += t.readLine(); // line of text excluding '\n'
462 } 463 }
463 errorFile.close(); 464 errorFile.close();
464 465
465 pErrDialog->m_textarea->setText( s ); 466 pErrDialog->m_textarea->setText( s );
466 } 467 }
467 else 468 else
468 { 469 {
469 pErrDialog->m_textarea->setText( "Unable to open File: /tmp/backup.er" ); 470 pErrDialog->m_textarea->setText( "Unable to open File: /tmp/backup.er" );
470 } 471 }
471 QPEApplication::execDialog( pErrDialog ); 472 QPEApplication::execDialog( pErrDialog );
472 delete pErrDialog; 473 delete pErrDialog;
473 break; 474 break;
474 } 475 }
475 setCaption(tr("Backup and Restore.. Failed !!")); 476 setCaption(tr("Backup and Restore.. Failed !!"));
476 return; 477 return;
477 } 478 }
478 else 479 else
479 { 480 {
480 QMessageBox::information(this, tr( "Message" ), tr( "Backup Successful." ), QString(tr( "Ok" ) ) ); 481 QMessageBox::information(this, tr( "Message" ), tr( "Backup Successful." ), QString(tr( "Ok" ) ) );
481 } 482 }
482 483
483 //write store-location 484 //write store-location
484 Config config( "BackupAndRestore" ); 485 Config config( "BackupAndRestore" );
485 config.setGroup( "LastLocation" ); 486 config.setGroup( "LastLocation" );
486 config.writeEntry( "LastStoreLocation", storeToLocation->currentText() ); 487 config.writeEntry( "LastStoreLocation", storeToLocation->currentText() );
487 488
488 setCaption(tr("Backup and Restore")); 489 setCaption(tr("Backup and Restore"));