author | llornkcor <llornkcor> | 2005-02-28 09:24:10 (UTC) |
---|---|---|
committer | llornkcor <llornkcor> | 2005-02-28 09:24:10 (UTC) |
commit | 61fa699140c5efbb6ba0bf2a62f7e8fbf62976be (patch) (side-by-side diff) | |
tree | 7b3695c8a13d694487011526e3ae052b69b6d5fb | |
parent | 7d4beaf7922f15451da6ba65c2e21fb569887b52 (diff) | |
download | opie-61fa699140c5efbb6ba0bf2a62f7e8fbf62976be.zip opie-61fa699140c5efbb6ba0bf2a62f7e8fbf62976be.tar.gz opie-61fa699140c5efbb6ba0bf2a62f7e8fbf62976be.tar.bz2 |
fix index dl from main view, user 8 bit files by default, do not show audio files
-rw-r--r-- | noncore/apps/opie-gutenbrowser/LibraryDialog.cpp | 1553 | ||||
-rw-r--r-- | noncore/apps/opie-gutenbrowser/gutenbrowser.cpp | 27 |
2 files changed, 799 insertions, 781 deletions
diff --git a/noncore/apps/opie-gutenbrowser/LibraryDialog.cpp b/noncore/apps/opie-gutenbrowser/LibraryDialog.cpp index 7426e80..549c1d2 100644 --- a/noncore/apps/opie-gutenbrowser/LibraryDialog.cpp +++ b/noncore/apps/opie-gutenbrowser/LibraryDialog.cpp @@ -1,1078 +1,1085 @@ /*************************************************************************** // 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 "LibraryDialog.h" #include "output.h" /* OPIE */ #include <qpe/applnk.h> #include <qpe/qpeapplication.h> #include <qpe/qpedialog.h> #include <opie2/odebug.h> /* QT */ #include <qpushbutton.h> #include <qmultilineedit.h> //#include <qlayout.h> /* STD */ #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 ) + : QDialog( parent, name, true/* modal*/, fl ) { - if ( !name ) - setName( "LibraryDialog" ); - indexLoaded=false; - initDialog(); + if ( !name ) + setName( "LibraryDialog" ); + indexLoaded=false; + initDialog(); // this->setMaximumWidth(240); - index = "GUTINDEX.ALL"; - local_library = (QDir::homeDirPath ()) +"/Applications/gutenbrowser/"; - local_index = local_library + index; + index = "GUTINDEX.ALL"; + local_library = (QDir::homeDirPath ()) +"/Applications/gutenbrowser/"; + local_index = local_library + index; - QString iniFile ; - iniFile = QPEApplication::qpeDir()+"etc/gutenbrowser/gutenbrowserrc"; + QString iniFile ; + iniFile = QPEApplication::qpeDir()+"etc/gutenbrowser/gutenbrowserrc"; - new_index =QPEApplication::qpeDir()+"etc/gutenbrowser/PGWHOLE.TXT"; + new_index =QPEApplication::qpeDir()+"etc/gutenbrowser/PGWHOLE.TXT"; - old_index = QPEApplication::qpeDir()+"etc/gutenbrowser/GUTINDEX.ALL"; - // old_index = QPEApplication::qpeDir()+"etc/gutenbrowser/GUTINDEX.ALL"; + 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"; + // iniFile = local_library+"gutenbrowserrc"; + // new_index = local_library + "PGWHOLE.TXT"; + // old_index = local_library + "GUTINDEX.ALL"; - Config config("Gutenbrowser"); + Config config("Gutenbrowser"); - config.setGroup( "HttpServer" ); - proxy_http = config.readEntry("Preferred", "http://sailor.gutenbook.org"); + config.setGroup( "HttpServer" ); + proxy_http = config.readEntry("Preferred", "http://sailor.gutenbook.org"); - config.setGroup( "FTPsite" ); - ftp_host=config.readEntry("SiteName", "sailor.gutenberg.org"); - odebug << "Library Dialog: ftp_host is "+ftp_host << oendl; - // 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"); + config.setGroup( "FTPsite" ); + ftp_host=config.readEntry("SiteName", "sailor.gutenberg.org"); + odebug << "Library Dialog: ftp_host is "+ftp_host << oendl; + // 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; + i_binary = 0; - config.setGroup("SortAuth"); - if( config.readEntry("authSort", "FALSE") == "TRUE") - authBox->setChecked(TRUE); + config.setGroup("SortAuth"); + if( config.readEntry("authSort", "FALSE") == "TRUE") + authBox->setChecked(TRUE); - config.setGroup("General"); - downDir =config.readEntry( "DownloadDirectory",local_library); - odebug << "downDir is "+downDir << oendl; - newindexLib.setName( old_index); - indexLib.setName( old_index); + config.setGroup("General"); + downDir =config.readEntry( "DownloadDirectory",local_library); + odebug << "downDir is "+downDir << oendl; + newindexLib.setName( old_index); + indexLib.setName( old_index); - new QPEDialogListener(this); - QTimer::singleShot( 1000, this, SLOT( FindLibrary()) ); + new QPEDialogListener(this); + QTimer::singleShot( 1000, this, SLOT( FindLibrary()) ); } LibraryDialog::~LibraryDialog() { // delete QList_Item2; // delete QList_Item1; // delete QList_Item3; // delete QList_Item4; // delete QList_Item5; - // saveConfig(); + // saveConfig(); } /*This groks using PGWHOLE.TXT */ void LibraryDialog::Newlibrary() { #ifndef Q_WS_QWS //sorry embedded gutenbrowser cant use zip files - //odebug << "Opening new library index " << newindexLib << "" << oendl; - 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 + //odebug << "Opening new library index " << newindexLib << "" << oendl; + 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 // odebug << "Sorting last name first" << oendl; - 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(); - } + 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) + && (title.find( "Audio",0, FALSE) == -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); + setCursor( arrowCursor); #endif #endif } // end Newlibrary() void LibraryDialog::Library() {// old library groking method - ListView1->clear(); - ListView2->clear(); - ListView3->clear(); - ListView4->clear(); - ListView5->clear(); - - odebug << "opening GUTINDEX.ALL file" << oendl; - 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)); - //odebug << "file is "+file << oendl; - /// 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(); - //odebug << "title is "+title << oendl; - getAuthor(); // grok author - author = author.stripWhiteSpace(); - //odebug << "author is "+author << oendl; - 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("<p>Error opening local library index:</P> "))+local_index; - QMessageBox::message( "Error",sMsg); - } + ListView1->clear(); + ListView2->clear(); + ListView3->clear(); + ListView4->clear(); + ListView5->clear(); + + odebug << "opening GUTINDEX.ALL file" << oendl; + 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)); + + + if(file.find("?", 0, false) != -1 ) { + QString tmpfile = file.replace(QRegExp("[?]"), "8"); +// qDebug( "file is now " + tmpfile ); + file = tmpfile; + } + +// 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(); + //odebug << "title is "+title << oendl; + getAuthor(); // grok author + author = author.stripWhiteSpace(); + //odebug << "author is "+author << oendl; + 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) + &&(title.find( "Audio",0, FALSE) == -1)) { + // 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("<p>Error opening local library index:</P> "))+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; + 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; - odebug << "string from librarydialog is:" << DlglistItemYear << " " << DlglistItemFile << " " << DlglistItemNumber << "" << oendl; - odebug << "Title is "+DlglistItemTitle << oendl; - - // check for connection here - // if( get_extext()) - - if(download_Etext()) { - // odebug << "get here 2" << oendl; - if(i_binary == 1) { - - } - if(checkBox->isChecked () ) { - accept(); - } - } - } + 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; + odebug << "string from librarydialog is:" << DlglistItemYear << " " << DlglistItemFile << " " << DlglistItemNumber << "" << oendl; + odebug << "Title is "+DlglistItemTitle << oendl; + + // check for connection here + // if( get_extext()) + + if(download_Etext()) { + // odebug << "get here 2" << oendl; + 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"); - - odebug << "about to network dialog" << oendl; - 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)); - odebug << "NewlistItemFile is now "+NewlistItemFile << oendl; - } - NewlistItemYear = DlglistItemYear.right(2); - int NewlistItemYear_Int = NewlistItemYear.toInt(0, 10); - odebug << NewlistItemYear << oendl; - 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"; - //odebug << "Download file:" << NewlistItemFile << "" << oendl; - odebug << "Checking: "+ftp_host+" "+dir+" "+outputFile+" "+NewlistItemFile << oendl; - QStringList networkList; - networkList.append((const char *)ftp_host); - networkList.append((const char *)dir); - networkList.append((const char *)outputFile); - networkList.append((const char *)NewlistItemFile); + Config cfg("Gutenbrowser"); + cfg.setGroup("FTPsite"); + ftp_host=cfg.readEntry("SiteName", "sailor.gutenberg.org"); + ftp_base_dir= cfg.readEntry("base", "/pub/gutenberg"); + + odebug << "about to network dialog" << oendl; + 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)); + odebug << "NewlistItemFile is now "+NewlistItemFile << oendl; + } + NewlistItemYear = DlglistItemYear.right(2); + int NewlistItemYear_Int = NewlistItemYear.toInt(0, 10); + odebug << NewlistItemYear << oendl; + 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"; + //odebug << "Download file:" << NewlistItemFile << "" << oendl; + odebug << "Checking: "+ftp_host+" "+dir+" "+outputFile+" "+NewlistItemFile << oendl; + 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; - odebug << "back to Library from Network Dialog" << oendl; - odebug << "Just downloaded "+NetworkDlg->localFileName << oendl; - - // 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); - // odebug << "File_Name now is "+File_Name << oendl; - - // } - // rename .txt to .etx - if(NetworkDlg->successDownload) { - odebug << "Filename is "+File_Name << oendl; - 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; - - odebug << "Filename is now "+File_Name << oendl; - - } - if(File_Name.length() > 5 ) { - setTitle(); - QFileInfo fi(File_Name); - QString name_file=fi.fileName(); - name_file=name_file.left(name_file.length()-4); - - odebug << "Setting doclink" << oendl; - DocLnk lnk; - odebug << "name is "+name_file << oendl; - lnk.setName(name_file); //sets file name - odebug << "Title is "+DlglistItemTitle << oendl; - lnk.setComment(DlglistItemTitle); - - odebug << "Filename is "+File_Name << oendl; - 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()) { - odebug << "Writing doclink did not work" << oendl; - } else { - } - } else - QMessageBox::message("Note","<p>There was an error with the file</p>"); - } - } - return true; + 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; + odebug << "back to Library from Network Dialog" << oendl; + odebug << "Just downloaded "+NetworkDlg->localFileName << oendl; + + // 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); + // odebug << "File_Name now is "+File_Name << oendl; + + // } + // rename .txt to .etx + if(NetworkDlg->successDownload) { + odebug << "Filename is "+File_Name << oendl; + 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; + + odebug << "Filename is now "+File_Name << oendl; + + } + if(File_Name.length() > 5 ) { + setTitle(); + QFileInfo fi(File_Name); + QString name_file=fi.fileName(); + name_file=name_file.left(name_file.length()-4); + + odebug << "Setting doclink" << oendl; + DocLnk lnk; + odebug << "name is "+name_file << oendl; + lnk.setName(name_file); //sets file name + odebug << "Title is "+DlglistItemTitle << oendl; + lnk.setComment(DlglistItemTitle); + + odebug << "Filename is "+File_Name << oendl; + 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()) { + odebug << "Writing doclink did not work" << oendl; + } else { + } + } else + QMessageBox::message("Note","<p>There was an error with the file</p>"); + } + } + 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++; + 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; + return false; } void LibraryDialog::cancelIt() { - saveConfig(); + saveConfig(); - DlglistItemNumber = ""; - this->reject(); + DlglistItemNumber = ""; + this->reject(); } bool LibraryDialog::setTitle() { Config config("Gutenbrowser"); odebug << "setting title" << oendl; odebug << DlglistItemTitle << oendl; 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, ")" ); odebug << "Title being set is "+DlglistItemTitle << oendl; 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); - if(test == 0 ) { - - 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(); + 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; - // odebug << texter << oendl; - resultLs = SearchResultsDialog->resultsList; - i_berger = 1; - } else { - resultLs.clear(); + 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); } - Searchlist.clear(); - - // if(SearchResultsDialog) - // delete SearchResultsDialog; - QString tester; - for ( QStringList::Iterator it = resultLs.begin(); it != resultLs.end(); ++it ) { - texter.sprintf("%s \n",(*it).latin1()); - // odebug << texter << oendl; - if( tester!=texter) - parseSearchResults( texter); - tester = texter; - } - if(searchDlg) - delete searchDlg; - } - if(checkBox->isChecked() ) { - accept(); - } else { - setActiveWindow(); - } + } + } + 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; + // odebug << texter << oendl; + 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()); + // odebug << texter << oendl; + 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");*/ + 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) { // odebug << "Issuing the command "+cmd << oendl; // #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) { - // odebug << "selected getItem" << oendl; - - // 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; + // odebug << "selected getItem" << oendl; + + // 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() { - // odebug << "selected onButtonDownloadz" << oendl; - - 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; + // odebug << "selected onButtonDownloadz" << oendl; + + 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) { - // odebug << "we are sorting" << oendl; - 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(); + // odebug << "we are sorting" << oendl; + 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) { odebug << "changing dir "+QPEApplication::qpeDir()+"etc/gutenbrowser" << oendl; 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" ,"<p>Ok to use /'wget/' to download a new library list?</P>" ,"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 { odebug << "Issuing the command\n"+cmd << oendl; // 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) // odebug << "renaming error" << oendl; // } } // 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) { - odebug << "Title is "+titleString << oendl; - 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","<p>If you select a title, this will search google.com for that title.</p>"); - return true; + 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) { + odebug << "Title is "+titleString << oendl; + 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","<p>If you select a title, this will search google.com for that title.</p>"); + 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); - odebug << "index file is "+ new_index << oendl; - Newlibrary(); - } else { - newindexLib.setName( old_index); - indexLib.setName( old_index); - odebug << "new index nameis "+ old_index << oendl; - Library(); - } - indexLoaded=true; - buttonSearch->setEnabled(TRUE); - moreInfoButton->setEnabled(TRUE); - - buttonLibrary->setDown(FALSE); - buttonNewList->setText("Download"); - qApp->processEvents(); + buttonLibrary->setDown(TRUE); + + qApp->processEvents(); + if( QFile( new_index).exists() /* && this->isHidden() */) { + newindexLib.setName( new_index); + indexLib.setName( new_index); + odebug << "index file is "+ new_index << oendl; + Newlibrary(); + } else { + newindexLib.setName( old_index); + indexLib.setName( old_index); + odebug << "new index nameis "+ old_index << oendl; + Library(); + } + indexLoaded=true; + buttonSearch->setEnabled(TRUE); + moreInfoButton->setEnabled(TRUE); + + buttonLibrary->setDown(FALSE); + buttonNewList->setText("Download"); + qApp->processEvents(); } diff --git a/noncore/apps/opie-gutenbrowser/gutenbrowser.cpp b/noncore/apps/opie-gutenbrowser/gutenbrowser.cpp index fac21da..c7cdd83 100644 --- a/noncore/apps/opie-gutenbrowser/gutenbrowser.cpp +++ b/noncore/apps/opie-gutenbrowser/gutenbrowser.cpp @@ -1,752 +1,763 @@ /*************************************************************************** gutenbrowser.cpp - description ------------------- begin : Mon Jul 24 22:33:12 MDT 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. * ***************************************************************************/ // http search // http://digital.library.upenn.edu/books/authors.html // http://digital.library.upenn.edu/books/titles.html // ftp://ibiblio.org/pub/docs/books/gutenberg/GUTINDEX.ALL // donate@gutenberg.net #include "editTitle.h" #include "gutenbrowser.h" #include "LibraryDialog.h" //#include "bookmarksdlg.h" #include "optionsDialog.h" #include "helpme.h" #include "NetworkDialog.h" #include "openetext.h" #include "output.h" /* OPIE */ #include <opie2/odebug.h> #include <qpe/qpeapplication.h> #include <qpe/fontdatabase.h> #include <qpe/config.h> #include <qpe/qcopenvelope_qws.h> #include <qpe/mimetype.h> #include <qpe/resource.h> #include <qpe/applnk.h> /* QT */ #include <qregexp.h> #include <qregion.h> #include <qpaintdevicemetrics.h> #include <qvaluelist.h> #include <qlabel.h> #include <qclipboard.h> #include <qpainter.h> #include <qpalette.h> #include <qobjectlist.h> #include <qfontdialog.h> #include <qtextview.h> #include <qbrush.h> #include <qfile.h> #include <qfontinfo.h> #include <qscrollview.h> #include <qpoint.h> /* STD */ #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/stat.h> #include <fcntl.h> #include <errno.h> static const int nfontsizes = 9; static const int fontsize[nfontsizes] = {8,9,10,11,12,13,14,18,24}; #ifdef NOQUICKLAUNCH Gutenbrowser::Gutenbrowser() Gutenbrowser(); #else Gutenbrowser::Gutenbrowser(QWidget *,const char*, WFlags ) #endif : QMainWindow() { // QCopEnvelope( "QPE/System", "setScreenSaverMode(int)" ) << QPEApplication::Enable; // QCopEnvelope e("QPE/System", "grabKeyboard(QString)" ); // e << ""; // QPEApplication::grabKeyboard(); showMainList=TRUE; working=false; this->setUpdatesEnabled(TRUE); // #ifndef Q_WS_QWS QString msg; msg="You have now entered unto gutenbrowser,\n"; msg+="make your self at home, sit back, relax and read something great.\n"; local_library = (QDir::homeDirPath ()) +"/Applications/gutenbrowser/"; setCaption("Gutenbrowser");// Embedded " VERSION); this->setUpdatesEnabled(TRUE); // bool firstTime=FALSE; topLayout = new QVBoxLayout( this, 0, 0, "topLayout"); menu = new QHBoxLayout(-1,"menu"); buttons2 = new QHBoxLayout(-1,"buttons2"); edits = new QHBoxLayout(-1,"edits"); useSplitter=TRUE; initConfig(); initMenuBar(); initButtonBar(); initStatusBar(); initView(); initSlots(); qDebug("init finished"); QPEApplication::setStylusOperation( mainList->viewport(),QPEApplication::RightOnHold); connect( mainList, SIGNAL( mouseButtonPressed( int, QListBoxItem *, const QPoint &)), this, SLOT( mainListPressed(int, QListBoxItem *, const QPoint &)) ); if( useIcons) toggleButtonIcons( TRUE); else toggleButtonIcons( FALSE); enableButtons(false); Config config("Gutenbrowser"); // populate menubuttonlist config.setGroup("General"); config.setGroup( "Files" ); QString s_numofFiles = config.readEntry("NumberOfFiles", "0" ); int i_numofFiles = s_numofFiles.toInt(); QString tempFileName; for (int i = 0; i <= i_numofFiles; i++) { // tempFileName.setNum(i); config.setGroup( "Files" ); QString ramble = config.readEntry( QString::number(i), "" ); config.setGroup( "Titles" ); QString tempTitle = config.readEntry( ramble, ""); config.setGroup( tempTitle); int index = config.readNumEntry( "LineNumber", -1 ); if( index != -1) { odebug << tempTitle << oendl; if(!tempTitle.isEmpty()) bookmarksMenu->insertItem( tempTitle); } } // QString gutenIndex= local_library + "GUTINDEX.ALL"; QString gutenIndex = QPEApplication::qpeDir()+ "etc/gutenbrowser/GUTINDEX.ALL"; qDebug("gutenindex "+gutenIndex ); if( QFile( gutenIndex).exists() ) { indexLib.setName( gutenIndex); } else { QString localLibIndexFile = QPEApplication::qpeDir()+ "etc/gutenbrowser/PGWHOLE.TXT"; // QString localLibIndexFile= local_library + "PGWHOLE.TXT"; newindexLib.setName( localLibIndexFile); } qDebug("attempting new library"); LibraryDlg = new LibraryDialog( this, "Library Index" /*, TRUE */); loadCheck = false; chdir(local_library); if(!showMainList) { Lview->setFocus(); // if(firstTime) // Bookmark(); for (int i=1;i< qApp->argc();i++) { qDebug("Suppose we open somethin"); if(!load(qApp->argv()[i])) return; } } else { fillWithTitles(); mainList->setFocus(); // mainList->setCurrentItem(0); } writeConfig(); QTimer::singleShot( 250, this, SLOT(hideView()) ); } //end init Gutenbrowser::~Gutenbrowser() { // QPEApplication::grabKeyboard(); // QPEApplication::ungrabKeyboard(); odebug << "Exit" << oendl; } /* Google.com search */ void Gutenbrowser::InfoBarClick() { QString text; if( Lview->hasSelectedText()) { Lview->copy(); QClipboard *cb = QApplication::clipboard(); text = cb->text(); } else { // text=title; text=this->caption(); } searchGoogle(text); } /* download http with wget or preferred browser */ void Gutenbrowser::goGetit( const QString &url, bool showMsg) { // int eexit=0; QString cmd; // config.read(); qApp->processEvents(); QString filename = QPEApplication::qpeDir(); if(filename.right(1)!="/") filename+="/etc/gutenbrowser/"; else filename+="etc/gutenbrowser/"; odebug << "filename "+filename << oendl; // QString filename = QDir::homeDirPath()+"/Applications/gutenbrowser/"; filename += url.right( url.length() - url.findRev("/",-1,TRUE) -1); Config config("Gutenbrowser"); config.setGroup( "Browser" ); QString brow = config.readEntry("Preferred", "Opera"); odebug << "Preferred browser is "+brow << oendl; if(!showMsg) { //if we just get the gutenindex.all cmd="wget -O " + filename +" " + url+" 2>&1" ; chdir(local_library); odebug << "Issuing the system command: " << cmd << "" << oendl; Output *outDlg; - outDlg = new Output(this, tr("Gutenbrowser Output"),FALSE); + + 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"); - odebug << "Issuing the command\n"+cmd << oendl; - // system(cmd); - while ( fgets( line, sizeof line, fp)) { - outDlg->OutputEdit->append(line); -// outDlg->OutputEdit->setCursorPosition(outDlg->OutputEdit->numLines() + 1,0,FALSE); + if ( !fp ) { + } else { + //odebug << "Issuing the command\n"+cmd << oendl; + // 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(); + } - pclose(fp); - outDlg->close(); + outDlg->close(); + if(outDlg) delete outDlg; } else { if( brow == "Konq") { cmd = "konqueror "+url+" &"; } if( brow == "Opera") { //for desktop testing cmd = "opera "+url+" &"; } // if( brow == "Opera") { // on Zaurus // cmd = "operagui "+url+" &"; // } if( brow == "Mozilla") { cmd = "mozilla "+url+" &"; } if( brow == "Netscape") { cmd = "netscape "+url+" &"; } if(brow == "wget") { // cmd="wget -q "+url+" &"; QString tempHtml=local_library+"webster.html"; cmd="wget -O "+tempHtml+" -q "+url; } chdir(local_library); odebug << "Issuing the sys command: " << cmd << "" << oendl; system(cmd); } } void Gutenbrowser::toggleButtonIcons( bool useEm) { QString pixDir; if(useEm) useEm=TRUE; pixDir=QPEApplication::qpeDir()+"pics/gutenbrowser"; odebug << "Docdir is "+QPEApplication::documentDir() << oendl; if( useIcons && QDir( pixDir).exists() ) { LibraryButton->setPixmap( Resource::loadPixmap("home") ); //in inline OpenButton->setPixmap( Resource::loadPixmap("gutenbrowser/openbook")); ForwardButton->setPixmap( Resource::loadPixmap("forward"));//in inline BackButton->setPixmap( Resource::loadPixmap("back") );//in inline SearchButton->setPixmap( Resource::loadPixmap("gutenbrowser/search") );//in inline lastBmkButton->setPixmap( Resource::loadPixmap("gutenbrowser/bookmark_folder")); setBookmarkButton->setPixmap( Resource::loadPixmap("gutenbrowser/bookmark") ); dictionaryButton->setPixmap( Resource::loadPixmap("gutenbrowser/spellcheck") ); InfoBar->setPixmap( Resource::loadPixmap("gutenbrowser/google")); } } bool Gutenbrowser::queryExit() { int exit=QMessageBox::information(this, "Quit...", "Do your really want to quit?", QMessageBox::Ok, QMessageBox::Cancel); if (exit==1) { writeConfig(); qApp->quit(); } else { }; return (exit==1); } // SLOT IMPLEMENTATION void Gutenbrowser::slotFilePrint() { } void Gutenbrowser::ByeBye() { if (b_queryExit) queryExit(); else { // writeConfig(); qApp->quit(); } } void Gutenbrowser::HelpBtn() { HelpMe* HelpDlg; HelpDlg = new HelpMe( this, "Help Dialog"); HelpDlg->showMaximized(); } void Gutenbrowser::DownloadIndex() { #ifndef Q_WS_QWS { switch( QMessageBox::information( 0, (tr("Download Library Index, or FTP sites?")), (tr("Do you want to download the newest\n" "Project Gutenberg Library Index?\n" "or select an ftp site?\n")), (tr("&Library Index")), (tr("&Ftp Site")), (tr("&Cancel")), 2, 2 ) ) { case 0: // index clicked, downloadLibIndex(); break; case 1: // ftp selected downloadFtpList(); break; case 2: // Cancel break; }; } #endif } // end DownloadIndex void Gutenbrowser::downloadFtpList() { // QString cmd="wget http://www.promo.net/pg/list.html"); //system(cmd); qApp->processEvents(); optionsDialog* optDlg; optDlg = new optionsDialog( this,"Options_Dlg", true); optDlg->getSite(); if(optDlg) delete optDlg; } void Gutenbrowser::downloadLibIndex() { // QString dwmloader = local_library + "pgwhole.zip"; // QString cmd = "lynx -source http://www.gutenberg.net/pgwhole.zip | cat >> " + dwmloader; // system(cmd); // QString outputFile= local_library+ "GUTINDEX.ALL"; // config.setGroup( "FTPsite" ); // ftp server config // ftp_host=config.readEntry("SiteName", ""); // ftp_base_dir= config.readEntry("base", ""); // QString networkUrl= "ftp://"+ftp_host+ftp_base_dir+"/GUTINDEX.ALL"; QDir dir( local_library); dir.cd("", TRUE); goGetit( "http://sailor.gutenberg.org/GUTINDEX.ALL", false); // until ghttp works on binaries -qt3 // goGetit( "http://www.gutenberg.net/pgwhole.zip", true); // until ghttp works on binaries -qt3 // NetworkDialog *NetworkDlg; // NetworkDlg = new NetworkDialog( this,"Network Protocol Dialog", TRUE, 0, networkUrl, outputFile ); // if( NetworkDlg->exec() != 0 ) // { // use new, improved, *INSTANT* network-dialog-file-getterer //// QMessageBox::message("Note",""); // } // if(NetworkDlg) // delete NetworkDlg; } void Gutenbrowser::PrintBtn() { } void Gutenbrowser::SearchBtn() { if( loadCheck) { odebug << "loadCheck: we have a loaded doc" << oendl; Search(); } // else // QMessageBox::message("Note","Sorry, can't search. No etext is loaded"); } void Gutenbrowser::ForwardBtn() { if( !ForwardButton->autoRepeat() && !ForwardButton->isDown()) { QString s; QString insertString; int pageSize= Lview->PageSize(); Lview->clear(); for(int fd=0; fd < pageSize - 1;fd++) { f.readLine(s, 256); if(useWrap) s.replace(QRegExp("\n"),""); insertString+=s; Lview->insertLine( s, -1); // odebug << s << oendl; currentLine++; } // Lview->insertAt( insertString,0,0, FALSE); currentFilePos = f.at(); // if( i_pageNum != pages) { // Lview->MultiLine_Ex::pageDown( FALSE); i_pageNum++; pageStopArray.resize(i_pageNum + 1); // int length = Lview->length(); pageStopArray[i_pageNum ] = currentFilePos; odebug << currentFilePos << " current page is number " << i_pageNum << ", pagesize " << pageSize << ", length " << Lview->length() << ", current " << pageStopArray[i_pageNum] << oendl; setStatus(); // Lview->setCursorPosition( 0, 0, FALSE); // } } else { odebug << "bal" << oendl; // if( i_pageNum != pages) { // // int newTop = Lview->Top(); // // if(Lview->lastRow() > i) // Lview->ScrollUp(1); // // i_pageNum++; // setStatus(); // Lview->setCursorPosition( Lview->Top(), 0, FALSE); // } } Lview->setFocus(); odebug << "page number " << i_pageNum << " line number " << currentLine << "" << oendl; } void Gutenbrowser::BackBtn() { if( i_pageNum > 0) { int pageSize= Lview->PageSize(); // int length=Lview->length(); i_pageNum--; currentFilePos = f.at(); odebug << currentFilePos << " move back to " << pageStopArray[i_pageNum - 1 ] << ", current page number " << i_pageNum << ", " << pageSize << ", length " << Lview->length() << oendl; if( i_pageNum < 2) { f.at( 0); } else { if(!f.at( pageStopArray[i_pageNum - 1] )) odebug << "File positioned backward did not work" << oendl; } QString s; // int sizeLine=0; Lview->clear(); // QString insertString; for(int fd = 0; fd < pageSize ;fd++) { // Lview->removeLine( Lview->PageSize() ); f.readLine(s, 256); if(useWrap) s.replace(QRegExp("\n"),""); currentLine++; // insertString+=s; Lview->insertLine( s, -1); } // Lview->insertAt( insertString,0,0, FALSE); if( !BackButton->autoRepeat() && !BackButton->isDown()) { QString topR; QString lastR; QString pageR; // int sizer = Lview->lastRow() - Lview->topRow(); // int i_topRow = Lview->topRow(); if( i_pageNum < 1) i_pageNum = 1; setCaption(QString::number(i_pageNum)); } else { // int newTop = Lview->Top(); // if(Lview->lastRow() > i) Lview->MultiLine_Ex::pageUp( FALSE); // Lview->ScrollDown(1); // i_pageNum--; if( i_pageNum < 1) i_pageNum = 1; setStatus(); // Lview->setCursorPosition( Lview->Top(), 0, FALSE); } } Lview->setFocus(); } void Gutenbrowser::doBeginBtn() { if(loadCheck) { qApp->processEvents(); BeginBtn(); } } // moves text to the very top = 0 void Gutenbrowser::TopBtn() { if(loadCheck) { if( i_pageNum != 0) { odebug << "top" << oendl; qApp->processEvents(); currentLine = 0; i_pageNum = 1; int pageSize = Lview->PageSize() ; Lview->clear(); QString s; f.at(0); for(int fd=0; fd < pageSize ;fd++) { f.readLine(s, 256); if(useWrap) s.replace(QRegExp("\n"),""); Lview->insertLine(s ,-1); currentLine++; } // Lview->setCursorPosition( 0,0, FALSE); i_pageNum=1; setStatus(); } Lview->setFocus(); } } //moves text to the start of the EText void Gutenbrowser::BeginBtn() { i_pageNum = 1; currentLine = 0; QString s_pattern="*END*THE SMALL PRINT"; QString sPattern2 = "*END THE SMALL PRINT"; int pageSize = Lview->PageSize(); Lview->clear(); // int lines = Lview->numLines(); int pos = 0;//, i = 0; int i_topRow = Lview->topRow(); QString LeftText;// = Lview->text(); // int linesPerPage = Lview->lastRow() - Lview->topRow(); // int pages = (( linesPerPage / Lview->editSize() ) ) +1; // int pageN = 0; i_pageNum = 1; int lastPage=1; int lineNo=0; QString s; f.at( 0); while ( !f.atEnd() ) { f.readLine(s, 256); lineNo++; LeftText = s; currentFilePos = f.at(); i_pageNum = lineNo/pageSize; if(lastPage < i_pageNum) { pageStopArray.resize(i_pageNum + 1); pageStopArray[i_pageNum ] = currentFilePos; // odebug << "new page number " << i_pageNum << ", found at " << currentFilePos << "" << oendl; } // lastPage = i_pageNum; if( LeftText.find( s_pattern, 0 , TRUE) != -1 || LeftText.find( sPattern2, 0 , TRUE) != -1 ) { odebug << "<<<<<< FOUND IT!! new page number " << i_pageNum << ", found at " << currentFilePos << "" << oendl; break; } } if(f.atEnd()) //in case we didnt find anything, we need to show something f.at(0); Lview->clear(); for(int fd=0; fd < pageSize - 1;fd++) { f.readLine(s, 256); if(useWrap) s.replace(QRegExp("\n"),""); Lview->insertLine( s, -1); currentLine++; } i_pageNum = lineNo/pageSize; pageStopArray.resize(i_pageNum + 1); // int length = Lview->length(); qApp->processEvents(); if( pos > i_topRow ) { // Lview->setCursorPosition( pos+linesPerPage+2/* - i_topRow+3 */,0, FALSE); } else { // Lview->setCursorPosition( pos+2 , 0, FALSE ); } Lview->deselect(); // AdjustStatus(); Lview->setFocus(); } /* sets the current page and place as a bookmark*/ void Gutenbrowser::setBookmark() { int eexit=QMessageBox::information(this, "Note", "Do you really want to \nset this bookmark?." ,QMessageBox::Yes, QMessageBox::No); if (eexit== 3) { currentFilePos = f.at(); Config cfg("Gutenbrowser"); cfg.setGroup("General"); file_name = cfg.readEntry("Current",""); qApp->processEvents(); odebug << "Setting book mark "+file_name << oendl; cfg.setGroup("Titles"); title = cfg.readEntry(file_name,""); odebug << "title is "+ title << oendl; cfg.setGroup( "Bookmarks" ); cfg.writeEntry("File Name",file_name); cfg.writeEntry("Page Number",QString::number(i_pageNum) ); cfg.writeEntry( "PagePosition", QString::number( pageStopArray[i_pageNum - 1])); cfg.writeEntry("Title", title); int row = Lview->topRow();// Lview->Top(); cfg.writeEntry("LineNumber",QString::number(row) ); cfg.setGroup(title); cfg.writeEntry("File Name",file_name); cfg.writeEntry( "LineNumber", QString::number( row)); cfg.writeEntry( "PagePosition", QString::number( pageStopArray[i_pageNum - 1])); cfg.writeEntry( "Page Number", QString::number( i_pageNum) ); cfg.write(); bookmarksMenu->insertItem( title); } } //end setBookmark /* goes to last set bookmark*/ void Gutenbrowser::Bookmark( int itemId) { // qApp->processEvents(); Config config("Gutenbrowser"); config.setGroup( "Bookmarks" ); odebug << "<<<<<< " << Lview->PageSize() << ", " << Lview->lastRow() - Lview->topRow() << "" << oendl; QString itemString; odebug << "menu item " << itemId << "" << oendl; QString tempTitle; QString s_Bmrkrow; QString s_pageNum; int Bmrkrow=0; int bookmarkPosition = 0; // qApp->processEvents(); config.setGroup( "Bookmarks" ); title = config.readEntry("Title", ""); file_name = config.readEntry("File Name", ""); i_pageNum = config.readNumEntry("Page Number", 0); bookmarkPosition = config.readNumEntry( "PagePosition",0); Bmrkrow = config.readNumEntry("LineNumber",0); if( !file_name.contains("/")) { file_name = local_library + file_name; } // getTitle(file_name); // qApp->processEvents(); // Lview->setFocus(); this->setFocus(); Lview->clear(); if(!load(file_name)) return; int pageSize = Lview->PageSize(); f.at(0); // Lview->clear(); QString s; int lineNo=0; int lastPage=1; while ( !f.atEnd() ) { f.readLine(s, 256); lineNo++; currentFilePos = f.at(); i_pageNum = lineNo/pageSize; if(lastPage < i_pageNum) { pageStopArray.resize(i_pageNum + 1); pageStopArray[i_pageNum ] = currentFilePos; // odebug << "new page number " << i_pageNum << ", found at " << currentFilePos << "" << oendl; } if(currentFilePos == bookmarkPosition) break; } if(f.atEnd()) f.at(0); else f.at( bookmarkPosition); for(int fd=0; fd < pageSize - 1;fd++) { f.readLine(s, 256); lineNo++; if(useWrap) s.replace(QRegExp("\n"),""); Lview->insertLine( s, -1); currentLine++; } i_pageNum = lineNo/pageSize; pageStopArray.resize(i_pageNum + 1); if(showMainList) { showMainList=FALSE; mainList->hide(); Lview->show(); // qApp->processEvents(); } odebug << "bookmark loaded" << oendl; setCaption(title); } bool Gutenbrowser::load( const char *fileName) { // QCopEnvelope ( "QPE/System", "busy()" ); odebug << "Title is already set as "+title << oendl; odebug << "sizeHint " << sizeHint().height() << " pageSize " << Lview->PageSize() << "" << oendl; // pointSize = Lview->fontInfo().pointSize(); |