-rw-r--r-- | noncore/net/opieftp/opieftp.cpp | 153 |
1 files changed, 84 insertions, 69 deletions
diff --git a/noncore/net/opieftp/opieftp.cpp b/noncore/net/opieftp/opieftp.cpp index fd6b028..907a812 100644 --- a/noncore/net/opieftp/opieftp.cpp +++ b/noncore/net/opieftp/opieftp.cpp | |||
@@ -100,9 +100,9 @@ OpieFtp::OpieFtp( ) | |||
100 | localMenu->insertItem( tr( "Rename" ), this, SLOT( localRename() )); | 100 | localMenu->insertItem( tr( "Rename" ), this, SLOT( localRename() )); |
101 | localMenu->insertSeparator(); | 101 | localMenu->insertSeparator(); |
102 | localMenu->insertItem( tr( "Delete" ), this, SLOT( localDelete() )); | 102 | localMenu->insertItem( tr( "Delete" ), this, SLOT( localDelete() )); |
103 | localMenu->setCheckable(TRUE); | 103 | localMenu->setCheckable(TRUE); |
104 | 104 | ||
105 | remoteMenu->insertItem( tr( "Download" ), this, SLOT( remoteDownload() )); | 105 | remoteMenu->insertItem( tr( "Download" ), this, SLOT( remoteDownload() )); |
106 | remoteMenu->insertItem( tr( "Make Directory" ), this, SLOT( remoteMakDir() )); | 106 | remoteMenu->insertItem( tr( "Make Directory" ), this, SLOT( remoteMakDir() )); |
107 | remoteMenu->insertItem( tr( "Rename" ), this, SLOT( remoteRename() )); | 107 | remoteMenu->insertItem( tr( "Rename" ), this, SLOT( remoteRename() )); |
108 | remoteMenu->insertSeparator(); | 108 | remoteMenu->insertSeparator(); |
@@ -124,19 +124,21 @@ OpieFtp::OpieFtp( ) | |||
124 | tabLayout->setMargin( 2); | 124 | tabLayout->setMargin( 2); |
125 | 125 | ||
126 | Local_View = new QListView( tab, "Local_View" ); | 126 | Local_View = new QListView( tab, "Local_View" ); |
127 | // Local_View->setResizePolicy( QListView::AutoOneFit ); | 127 | // Local_View->setResizePolicy( QListView::AutoOneFit ); |
128 | Local_View->addColumn( tr("File"),120); | 128 | Local_View->addColumn( tr("File"),150); |
129 | Local_View->addColumn( tr("Size"),-1); | 129 | Local_View->addColumn( tr("Size"),-1); |
130 | Local_View->setColumnAlignment(1,QListView::AlignRight); | 130 | Local_View->setColumnAlignment(1,QListView::AlignRight); |
131 | Local_View->addColumn( tr("Date"),-1); | 131 | Local_View->addColumn( tr("Date"),-1); |
132 | Local_View->setColumnAlignment(2,QListView::AlignRight); | 132 | Local_View->setColumnAlignment(2,QListView::AlignRight); |
133 | Local_View->setAllColumnsShowFocus(TRUE); | 133 | Local_View->setAllColumnsShowFocus(TRUE); |
134 | Local_View->setMultiSelection( TRUE ); | ||
135 | |||
134 | QPEApplication::setStylusOperation( Local_View->viewport(),QPEApplication::RightOnHold); | 136 | QPEApplication::setStylusOperation( Local_View->viewport(),QPEApplication::RightOnHold); |
135 | 137 | ||
136 | tabLayout->addWidget( Local_View, 0, 0 ); | 138 | tabLayout->addWidget( Local_View, 0, 0 ); |
137 | 139 | ||
138 | connect( Local_View, SIGNAL( clicked( QListViewItem*)), | 140 | connect( Local_View, SIGNAL( doubleClicked( QListViewItem*)), |
139 | this,SLOT( localListClicked(QListViewItem *)) ); | 141 | this,SLOT( localListClicked(QListViewItem *)) ); |
140 | connect( Local_View, SIGNAL( mouseButtonPressed( int, QListViewItem *, const QPoint&, int)), | 142 | connect( Local_View, SIGNAL( mouseButtonPressed( int, QListViewItem *, const QPoint&, int)), |
141 | this,SLOT( ListPressed(int, QListViewItem *, const QPoint&, int)) ); | 143 | this,SLOT( ListPressed(int, QListViewItem *, const QPoint&, int)) ); |
142 | 144 | ||
@@ -147,19 +149,21 @@ OpieFtp::OpieFtp( ) | |||
147 | tabLayout_2->setSpacing( 2); | 149 | tabLayout_2->setSpacing( 2); |
148 | tabLayout_2->setMargin( 2); | 150 | tabLayout_2->setMargin( 2); |
149 | 151 | ||
150 | Remote_View = new QListView( tab_2, "Remote_View" ); | 152 | Remote_View = new QListView( tab_2, "Remote_View" ); |
151 | Remote_View->addColumn( tr("File"),120); | 153 | Remote_View->addColumn( tr("File"),150); |
152 | Remote_View->addColumn( tr("Size"),-1); | 154 | Remote_View->addColumn( tr("Size"),-1); |
153 | Remote_View->setColumnAlignment(1,QListView::AlignRight); | 155 | Remote_View->setColumnAlignment(1,QListView::AlignRight); |
154 | Remote_View->addColumn( tr("Date"),-1); | 156 | Remote_View->addColumn( tr("Date"),-1); |
155 | Remote_View->setColumnAlignment(2,QListView::AlignRight); | 157 | Remote_View->setColumnAlignment(2,QListView::AlignRight); |
156 | Remote_View->addColumn( tr("Dir"),-1); | 158 | Remote_View->addColumn( tr("Dir"),-1); |
157 | Remote_View->setColumnAlignment(4,QListView::AlignRight); | 159 | Remote_View->setColumnAlignment(4,QListView::AlignRight); |
158 | Remote_View->setAllColumnsShowFocus(TRUE); | 160 | Remote_View->setAllColumnsShowFocus(TRUE); |
161 | Remote_View->setMultiSelection( TRUE ); | ||
162 | |||
159 | QPEApplication::setStylusOperation( Remote_View->viewport(),QPEApplication::RightOnHold); | 163 | QPEApplication::setStylusOperation( Remote_View->viewport(),QPEApplication::RightOnHold); |
160 | 164 | ||
161 | connect( Remote_View, SIGNAL( clicked( QListViewItem*)), | 165 | connect( Remote_View, SIGNAL( doubleClicked( QListViewItem*)), |
162 | this,SLOT( remoteListClicked(QListViewItem *)) ); | 166 | this,SLOT( remoteListClicked(QListViewItem *)) ); |
163 | connect( Remote_View, SIGNAL( mouseButtonPressed( int, QListViewItem *, const QPoint&, int)), | 167 | connect( Remote_View, SIGNAL( mouseButtonPressed( int, QListViewItem *, const QPoint&, int)), |
164 | this,SLOT( RemoteListPressed(int, QListViewItem *, const QPoint&, int)) ); | 168 | this,SLOT( RemoteListPressed(int, QListViewItem *, const QPoint&, int)) ); |
165 | 169 | ||
@@ -398,89 +402,102 @@ void OpieFtp::disConnector() | |||
398 | currentRemoteDir="/"; | 402 | currentRemoteDir="/"; |
399 | Remote_View->clear(); | 403 | Remote_View->clear(); |
400 | connectServerBtn->setText( tr("Connect")); | 404 | connectServerBtn->setText( tr("Connect")); |
401 | connectServerBtn->setOn(FALSE); | 405 | connectServerBtn->setOn(FALSE); |
402 | 406 | ||
403 | } | 407 | } |
404 | 408 | ||
405 | void OpieFtp::localUpload() | 409 | void OpieFtp::localUpload() |
406 | { | 410 | { |
407 | int fsz; | 411 | int fsz; |
408 | QCopEnvelope ( "QPE/System", "busy()" ); | 412 | QCopEnvelope ( "QPE/System", "busy()" ); |
409 | // qApp->processEvents(); | 413 | // qApp->processEvents(); |
410 | QString strItem = Local_View->currentItem()->text(0); | 414 | QList<QListViewItem> * getSelectedItems( QListView * Local_View ); |
411 | QString localFile = currentDir.canonicalPath()+"/"+strItem; | 415 | QListViewItemIterator it( Local_View ); |
412 | QString remoteFile= currentRemoteDir+strItem; | 416 | for ( ; it.current(); ++it ) { |
413 | QFileInfo fi(localFile); | 417 | if ( it.current()->isSelected() ) { |
414 | if( !fi.isDir()) { | 418 | QString strItem = it.current()->text(0); |
415 | fsz=fi.size(); | 419 | QString localFile = currentDir.canonicalPath()+"/"+strItem; |
416 | ProgressBar->setTotalSteps(fsz); | 420 | QString remoteFile= currentRemoteDir+strItem; |
417 | 421 | QFileInfo fi(localFile); | |
418 | FtpOptions(FTPLIB_CALLBACK, (long) log_progress, conn); | 422 | if( !fi.isDir()) { |
419 | FtpOptions(FTPLIB_IDLETIME, (long) 1000, conn); | 423 | fsz=fi.size(); |
420 | FtpOptions(FTPLIB_CALLBACKARG, (long) &fsz, conn); | 424 | ProgressBar->setTotalSteps(fsz); |
421 | FtpOptions(FTPLIB_CALLBACKBYTES, (long) fsz/10, conn); | 425 | |
422 | qDebug("Put: %s, %s",localFile.latin1(),remoteFile.latin1()); | 426 | FtpOptions(FTPLIB_CALLBACK, (long) log_progress, conn); |
423 | 427 | FtpOptions(FTPLIB_IDLETIME, (long) 1000, conn); | |
424 | if( !FtpPut( localFile.latin1(), remoteFile.latin1(),FTPLIB_IMAGE, conn ) ) { | 428 | FtpOptions(FTPLIB_CALLBACKARG, (long) &fsz, conn); |
425 | QString msg; | 429 | FtpOptions(FTPLIB_CALLBACKBYTES, (long) fsz/10, conn); |
426 | msg.sprintf(tr("Unable to upload\n")+"%s",FtpLastResponse(conn)); | 430 | qDebug("Put: %s, %s",localFile.latin1(),remoteFile.latin1()); |
427 | msg.replace(QRegExp(":"),"\n"); | 431 | |
428 | QMessageBox::message(tr("Note"),msg); | 432 | if( !FtpPut( localFile.latin1(), remoteFile.latin1(),FTPLIB_IMAGE, conn ) ) { |
433 | QString msg; | ||
434 | msg.sprintf(tr("Unable to upload\n")+"%s",FtpLastResponse(conn)); | ||
435 | msg.replace(QRegExp(":"),"\n"); | ||
436 | QMessageBox::message(tr("Note"),msg); | ||
437 | } | ||
438 | } else { | ||
439 | QMessageBox::message(tr("Note"),tr("Cannot upload directories")); | ||
440 | } | ||
441 | ProgressBar->reset(); | ||
442 | nullifyCallBack(); | ||
443 | it.current()->setSelected(FALSE); | ||
444 | } //end currentSelected | ||
429 | } | 445 | } |
430 | ProgressBar->reset(); | 446 | TabWidget->setCurrentPage(1); |
431 | nullifyCallBack(); | 447 | remoteDirList( (const QString &)currentRemoteDir); //this also calls populate |
432 | } else { | 448 | QCopEnvelope ( "QPE/System", "notBusy()" ); |
433 | QMessageBox::message(tr("Note"),tr("Cannot upload directories")); | ||
434 | } | ||
435 | TabWidget->setCurrentPage(1); | ||
436 | remoteDirList( (const QString &)currentRemoteDir); //this also calls populate | ||
437 | QCopEnvelope ( "QPE/System", "notBusy()" ); | ||
438 | } | 449 | } |
439 | 450 | ||
440 | void OpieFtp::nullifyCallBack() | 451 | void OpieFtp::nullifyCallBack() |
441 | { | 452 | { |
442 | FtpOptions(FTPLIB_CALLBACK, NULL, conn); | 453 | FtpOptions(FTPLIB_CALLBACK, NULL, conn); |
443 | FtpOptions(FTPLIB_IDLETIME, NULL, conn); | 454 | FtpOptions(FTPLIB_IDLETIME, NULL, conn); |
444 | FtpOptions(FTPLIB_CALLBACKARG, NULL, conn); | 455 | FtpOptions(FTPLIB_CALLBACKARG, NULL, conn); |
445 | FtpOptions(FTPLIB_CALLBACKBYTES, NULL, conn); | 456 | FtpOptions(FTPLIB_CALLBACKBYTES, NULL, conn); |
446 | |||
447 | } | 457 | } |
448 | 458 | ||
449 | void OpieFtp::remoteDownload() | 459 | void OpieFtp::remoteDownload() |
450 | { | 460 | { |
451 | // qApp->processEvents(); | 461 | // qApp->processEvents(); |
452 | int fsz; | 462 | int fsz; |
453 | QCopEnvelope ( "QPE/System", "busy()" ); | 463 | QCopEnvelope ( "QPE/System", "busy()" ); |
454 | QString strItem = Remote_View->currentItem()->text(0); | ||
455 | // strItem=strItem.right(strItem.length()-1); | ||
456 | 464 | ||
457 | QString localFile = currentDir.canonicalPath(); | 465 | QList<QListViewItem> * getSelectedItems( QListView * Remote_View ); |
458 | if(localFile.right(1).find("/",0,TRUE) == -1) | 466 | QListViewItemIterator it( Remote_View ); |
459 | localFile += "/"; | 467 | for ( ; it.current(); ++it ) { |
460 | localFile += strItem; | 468 | if ( it.current()->isSelected() ) { |
469 | QString strItem = it.current()->text(0); | ||
470 | // strItem=strItem.right(strItem.length()-1); | ||
471 | QString localFile = currentDir.canonicalPath(); | ||
472 | if(localFile.right(1).find("/",0,TRUE) == -1) | ||
473 | localFile += "/"; | ||
474 | localFile += strItem; | ||
461 | // QString localFile = currentDir.canonicalPath()+"/"+strItem; | 475 | // QString localFile = currentDir.canonicalPath()+"/"+strItem; |
462 | QString remoteFile= currentRemoteDir+strItem; | 476 | QString remoteFile= currentRemoteDir+strItem; |
463 | if (!FtpSize( remoteFile.latin1(), &fsz, FTPLIB_ASCII, conn)) | 477 | if (!FtpSize( remoteFile.latin1(), &fsz, FTPLIB_ASCII, conn)) |
464 | fsz = 0; | 478 | fsz = 0; |
465 | QString temp; | 479 | QString temp; |
466 | temp.sprintf( remoteFile+" "+" %dkb", fsz); | 480 | temp.sprintf( remoteFile+" "+" %dkb", fsz); |
467 | 481 | ||
468 | ProgressBar->setTotalSteps(fsz); | 482 | ProgressBar->setTotalSteps(fsz); |
469 | FtpOptions(FTPLIB_CALLBACK, (long) log_progress, conn); | 483 | FtpOptions(FTPLIB_CALLBACK, (long) log_progress, conn); |
470 | FtpOptions(FTPLIB_IDLETIME, (long) 1000, conn); | 484 | FtpOptions(FTPLIB_IDLETIME, (long) 1000, conn); |
471 | FtpOptions(FTPLIB_CALLBACKARG, (long) &fsz, conn); | 485 | FtpOptions(FTPLIB_CALLBACKARG, (long) &fsz, conn); |
472 | FtpOptions(FTPLIB_CALLBACKBYTES, (long) fsz/10, conn); | 486 | FtpOptions(FTPLIB_CALLBACKBYTES, (long) fsz/10, conn); |
473 | qDebug("Get: %s, %s",localFile.latin1(),remoteFile.latin1()); | 487 | qDebug("Get: %s, %s",localFile.latin1(),remoteFile.latin1()); |
474 | 488 | ||
475 | if(!FtpGet( localFile.latin1(), remoteFile.latin1(),FTPLIB_IMAGE, conn ) ) { | 489 | if(!FtpGet( localFile.latin1(), remoteFile.latin1(),FTPLIB_IMAGE, conn ) ) { |
476 | QString msg; | 490 | QString msg; |
477 | msg.sprintf(tr("Unable to download \n")+"%s",FtpLastResponse(conn)); | 491 | msg.sprintf(tr("Unable to download \n")+"%s",FtpLastResponse(conn)); |
478 | msg.replace(QRegExp(":"),"\n"); | 492 | msg.replace(QRegExp(":"),"\n"); |
479 | QMessageBox::message(tr("Note"),msg); | 493 | QMessageBox::message(tr("Note"),msg); |
494 | } | ||
495 | ProgressBar->reset(); | ||
496 | nullifyCallBack(); | ||
497 | it.current()->setSelected(FALSE); | ||
498 | } | ||
480 | } | 499 | } |
481 | ProgressBar->reset(); | ||
482 | nullifyCallBack(); | ||
483 | TabWidget->setCurrentPage(0); | 500 | TabWidget->setCurrentPage(0); |
484 | populateLocalView(); | 501 | populateLocalView(); |
485 | QCopEnvelope ( "QPE/System", "notBusy()" ); | 502 | QCopEnvelope ( "QPE/System", "notBusy()" ); |
486 | } | 503 | } |
@@ -556,19 +573,19 @@ void OpieFtp::populateLocalView() | |||
556 | item= new QListViewItem( Local_View,fileL,fileS , fileDate); | 573 | item= new QListViewItem( Local_View,fileL,fileS , fileDate); |
557 | QPixmap pm; | 574 | QPixmap pm; |
558 | 575 | ||
559 | if(isDir || fileL.find("/",0,TRUE) != -1) { | 576 | if(isDir || fileL.find("/",0,TRUE) != -1) { |
560 | if( !QDir( fi->filePath() ).isReadable()) | 577 | if( !QDir( fi->filePath() ).isReadable()) |
561 | pm = Resource::loadPixmap( "lockedfolder" ); | 578 | pm = Resource::loadPixmap( "lockedfolder" ); |
562 | else | 579 | else |
563 | pm= Resource::loadPixmap( "folder" ); | 580 | pm= Resource::loadPixmap( "folder" ); |
564 | item->setPixmap( 0,pm ); | 581 | item->setPixmap( 0,pm ); |
565 | } else { | 582 | } else { |
566 | if( !fi->isReadable() ) | 583 | if( !fi->isReadable() ) |
567 | pm = Resource::loadPixmap( "locked" ); | 584 | pm = Resource::loadPixmap( "locked" ); |
568 | else { | 585 | else { |
569 | MimeType mt(fi->filePath()); | 586 | MimeType mt(fi->filePath()); |
570 | pm=mt.pixmap(); | 587 | pm=mt.pixmap(); //sets the correct pixmap for mimetype |
571 | if(pm.isNull()) | 588 | if(pm.isNull()) |
572 | pm = Resource::loadPixmap( "UnknownDocument-14" ); | 589 | pm = Resource::loadPixmap( "UnknownDocument-14" ); |
573 | item->setPixmap( 0,pm); | 590 | item->setPixmap( 0,pm); |
574 | } | 591 | } |
@@ -588,9 +605,8 @@ void OpieFtp::populateLocalView() | |||
588 | } | 605 | } |
589 | Local_View->setSorting( 3,FALSE); | 606 | Local_View->setSorting( 3,FALSE); |
590 | currentPathCombo->lineEdit()->setText( currentDir.canonicalPath() ); | 607 | currentPathCombo->lineEdit()->setText( currentDir.canonicalPath() ); |
591 | fillCombo( (const QString &)currentDir); | 608 | fillCombo( (const QString &)currentDir); |
592 | |||
593 | } | 609 | } |
594 | 610 | ||
595 | bool OpieFtp::populateRemoteView( ) | 611 | bool OpieFtp::populateRemoteView( ) |
596 | { | 612 | { |
@@ -642,9 +658,9 @@ bool OpieFtp::populateRemoteView( ) | |||
642 | file. remove(); | 658 | file. remove(); |
643 | } else | 659 | } else |
644 | qDebug("temp file not opened successfullly "+sfile); | 660 | qDebug("temp file not opened successfullly "+sfile); |
645 | Remote_View->setSorting( 4,TRUE); | 661 | Remote_View->setSorting( 4,TRUE); |
646 | return true; | 662 | return true; |
647 | } | 663 | } |
648 | 664 | ||
649 | void OpieFtp::remoteListClicked(QListViewItem *selectedItem) | 665 | void OpieFtp::remoteListClicked(QListViewItem *selectedItem) |
650 | { | 666 | { |
@@ -758,9 +774,9 @@ void OpieFtp::showHidden() | |||
758 | currentDir.setFilter( QDir::Files | QDir::Dirs | QDir::Hidden | QDir::All); | 774 | currentDir.setFilter( QDir::Files | QDir::Dirs | QDir::Hidden | QDir::All); |
759 | localMenu->setItemChecked(localMenu->idAt(0),TRUE); | 775 | localMenu->setItemChecked(localMenu->idAt(0),TRUE); |
760 | // currentDir.setSorting(/* QDir::Size*/ /*| QDir::Reversed | */QDir::DirsFirst); | 776 | // currentDir.setSorting(/* QDir::Size*/ /*| QDir::Reversed | */QDir::DirsFirst); |
761 | b=TRUE; | 777 | b=TRUE; |
762 | 778 | ||
763 | } else { | 779 | } else { |
764 | currentDir.setFilter( QDir::Files | QDir::Dirs/* | QDir::Hidden*/ | QDir::All); | 780 | currentDir.setFilter( QDir::Files | QDir::Dirs/* | QDir::Hidden*/ | QDir::All); |
765 | localMenu->setItemChecked(localMenu->idAt(0),FALSE); | 781 | localMenu->setItemChecked(localMenu->idAt(0),FALSE); |
766 | // currentDir.setSorting(/* QDir::Size*/ /*| QDir::Reversed | */QDir::DirsFirst); | 782 | // currentDir.setSorting(/* QDir::Size*/ /*| QDir::Reversed | */QDir::DirsFirst); |
@@ -855,9 +871,9 @@ void OpieFtp::localDelete() | |||
855 | case 1: | 871 | case 1: |
856 | // exit | 872 | // exit |
857 | break; | 873 | break; |
858 | }; | 874 | }; |
859 | 875 | ||
860 | } else { | 876 | } else { |
861 | switch ( QMessageBox::warning(this,tr("Delete"),tr("Do you really want to delete\n")+f | 877 | switch ( QMessageBox::warning(this,tr("Delete"),tr("Do you really want to delete\n")+f |
862 | +" ?",tr("Yes"),tr("No"),0,0,1) ) { | 878 | +" ?",tr("Yes"),tr("No"),0,0,1) ) { |
863 | case 0: { | 879 | case 0: { |
@@ -910,9 +926,8 @@ void OpieFtp::remoteDelete() | |||
910 | msg.replace(QRegExp(":"),"\n"); | 926 | msg.replace(QRegExp(":"),"\n"); |
911 | QMessageBox::message(tr("Note"),msg); | 927 | QMessageBox::message(tr("Note"),msg); |
912 | } | 928 | } |
913 | remoteDirList( (const QString &)currentRemoteDir); //this also calls populate | 929 | remoteDirList( (const QString &)currentRemoteDir); //this also calls populate |
914 | |||
915 | } | 930 | } |
916 | break; | 931 | break; |
917 | }; | 932 | }; |
918 | } else { | 933 | } else { |