-rw-r--r-- | noncore/apps/advancedfm/advancedfm.cpp | 162 | ||||
-rw-r--r-- | noncore/apps/advancedfm/advancedfm.h | 1 |
2 files changed, 156 insertions, 7 deletions
diff --git a/noncore/apps/advancedfm/advancedfm.cpp b/noncore/apps/advancedfm/advancedfm.cpp index 9e38d14..f97ae99 100644 --- a/noncore/apps/advancedfm/advancedfm.cpp +++ b/noncore/apps/advancedfm/advancedfm.cpp @@ -1156,204 +1156,351 @@ void AdvancedFm::upDir() update(); } else { QString current = currentRemoteDir.canonicalPath(); QDir dir(current); dir.cdUp(); current = dir.canonicalPath(); chdir( current.latin1() ); currentRemoteDir.cd( current, TRUE); populateRemoteView(); update(); } } void AdvancedFm::copy() { QStringList curFileList = getPath(); if( curFileList.count() > 0) { QString curFile; if (TabWidget->currentPageIndex() == 0) { for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) { QString destFile = currentRemoteDir.canonicalPath()+"/"+(*it); // if(destFile.right(1).find("/",0,TRUE) == -1) // destFile+="/"; // destFile +=(*it); curFile = currentDir.canonicalPath()+"/"+(*it); // if(curFile.right(1).find("/",0,TRUE) == -1) // curFile +="/"; // curFile +=(*it); QFile f(destFile); - if( f.exists()) + if( f.exists()) { + switch ( QMessageBox::warning(this,tr("Delete"), + destFile+tr(" already exists\nDo you really want to delete it?"), + tr("Yes"),tr("No"),0,0,1) ) { + case 0: f.remove(); + break; + case 1: + return; + break; + }; + } if(!copyFile(destFile, curFile) ) { QMessageBox::message("AdvancedFm","Could not copy\n"+curFile +"to\n"+destFile); qWarning("nothin doing"); } } populateRemoteView(); TabWidget->setCurrentPage(1); } else { for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) { QString destFile = currentDir.canonicalPath()+"/"+(*it); curFile = currentRemoteDir.canonicalPath()+"/"+(*it); QFile f(destFile); - if( f.exists()) + if( f.exists()) { + switch ( QMessageBox::warning(this,tr("Delete"), + destFile+tr(" already exists\nDo you really want to delete it?"), + tr("Yes"),tr("No"),0,0,1) ) { + case 0: f.remove(); + break; + case 1: + return; + break; + }; + } if(!copyFile(destFile, curFile) ) { QMessageBox::message("AdvancedFm","Could not copy\n"+curFile +"to\n"+destFile); qWarning("nothin doing"); } } populateLocalView(); TabWidget->setCurrentPage(0); } } } void AdvancedFm::copyAs() { QStringList curFileList = getPath(); if( curFileList.count() > 0) { QString curFile; InputDialog *fileDlg; fileDlg = new InputDialog(this,tr("Copy As"),TRUE, 0); if (TabWidget->currentPageIndex() == 0) { for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) { QString destFile; curFile = currentDir.canonicalPath()+"/"+(*it); // InputDialog *fileDlg; // fileDlg = new InputDialog(this,tr("Copy As"),TRUE, 0); fileDlg->setInputText((const QString &) destFile ); fileDlg->exec(); if( fileDlg->result() == 1 ) { QString filename = fileDlg->LineEdit1->text(); destFile = currentRemoteDir.canonicalPath()+"/"+(*it); QFile f(destFile); - if( f.exists()) + if( f.exists()) { + switch (QMessageBox::warning(this,tr("Delete"), + destFile+tr(" already exists\nDo you really want to delete it?"), + tr("Yes"),tr("No"),0,0,1) ) { + case 0: f.remove(); + break; + case 1: + return; + break; + }; + } if(!copyFile(destFile, curFile) ) { QMessageBox::message("AdvancedFm","Could not copy\n"+curFile +"to\n"+destFile); qWarning("nothin doing"); } } } - populateRemoteView(); TabWidget->setCurrentPage(1); } else { if (TabWidget->currentPageIndex() == 0) { for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) { curFile = currentDir.canonicalPath()+"/"+(*it); QString destFile; fileDlg->setInputText((const QString &) destFile); fileDlg->exec(); if( fileDlg->result() == 1 ) { QString filename = fileDlg->LineEdit1->text(); destFile = currentDir.canonicalPath()+"/"+(*it); QFile f(destFile); - if( f.exists()) + if( f.exists()) { + switch ( QMessageBox::warning(this,tr("Delete"), + destFile+tr(" already exists\nDo you really want to delete it?"), + tr("Yes"),tr("No"),0,0,1) ) { + case 0: f.remove(); + break; + case 1: + return; + break; + }; + } if(!copyFile(destFile, curFile) ) { QMessageBox::message("AdvancedFm","Could not copy\n"+curFile +"to\n"+destFile); qWarning("nothin doing"); } + } } populateLocalView(); TabWidget->setCurrentPage(0); } } } + +} + +void AdvancedFm::copySameDir() { + QStringList curFileList = getPath(); + if( curFileList.count() > 0) { + QString curFile; + InputDialog *fileDlg; + + if (TabWidget->currentPageIndex() == 0) { + for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) { + QString destFile; + curFile = currentDir.canonicalPath()+"/"+(*it); + fileDlg = new InputDialog(this,tr("Copy ")+curFile+tr(" As"),TRUE, 0); +// InputDialog *fileDlg; +// fileDlg = new InputDialog(this,tr("Copy As"),TRUE, 0); + fileDlg->setInputText((const QString &) destFile ); + fileDlg->exec(); + if( fileDlg->result() == 1 ) { + QString filename = fileDlg->LineEdit1->text(); + destFile = currentDir.canonicalPath()+"/"+filename; + + QFile f(destFile); + if( f.exists()) { + switch (QMessageBox::warning(this,tr("Delete"), + destFile+tr(" already exists\nDo you really want to delete it?"), + tr("Yes"),tr("No"),0,0,1) ) { + case 0: + qDebug(""); + f.remove(); + break; + case 1: + return; + break; + }; + } + if(!copyFile(destFile, curFile) ) { + QMessageBox::message("AdvancedFm","Could not copy\n"+curFile +"to\n"+destFile); + qWarning("nothin doing"); + } + + qDebug("copy "+curFile+" as "+destFile); + } + delete fileDlg; + } + populateRemoteView(); + TabWidget->setCurrentPage(1); + } else { + if (TabWidget->currentPageIndex() == 0) { + for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) { + + curFile = currentRemoteDir.canonicalPath()+"/"+(*it); + fileDlg = new InputDialog(this,tr("Copy ")+curFile+tr(" As"),TRUE, 0); + QString destFile; + fileDlg->setInputText((const QString &) destFile); + fileDlg->exec(); + if( fileDlg->result() == 1 ) { + QString filename = fileDlg->LineEdit1->text(); + destFile = currentDir.canonicalPath()+"/"+filename; + + QFile f(destFile); + if( f.exists()) { + switch ( QMessageBox::warning(this,tr("Delete"), + destFile+tr(" already exists\nDo you really want to delete it?"), + tr("Yes"),tr("No"),0,0,1) ) { + case 0: + f.remove(); + break; + case 1: + return; + break; + }; + } + if(!copyFile(destFile, curFile) ) { + QMessageBox::message("AdvancedFm","Could not copy\n"+curFile +"to\n"+destFile); + qWarning("nothin doing"); + } + qDebug("copy "+curFile+" as "+destFile); + } + delete fileDlg; + } + populateLocalView(); + TabWidget->setCurrentPage(0); + } + } + } + } void AdvancedFm::move() { QStringList curFileList = getPath(); if( curFileList.count() > 0) { QString curFile; // qDebug(curFile); QString destFile; if (TabWidget->currentPageIndex() == 0) { for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) { QString destFile = currentRemoteDir.canonicalPath(); if(destFile.right(1).find("/",0,TRUE) == -1) destFile+="/"; destFile +=(*it); curFile = currentDir.canonicalPath(); qDebug("Destination file is "+destFile); if(curFile.right(1).find("/",0,TRUE) == -1) curFile +="/"; curFile+=(*it); QFile f(destFile); - if( f.exists()) + if( f.exists()) { + switch (QMessageBox::warning(this,tr("Delete"), + destFile+tr(" already exists\nDo you really want to delete it?"), + tr("Yes"),tr("No"),0,0,1) ) { + case 0: f.remove(); + break; + case 1: + return; + break; + }; if(!copyFile( destFile, curFile) ) { QMessageBox::message(tr("Note"),tr("Could not move\n"+curFile)); return; } QFile::remove(curFile); } + } TabWidget->setCurrentPage(1); } else { for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) { QString destFile = currentRemoteDir.canonicalPath(); if(destFile.right(1).find("/",0,TRUE) == -1) destFile+="/"; destFile +=(*it); qDebug("Destination file is "+destFile); curFile = currentDir.canonicalPath(); if(curFile.right(1).find("/",0,TRUE) == -1) curFile +="/"; curFile+=(*it); QFile f(destFile); - if( f.exists()) + if( f.exists()) { + switch (QMessageBox::warning(this,tr("Delete"), + destFile+tr(" already exists\nDo you really want to delete it?"), + tr("Yes"),tr("No"),0,0,1) ) { + case 0: f.remove(); + break; + case 1: + return; + break; + }; if(!copyFile(destFile, curFile) ) { QMessageBox::message(tr("Note"),tr("Could not move\n"+curFile)); return; } + } QFile::remove(curFile); TabWidget->setCurrentPage(0); } } populateRemoteView(); populateLocalView(); } } bool AdvancedFm::copyFile( const QString & dest, const QString & src ) { char bf[ 50000 ]; int bytesRead; bool success = TRUE; struct stat status; QFile s( src ); QFile d( dest ); if( s.open( IO_ReadOnly | IO_Raw ) && d.open( IO_WriteOnly | IO_Raw ) ) { while( (bytesRead = s.readBlock( bf, sizeof( bf ) )) == sizeof( bf ) ) { if( d.writeBlock( bf, sizeof( bf ) ) != sizeof( bf ) ){ success = FALSE; break; } } if( success && (bytesRead > 0) ){ d.writeBlock( bf, bytesRead ); } } else { success = FALSE; } @@ -1726,64 +1873,65 @@ void AdvancedFm::showFileMenu() { m->insertItem( tr( "Show Hidden Files" ), this, SLOT( showHidden() )); m->insertSeparator(); if ( QFileInfo(fi).isDir() ) { m->insertItem( tr( "Change Directory" ), this, SLOT( doLocalCd() )); } else { if ( app ) m->insertItem( app->pixmap(), tr( "Open in " + app->name() ), this, SLOT( runThis() ) ); else if( QFileInfo(fi).isExecutable() ) m->insertItem( tr( "Execute" ), this, SLOT( runThis() ) ); m->insertItem( Resource::loadPixmap( "txt" ), tr( "Open as text" ),this, SLOT( runText() ) ); } m->insertSeparator(); if(isLocalView) m->insertItem( tr( "Make Directory" ), this, SLOT( localMakDir() )); else m->insertItem( tr( "Make Directory" ), this, SLOT( remoteMakDir() )); m->insertItem( tr( "Make Symlink" ), this, SLOT( mkSym() )); m->insertSeparator(); if(isLocalView) m->insertItem( tr( "Rename" ), this, SLOT( localRename() )); else m->insertItem( tr( "Rename" ), this, SLOT( remoteRename() )); m->insertItem( tr( "Copy" ), this, SLOT( copy() )); m->insertItem( tr( "Copy As" ), this, SLOT( copyAs() )); + m->insertItem( tr( "Copy Same Dir" ), this, SLOT( copySameDir() )); m->insertItem( tr( "Move" ), this, SLOT( move() )); m->insertSeparator(); if(isLocalView) m->insertItem( tr( "Rescan" ), this, SLOT( populateLocalView() )); else m->insertItem( tr( "Rescan" ), this, SLOT( populateRemoteView() )); m->insertItem( tr( "Run Command" ), this, SLOT( runCommand() )); m->insertItem( tr( "File Info" ), this, SLOT( fileStatus() )); m->insertSeparator(); if(isLocalView) m->insertItem( tr( "Delete" ), this, SLOT( localDelete() )); else m->insertItem( tr( "Delete" ), this, SLOT( remoteDelete() )); m->insertSeparator(); m->insertItem( tr( "Set Permissions" ), this, SLOT( filePerms() )); if( QFile(QPEApplication::qpeDir()+"lib/libopie.so").exists() ) //bad hack for Sharp zaurus failings m->insertItem( tr( "Properties" ), this, SLOT( doProperties() )); m->setCheckable(TRUE); if (!b) m->setItemChecked(m->idAt(0),TRUE); else m->setItemChecked(m->idAt(0),FALSE); if(Ir::supported()) m->insertItem( tr( "Beam File" ), this, SLOT( doBeam() )); m->setFocus(); m->exec( QCursor::pos() ); sleep(1); if(m) delete m; diff --git a/noncore/apps/advancedfm/advancedfm.h b/noncore/apps/advancedfm/advancedfm.h index 7335773..7665fe9 100644 --- a/noncore/apps/advancedfm/advancedfm.h +++ b/noncore/apps/advancedfm/advancedfm.h @@ -95,45 +95,46 @@ protected slots: void localRename(); void runThis(); void runText(); void filePerms(); void doProperties(); void runCommand(); void runCommandStd(); QStringList getPath(); void mkSym(); void switchToLocalTab(); void switchToRemoteTab(); protected: QGridLayout *tabLayout, *tabLayout_2, *tabLayout_3; QStringList remoteDirPathStringList, localDirPathStringList; void keyReleaseEvent( QKeyEvent *); QString getFileSystemType(const QString &); void parsetab(const QString &fileName); protected slots: void showFileMenu(); void cancelMenuTimer(); void homeButtonPushed(); void docButtonPushed(); void SDButtonPushed(); void CFButtonPushed(); void QPEButtonPushed(); void upDir(); void currentPathComboChanged(); void copy(); void copyAs(); + void copySameDir(); void currentPathComboActivated(const QString &); void fillCombo(const QString &); bool copyFile( const QString & , const QString & ); void move(); void fileStatus(); void doAbout(); void doBeam(); void fileBeamFinished( Ir *); private: QTimer menuTimer; }; #endif // ADVANCEDFM_H |