summaryrefslogtreecommitdiff
authorkergoth <kergoth>2003-01-26 03:54:52 (UTC)
committer kergoth <kergoth>2003-01-26 03:54:52 (UTC)
commit2b0f00c32cb051f8cf074747e26387620f541ca0 (patch) (unidiff)
tree400181cc6bd84c743da6c569d913e441030934a8
parent5ebc867249ffa7cdfb23d912426cbd8d75e7177b (diff)
downloadopie-2b0f00c32cb051f8cf074747e26387620f541ca0.zip
opie-2b0f00c32cb051f8cf074747e26387620f541ca0.tar.gz
opie-2b0f00c32cb051f8cf074747e26387620f541ca0.tar.bz2
Removed /etc backup, its virtually useless, and restoring a /etc backup when your package versions have changed could quite easily bork half your packages.
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/settings/backup/backuprestore.cpp3
1 files changed, 0 insertions, 3 deletions
diff --git a/noncore/settings/backup/backuprestore.cpp b/noncore/settings/backup/backuprestore.cpp
index 1ebe912..78d1414 100644
--- a/noncore/settings/backup/backuprestore.cpp
+++ b/noncore/settings/backup/backuprestore.cpp
@@ -1,242 +1,239 @@
1 1
2#include "backuprestore.h" 2#include "backuprestore.h"
3//#include "output.h" 3//#include "output.h"
4 4
5#include <qapplication.h> 5#include <qapplication.h>
6#include <qmultilineedit.h> 6#include <qmultilineedit.h>
7 7
8#include <qdir.h> 8#include <qdir.h>
9#include <qfile.h> 9#include <qfile.h>
10#include <qfileinfo.h> 10#include <qfileinfo.h>
11#include <qlistview.h> 11#include <qlistview.h>
12#include <qpushbutton.h> 12#include <qpushbutton.h>
13#include <qheader.h> 13#include <qheader.h>
14#include <qpe/resource.h> 14#include <qpe/resource.h>
15#include <qpe/config.h> 15#include <qpe/config.h>
16#include <qmessagebox.h> 16#include <qmessagebox.h>
17#include <qcombobox.h> 17#include <qcombobox.h>
18#include <qlist.h> 18#include <qlist.h>
19#include <stdlib.h> 19#include <stdlib.h>
20#include <qregexp.h> 20#include <qregexp.h>
21 21
22#include <errno.h> 22#include <errno.h>
23#include <stdlib.h> 23#include <stdlib.h>
24#include <unistd.h> 24#include <unistd.h>
25#include <sys/stat.h> 25#include <sys/stat.h>
26#include <dirent.h> 26#include <dirent.h>
27 27
28#define HEADER_NAME 0 28#define HEADER_NAME 0
29#define HEADER_BACKUP 1 29#define HEADER_BACKUP 1
30#define BACKUP_LOCATION 2 30#define BACKUP_LOCATION 2
31 31
32#define EXTENSION ".bck" 32#define EXTENSION ".bck"
33 33
34BackupAndRestore::BackupAndRestore( QWidget* parent, const char* name) 34BackupAndRestore::BackupAndRestore( QWidget* parent, const char* name)
35 : BackupAndRestoreBase(parent, name){ 35 : BackupAndRestoreBase(parent, name){
36 this->showMaximized(); 36 this->showMaximized();
37 backupList->header()->hide(); 37 backupList->header()->hide();
38 restoreList->header()->hide(); 38 restoreList->header()->hide();
39 connect(backupButton, SIGNAL(clicked()), 39 connect(backupButton, SIGNAL(clicked()),
40 this, SLOT(backupPressed())); 40 this, SLOT(backupPressed()));
41 connect(restoreButton, SIGNAL(clicked()), 41 connect(restoreButton, SIGNAL(clicked()),
42 this, SLOT(restore())); 42 this, SLOT(restore()));
43 connect(backupList, SIGNAL(clicked( QListViewItem * )), 43 connect(backupList, SIGNAL(clicked( QListViewItem * )),
44 this, SLOT(selectItem(QListViewItem*))); 44 this, SLOT(selectItem(QListViewItem*)));
45 connect(restoreSource, SIGNAL(activated( int )), 45 connect(restoreSource, SIGNAL(activated( int )),
46 this, SLOT(sourceDirChanged(int))); 46 this, SLOT(sourceDirChanged(int)));
47 47
48 systemSettings = new QListViewItem(backupList, "System Settings", "",
49 "/etc");
50 selectItem(systemSettings);
51 applicationSettings = new QListViewItem(backupList, "Application Settings", "", 48 applicationSettings = new QListViewItem(backupList, "Application Settings", "",
52 QDir::homeDirPath() + "/Settings/"); 49 QDir::homeDirPath() + "/Settings/");
53 selectItem(applicationSettings); 50 selectItem(applicationSettings);
54 applicationSettings = new QListViewItem(backupList, "Application Data", "", 51 applicationSettings = new QListViewItem(backupList, "Application Data", "",
55 QDir::homeDirPath() + "/Applications/"); 52 QDir::homeDirPath() + "/Applications/");
56 selectItem(applicationSettings); 53 selectItem(applicationSettings);
57 documents= new QListViewItem(backupList, "Documents", "", 54 documents= new QListViewItem(backupList, "Documents", "",
58 QDir::homeDirPath() + "/Documents/"); 55 QDir::homeDirPath() + "/Documents/");
59 selectItem(documents); 56 selectItem(documents);
60 57
61 scanForApplicationSettings(); 58 scanForApplicationSettings();
62 59
63 Config config("BackupAndRestore"); 60 Config config("BackupAndRestore");
64 config.setGroup("General"); 61 config.setGroup("General");
65 int totalLocations = config.readNumEntry("totalLocations",0); 62 int totalLocations = config.readNumEntry("totalLocations",0);
66 63
67//todo make less static here and use Storage class to get infos 64//todo make less static here and use Storage class to get infos
68 if(totalLocations == 0){ 65 if(totalLocations == 0){
69 backupLocations.insert("Documents", "/root/Documents"); 66 backupLocations.insert("Documents", "/root/Documents");
70 backupLocations.insert("CF", "/mnt/cf"); 67 backupLocations.insert("CF", "/mnt/cf");
71 backupLocations.insert("SD", "/mnt/card"); 68 backupLocations.insert("SD", "/mnt/card");
72 } 69 }
73 else{ 70 else{
74 for(int i = 0; i < totalLocations; i++){ 71 for(int i = 0; i < totalLocations; i++){
75 backupLocations.insert(config.readEntry(QString("backupLocationName_%1").arg(i)), 72 backupLocations.insert(config.readEntry(QString("backupLocationName_%1").arg(i)),
76 config.readEntry(QString("backupLocation_%1").arg(i))); 73 config.readEntry(QString("backupLocation_%1").arg(i)));
77 } 74 }
78 } 75 }
79 QMap<QString, QString>::Iterator it; 76 QMap<QString, QString>::Iterator it;
80 for( it = backupLocations.begin(); it != backupLocations.end(); ++it ){ 77 for( it = backupLocations.begin(); it != backupLocations.end(); ++it ){
81 storeToLocation->insertItem(it.key()); 78 storeToLocation->insertItem(it.key());
82 restoreSource->insertItem(it.key()); 79 restoreSource->insertItem(it.key());
83 } 80 }
84 81
85 // Read the list of items to ignore. 82 // Read the list of items to ignore.
86 QList<QString> dontBackupList; 83 QList<QString> dontBackupList;
87 dontBackupList.setAutoDelete(true); 84 dontBackupList.setAutoDelete(true);
88 config.setGroup("DontBackup"); 85 config.setGroup("DontBackup");
89 int total = config.readNumEntry("Total", 0); 86 int total = config.readNumEntry("Total", 0);
90 for(int i = 0; i < total; i++){ 87 for(int i = 0; i < total; i++){
91 dontBackupList.append(new QString(config.readEntry(QString("%1").arg(i), ""))); 88 dontBackupList.append(new QString(config.readEntry(QString("%1").arg(i), "")));
92 } 89 }
93 90
94 QList<QListViewItem> list; 91 QList<QListViewItem> list;
95 getAllItems(backupList->firstChild(), list); 92 getAllItems(backupList->firstChild(), list);
96 93
97 for(uint i = 0; i < list.count(); i++){ 94 for(uint i = 0; i < list.count(); i++){
98 QString text = list.at(i)->text(HEADER_NAME); 95 QString text = list.at(i)->text(HEADER_NAME);
99 for(uint i2 = 0; i2 < dontBackupList.count(); i2++){ 96 for(uint i2 = 0; i2 < dontBackupList.count(); i2++){
100 if(*dontBackupList.at(i2) == text){ 97 if(*dontBackupList.at(i2) == text){
101 selectItem(list.at(i)); 98 selectItem(list.at(i));
102 break; 99 break;
103 } 100 }
104 } 101 }
105 } 102 }
106} 103}
107 104
108BackupAndRestore::~BackupAndRestore(){ 105BackupAndRestore::~BackupAndRestore(){
109 QList<QListViewItem> list; 106 QList<QListViewItem> list;
110 getAllItems(backupList->firstChild(), list); 107 getAllItems(backupList->firstChild(), list);
111 108
112 Config config("BackupAndRestore"); 109 Config config("BackupAndRestore");
113 config.setGroup("DontBackup"); 110 config.setGroup("DontBackup");
114 config.clearGroup(); 111 config.clearGroup();
115 112
116 int count = 0; 113 int count = 0;
117 for(uint i = 0; i < list.count(); i++){ 114 for(uint i = 0; i < list.count(); i++){
118 if(list.at(i)->text(HEADER_BACKUP) == ""){ 115 if(list.at(i)->text(HEADER_BACKUP) == ""){
119 config.writeEntry(QString("%1").arg(count), list.at(i)->text(HEADER_NAME)); 116 config.writeEntry(QString("%1").arg(count), list.at(i)->text(HEADER_NAME));
120 count++; 117 count++;
121 } 118 }
122 } 119 }
123 config.writeEntry("Total", count); 120 config.writeEntry("Total", count);
124} 121}
125 122
126QList<QListViewItem> BackupAndRestore::getAllItems(QListViewItem *item, QList<QListViewItem> &list){ 123QList<QListViewItem> BackupAndRestore::getAllItems(QListViewItem *item, QList<QListViewItem> &list){
127 while(item){ 124 while(item){
128 if(item->childCount() > 0) 125 if(item->childCount() > 0)
129 getAllItems(item->firstChild(), list); 126 getAllItems(item->firstChild(), list);
130 list.append(item); 127 list.append(item);
131 item = item->nextSibling(); 128 item = item->nextSibling();
132 } 129 }
133 return list; 130 return list;
134} 131}
135 132
136/** 133/**
137 * Selects and unselects the item by setting the HEADER_BACKUP to B or !. 134 * Selects and unselects the item by setting the HEADER_BACKUP to B or !.
138 * and changing the icon to match 135 * and changing the icon to match
139 * @param currentItem the item to swich the selection choice. 136 * @param currentItem the item to swich the selection choice.
140 */ 137 */
141void BackupAndRestore::selectItem(QListViewItem *currentItem){ 138void BackupAndRestore::selectItem(QListViewItem *currentItem){
142 if(!currentItem) 139 if(!currentItem)
143 return; 140 return;
144 141
145 if(currentItem->text(HEADER_BACKUP) == "B"){ 142 if(currentItem->text(HEADER_BACKUP) == "B"){
146 currentItem->setPixmap(HEADER_NAME, Resource::loadPixmap("backup/null")); 143 currentItem->setPixmap(HEADER_NAME, Resource::loadPixmap("backup/null"));
147 currentItem->setText(HEADER_BACKUP, ""); 144 currentItem->setText(HEADER_BACKUP, "");
148 } 145 }
149 else{ 146 else{
150 currentItem->setPixmap(HEADER_NAME, Resource::loadPixmap("backup/check")); 147 currentItem->setPixmap(HEADER_NAME, Resource::loadPixmap("backup/check"));
151 currentItem->setText(HEADER_BACKUP, "B"); 148 currentItem->setText(HEADER_BACKUP, "B");
152 } 149 }
153} 150}
154 151
155void BackupAndRestore::scanForApplicationSettings(){ 152void BackupAndRestore::scanForApplicationSettings(){
156 QDir d(applicationSettings->text(BACKUP_LOCATION)); 153 QDir d(applicationSettings->text(BACKUP_LOCATION));
157 d.setFilter( QDir::Files | QDir::NoSymLinks ); 154 d.setFilter( QDir::Files | QDir::NoSymLinks );
158 const QFileInfoList *list = d.entryInfoList(); 155 const QFileInfoList *list = d.entryInfoList();
159 QFileInfoListIterator it( *list ); 156 QFileInfoListIterator it( *list );
160 QFileInfo *fi; 157 QFileInfo *fi;
161 while ( (fi=it.current()) ) { 158 while ( (fi=it.current()) ) {
162 //qDebug((d.path()+fi->fileName()).latin1()); 159 //qDebug((d.path()+fi->fileName()).latin1());
163 QListViewItem *newItem = new QListViewItem(applicationSettings, fi->fileName()); 160 QListViewItem *newItem = new QListViewItem(applicationSettings, fi->fileName());
164 selectItem(newItem); 161 selectItem(newItem);
165 ++it; 162 ++it;
166 } 163 }
167} 164}
168 165
169/** 166/**
170 * The "Backup" button has been pressed. Get a list of all of the files that 167 * The "Backup" button has been pressed. Get a list of all of the files that
171 * should be backed up. If there are no files, emit and error and exit. 168 * should be backed up. If there are no files, emit and error and exit.
172 * Determine the file name to store the backup in. Backup the file(s) using 169 * Determine the file name to store the backup in. Backup the file(s) using
173 * tar and gzip --best. Report failure or success 170 * tar and gzip --best. Report failure or success
174 */ 171 */
175void BackupAndRestore::backupPressed(){ 172void BackupAndRestore::backupPressed(){
176 QString backupFiles; 173 QString backupFiles;
177 if(getBackupFiles(backupFiles, NULL) == 0){ 174 if(getBackupFiles(backupFiles, NULL) == 0){
178 QMessageBox::critical(this, "Message", 175 QMessageBox::critical(this, "Message",
179 "No items selected.",QString("Ok") ); 176 "No items selected.",QString("Ok") );
180 return; 177 return;
181 } 178 }
182 179
183 setCaption(tr("Backup and Restore... working...")); 180 setCaption(tr("Backup and Restore... working..."));
184 QString outputFile = backupLocations[storeToLocation->currentText()]; 181 QString outputFile = backupLocations[storeToLocation->currentText()];
185 182
186 QDateTime time = QDateTime::currentDateTime(); 183 QDateTime time = QDateTime::currentDateTime();
187 QString dateString = time.date().toString().replace(QRegExp(" "), ""); 184 QString dateString = time.date().toString().replace(QRegExp(" "), "");
188 outputFile += "/" + dateString; 185 outputFile += "/" + dateString;
189 186
190 QString t = outputFile; 187 QString t = outputFile;
191 int c = 1; 188 int c = 1;
192 while(QFile::exists(outputFile + EXTENSION)){ 189 while(QFile::exists(outputFile + EXTENSION)){
193 outputFile = t + QString("%1").arg(c); 190 outputFile = t + QString("%1").arg(c);
194 c++; 191 c++;
195 } 192 }
196 193
197 qDebug(QString("system(\"tar -c %1 | gzip > %2\")").arg(backupFiles).arg(outputFile).latin1()); 194 qDebug(QString("system(\"tar -c %1 | gzip > %2\")").arg(backupFiles).arg(outputFile).latin1());
198 outputFile += EXTENSION; 195 outputFile += EXTENSION;
199 196
200 int r = system( QString("tar -c %1 | gzip > %2").arg(backupFiles).arg(outputFile).latin1() ); 197 int r = system( QString("tar -c %1 | gzip > %2").arg(backupFiles).arg(outputFile).latin1() );
201 198
202 199
203 200
204 if(r != 0){ 201 if(r != 0){
205 perror("Error: "); 202 perror("Error: ");
206 QString errorMsg="Error\n"+(QString)strerror(errno); 203 QString errorMsg="Error\n"+(QString)strerror(errno);
207 204
208 QMessageBox::critical(this, "Message", "Backup Failed.\n"+errorMsg, QString("Ok") ); 205 QMessageBox::critical(this, "Message", "Backup Failed.\n"+errorMsg, QString("Ok") );
209 return; 206 return;
210 } 207 }
211 else{ 208 else{
212 QMessageBox::critical(this, "Message", "Backup Successfull.",QString("Ok") ); 209 QMessageBox::critical(this, "Message", "Backup Successfull.",QString("Ok") );
213 210
214 } 211 }
215 setCaption(tr("Backup and Restore")); 212 setCaption(tr("Backup and Restore"));
216} 213}
217 214
218/*** 215/***
219 * Get a list of all of the files to backup. 216 * Get a list of all of the files to backup.
220 */ 217 */
221int BackupAndRestore::getBackupFiles(QString &backupFiles, QListViewItem *parent){ 218int BackupAndRestore::getBackupFiles(QString &backupFiles, QListViewItem *parent){
222 QListViewItem * currentItem; 219 QListViewItem * currentItem;
223 QString currentHome; 220 QString currentHome;
224 if(!parent) 221 if(!parent)
225 currentItem = backupList->firstChild(); 222 currentItem = backupList->firstChild();
226 else{ 223 else{
227 currentItem = parent->firstChild(); 224 currentItem = parent->firstChild();
228 currentHome = parent->text(BACKUP_LOCATION); 225 currentHome = parent->text(BACKUP_LOCATION);
229 } 226 }
230 227
231 uint count = 0; 228 uint count = 0;
232 while( currentItem != 0 ){ 229 while( currentItem != 0 ){
233 if(currentItem->text(HEADER_BACKUP) == "B" ){ 230 if(currentItem->text(HEADER_BACKUP) == "B" ){
234 if(currentItem->childCount() == 0 ){ 231 if(currentItem->childCount() == 0 ){
235 if(parent == NULL) 232 if(parent == NULL)
236 backupFiles += currentItem->text(BACKUP_LOCATION); 233 backupFiles += currentItem->text(BACKUP_LOCATION);
237 else 234 else
238 backupFiles += currentHome + currentItem->text(HEADER_NAME); 235 backupFiles += currentHome + currentItem->text(HEADER_NAME);
239 backupFiles += " "; 236 backupFiles += " ";
240 count++; 237 count++;
241 } 238 }
242 else{ 239 else{