summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/apps/textedit/fileBrowser.cpp14
-rw-r--r--noncore/net/opieftp/opieftp.cpp109
-rw-r--r--noncore/net/opieftp/opieftp.h12
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
@@ -176,52 +176,60 @@ void fileBrowser::populateList()
while ( (fi=it.current()) ) {
if (fi->isSymLink() ){
QString symLink=fi->readLink();
// qDebug("Symlink detected "+symLink);
QFileInfo sym( symLink);
fileS.sprintf( "%10li", sym.size() );
fileL.sprintf( "%s -> %s", sym.fileName().data(),sym.absFilePath().data() );
fileDate = sym.lastModified().toString();
} else {
// qDebug("Not a dir: "+currentDir.canonicalPath()+fileL);
fileS.sprintf( "%10li", fi->size() );
fileL.sprintf( "%s",fi->fileName().data() );
fileDate= fi->lastModified().toString();
if( QDir(QDir::cleanDirPath(currentDir.canonicalPath()+"/"+fileL)).exists() ) {
fileL+="/";
isDir=TRUE;
// qDebug( fileL);
}
}
if(fileL !="./") {
item= new QListViewItem( ListView,fileL,fileS , fileDate);
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
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;
}
ListView->setSorting( 3, FALSE);
QString currentPath = currentDir.canonicalPath();
fillCombo( (const QString &)currentPath);
// dirPathCombo->lineEdit()->setText(currentPath);
// if( dirPathStringList.grep(currentPath,TRUE).isEmpty() ) {
// dirPathCombo->clear();
// dirPathStringList.prepend(currentPath );
// dirPathCombo->insertStringList( dirPathStringList,-1);
// }
}
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
@@ -1,48 +1,49 @@
/***************************************************************************
opieftp.cpp
-------------------
** Created: Sat Mar 9 23:33:09 2002
copyright : (C) 2002 by ljp
email : ljp@llornkcor.com
* This program is free software; you can redistribute it and/or modify *
* 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 DEVELOPERS_VERSION
#include "opieftp.h"
#include "ftplib.h"
#include "inputDialog.h"
#include <qpe/qpemenubar.h>
#include <qpe/qpetoolbar.h>
#include <qpe/qpeapplication.h>
#include <qpe/resource.h>
#include <qpe/qcopenvelope_qws.h>
#include <qpe/config.h>
+#include <qstringlist.h>
#include <qtextstream.h>
#include <qpushbutton.h>
#include <qtoolbutton.h>
#include <qdatetime.h>
#include <qdir.h>
#include <qfile.h>
#include <qstring.h>
#include <qcombobox.h>
#include <qpopupmenu.h>
#include <qlistview.h>
#include <qmainwindow.h>
#include <qlabel.h>
#include <qprogressbar.h>
#include <qspinbox.h>
#include <qtabwidget.h>
#include <qwidget.h>
#include <qlayout.h>
#include <qimage.h>
#include <qpixmap.h>
#include <qmessagebox.h>
#include <qlineedit.h>
#include <qregexp.h>
#include <unistd.h>
@@ -215,106 +216,112 @@ OpieFtp::OpieFtp( )
QPushButton *deleteServerBtn;
deleteServerBtn = new QPushButton( "Delete Server", tab_3 , "OpenButton" );
tabLayout_3->addMultiCellWidget( deleteServerBtn, 5, 5, 2, 3);
connect(deleteServerBtn,SIGNAL(clicked()),SLOT(deleteServer()));
connectServerBtn = new QPushButton( "Connect", tab_3 , "ConnectButton" );
tabLayout_3->addMultiCellWidget( connectServerBtn, 5, 5, 0, 1);
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 );
TabWidget->insertTab( tab_3, tr( "Config" ) );
connect(TabWidget,SIGNAL(currentChanged(QWidget *)),
this,SLOT(tabChanged(QWidget*)));
currentDir.setFilter( QDir::Files | QDir::Dirs/* | QDir::Hidden*/ | QDir::All);
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" );
layout->addMultiCellWidget( ProgressBar, 4, 4, 0, 3 );
// fillCombos();
#ifdef DEVELOPERS_VERSION
ServerComboBox->lineEdit()->setText( tr( "192.168.129.201" ) );
UsernameComboBox->lineEdit()->setText("root");
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
filterStr="*";
b=FALSE;
populateLocalView();
readConfig();
ServerComboBox->setCurrentItem(currentServerConfig);
TabWidget->setCurrentPage(2);
}
OpieFtp::~OpieFtp()
{
}
void OpieFtp::cleanUp()
{
if(conn)
FtpQuit(conn);
QString sfile=QDir::homeDirPath();
if(sfile.right(1) != "/")
sfile+="/._temp";
else
sfile+="._temp";
QFile file( sfile);
if(file.exists())
file.remove();
}
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);
tabMenu->setItemChecked(tabMenu->idAt(2),FALSE);
}
if (TabWidget->currentPageIndex() == 1) {
- currentPathEdit->setText( currentRemoteDir );
+ 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() == 2) {
tabMenu->setItemChecked(tabMenu->idAt(2),TRUE);
tabMenu->setItemChecked(tabMenu->idAt(0),FALSE);
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() ) {
@@ -523,59 +530,79 @@ void OpieFtp::populateLocalView()
bool isDir=FALSE;
const QFileInfoList *list = currentDir.entryInfoList( /*QDir::All*/ /*, QDir::SortByMask*/);
QFileInfoListIterator it(*list);
QFileInfo *fi;
while ( (fi=it.current()) ) {
if (fi->isSymLink() ){
QString symLink=fi->readLink();
// qDebug("Symlink detected "+symLink);
QFileInfo sym( symLink);
fileS.sprintf( "%10li", sym.size() );
fileL.sprintf( "%s -> %s", sym.fileName().data(),sym.absFilePath().data() );
fileDate = sym.lastModified().toString();
} else {
// qDebug("Not a dir: "+currentDir.canonicalPath()+fileL);
fileS.sprintf( "%10li", fi->size() );
fileL.sprintf( "%s",fi->fileName().data() );
fileDate= fi->lastModified().toString();
if( QDir(QDir::cleanDirPath(currentDir.canonicalPath()+"/"+fileL)).exists() ) {
fileL+="/";
isDir=TRUE;
// qDebug( fileL);
}
}
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);
+
}
bool OpieFtp::populateRemoteView( )
{
// qDebug("populate remoteview");
QString sfile=QDir::homeDirPath();
if(sfile.right(1) != "/")
sfile+="/._temp";
else
sfile+="._temp";
QFile file( sfile);
Remote_View->clear();
QString s, File_Name;
QListViewItem *itemDir=NULL, *itemFile=NULL;
QString fileL, fileS, fileDate;
if ( file.open(IO_ReadOnly)) {
QTextStream t( &file ); // use a text stream
while ( !t.eof()) {
s = t.readLine();
fileL = s.right(s.length()-55);
fileL = fileL.stripWhiteSpace();
if(s.left(1) == "d")
fileL = fileL+"/";
// fileL = "/"+fileL+"/";
@@ -640,49 +667,50 @@ void OpieFtp::remoteListClicked(QListViewItem *selectedItem)
strItem = strItem.stripWhiteSpace();
currentRemoteDir = strItem;
if( !remoteChDir( (const QString &)strItem)) {
currentRemoteDir = oldRemoteCurrentDir;
strItem="";
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);
} else {
currentRemoteDir = currentRemoteDir+strItem;
}
} else {
qDebug("download "+strItem);
}
}
remoteDirList( (const QString &)currentRemoteDir); //this also calls populate
if(currentRemoteDir.right(1) !="/")
currentRemoteDir +="/";
- currentPathEdit->setText( currentRemoteDir );
+ currentPathCombo->lineEdit()->setText( currentRemoteDir );
+ fillRemoteCombo( (const QString &)currentDir);
QCopEnvelope ( "QPE/System", "notBusy()" );
}
void OpieFtp::localListClicked(QListViewItem *selectedItem)
{
QString strItem=selectedItem->text(0);
QString strSize=selectedItem->text(1);
strSize=strSize.stripWhiteSpace();
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);
if(QDir(strItem2).exists() ) {
currentDir.cd(strItem2, TRUE);
populateLocalView();
}
} else { // not a symlink
if(strItem.find(". .",0,TRUE) && strItem.find("/",0,TRUE)!=-1 ) {
if(QDir(QDir::cleanDirPath(currentDir.canonicalPath()+"/"+strItem)).exists() ) {
strItem=QDir::cleanDirPath(currentDir.canonicalPath()+"/"+strItem);
currentDir.cd(strItem,FALSE);
populateLocalView();
} else {
currentDir.cdUp();
populateLocalView();
@@ -911,69 +939,110 @@ void OpieFtp::remoteRename()
msg.replace(QRegExp(":"),"\n");
QMessageBox::message(tr("Note"),msg);
}
QCopEnvelope ( "QPE/System", "notBusy()" );
remoteDirList( (const QString &)currentRemoteDir); //this also calls populate
}
}
void OpieFtp::localRename()
{
QString curFile = Local_View->currentItem()->text(0);
InputDialog *fileDlg;
fileDlg = new InputDialog(this,tr("Rename"),TRUE, 0);
fileDlg->inputText = curFile;
fileDlg->exec();
if( fileDlg->result() == 1 ) {
QString oldname = currentDir.canonicalPath() + "/" + curFile;
QString newName = currentDir.canonicalPath() + "/" + fileDlg->LineEdit1->text();//+".playlist";
if( rename(oldname.latin1(), newName.latin1())== -1)
QMessageBox::message(tr("Note"),tr("Could not rename"));
}
populateLocalView();
}
-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 &currentPath) {
+
+ 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 &currentPath) {
+
+ 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 {
QMessageBox::message(tr("Note"),tr("That directory does not exist"));
}
}
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 );
}
remoteDirList( (const QString &)currentRemoteDir);
}
}
void OpieFtp::switchToLocalTab()
{
TabWidget->setCurrentPage(0);
}
void OpieFtp::switchToRemoteTab()
{
TabWidget->setCurrentPage(1);
}
void OpieFtp::switchToConfigTab()
{
TabWidget->setCurrentPage(2);
}
void OpieFtp::readConfig()
{
fillCombos();
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
@@ -16,96 +16,102 @@
#include <qdialog.h>
#include <qmainwindow.h>
#include <qdir.h>
#include <qstring.h>
#include <qpoint.h>
class QVBoxLayout;
class QHBoxLayout;
class QGridLayout;
class QComboBox;
class QListView;
class QListviewItem;
class QLabel;
class QProgressBar;
class QSpinBox;
class QTabWidget;
class QWidget;
class QPEToolBar;
class QPEMenuBar;
class QPopupMenu;
class QFile;
class QListViewItem;
class QLineEdit;
class QPushButton;
+class QStringList;
class OpieFtp : public QMainWindow
{
Q_OBJECT
public:
OpieFtp( );
~OpieFtp();
QTabWidget *TabWidget;
QWidget *tab, *tab_2, *tab_3;
QListView *Local_View, *Remote_View;
- QComboBox *UsernameComboBox, *ServerComboBox;
+ QComboBox *UsernameComboBox, *ServerComboBox, *currentPathCombo;
QLineEdit *PasswordEdit, *remotePath, *currentPathEdit;
QLabel *TextLabel2, *TextLabel1, *TextLabel3, *TextLabel4;;
QSpinBox* PortSpinBox;
QPopupMenu *connectionMenu, *localMenu, *remoteMenu, *tabMenu;
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();
void localUpload();
void remoteDownload();
void newConnection();
void connector();
void disConnector();
void populateLocalView();
bool populateRemoteView();
void showHidden();
void writeConfig();
void readConfig();
void localListClicked(QListViewItem *);
void remoteListClicked(QListViewItem *);
void ListPressed( int, QListViewItem *, const QPoint&, int);
void RemoteListPressed( int, QListViewItem *, const QPoint&, int);
void localMakDir();
void localDelete();
void remoteMakDir();
void remoteDelete();
bool remoteDirList(const QString &);
bool remoteChDir(const QString &);
void tabChanged(QWidget*);
void cleanUp();
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;
QGridLayout* tabLayout_2;
QGridLayout* tabLayout_3;
};
#endif // OPIEFTP_H