summaryrefslogtreecommitdiff
path: root/noncore/apps/opie-gutenbrowser/LibraryDialog.cpp
authorllornkcor <llornkcor>2004-04-07 13:07:42 (UTC)
committer llornkcor <llornkcor>2004-04-07 13:07:42 (UTC)
commitfc42c7317c956e5bc6e74bfbb1ec185d2faa79f4 (patch) (side-by-side diff)
tree703e89c7178f764aab25028d4525f74340b28dcb /noncore/apps/opie-gutenbrowser/LibraryDialog.cpp
parent9e1ecade17a77c3d50aecc4c92091d852e99e8d9 (diff)
downloadopie-fc42c7317c956e5bc6e74bfbb1ec185d2faa79f4.zip
opie-fc42c7317c956e5bc6e74bfbb1ec185d2faa79f4.tar.gz
opie-fc42c7317c956e5bc6e74bfbb1ec185d2faa79f4.tar.bz2
add gutenbrowser
Diffstat (limited to 'noncore/apps/opie-gutenbrowser/LibraryDialog.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/apps/opie-gutenbrowser/LibraryDialog.cpp1067
1 files changed, 1067 insertions, 0 deletions
diff --git a/noncore/apps/opie-gutenbrowser/LibraryDialog.cpp b/noncore/apps/opie-gutenbrowser/LibraryDialog.cpp
new file mode 100644
index 0000000..157a3da
--- a/dev/null
+++ b/noncore/apps/opie-gutenbrowser/LibraryDialog.cpp
@@ -0,0 +1,1067 @@
+/***************************************************************************
+// LibraryDialog.cpp - description
+// -------------------
+// begin : Sat Aug 19 2000
+// copyright : (C) 2000 - 2004 by llornkcor
+// 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. *
+// ***************************************************************************/
+//ftp://ibiblio.org/pub/docs/books/gutenberg/GUTINDEX.ALL
+
+#include <qpe/applnk.h>
+#include <qpe/qpeapplication.h>
+#include <qpe/qpedialog.h>
+
+#include "LibraryDialog.h"
+#include "output.h"
+
+#include <qpushbutton.h>
+#include <qmultilineedit.h>
+//#include <qlayout.h>
+
+#include <unistd.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+/*
+ * The dialog will by default be modeless, unless you set 'modal' to
+ * TRUE to construct a modal dialog. */
+LibraryDialog::LibraryDialog( QWidget* parent, const char* name , bool modal, WFlags fl )
+ : QDialog( parent, name, true/* modal*/, fl )
+{
+ if ( !name )
+ setName( "LibraryDialog" );
+ indexLoaded=false;
+ initDialog();
+
+ // this->setMaximumWidth(240);
+
+ index = "GUTINDEX.ALL";
+ local_library = (QDir::homeDirPath ()) +"/Applications/gutenbrowser/";
+ local_index = local_library + index;
+
+ QString iniFile ;
+ iniFile = QPEApplication::qpeDir()+"/etc/gutenbrowser/gutenbrowserrc";
+
+ new_index =QPEApplication::qpeDir()+"/etc/gutenbrowser/PGWHOLE.TXT";
+
+ old_index = QPEApplication::qpeDir()+"/etc/gutenbrowser/GUTINDEX.ALL";
+ // old_index = QPEApplication::qpeDir()+"etc/gutenbrowser/GUTINDEX.ALL";
+
+ // iniFile = local_library+"gutenbrowserrc";
+ // new_index = local_library + "PGWHOLE.TXT";
+ // old_index = local_library + "GUTINDEX.ALL";
+
+ Config config("Gutenbrowser");
+
+ config.setGroup( "HttpServer" );
+ proxy_http = config.readEntry("Preferred", "http://sailor.gutenbook.org");
+
+ config.setGroup( "FTPsite" );
+ ftp_host=config.readEntry("SiteName", "sailor.gutenberg.org");
+ qDebug("Library Dialog: ftp_host is "+ftp_host);
+ // ftp_host=ftp_host.right(ftp_host.length()-(ftp_host.find(") ",0,TRUE)+1) );
+ // ftp_host=ftp_host.stripWhiteSpace();
+ ftp_base_dir= config.readEntry("base", "/pub/gutenberg");
+
+ i_binary = 0;
+
+ config.setGroup("SortAuth");
+ if( config.readEntry("authSort", "FALSE") == "TRUE")
+ authBox->setChecked(TRUE);
+
+ config.setGroup("General");
+ downDir =config.readEntry( "DownloadDirectory",local_library);
+ qDebug("downDir is "+downDir);
+ newindexLib.setName( old_index);
+ indexLib.setName( old_index);
+
+ new QPEDialogListener(this);
+}
+
+LibraryDialog::~LibraryDialog()
+{
+ delete QList_Item2;
+ delete QList_Item1;
+ delete QList_Item3;
+ delete QList_Item4;
+ delete QList_Item5;
+
+ saveConfig();
+}
+
+ /*This groks using PGWHOLE.TXT */
+void LibraryDialog::Newlibrary()
+{
+#ifndef Q_WS_QWS //sorry embedded gutenbrowser cant use zip files
+ //qDebug("Opening new library index %s",newindexLib);
+ if ( newindexLib.open( IO_ReadOnly) ) {
+ setCaption( tr( "Library Index - using master pg index." ) );// file opened successfully
+ QTextStream indexStream( &newindexLib );
+ QString indexLine;
+ while ( !indexStream.atEnd() ) { // until end of file..
+ indexLine = indexStream.readLine();
+ if ( ( indexLine.mid(4,4)).toInt() && !( indexLine.left(3)).toInt()) {
+ year = indexLine.mid(4,4);
+ year = year.stripWhiteSpace();
+ file = indexLine.mid( indexLine.find( "[", 0, TRUE )+1, 12 );
+ file = file.stripWhiteSpace();
+ number = indexLine.mid( indexLine.find( "]", 0, TRUE ) +1, indexLine.find( " ", 0, TRUE )+1 );
+ if( year.toInt() < 1984)
+ number = number.left( number.length() -1 );
+ number = number.stripWhiteSpace();
+ title = indexLine.mid( indexLine.find(" ", 26, TRUE), indexLine.length() );
+ title = title.stripWhiteSpace();
+
+ getAuthor(); // groks author
+ author = author.stripWhiteSpace();
+ if (authBox->isChecked()) { // this reverses the first name and last name of the author
+ // qDebug("Sorting last name first");
+ QString lastName, firstName="";
+ int finder=author.findRev( ' ', -1, TRUE);
+ lastName=author.right( author.length()-finder);
+ firstName=author.left(finder);
+ lastName=lastName.stripWhiteSpace();
+ firstName=firstName.stripWhiteSpace();
+
+ if( lastName.find( firstName, 0, true) == -1) // this avoids dup names
+ author=lastName+", "+firstName;
+ }
+
+ if( !number.isEmpty() && (title.find( "reserved",0, FALSE) == -1) && (file.find( "]",0, TRUE) == -1) ) {
+
+ // fill string list or something to be able to resort the whole library
+ if( author.isEmpty() )
+ QList_Item5 = new QListViewItem( ListView5, /* number,*/ title, author, year, file );
+ else {
+
+ if( (author.left(1) >= QString("A") && author.left(1) <= QString("F")) ||
+ (author.left(1) >= QString("a") && author.left(1) <= QString("f")) )
+ QList_Item1 = new QListViewItem( ListView1,/* number,*/ title, author, year, file );
+
+ else if( (author.left(1) >= QString("G") && author.left(1) <= QString("M")) ||
+ (author.left(1) >= QString("g") && author.left(1) <= QString("m")) )
+ QList_Item2 = new QListViewItem( ListView2, /*number, */title, author, year, file );
+
+ else if( (author.left(1) >= QString("N") && author.left(1) <= QString("R")) ||
+ (author.left(1) >= QString("n") && author.left(1) <= QString("r")) )
+ QList_Item3 = new QListViewItem( ListView3, /*number,*/ title, author, year, file );
+
+ else if( (author.left(1) >= QString("S") && author.left(1) <= QString("Z")) ||
+ (author.left(1) >= QString("s") && author.left(1) <= QString("z")) )
+ QList_Item4 = new QListViewItem( ListView4, /* number,*/ title, author, year, file );
+
+ else
+ QList_Item5 = new QListViewItem( ListView5, /* number,*/ title, author, year, file );
+ }
+ }
+ }// end if
+ }// end while
+ newindexLib.close();
+ }
+#ifndef Q_WS_QWS
+ setCursor( arrowCursor);
+#endif
+#endif
+} // end Newlibrary()
+
+
+void LibraryDialog::Library()
+{// old library groking method
+
+ ListView1->clear();
+ ListView2->clear();
+ ListView3->clear();
+ ListView4->clear();
+ ListView5->clear();
+
+ qDebug("opening GUTINDEX.ALL file");
+ IDontKnowWhy = "";
+ if ( indexLib.open( IO_ReadOnly) ) { // file opened successfully
+ QTextStream indexStream( &indexLib );
+ QString indexLine;
+ qApp->processEvents();
+ // int jig;
+ while ( !indexStream.eof() ) {
+
+ indexLine = indexStream.readLine();
+ if ( indexLine != "") {
+ if( (indexLine.mid(4,4)).toInt() /* && !( indexLine.left(3)).toInt()*/ ) {
+ // month = indexLine.left( 3);
+ year = indexLine.mid(4,4);
+ // title = indexLine.mid( 9, 50);
+ file = indexLine.mid(60,12);
+ if(file.left(1).find("[",0,TRUE) != -1)
+ file.remove(1,1);
+ if( file.find("]",0,TRUE) != -1)
+ file = file.left( file.find("]",0,TRUE));
+ //qDebug("file is "+file);
+ /// number = indexLine.mid( indexLine.find( "]", 0, TRUE ) +1, indexLine.find( " ", 0, TRUE )+1 );
+ number = indexLine.mid(55,5);
+ number = number.stripWhiteSpace();
+ // title = indexLine.mid( indexLine.find(" ", 26, TRUE), indexLine.length() );
+ title = indexLine.mid( 9, 50 );
+ title = title.stripWhiteSpace();
+ //qDebug("title is "+title);
+ getAuthor(); // grok author
+ author = author.stripWhiteSpace();
+ //qDebug("author is "+author);
+ if (authBox->isChecked() == TRUE) { // this reverses the first name and last name of the author
+ QString lastName, firstName="";
+ int finder=author.findRev( ' ', -1, TRUE);
+ lastName=author.right( author.length()-finder);
+ firstName=author.left(finder);
+ lastName=lastName.stripWhiteSpace();
+ firstName=firstName.stripWhiteSpace();
+
+ if( lastName.find( firstName, 0, true) == -1) // this avoids dup names
+ author=lastName+", "+firstName;
+ }
+
+ if( !number.isEmpty() && (title.find( "reserved",0, FALSE) == -1) /*&& (file.find( "]",0, TRUE))*/ ) {
+ // fill string list or something to be able to sort by Author
+ if( author.isEmpty() )
+ QList_Item5 = new QListViewItem( ListView5, /*number, */title, author, year, file );
+ else {
+ if( (author.left(1) >= QString("A") && author.left(1) <= QString("F")) ||
+ (author.left(1) >= QString("a") && author.left(1) <= QString("f")) )
+ QList_Item1 = new QListViewItem( ListView1, /* number,*/ title, author, year, file );
+
+ else if( (author.left(1) >= QString("G") && author.left(1) <= QString("M")) ||
+ (author.left(1) >= QString("g") && author.left(1) <= QString("m")) )
+ QList_Item2 = new QListViewItem( ListView2, /* number,*/ title, author, year, file );
+
+ else if( (author.left(1) >= QString("N") && author.left(1) <= QString("R")) ||
+ (author.left(1) >= QString("n") && author.left(1) <= QString("r")) )
+ QList_Item3 = new QListViewItem( ListView3, /* number,*/ title, author, year, file );
+
+ else if( (author.left(1) >= QString("S") && author.left(1) <= QString("Z")) ||
+ (author.left(1) >= QString("s") && author.left(1) <= QString("z")) )
+ QList_Item4 = new QListViewItem( ListView4, /* number,*/ title, author, year, file );
+ }
+ }
+ }
+ }
+ }
+ indexLib.close();
+ } else {
+ QString sMsg;
+ sMsg = ( tr("Error opening local library index:\n "))+local_index;
+ QMessageBox::message( "Error",sMsg);
+ }
+
+} //end Library()
+
+
+ /*
+ Groks the author out of the title */
+bool LibraryDialog::getAuthor()
+{
+ if( title.contains( ", by", TRUE)) {
+ int auth;
+ auth = title.find(", by", 0, TRUE);
+ author = title.right(title.length() - (auth + 4) );
+ if( int finder = author.find("[", 0, TRUE)) {
+ author = author.left(finder);
+ }
+ }
+ else if ( title.contains( "by, ", TRUE) ) {
+ int auth;
+ auth = title.find("by, ", 0, TRUE);
+ author = title.right(title.length() - (auth + 4) );
+ if( int finder = author.find("[", 0, TRUE)) {
+ author = author.left( finder);
+ }
+ }
+ else if ( title.contains( " by", TRUE) ) {
+ int auth;
+ auth = title.find(" by", 0, TRUE);
+ author = title.right(title.length() - (auth + 3) );
+ if( int finder = author.find("[", 0, TRUE)) {
+ author = author.left( finder);
+ }
+ }
+ else if ( title.contains( "by ", TRUE) ) {
+ int auth;
+ auth = title.find("by ", 0, TRUE);
+ author = title.right(title.length() - (auth + 3) );
+ if( int finder = author.find("[", 0, TRUE)) {
+ author = author.left( finder);
+ }
+ }
+ else if ( title.contains( ",", TRUE) ) {
+ int auth;
+ auth = title.find(",", 0, TRUE);
+ author = title.right( title.length() - (auth + 1) );
+ if ( author.contains( ",", TRUE) ) {
+ int auth;
+ auth = author.find(",", 0, TRUE);
+ author = author.right( author.length() - (auth + 1) );
+ }
+ if( int finder = author.find("[", 0, TRUE)) {
+ author = author.left( finder);
+ }
+ }
+ else if ( title.contains( "/", TRUE) ) {
+ int auth;
+ auth = title.find("/", 0, TRUE);
+ author = title.right(title.length() - (auth + 1) );
+ if( int finder = author.find("[", 0, TRUE)) {
+ author = author.left( finder);
+ }
+ }
+ else if ( title.contains( "of", TRUE) ) {
+ int auth;
+ auth = title.find("of", 0, TRUE);
+ author = title.right(title.length() - (auth + 2) );
+ if( int finder = author.find("[", 0, TRUE))
+ {
+ author = author.left( finder);
+ }
+ } else {
+ author = "";
+ }
+ if ( author.contains("et. al")) {
+ int auth;
+ auth = author.find("et. al", 0, TRUE);
+ author = author.left( auth );
+ }
+ if ( author.contains("#")) {
+ int auth;
+ auth = author.find("#", 0, TRUE);
+ author = author.left( auth);
+ }
+ if ( author.contains("(")) {
+ int auth;
+ auth = author.find("(", 0, TRUE);
+ author = author.left( auth);
+ }
+ if ( author.contains("et al")) {
+ int auth;
+ auth = author.find("et al", 0, TRUE);
+ author = author.left( auth );
+ }
+ QRegExp r = QRegExp("[0-9]", TRUE, FALSE);
+ if ( author.left(2).find( r) != -1 ) {
+ author = "";
+ }
+ // if( author.contains(" ", TRUE)) {
+ // int suth = author.findRev(" ", -1, TRUE);
+ // author = author.right( author.length() - suth);
+ // }
+
+ // title
+ // author
+ return true;
+}////// end getAuthor()
+
+ /*
+ selected one etext*/
+void LibraryDialog::select_title( QListViewItem * item)
+{
+ if(item != NULL) {
+ i++;
+ int index = tabWidget->currentPageIndex();
+ DlglistItemTitle = item->text(0);
+ DlglistItemYear = item->text(2);
+ DlglistItemFile = item->text(3);
+ switch (index) {
+ case 0: {
+ ListView1->clearSelection();
+ }
+ break;
+ case 1: {
+ ListView2->clearSelection();
+ }
+ break;
+ case 2: {
+ ListView3->clearSelection();
+ }
+ break;
+ case 3: {
+ ListView4->clearSelection();
+ }
+ break;
+ case 4: {
+ ListView5->clearSelection();
+ }
+ break;
+ };
+ }
+
+ if(DlglistItemTitle.length()>2) {
+ // DlglistItemNumber = item->text(0);
+ item = 0;
+ qDebug( "string from librarydialog is:%s %s %s", DlglistItemYear.latin1(),DlglistItemFile.latin1(),DlglistItemNumber.latin1());
+ qDebug("Title is "+DlglistItemTitle);
+
+ // check for connection here
+ // if( get_extext())
+
+ if(download_Etext()) {
+ // qDebug("get here 2");
+ if(i_binary == 1) {
+
+ }
+ if(checkBox->isChecked () ) {
+ accept();
+ }
+ }
+ }
+}
+
+bool LibraryDialog::download_Etext()
+{ // ftp method
+ // might have to use old gpl'd ftp for embedded!!
+ Config cfg("Gutenbrowser");
+ cfg.setGroup("FTPsite");
+ ftp_host=cfg.readEntry("SiteName", "sailor.gutenberg.org");
+ ftp_base_dir= cfg.readEntry("base", "/pub/gutenberg");
+
+ qDebug("about to network dialog");
+ QString NewlistItemNumber, NewlistItemYear, ls_result, result_line, s, dir, networkUrl, outputFile;
+
+ //////////////////// FIXME- if 'x' is part of real name....
+ NewlistItemFile = DlglistItemFile.left(DlglistItemFile.find(".xxx", 1, FALSE)).left(DlglistItemFile.left(DlglistItemFile.find(".xxx", 1, FALSE)).find("x", 1, FALSE));
+
+ if( NewlistItemFile.find( DlglistItemFile.left(4) ,0,TRUE) ==-1 ) {
+ NewlistItemFile.replace( 0,4, DlglistItemFile.left(4));
+ qDebug("NewlistItemFile is now "+NewlistItemFile);
+ }
+ NewlistItemYear = DlglistItemYear.right(2);
+ int NewlistItemYear_Int = NewlistItemYear.toInt(0, 10);
+ qDebug(NewlistItemYear);
+ if (NewlistItemYear_Int < 91 && NewlistItemYear_Int > 70) {
+ NewlistItemYear = "90";
+ }
+ Edir ="etext" +NewlistItemYear;
+ dir= ftp_base_dir + "/etext" +NewlistItemYear+"/";
+ if( ftp_base_dir.find("=",0,true) )
+ ftp_base_dir.remove( ftp_base_dir.find("=",0,true),1);
+
+ networkUrl= "ftp://"+ftp_host+dir;
+
+ outputFile=local_library+".guten_temp";
+ //qDebug("Download file:%s",NewlistItemFile.latin1() );
+ qDebug("Checking: "+ftp_host+" "+dir+" "+outputFile+" "+NewlistItemFile);
+ QStringList networkList;
+ networkList.append((const char *)ftp_host);
+ networkList.append((const char *)dir);
+ networkList.append((const char *)outputFile);
+ networkList.append((const char *)NewlistItemFile);
+//<< (char *)ftp_host << (char *)dir << (char *)outputFile << (char *)NewlistItemFile;
+
+ NetworkDialog *NetworkDlg;
+ NetworkDlg = new NetworkDialog( this,"Network Protocol Dialog", TRUE, 0, networkList);
+
+
+ if( NetworkDlg->exec() != 0 ) { // use new, improved, *INSTANT* network-dialog-file-getterer
+ File_Name= NetworkDlg->localFileName;
+ qDebug("back to Library from Network Dialog");
+ qDebug("Just downloaded "+NetworkDlg->localFileName);
+
+ // if (File_Name.find( local_library, 0, TRUE) != -1 ) { //could not be found
+ // QString oldName=File_Name;
+ // File_Name.replace(0,local_library.length(),downDir);
+ // qDebug("File_Name now is "+File_Name);
+
+ // }
+ // rename .txt to .etx
+ if(NetworkDlg->successDownload) {
+ qDebug("Filename is "+File_Name);
+ if(File_Name.right(4)==".txt") {
+ QString s_fileName=File_Name;
+ s_fileName.replace( s_fileName.length()-3,3,"gtn");
+ // s_fileName.replace( s_fileName.length()-3,3,"etx");
+ rename(File_Name.latin1(),s_fileName.latin1());
+ File_Name=s_fileName;
+
+ qDebug("Filename is now "+File_Name);
+
+ }
+ if(File_Name.length() > 5 ) {
+ setTitle();
+ QFileInfo fi(File_Name);
+ QString name_file=fi.fileName();
+ name_file=name_file.left(name_file.length()-4);
+
+ qDebug("Setting doclink");
+ DocLnk lnk;
+ qDebug("name is "+name_file);
+ lnk.setName(name_file); //sets file name
+ qDebug("Title is "+DlglistItemTitle);
+ lnk.setComment(DlglistItemTitle);
+
+ qDebug("Filename is "+File_Name);
+ lnk.setFile(File_Name); //sets File property
+ lnk.setType("guten/plain");// hey is this a REGISTERED mime type?!?!? ;D
+ lnk.setExec(File_Name);
+ lnk.setIcon("gutenbrowser/Gutenbrowser");
+ if(!lnk.writeLink()) {
+ qDebug("Writing doclink did not work");
+ } else {
+ }
+ } else
+ QMessageBox::message("Note","There was an error\nwith the file");
+ }
+ }
+ return true;
+}
+
+bool LibraryDialog::httpDownload()
+{// httpDownload
+#ifndef Q_WS_QWS
+ Config config("Gutenbrowser");
+ config.setGroup( "Browser" );
+ QString brow = config.readEntry("Preferred", "");
+ QString file_name = "./.guten_temp";
+ // config.setGroup( "HttpServer" );
+ // QString s_http = config.readEntry("Preferred", "http://sailor.gutenbook.org");
+ QString httpName = proxy_http + "/"+Edir;
+ // progressBar->setProgress( i);
+ i++;
+ if ( brow != "Konq") { /////////// use lynx
+ // QString cmd = "lynx -source " + httpName +" | cat >> " + file_name;
+ // system(cmd);
+ } else { //////////// use KFM
+ // KFM::download( httpName, file_name);
+ }
+ i++;
+ QFile tmp( file_name);
+ QString str;
+ if (tmp.open(IO_ReadOnly)) {
+ QTextStream t( &tmp ); // use a text stream
+ while ( !t.eof()) {
+ QString s = t.readLine();
+ if (s.contains( NewlistItemFile, FALSE) && (s.contains(".txt")) ) {
+ str = s.mid( s.find( ".txt\">"+NewlistItemFile, 0, TRUE)+6, (s.find( ".txt</A>", 0, TRUE) + 4) - ( s.find( ".txt\">"+NewlistItemFile, 0, TRUE)+6 ) );
+ httpName += "/" + str;
+ }
+ } //end of while loop
+ }
+ tmp.close();
+ m_getFilePath = local_library + str;
+ i++;
+ if ( brow != "KFM"){ ///////// use lynx
+ QString cmd = "lynx -source " + httpName +" | cat >> " + m_getFilePath;
+ // QMessageBox::message("Error", cmd);
+ system(cmd);
+ } else { ////////// use KFM
+ // KFM::download( httpName, m_getFilePath);
+ }
+ i++;
+#endif
+ return false;
+}
+
+void LibraryDialog::cancelIt()
+{
+ saveConfig();
+
+ DlglistItemNumber = "";
+ this->reject();
+}
+
+bool LibraryDialog::setTitle()
+{
+ Config config("Gutenbrowser");
+ qDebug("setting title");
+ qDebug(DlglistItemTitle);
+
+ if( DlglistItemTitle.find("[",0,TRUE) != -1)
+ DlglistItemTitle.replace(DlglistItemTitle.find("[",0,TRUE),1, "(" );
+ if( DlglistItemTitle.find("]",0,TRUE) !=-1)
+ DlglistItemTitle.replace(DlglistItemTitle.find("]",0,TRUE),1, ")" );
+ qDebug("Title being set is "+DlglistItemTitle);
+ int test = 0;
+ QString ramble, temp;
+ config.setGroup("Files");
+ QString s_numofFiles = config.readEntry("NumberOfFiles", "0" );
+ int i_numofFiles = s_numofFiles.toInt();
+ for ( int i = 0; i <= i_numofFiles; i++){
+ temp.setNum( i);
+ ramble = config.readEntry( temp, "" );
+ if( strcmp( ramble, File_Name) == 0){
+ test = 1;
+ }
+ }
+ config.setGroup("Files");
+ config.writeEntry( "NumberOfFiles", i_numofFiles +1 );
+ QString interger;
+ interger.setNum( i_numofFiles +1);
+ config.writeEntry( interger, File_Name);
+ config.setGroup( "Titles" );
+ config.writeEntry( File_Name, DlglistItemTitle);
+
+ test = 0;
+ return true;
+}
+
+
+void LibraryDialog::saveConfig()
+{
+ Config config("Gutenbrowser");
+ if( httpBox->isChecked() == TRUE) {
+ checked = 1;
+ config.setGroup( "Proxy" );
+ config.writeEntry("IsChecked", "TRUE");
+ } else {
+ checked = 0;
+ config.setGroup( "Proxy" );
+ config.writeEntry("IsChecked", "FALSE");
+ }
+ if (authBox->isChecked() == TRUE) {
+ config.setGroup("SortAuth");
+ config.writeEntry("authSort", "TRUE");
+ } else {
+ config.setGroup("SortAuth");
+ config.writeEntry("authSort", "FALSE");
+ }
+ // config.write();
+}
+
+ /*
+ searches library index for user word*/
+void LibraryDialog::onButtonSearch()
+{
+ ListView1->clearSelection();
+ ListView2->clearSelection();
+ ListView3->clearSelection();
+ ListView4->clearSelection();
+ ListView5->clearSelection();
+
+ int curTab=tabWidget->currentPageIndex();
+ SearchDialog* searchDlg;
+
+ // if( resultsList)
+ searchDlg = new SearchDialog( this, "Library Search", TRUE);
+ searchDlg->setCaption( tr( "Library Search" ) );
+ searchDlg->setLabel( "- author or title");
+ QString resultString;
+ int i_berger = 0;
+ if( searchDlg->exec() != 0 ) {
+ QString searcherStr = searchDlg->get_text();
+ int fluff=0;
+
+ // int tabPage = tabWidget->currentPageIndex();
+ // TODO ititerate here... struct<listViews>??
+
+ QListViewItemIterator it1( ListView1 );
+ QListViewItemIterator it2( ListView2 );
+ QListViewItemIterator it3( ListView3 );
+ QListViewItemIterator it4( ListView4 );
+ QListViewItemIterator it5( ListView5 );
+
+ //// this is really pitiful work,
+ ///////
+ bool cS;
+ if( searchDlg->caseSensitiveCheckBox->isChecked())
+ cS=true; //case sensitive
+ else
+ cS=false;
+
+ if(fluff==0) {
+ for ( ; it1.current(); ++it1 ) {
+ resultString = ( it1.current() )->text(0);
+ resultString += (" : ");
+ resultString += ( it1.current() )->text(2);
+ resultString += (" : ");
+ resultString += ( it1.current() )->text(3);
+ if( resultString.find( searcherStr, 0, cS) != -1)
+ {
+ Searchlist.append( resultString);
+ }
+ }
+ }
+ if(fluff==0) {// search routine here
+ for ( ; it2.current(); ++it2 ) {
+ resultString = ( it2.current() )->text(0);
+ resultString += (" : ");
+ resultString += ( it2.current() )->text(2);
+ resultString += (" : ");
+ resultString += ( it2.current() )->text(3);
+ if( resultString.find( searcherStr, 0, cS) != -1) {
+ Searchlist.append( resultString);
+ }
+ }
+ }
+ if(fluff==0) {// search routine here
+ for ( ; it3.current(); ++it3 ) {
+ resultString = ( it3.current() )->text(0);
+ resultString += (" : ");
+ resultString += ( it3.current() )->text(2);
+ resultString += (" : ");
+ resultString += ( it3.current() )->text(3);
+
+ if( resultString.find( searcherStr, 0, cS) != -1) {
+ Searchlist.append( resultString);
+ }
+ }
+ }
+ if(fluff==0) {
+ // search routine here
+ for ( ; it4.current(); ++it4 ) {
+ resultString = ( it4.current() )->text(0);
+ resultString += (" : ");
+ resultString += ( it4.current() )->text(2);
+ resultString += (" : ");
+ resultString += ( it4.current() )->text(3);
+ if( resultString.find( searcherStr, 0, cS) != -1) {
+ Searchlist.append( resultString);
+ }
+ }
+ }
+ if(fluff==0) { // search routine here
+ for ( ; it5.current(); ++it5 ) {
+ resultString = ( it5.current() )->text(0);
+ resultString += (" : ");
+ resultString += ( it5.current() )->text(2);
+ resultString += (" : ");
+ resultString += ( it5.current() )->text(3);
+ if( resultString.find( searcherStr, 0, cS) != -1) {
+ Searchlist.append( resultString);
+ }
+ }
+ }
+
+ tabWidget->setCurrentPage( curTab);
+
+ Searchlist.sort();
+ SearchResultsDlg* SearchResultsDialog;
+ SearchResultsDialog = new SearchResultsDlg( searchDlg, "Results Dialog", true, 0 , Searchlist);
+
+ SearchResultsDialog->showMaximized();
+ if( SearchResultsDialog->exec() != 0) {
+ texter = SearchResultsDialog->selText;
+ // qDebug(texter);
+ resultLs= SearchResultsDialog->resultsList;
+ i_berger = 1;
+ }
+ Searchlist.clear();
+
+ // if(SearchResultsDialog)
+ // delete SearchResultsDialog;
+ QString tester;
+ for ( QStringList::Iterator it = resultLs.begin(); it != resultLs.end(); ++it ) {
+ texter.sprintf("%s \n",(*it).latin1());
+ // qDebug(texter);
+ if( tester!=texter)
+ parseSearchResults( texter);
+ tester = texter;
+ }
+ if(searchDlg)
+ delete searchDlg;
+ }
+ if(checkBox->isChecked() ) {
+ accept();
+ } else {
+ setActiveWindow();
+ }
+}
+
+ /*
+ splits the result string and calls download for the current search result*/
+void LibraryDialog::parseSearchResults( QString resultStr)
+{
+
+ int stringLeng=resultStr.length();
+ QString my;
+ my.setNum( stringLeng, 10);
+
+ if( resultStr.length() > 2 && resultStr.length() < 130) {
+ int titleInt = resultStr.find( " : ", 0, TRUE);
+ DlglistItemTitle = resultStr.left( titleInt);
+ int yearInt = resultStr.find( " : ", titleInt+3, TRUE);
+ DlglistItemYear = resultStr.mid( titleInt+3, (yearInt - titleInt)-3);
+ DlglistItemFile = resultStr.right( resultStr.length() - (yearInt + 3));
+ download_Etext();
+ }
+ /*
+ printf( DlglistItemTitle+"\n"); printf( DlglistItemYear+"\n"); printf( DlglistItemFile+"\n");*/
+}
+
+ // bool LibraryDialog::UnzipIt( QString zipFile) {
+ // //////////TODO findsome other way of dealingwithzip files.
+ // ///usr/bin/unzip";
+ // if( QFile::exists( zipFile)) {
+ // // QString thatFile = local_library +"PGWHOLE.TXT";
+ // QString cmd;
+ // #if defined(_WS_X11_)
+ // cmd = "gunzip -d " + zipFile /*newestLibraryFile */+" -d " + local_library;
+ // #endif
+ // #if defined(_WS_WIN_)
+ // QString temp= QDir::convertSeparators(local_library);
+ // zipFile=QDir::convertSeparators( zipFile);
+ // cmd = temp+"unzip.exe -o " +zipFile/*newestLibraryFile */+" -d " + temp;
+ // #endif
+ // #ifndef Q_WS_QWS
+ // // QString cmd = "gunzip -d " + zipFile /*newestLibraryFile */+" -d " + local_library;
+ // cmd = "unzip " + zipFile;
+ // #endif
+
+ // int exit=QMessageBox::information(this, "Unzip?", "Ok to unzip "+ zipFile+" ?", QMessageBox::Yes, QMessageBox::No);
+ // if (exit==QMessageBox::Yes) {
+ // qDebug("Issuing the command "+cmd);
+ // #if defined(_WS_WIN_)
+ // WinExec( cmd, SW_HIDE );
+ // #endif
+ // #if defined(_WS_X11_)
+ // system( cmd);
+ // #endif
+ // #ifndef Q_WS_QWS
+ // system( cmd);
+ // #endif
+ // // printf("unzip\n");
+ // // remove( zipFile /*newestLibraryFile*/);
+ // return true;
+ // }
+ // else if(exit==QMessageBox::No) {
+ // // printf("unzip\n");
+ // return false;
+ // }
+ // } else {
+ // // QMessageBox::message( "Note",( tr("Please install unzip in your PATH")) );
+ // return false;
+ // }
+ // return true;
+ // }
+
+void LibraryDialog::sort()
+{
+
+}
+
+ /*
+ Downloads the current selected listitem*/
+bool LibraryDialog::getItem(QListViewItem *it)
+{
+ // qDebug("selected getItem");
+
+ // DlglistItemNumber = it->text(0);
+ DlglistItemTitle = it->text(0);
+ DlglistItemYear = it->text(2);
+ DlglistItemFile = it->text(3);
+
+ if(download_Etext()) {
+ if(i_binary == 1) {
+ }
+ }
+ return true;
+}
+
+ /*
+ download button is pushed so we get the current items to download*/
+bool LibraryDialog::onButtonDownload()
+{
+ // qDebug("selected onButtonDownloadz");
+
+ QListViewItemIterator it1( ListView1 );
+ QListViewItemIterator it2( ListView2 );
+ QListViewItemIterator it3( ListView3 );
+ QListViewItemIterator it4( ListView4 );
+ QListViewItemIterator it5( ListView5 );
+
+ // iterate through all items of the listview
+ for ( ; it1.current(); ++it1 ) {
+ if ( it1.current()->isSelected() )
+ getItem(it1.current());
+ it1.current()->setSelected(FALSE);
+ }
+ for ( ; it2.current(); ++it2 ) {
+ if ( it2.current()->isSelected() )
+ getItem(it2.current());
+ it2.current()->setSelected(FALSE);
+ }
+ for ( ; it3.current(); ++it3 ) {
+ if ( it3.current()->isSelected() )
+ getItem(it3.current());
+ it3.current()->setSelected(FALSE);
+ }
+ for ( ; it4.current(); ++it4 ) {
+ if ( it4.current()->isSelected() )
+ getItem(it4.current());
+ it4.current()->setSelected(FALSE);
+ }
+ for ( ; it5.current(); ++it5 ) {
+ if ( it5.current()->isSelected() )
+ getItem(it5.current());
+ it5.current()->setSelected(FALSE);
+ }
+ return true;
+}
+
+
+ /*
+ handles the sorting combo box */
+void LibraryDialog::comboSelect(int index)
+{
+ // qDebug("we are sorting");
+ ListView1->setSorting( index, TRUE);
+ ListView2->setSorting( index, TRUE);
+ ListView3->setSorting( index, TRUE);
+ ListView4->setSorting( index, TRUE);
+ ListView5->setSorting( index, TRUE);
+
+ ListView1->sort();
+ ListView2->sort();
+ ListView3->sort();
+ ListView4->sort();
+ ListView5->sort();
+
+ // ListView1->triggerUpdate();
+ // ListView2->triggerUpdate();
+ // ListView3->triggerUpdate();
+ // ListView4->triggerUpdate();
+ // ListView5->triggerUpdate();
+}
+
+void LibraryDialog::newList()
+{
+ if(indexLoaded) {
+ onButtonDownload();
+ } else {
+ Output *outDlg;
+ buttonNewList->setDown(TRUE);
+ QDir gutDir(QPEApplication::qpeDir()+"etc/gutenbrowser");
+ if(!gutDir.exists()) gutDir.mkdir(QPEApplication::qpeDir()+"etc/gutenbrowser",true);
+ if( chdir(QPEApplication::qpeDir()+"etc/gutenbrowser") == 0) {
+ qDebug("changing dir "+QPEApplication::qpeDir()+"etc/gutenbrowser");
+ QString gutenindex1 = QPEApplication::qpeDir()+"etc/gutenbrowser/GUTINDEX.ALL";
+ QString cmd="wget -O " + gutenindex1 + " http://sailor.gutenberg.org/GUTINDEX.ALL 2>&1";
+
+ int result = QMessageBox::warning( this,"Download"
+ ,"Ok to use /'wget/' to download\na new library list?\n"
+ ,"Yes","No",0,0,1);
+ qApp->processEvents();
+ if(result == 0) {
+ outDlg = new Output( 0, tr("Downloading Gutenberg Index...."),TRUE);
+ outDlg->showMaximized();
+ outDlg->show();
+ qApp->processEvents();
+ FILE *fp;
+ char line[130];
+ outDlg->OutputEdit->append( tr("Running wget") );
+ outDlg->OutputEdit->setCursorPosition(outDlg->OutputEdit->numLines() + 1,0,FALSE);
+ sleep(1);
+ fp = popen( (const char *) cmd, "r");
+ if ( !fp ) {
+ } else {
+ qDebug("Issuing the command\n"+cmd);
+ // system(cmd);
+ while ( fgets( line, sizeof line, fp)) {
+ outDlg->OutputEdit->append(line);
+ outDlg->OutputEdit->setCursorPosition(outDlg->OutputEdit->numLines() + 1,0,FALSE);
+ }
+ pclose(fp);
+ outDlg->OutputEdit->append("Finished downloading\n");
+ outDlg->OutputEdit->setCursorPosition(outDlg->OutputEdit->numLines() + 1,0,FALSE);
+ qApp->processEvents();
+
+ // if( QFile(gutenindex1).exists() ) {
+ // QString gutenindex=QPEApplication::qpeDir()+"etc/gutenbrowser/GUTINDEX.ALL";
+ // if( rename(gutenindex1.latin1(),gutenindex.latin1()) !=0)
+ // qDebug("renaming error");
+ // }
+
+ }
+ // outDlg->close();
+ FindLibrary();
+ if(outDlg) delete outDlg;
+ }
+ buttonNewList->setDown(FALSE);
+ } else {
+ QMessageBox::message("Note","Could not change directories");
+ }
+ // if(outDlg)
+ // delete outDlg;
+ }
+}
+
+bool LibraryDialog::moreInfo()
+{
+
+ QListViewItem * item;
+ item = 0;
+ QString titleString;
+ item = ListView1->currentItem();
+ if( item != 0) {
+ titleString = item->text(0);
+ ListView1->clearSelection();
+ item = 0;
+ }
+ if( item == 0)
+ item = ListView2->currentItem();
+ if( item != 0) {
+ titleString = item->text(0);
+ ListView2->clearSelection();
+ item = 0;
+ }
+ if( item == 0)
+ item = ListView3->currentItem();
+ if( item != 0) {
+ titleString = item->text(0);
+ ListView3->clearSelection();
+ item = 0;
+ }
+ if( item == 0)
+ item = ListView4->currentItem();
+ if( item != 0) {
+ titleString = item->text(0);
+ ListView4->clearSelection();
+ item = 0;
+ }
+ if( item == 0)
+ item = ListView5->currentItem();
+ if( item != 0) {
+ titleString = item->text(0);
+ ListView5->clearSelection();
+ item = 0;
+ }
+ item=0;
+ if(titleString.length()>2) {
+ qDebug( "Title is "+titleString );
+ titleString.replace( QRegExp("\\s"), "%20");
+ titleString.replace( QRegExp("'"), "%20");
+ titleString.replace( QRegExp("\""), "%20");
+ titleString.replace( QRegExp("&"), "%20");
+ QString cmd= "http://google.com/search?q="+titleString+"&num=30&sa=Google+Search";
+ cmd="opera "+cmd;
+ system(cmd);
+ } else
+ QMessageBox::message( "Note","If you select a title, this will\nsearch google.com for that title.");
+ return true;
+
+}
+
+ /*
+ This loads the library Index*/
+void LibraryDialog::FindLibrary()
+{
+ buttonLibrary->setDown(TRUE);
+
+ qApp->processEvents();
+ if( QFile( new_index).exists() /* && this->isHidden() */) {
+ newindexLib.setName( new_index);
+ indexLib.setName( new_index);
+ qDebug("index file is "+ new_index);
+ Newlibrary();
+ } else {
+ newindexLib.setName( old_index);
+ indexLib.setName( old_index);
+ qDebug("new index nameis "+ old_index);
+ Library();
+ }
+ indexLoaded=true;
+ buttonSearch->setEnabled(TRUE);
+ moreInfoButton->setEnabled(TRUE);
+
+ buttonLibrary->setDown(FALSE);
+ buttonNewList->setText("Download");
+ qApp->processEvents();
+
+}