-rw-r--r-- | noncore/apps/opie-gutenbrowser/NetworkDialog.cpp | 426 |
1 files changed, 185 insertions, 241 deletions
diff --git a/noncore/apps/opie-gutenbrowser/NetworkDialog.cpp b/noncore/apps/opie-gutenbrowser/NetworkDialog.cpp index d629449..af14aac 100644 --- a/noncore/apps/opie-gutenbrowser/NetworkDialog.cpp +++ b/noncore/apps/opie-gutenbrowser/NetworkDialog.cpp @@ -1,335 +1,279 @@ // /*************************************************************************** // NetworkDialog.cpp - description // begin : Sun Aug 27 2000 // copyright : (C) 2000 - 2004 by L.J. Potter // 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. * // ***************************************************************************/ // // half-assed attempt at providing a network dialog. // /* Created: Sun Aug 27 15:24:52 2000*/ #include "NetworkDialog.h" #include "gutenbrowser.h" /* OPIE */ #include <opie2/odebug.h> /* QT */ #include <qprogressbar.h> #include <qstringlist.h> #include <qpe/config.h> #include <qvaluelist.h> #include <qapplication.h> #include <qfile.h> #include <qstringlist.h> #include <qlabel.h> #include <qpushbutton.h> #include <qlayout.h> /* STD */ #include <unistd.h> extern "C" { #include <ftplib.h> } QProgressBar* ProgressBar1; QPushButton* buttonCancel; static netbuf *conn = NULL; static int log_progress(netbuf *ctl, int xfered, void *arg) { - int fsz = *(int *)arg; - int pct = (xfered * 100) / fsz; - printf("%3d%%\r", pct); - fflush(stdout); - ProgressBar1->setProgress(xfered); - qApp->processEvents(); - - return 1; + int fsz = *(int *)arg; + int pct = (xfered * 100) / fsz; + printf("%3d%%\r", pct); + fflush(stdout); + ProgressBar1->setProgress(xfered); + qApp->processEvents(); + + return 1; } NetworkDialog::NetworkDialog( QWidget* parent, const char* name, bool modal, WFlags fl, const QStringList netL) - : QDialog( parent, name, modal, fl ) + : QDialog( parent, name, modal, fl ) { - ftp_host = netL[0]; - networkUrl = strUrl = netL[0]; + ftp_host = netL[0]; + networkUrl = strUrl = netL[0]; - dir = ftp_base_dir = netL[1]; - localFileName = netL[2]; - s_partialFileName = netL[3]; + dir = ftp_base_dir = netL[1]; + localFileName = netL[2]; + s_partialFileName = netL[3]; - resize(240,120); + resize(240,120); - local_library = (QDir::homeDirPath ()) +"/Applications/gutenbrowser/"; + local_library = (QDir::homeDirPath ()) +"/Applications/gutenbrowser/"; // autoOk = autoDownload; // if( networkUrl.find("ftp",0,false)== -1 ) { // if ( !name ) // setName( "HTTP NetworkDialog" ); // setCaption( tr( "HTTP Download ) ); // qInitNetworkProtocols(); // registers ftp protocol // for now // QNetworkProtocol::registerNetworkProtocol( "http", new QNetworkProtocolFactory<Http> ); // } else { - if ( !name ) - setName( "FTP NetworkDialog" ); - setCaption(tr("FTP Download")); + if ( !name ) + setName( "FTP NetworkDialog" ); + setCaption(tr("FTP Download")); // } - initDialog(); //opens file to be written + initDialog(); //opens file to be written } NetworkDialog::~NetworkDialog() { } void NetworkDialog::initDialog() { - totalBytesDownloaded=0; - warnLabel = new QLabel( this, "TextLabel" ); - warnLabel ->setText( tr( "Push Ok to download file...." ) ); - TextLabel3 = new QLabel( this, "TextLabel3" ); - TextLabel3->setText( ""); - QWidget* Layout1 = new QWidget( this, "Layout1" ); - - hbox = new QHBoxLayout(Layout1); - hbox->setMargin(4); - - ProgressBar1 = new QProgressBar( Layout1, "ProgressBar1" ); - ProgressBar1->setProgress(0); - hbox->addWidget(ProgressBar1,10,AlignCenter); - - // hbox->addStretch(1); -// buttonOk = new QPushButton( Layout1, "buttonOk" ); -// buttonOk->setText( tr( "&OK" ) ); -// hbox->addWidget(buttonOk,0,AlignRight); -// hbox->addSpacing(5); - buttonCancel = new QPushButton( Layout1, "buttonCancel" ); - buttonCancel->setText( tr( "&Cancel" ) ); - buttonCancel->setAutoDefault( TRUE ); - buttonCancel->setDefault( TRUE ); - hbox->addWidget(buttonCancel,0,AlignRight); - - ProgressBar1->setFixedSize(150,25); -// buttonOk->setFixedSize(35,22); - buttonCancel->setFixedSize(50,25); - warnLabel ->setGeometry( QRect( 5,1,230,25)); - TextLabel3->setGeometry( QRect( 5,20,230,25)); - Layout1->setGeometry( QRect(1,60,235,50)); //TODO check these!! - -// timer= new QTimer(this,"vu timer"); -// connectionTimer=new QTimer(this,"connectionTimeout"); - -// connect(buttonOk,SIGNAL(clicked()),this,SLOT(doOk())); - connect(buttonCancel,SIGNAL(clicked()),this,SLOT(reject())); -// connect( timer, SIGNAL(timeout()), this , SLOT(timeSlot())); -// connect( connectionTimer,SIGNAL( timeout()),this,SLOT( connectionTimeSlot())); -// if(autoOk) { -// buttonOk->setDown(true); - QTimer::singleShot( 1000, this, SLOT( doOk() )); -// } - -} - -void NetworkDialog::timeSlot() { - -// if(timerProgess < 19 && posTimer) { -// ProgressBar1->setProgress(timerProgess); -// timerProgess++; -// } else if(timerProgess > 19 && posTimer) { -// ProgressBar1->setProgress(timerProgess); -// timerProgess++; -// posTimer=FALSE; -// } -// if(timerProgess > 1 &&!posTimer) { -// ProgressBar1->setProgress(timerProgess); -// timerProgess--; -// } else if(timerProgess > 1 &&!posTimer){ -// ProgressBar1->setProgress(timerProgess); -// timerProgess--; -// posTimer=TRUE; -// } -// // odebug << "timer event" << oendl; -// qApp->processEvents(); -// repaint(); -} + QGridLayout *layout = new QGridLayout( this ); + totalBytesDownloaded=0; + warnLabel = new QLabel( this, "TextLabel" ); + warnLabel ->setText( tr( "Download should start shortly" ) ); + TextLabel3 = new QLabel( this, "TextLabel3" ); + TextLabel3->setText( ""); + layout->addMultiCellWidget( warnLabel, 0, 0, 0, 5 ); + layout->addMultiCellWidget( TextLabel3, 1, 1, 0, 5 ); + + ProgressBar1 = new QProgressBar( this, "ProgressBar1" ); + ProgressBar1->setProgress(0); + layout->addMultiCellWidget( ProgressBar1, 3, 3, 0, 4 ); + + // hbox->addStretch(1); + buttonCancel = new QPushButton( this, "buttonCancel" ); + buttonCancel->setText( tr( "&Cancel" ) ); + buttonCancel->setAutoDefault( TRUE ); + buttonCancel->setDefault( TRUE ); + layout->addMultiCellWidget( buttonCancel, 3, 3, 5, 5 ); + + connect(buttonCancel,SIGNAL(clicked()),this,SLOT(reject())); + QTimer::singleShot( 1000, this, SLOT( doOk() )); -void NetworkDialog::connectionTimeSlot() { -// odebug << "Connections timed out" << oendl; -// ftpQuit(); -// qApp->processEvents(); -// repaint(); -// reject(); } - /* -downloads the file networkUrl */ + downloads the file networkUrl */ bool NetworkDialog::downloadFile( QString networkUrl ) { - int fsz; -// timer->start( 250 , FALSE); -// posTimer=TRUE; -// connectionTimer->start( 600 , FALSE); - warnLabel ->setText( ""); - qApp->processEvents(); - odebug << "Downloading: " << networkUrl << "" << oendl; - odebug << "Into: " << localFileName << "" << oendl; - if( networkUrl.length() > 5) { - QString ftp_user = "anonymous"; - QString ftp_pass = "zaurus@gutenbrowser.com"; + int fsz; + warnLabel ->setText( ""); + qApp->processEvents(); + odebug << "Downloading: " << networkUrl << "" << oendl; + odebug << "Into: " << localFileName << "" << oendl; + if( networkUrl.length() > 5) { + QString ftp_user = "anonymous"; + QString ftp_pass = "zaurus@gutenbrowser.com"; // ftp_host= networkUrl.mid(networkUrl.find("ftp://",0, TRUE), - if(ftp_host.length() < 2) { - odebug << "Please select an ftp host" << oendl; - successDownload=false; - QMessageBox::message("Note","You need to select an ftp host"); - return false; - } - QString msg; - odebug << ftp_host << oendl; - odebug << "Opening ftp connection." << oendl; - warnLabel->setText("connecting to: "+ftp_host ); - qApp->processEvents(); - /////////// Open FTP connection - if (!FtpConnect( ftp_host.latin1(), &conn)) { - i=0; - successDownload=false; - QMessageBox::message("Note","Unable to connect to\n"+ftp_host); - return false; - } - TextLabel3->setText("Opening ftp connection."); - qApp->processEvents(); - if (!FtpLogin( ftp_user.latin1(), ftp_pass.latin1(),conn )) { - FtpQuit(conn); - successDownload=false; - msg.sprintf("Unable to log in\n%s",FtpLastResponse(conn)); - QMessageBox::message("Note",msg); - return false; - } - odebug << "Changing directories." << oendl; - TextLabel3->setText("Changing directories."); - qApp->processEvents(); - if (!FtpChdir( dir.latin1(), conn )) { - successDownload=false; - msg.sprintf("Unable to change directories "+dir+"\n%s",FtpLastResponse(conn)); - QMessageBox::message("Note",msg); - FtpQuit(conn); - return false; - } + if(ftp_host.length() < 2) { + odebug << "Please select an ftp host" << oendl; + successDownload=false; + QMessageBox::message("Note","You need to select an ftp host"); + return false; + } + QString msg; + odebug << ftp_host << oendl; + odebug << "Opening ftp connection." << oendl; + warnLabel->setText("connecting to: "+ftp_host ); + qApp->processEvents(); + /////////// Open FTP connection + if (!FtpConnect( ftp_host.latin1(), &conn)) { + i=0; + successDownload=false; + QMessageBox::message("Note","Unable to connect to\n"+ftp_host); + return false; + } + TextLabel3->setText("Opening ftp connection."); + qApp->processEvents(); + if (!FtpLogin( ftp_user.latin1(), ftp_pass.latin1(),conn )) { + FtpQuit(conn); + successDownload=false; + msg.sprintf("Unable to log in\n%s",FtpLastResponse(conn)); + QMessageBox::message("Note",msg); + return false; + } + odebug << "Changing directories." << oendl; + TextLabel3->setText("Changing directories."); + qApp->processEvents(); + if (!FtpChdir( dir.latin1(), conn )) { + successDownload=false; + msg.sprintf("Unable to change directories "+dir+"\n%s",FtpLastResponse(conn)); + QMessageBox::message("Note",msg); + FtpQuit(conn); + return false; + } // if (!FtpNlst( "./.guten_temp", dir, conn)) { // successDownload=false; // msg.sprintf("Unable to change directories "+dir+"\n%s",FtpLastResponse(conn)); // QMessageBox::message("Note",msg); // FtpQuit(conn); // return false; // } - odebug << "Requesting directory list." << oendl; - TextLabel3->setText("Getting directory list."); - qApp->processEvents(); - if (!FtpDir( "./.guten_temp", dir.latin1(), conn) ) { - msg.sprintf("Unable to list the directory\n"+dir+"\n%s",FtpLastResponse(conn)); - QMessageBox::message("Note",msg); - successDownload=false; - FtpQuit(conn); - return false; - } - QFile tmp("./.guten_temp"); - QString s, File_Name; - - if (tmp.open(IO_ReadOnly)) { - QTextStream t( &tmp ); // use a text stream - odebug << "Finding partial filename "+s_partialFileName << oendl; - while ( !t.eof()) { - s = t.readLine(); - - if (s.contains(s_partialFileName, FALSE)) { - QString str = s.right( (s.length()) - (s.find(s_partialFileName, FALSE)) ); - - if (str.contains(".txt")) { - File_Name = str; - odebug << "Found file_name "+ File_Name << oendl; - break; - } + odebug << "Requesting directory list." << oendl; + TextLabel3->setText("Getting directory list."); + qApp->processEvents(); + if (!FtpDir( "./.guten_temp", dir.latin1(), conn) ) { + msg.sprintf("Unable to list the directory\n"+dir+"\n%s",FtpLastResponse(conn)); + QMessageBox::message("Note",msg); + successDownload=false; + FtpQuit(conn); + return false; + } + QFile tmp("./.guten_temp"); + QString s, File_Name; + + if (tmp.open(IO_ReadOnly)) { + QTextStream t( &tmp ); // use a text stream + odebug << "Finding partial filename "+s_partialFileName << oendl; + while ( !t.eof()) { + s = t.readLine(); + + if (s.contains(s_partialFileName, FALSE)) { + QString str = s.right( (s.length()) - (s.find(s_partialFileName, FALSE)) ); + + if (str.contains(".txt")) { + File_Name = str; + odebug << "Found file_name "+ File_Name << oendl; + break; + } // if (str.contains(".zip")) { // File_Name = str; // odebug << "Found file_name "+ File_Name << oendl; // break; // } - } - } //end of while loop - tmp.close(); + } + } //end of while loop + tmp.close(); // tmp.remove(); ///TODO this is for release version Zaurus - } - else - odebug << "Error opening temp file." << oendl; - - Config cfg("Gutenbrowser"); - cfg.setGroup("General"); - QString temp=cfg.readEntry("DownloadDirectory",local_library); - - localFileName = temp+File_Name; - odebug << "Requesting file "+ File_Name << oendl; - odebug << "Saving as "+localFileName << oendl; - msg="Requesting file "+ File_Name; - TextLabel3->setText(msg); - qApp->processEvents(); - if( File_Name.length()>3) { - if (!FtpSize( File_Name.latin1(), &fsz, FTPLIB_ASCII, conn)) - fsz = 0; - QString temp; - temp.sprintf( File_Name+" "+" %dkb", fsz); - TextLabel3->setText(temp); - - ProgressBar1->setTotalSteps(fsz); - FtpOptions(FTPLIB_CALLBACK, (long) log_progress, conn); - FtpOptions(FTPLIB_IDLETIME, (long) 1000, conn); - FtpOptions(FTPLIB_CALLBACKARG, (long) &fsz, conn); - FtpOptions(FTPLIB_CALLBACKBYTES, (long) fsz/10, conn); - - if (!FtpGet( localFileName.latin1(), File_Name.latin1(), FTPLIB_ASCII, conn)) { - msg.sprintf("Could not download "+ File_Name+"\n%s",FtpLastResponse(conn)); - successDownload=false; - QMessageBox::message("Note",msg); - update(); - } - } else { - QMessageBox::message("Note","Could not download file "+ File_Name); - successDownload=false; - FtpQuit(conn); - return false; - } - odebug << "Ftp session successful" << oendl; - successDownload=TRUE; - FtpQuit(conn); - return true; - } //no network url - return false; + } + else + odebug << "Error opening temp file." << oendl; + + Config cfg("Gutenbrowser"); + cfg.setGroup("General"); + QString temp=cfg.readEntry("DownloadDirectory",local_library); + + localFileName = temp+File_Name; + odebug << "Requesting file "+ File_Name << oendl; + odebug << "Saving as "+localFileName << oendl; + msg="Requesting file "+ File_Name; + TextLabel3->setText(msg); + qApp->processEvents(); + if( File_Name.length()>3) { + if (!FtpSize( File_Name.latin1(), &fsz, FTPLIB_ASCII, conn)) + fsz = 0; + QString temp; + temp.sprintf( File_Name+" "+" %dkb", fsz); + TextLabel3->setText(temp); + + ProgressBar1->setTotalSteps(fsz); + FtpOptions(FTPLIB_CALLBACK, (long) log_progress, conn); + FtpOptions(FTPLIB_IDLETIME, (long) 1000, conn); + FtpOptions(FTPLIB_CALLBACKARG, (long) &fsz, conn); + FtpOptions(FTPLIB_CALLBACKBYTES, (long) fsz/10, conn); + + if (!FtpGet( localFileName.latin1(), File_Name.latin1(), FTPLIB_ASCII, conn)) { + msg.sprintf("Could not download "+ File_Name+"\n%s",FtpLastResponse(conn)); + successDownload=false; + QMessageBox::message("Note",msg); + update(); + } + } else { + QMessageBox::message("Note","Could not download file "+ File_Name); + successDownload=false; + FtpQuit(conn); + return false; + } + odebug << "Ftp session successful" << oendl; + successDownload=TRUE; + FtpQuit(conn); + return true; + } //no network url + return false; } void NetworkDialog::doOk() { - owarn << "Do OK" << oendl; - QString loginStr; - loginStr = "gutenbrowser"; - if ( !ftp_host.isEmpty() ) { - if( ftp_host.find( "/", ftp_host.length() - 1,TRUE) != -1 && ftp_host.find("ftp://",0, TRUE) != -1) { - TextLabel3->setText( tr( "List remote dir:\n" + ftp_host) ); + owarn << "Do OK" << oendl; + QString loginStr; + loginStr = "gutenbrowser"; + if ( !ftp_host.isEmpty() ) { + if( ftp_host.find( "/", ftp_host.length() - 1,TRUE) != -1 && ftp_host.find("ftp://",0, TRUE) != -1) { + TextLabel3->setText( tr( "List remote dir:\n" + ftp_host) ); // TextLabel2->setText( tr( "local file to download into: " +localFileName ) ); - if( downloadFile(ftp_host)) - successDownload = true; - else { - successDownload = false; - reject(); - } - } else { - if(downloadFile(ftp_host)) - successDownload = true; - else { - successDownload = false; - reject(); - } - } - } - accept(); + if( downloadFile(ftp_host)) + successDownload = true; + else { + successDownload = false; + reject(); + } + } else { + if(downloadFile(ftp_host)) + successDownload = true; + else { + successDownload = false; + reject(); + } + } + } + accept(); } |