summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/apps/advancedfm/advancedfmMenu.cpp137
1 files changed, 80 insertions, 57 deletions
diff --git a/noncore/apps/advancedfm/advancedfmMenu.cpp b/noncore/apps/advancedfm/advancedfmMenu.cpp
index 4802771..f25048a 100644
--- a/noncore/apps/advancedfm/advancedfmMenu.cpp
+++ b/noncore/apps/advancedfm/advancedfmMenu.cpp
@@ -64,509 +64,532 @@ void AdvancedFm::showMenuHidden() {
64} 64}
65 65
66void AdvancedFm::showHidden() { 66void AdvancedFm::showHidden() {
67 if (b) { 67 if (b) {
68 CurrentDir()->setFilter( QDir::Files | QDir::Dirs | QDir::Hidden | QDir::All); 68 CurrentDir()->setFilter( QDir::Files | QDir::Dirs | QDir::Hidden | QDir::All);
69 OtherDir()->setFilter( QDir::Files | QDir::Dirs | QDir::Hidden | QDir::All); 69 OtherDir()->setFilter( QDir::Files | QDir::Dirs | QDir::Hidden | QDir::All);
70 } else { 70 } else {
71 CurrentDir()->setFilter( QDir::Files | QDir::Dirs/* | QDir::Hidden*/ | QDir::All); 71 CurrentDir()->setFilter( QDir::Files | QDir::Dirs/* | QDir::Hidden*/ | QDir::All);
72 OtherDir()->setFilter( QDir::Files | QDir::Dirs/* | QDir::Hidden*/ | QDir::All); 72 OtherDir()->setFilter( QDir::Files | QDir::Dirs/* | QDir::Hidden*/ | QDir::All);
73 } 73 }
74 populateView(); 74 populateView();
75} 75}
76 76
77QString AdvancedFm::dealWithSymName(const QString &fileName) { 77QString AdvancedFm::dealWithSymName(const QString &fileName) {
78 QString strItem = fileName; 78 QString strItem = fileName;
79 return strItem.right( (strItem.length() - strItem.find("->",0,TRUE)) - 4); 79 return strItem.right( (strItem.length() - strItem.find("->",0,TRUE)) - 4);
80} 80}
81 81
82void AdvancedFm::runThis() { 82void AdvancedFm::runThis() {
83 if( !CurrentView()->currentItem()) return; 83 if( !CurrentView()->currentItem()) return;
84 QString fs; 84 QString fs;
85 QDir *thisDir = CurrentDir(); 85 QDir *thisDir = CurrentDir();
86 86
87 QString curFile = CurrentView()->currentItem()->text(0); 87 QString curFile = CurrentView()->currentItem()->text(0);
88 QString path = thisDir->canonicalPath(); 88 QString path = thisDir->canonicalPath();
89 89
90 if( curFile.find("@",0,TRUE) !=-1 || curFile.find("->",0,TRUE) !=-1 ) //if symlink 90 if( curFile.find("@",0,TRUE) !=-1 || curFile.find("->",0,TRUE) !=-1 ) //if symlink
91 91
92 curFile = dealWithSymName((const QString&)curFile); 92 curFile = dealWithSymName((const QString&)curFile);
93 93
94 if(curFile != "../") { 94 if(curFile != "../") {
95 95
96 fs = getFileSystemType((const QString &) path); 96 fs = getFileSystemType((const QString &) path);
97 QFileInfo fileInfo( path + "/" + curFile); 97 QFileInfo fileInfo( path + "/" + curFile);
98// odebug << fileInfo.owner() << oendl; 98// odebug << fileInfo.owner() << oendl;
99 99
100 if( (fileInfo.permission( QFileInfo::ExeUser) 100 if( (fileInfo.permission( QFileInfo::ExeUser)
101 | fileInfo.permission( QFileInfo::ExeGroup) 101 | fileInfo.permission( QFileInfo::ExeGroup)
102 | fileInfo.permission( QFileInfo::ExeOther)) // & fs.find("vfat",0,TRUE) == -1) { 102 | fileInfo.permission( QFileInfo::ExeOther)) // & fs.find("vfat",0,TRUE) == -1) {
103 | fs == "vfat" && fileInfo.filePath().contains("/bin") ) { 103 | fs == "vfat" && fileInfo.filePath().contains("/bin") ) {
104 QCopEnvelope e("QPE/System", "execute(QString)" ); 104 QCopEnvelope e("QPE/System", "execute(QString)" );
105 e << curFile; 105 e << curFile;
106 } else { 106 } else {
107 curFile = path + "/" + curFile; 107 curFile = path + "/" + curFile;
108 DocLnk nf(curFile); 108 DocLnk nf(curFile);
109 QString execStr = nf.exec(); 109 QString execStr = nf.exec();
110// odebug << execStr << oendl; 110// odebug << execStr << oendl;
111 if( execStr.isEmpty() ) { 111 if( execStr.isEmpty() ) {
112 } else { 112 } else {
113 nf.execute(); 113 nf.execute();
114 } 114 }
115 } 115 }
116 } 116 }
117} 117}
118 118
119void AdvancedFm::runText() { 119void AdvancedFm::runText() {
120 if( !CurrentView()->currentItem()) return; 120 if( !CurrentView()->currentItem()) return;
121 QString curFile = CurrentView()->currentItem()->text(0); 121 QString curFile = CurrentView()->currentItem()->text(0);
122 if(curFile != "../") { 122 if(curFile != "../") {
123 if( curFile.find("@",0,TRUE) !=-1 || curFile.find("->",0,TRUE) !=-1 ) //if symlink 123 if( curFile.find("@",0,TRUE) !=-1 || curFile.find("->",0,TRUE) !=-1 ) //if symlink
124 curFile = dealWithSymName((const QString&)curFile); 124 curFile = dealWithSymName((const QString&)curFile);
125 curFile = CurrentDir()->canonicalPath()+"/"+curFile; 125 curFile = CurrentDir()->canonicalPath()+"/"+curFile;
126 QCopEnvelope e("QPE/Application/textedit", "setDocument(QString)" ); 126 QCopEnvelope e("QPE/Application/textedit", "setDocument(QString)" );
127 e << curFile; 127 e << curFile;
128 } 128 }
129} 129}
130 130
131void AdvancedFm::makeDir() { 131void AdvancedFm::makeDir() {
132 InputDialog *fileDlg; 132 InputDialog *fileDlg;
133 fileDlg = new InputDialog(this,tr("Make Directory"),TRUE, 0); 133 fileDlg = new InputDialog(this,tr("Make Directory"),TRUE, 0);
134 fileDlg->exec(); 134 fileDlg->exec();
135 if( fileDlg->result() == 1 ) { 135 if( fileDlg->result() == 1 ) {
136 QDir *thisDir = CurrentDir(); 136 QDir *thisDir = CurrentDir();
137 QString filename = fileDlg->LineEdit1->text(); 137 QString filename = fileDlg->LineEdit1->text();
138 thisDir->mkdir( thisDir->canonicalPath()+"/"+filename); 138 thisDir->mkdir( thisDir->canonicalPath()+"/"+filename);
139 } 139 }
140 populateView(); 140 populateView();
141} 141}
142 142
143void AdvancedFm::doDelete() { 143void AdvancedFm::doDelete() {
144 QStringList curFileList = getPath(); 144 QStringList curFileList = getPath();
145 bool doMsg=true; 145 bool doMsg=true;
146 int count = curFileList.count(); 146 int count = curFileList.count();
147 if( count > 0) { 147 if( count > 0) {
148 if(count > 1 ) { 148 if(count > 1 ) {
149 QString msg; 149 QString msg;
150 msg=tr("<p>Really delete %1 files?</p>").arg(count); 150 msg=tr("<p>Really delete %1 files?</p>").arg(count);
151 switch ( QMessageBox::warning(this,tr("Delete"),msg 151 switch ( QMessageBox::warning(this,tr("Delete"),msg
152 ,tr("Yes"),tr("No"),0,0,1) ) 152 ,tr("Yes"),tr("No"),0,0,1) )
153 { 153 {
154 case 0: 154 case 0:
155 doMsg=false; 155 doMsg=false;
156 break; 156 break;
157 case 1: 157 case 1:
158 return; 158 return;
159 break; 159 break;
160 default:
161 return;
162 break;
160 }; 163 };
161 } 164 }
162 165
163 QString myFile; 166 QString myFile;
164 167
165 for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) { 168 for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) {
166 myFile = (*it); 169 myFile = (*it);
167 if( myFile.find(" -> ",0,TRUE) != -1) 170 if( myFile.find(" -> ",0,TRUE) != -1)
168 myFile = myFile.left( myFile.find(" -> ",0,TRUE)); 171 myFile = myFile.left( myFile.find(" -> ",0,TRUE));
169 172
170 QString f = CurrentDir()->canonicalPath(); 173 QString f = CurrentDir()->canonicalPath();
171 if(f.right(1).find("/",0,TRUE) == -1) 174 if(f.right(1).find("/",0,TRUE) == -1)
172 f += "/"; 175 f += "/";
173 f += myFile; 176 f += myFile;
174 if(QDir(f).exists() && !QFileInfo(f).isSymLink() ) { 177 if(QDir(f).exists() && !QFileInfo(f).isSymLink() ) {
175 //if file is a directory 178 //if file is a directory
176 179
177 switch ( QMessageBox::warning( this, tr("Delete Directory?"), 180 switch ( QMessageBox::warning( this, tr("Delete Directory?"),
178 tr("<p>Really delete %1 and all it's contents?</p>" ).arg( f ) , 181 tr("<p>Really delete %1 and all it's contents?</p>" ).arg( f ) ,
179 tr("Yes"), tr("No"), 0, 0, 1) ) { 182 tr("Yes"), tr("No"), 0, 0, 1) ) {
180 case 0: 183 case 0:
181 { 184 {
182 f=f.left(f.length()-1); 185 f=f.left(f.length()-1);
183 QString cmd="rm -rf "+f; 186 QString cmd="rm -rf "+f;
184 startProcess( (const QString)cmd.latin1() ); 187 startProcess( (const QString)cmd.latin1() );
185 populateView(); 188 populateView();
186 } 189 }
187 break; 190 break;
188 case 1: 191 case 1:
189 // exit 192 // exit
190 break; 193 break;
194 default:
195 break;
191 }; 196 };
192 197
193 } else { 198 } else {
194 if(doMsg) { 199 if(doMsg) {
195 switch ( QMessageBox::warning(this,tr("Delete"), 200 switch ( QMessageBox::warning(this,tr("Delete"),
196 tr("<p>Really delete %1?</p>").arg( myFile ), 201 tr("<p>Really delete %1?</p>").arg( myFile ),
197 tr("Yes"), tr("No"), 0, 0, 1) ) { 202 tr("Yes"), tr("No"), 0, 0, 1) ) {
198 case 1: 203 case 1:
199 return; 204 return;
200 break; 205 break;
201 }; 206 default:
207 return;
208 break;
209 };
202 } 210 }
203 211
204 QString cmd="rm "+f; 212 QString cmd="rm "+f;
205 QFile file(f); 213 QFile file(f);
206 QFileInfo fi(myFile); 214 QFileInfo fi(myFile);
207 if( fi.fileName().find("../",0,TRUE)==-1) { 215 if( fi.fileName().find("../",0,TRUE)==-1) {
208// odebug << "remove link files "+myFile << oendl; 216// odebug << "remove link files "+myFile << oendl;
209 217
210// DocLnk lnk(f); 218// DocLnk lnk(f);
211 DocLnk *lnk; 219 DocLnk *lnk;
212 lnk = new DocLnk(f); 220 lnk = new DocLnk(f);
213// odebug << "Deleting doclnk " + lnk->linkFile() << oendl; 221// odebug << "Deleting doclnk " + lnk->linkFile() << oendl;
214 if(lnk->isValid()) 222 if(lnk->isValid())
215 lnk->removeLinkFile(); 223 lnk->removeLinkFile();
216 // delete lnk; 224 // delete lnk;
217 file.remove(); 225 file.remove();
218 } 226 }
219 } 227 }
220 } 228 }
221 } 229 }
222 populateView(); 230 populateView();
223} 231}
224 232
225void AdvancedFm::filePerms() { 233void AdvancedFm::filePerms() {
226 QStringList curFileList = getPath(); 234 QStringList curFileList = getPath();
227 QString filePath; 235 QString filePath;
228 236
229 filePath = CurrentDir()->canonicalPath()+"/"; 237 filePath = CurrentDir()->canonicalPath()+"/";
230 238
231 for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) { 239 for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) {
232 filePermissions *filePerm; 240 filePermissions *filePerm;
233 filePerm = new filePermissions(this, "Permissions",true,0,(const QString &)(filePath+*it)); 241 filePerm = new filePermissions(this, "Permissions",true,0,(const QString &)(filePath+*it));
234 QPEApplication::execDialog( filePerm ); 242 QPEApplication::execDialog( filePerm );
235 if( filePerm ) 243 if( filePerm )
236 delete filePerm; 244 delete filePerm;
237 } 245 }
238 populateView(); 246 populateView();
239} 247}
240 248
241void AdvancedFm::doProperties() { 249void AdvancedFm::doProperties() {
242#if defined(QT_QWS_OPIE) 250#if defined(QT_QWS_OPIE)
243 251
244 QStringList curFileList = getPath(); 252 QStringList curFileList = getPath();
245 253
246 QString filePath; 254 QString filePath;
247 filePath = CurrentDir()->canonicalPath()+"/"; 255 filePath = CurrentDir()->canonicalPath()+"/";
248 256
249// odebug << "" << curFileList.count() << "" << oendl; 257// odebug << "" << curFileList.count() << "" << oendl;
250 258
251 for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) { 259 for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) {
252// odebug << (filePath+*it) << oendl; 260// odebug << (filePath+*it) << oendl;
253 DocLnk lnk( (filePath+*it)); 261 DocLnk lnk( (filePath+*it));
254 LnkProperties prop( &lnk ); 262 LnkProperties prop( &lnk );
255 QPEApplication::execDialog( &prop ); 263 QPEApplication::execDialog( &prop );
256 } 264 }
257#endif 265#endif
258 266
259} 267}
260 268
261void AdvancedFm::upDir() { 269void AdvancedFm::upDir() {
262 270
263 QDir dir( CurrentDir()->canonicalPath()); 271 QDir dir( CurrentDir()->canonicalPath());
264 dir.cdUp(); 272 dir.cdUp();
265 changeTo(dir.canonicalPath()); 273 changeTo(dir.canonicalPath());
266} 274}
267 275
268void AdvancedFm::copyTimer() { 276void AdvancedFm::copyTimer() {
269 QTimer::singleShot(125,this,SLOT(copy())); 277 QTimer::singleShot(125,this,SLOT(copy()));
270} 278}
271 279
272void AdvancedFm::copy() { 280void AdvancedFm::copy() {
273 QStringList curFileList = getPath(); 281 QStringList curFileList = getPath();
274 282
275 QDir *thisDir = CurrentDir(); 283 QDir *thisDir = CurrentDir();
276 QDir *thatDir = OtherDir(); 284 QDir *thatDir = OtherDir();
277 285
278 bool doMsg = true; 286 bool doMsg = true;
279 int count = curFileList.count(); 287 int count = curFileList.count();
280 if( count > 0) { 288 if( count > 0) {
281 if(count > 1 ){ 289 if(count > 1 ){
282 QString msg; 290 QString msg;
283 msg=tr("<p>Really copy %1 files?</p>").arg(count); 291 msg=tr("<p>Really copy %1 files?</p>").arg(count);
284 switch ( QMessageBox::warning(this,tr("Copy"),msg 292 switch ( QMessageBox::warning(this,tr("Copy"),msg
285 ,tr("Yes"),tr("No"),0,0,1) ) 293 ,tr("Yes"),tr("No"),0,0,1) )
286 { 294 {
287 case 0: 295 case 0:
288 doMsg=false; 296 doMsg=false;
289 break; 297 break;
290 case 1: 298 case 1:
291 return; 299 return;
292 break; 300 break;
301 default:
302 return;
303 break;
293 }; 304 };
294 } 305 }
295 306
296 QString curFile, item, destFile; 307 QString curFile, item, destFile;
297 for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) { 308 for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) {
298 item=(*it); 309 item=(*it);
299 if(item.find("->",0,TRUE)) //symlink 310 if(item.find("->",0,TRUE)) //symlink
300 item = item.left(item.find("->",0,TRUE)); 311 item = item.left(item.find("->",0,TRUE));
301 312
302 curFile = thisDir->canonicalPath()+"/"+ item; 313 curFile = thisDir->canonicalPath()+"/"+ item;
303 destFile = thatDir->canonicalPath()+"/"+ item; 314 destFile = thatDir->canonicalPath()+"/"+ item;
304 315
305// odebug << "Destination file is "+destFile << oendl; 316// odebug << "Destination file is "+destFile << oendl;
306// odebug << "CurrentFile file is " + curFile << oendl; 317// odebug << "CurrentFile file is " + curFile << oendl;
307 318
308 QFile f(destFile); 319 QFile f(destFile);
309 if( f.exists()) { 320 if( f.exists()) {
310 if(doMsg) { 321 if(doMsg) {
311 switch ( QMessageBox::warning(this,tr("File Exists!"), 322 switch ( QMessageBox::warning(this,tr("File Exists!"),
312 tr("<p>%1 already exists. Ok to overwrite?</P>").arg(item), 323 tr("<p>%1 already exists. Ok to overwrite?</P>").arg(item),
313 tr("Yes"),tr("No"),0,0,1)) { 324 tr("Yes"),tr("No"),0,0,1)) {
314 case 1: 325 case 1:
315 return; 326 return;
316 break; 327 break;
317 }; 328 default:
329 return;
330 break;
331 };
318 } 332 }
319 f.remove(); 333 f.remove();
320 } 334 }
321 335
322 if( !copyFile( curFile, destFile) ) { 336 if( !copyFile( curFile, destFile) ) {
323 QMessageBox::message("AdvancedFm", 337 QMessageBox::message("AdvancedFm",
324 tr( "<P>Could not copy %1 to %2</P>").arg(curFile).arg(destFile)); 338 tr( "<P>Could not copy %1 to %2</P>").arg(curFile).arg(destFile));
325 return; 339 return;
326 } 340 }
327 } 341 }
328 rePopulate(); 342 rePopulate();
329 } 343 }
330} 344}
331 345
332void AdvancedFm::copyAsTimer() { 346void AdvancedFm::copyAsTimer() {
333 QTimer::singleShot(125,this,SLOT(copyAs())); 347 QTimer::singleShot(125,this,SLOT(copyAs()));
334} 348}
335 349
336void AdvancedFm::copyAs() { 350void AdvancedFm::copyAs() {
337 351
338 QStringList curFileList = getPath(); 352 QStringList curFileList = getPath();
339 QString curFile, item; 353 QString curFile, item;
340 InputDialog *fileDlg; 354 InputDialog *fileDlg;
341 355
342 QDir *thisDir = CurrentDir(); 356 QDir *thisDir = CurrentDir();
343 QDir *thatDir = OtherDir(); 357 QDir *thatDir = OtherDir();
344 358
345 for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) { 359 for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) {
346 QString destFile; 360 QString destFile;
347 item=(*it); 361 item=(*it);
348 curFile = thisDir->canonicalPath()+"/"+(*it); 362 curFile = thisDir->canonicalPath()+"/"+(*it);
349 fileDlg = new InputDialog( this, tr("Copy %1 As").arg(curFile), TRUE, 0); 363 fileDlg = new InputDialog( this, tr("Copy %1 As").arg(curFile), TRUE, 0);
350 364
351 fileDlg->setInputText((const QString &) destFile ); 365 fileDlg->setInputText((const QString &) destFile );
352 fileDlg->exec(); 366 fileDlg->exec();
353 367
354 if( fileDlg->result() == 1 ) { 368 if( fileDlg->result() == 1 ) {
355 QString filename = fileDlg->LineEdit1->text(); 369 QString filename = fileDlg->LineEdit1->text();
356 destFile = thatDir->canonicalPath()+"/"+filename; 370 destFile = thatDir->canonicalPath()+"/"+filename;
357 371
358 QFile f( destFile); 372 QFile f( destFile);
359 if( f.exists()) { 373 if( f.exists()) {
360 switch (QMessageBox::warning(this,tr("File Exists!"), 374 switch (QMessageBox::warning(this,tr("File Exists!"),
361 tr("<P> %1 already exists. Ok to overwrite?</p>").arg(item), 375 tr("<P> %1 already exists. Ok to overwrite?</p>").arg(item),
362 tr("Yes"),tr("No"),0,0,1) ) { 376 tr("Yes"),tr("No"),0,0,1) ) {
363 case 0: 377 case 0:
364 f.remove(); 378 f.remove();
365 break; 379 break;
366 case 1: 380 case 1:
367 return; 381 return;
368 break; 382 break;
369 }; 383 default:
384 return;
385 break;
386 };
370 } 387 }
371 if( !copyFile( curFile, destFile) ) { 388 if( !copyFile( curFile, destFile) ) {
372 QMessageBox::message("AdvancedFm",tr("<p>Could not copy %1 to %2</P>").arg(curFile).arg(destFile)); 389 QMessageBox::message("AdvancedFm",tr("<p>Could not copy %1 to %2</P>").arg(curFile).arg(destFile));
373 return; 390 return;
374 } 391 }
375 } 392 }
376 delete fileDlg; 393 delete fileDlg;
377 394
378 } 395 }
379 rePopulate(); 396 rePopulate();
380 // setOtherTabCurrent(); 397 // setOtherTabCurrent();
381 qApp->processEvents(); 398 qApp->processEvents();
382 399
383} 400}
384 401
385void AdvancedFm::copySameDirTimer() { 402void AdvancedFm::copySameDirTimer() {
386 QTimer::singleShot(125,this,SLOT(copySameDir())); 403 QTimer::singleShot(125,this,SLOT(copySameDir()));
387} 404}
388 405
389void AdvancedFm::copySameDir() { 406void AdvancedFm::copySameDir() {
390 qApp->processEvents(); 407 qApp->processEvents();
391 QStringList curFileList = getPath(); 408 QStringList curFileList = getPath();
392 QString curFile, item, destFile; 409 QString curFile, item, destFile;
393 InputDialog *fileDlg; 410 InputDialog *fileDlg;
394 411
395 QDir *thisDir = CurrentDir(); 412 QDir *thisDir = CurrentDir();
396 413
397 for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) { 414 for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) {
398 item=(*it); 415 item=(*it);
399 curFile = thisDir->canonicalPath()+"/"+ item; 416 curFile = thisDir->canonicalPath()+"/"+ item;
400 417
401 fileDlg = new InputDialog(this,tr("Copy ")+curFile+tr(" As"),TRUE, 0); 418 fileDlg = new InputDialog(this,tr("Copy ")+curFile+tr(" As"),TRUE, 0);
402 fileDlg->setInputText((const QString &) destFile ); 419 fileDlg->setInputText((const QString &) destFile );
403 fileDlg->exec(); 420 fileDlg->exec();
404 421
405 if( fileDlg->result() == 1 ) { 422 if( fileDlg->result() == 1 ) {
406 423
407 QString filename = fileDlg->LineEdit1->text(); 424 QString filename = fileDlg->LineEdit1->text();
408 destFile = thisDir->canonicalPath()+"/"+filename; 425 destFile = thisDir->canonicalPath()+"/"+filename;
409 426
410 QFile f(destFile); 427 QFile f(destFile);
411 if( f.exists()) { 428 if( f.exists()) {
412 switch (QMessageBox::warning(this,tr("Delete"), 429 switch (QMessageBox::warning(this,tr("Delete"),
413 tr("<p> %1 already exists. Do you really want to delete it?</P>").arg(destFile), 430 tr("<p> %1 already exists. Do you really want to delete it?</P>").arg(destFile),
414 tr("Yes"),tr("No"),0,0,1) ) { 431 tr("Yes"),tr("No"),0,0,1) ) {
415 case 0: 432 case 0:
416 433
417 f.remove(); 434 f.remove();
418 break; 435 break;
419 case 1: 436 case 1:
420 return; 437 return;
421 break; 438 break;
422 }; 439 default:
440 return;
441 break;
442 };
423 } 443 }
424 if(!copyFile( curFile,destFile) ) { 444 if(!copyFile( curFile,destFile) ) {
425 QMessageBox::message("AdvancedFm",tr("<P>Could not copy %1 to %2</P>").arg(curFile).arg(destFile)); 445 QMessageBox::message("AdvancedFm",tr("<P>Could not copy %1 to %2</P>").arg(curFile).arg(destFile));
426 return; 446 return;
427 } 447 }
428 448
429// odebug << "copy "+curFile+" as "+destFile << oendl; 449// odebug << "copy "+curFile+" as "+destFile << oendl;
430 } 450 }
431 delete fileDlg; 451 delete fileDlg;
432 } 452 }
433 rePopulate(); 453 rePopulate();
434} 454}
435 455
436void AdvancedFm::moveTimer() { 456void AdvancedFm::moveTimer() {
437 QTimer::singleShot(125,this,SLOT(move())); 457 QTimer::singleShot(125,this,SLOT(move()));
438} 458}
439 459
440void AdvancedFm::move() { 460void AdvancedFm::move() {
441 461
442 QStringList curFileList = getPath(); 462 QStringList curFileList = getPath();
443 if( curFileList.count() > 0) { 463 if( curFileList.count() > 0) {
444 QString curFile, destFile, item; 464 QString curFile, destFile, item;
445 465
446 QDir *thisDir = CurrentDir(); 466 QDir *thisDir = CurrentDir();
447 QDir *thatDir = OtherDir(); 467 QDir *thatDir = OtherDir();
448 for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) { 468 for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) {
449 item=(*it); 469 item=(*it);
450 QString destFile = thatDir->canonicalPath(); 470 QString destFile = thatDir->canonicalPath();
451 471
452 if(destFile.right(1).find("/",0,TRUE) == -1) 472 if(destFile.right(1).find("/",0,TRUE) == -1)
453 destFile+="/"; 473 destFile+="/";
454 destFile += item; 474 destFile += item;
455// odebug << "Destination file is "+destFile << oendl; 475// odebug << "Destination file is "+destFile << oendl;
456 476
457 curFile = thisDir->canonicalPath(); 477 curFile = thisDir->canonicalPath();
458 if(curFile.right(1).find("/",0,TRUE) == -1) 478 if(curFile.right(1).find("/",0,TRUE) == -1)
459 curFile +="/"; 479 curFile +="/";
460 curFile+= item; 480 curFile+= item;
461// odebug << "CurrentFile file is " + curFile << oendl; 481// odebug << "CurrentFile file is " + curFile << oendl;
462 482
463 if(QFileInfo(curFile).isDir()) { 483 if(QFileInfo(curFile).isDir()) {
464 moveDirectory( curFile, destFile ); 484 moveDirectory( curFile, destFile );
465 rePopulate(); 485 rePopulate();
466 return; 486 return;
467 } 487 }
468 QFile f( destFile); 488 QFile f( destFile);
469 if( f.exists()) { 489 if( f.exists()) {
470 switch ( QMessageBox::warning(this,tr("File Exists!"), 490 switch ( QMessageBox::warning(this,tr("File Exists!"),
471 tr("<p>%1 already exists. Ok to overwrite?</P>").arg(destFile), 491 tr("<p>%1 already exists. Ok to overwrite?</P>").arg(destFile),
472 tr("Yes"),tr("No"),0,0,1)) { 492 tr("Yes"),tr("No"),0,0,1)) {
473 case 1: 493 case 1:
474 return; 494 return;
475 break; 495 break;
476 }; 496 default:
497 return;
498 break;
499 };
477 if( !copyFile( curFile, destFile) ) { 500 if( !copyFile( curFile, destFile) ) {
478 QMessageBox::message(tr("Note"),tr("<p>Could not move %1</p>").arg(curFile)); 501 QMessageBox::message(tr("Note"),tr("<p>Could not move %1</p>").arg(curFile));
479 return; 502 return;
480 } else 503 } else
481 QFile::remove(curFile); 504 QFile::remove(curFile);
482 } 505 }
483 } 506 }
484 } 507 }
485 rePopulate(); 508 rePopulate();
486 //setOtherTabCurrent(); 509 //setOtherTabCurrent();
487} 510}
488 511
489bool AdvancedFm::moveDirectory( const QString & src, const QString & dest ) { 512bool AdvancedFm::moveDirectory( const QString & src, const QString & dest ) {
490 int err = 0; 513 int err = 0;
491 if( copyDirectory( src, dest ) ) { 514 if( copyDirectory( src, dest ) ) {
492 QString cmd = "rm -rf " + src; 515 QString cmd = "rm -rf " + src;
493 err = system((const char*)cmd); 516 err = system((const char*)cmd);
494 } else 517 } else
495 err = -1; 518 err = -1;
496 519
497 if(err!=0) { 520 if(err!=0) {
498 QMessageBox::message(tr("Note"),tr("<p>Could not move %1</p>").arg( src)); 521 QMessageBox::message(tr("Note"),tr("<p>Could not move %1</p>").arg( src));
499 return false; 522 return false;
500 } 523 }
501 return true; 524 return true;
502} 525}
503 526
504bool AdvancedFm::copyDirectory( const QString & src, const QString & dest ) { 527bool AdvancedFm::copyDirectory( const QString & src, const QString & dest ) {
505 528
506 QString cmd = "/bin/cp -fpR " + src + " " + dest; 529 QString cmd = "/bin/cp -fpR " + src + " " + dest;
507 owarn << cmd << oendl; 530 owarn << cmd << oendl;
508 int err = system( (const char *) cmd ); 531 int err = system( (const char *) cmd );
509 if ( err != 0 ) { 532 if ( err != 0 ) {
510 QMessageBox::message("AdvancedFm", tr( "<p>Could not copy %1 to %2</p>").arg( src ).arg( dest ) ); 533 QMessageBox::message("AdvancedFm", tr( "<p>Could not copy %1 to %2</p>").arg( src ).arg( dest ) );
511 return false; 534 return false;
512 } 535 }
513 536
514 return true; 537 return true;
515} 538}
516 539
517 540
518bool AdvancedFm::copyFile( const QString & src, const QString & dest ) { 541bool AdvancedFm::copyFile( const QString & src, const QString & dest ) {
519 if(QFileInfo(src).isDir()) { 542 if(QFileInfo(src).isDir()) {
520 if( copyDirectory( src, dest )) { 543 if( copyDirectory( src, dest )) {
521 // setOtherTabCurrent(); 544 // setOtherTabCurrent();
522 rePopulate(); 545 rePopulate();
523 return true; 546 return true;
524 } 547 }
525 else 548 else
526 return false; 549 return false;
527 } 550 }
528 551
529 552
530 bool success = true; 553 bool success = true;
531 struct stat status; 554 struct stat status;
532 QFile srcFile(src); 555 QFile srcFile(src);
533 QFile destFile(dest); 556 QFile destFile(dest);
534 int err=0; 557 int err=0;
535 int read_fd=0; 558 int read_fd=0;
536 int write_fd=0; 559 int write_fd=0;
537 struct stat stat_buf; 560 struct stat stat_buf;
538 off_t offset = 0; 561 off_t offset = 0;
539 if(!srcFile.open( IO_ReadOnly|IO_Raw)) { 562 if(!srcFile.open( IO_ReadOnly|IO_Raw)) {
540// owarn << "open failed" << oendl; 563// owarn << "open failed" << oendl;
541 return success = false; 564 return success = false;
542 } 565 }
543 read_fd = srcFile.handle(); 566 read_fd = srcFile.handle();
544 if(read_fd != -1) { 567 if(read_fd != -1) {
545 fstat (read_fd, &stat_buf); 568 fstat (read_fd, &stat_buf);
546 if( !destFile.open( IO_WriteOnly|IO_Raw ) ) { 569 if( !destFile.open( IO_WriteOnly|IO_Raw ) ) {
547// owarn << "destfile open failed" << oendl; 570// owarn << "destfile open failed" << oendl;
548 return success = false; 571 return success = false;
549 } 572 }
550 write_fd = destFile.handle(); 573 write_fd = destFile.handle();
551 if(write_fd != -1) { 574 if(write_fd != -1) {
552 err = sendfile(write_fd, read_fd, &offset, stat_buf.st_size); 575 err = sendfile(write_fd, read_fd, &offset, stat_buf.st_size);
553 if( err == -1) { 576 if( err == -1) {
554 QString msg; 577 QString msg;
555 switch(err) { 578 switch(err) {
556 case EBADF : msg = "The input file was not opened for reading or the output file was not opened for writing. "; 579 case EBADF : msg = "The input file was not opened for reading or the output file was not opened for writing. ";
557 case EINVAL: msg = "Descriptor is not valid or locked. "; 580 case EINVAL: msg = "Descriptor is not valid or locked. ";
558 case ENOMEM: msg = "Insufficient memory to read from in_fd."; 581 case ENOMEM: msg = "Insufficient memory to read from in_fd.";
559 case EIO: msg = "Unspecified error while reading from in_fd."; 582 case EIO: msg = "Unspecified error while reading from in_fd.";
560 }; 583 };
561 success = false; 584 success = false;
562// owarn << msg << oendl; 585// owarn << msg << oendl;
563 } 586 }
564 } else { 587 } else {
565 success = false; 588 success = false;
566 } 589 }
567 } else { 590 } else {
568 success = false; 591 success = false;
569 } 592 }
570 srcFile.close(); 593 srcFile.close();
571 destFile.close(); 594 destFile.close();
572 // Set file permissions 595 // Set file permissions