author | llornkcor <llornkcor> | 2002-08-04 23:16:00 (UTC) |
---|---|---|
committer | llornkcor <llornkcor> | 2002-08-04 23:16:00 (UTC) |
commit | 400870188f123415355589ce4fb533614ecdf2ac (patch) (side-by-side diff) | |
tree | 6dc7b0f747c3c48de6b730154c1167186226ec4a /noncore/apps | |
parent | 57bd412cf973805fbe69ecfa8f168ad2e28311a9 (diff) | |
download | opie-400870188f123415355589ce4fb533614ecdf2ac.zip opie-400870188f123415355589ce4fb533614ecdf2ac.tar.gz opie-400870188f123415355589ce4fb533614ecdf2ac.tar.bz2 |
fix several severe file handling bugs
-rw-r--r-- | noncore/apps/advancedfm/advancedfm.cpp | 120 |
1 files changed, 67 insertions, 53 deletions
diff --git a/noncore/apps/advancedfm/advancedfm.cpp b/noncore/apps/advancedfm/advancedfm.cpp index 818a281..b169a79 100644 --- a/noncore/apps/advancedfm/advancedfm.cpp +++ b/noncore/apps/advancedfm/advancedfm.cpp @@ -1000,21 +1000,23 @@ QStringList AdvancedFm::getPath() { if (TabWidget->currentPageIndex() == 0) { QList<QListViewItem> * getSelectedItems( QListView * Local_View ); QListViewItemIterator it( Local_View ); for ( ; it.current(); ++it ) { if ( it.current()->isSelected() ) { strList << it.current()->text(0); + qDebug(it.current()->text(0)); } } return strList; } else { QList<QListViewItem> * getSelectedItems( QListView * Remote_View ); QListViewItemIterator it( Remote_View ); for ( ; it.current(); ++it ) { if ( it.current()->isSelected() ) { strList << it.current()->text(0); + qDebug(it.current()->text(0)); } } return strList; } return ""; } @@ -1096,20 +1098,25 @@ void AdvancedFm::upDir() update(); } } void AdvancedFm::copy() { + qApp->processEvents(); 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); + qDebug("Destination file is "+destFile); + curFile = currentDir.canonicalPath()+"/"+(*it); + qDebug("CurrentFile file is " + curFile); + 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: @@ -1129,13 +1136,15 @@ void AdvancedFm::copy() TabWidget->setCurrentPage(1); } else { for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) { QString destFile = currentDir.canonicalPath()+"/"+(*it); + qDebug("Destination file is "+destFile); curFile = currentRemoteDir.canonicalPath()+"/"+(*it); + qDebug("CurrentFile file is " + curFile); 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) ) { @@ -1153,32 +1162,35 @@ void AdvancedFm::copy() qWarning("nothin doing"); } } populateLocalView(); TabWidget->setCurrentPage(0); } + } } -void AdvancedFm::copyAs() -{ +void AdvancedFm::copyAs() { + qApp->processEvents(); + QStringList curFileList = getPath(); - if( curFileList.count() > 0) { QString curFile; InputDialog *fileDlg; - fileDlg = new InputDialog(this,tr("Copy As"),TRUE, 0); - if (TabWidget->currentPageIndex() == 0) { + qDebug("tab 1"); for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) { QString destFile; curFile = currentDir.canonicalPath()+"/"+(*it); + fileDlg = new InputDialog( this,tr("Copy "+curFile+" As"), TRUE, 0); + fileDlg->setInputText((const QString &) destFile ); fileDlg->exec(); + if( fileDlg->result() == 1 ) { QString filename = fileDlg->LineEdit1->text(); - destFile = currentRemoteDir.canonicalPath()+"/"+(*it); + destFile = currentRemoteDir.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) ) { @@ -1192,26 +1204,31 @@ void AdvancedFm::copyAs() } if(!copyFile(destFile, curFile) ) { QMessageBox::message("AdvancedFm",tr("Could not copy\n")+curFile +tr("to\n")+destFile); qWarning("nothin doing"); } } + delete fileDlg; + } populateRemoteView(); TabWidget->setCurrentPage(1); + } else { - if (TabWidget->currentPageIndex() == 0) { for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) { - curFile = currentDir.canonicalPath()+"/"+(*it); + curFile = currentRemoteDir.canonicalPath()+"/"+(*it); + fileDlg = new InputDialog( this,tr("Copy "+curFile+" As"), TRUE, 0); + QString destFile; fileDlg->setInputText((const QString &) destFile); fileDlg->exec(); + if( fileDlg->result() == 1 ) { QString filename = fileDlg->LineEdit1->text(); - destFile = currentDir.canonicalPath()+"/"+(*it); + 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) ) { @@ -1226,35 +1243,39 @@ void AdvancedFm::copyAs() if(!copyFile(destFile, curFile) ) { QMessageBox::message("AdvancedFm",tr("Could not copy\n")+curFile +tr("to\n")+destFile); qWarning("nothin doing"); } } + delete fileDlg; + } populateLocalView(); TabWidget->setCurrentPage(0); } } - } - -} void AdvancedFm::copySameDir() { + qApp->processEvents(); 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); 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"), @@ -1275,26 +1296,27 @@ void AdvancedFm::copySameDir() { } qDebug("copy "+curFile+" as "+destFile); } delete fileDlg; } - populateRemoteView(); - TabWidget->setCurrentPage(1); + populateLocalView(); + } 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; + + destFile = currentRemoteDir.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) ) { @@ -1311,100 +1333,92 @@ void AdvancedFm::copySameDir() { qWarning("nothin doing"); } qDebug("copy "+curFile+" as "+destFile); } delete fileDlg; } - populateLocalView(); - TabWidget->setCurrentPage(0); - } - } + populateRemoteView(); } - } void AdvancedFm::move() { + qApp->processEvents(); 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); + qDebug("CurrentFile file is " + curFile); - QFile f(destFile); + QFile f( curFile); 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; - } + } else QFile::remove(curFile); } } + TabWidget->setCurrentPage(1); - } else { + + } else { //view 2 + for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) { - QString destFile = currentRemoteDir.canonicalPath(); + + QString destFile = currentDir.canonicalPath(); + if(destFile.right(1).find("/",0,TRUE) == -1) destFile+="/"; + destFile +=(*it); + qDebug("Destination file is "+destFile); - curFile = currentDir.canonicalPath(); + + curFile = currentRemoteDir.canonicalPath(); + if(curFile.right(1).find("/",0,TRUE) == -1) curFile +="/"; curFile+=(*it); + qDebug("CurrentFile file is " + curFile); - QFile f(destFile); + QFile f( curFile); 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; - } - } + } else QFile::remove(curFile); + } TabWidget->setCurrentPage(0); } } populateRemoteView(); populateLocalView(); } } -bool AdvancedFm::copyFile( const QString & dest, const QString & src ) -{ +bool AdvancedFm::copyFile( const QString & dest, const QString & src ) { char bf[ 50000 ]; int bytesRead; bool success = TRUE; struct stat status; QFile s( src ); |