summaryrefslogtreecommitdiff
authorar <ar>2004-07-25 14:35:09 (UTC)
committer ar <ar>2004-07-25 14:35:09 (UTC)
commit8b3a81d53c7db43bf748c2390b429dde2ab9aa82 (patch) (unidiff)
treeeb0da156fba85f8ade489a42382ace3a88df87af
parentda9a436a866e608451115316c7374a6730174130 (diff)
downloadopie-8b3a81d53c7db43bf748c2390b429dde2ab9aa82.zip
opie-8b3a81d53c7db43bf748c2390b429dde2ab9aa82.tar.gz
opie-8b3a81d53c7db43bf748c2390b429dde2ab9aa82.tar.bz2
- begin implementation of custom backup- and restore-locations
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/settings/backup/backuprestore.cpp127
-rw-r--r--noncore/settings/backup/backuprestore.h6
-rw-r--r--noncore/settings/backup/backuprestorebase.ui129
3 files changed, 202 insertions, 60 deletions
diff --git a/noncore/settings/backup/backuprestore.cpp b/noncore/settings/backup/backuprestore.cpp
index 2eccdfe..3889744 100644
--- a/noncore/settings/backup/backuprestore.cpp
+++ b/noncore/settings/backup/backuprestore.cpp
@@ -1,12 +1,16 @@
1#include "backuprestore.h" 1#include "backuprestore.h"
2#include "errordialog.h" 2#include "errordialog.h"
3 3
4
4/* OPIE */ 5/* OPIE */
5#include <opie2/odebug.h> 6#include <opie2/odebug.h>
6#include <opie2/ostorageinfo.h> 7#include <opie2/ostorageinfo.h>
7#include <qpe/qpeapplication.h>
8using namespace Opie::Core; 8using namespace Opie::Core;
9 9
10#include <qpe/qpeapplication.h>
11#include <qpe/resource.h>
12#include <qpe/config.h>
13
10/* QT */ 14/* QT */
11#include <qapplication.h> 15#include <qapplication.h>
12#include <qmultilineedit.h> 16#include <qmultilineedit.h>
@@ -16,15 +20,13 @@ using namespace Opie::Core;
16#include <qlistview.h> 20#include <qlistview.h>
17#include <qpushbutton.h> 21#include <qpushbutton.h>
18#include <qheader.h> 22#include <qheader.h>
19#include <qpe/resource.h>
20#include <qpe/config.h>
21#include <qmessagebox.h> 23#include <qmessagebox.h>
22#include <qcombobox.h> 24#include <qcombobox.h>
23#include <qlist.h> 25#include <qlist.h>
24#include <stdlib.h>
25#include <qregexp.h> 26#include <qregexp.h>
26#include <qtextstream.h> 27#include <qtextstream.h>
27#include <qtextview.h> 28#include <qtextview.h>
29#include <qlineedit.h>
28 30
29/* STD */ 31/* STD */
30#include <errno.h> 32#include <errno.h>
@@ -46,16 +48,14 @@ BackupAndRestore::BackupAndRestore( QWidget* parent, const char* name, WFlags f
46{ 48{
47 backupList->header()->hide(); 49 backupList->header()->hide();
48 restoreList->header()->hide(); 50 restoreList->header()->hide();
49 connect(backupButton, SIGNAL(clicked()), 51 locationList->header()->hide();
50 this, SLOT(backup())); 52 connect( backupButton, SIGNAL( clicked() ), this, SLOT( backup() ) );
51 connect(restoreButton, SIGNAL(clicked()), 53 connect( restoreButton, SIGNAL( clicked() ), this, SLOT( restore() ) );
52 this, SLOT(restore())); 54 connect( backupList, SIGNAL( clicked( QListViewItem* ) ), this, SLOT( selectItem( QListViewItem* ) ) );
53 connect(backupList, SIGNAL(clicked(QListViewItem*)), 55 connect( restoreSource, SIGNAL( activated( int ) ), this, SLOT( sourceDirChanged( int ) ) );
54 this, SLOT(selectItem(QListViewItem*))); 56 connect( addLocationButton, SIGNAL( clicked() ), this, SLOT( addLocation() ) );
55 connect(restoreSource, SIGNAL(activated(int)), 57 connect( removeLocationButton, SIGNAL( clicked() ), this, SLOT( removeLocation() ) );
56 this, SLOT(sourceDirChanged(int))); 58 connect( saveLocationsButton, SIGNAL( clicked() ), this, SLOT( saveLocations() ) );
57 connect(updateList, SIGNAL(clicked()),
58 this, SLOT( fileListUpdate()));
59 59
60 //add directorys for backing up 60 //add directorys for backing up
61 applicationSettings = new QListViewItem(backupList, "Application Settings", "", "Settings/"); 61 applicationSettings = new QListViewItem(backupList, "Application Settings", "", "Settings/");
@@ -66,25 +66,8 @@ BackupAndRestore::BackupAndRestore( QWidget* parent, const char* name, WFlags f
66 selectItem(documents); 66 selectItem(documents);
67 67
68 scanForApplicationSettings(); 68 scanForApplicationSettings();
69 69 refreshBackupLocations();
70 Opie::Core::OStorageInfo storage; 70 refreshLocations();
71
72 backupLocations.insert( "Documents", QDir::homeDirPath() + "/Documents" );
73 if ( storage.hasCf() )
74 {
75 backupLocations.insert( "CF", storage.cfPath() );
76 odebug << "Cf Path: " + storage.cfPath() << oendl;
77 }
78 if ( storage.hasSd() )
79 {
80 backupLocations.insert( "SD", storage.sdPath() );
81 odebug << " Sd Path: " + storage.sdPath() << oendl;
82 }
83 if ( storage.hasMmc() )
84 {
85 backupLocations.insert( "MMC", storage.mmcPath() );
86 odebug << "Mmc Path: " + storage.mmcPath() << oendl;
87 }
88 71
89 Config config("BackupAndRestore"); 72 Config config("BackupAndRestore");
90 //read last locations 73 //read last locations
@@ -160,6 +143,32 @@ BackupAndRestore::~BackupAndRestore()
160 QFile::remove( tempFileName ); 143 QFile::remove( tempFileName );
161} 144}
162 145
146void BackupAndRestore::refreshBackupLocations()
147{
148 backupLocations.clear();
149 // Add cards
150 Opie::Core::OStorageInfo storage;
151 backupLocations.insert( "Documents", QDir::homeDirPath() + "/Documents" );
152 if ( storage.hasCf() )
153 {
154 backupLocations.insert( "CF", storage.cfPath() );
155 odebug << "Cf Path: " + storage.cfPath() << oendl;
156 }
157 if ( storage.hasSd() )
158 {
159 backupLocations.insert( "SD", storage.sdPath() );
160 odebug << " Sd Path: " + storage.sdPath() << oendl;
161 }
162 if ( storage.hasMmc() )
163 {
164 backupLocations.insert( "MMC", storage.mmcPath() );
165 odebug << "Mmc Path: " + storage.mmcPath() << oendl;
166 }
167
168 // Add own locations from locationList
169 // todo implementation
170}
171
163QList<QListViewItem> BackupAndRestore::getAllItems(QListViewItem *item, QList<QListViewItem> &list) 172QList<QListViewItem> BackupAndRestore::getAllItems(QListViewItem *item, QList<QListViewItem> &list)
164{ 173{
165 while(item) 174 while(item)
@@ -203,7 +212,7 @@ void BackupAndRestore::scanForApplicationSettings()
203 QFileInfo *fi; 212 QFileInfo *fi;
204 while ( (fi=it.current()) ) 213 while ( (fi=it.current()) )
205 { 214 {
206 //odebug << (d.path()+"/"+fi->fileName()).latin1() << oendl; 215 //odebug << (d.path()+"/"+fi->fileName()).latin1() << oendl;
207 if ( ( fi->fileName() != "." ) && ( fi->fileName() != ".." ) ) 216 if ( ( fi->fileName() != "." ) && ( fi->fileName() != ".." ) )
208 { 217 {
209 QListViewItem *newItem = new QListViewItem(applicationSettings, fi->fileName()); 218 QListViewItem *newItem = new QListViewItem(applicationSettings, fi->fileName());
@@ -249,7 +258,7 @@ void BackupAndRestore::backup()
249 // We execute tar and compressing its output with gzip.. 258 // We execute tar and compressing its output with gzip..
250 // The error output will be written into a temp-file which could be provided 259 // The error output will be written into a temp-file which could be provided
251 // for debugging.. 260 // for debugging..
252 odebug << "Storing file: " << outputFile.latin1() << "" << oendl; 261 odebug << "Storing file: " << outputFile.latin1() << "" << oendl;
253 outputFile += EXTENSION; 262 outputFile += EXTENSION;
254 263
255 QString commandLine = QString( "cd %1 && (tar -X %1 -cz %2 Applications/backup/exclude -f %3 ) 2> %4" ).arg( QDir::homeDirPath() ) 264 QString commandLine = QString( "cd %1 && (tar -X %1 -cz %2 Applications/backup/exclude -f %3 ) 2> %4" ).arg( QDir::homeDirPath() )
@@ -258,7 +267,7 @@ void BackupAndRestore::backup()
258 .arg( outputFile.latin1() ) 267 .arg( outputFile.latin1() )
259 .arg( tempFileName.latin1() ); 268 .arg( tempFileName.latin1() );
260 269
261 odebug << commandLine << oendl; 270 odebug << commandLine << oendl;
262 271
263 int r = system( commandLine ); 272 int r = system( commandLine );
264 273
@@ -272,7 +281,7 @@ void BackupAndRestore::backup()
272 { 281 {
273 282
274 case 1: 283 case 1:
275 owarn << "Details pressed !" << oendl; 284 owarn << "Details pressed !" << oendl;
276 ErrorDialog* pErrDialog = new ErrorDialog( this, NULL, true ); 285 ErrorDialog* pErrDialog = new ErrorDialog( this, NULL, true );
277 QFile errorFile( tempFileName ); 286 QFile errorFile( tempFileName );
278 if ( errorFile.open(IO_ReadOnly) ) 287 if ( errorFile.open(IO_ReadOnly) )
@@ -359,7 +368,7 @@ void BackupAndRestore::sourceDirChanged(int selection)
359 368
360void BackupAndRestore::fileListUpdate() 369void BackupAndRestore::fileListUpdate()
361{ 370{
362 owarn << "void BackupAndRestore::fileListUpdate()" << oendl; 371 owarn << "void BackupAndRestore::fileListUpdate()" << oendl;
363 restoreList->clear(); 372 restoreList->clear();
364 rescanFolder( backupLocations[restoreSource->currentText()] ); 373 rescanFolder( backupLocations[restoreSource->currentText()] );
365} 374}
@@ -371,7 +380,7 @@ void BackupAndRestore::fileListUpdate()
371 */ 380 */
372void BackupAndRestore::rescanFolder(QString directory) 381void BackupAndRestore::rescanFolder(QString directory)
373{ 382{
374 //odebug << QString("rescanFolder: ") + directory.latin1() << oendl; 383 //odebug << QString("rescanFolder: ") + directory.latin1() << oendl;
375 QDir d(directory); 384 QDir d(directory);
376 if(!d.exists()) 385 if(!d.exists())
377 return; 386 return;
@@ -419,7 +428,7 @@ void BackupAndRestore::restore()
419 428
420 restoreFile += "/" + restoreItem->text(0); 429 restoreFile += "/" + restoreItem->text(0);
421 430
422 odebug << restoreFile << oendl; 431 odebug << restoreFile << oendl;
423 432
424 //check if backup file come from opie 1.0.x 433 //check if backup file come from opie 1.0.x
425 434
@@ -442,7 +451,7 @@ void BackupAndRestore::restore()
442 .arg( restoreFile.latin1() ) 451 .arg( restoreFile.latin1() )
443 .arg( tempFileName.latin1() ); 452 .arg( tempFileName.latin1() );
444 453
445 odebug << commandLine << oendl; 454 odebug << commandLine << oendl;
446 455
447 r = system( commandLine ); 456 r = system( commandLine );
448 457
@@ -454,7 +463,7 @@ void BackupAndRestore::restore()
454 + errorMsg, QString( tr( "Ok") ), QString( tr( "Details" ) ) ) ) 463 + errorMsg, QString( tr( "Ok") ), QString( tr( "Details" ) ) ) )
455 { 464 {
456 case 1: 465 case 1:
457 owarn << "Details pressed !" << oendl; 466 owarn << "Details pressed !" << oendl;
458 ErrorDialog* pErrDialog = new ErrorDialog( this, NULL, true ); 467 ErrorDialog* pErrDialog = new ErrorDialog( this, NULL, true );
459 QFile errorFile( tempFileName ); 468 QFile errorFile( tempFileName );
460 if ( errorFile.open(IO_ReadOnly) ) 469 if ( errorFile.open(IO_ReadOnly) )
@@ -499,7 +508,7 @@ void BackupAndRestore::restore()
499/** 508/**
500 * Check for exclude in Applications/backup 509 * Check for exclude in Applications/backup
501 * If it does not exist, the function will create the file with *.bck as content 510 * If it does not exist, the function will create the file with *.bck as content
502 * The exclude_files is read by tar and will provide to exclude special files out from backup. 511 * The exclude_files is read by tar and will provide to exclude special files out from backup.
503 * e.g. alle *.bck files (backup-files) will not be backed up by default 512 * e.g. alle *.bck files (backup-files) will not be backed up by default
504 */ 513 */
505 514
@@ -524,5 +533,37 @@ QString BackupAndRestore::getExcludeFile()
524 return excludeFileName; 533 return excludeFileName;
525} 534}
526 535
536void BackupAndRestore::refreshLocations()
537{
538 locationList->clear();
539 //todo: implement add locations
540 odebug << "not implemented yet" << oendl;
541}
542
543void BackupAndRestore::addLocation()
544{
545 if ( ( !locationEdit->text().isEmpty() ) &&
546 ( QDir( locationEdit->text() ).exists() ) )
547 {
548 (void) new QListViewItem( locationList, locationEdit->text() );
549 locationEdit->setText( "" );
550 }
551}
552
553void BackupAndRestore::removeLocation()
554{
555 if ( locationList->selectedItem() )
556 {
557 delete( locationList->selectedItem() );
558 }
559}
560
561void BackupAndRestore::saveLocation()
562{
563 //todo: implement
564 odebug << "not implemented yet" << oendl;
565}
566
567
527// backuprestore.cpp 568// backuprestore.cpp
528 569
diff --git a/noncore/settings/backup/backuprestore.h b/noncore/settings/backup/backuprestore.h
index 0d88f8d..527b3cf 100644
--- a/noncore/settings/backup/backuprestore.h
+++ b/noncore/settings/backup/backuprestore.h
@@ -28,12 +28,18 @@ private slots:
28 void rescanFolder(QString directory); 28 void rescanFolder(QString directory);
29 void fileListUpdate(); 29 void fileListUpdate();
30 30
31 void addLocation();
32 void removeLocation();
33 void saveLocation();
34
31private: 35private:
32 void scanForApplicationSettings(); 36 void scanForApplicationSettings();
33 int getBackupFiles(QString &backupFiles, QListViewItem *parent); 37 int getBackupFiles(QString &backupFiles, QListViewItem *parent);
34 QString getExcludeFile(); 38 QString getExcludeFile();
35 QMap<QString, QString> backupLocations; 39 QMap<QString, QString> backupLocations;
36 QList<QListViewItem> getAllItems(QListViewItem *item, QList<QListViewItem> &list); 40 QList<QListViewItem> getAllItems(QListViewItem *item, QList<QListViewItem> &list);
41 void refreshBackupLocations();
42 void refreshLocations();
37 43
38 QListViewItem *systemSettings; 44 QListViewItem *systemSettings;
39 QListViewItem *applicationSettings; 45 QListViewItem *applicationSettings;
diff --git a/noncore/settings/backup/backuprestorebase.ui b/noncore/settings/backup/backuprestorebase.ui
index a52b42d..b4624bb 100644
--- a/noncore/settings/backup/backuprestorebase.ui
+++ b/noncore/settings/backup/backuprestorebase.ui
@@ -11,8 +11,8 @@
11 <rect> 11 <rect>
12 <x>0</x> 12 <x>0</x>
13 <y>0</y> 13 <y>0</y>
14 <width>231</width> 14 <width>290</width>
15 <height>275</height> 15 <height>243</height>
16 </rect> 16 </rect>
17 </property> 17 </property>
18 <property stdset="1"> 18 <property stdset="1">
@@ -22,6 +22,9 @@
22 <property> 22 <property>
23 <name>layoutMargin</name> 23 <name>layoutMargin</name>
24 </property> 24 </property>
25 <property>
26 <name>layoutSpacing</name>
27 </property>
25 <vbox> 28 <vbox>
26 <property stdset="1"> 29 <property stdset="1">
27 <name>margin</name> 30 <name>margin</name>
@@ -29,7 +32,7 @@
29 </property> 32 </property>
30 <property stdset="1"> 33 <property stdset="1">
31 <name>spacing</name> 34 <name>spacing</name>
32 <number>6</number> 35 <number>0</number>
33 </property> 36 </property>
34 <widget> 37 <widget>
35 <class>QTabWidget</class> 38 <class>QTabWidget</class>
@@ -40,6 +43,9 @@
40 <property> 43 <property>
41 <name>layoutMargin</name> 44 <name>layoutMargin</name>
42 </property> 45 </property>
46 <property>
47 <name>layoutSpacing</name>
48 </property>
43 <widget> 49 <widget>
44 <class>QWidget</class> 50 <class>QWidget</class>
45 <property stdset="1"> 51 <property stdset="1">
@@ -53,11 +59,11 @@
53 <grid> 59 <grid>
54 <property stdset="1"> 60 <property stdset="1">
55 <name>margin</name> 61 <name>margin</name>
56 <number>11</number> 62 <number>4</number>
57 </property> 63 </property>
58 <property stdset="1"> 64 <property stdset="1">
59 <name>spacing</name> 65 <name>spacing</name>
60 <number>6</number> 66 <number>4</number>
61 </property> 67 </property>
62 <widget row="0" column="0" > 68 <widget row="0" column="0" >
63 <class>QLabel</class> 69 <class>QLabel</class>
@@ -132,11 +138,11 @@
132 <grid> 138 <grid>
133 <property stdset="1"> 139 <property stdset="1">
134 <name>margin</name> 140 <name>margin</name>
135 <number>11</number> 141 <number>4</number>
136 </property> 142 </property>
137 <property stdset="1"> 143 <property stdset="1">
138 <name>spacing</name> 144 <name>spacing</name>
139 <number>6</number> 145 <number>4</number>
140 </property> 146 </property>
141 <widget row="0" column="1" > 147 <widget row="0" column="1" >
142 <class>QComboBox</class> 148 <class>QComboBox</class>
@@ -146,6 +152,28 @@
146 </property> 152 </property>
147 </widget> 153 </widget>
148 <widget row="2" column="0" rowspan="1" colspan="2" > 154 <widget row="2" column="0" rowspan="1" colspan="2" >
155 <class>QPushButton</class>
156 <property stdset="1">
157 <name>name</name>
158 <cstring>restoreButton</cstring>
159 </property>
160 <property stdset="1">
161 <name>text</name>
162 <string>&amp;Restore</string>
163 </property>
164 </widget>
165 <widget row="0" column="0" >
166 <class>QLabel</class>
167 <property stdset="1">
168 <name>name</name>
169 <cstring>TextLabel1_2</cstring>
170 </property>
171 <property stdset="1">
172 <name>text</name>
173 <string>Select Source</string>
174 </property>
175 </widget>
176 <widget row="1" column="0" rowspan="1" colspan="2" >
149 <class>QListView</class> 177 <class>QListView</class>
150 <column> 178 <column>
151 <property> 179 <property>
@@ -173,37 +201,104 @@
173 </size> 201 </size>
174 </property> 202 </property>
175 </widget> 203 </widget>
176 <widget row="3" column="0" rowspan="1" colspan="2" > 204 </grid>
205 </widget>
206 <widget>
207 <class>QWidget</class>
208 <property stdset="1">
209 <name>name</name>
210 <cstring>tab</cstring>
211 </property>
212 <attribute>
213 <name>title</name>
214 <string>Locations</string>
215 </attribute>
216 <grid>
217 <property stdset="1">
218 <name>margin</name>
219 <number>4</number>
220 </property>
221 <property stdset="1">
222 <name>spacing</name>
223 <number>4</number>
224 </property>
225 <widget row="0" column="0" rowspan="1" colspan="3" >
226 <class>QLineEdit</class>
227 <property stdset="1">
228 <name>name</name>
229 <cstring>locationEdit</cstring>
230 </property>
231 </widget>
232 <widget row="0" column="3" >
233 <class>QToolButton</class>
234 <property stdset="1">
235 <name>name</name>
236 <cstring>locationSelectBtn</cstring>
237 </property>
238 <property stdset="1">
239 <name>maximumSize</name>
240 <size>
241 <width>20</width>
242 <height>30</height>
243 </size>
244 </property>
245 <property stdset="1">
246 <name>text</name>
247 <string>...</string>
248 </property>
249 </widget>
250 <widget row="1" column="0" rowspan="1" colspan="4" >
251 <class>QListView</class>
252 <column>
253 <property>
254 <name>text</name>
255 <string>Locations</string>
256 </property>
257 <property>
258 <name>clickable</name>
259 <bool>true</bool>
260 </property>
261 <property>
262 <name>resizeable</name>
263 <bool>true</bool>
264 </property>
265 </column>
266 <property stdset="1">
267 <name>name</name>
268 <cstring>locationList</cstring>
269 </property>
270 </widget>
271 <widget row="2" column="0" >
177 <class>QPushButton</class> 272 <class>QPushButton</class>
178 <property stdset="1"> 273 <property stdset="1">
179 <name>name</name> 274 <name>name</name>
180 <cstring>restoreButton</cstring> 275 <cstring>addLocationButton</cstring>
181 </property> 276 </property>
182 <property stdset="1"> 277 <property stdset="1">
183 <name>text</name> 278 <name>text</name>
184 <string>&amp;Restore</string> 279 <string>Add</string>
185 </property> 280 </property>
186 </widget> 281 </widget>
187 <widget row="0" column="0" > 282 <widget row="2" column="1" >
188 <class>QLabel</class> 283 <class>QPushButton</class>
189 <property stdset="1"> 284 <property stdset="1">
190 <name>name</name> 285 <name>name</name>
191 <cstring>TextLabel1_2</cstring> 286 <cstring>removeLocationButton</cstring>
192 </property> 287 </property>
193 <property stdset="1"> 288 <property stdset="1">
194 <name>text</name> 289 <name>text</name>
195 <string>Select Source</string> 290 <string>Remove</string>
196 </property> 291 </property>
197 </widget> 292 </widget>
198 <widget row="1" column="0" rowspan="1" colspan="2" > 293 <widget row="2" column="2" rowspan="1" colspan="2" >
199 <class>QPushButton</class> 294 <class>QPushButton</class>
200 <property stdset="1"> 295 <property stdset="1">
201 <name>name</name> 296 <name>name</name>
202 <cstring>updateList</cstring> 297 <cstring>saveLocationsButton</cstring>
203 </property> 298 </property>
204 <property stdset="1"> 299 <property stdset="1">
205 <name>text</name> 300 <name>text</name>
206 <string>Update Filelist</string> 301 <string>Save</string>
207 </property> 302 </property>
208 </widget> 303 </widget>
209 </grid> 304 </grid>