author | llornkcor <llornkcor> | 2002-04-10 12:38:08 (UTC) |
---|---|---|
committer | llornkcor <llornkcor> | 2002-04-10 12:38:08 (UTC) |
commit | 1d32fda5b67e89321ecbd0c8700edb8292b9ca90 (patch) (side-by-side diff) | |
tree | 1d6058c390c1677360c7282bbf80eb856ebd172f | |
parent | ef60c3e367a4ce89367ad6f5c035134bef6602a6 (diff) | |
download | opie-1d32fda5b67e89321ecbd0c8700edb8292b9ca90.zip opie-1d32fda5b67e89321ecbd0c8700edb8292b9ca90.tar.gz opie-1d32fda5b67e89321ecbd0c8700edb8292b9ca90.tar.bz2 |
bug fixes
-rw-r--r-- | noncore/net/opieftp/opieftp.cpp | 166 | ||||
-rw-r--r-- | noncore/net/opieftp/opieftp.h | 6 |
2 files changed, 136 insertions, 36 deletions
diff --git a/noncore/net/opieftp/opieftp.cpp b/noncore/net/opieftp/opieftp.cpp index 919649e..fb57193 100644 --- a/noncore/net/opieftp/opieftp.cpp +++ b/noncore/net/opieftp/opieftp.cpp @@ -74,18 +74,21 @@ OpieFtp::OpieFtp( ) layout->setSpacing( 2); layout->setMargin( 2); connect( qApp,SIGNAL( aboutToQuit()),SLOT( cleanUp()) ); QPEMenuBar *menuBar = new QPEMenuBar(this); +// QPEToolBar *menuBar = new QPEToolBar(this); +// menuBar->setHorizontalStretchable( TRUE ); + connectionMenu = new QPopupMenu( this ); localMenu = new QPopupMenu( this ); remoteMenu = new QPopupMenu( this ); tabMenu = new QPopupMenu( this ); - layout->addMultiCellWidget( menuBar, 0, 0, 0, 3 ); + layout->addMultiCellWidget( menuBar, 0, 0, 0, 2 ); menuBar->insertItem( tr( "Connection" ), connectionMenu); menuBar->insertItem( tr( "Local" ), localMenu); menuBar->insertItem( tr( "Remote" ), remoteMenu); menuBar->insertItem( tr( "View" ), tabMenu); @@ -110,14 +113,35 @@ OpieFtp::OpieFtp( ) tabMenu->insertItem( tr( "Switch to Local" ), this, SLOT( switchToLocalTab() )); tabMenu->insertItem( tr( "Switch to Remote" ), this, SLOT( switchToRemoteTab() )); tabMenu->insertItem( tr( "Switch to Config" ), this, SLOT( switchToConfigTab() )); tabMenu->setCheckable(TRUE); + + cdUpButton = new QPushButton(Resource::loadIconSet("up"),"",this,"cdUpButton"); + cdUpButton ->setFixedSize( QSize( 20, 20 ) ); + connect( cdUpButton ,SIGNAL(released()),this,SLOT( upDir()) ); + cdUpButton ->setFlat(TRUE); + layout->addMultiCellWidget( cdUpButton, 0, 0, 3, 3 ); + cdUpButton->hide(); + +// docButton = new QPushButton(Resource::loadIconSet("DocsIcon"),"",this,"docsButton"); +// docButton->setFixedSize( QSize( 20, 20 ) ); +// connect( docButton,SIGNAL(released()),this,SLOT( docButtonPushed()) ); +// docButton->setFlat(TRUE); +// layout->addMultiCellWidget( docButton, 0, 0, 6, 6 ); + + homeButton = new QPushButton( Resource::loadIconSet("home"),"",this,"homeButton"); + homeButton->setFixedSize( QSize( 20, 20 ) ); + connect(homeButton,SIGNAL(released()),this,SLOT(homeButtonPushed()) ); + homeButton->setFlat(TRUE); + layout->addMultiCellWidget( homeButton, 0, 0, 4, 4); + homeButton->hide(); + TabWidget = new QTabWidget( this, "TabWidget" ); - layout->addMultiCellWidget( TabWidget, 1, 1, 0, 3 ); + layout->addMultiCellWidget( TabWidget, 1, 1, 0, 4 ); // TabWidget->setTabShape(QTabWidget::Triangular); tab = new QWidget( TabWidget, "tab" ); tabLayout = new QGridLayout( tab ); tabLayout->setSpacing( 2); @@ -245,24 +269,25 @@ OpieFtp::OpieFtp( ) currentDir.setFilter( QDir::Files | QDir::Dirs/* | QDir::Hidden*/ | QDir::All); currentDir.setPath( QDir::currentDirPath()); // currentDir.setSorting(/* QDir::Size*/ /*| QDir::Reversed | */QDir::DirsFirst); currentPathCombo = new QComboBox( FALSE, this, "currentPathCombo" ); - layout->addMultiCellWidget( currentPathCombo, 3, 3, 0, 3 ); + layout->addMultiCellWidget( currentPathCombo, 3, 3, 0, 4); + currentPathCombo->setEditable(TRUE); currentPathCombo->lineEdit()->setText( currentDir.canonicalPath()); connect( currentPathCombo, SIGNAL( activated( const QString & ) ), this, SLOT( currentPathComboActivated( const QString & ) ) ); connect( currentPathCombo->lineEdit(),SIGNAL(returnPressed()), this,SLOT(currentPathComboChanged())); ProgressBar = new QProgressBar( this, "ProgressBar" ); - layout->addMultiCellWidget( ProgressBar, 4, 4, 0, 3 ); + layout->addMultiCellWidget( ProgressBar, 4, 4, 0, 4); // fillCombos(); filterStr="*"; b=FALSE; populateLocalView(); @@ -291,27 +316,38 @@ void OpieFtp::cleanUp() exit(0); } void OpieFtp::tabChanged(QWidget *w) { if (TabWidget->currentPageIndex() == 0) { - currentPathCombo->lineEdit()->setText( currentDir.canonicalPath()); - tabMenu->setItemChecked(tabMenu->idAt(0),TRUE); - tabMenu->setItemChecked(tabMenu->idAt(1),FALSE); - tabMenu->setItemChecked(tabMenu->idAt(2),FALSE); + currentPathCombo->lineEdit()->setText( currentDir.canonicalPath()); + tabMenu->setItemChecked(tabMenu->idAt(0),TRUE); + tabMenu->setItemChecked(tabMenu->idAt(1),FALSE); + tabMenu->setItemChecked(tabMenu->idAt(2),FALSE); + if(cdUpButton->isHidden()) + cdUpButton->show(); + if(homeButton->isHidden()) + homeButton->show(); + } - if (TabWidget->currentPageIndex() == 1) { - currentPathCombo->lineEdit()->setText( currentRemoteDir ); - tabMenu->setItemChecked(tabMenu->idAt(1),TRUE); - tabMenu->setItemChecked(tabMenu->idAt(0),FALSE); - tabMenu->setItemChecked(tabMenu->idAt(2),FALSE); + if (TabWidget->currentPageIndex() == 1) { + currentPathCombo->lineEdit()->setText( currentRemoteDir ); + tabMenu->setItemChecked(tabMenu->idAt(1),TRUE); + tabMenu->setItemChecked(tabMenu->idAt(0),FALSE); + tabMenu->setItemChecked(tabMenu->idAt(2),FALSE); + if(cdUpButton->isHidden()) + cdUpButton->show(); + homeButton->hide(); + } - if (TabWidget->currentPageIndex() == 2) { - tabMenu->setItemChecked(tabMenu->idAt(2),TRUE); - tabMenu->setItemChecked(tabMenu->idAt(0),FALSE); - tabMenu->setItemChecked(tabMenu->idAt(1),FALSE); + if (TabWidget->currentPageIndex() == 2) { + tabMenu->setItemChecked(tabMenu->idAt(2),TRUE); + tabMenu->setItemChecked(tabMenu->idAt(0),FALSE); + tabMenu->setItemChecked(tabMenu->idAt(1),FALSE); + cdUpButton->hide(); + homeButton->hide(); } } void OpieFtp::newConnection() { UsernameComboBox->lineEdit()->setText(""); @@ -339,13 +375,13 @@ void OpieFtp::connectorBtnToggled(bool On) } } void OpieFtp::connector() { - QCopEnvelope ( "QPE/System", "busy()" ); +// 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(); @@ -382,13 +418,13 @@ void OpieFtp::connector() return ; } remoteDirList("/") ; setCaption(ftp_host); writeConfig(); connectServerBtn->setText( tr("Disconnect")); - QCopEnvelope ( "QPE/System", "notBusy()" ); +// QCopEnvelope ( "QPE/System", "notBusy()" ); } void OpieFtp::disConnector() { if(conn) FtpQuit(conn); @@ -399,13 +435,13 @@ void OpieFtp::disConnector() connectServerBtn->setOn(FALSE); } void OpieFtp::localUpload() { int fsz; - QCopEnvelope ( "QPE/System", "busy()" ); +// QCopEnvelope ( "QPE/System", "busy()" ); // qApp->processEvents(); QList<QListViewItem> * getSelectedItems( QListView * Local_View ); QListViewItemIterator it( Local_View ); for ( ; it.current(); ++it ) { if ( it.current()->isSelected() ) { QString strItem = it.current()->text(0); @@ -435,13 +471,14 @@ void OpieFtp::localUpload() nullifyCallBack(); } //end currentSelected it.current()->setSelected(FALSE); } TabWidget->setCurrentPage(1); remoteDirList( (const QString &)currentRemoteDir); //this also calls populate - QCopEnvelope ( "QPE/System", "notBusy()" ); +// QCopEnvelope ( "QPE/System", "notBusy()" ); + } void OpieFtp::nullifyCallBack() { FtpOptions(FTPLIB_CALLBACK, NULL, conn); FtpOptions(FTPLIB_IDLETIME, NULL, conn); @@ -450,13 +487,13 @@ void OpieFtp::nullifyCallBack() } void OpieFtp::remoteDownload() { // qApp->processEvents(); int fsz; - QCopEnvelope ( "QPE/System", "busy()" ); +// QCopEnvelope ( "QPE/System", "busy()" ); QList<QListViewItem> * getSelectedItems( QListView * Remote_View ); QListViewItemIterator it( Remote_View ); for ( ; it.current(); ++it ) { if ( it.current()->isSelected() ) { QString strItem = it.current()->text(0); @@ -489,49 +526,50 @@ void OpieFtp::remoteDownload() nullifyCallBack(); } it.current()->setSelected(FALSE); } TabWidget->setCurrentPage(0); populateLocalView(); - QCopEnvelope ( "QPE/System", "notBusy()" ); +// QCopEnvelope ( "QPE/System", "notBusy()" ); + } bool OpieFtp::remoteDirList(const QString &dir) { QString tmp = QDir::homeDirPath(); if(tmp.right(1) != "/") tmp+="/._temp"; else tmp+="._temp"; // qDebug("Listing remote dir "+tmp); - QCopEnvelope ( "QPE/System", "busy()" ); +// QCopEnvelope ( "QPE/System", "busy()" ); if (!FtpDir( tmp.latin1(), dir.latin1(), conn) ) { 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); return false; } populateRemoteView() ; - QCopEnvelope ( "QPE/System", "notBusy()" ); +// QCopEnvelope ( "QPE/System", "notBusy()" ); return true; } bool OpieFtp::remoteChDir(const QString &dir) { - QCopEnvelope ( "QPE/System", "busy()" ); +// QCopEnvelope ( "QPE/System", "busy()" ); if (!FtpChdir( dir.latin1(), conn )) { QString msg; msg.sprintf(tr("Unable to change directories\n")+dir+"\n%s",FtpLastResponse(conn)); msg.replace(QRegExp(":"),"\n"); QMessageBox::message(tr("Note"),msg); // qDebug(msg); - QCopEnvelope ( "QPE/System", "notBusy()" ); +// QCopEnvelope ( "QPE/System", "notBusy()" ); return FALSE; } - QCopEnvelope ( "QPE/System", "notBusy()" ); +// QCopEnvelope ( "QPE/System", "notBusy()" ); return TRUE; } void OpieFtp::populateLocalView() { Local_View->clear(); @@ -596,12 +634,13 @@ void OpieFtp::populateLocalView() isDir=FALSE; ++it; } Local_View->setSorting( 3,FALSE); currentPathCombo->lineEdit()->setText( currentDir.canonicalPath() ); fillCombo( (const QString &)currentDir); + } bool OpieFtp::populateRemoteView( ) { // qDebug("populate remoteview"); QString sfile=QDir::homeDirPath(); @@ -696,13 +735,13 @@ void OpieFtp::remoteListClicked(QListViewItem *selectedItem) // qDebug("RemoteCurrentDir1 "+oldRemoteCurrentDir); } else { currentRemoteDir = currentRemoteDir+strItem; } } else { - QCopEnvelope ( "QPE/System", "notBusy()" ); +// QCopEnvelope ( "QPE/System", "notBusy()" ); return; } } remoteDirList( (const QString &)currentRemoteDir); //this also calls populate if(currentRemoteDir.right(1) !="/") currentRemoteDir +="/"; @@ -748,12 +787,13 @@ void OpieFtp::localListClicked(QListViewItem *selectedItem) return; } } //end not symlink chdir(strItem.latin1()); } } + } void OpieFtp::doLocalCd() { localListClicked( Local_View->currentItem()); } @@ -885,28 +925,28 @@ void OpieFtp::remoteMakDir() InputDialog *fileDlg; fileDlg = new InputDialog(this,tr("Make Directory"),TRUE, 0); fileDlg->exec(); if( fileDlg->result() == 1 ) { QString filename = fileDlg->LineEdit1->text();//+".playlist"; QString tmp=currentRemoteDir+filename; - QCopEnvelope ( "QPE/System", "busy()" ); +// QCopEnvelope ( "QPE/System", "busy()" ); if(FtpMkdir( tmp.latin1(), conn) == 0) { QString msg; msg.sprintf(tr("Unable to make directory\n")+"%s",FtpLastResponse(conn)); msg.replace(QRegExp(":"),"\n"); QMessageBox::message(tr("Note"),msg); } - QCopEnvelope ( "QPE/System", "notBusy()" ); +// QCopEnvelope ( "QPE/System", "notBusy()" ); remoteDirList( (const QString &)currentRemoteDir); //this also calls populate } } void OpieFtp::remoteDelete() { QString f = Remote_View->currentItem()->text(0); - QCopEnvelope ( "QPE/System", "busy()" ); +// QCopEnvelope ( "QPE/System", "busy()" ); if( f.right(1) =="/") { QString path= currentRemoteDir+f; switch ( QMessageBox::warning(this,tr("Delete"),tr("Do you really want to delete\n")+f+"?" ,tr("Yes"),tr("No"),0,0,1) ) { case 0: { f=currentDir.canonicalPath()+"/"+f; @@ -933,33 +973,33 @@ void OpieFtp::remoteDelete() } remoteDirList( (const QString &)currentRemoteDir); //this also calls populate } break; }; } - QCopEnvelope ( "QPE/System", "notBusy()" ); +// QCopEnvelope ( "QPE/System", "notBusy()" ); } void OpieFtp::remoteRename() { QString curFile = Remote_View->currentItem()->text(0); InputDialog *fileDlg; fileDlg = new InputDialog(this,tr("Rename"),TRUE, 0); fileDlg->setTextEdit((const QString &)curFile); fileDlg->exec(); if( fileDlg->result() == 1 ) { QString oldName = currentRemoteDir +"/"+ curFile; QString newName = currentRemoteDir +"/"+ fileDlg->LineEdit1->text();//+".playlist"; - QCopEnvelope ( "QPE/System", "busy()" ); +// QCopEnvelope ( "QPE/System", "busy()" ); if(FtpRename( oldName.latin1(), newName.latin1(),conn) == 0) { QString msg; msg.sprintf(tr("Unable to rename file\n")+"%s",FtpLastResponse(conn)); msg.replace(QRegExp(":"),"\n"); QMessageBox::message(tr("Note"),msg); } - QCopEnvelope ( "QPE/System", "notBusy()" ); +// QCopEnvelope ( "QPE/System", "notBusy()" ); remoteDirList( (const QString &)currentRemoteDir); //this also calls populate } } void OpieFtp::localRename() { @@ -1188,6 +1228,62 @@ void OpieFtp::deleteServer() && cfg.readEntry(temp).find(username,0,TRUE) != -1 && !remoteServerStr.isEmpty()) { qDebug(temp); } } } + +void OpieFtp::upDir() +{ + if (TabWidget->currentPageIndex() == 0) { + QString current = currentDir.canonicalPath(); + QDir dir(current); + dir.cdUp(); + current = dir.canonicalPath(); + chdir( current.latin1() ); + currentDir.cd( current, TRUE); + populateLocalView(); + update(); + } else { + if( FtpCDUp( conn) == 0) { + QString msg; + msg.sprintf(tr("Unable to cd up\n")+"%s",FtpLastResponse(conn)); + msg.replace(QRegExp(":"),"\n"); + QMessageBox::message(tr("Note"),msg); +// qDebug(msg); + } + char path[256]; + if( FtpPwd( path,sizeof(path),conn) == 0) { //this is easier than fudging the string + QString msg; + msg.sprintf(tr("Unable to get working dir\n")+"%s",FtpLastResponse(conn)); + msg.replace(QRegExp(":"),"\n"); + QMessageBox::message(tr("Note"),msg); +// qDebug(msg); + } + currentRemoteDir=path; + remoteDirList( (const QString &)currentRemoteDir); //this also calls populate + if(currentRemoteDir.right(1) !="/") + currentRemoteDir +="/"; + currentPathCombo->lineEdit()->setText( currentRemoteDir); + fillRemoteCombo( (const QString &)currentRemoteDir); + populateRemoteView( ); + } +} + +void OpieFtp::docButtonPushed() { + QString current = QPEApplication::documentDir(); + chdir( current.latin1() ); + currentDir.cd( current, TRUE); + populateLocalView(); + update(); + +} + +void OpieFtp::homeButtonPushed() { + if (TabWidget->currentPageIndex() == 0) { + QString current = QDir::homeDirPath(); + chdir( current.latin1() ); + currentDir.cd( current, TRUE); + populateLocalView(); + update(); + } +} diff --git a/noncore/net/opieftp/opieftp.h b/noncore/net/opieftp/opieftp.h index 32862c7..6852b1c 100644 --- a/noncore/net/opieftp/opieftp.h +++ b/noncore/net/opieftp/opieftp.h @@ -57,16 +57,20 @@ public: QSpinBox* PortSpinBox; QPopupMenu *connectionMenu, *localMenu, *remoteMenu, *tabMenu; QDir currentDir; QString currentRemoteDir; QString filterStr; QListViewItem * item; - QPushButton *connectServerBtn; + QPushButton *connectServerBtn, *cdUpButton, *homeButton, *docButton; bool b; int currentServerConfig; protected slots: + void upDir(); + void homeButtonPushed(); + void docButtonPushed(); + void serverComboEdited(const QString & ); void showLocalMenu( QListViewItem *); void showRemoteMenu( QListViewItem *); void doLocalCd(); void doRemoteCd(); void localUpload(); |