summaryrefslogtreecommitdiff
path: root/noncore
Unidiff
Diffstat (limited to 'noncore') (more/less context) (show whitespace changes)
-rw-r--r--noncore/settings/backup/backuprestore.cpp47
-rw-r--r--noncore/settings/backup/backuprestorebase.ui53
2 files changed, 24 insertions, 76 deletions
diff --git a/noncore/settings/backup/backuprestore.cpp b/noncore/settings/backup/backuprestore.cpp
index 180980a..5a4e284 100644
--- a/noncore/settings/backup/backuprestore.cpp
+++ b/noncore/settings/backup/backuprestore.cpp
@@ -1,71 +1,71 @@
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 <qpe/qpeapplication.h> 33#include <qpe/qpeapplication.h>
34#include <qpe/resource.h> 34#include <qpe/resource.h>
35#include <qpe/config.h> 35#include <qpe/config.h>
36#include <opie2/odebug.h> 36#include <opie2/odebug.h>
37#include <opie2/odevice.h> 37#include <opie2/odevice.h>
38#include <opie2/ostorageinfo.h> 38#include <opie2/ostorageinfo.h>
39#include <opie2/ofiledialog.h> 39#include <opie2/ofiledialog.h>
40#include <opie2/owait.h> 40#include <opie2/owait.h>
41using namespace Opie::Core; 41using namespace Opie::Core;
42using namespace Opie::Ui; 42using namespace Opie::Ui;
43 43
44/* QT */ 44/* QT */
45#include <qapplication.h> 45#include <qapplication.h>
46#include <qmultilineedit.h> 46#include <qmultilineedit.h>
47#include <qdir.h> 47#include <qdir.h>
48#include <qfile.h> 48#include <qfile.h>
49#include <qfileinfo.h> 49#include <qfileinfo.h>
50#include <qlistview.h> 50#include <qlistview.h>
51#include <qpushbutton.h> 51#include <qpushbutton.h>
52#include <qradiobutton.h> 52#include <qradiobutton.h>
53#include <qheader.h> 53#include <qheader.h>
54#include <qmessagebox.h> 54#include <qmessagebox.h>
55#include <qcombobox.h> 55#include <qcombobox.h>
56#include <qlist.h> 56#include <qlist.h>
57#include <qregexp.h> 57#include <qregexp.h>
58#include <qtextstream.h> 58#include <qtextstream.h>
59#include <qtextview.h> 59#include <qtextview.h>
60#include <qlineedit.h> 60#include <qlineedit.h>
61#include <qstringlist.h> 61#include <qstringlist.h>
62 62
63/* STD */ 63/* STD */
64#include <errno.h> 64#include <errno.h>
65#include <stdlib.h> 65#include <stdlib.h>
66#include <unistd.h> 66#include <unistd.h>
67#include <sys/stat.h> 67#include <sys/stat.h>
68#include <dirent.h> 68#include <dirent.h>
69 69
70#define HEADER_NAME 0 70#define HEADER_NAME 0
71#define HEADER_BACKUP 1 71#define HEADER_BACKUP 1
@@ -225,100 +225,101 @@ QList<QListViewItem> BackupAndRestore::getAllItems(QListViewItem *item, QList<QL
225 * Selects and unselects the item by setting the HEADER_BACKUP to B or !. 225 * Selects and unselects the item by setting the HEADER_BACKUP to B or !.
226 * and changing the icon to match 226 * and changing the icon to match
227 * @param currentItem the item to swich the selection choice. 227 * @param currentItem the item to swich the selection choice.
228 */ 228 */
229void BackupAndRestore::selectItem(QListViewItem *currentItem) 229void BackupAndRestore::selectItem(QListViewItem *currentItem)
230{ 230{
231 if(!currentItem) 231 if(!currentItem)
232 return; 232 return;
233 233
234 if(currentItem->text(HEADER_BACKUP) == "B") 234 if(currentItem->text(HEADER_BACKUP) == "B")
235 { 235 {
236 currentItem->setPixmap(HEADER_NAME, Resource::loadPixmap("backup/null")); 236 currentItem->setPixmap(HEADER_NAME, Resource::loadPixmap("backup/null"));
237 currentItem->setText(HEADER_BACKUP, ""); 237 currentItem->setText(HEADER_BACKUP, "");
238 } 238 }
239 else 239 else
240 { 240 {
241 currentItem->setPixmap(HEADER_NAME, Resource::loadPixmap("backup/check")); 241 currentItem->setPixmap(HEADER_NAME, Resource::loadPixmap("backup/check"));
242 currentItem->setText(HEADER_BACKUP, "B"); 242 currentItem->setText(HEADER_BACKUP, "B");
243 } 243 }
244} 244}
245 245
246void BackupAndRestore::scanForApplicationSettings() 246void BackupAndRestore::scanForApplicationSettings()
247{ 247{
248 QDir d( QDir::homeDirPath() + "/" + QString( applicationSettings->text(BACKUP_LOCATION) ) ); 248 QDir d( QDir::homeDirPath() + "/" + QString( applicationSettings->text(BACKUP_LOCATION) ) );
249 d.setFilter( QDir::Dirs | QDir::Files | QDir::NoSymLinks ); 249 d.setFilter( QDir::Dirs | QDir::Files | QDir::NoSymLinks );
250 const QFileInfoList *list = d.entryInfoList(); 250 const QFileInfoList *list = d.entryInfoList();
251 QFileInfoListIterator it( *list ); 251 QFileInfoListIterator it( *list );
252 QFileInfo *fi; 252 QFileInfo *fi;
253 while ( (fi=it.current()) ) 253 while ( (fi=it.current()) )
254 { 254 {
255 //odebug << (d.path()+"/"+fi->fileName()).latin1() << oendl; 255 //odebug << (d.path()+"/"+fi->fileName()).latin1() << oendl;
256 if ( ( fi->fileName() != "." ) && ( fi->fileName() != ".." ) ) 256 if ( ( fi->fileName() != "." ) && ( fi->fileName() != ".." ) )
257 { 257 {
258 QListViewItem *newItem = new QListViewItem(applicationSettings, fi->fileName()); 258 QListViewItem *newItem = new QListViewItem(applicationSettings, fi->fileName());
259 selectItem(newItem); 259 selectItem(newItem);
260 } 260 }
261 ++it; 261 ++it;
262 } 262 }
263} 263}
264 264
265/** 265/**
266 * The "Backup" button has been pressed. Get a list of all of the files that 266 * The "Backup" button has been pressed. Get a list of all of the files that
267 * should be backed up. If there are no files, emit and error and exit. 267 * should be backed up. If there are no files, emit and error and exit.
268 * Determine the file name to store the backup in. Backup the file(s) using 268 * Determine the file name to store the backup in. Backup the file(s) using
269 * tar and gzip --best. Report failure or success 269 * tar and gzip --best. Report failure or success
270 */ 270 */
271void BackupAndRestore::backup() 271void BackupAndRestore::backup()
272{ 272{
273 if ( cb_type_userdata->isChecked() ) 273 backupUserData();
274/* if ( cb_type_userdata->isChecked() )
274 backupUserData(); 275 backupUserData();
275 else 276 else
276 backupRootFs(); 277 backupRootFs();*/
277} 278}
278 279
279 280
280void BackupAndRestore::backupRootFs() 281void BackupAndRestore::backupRootFs()
281{ 282{
282 if ( ( ODevice::inst()->model() != Model_Zaurus_SL5000 ) && ( ODevice::inst()->model() != Model_Zaurus_SL5500 ) ) 283 if ( ( ODevice::inst()->model() != Model_Zaurus_SL5000 ) && ( ODevice::inst()->model() != Model_Zaurus_SL5500 ) )
283 { 284 {
284 QMessageBox::critical( this, "Not yet implemented!", "<qt>Sorry, support for this model is not yet done.</qt>", "Ok" ); 285 QMessageBox::critical( this, "Not yet implemented!", "<qt>Sorry, support for this model is not yet done.</qt>", "Ok" );
285 return; 286 return;
286 } 287 }
287 288
288 if ( !QFile::exists( "/usr/bin/mkfs.jffs2" ) && !QFile::exists( "/usr/sbin/mkfs.jffs2" ) ) 289 if ( !QFile::exists( "/usr/bin/mkfs.jffs2" ) && !QFile::exists( "/usr/sbin/mkfs.jffs2" ) )
289 { 290 {
290 QMessageBox::critical( this, "Can't find utility!", "<qt>Can't find mkfs.jffs2 - Install mtd-utils.</qt>", "Ok" ); 291 QMessageBox::critical( this, "Can't find utility!", "<qt>Can't find mkfs.jffs2 - Install mtd-utils.</qt>", "Ok" );
291 return; 292 return;
292 } 293 }
293 294
294 // call 'mount' and parse its output to gather the device on which the root partition is mounted 295 // call 'mount' and parse its output to gather the device on which the root partition is mounted
295 FILE* mountp = popen( "mount", "r" ); 296 FILE* mountp = popen( "mount", "r" );
296 QString device; 297 QString device;
297 QString mountpoint; 298 QString mountpoint;
298 { 299 {
299 QTextStream mounto( mountp, IO_ReadOnly ); 300 QTextStream mounto( mountp, IO_ReadOnly );
300 QString on; 301 QString on;
301 QString type; 302 QString type;
302 QString filesystem; 303 QString filesystem;
303 QString options; 304 QString options;
304 while ( !mounto.atEnd() ) 305 while ( !mounto.atEnd() )
305 { 306 {
306 mounto >> device >> on >> mountpoint >> type >> filesystem >> options; 307 mounto >> device >> on >> mountpoint >> type >> filesystem >> options;
307 if ( mountpoint == "/" ) break; 308 if ( mountpoint == "/" ) break;
308 } 309 }
309 odebug << device << " is formatted w/ '" << filesystem << "' and mounted on '" << mountpoint << "'" << oendl; 310 odebug << device << " is formatted w/ '" << filesystem << "' and mounted on '" << mountpoint << "'" << oendl;
310 311
311 if ( !device.startsWith( "/dev/mtdblock" ) ) 312 if ( !device.startsWith( "/dev/mtdblock" ) )
312 { 313 {
313 QMessageBox::critical( this, "Can't backup!", QString( "<qt>unsupported root device '%1' - needs to be /dev/mtdblockN</qt>").arg( device ), "Ok" ); 314 QMessageBox::critical( this, "Can't backup!", QString( "<qt>unsupported root device '%1' - needs to be /dev/mtdblockN</qt>").arg( device ), "Ok" );
314 return; 315 return;
315 } 316 }
316 } // at this point, the QTextStream has been destroy and we can close the FILE* 317 } // at this point, the QTextStream has been destroy and we can close the FILE*
317 pclose( mountp ); 318 pclose( mountp );
318 319
319#if 1 320#if 1
320 int rootmtd = device.right( 1 ).toInt(); 321 int rootmtd = device.right( 1 ).toInt();
321#else 322#else
322 int rootmtd = 0; 323 int rootmtd = 0;
323#endif 324#endif
324 odebug << "root mtdblock seems to be '" << rootmtd << "'" << oendl; 325 odebug << "root mtdblock seems to be '" << rootmtd << "'" << oendl;
diff --git a/noncore/settings/backup/backuprestorebase.ui b/noncore/settings/backup/backuprestorebase.ui
index c91f292..f2b7d75 100644
--- a/noncore/settings/backup/backuprestorebase.ui
+++ b/noncore/settings/backup/backuprestorebase.ui
@@ -85,149 +85,96 @@
85 <name>name</name> 85 <name>name</name>
86 <cstring>labelDestination</cstring> 86 <cstring>labelDestination</cstring>
87 </property> 87 </property>
88 <property stdset="1"> 88 <property stdset="1">
89 <name>text</name> 89 <name>text</name>
90 <string>Destination</string> 90 <string>Destination</string>
91 </property> 91 </property>
92 </widget> 92 </widget>
93 <widget row="3" column="0" rowspan="1" colspan="2" > 93 <widget row="3" column="0" rowspan="1" colspan="2" >
94 <class>QPushButton</class> 94 <class>QPushButton</class>
95 <property stdset="1"> 95 <property stdset="1">
96 <name>name</name> 96 <name>name</name>
97 <cstring>backupButton</cstring> 97 <cstring>backupButton</cstring>
98 </property> 98 </property>
99 <property stdset="1"> 99 <property stdset="1">
100 <name>text</name> 100 <name>text</name>
101 <string>&amp;Backup</string> 101 <string>&amp;Backup</string>
102 </property> 102 </property>
103 </widget> 103 </widget>
104 <widget row="2" column="0" rowspan="1" colspan="2" > 104 <widget row="2" column="0" rowspan="1" colspan="2" >
105 <class>QListView</class> 105 <class>QListView</class>
106 <column> 106 <column>
107 <property> 107 <property>
108 <name>text</name> 108 <name>text</name>
109 <string>Applications</string> 109 <string>Applications</string>
110 </property> 110 </property>
111 <property> 111 <property>
112 <name>clickable</name> 112 <name>clickable</name>
113 <bool>true</bool> 113 <bool>true</bool>
114 </property> 114 </property>
115 <property> 115 <property>
116 <name>resizeable</name> 116 <name>resizeable</name>
117 <bool>true</bool> 117 <bool>true</bool>
118 </property> 118 </property>
119 </column> 119 </column>
120 <property stdset="1"> 120 <property stdset="1">
121 <name>name</name> 121 <name>name</name>
122 <cstring>backupList</cstring> 122 <cstring>backupList</cstring>
123 </property> 123 </property>
124 <property stdset="1"> 124 <property stdset="1">
125 <name>allColumnsShowFocus</name> 125 <name>allColumnsShowFocus</name>
126 <bool>true</bool> 126 <bool>true</bool>
127 </property> 127 </property>
128 <property stdset="1"> 128 <property stdset="1">
129 <name>rootIsDecorated</name> 129 <name>rootIsDecorated</name>
130 <bool>true</bool> 130 <bool>true</bool>
131 </property> 131 </property>
132 </widget> 132 </widget>
133 <widget row="0" column="0" rowspan="1" colspan="2" >
134 <class>QButtonGroup</class>
135 <property stdset="1">
136 <name>name</name>
137 <cstring>frame_type</cstring>
138 </property>
139 <property stdset="1">
140 <name>title</name>
141 <string>Type</string>
142 </property>
143 <property>
144 <name>layoutMargin</name>
145 </property>
146 <property>
147 <name>layoutSpacing</name>
148 </property>
149 <grid>
150 <property stdset="1">
151 <name>margin</name>
152 <number>6</number>
153 </property>
154 <property stdset="1">
155 <name>spacing</name>
156 <number>2</number>
157 </property>
158 <widget row="1" column="0" >
159 <class>QRadioButton</class>
160 <property stdset="1">
161 <name>name</name>
162 <cstring>cb_type_fullbackup</cstring>
163 </property>
164 <property stdset="1">
165 <name>text</name>
166 <string>Full Backup (Root File System)</string>
167 </property>
168 </widget>
169 <widget row="0" column="0" >
170 <class>QRadioButton</class>
171 <property stdset="1">
172 <name>name</name>
173 <cstring>cb_type_userdata</cstring>
174 </property>
175 <property stdset="1">
176 <name>text</name>
177 <string>User Data (Configuration + PIM)</string>
178 </property>
179 <property stdset="1">
180 <name>checked</name>
181 <bool>true</bool>
182 </property>
183 </widget>
184 </grid>
185 </widget>
186 </grid> 133 </grid>
187 </widget> 134 </widget>
188 <widget> 135 <widget>
189 <class>QWidget</class> 136 <class>QWidget</class>
190 <property stdset="1"> 137 <property stdset="1">
191 <name>name</name> 138 <name>name</name>
192 <cstring>Widget3</cstring> 139 <cstring>Widget3</cstring>
193 </property> 140 </property>
194 <attribute> 141 <attribute>
195 <name>title</name> 142 <name>title</name>
196 <string>Restore</string> 143 <string>Restore</string>
197 </attribute> 144 </attribute>
198 <grid> 145 <grid>
199 <property stdset="1"> 146 <property stdset="1">
200 <name>margin</name> 147 <name>margin</name>
201 <number>4</number> 148 <number>4</number>
202 </property> 149 </property>
203 <property stdset="1"> 150 <property stdset="1">
204 <name>spacing</name> 151 <name>spacing</name>
205 <number>2</number> 152 <number>2</number>
206 </property> 153 </property>
207 <widget row="0" column="1" > 154 <widget row="0" column="1" >
208 <class>QComboBox</class> 155 <class>QComboBox</class>
209 <property stdset="1"> 156 <property stdset="1">
210 <name>name</name> 157 <name>name</name>
211 <cstring>restoreSource</cstring> 158 <cstring>restoreSource</cstring>
212 </property> 159 </property>
213 </widget> 160 </widget>
214 <widget row="2" column="0" rowspan="1" colspan="2" > 161 <widget row="2" column="0" rowspan="1" colspan="2" >
215 <class>QPushButton</class> 162 <class>QPushButton</class>
216 <property stdset="1"> 163 <property stdset="1">
217 <name>name</name> 164 <name>name</name>
218 <cstring>restoreButton</cstring> 165 <cstring>restoreButton</cstring>
219 </property> 166 </property>
220 <property stdset="1"> 167 <property stdset="1">
221 <name>text</name> 168 <name>text</name>
222 <string>&amp;Restore</string> 169 <string>&amp;Restore</string>
223 </property> 170 </property>
224 </widget> 171 </widget>
225 <widget row="0" column="0" > 172 <widget row="0" column="0" >
226 <class>QLabel</class> 173 <class>QLabel</class>
227 <property stdset="1"> 174 <property stdset="1">
228 <name>name</name> 175 <name>name</name>
229 <cstring>destinationLabel</cstring> 176 <cstring>destinationLabel</cstring>
230 </property> 177 </property>
231 <property stdset="1"> 178 <property stdset="1">
232 <name>text</name> 179 <name>text</name>
233 <string>Select Source</string> 180 <string>Select Source</string>