summaryrefslogtreecommitdiff
path: root/noncore
Unidiff
Diffstat (limited to 'noncore') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/opieftp/opieftp.cpp109
-rw-r--r--noncore/net/opieftp/opieftp.h12
2 files changed, 98 insertions, 23 deletions
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
@@ -13,24 +13,25 @@
13 13
14#include "opieftp.h" 14#include "opieftp.h"
15#include "ftplib.h" 15#include "ftplib.h"
16#include "inputDialog.h" 16#include "inputDialog.h"
17 17
18#include <qpe/qpemenubar.h> 18#include <qpe/qpemenubar.h>
19#include <qpe/qpetoolbar.h> 19#include <qpe/qpetoolbar.h>
20#include <qpe/qpeapplication.h> 20#include <qpe/qpeapplication.h>
21#include <qpe/resource.h> 21#include <qpe/resource.h>
22#include <qpe/qcopenvelope_qws.h> 22#include <qpe/qcopenvelope_qws.h>
23#include <qpe/config.h> 23#include <qpe/config.h>
24 24
25#include <qstringlist.h>
25#include <qtextstream.h> 26#include <qtextstream.h>
26#include <qpushbutton.h> 27#include <qpushbutton.h>
27#include <qtoolbutton.h> 28#include <qtoolbutton.h>
28#include <qdatetime.h> 29#include <qdatetime.h>
29#include <qdir.h> 30#include <qdir.h>
30#include <qfile.h> 31#include <qfile.h>
31#include <qstring.h> 32#include <qstring.h>
32#include <qcombobox.h> 33#include <qcombobox.h>
33#include <qpopupmenu.h> 34#include <qpopupmenu.h>
34#include <qlistview.h> 35#include <qlistview.h>
35#include <qmainwindow.h> 36#include <qmainwindow.h>
36#include <qlabel.h> 37#include <qlabel.h>
@@ -227,29 +228,35 @@ OpieFtp::OpieFtp( )
227 228
228 QSpacerItem* spacer = new QSpacerItem( 20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding ); 229 QSpacerItem* spacer = new QSpacerItem( 20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding );
229 tabLayout_3->addItem( spacer, 5, 0 ); 230 tabLayout_3->addItem( spacer, 5, 0 );
230 231
231 TabWidget->insertTab( tab_3, tr( "Config" ) ); 232 TabWidget->insertTab( tab_3, tr( "Config" ) );
232 233
233 connect(TabWidget,SIGNAL(currentChanged(QWidget *)), 234 connect(TabWidget,SIGNAL(currentChanged(QWidget *)),
234 this,SLOT(tabChanged(QWidget*))); 235 this,SLOT(tabChanged(QWidget*)));
235 236
236 currentDir.setFilter( QDir::Files | QDir::Dirs/* | QDir::Hidden*/ | QDir::All); 237 currentDir.setFilter( QDir::Files | QDir::Dirs/* | QDir::Hidden*/ | QDir::All);
237 currentDir.setPath( QDir::currentDirPath()); 238 currentDir.setPath( QDir::currentDirPath());
238// currentDir.setSorting(/* QDir::Size*/ /*| QDir::Reversed | */QDir::DirsFirst); 239// currentDir.setSorting(/* QDir::Size*/ /*| QDir::Reversed | */QDir::DirsFirst);
239 currentPathEdit = new QLineEdit( "/", this, "currentPathEdit" );
240 layout->addMultiCellWidget( currentPathEdit, 3, 3, 0, 3 );
241 240
242 currentPathEdit->setText( currentDir.canonicalPath()); 241 currentPathCombo = new QComboBox( FALSE, this, "currentPathCombo" );
243 connect( currentPathEdit,SIGNAL(returnPressed()),this,SLOT(currentPathEditChanged())); 242 layout->addMultiCellWidget( currentPathCombo, 3, 3, 0, 3 );
243
244 currentPathCombo->lineEdit()->setText( currentDir.canonicalPath());
245
246 connect( currentPathCombo, SIGNAL( activated( const QString & ) ),
247 this, SLOT( currentPathComboChanged()currentPathCombo( const QString & ) ) );
248
249 connect( currentPathCombo->lineEdit(),SIGNAL(returnPressed()),
250 this,SLOT(currentPathComboChanged()));
244 251
245 ProgressBar = new QProgressBar( this, "ProgressBar" ); 252 ProgressBar = new QProgressBar( this, "ProgressBar" );
246 layout->addMultiCellWidget( ProgressBar, 4, 4, 0, 3 ); 253 layout->addMultiCellWidget( ProgressBar, 4, 4, 0, 3 );
247 254
248// fillCombos(); 255// fillCombos();
249 256
250#ifdef DEVELOPERS_VERSION 257#ifdef DEVELOPERS_VERSION
251 ServerComboBox->lineEdit()->setText( tr( "192.168.129.201" ) ); 258 ServerComboBox->lineEdit()->setText( tr( "192.168.129.201" ) );
252 UsernameComboBox->lineEdit()->setText("root"); 259 UsernameComboBox->lineEdit()->setText("root");
253 PortSpinBox->setValue( 4242); 260 PortSpinBox->setValue( 4242);
254 remotePath->setText( currentRemoteDir = "/"); 261 remotePath->setText( currentRemoteDir = "/");
255// ServerComboBox->lineEdit()->setText( tr( "llornkcor.com" ) ); 262// ServerComboBox->lineEdit()->setText( tr( "llornkcor.com" ) );
@@ -278,31 +285,31 @@ void OpieFtp::cleanUp()
278 if(sfile.right(1) != "/") 285 if(sfile.right(1) != "/")
279 sfile+="/._temp"; 286 sfile+="/._temp";
280 else 287 else
281 sfile+="._temp"; 288 sfile+="._temp";
282 QFile file( sfile); 289 QFile file( sfile);
283 if(file.exists()) 290 if(file.exists())
284 file.remove(); 291 file.remove();
285} 292}
286 293
287void OpieFtp::tabChanged(QWidget *w) 294void OpieFtp::tabChanged(QWidget *w)
288{ 295{
289 if (TabWidget->currentPageIndex() == 0) { 296 if (TabWidget->currentPageIndex() == 0) {
290 currentPathEdit->setText( currentDir.canonicalPath()); 297 currentPathCombo->lineEdit()->setText( currentDir.canonicalPath());
291 tabMenu->setItemChecked(tabMenu->idAt(0),TRUE); 298 tabMenu->setItemChecked(tabMenu->idAt(0),TRUE);
292 tabMenu->setItemChecked(tabMenu->idAt(1),FALSE); 299 tabMenu->setItemChecked(tabMenu->idAt(1),FALSE);
293 tabMenu->setItemChecked(tabMenu->idAt(2),FALSE); 300 tabMenu->setItemChecked(tabMenu->idAt(2),FALSE);
294 } 301 }
295 if (TabWidget->currentPageIndex() == 1) { 302 if (TabWidget->currentPageIndex() == 1) {
296 currentPathEdit->setText( currentRemoteDir ); 303 currentPathCombo->lineEdit()->setText( currentRemoteDir );
297 tabMenu->setItemChecked(tabMenu->idAt(1),TRUE); 304 tabMenu->setItemChecked(tabMenu->idAt(1),TRUE);
298 tabMenu->setItemChecked(tabMenu->idAt(0),FALSE); 305 tabMenu->setItemChecked(tabMenu->idAt(0),FALSE);
299 tabMenu->setItemChecked(tabMenu->idAt(2),FALSE); 306 tabMenu->setItemChecked(tabMenu->idAt(2),FALSE);
300 } 307 }
301 if (TabWidget->currentPageIndex() == 2) { 308 if (TabWidget->currentPageIndex() == 2) {
302 tabMenu->setItemChecked(tabMenu->idAt(2),TRUE); 309 tabMenu->setItemChecked(tabMenu->idAt(2),TRUE);
303 tabMenu->setItemChecked(tabMenu->idAt(0),FALSE); 310 tabMenu->setItemChecked(tabMenu->idAt(0),FALSE);
304 tabMenu->setItemChecked(tabMenu->idAt(1),FALSE); 311 tabMenu->setItemChecked(tabMenu->idAt(1),FALSE);
305 } 312 }
306} 313}
307 314
308void OpieFtp::newConnection() 315void OpieFtp::newConnection()
@@ -535,35 +542,55 @@ void OpieFtp::populateLocalView()
535 } else { 542 } else {
536// qDebug("Not a dir: "+currentDir.canonicalPath()+fileL); 543// qDebug("Not a dir: "+currentDir.canonicalPath()+fileL);
537 fileS.sprintf( "%10li", fi->size() ); 544 fileS.sprintf( "%10li", fi->size() );
538 fileL.sprintf( "%s",fi->fileName().data() ); 545 fileL.sprintf( "%s",fi->fileName().data() );
539 fileDate= fi->lastModified().toString(); 546 fileDate= fi->lastModified().toString();
540 if( QDir(QDir::cleanDirPath(currentDir.canonicalPath()+"/"+fileL)).exists() ) { 547 if( QDir(QDir::cleanDirPath(currentDir.canonicalPath()+"/"+fileL)).exists() ) {
541 fileL+="/"; 548 fileL+="/";
542 isDir=TRUE; 549 isDir=TRUE;
543// qDebug( fileL); 550// qDebug( fileL);
544 } 551 }
545 } 552 }
546 if(fileL !="./") { 553 if(fileL !="./") {
547 item = new QListViewItem( Local_View,fileL,fileS, fileDate); 554 item= new QListViewItem( ListView,fileL,fileS , fileDate);
548 if(isDir || fileL.find("/",0,TRUE) != -1) 555 QPixmap pm;
549 item->setPixmap( 0, Resource::loadPixmap( "folder" )); 556 pm= Resource::loadPixmap( "folder" );
550 else 557
551 item->setPixmap( 0, Resource::loadPixmap( "fileopen" )); 558 if(isDir || fileL.find("/",0,TRUE) != -1) {
559 if( !QDir( fi->filePath() ).isReadable())
560 pm = Resource::loadPixmap( "lockedfolder" );
561 item->setPixmap( 0,pm );
562 } else {
563 if( !fi->isReadable() )
564 pm = Resource::loadPixmap( "locked" );
565 else
566 pm = Resource::loadPixmap( "fileopen" );
567 item->setPixmap( 0,pm);
568 }
569 if( fileL.find("->",0,TRUE) != -1) {
570 // overlay link image
571 QPixmap lnk = Resource::loadPixmap( "symlink" );
572 QPainter painter( &pm );
573 painter.drawPixmap( pm.width()-lnk.width(), pm.height()-lnk.height(), lnk );
574 pm.setMask( pm.createHeuristicMask( FALSE ) );
575 item->setPixmap( 0, pm);
576 }
552 } 577 }
553 isDir=FALSE; 578 isDir=FALSE;
554 ++it; 579 ++it;
555 } 580 }
556 Local_View->setSorting( 3,FALSE); 581 Local_View->setSorting( 3,FALSE);
557 currentPathEdit->setText( currentDir.canonicalPath() ); 582 currentPathCombo->lineEdit()->setText( currentDir.canonicalPath() );
583 fillCombo( (const QString &)currentDir);
584
558} 585}
559 586
560bool OpieFtp::populateRemoteView( ) 587bool OpieFtp::populateRemoteView( )
561{ 588{
562// qDebug("populate remoteview"); 589// qDebug("populate remoteview");
563 QString sfile=QDir::homeDirPath(); 590 QString sfile=QDir::homeDirPath();
564 if(sfile.right(1) != "/") 591 if(sfile.right(1) != "/")
565 sfile+="/._temp"; 592 sfile+="/._temp";
566 else 593 else
567 sfile+="._temp"; 594 sfile+="._temp";
568 QFile file( sfile); 595 QFile file( sfile);
569 Remote_View->clear(); 596 Remote_View->clear();
@@ -652,25 +679,26 @@ void OpieFtp::remoteListClicked(QListViewItem *selectedItem)
652 qDebug("RemoteCurrentDir1 "+oldRemoteCurrentDir); 679 qDebug("RemoteCurrentDir1 "+oldRemoteCurrentDir);
653 680
654 } else { 681 } else {
655 currentRemoteDir = currentRemoteDir+strItem; 682 currentRemoteDir = currentRemoteDir+strItem;
656 } 683 }
657 } else { 684 } else {
658 qDebug("download "+strItem); 685 qDebug("download "+strItem);
659 } 686 }
660 } 687 }
661 remoteDirList( (const QString &)currentRemoteDir); //this also calls populate 688 remoteDirList( (const QString &)currentRemoteDir); //this also calls populate
662 if(currentRemoteDir.right(1) !="/") 689 if(currentRemoteDir.right(1) !="/")
663 currentRemoteDir +="/"; 690 currentRemoteDir +="/";
664 currentPathEdit->setText( currentRemoteDir ); 691 currentPathCombo->lineEdit()->setText( currentRemoteDir );
692 fillRemoteCombo( (const QString &)currentDir);
665 QCopEnvelope ( "QPE/System", "notBusy()" ); 693 QCopEnvelope ( "QPE/System", "notBusy()" );
666} 694}
667 695
668void OpieFtp::localListClicked(QListViewItem *selectedItem) 696void OpieFtp::localListClicked(QListViewItem *selectedItem)
669{ 697{
670 QString strItem=selectedItem->text(0); 698 QString strItem=selectedItem->text(0);
671 QString strSize=selectedItem->text(1); 699 QString strSize=selectedItem->text(1);
672 strSize=strSize.stripWhiteSpace(); 700 strSize=strSize.stripWhiteSpace();
673 if(strItem.find("@",0,TRUE) !=-1 || strItem.find("->",0,TRUE) !=-1 ) { //if symlink 701 if(strItem.find("@",0,TRUE) !=-1 || strItem.find("->",0,TRUE) !=-1 ) { //if symlink
674 // is symlink 702 // is symlink
675 QString strItem2 = strItem.right( (strItem.length() - strItem.find("->",0,TRUE)) - 4); 703 QString strItem2 = strItem.right( (strItem.length() - strItem.find("->",0,TRUE)) - 4);
676 if(QDir(strItem2).exists() ) { 704 if(QDir(strItem2).exists() ) {
@@ -923,45 +951,86 @@ void OpieFtp::localRename()
923 fileDlg = new InputDialog(this,tr("Rename"),TRUE, 0); 951 fileDlg = new InputDialog(this,tr("Rename"),TRUE, 0);
924 fileDlg->inputText = curFile; 952 fileDlg->inputText = curFile;
925 fileDlg->exec(); 953 fileDlg->exec();
926 if( fileDlg->result() == 1 ) { 954 if( fileDlg->result() == 1 ) {
927 QString oldname = currentDir.canonicalPath() + "/" + curFile; 955 QString oldname = currentDir.canonicalPath() + "/" + curFile;
928 QString newName = currentDir.canonicalPath() + "/" + fileDlg->LineEdit1->text();//+".playlist"; 956 QString newName = currentDir.canonicalPath() + "/" + fileDlg->LineEdit1->text();//+".playlist";
929 if( rename(oldname.latin1(), newName.latin1())== -1) 957 if( rename(oldname.latin1(), newName.latin1())== -1)
930 QMessageBox::message(tr("Note"),tr("Could not rename")); 958 QMessageBox::message(tr("Note"),tr("Could not rename"));
931 } 959 }
932 populateLocalView(); 960 populateLocalView();
933} 961}
934 962
935void OpieFtp::currentPathEditChanged() 963void OpieFtp::currentPathComboActivated(const QString & currentPath) {
964 if (TabWidget->currentPageIndex() == 0) {
965 chdir( currentPath.latin1() );
966 currentDir.cd( currentPath, TRUE);
967 populateLocalList();
968 update();
969 } else {
970// chdir( currentPath.latin1() );
971// currentDir.cd( currentPath, TRUE);
972// populateList();
973// update();
974
975 }
976}
977
978void OpieFtp::fillCombo(const QString &currentPath) {
979
980 currentPathComboBox->lineEdit()->setText(currentPath);
981 if( localDirPathStringList.grep(currentPath,TRUE).isEmpty() ) {
982 currentPathComboBox->clear();
983 localDirPathStringList.prepend(currentPath );
984 currentPathComboBox->insertStringList( localDirPathStringList,-1);
985 }
986 currentPathComboBox->lineEdit()->setText(currentPath);
987 if( remoteDirPathStringList.grep(currentPath,TRUE).isEmpty() ) {
988 currentPathComboBox->clear();
989 remoteDirPathStringList.prepend(currentPath );
990 currentPathComboBox->insertStringList( remoteDirPathStringList,-1);
991 }
992}
993
994void OpieFtp::fillRemoteCombo(const QString &currentPath) {
995
996 dirPathCombo->lineEdit()->setText(currentPath);
997 if( remoteDirPathStringList.grep(currentPath,TRUE).isEmpty() ) {
998 dirPathCombo->clear();
999 remoteDirPathStringList.prepend(currentPath );
1000 dirPathCombo->insertStringList( remoteDirPathStringList,-1);
1001 }
1002}
1003
1004void OpieFtp::currentPathComboChanged()
936{ 1005{
937 QString oldRemoteCurrentDir = currentRemoteDir; 1006 QString oldRemoteCurrentDir = currentRemoteDir;
938// qDebug("oldRemoteCurrentDir "+oldRemoteCurrentDir); 1007// qDebug("oldRemoteCurrentDir "+oldRemoteCurrentDir);
939 if (TabWidget->currentPageIndex() == 0) { 1008 if (TabWidget->currentPageIndex() == 0) {
940 if(QDir( currentPathEdit->text()).exists()) { 1009 if(QDir( currentPathCombo->lineEdit()->text()).exists()) {
941 currentDir.setPath( currentPathEdit->text() ); 1010 currentDir.setPath( currentPathCombo->lineEdit()->text() );
942 populateLocalView(); 1011 populateLocalView();
943 } else { 1012 } else {
944 QMessageBox::message(tr("Note"),tr("That directory does not exist")); 1013 QMessageBox::message(tr("Note"),tr("That directory does not exist"));
945 } 1014 }
946 } 1015 }
947 if (TabWidget->currentPageIndex() == 1) { 1016 if (TabWidget->currentPageIndex() == 1) {
948 currentRemoteDir = currentPathEdit->text(); 1017 currentRemoteDir = currentPathCombo->lineEdit()->text();
949 if(currentRemoteDir.right(1) !="/") { 1018 if(currentRemoteDir.right(1) !="/") {
950 currentRemoteDir = currentRemoteDir +"/"; 1019 currentRemoteDir = currentRemoteDir +"/";
951 currentPathEdit->setText( currentRemoteDir ); 1020 currentPathCombo->lineEdit()->setText( currentRemoteDir );
952 } 1021 }
953 if( !remoteChDir( (const QString &)currentRemoteDir) ) { 1022 if( !remoteChDir( (const QString &)currentRemoteDir) ) {
954 currentRemoteDir = oldRemoteCurrentDir; 1023 currentRemoteDir = oldRemoteCurrentDir;
955 currentPathEdit->setText( currentRemoteDir ); 1024 currentPathCombo->lineEdit()->setText( currentRemoteDir );
956 } 1025 }
957 1026
958 remoteDirList( (const QString &)currentRemoteDir); 1027 remoteDirList( (const QString &)currentRemoteDir);
959 } 1028 }
960} 1029}
961 1030
962void OpieFtp::switchToLocalTab() 1031void OpieFtp::switchToLocalTab()
963{ 1032{
964 TabWidget->setCurrentPage(0); 1033 TabWidget->setCurrentPage(0);
965} 1034}
966 1035
967void OpieFtp::switchToRemoteTab() 1036void OpieFtp::switchToRemoteTab()
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
@@ -28,38 +28,39 @@ class QListviewItem;
28class QLabel; 28class QLabel;
29class QProgressBar; 29class QProgressBar;
30class QSpinBox; 30class QSpinBox;
31class QTabWidget; 31class QTabWidget;
32class QWidget; 32class QWidget;
33class QPEToolBar; 33class QPEToolBar;
34class QPEMenuBar; 34class QPEMenuBar;
35class QPopupMenu; 35class QPopupMenu;
36class QFile; 36class QFile;
37class QListViewItem; 37class QListViewItem;
38class QLineEdit; 38class QLineEdit;
39class QPushButton; 39class QPushButton;
40class QStringList;
40 41
41class OpieFtp : public QMainWindow 42class OpieFtp : public QMainWindow
42{ 43{
43 Q_OBJECT 44 Q_OBJECT
44 45
45public: 46public:
46 OpieFtp( ); 47 OpieFtp( );
47 ~OpieFtp(); 48 ~OpieFtp();
48 49
49 QTabWidget *TabWidget; 50 QTabWidget *TabWidget;
50 QWidget *tab, *tab_2, *tab_3; 51 QWidget *tab, *tab_2, *tab_3;
51 QListView *Local_View, *Remote_View; 52 QListView *Local_View, *Remote_View;
52 53
53 QComboBox *UsernameComboBox, *ServerComboBox; 54 QComboBox *UsernameComboBox, *ServerComboBox, *currentPathCombo;
54 QLineEdit *PasswordEdit, *remotePath, *currentPathEdit; 55 QLineEdit *PasswordEdit, *remotePath, *currentPathEdit;
55 QLabel *TextLabel2, *TextLabel1, *TextLabel3, *TextLabel4;; 56 QLabel *TextLabel2, *TextLabel1, *TextLabel3, *TextLabel4;;
56 QSpinBox* PortSpinBox; 57 QSpinBox* PortSpinBox;
57 QPopupMenu *connectionMenu, *localMenu, *remoteMenu, *tabMenu; 58 QPopupMenu *connectionMenu, *localMenu, *remoteMenu, *tabMenu;
58 QDir currentDir; 59 QDir currentDir;
59 QString currentRemoteDir; 60 QString currentRemoteDir;
60 QString filterStr; 61 QString filterStr;
61 QListViewItem * item; 62 QListViewItem * item;
62 QPushButton *connectServerBtn; 63 QPushButton *connectServerBtn;
63 bool b; 64 bool b;
64 int currentServerConfig; 65 int currentServerConfig;
65protected slots: 66protected slots:
@@ -83,29 +84,34 @@ protected slots:
83 void ListPressed( int, QListViewItem *, const QPoint&, int); 84 void ListPressed( int, QListViewItem *, const QPoint&, int);
84 void RemoteListPressed( int, QListViewItem *, const QPoint&, int); 85 void RemoteListPressed( int, QListViewItem *, const QPoint&, int);
85 void localMakDir(); 86 void localMakDir();
86 void localDelete(); 87 void localDelete();
87 void remoteMakDir(); 88 void remoteMakDir();
88 void remoteDelete(); 89 void remoteDelete();
89 bool remoteDirList(const QString &); 90 bool remoteDirList(const QString &);
90 bool remoteChDir(const QString &); 91 bool remoteChDir(const QString &);
91 void tabChanged(QWidget*); 92 void tabChanged(QWidget*);
92 void cleanUp(); 93 void cleanUp();
93 void remoteRename(); 94 void remoteRename();
94 void localRename(); 95 void localRename();
95 void currentPathEditChanged(); 96 void currentPathComboChanged();
97 void fillCombos();
98 void fillCombo(const QString &);
99 void currentPathComboActivated(const QString &);
96 void switchToLocalTab(); 100 void switchToLocalTab();
97 void switchToRemoteTab(); 101 void switchToRemoteTab();
98 void switchToConfigTab(); 102 void switchToConfigTab();
99 void fillCombos(); 103 void fillCombo();
104 void fillRemoteCombo();
100 void serverComboSelected(int); 105 void serverComboSelected(int);
101 void deleteServer(); 106 void deleteServer();
102 void connectorBtnToggled(bool); 107 void connectorBtnToggled(bool);
103protected: 108protected:
109 QStringList remoteDirPathStringList, localDirPathStringList;
104 void nullifyCallBack(); 110 void nullifyCallBack();
105 QGridLayout* tabLayout; 111 QGridLayout* tabLayout;
106 QGridLayout* tabLayout_2; 112 QGridLayout* tabLayout_2;
107 QGridLayout* tabLayout_3; 113 QGridLayout* tabLayout_3;
108 114
109}; 115};
110 116
111#endif // OPIEFTP_H 117#endif // OPIEFTP_H