Diffstat (limited to 'noncore/apps/advancedfm/advancedfmMenu.cpp') (more/less context) (show whitespace changes)
-rw-r--r-- | noncore/apps/advancedfm/advancedfmMenu.cpp | 149 |
1 files changed, 63 insertions, 86 deletions
diff --git a/noncore/apps/advancedfm/advancedfmMenu.cpp b/noncore/apps/advancedfm/advancedfmMenu.cpp index 9f21245..00d0e07 100644 --- a/noncore/apps/advancedfm/advancedfmMenu.cpp +++ b/noncore/apps/advancedfm/advancedfmMenu.cpp | |||
@@ -40,2 +40,3 @@ | |||
40 | 40 | ||
41 | #include <errno.h> | ||
41 | #include <stdlib.h> | 42 | #include <stdlib.h> |
@@ -47,2 +48,3 @@ | |||
47 | 48 | ||
49 | |||
48 | void AdvancedFm::doDirChange() | 50 | void AdvancedFm::doDirChange() |
@@ -172,3 +174,2 @@ void AdvancedFm::doDelete() | |||
172 | { | 174 | { |
173 | |||
174 | QStringList curFileList = getPath(); | 175 | QStringList curFileList = getPath(); |
@@ -176,6 +177,4 @@ void AdvancedFm::doDelete() | |||
176 | int count = curFileList.count(); | 177 | int count = curFileList.count(); |
177 | if( count > 0) | 178 | if( count > 0) { |
178 | { | 179 | if(count > 1 ) { |
179 | if(count > 1 ) | ||
180 | { | ||
181 | QString msg; | 180 | QString msg; |
@@ -195,4 +194,4 @@ void AdvancedFm::doDelete() | |||
195 | QString myFile; | 194 | QString myFile; |
196 | for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) | 195 | |
197 | { | 196 | for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) { |
198 | myFile = (*it); | 197 | myFile = (*it); |
@@ -205,12 +204,8 @@ void AdvancedFm::doDelete() | |||
205 | f += myFile; | 204 | f += myFile; |
206 | if(QDir(f).exists() && !QFileInfo(f).isSymLink() ) //if file is a directory | 205 | if(QDir(f).exists() && !QFileInfo(f).isSymLink() ) { |
207 | { | 206 | //if file is a directory |
207 | |||
208 | switch ( QMessageBox::warning( this, tr("Delete Directory?"), | 208 | switch ( QMessageBox::warning( this, tr("Delete Directory?"), |
209 | tr("Really delete %1\nand all it's contents ?" ).arg( f ) , | 209 | tr("Really delete %1\nand all it's contents ?" ).arg( f ) , |
210 | tr("Yes"), | 210 | tr("Yes"), tr("No"), 0, 0, 1) ) { |
211 | tr("No"), | ||
212 | 0, | ||
213 | 0, | ||
214 | 1) ) | ||
215 | { | ||
216 | case 0: | 211 | case 0: |
@@ -231,8 +226,4 @@ void AdvancedFm::doDelete() | |||
231 | switch ( QMessageBox::warning(this,tr("Delete"), | 226 | switch ( QMessageBox::warning(this,tr("Delete"), |
232 | tr("Really delete\n%1?").arg( f ), | 227 | tr("Really delete\n%1?").arg( myFile ), |
233 | tr("Yes"), | 228 | tr("Yes"), tr("No"), 0, 0, 1) ) { |
234 | tr("No"), | ||
235 | 0, | ||
236 | 0, | ||
237 | 1) ) { | ||
238 | case 1: | 229 | case 1: |
@@ -242,9 +233,16 @@ void AdvancedFm::doDelete() | |||
242 | } | 233 | } |
234 | |||
243 | QString cmd="rm "+f; | 235 | QString cmd="rm "+f; |
244 | QFile file(f); | 236 | QFile file(f); |
245 | if(QFileInfo(myFile).fileName().find("../",0,TRUE)==-1) { | 237 | QFileInfo fi(myFile); |
246 | qDebug("remove link files "+f); | 238 | if( fi.fileName().find("../",0,TRUE)==-1) { |
247 | // AppLnk lnk(f); | 239 | qDebug("remove link files "+myFile); |
248 | // qDebug(lnk.linkFile()); | 240 | |
249 | // lnk.removeLinkFile(); | 241 | // DocLnk lnk(f); |
242 | DocLnk *lnk; | ||
243 | lnk = new DocLnk(f); | ||
244 | qDebug("Deleting doclnk " + lnk->linkFile()); | ||
245 | if(lnk->isValid()) | ||
246 | lnk->removeLinkFile(); | ||
247 | // delete lnk; | ||
250 | file.remove(); | 248 | file.remove(); |
@@ -369,4 +367,3 @@ void AdvancedFm::copy() | |||
369 | 367 | ||
370 | if( !copyFile( curFile, destFile) ) | 368 | if( !copyFile( curFile, destFile) ) { |
371 | { | ||
372 | QMessageBox::message("AdvancedFm", | 369 | QMessageBox::message("AdvancedFm", |
@@ -422,4 +419,3 @@ void AdvancedFm::copyAs() | |||
422 | } | 419 | } |
423 | if( !copyFile( curFile, destFile) ) | 420 | if( !copyFile( curFile, destFile) ) { |
424 | { | ||
425 | QMessageBox::message("AdvancedFm",tr("Could not copy\n") | 421 | QMessageBox::message("AdvancedFm",tr("Could not copy\n") |
@@ -475,4 +471,3 @@ void AdvancedFm::copySameDir() | |||
475 | } | 471 | } |
476 | if(!copyFile( curFile,destFile) ) | 472 | if(!copyFile( curFile,destFile) ) { |
477 | { | ||
478 | QMessageBox::message("AdvancedFm",tr("Could not copy\n") | 473 | QMessageBox::message("AdvancedFm",tr("Could not copy\n") |
@@ -518,4 +513,3 @@ void AdvancedFm::move() | |||
518 | if( f.exists()) { | 513 | if( f.exists()) { |
519 | if( !copyFile( curFile, destFile) ) | 514 | if( !copyFile( curFile, destFile) ) { |
520 | { | ||
521 | QMessageBox::message(tr("Note"),tr("Could not move\n")+curFile); | 515 | QMessageBox::message(tr("Note"),tr("Could not move\n")+curFile); |
@@ -535,10 +529,7 @@ bool AdvancedFm::copyFile( const QString & src, const QString & dest ) | |||
535 | { | 529 | { |
536 | // char bf[ 50000 ]; | ||
537 | // int bytesRead; | ||
538 | bool success = true; | 530 | bool success = true; |
539 | struct stat status; | 531 | struct stat status; |
540 | 532 | QFile srcFile(src); | |
541 | // QFile s( src ); | 533 | QFile destFile(dest); |
542 | // QFile d( dest ); | 534 | int err=0; |
543 | |||
544 | int read_fd=0; | 535 | int read_fd=0; |
@@ -547,9 +538,26 @@ bool AdvancedFm::copyFile( const QString & src, const QString & dest ) | |||
547 | off_t offset = 0; | 538 | off_t offset = 0; |
548 | read_fd = ::open(src.latin1(), O_RDONLY); | 539 | if(!srcFile.open( IO_ReadOnly|IO_Raw)) { |
540 | qWarning("open failed"); | ||
541 | return success = false; | ||
542 | } | ||
543 | read_fd = srcFile.handle(); | ||
549 | if(read_fd != -1) { | 544 | if(read_fd != -1) { |
550 | fstat (read_fd, &stat_buf); | 545 | fstat (read_fd, &stat_buf); |
551 | write_fd = ::open(dest.latin1(), O_WRONLY | O_CREAT, stat_buf.st_mode); | 546 | if( !destFile.open( IO_WriteOnly|IO_Raw ) ) { |
547 | qWarning("destfile open failed"); | ||
548 | return success = false; | ||
549 | } | ||
550 | write_fd = destFile.handle(); | ||
552 | if(write_fd != -1) { | 551 | if(write_fd != -1) { |
553 | if(sendfile(write_fd, read_fd, &offset, stat_buf.st_size) == -1) { | 552 | err =sendfile(write_fd, read_fd, &offset, stat_buf.st_size); |
553 | if( err == -1) { | ||
554 | QString msg; | ||
555 | switch(err) { | ||
556 | 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. "; | ||
558 | case ENOMEM: msg = "Insufficient memory to read from in_fd."; | ||
559 | case EIO: msg = "Unspecified error while reading from in_fd."; | ||
560 | }; | ||
554 | success = false; | 561 | success = false; |
562 | qWarning(msg); | ||
555 | } | 563 | } |
@@ -561,30 +569,6 @@ bool AdvancedFm::copyFile( const QString & src, const QString & dest ) | |||
561 | } | 569 | } |
562 | 570 | srcFile.close(); | |
563 | ::close (read_fd); | 571 | destFile.close(); |
564 | ::close (write_fd); | ||
565 | |||
566 | |||
567 | // if( s.open( IO_ReadOnly | IO_Raw ) && d.open( IO_WriteOnly | IO_Raw ) ) | ||
568 | // { | ||
569 | // while( (bytesRead = s.readBlock( bf, sizeof( bf ) )) == sizeof( bf ) ) | ||
570 | // { | ||
571 | // if( d.writeBlock( bf, sizeof( bf ) ) != sizeof( bf ) ){ | ||
572 | // success = FALSE; | ||
573 | // break; | ||
574 | // } | ||
575 | // } | ||
576 | // if( success && (bytesRead > 0) ) | ||
577 | // { | ||
578 | // d.writeBlock( bf, bytesRead ); | ||
579 | // } | ||
580 | |||
581 | // } | ||
582 | // else | ||
583 | // { | ||
584 | // success = FALSE; | ||
585 | // } | ||
586 | |||
587 | // Set file permissions | 572 | // Set file permissions |
588 | if( stat( (const char *) src, &status ) == 0 ) | 573 | if( stat( (const char *) src, &status ) == 0 ) { |
589 | { | ||
590 | chmod( (const char *) dest, status.st_mode ); | 574 | chmod( (const char *) dest, status.st_mode ); |
@@ -715,17 +699,11 @@ void AdvancedFm::doBeam() | |||
715 | Ir ir; | 699 | Ir ir; |
716 | if(!ir.supported()) | 700 | if(!ir.supported()) { |
717 | { | 701 | } else { |
718 | } | ||
719 | else | ||
720 | { | ||
721 | QStringList curFileList = getPath(); | 702 | QStringList curFileList = getPath(); |
722 | if( curFileList.count() > 0) | 703 | if( curFileList.count() > 0) { |
723 | { | 704 | for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) { |
724 | for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) | 705 | QString curFile = (*it); |
725 | { | 706 | QString curFilePath = CurrentDir()->canonicalPath()+"/"+curFile; |
726 | 707 | if( curFilePath.right(1) == "/") { | |
727 | QString curFile = CurrentDir()->canonicalPath()+"/"+(*it); | 708 | curFilePath = curFilePath.left( curFilePath.length() -1); |
728 | if( curFile.right(1) == "/") | ||
729 | { | ||
730 | curFile = curFile.left( curFile.length() -1); | ||
731 | } | 709 | } |
@@ -733,3 +711,3 @@ void AdvancedFm::doBeam() | |||
733 | connect(file, SIGNAL(done(Ir*)), this, SLOT( fileBeamFinished( Ir * ))); | 711 | connect(file, SIGNAL(done(Ir*)), this, SLOT( fileBeamFinished( Ir * ))); |
734 | file->send( curFile, curFile ); | 712 | file->send( curFilePath, curFile ); |
735 | } | 713 | } |
@@ -737,3 +715,2 @@ void AdvancedFm::doBeam() | |||
737 | } | 715 | } |
738 | |||
739 | } | 716 | } |