-rw-r--r-- | noncore/net/opieftp/ftplib.c | 2 | ||||
-rw-r--r-- | noncore/net/opieftp/opieftp.cpp | 248 | ||||
-rw-r--r-- | noncore/net/opieftp/opieftp.h | 7 |
3 files changed, 152 insertions, 105 deletions
diff --git a/noncore/net/opieftp/ftplib.c b/noncore/net/opieftp/ftplib.c index b9ca746..5116170 100644 --- a/noncore/net/opieftp/ftplib.c +++ b/noncore/net/opieftp/ftplib.c @@ -57,9 +57,9 @@ #define SETSOCKOPT_OPTVAL_TYPE (void *) #endif #define FTPLIB_BUFSIZ 8192 -#define ACCEPT_TIMEOUT 30 +#define ACCEPT_TIMEOUT 15 #define FTPLIB_CONTROL 0 #define FTPLIB_READ 1 #define FTPLIB_WRITE 2 diff --git a/noncore/net/opieftp/opieftp.cpp b/noncore/net/opieftp/opieftp.cpp index eed133e..d74c55b 100644 --- a/noncore/net/opieftp/opieftp.cpp +++ b/noncore/net/opieftp/opieftp.cpp @@ -8,9 +8,9 @@ * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * ***************************************************************************/ -//#define DEVELOPER_VERSION +#define DEVELOPERS_VERSION #include "opieftp.h" #include "ftplib.h" #include "inputDialog.h" @@ -132,9 +132,9 @@ OpieFtp::OpieFtp( ) QPEApplication::setStylusOperation( Local_View->viewport(),QPEApplication::RightOnHold); tabLayout->addWidget( Local_View, 0, 0 ); - connect( Local_View, SIGNAL( doubleClicked( QListViewItem*)), + connect( Local_View, SIGNAL( clicked( QListViewItem*)), this,SLOT( localListClicked(QListViewItem *)) ); connect( Local_View, SIGNAL( mouseButtonPressed( int, QListViewItem *, const QPoint&, int)), this,SLOT( ListPressed(int, QListViewItem *, const QPoint&, int)) ); @@ -153,9 +153,9 @@ OpieFtp::OpieFtp( ) Remote_View->setColumnAlignment(2,QListView::AlignRight); Remote_View->setAllColumnsShowFocus(TRUE); QPEApplication::setStylusOperation( Remote_View->viewport(),QPEApplication::RightOnHold); - connect( Remote_View, SIGNAL( doubleClicked( QListViewItem*)), + connect( Remote_View, SIGNAL( clicked( QListViewItem*)), this,SLOT( remoteListClicked(QListViewItem *)) ); connect( Remote_View, SIGNAL( mouseButtonPressed( int, QListViewItem *, const QPoint&, int)), this,SLOT( RemoteListPressed(int, QListViewItem *, const QPoint&, int)) ); @@ -173,37 +173,34 @@ OpieFtp::OpieFtp( ) tabLayout_3->addMultiCellWidget( TextLabel1, 0, 0, 0, 1 ); UsernameComboBox = new QComboBox( FALSE, tab_3, "UsernameComboBox" ); UsernameComboBox->setEditable(TRUE); -// UsernameComboBox->lineEdit()->setText("anonymous"); tabLayout_3->addMultiCellWidget( UsernameComboBox, 1, 1, 0, 1 ); TextLabel2 = new QLabel( tab_3, "TextLabel2" ); TextLabel2->setText( tr( "Password" ) ); tabLayout_3->addMultiCellWidget( TextLabel2, 0, 0, 2, 3 ); PasswordEdit = new QLineEdit( "", tab_3, "PasswordComboBox" ); PasswordEdit->setEchoMode(QLineEdit::Password); -// PasswordEdit->setText( tr( "me@opieftp.org" ) ); tabLayout_3->addMultiCellWidget( PasswordEdit, 1, 1, 2, 3 ); TextLabel3 = new QLabel( tab_3, "TextLabel3" ); TextLabel3->setText( tr( "Remote server" ) ); tabLayout_3->addMultiCellWidget( TextLabel3, 2, 2, 0, 1 ); ServerComboBox = new QComboBox( FALSE, tab_3, "ServerComboBox" ); ServerComboBox->setEditable(TRUE); -// ServerComboBox->lineEdit()->setText( tr( "" ) ); tabLayout_3->addMultiCellWidget( ServerComboBox, 3, 3, 0, 1 ); connect(ServerComboBox,SIGNAL(activated(int)),this,SLOT(serverComboSelected(int ) )); + connect(ServerComboBox,SIGNAL(textChanged(const QString &)),this,SLOT(serverComboEdited(const QString & ) )); QLabel *TextLabel5 = new QLabel( tab_3, "TextLabel5" ); TextLabel5->setText( tr( "Remote path" ) ); tabLayout_3->addMultiCellWidget( TextLabel5, 2, 2, 2, 3 ); remotePath = new QLineEdit( "/", tab_3, "remotePath" ); - remotePath->setText( currentRemoteDir = "/"); tabLayout_3->addMultiCellWidget( remotePath, 3, 3, 2, 3 ); TextLabel4 = new QLabel( tab_3, "TextLabel4" ); TextLabel4->setText( tr( "Port" ) ); @@ -211,21 +208,20 @@ OpieFtp::OpieFtp( ) PortSpinBox = new QSpinBox( tab_3, "PortSpinBox" ); PortSpinBox->setButtonSymbols( QSpinBox::UpDownArrows ); PortSpinBox->setMaxValue(32786); - PortSpinBox->setValue( 21); tabLayout_3->addMultiCellWidget( PortSpinBox, 4, 4, 1, 1); QPushButton *deleteServerBtn; - deleteServerBtn = new QPushButton( "Delete Server",this, "OpenButton" ); + deleteServerBtn = new QPushButton( "Delete Server", tab_3 , "OpenButton" ); tabLayout_3->addMultiCellWidget( deleteServerBtn, 5, 5, 2, 3); connect(deleteServerBtn,SIGNAL(clicked()),SLOT(deleteServer())); - QPushButton *connectServerBtn; - connectServerBtn = new QPushButton( "Connect",this, "ConnectButton" ); + connectServerBtn = new QPushButton( "Connect", tab_3 , "ConnectButton" ); tabLayout_3->addMultiCellWidget( connectServerBtn, 5, 5, 0, 1); - connect(connectServerBtn,SIGNAL( clicked()),SLOT( connector() )); + connectServerBtn->setToggleButton(TRUE); + connect(connectServerBtn,SIGNAL( toggled( bool)),SLOT( connectorBtnToggled(bool) )); QSpacerItem* spacer = new QSpacerItem( 20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding ); tabLayout_3->addItem( spacer, 5, 0 ); @@ -247,19 +243,21 @@ OpieFtp::OpieFtp( ) ProgressBar = new QProgressBar( this, "ProgressBar" ); layout->addMultiCellWidget( ProgressBar, 4, 4, 0, 3 ); serverComboSelected(0); -#ifdef DEVELOPER_VERSION -// ServerComboBox->lineEdit()->setText( tr( "llornkcor.com" ) ); + fillCombos(); + +#ifdef DEVELOPERS_VERSION ServerComboBox->lineEdit()->setText( tr( "192.168.129.201" ) ); UsernameComboBox->lineEdit()->setText("root"); -// UsernameComboBox->lineEdit()->setText("llornkcor"); PortSpinBox->setValue( 4242); remotePath->setText( currentRemoteDir = "/"); +// ServerComboBox->lineEdit()->setText( tr( "llornkcor.com" ) ); +// UsernameComboBox->lineEdit()->setText("llornkcor"); +// PortSpinBox->setValue( 21); +// remotePath->setText( currentRemoteDir = "/home/llornkcor"); PasswordEdit->setText( tr( "" ) ); - #endif - fillCombos(); filterStr="*"; b=FALSE; populateLocalView(); TabWidget->setCurrentPage(2); @@ -303,8 +301,96 @@ void OpieFtp::tabChanged(QWidget *w) tabMenu->setItemChecked(tabMenu->idAt(1),FALSE); } } +void OpieFtp::newConnection() +{ + UsernameComboBox->lineEdit()->setText(""); + PasswordEdit->setText( "" ); + ServerComboBox->lineEdit()->setText( ""); + remotePath->setText( currentRemoteDir = "/"); + PortSpinBox->setValue( 21); + TabWidget->setCurrentPage(2); + currentServerConfig = -1; +} + +void OpieFtp::serverComboEdited(const QString & edit) { + if( !edit.isEmpty() ) { + currentServerConfig = -1; + qDebug("comboedited"); + } +} + +void OpieFtp::connectorBtnToggled(bool On) +{ + if(On) { + connector(); + } else { + disConnector(); + } + +} + +void OpieFtp::connector() +{ + QCopEnvelope ( "QPE/System", "busy()" ); + qApp->processEvents(); + currentRemoteDir=remotePath->text(); + if(ServerComboBox->currentText().isEmpty()) { + QMessageBox::warning(this,tr("Ftp"),tr("Please set the server info"),tr("Ok"),0,0); + TabWidget->setCurrentPage(2); + ServerComboBox->setFocus(); + connectServerBtn->setOn(FALSE); + connectServerBtn->setText( tr("Connect")); + return; + } + FtpInit(); + TabWidget->setCurrentPage(1); + QString ftp_host = ServerComboBox->currentText(); + QString ftp_user = UsernameComboBox->currentText(); + QString ftp_pass = PasswordEdit->text(); + QString port=PortSpinBox->cleanText(); + port.stripWhiteSpace(); + + if(ftp_host.find("ftp://",0, TRUE) != -1 ) + ftp_host=ftp_host.right(ftp_host.length()-6); + ftp_host+=":"+port; + if (!FtpConnect( ftp_host.latin1(), &conn)) { + QMessageBox::message(tr("Note"),tr("Unable to connect to\n")+ftp_host); + connectServerBtn->setOn(FALSE); + connectServerBtn->setText( tr("Connect")); + return ; + } + if (!FtpLogin( ftp_user.latin1(), ftp_pass.latin1(),conn )) { + QString msg; + msg.sprintf(tr("Unable to log in\n")+"%s",FtpLastResponse(conn)); + msg.replace(QRegExp(":"),"\n"); + QMessageBox::message(tr("Note"),msg); + if(conn) + FtpQuit(conn); + connectServerBtn->setOn(FALSE); + connectServerBtn->setText( tr("Connect")); + return ; + } + remoteDirList("/") ; + setCaption(ftp_host); + writeConfig(); + connectServerBtn->setText( tr("Disconnect")); + QCopEnvelope ( "QPE/System", "notBusy()" ); +} + +void OpieFtp::disConnector() +{ + if(conn) + FtpQuit(conn); + setCaption("OpieFtp"); + currentRemoteDir="/"; + Remote_View->clear(); + connectServerBtn->setText( tr("Connect")); + connectServerBtn->setOn(FALSE); + +} + void OpieFtp::localUpload() { int fsz; QCopEnvelope ( "QPE/System", "busy()" ); @@ -327,9 +413,8 @@ void OpieFtp::localUpload() QString msg; msg.sprintf(tr("Unable to upload\n")+"%s",FtpLastResponse(conn)); msg.replace(QRegExp(":"),"\n"); QMessageBox::message(tr("Note"),msg); -// FtpQuit(conn); } ProgressBar->reset(); nullifyCallBack(); } else { @@ -379,77 +464,16 @@ void OpieFtp::remoteDownload() QString msg; msg.sprintf(tr("Unable to download \n")+"%s",FtpLastResponse(conn)); msg.replace(QRegExp(":"),"\n"); QMessageBox::message(tr("Note"),msg); -// FtpQuit(conn); } ProgressBar->reset(); nullifyCallBack(); TabWidget->setCurrentPage(0); populateLocalView(); QCopEnvelope ( "QPE/System", "notBusy()" ); } - -void OpieFtp::newConnection() -{ - UsernameComboBox->lineEdit()->setText(""); - PasswordEdit->setText( "" ); - ServerComboBox->lineEdit()->setText( ""); - remotePath->setText( currentRemoteDir = "/"); - PortSpinBox->setValue( 21); - TabWidget->setCurrentPage(2); - -} - -void OpieFtp::connector() -{ - QCopEnvelope ( "QPE/System", "busy()" ); - qApp->processEvents(); - currentRemoteDir=remotePath->text(); - if(ServerComboBox->currentText().isEmpty()) { - QMessageBox::warning(this,tr("Ftp"),tr("Please set the server info"),tr("Ok"),0,0); - TabWidget->setCurrentPage(2); - ServerComboBox->setFocus(); - return; - } - FtpInit(); - TabWidget->setCurrentPage(1); - QString ftp_host = ServerComboBox->currentText(); - QString ftp_user = UsernameComboBox->currentText(); - QString ftp_pass = PasswordEdit->text(); - QString port=PortSpinBox->cleanText(); - port.stripWhiteSpace(); - - if(ftp_host.find("ftp://",0, TRUE) != -1 ) - ftp_host=ftp_host.right(ftp_host.length()-6); - ftp_host+=":"+port; - if (!FtpConnect( ftp_host.latin1(), &conn)) { - QMessageBox::message(tr("Note"),tr("Unable to connect to\n")+ftp_host); - return ; - } - if (!FtpLogin( ftp_user.latin1(), ftp_pass.latin1(),conn )) { - QString msg; - msg.sprintf(tr("Unable to log in\n")+"%s",FtpLastResponse(conn)); - msg.replace(QRegExp(":"),"\n"); - QMessageBox::message(tr("Note"),msg); - FtpQuit(conn); - return ; - } - remoteDirList("/") ; - setCaption(ftp_host); - writeConfig(); - QCopEnvelope ( "QPE/System", "notBusy()" ); -} - -void OpieFtp::disConnector() -{ - FtpQuit(conn); - setCaption("OpieFtp"); - currentRemoteDir="/"; - Remote_View->clear(); -} - bool OpieFtp::remoteDirList(const QString &dir) { QString tmp = QDir::homeDirPath(); if(tmp.right(1) != "/") @@ -462,9 +486,8 @@ bool OpieFtp::remoteDirList(const QString &dir) QString msg; msg.sprintf(tr("Unable to list the directory\n")+dir+"\n%s",FtpLastResponse(conn) ); msg.replace(QRegExp(":"),"\n"); QMessageBox::message(tr("Note"),msg); -// FtpQuit(conn); return false; } populateRemoteView() ; QCopEnvelope ( "QPE/System", "notBusy()" ); @@ -479,9 +502,8 @@ bool OpieFtp::remoteChDir(const QString &dir) msg.sprintf(tr("Unable to change directories\n")+dir+"\n%s",FtpLastResponse(conn)); msg.replace(QRegExp(":"),"\n"); QMessageBox::message(tr("Note"),msg); qDebug(msg); -// FtpQuit(conn); QCopEnvelope ( "QPE/System", "notBusy()" ); return FALSE; } QCopEnvelope ( "QPE/System", "notBusy()" ); @@ -947,9 +969,10 @@ void OpieFtp::switchToConfigTab() { TabWidget->setCurrentPage(2); } -void OpieFtp::readConfig() { +void OpieFtp::readConfig() +{ Config cfg("opieftp"); cfg.setGroup("Server"); QString username, remoteServer, remotePathStr, password, port, temp; @@ -972,19 +995,26 @@ void OpieFtp::readConfig() { username = cfg.readEntry(temp); UsernameComboBox->insertItem(username); password = cfg.readEntryCrypt(username,""); PasswordEdit->setText(password); - } - } -void OpieFtp::writeConfig() { +void OpieFtp::writeConfig() +{ Config cfg("opieftp"); cfg.setGroup("Server"); - QString temp; + QString username, remoteServerStr, remotePathStr, password, port, temp; int numberOfEntries = cfg.readNumEntry("numberOfEntries",0); + if( currentServerConfig == -1) { + + temp.setNum( numberOfEntries + 1); + cfg.setGroup("Server"); + remoteServerStr = cfg.readEntry( temp,""); + int divider = remoteServerStr.length() - remoteServerStr.find(":",0,TRUE); + remoteServerStr = remoteServerStr.left(remoteServerStr.length()-divider); + temp.setNum(numberOfEntries+1); cfg.setGroup("Server"); cfg.writeEntry( temp, ServerComboBox->currentText() +":"+PortSpinBox->cleanText() ); cfg.setGroup(temp); @@ -994,10 +1024,12 @@ void OpieFtp::writeConfig() { cfg.setGroup("Server"); cfg.writeEntry("numberOfEntries", QString::number(numberOfEntries + 1 )); } +} -void OpieFtp::fillCombos() { +void OpieFtp::fillCombos() +{ Config cfg("opieftp"); cfg.setGroup("Server"); QString username, remoteServerStr, remotePathStr, password, port, temp; int numberOfEntries = cfg.readNumEntry("numberOfEntries",0); @@ -1025,48 +1057,60 @@ void OpieFtp::fillCombos() { // username = cfg.readEntry(temp); // UsernameComboBox->insertItem(username); // password = cfg.readEntryCrypt(username,""); // PasswordEdit->setText(password); - } - } -void OpieFtp::serverComboSelected(int index) { - +void OpieFtp::serverComboSelected(int index) +{ + currentServerConfig = index; QString username, remoteServerStr, remotePathStr, password, port, temp; // remoteServerStr = ServerComboBox->text(index); Config cfg("opieftp"); cfg.setGroup("Server"); int numberOfEntries = cfg.readNumEntry("numberOfEntries",0); -// for (int i = 0; i <= numberOfEntries; i++) { temp.setNum(index+1); remoteServerStr = cfg.readEntry( temp,""); - // if( remoteServerStr.find( ServerComboBox->text(index),0,TRUE) != -1 ) { cfg.setGroup(temp); qDebug(temp); int divider = remoteServerStr.length() - remoteServerStr.find(":",0,TRUE); port = remoteServerStr.right( divider - 1); bool ok; - PortSpinBox->setValue( port.toInt(&ok,10)); + int portInt = port.toInt(&ok,10); + if( portInt == 0) portInt = 21; - remotePath->setText(cfg.readEntry("RemotePath", "")); - username = cfg.readEntry("Username", ""); - UsernameComboBox->lineEdit()->setText(username); - PasswordEdit->setText(cfg.readEntryCrypt(username, "")); + PortSpinBox->setValue( portInt); -// } + remotePath->setText(cfg.readEntry("RemotePath", "/")); - // } + username = cfg.readEntry("Username", "anonymous"); + UsernameComboBox->lineEdit()->setText(username); + PasswordEdit->setText(cfg.readEntryCrypt(username, "me@opieftp.org")); update(); } // UsernameComboBox->lineEdit()->setText("root"); // PasswordEdit->setText( tr( "" ) ); // ServerComboBox->lineEdit()->setText( tr( "192.168.129.201" ) ); // remotePath->setText( currentRemoteDir = "/home/llornkcor/"); // PortSpinBox->setValue( 4242); -void OpieFtp::deleteServer() { - +void OpieFtp::deleteServer() +{ + QString username, remoteServerStr, remotePathStr, password, port, temp; + remoteServerStr = ServerComboBox->currentText( ); + username = UsernameComboBox->currentText(); + Config cfg("opieftp"); + cfg.setGroup("Server"); + int numberOfEntries = cfg.readNumEntry("numberOfEntries",0); + for (int i = 0; i <= numberOfEntries; i++) { + temp.setNum(i+1); + cfg.setGroup("Server"); + if( cfg.readEntry( temp,"").find( remoteServerStr,0,TRUE) != -1 + && cfg.readEntry(temp).find(username,0,TRUE) != -1 + && !remoteServerStr.isEmpty()) { + qDebug(temp); + } + } } diff --git a/noncore/net/opieftp/opieftp.h b/noncore/net/opieftp/opieftp.h index c88a15b..52ed885 100644 --- a/noncore/net/opieftp/opieftp.h +++ b/noncore/net/opieftp/opieftp.h @@ -35,8 +35,9 @@ class QPEMenuBar; class QPopupMenu; class QFile; class QListViewItem; class QLineEdit; +class QPushButton; class OpieFtp : public QMainWindow { Q_OBJECT @@ -57,11 +58,13 @@ public: QDir currentDir; QString currentRemoteDir; QString filterStr; QListViewItem * item; + QPushButton *connectServerBtn; bool b; - + int currentServerConfig; protected slots: + void serverComboEdited(const QString & ); void showLocalMenu( QListViewItem *); void showRemoteMenu( QListViewItem *); void doLocalCd(); void doRemoteCd(); @@ -95,9 +98,9 @@ protected slots: void switchToConfigTab(); void fillCombos(); void serverComboSelected(int); void deleteServer(); - + void connectorBtnToggled(bool); protected: void nullifyCallBack(); QGridLayout* tabLayout; QGridLayout* tabLayout_2; |