author | llornkcor <llornkcor> | 2002-03-13 02:45:30 (UTC) |
---|---|---|
committer | llornkcor <llornkcor> | 2002-03-13 02:45:30 (UTC) |
commit | fac27f0d83dd361e27bacdf552932c9ea60e66e8 (patch) (side-by-side diff) | |
tree | 3910ee937e9bc2b018b30f9b521b7f38cdcf2124 | |
parent | fc49c34cfd2ce2adad2920daa368b25f42b8bad7 (diff) | |
download | opie-fac27f0d83dd361e27bacdf552932c9ea60e66e8.zip opie-fac27f0d83dd361e27bacdf552932c9ea60e66e8.tar.gz opie-fac27f0d83dd361e27bacdf552932c9ea60e66e8.tar.bz2 |
fixed crash bug when remote directory doesn't exist. Fixed progess bar indicator
continuing on dir listings after an upload/download.
-rw-r--r-- | noncore/net/opieftp/opieftp.cpp | 114 | ||||
-rw-r--r-- | noncore/net/opieftp/opieftp.h | 3 |
2 files changed, 79 insertions, 38 deletions
diff --git a/noncore/net/opieftp/opieftp.cpp b/noncore/net/opieftp/opieftp.cpp index e1dd582..0cdac79 100644 --- a/noncore/net/opieftp/opieftp.cpp +++ b/noncore/net/opieftp/opieftp.cpp @@ -41,4 +41,5 @@ #include <qmessagebox.h> #include <qlineedit.h> +#include <qregexp.h> #include <unistd.h> @@ -146,5 +147,5 @@ OpieFtp::OpieFtp( ) UsernameComboBox->setGeometry( QRect( 10, 25, 196, 21 ) ); UsernameComboBox->setEditable(TRUE); - UsernameComboBox->lineEdit()->setText("root"); + UsernameComboBox->lineEdit()->setText("llornkcor"); TextLabel2 = new QLabel( tab_3, "TextLabel2" ); @@ -161,5 +162,5 @@ OpieFtp::OpieFtp( ) ServerComboBox->setGeometry( QRect( 10, 105, 195, 21 ) ); ServerComboBox->setEditable(TRUE); - ServerComboBox->lineEdit()->setText( tr( "192.168.129.201" ) ); + ServerComboBox->lineEdit()->setText( tr( "llornkcor.com" ) ); QLabel *TextLabel5 = new QLabel( tab_3, "TextLabel5" ); @@ -168,5 +169,5 @@ OpieFtp::OpieFtp( ) remotePath = new QLineEdit( "/", tab_3, "remotePath" ); remotePath->setGeometry( QRect( 10, 145, 195, 16 ) ); - remotePath->setText( currentRemoteDir = "/"); + remotePath->setText( currentRemoteDir = "/home/llornkcor/"); TextLabel4 = new QLabel( tab_3, "TextLabel4" ); @@ -177,5 +178,6 @@ OpieFtp::OpieFtp( ) PortSpinBox->setButtonSymbols( QSpinBox::UpDownArrows ); PortSpinBox->setMaxValue(32786); - PortSpinBox->setValue( 4242 ); + PortSpinBox->setValue( 21); + TabWidget->insertTab( tab_3, tr( "Config" ) ); @@ -227,20 +229,22 @@ void OpieFtp::localUpload() QFileInfo fi(localFile); if( !fi.isDir()) { - fsz=fi.size(); - ProgressBar->setTotalSteps(fsz); + fsz=fi.size(); + ProgressBar->setTotalSteps(fsz); - FtpOptions(FTPLIB_CALLBACK, (long) log_progress, conn); - FtpOptions(FTPLIB_IDLETIME, (long) 1000, conn); - FtpOptions(FTPLIB_CALLBACKARG, (long) &fsz, conn); - FtpOptions(FTPLIB_CALLBACKBYTES, (long) fsz/10, conn); - qDebug("Put: %s, %s",localFile.latin1(),remoteFile.latin1()); + FtpOptions(FTPLIB_CALLBACK, (long) log_progress, conn); + FtpOptions(FTPLIB_IDLETIME, (long) 1000, conn); + FtpOptions(FTPLIB_CALLBACKARG, (long) &fsz, conn); + FtpOptions(FTPLIB_CALLBACKBYTES, (long) fsz/10, conn); + qDebug("Put: %s, %s",localFile.latin1(),remoteFile.latin1()); - if( !FtpPut( localFile.latin1(), remoteFile.latin1(),FTPLIB_IMAGE, conn ) ) { - QString msg; - msg.sprintf("Unable to upload\n%s",FtpLastResponse(conn)); - QMessageBox::message("Note",msg); - FtpQuit(conn); - } - ProgressBar->reset(); + if( !FtpPut( localFile.latin1(), remoteFile.latin1(),FTPLIB_IMAGE, conn ) ) { + QString msg; + msg.sprintf("Unable to upload\n%s",FtpLastResponse(conn)); + msg.replace(QRegExp(":"),"\n"); + QMessageBox::message("Note",msg); +// FtpQuit(conn); + } + ProgressBar->reset(); + nullifyCallBack(); } else { QMessageBox::message("Note","Cannot upload directories"); @@ -251,4 +255,12 @@ void OpieFtp::localUpload() } +void OpieFtp::nullifyCallBack() { + FtpOptions(FTPLIB_CALLBACK, NULL, conn); + FtpOptions(FTPLIB_IDLETIME, NULL, conn); + FtpOptions(FTPLIB_CALLBACKARG, NULL, conn); + FtpOptions(FTPLIB_CALLBACKBYTES, NULL, conn); + +} + void OpieFtp::remoteDownload() { @@ -274,8 +286,10 @@ void OpieFtp::remoteDownload() QString msg; msg.sprintf("Unable to download \n%s",FtpLastResponse(conn)); + msg.replace(QRegExp(":"),"\n"); QMessageBox::message("Note",msg); - FtpQuit(conn); +// FtpQuit(conn); } ProgressBar->reset(); + nullifyCallBack(); TabWidget->setCurrentPage(0); populateLocalView(); @@ -318,4 +332,5 @@ void OpieFtp::connector() QString msg; msg.sprintf("Unable to log in\n%s",FtpLastResponse(conn)); + msg.replace(QRegExp(":"),"\n"); QMessageBox::message("Note",msg); FtpQuit(conn); @@ -341,6 +356,7 @@ bool OpieFtp::remoteDirList(const QString &dir) QString msg; msg.sprintf("Unable to list the directory\n"+dir+"\n%s",FtpLastResponse(conn) ); + msg.replace(QRegExp(":"),"\n"); QMessageBox::message("Note",msg); - FtpQuit(conn); +// FtpQuit(conn); return false; } @@ -355,7 +371,9 @@ bool OpieFtp::remoteChDir(const QString &dir) if (!FtpChdir( dir.latin1(), conn )) { QString msg; - msg.sprintf("Unable to change directories "+dir+"\n%s",FtpLastResponse(conn)); + msg.sprintf("Unable to change directories\n"+dir+"\n%s",FtpLastResponse(conn)); + msg.replace(QRegExp(":"),"\n"); QMessageBox::message("Note",msg); - FtpQuit(conn); + qDebug(msg); +// FtpQuit(conn); QCopEnvelope ( "QPE/System", "notBusy()" ); return FALSE; @@ -430,36 +448,46 @@ void OpieFtp::remoteListClicked(QListViewItem *selectedItem) { QCopEnvelope ( "QPE/System", "busy()" ); + QString oldRemoteCurrentDir = currentRemoteDir; QString strItem=selectedItem->text(0); strItem=strItem.simplifyWhiteSpace(); - if(strItem == "../") { + if(strItem == "../") { // the user wants to go ^ if( FtpCDUp( conn) == 0) { QString msg; - msg.sprintf("Unable to change directories \n%s",FtpLastResponse(conn)); + msg.sprintf("Unable to cd up\n%s",FtpLastResponse(conn)); + msg.replace(QRegExp(":"),"\n"); QMessageBox::message("Note",msg); + qDebug(msg); } char path[256]; - if( FtpPwd( path,sizeof(path),conn) == 0) { + if( FtpPwd( path,sizeof(path),conn) == 0) { //this is easier than fudging the string QString msg; msg.sprintf("Unable to get working dir\n%s",FtpLastResponse(conn)); + msg.replace(QRegExp(":"),"\n"); QMessageBox::message("Note",msg); + qDebug(msg); } currentRemoteDir=path; } else { if(strItem.find("->",0,TRUE) != -1) { //symlink on some servers - strItem=strItem.right( strItem.length() - strItem.find("->",0,TRUE)-3 ); + strItem=strItem.right( strItem.length() - strItem.find("->",0,TRUE) - 2 ); strItem = strItem.stripWhiteSpace(); currentRemoteDir = strItem; - if( remoteChDir( (const QString &)strItem) ==0) { - QString msg; - msg.sprintf("Unable to change directories \n%s",FtpLastResponse(conn)); - QMessageBox::message("Note",msg); - } - } else if(strItem.find("/",0,TRUE) != -1) { - if( remoteChDir( (const QString &)currentRemoteDir+strItem) ==0) { - QString msg; - msg.sprintf("Unable to change directories \n%s",FtpLastResponse(conn)); - QMessageBox::message("Note",msg); + if( !remoteChDir( (const QString &)strItem)) { + currentRemoteDir = oldRemoteCurrentDir; + strItem=""; + populateRemoteView(); + qDebug("RemoteCurrentDir1 "+oldRemoteCurrentDir); } + } else if(strItem.find("/",0,TRUE) != -1) { // this is a directory + qDebug("trying directory"); + if( !remoteChDir( (const QString &)currentRemoteDir + strItem)) { + currentRemoteDir = oldRemoteCurrentDir; + strItem=""; + qDebug("RemoteCurrentDir1 "+oldRemoteCurrentDir); + + populateRemoteView(); + } else { currentRemoteDir = currentRemoteDir+strItem; + } } else { qDebug("download "+strItem); @@ -480,5 +508,5 @@ void OpieFtp::remoteListClicked(QListViewItem *selectedItem) if(strItem.find("@",0,TRUE) !=-1 || strItem.find("->",0,TRUE) !=-1 ) { //if symlink // is symlink - QString strItem2=strItem.right( (strItem.length()-strItem.find("->",0,TRUE)) -4); + QString strItem2 = strItem.right( (strItem.length() - strItem.find("->",0,TRUE)) - 4); if(QDir(strItem2).exists() ) { currentDir.cd(strItem2, TRUE); @@ -628,4 +656,5 @@ void OpieFtp::remoteMakDir() QString msg; msg.sprintf("Unable to make directory\n%s",FtpLastResponse(conn)); + msg.replace(QRegExp(":"),"\n"); QMessageBox::message("Note",msg); } @@ -648,4 +677,5 @@ void OpieFtp::remoteDelete() QString msg; msg.sprintf("Unable to remove directory\n%s",FtpLastResponse(conn)); + msg.replace(QRegExp(":"),"\n"); QMessageBox::message("Note",msg); } @@ -661,4 +691,5 @@ void OpieFtp::remoteDelete() QString msg; msg.sprintf("Unable to delete file\n%s",FtpLastResponse(conn)); + msg.replace(QRegExp(":"),"\n"); QMessageBox::message("Note",msg); } @@ -684,4 +715,5 @@ void OpieFtp::remoteRename() QString msg; msg.sprintf("Unable to rename file\n%s",FtpLastResponse(conn)); + msg.replace(QRegExp(":"),"\n"); QMessageBox::message("Note",msg); } @@ -709,4 +741,6 @@ void OpieFtp::localRename() void OpieFtp::currentPathEditChanged() { + QString oldRemoteCurrentDir = currentRemoteDir; + qDebug("oldRemoteCurrentDir "+oldRemoteCurrentDir); if (TabWidget->currentPageIndex() == 0) { if(QDir( currentPathEdit->text()).exists()) { @@ -723,5 +757,9 @@ void OpieFtp::currentPathEditChanged() currentPathEdit->setText( currentRemoteDir ); } - remoteChDir( (const QString &)currentRemoteDir); + if( !remoteChDir( (const QString &)currentRemoteDir) ) { + currentRemoteDir = oldRemoteCurrentDir; + currentPathEdit->setText( currentRemoteDir ); + } + remoteDirList( (const QString &)currentRemoteDir); } diff --git a/noncore/net/opieftp/opieftp.h b/noncore/net/opieftp/opieftp.h index 20dd0d0..e00a398 100644 --- a/noncore/net/opieftp/opieftp.h +++ b/noncore/net/opieftp/opieftp.h @@ -88,4 +88,7 @@ protected slots: void localRename(); void currentPathEditChanged(); +protected: + void nullifyCallBack(); + }; |