-rw-r--r-- | core/apps/textedit/fileBrowser.cpp | 14 | ||||
-rw-r--r-- | noncore/net/opieftp/opieftp.cpp | 109 | ||||
-rw-r--r-- | noncore/net/opieftp/opieftp.h | 12 |
3 files changed, 109 insertions, 26 deletions
diff --git a/core/apps/textedit/fileBrowser.cpp b/core/apps/textedit/fileBrowser.cpp index 41e800c..acd50c2 100644 --- a/core/apps/textedit/fileBrowser.cpp +++ b/core/apps/textedit/fileBrowser.cpp @@ -198,8 +198,16 @@ void fileBrowser::populateList() QPixmap pm; pm= Resource::loadPixmap( "folder" ); - if(isDir || fileL.find("/",0,TRUE) != -1) + + if(isDir || fileL.find("/",0,TRUE) != -1) { + if( !QDir( fi->filePath() ).isReadable()) + pm = Resource::loadPixmap( "lockedfolder" ); item->setPixmap( 0,pm ); - else - item->setPixmap( 0, Resource::loadPixmap( "fileopen" )); + } else { + if( !fi->isReadable() ) + pm = Resource::loadPixmap( "locked" ); + else + pm = Resource::loadPixmap( "fileopen" ); + item->setPixmap( 0,pm); + } if( fileL.find("->",0,TRUE) != -1) { // overlay link image diff --git a/noncore/net/opieftp/opieftp.cpp b/noncore/net/opieftp/opieftp.cpp index e97a9bf..37e2134 100644 --- a/noncore/net/opieftp/opieftp.cpp +++ b/noncore/net/opieftp/opieftp.cpp @@ -23,4 +23,5 @@ #include <qpe/config.h> +#include <qstringlist.h> #include <qtextstream.h> #include <qpushbutton.h> @@ -237,9 +238,15 @@ OpieFtp::OpieFtp( ) currentDir.setPath( QDir::currentDirPath()); // currentDir.setSorting(/* QDir::Size*/ /*| QDir::Reversed | */QDir::DirsFirst); - currentPathEdit = new QLineEdit( "/", this, "currentPathEdit" ); - layout->addMultiCellWidget( currentPathEdit, 3, 3, 0, 3 ); - currentPathEdit->setText( currentDir.canonicalPath()); - connect( currentPathEdit,SIGNAL(returnPressed()),this,SLOT(currentPathEditChanged())); + currentPathCombo = new QComboBox( FALSE, this, "currentPathCombo" ); + layout->addMultiCellWidget( currentPathCombo, 3, 3, 0, 3 ); + + currentPathCombo->lineEdit()->setText( currentDir.canonicalPath()); + + connect( currentPathCombo, SIGNAL( activated( const QString & ) ), + this, SLOT( currentPathComboChanged()currentPathCombo( const QString & ) ) ); + + connect( currentPathCombo->lineEdit(),SIGNAL(returnPressed()), + this,SLOT(currentPathComboChanged())); ProgressBar = new QProgressBar( this, "ProgressBar" ); @@ -288,5 +295,5 @@ void OpieFtp::tabChanged(QWidget *w) { if (TabWidget->currentPageIndex() == 0) { - currentPathEdit->setText( currentDir.canonicalPath()); + currentPathCombo->lineEdit()->setText( currentDir.canonicalPath()); tabMenu->setItemChecked(tabMenu->idAt(0),TRUE); tabMenu->setItemChecked(tabMenu->idAt(1),FALSE); @@ -294,5 +301,5 @@ void OpieFtp::tabChanged(QWidget *w) } if (TabWidget->currentPageIndex() == 1) { - currentPathEdit->setText( currentRemoteDir ); + currentPathCombo->lineEdit()->setText( currentRemoteDir ); tabMenu->setItemChecked(tabMenu->idAt(1),TRUE); tabMenu->setItemChecked(tabMenu->idAt(0),FALSE); @@ -545,15 +552,35 @@ void OpieFtp::populateLocalView() } if(fileL !="./") { - item = new QListViewItem( Local_View,fileL,fileS, fileDate); - if(isDir || fileL.find("/",0,TRUE) != -1) - item->setPixmap( 0, Resource::loadPixmap( "folder" )); - else - item->setPixmap( 0, Resource::loadPixmap( "fileopen" )); + item= new QListViewItem( ListView,fileL,fileS , fileDate); + QPixmap pm; + pm= Resource::loadPixmap( "folder" ); + + if(isDir || fileL.find("/",0,TRUE) != -1) { + if( !QDir( fi->filePath() ).isReadable()) + pm = Resource::loadPixmap( "lockedfolder" ); + item->setPixmap( 0,pm ); + } else { + if( !fi->isReadable() ) + pm = Resource::loadPixmap( "locked" ); + else + pm = Resource::loadPixmap( "fileopen" ); + item->setPixmap( 0,pm); + } + if( fileL.find("->",0,TRUE) != -1) { + // overlay link image + QPixmap lnk = Resource::loadPixmap( "symlink" ); + QPainter painter( &pm ); + painter.drawPixmap( pm.width()-lnk.width(), pm.height()-lnk.height(), lnk ); + pm.setMask( pm.createHeuristicMask( FALSE ) ); + item->setPixmap( 0, pm); + } } isDir=FALSE; ++it; - } + } Local_View->setSorting( 3,FALSE); - currentPathEdit->setText( currentDir.canonicalPath() ); + currentPathCombo->lineEdit()->setText( currentDir.canonicalPath() ); + fillCombo( (const QString &)currentDir); + } @@ -662,5 +689,6 @@ void OpieFtp::remoteListClicked(QListViewItem *selectedItem) if(currentRemoteDir.right(1) !="/") currentRemoteDir +="/"; - currentPathEdit->setText( currentRemoteDir ); + currentPathCombo->lineEdit()->setText( currentRemoteDir ); + fillRemoteCombo( (const QString &)currentDir); QCopEnvelope ( "QPE/System", "notBusy()" ); } @@ -933,11 +961,52 @@ void OpieFtp::localRename() } -void OpieFtp::currentPathEditChanged() +void OpieFtp::currentPathComboActivated(const QString & currentPath) { + if (TabWidget->currentPageIndex() == 0) { + chdir( currentPath.latin1() ); + currentDir.cd( currentPath, TRUE); + populateLocalList(); + update(); + } else { +// chdir( currentPath.latin1() ); +// currentDir.cd( currentPath, TRUE); +// populateList(); +// update(); + + } +} + +void OpieFtp::fillCombo(const QString ¤tPath) { + + currentPathComboBox->lineEdit()->setText(currentPath); + if( localDirPathStringList.grep(currentPath,TRUE).isEmpty() ) { + currentPathComboBox->clear(); + localDirPathStringList.prepend(currentPath ); + currentPathComboBox->insertStringList( localDirPathStringList,-1); + } + currentPathComboBox->lineEdit()->setText(currentPath); + if( remoteDirPathStringList.grep(currentPath,TRUE).isEmpty() ) { + currentPathComboBox->clear(); + remoteDirPathStringList.prepend(currentPath ); + currentPathComboBox->insertStringList( remoteDirPathStringList,-1); + } +} + +void OpieFtp::fillRemoteCombo(const QString ¤tPath) { + + dirPathCombo->lineEdit()->setText(currentPath); + if( remoteDirPathStringList.grep(currentPath,TRUE).isEmpty() ) { + dirPathCombo->clear(); + remoteDirPathStringList.prepend(currentPath ); + dirPathCombo->insertStringList( remoteDirPathStringList,-1); + } +} + +void OpieFtp::currentPathComboChanged() { QString oldRemoteCurrentDir = currentRemoteDir; // qDebug("oldRemoteCurrentDir "+oldRemoteCurrentDir); if (TabWidget->currentPageIndex() == 0) { - if(QDir( currentPathEdit->text()).exists()) { - currentDir.setPath( currentPathEdit->text() ); + if(QDir( currentPathCombo->lineEdit()->text()).exists()) { + currentDir.setPath( currentPathCombo->lineEdit()->text() ); populateLocalView(); } else { @@ -946,12 +1015,12 @@ void OpieFtp::currentPathEditChanged() } if (TabWidget->currentPageIndex() == 1) { - currentRemoteDir = currentPathEdit->text(); + currentRemoteDir = currentPathCombo->lineEdit()->text(); if(currentRemoteDir.right(1) !="/") { currentRemoteDir = currentRemoteDir +"/"; - currentPathEdit->setText( currentRemoteDir ); + currentPathCombo->lineEdit()->setText( currentRemoteDir ); } if( !remoteChDir( (const QString &)currentRemoteDir) ) { currentRemoteDir = oldRemoteCurrentDir; - currentPathEdit->setText( currentRemoteDir ); + currentPathCombo->lineEdit()->setText( currentRemoteDir ); } diff --git a/noncore/net/opieftp/opieftp.h b/noncore/net/opieftp/opieftp.h index 52ed885..57599b7 100644 --- a/noncore/net/opieftp/opieftp.h +++ b/noncore/net/opieftp/opieftp.h @@ -38,4 +38,5 @@ class QListViewItem; class QLineEdit; class QPushButton; +class QStringList; class OpieFtp : public QMainWindow @@ -51,5 +52,5 @@ public: QListView *Local_View, *Remote_View; - QComboBox *UsernameComboBox, *ServerComboBox; + QComboBox *UsernameComboBox, *ServerComboBox, *currentPathCombo; QLineEdit *PasswordEdit, *remotePath, *currentPathEdit; QLabel *TextLabel2, *TextLabel1, *TextLabel3, *TextLabel4;; @@ -93,13 +94,18 @@ protected slots: void remoteRename(); void localRename(); - void currentPathEditChanged(); + void currentPathComboChanged(); + void fillCombos(); + void fillCombo(const QString &); + void currentPathComboActivated(const QString &); void switchToLocalTab(); void switchToRemoteTab(); void switchToConfigTab(); - void fillCombos(); + void fillCombo(); + void fillRemoteCombo(); void serverComboSelected(int); void deleteServer(); void connectorBtnToggled(bool); protected: + QStringList remoteDirPathStringList, localDirPathStringList; void nullifyCallBack(); QGridLayout* tabLayout; |