summaryrefslogtreecommitdiff
authorllornkcor <llornkcor>2005-03-01 07:56:26 (UTC)
committer llornkcor <llornkcor>2005-03-01 07:56:26 (UTC)
commit2f2b707684582cfa97c96c5fabab2197a7c7f307 (patch) (side-by-side diff)
tree72df20aae2b443f649f73e7f983eefe53a54109d
parente12f0049687c84c24f0b7b737b65df2ed6a500a5 (diff)
downloadopie-2f2b707684582cfa97c96c5fabab2197a7c7f307.zip
opie-2f2b707684582cfa97c96c5fabab2197a7c7f307.tar.gz
opie-2f2b707684582cfa97c96c5fabab2197a7c7f307.tar.bz2
update to new gutenberg directory structures
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--noncore/apps/opie-gutenbrowser/LibraryDialog.cpp644
-rw-r--r--noncore/apps/opie-gutenbrowser/LibraryDialog.h7
-rw-r--r--noncore/apps/opie-gutenbrowser/NetworkDialog.cpp25
-rw-r--r--noncore/apps/opie-gutenbrowser/gutenbrowser.cpp38
4 files changed, 352 insertions, 362 deletions
diff --git a/noncore/apps/opie-gutenbrowser/LibraryDialog.cpp b/noncore/apps/opie-gutenbrowser/LibraryDialog.cpp
index 549c1d2..3b540c5 100644
--- a/noncore/apps/opie-gutenbrowser/LibraryDialog.cpp
+++ b/noncore/apps/opie-gutenbrowser/LibraryDialog.cpp
@@ -1,1085 +1,1069 @@
/***************************************************************************
// 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>
+//#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. */
+ * 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_index;
// 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");
- odebug << "Library Dialog: ftp_host is "+ftp_host << oendl;
- // ftp_host=ftp_host.right(ftp_host.length()-(ftp_host.find(") ",0,TRUE)+1) );
+ //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;
config.setGroup("SortAuth");
- if( config.readEntry("authSort", "FALSE") == "TRUE")
- authBox->setChecked(TRUE);
+ if( config.readEntry("authSort", "false") == "true")
+ authBox->setChecked(true);
config.setGroup("General");
downDir =config.readEntry( "DownloadDirectory",local_library);
- odebug << "downDir is "+downDir << oendl;
+ //odebug << "downDir is "+downDir << oendl;
newindexLib.setName( old_index);
indexLib.setName( old_index);
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();
+void LibraryDialog::clearItems() {
+ ListView1->clear();
+ ListView2->clear();
+ ListView3->clear();
+ ListView4->clear();
+ ListView5->clear();
}
/*This groks using PGWHOLE.TXT */
void LibraryDialog::Newlibrary()
{
+ clearItems();
#ifndef Q_WS_QWS //sorry embedded gutenbrowser cant use zip files
- //odebug << "Opening new library index " << newindexLib << "" << oendl;
+ ////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 );
+ file = indexLine.mid( indexLine.find( "[", 0, true )+1, 12 );
+ 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)
- && (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 );
+ title = indexLine.mid( indexLine.find(" ", 26, true), indexLine.length() );
- 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 );
+ addItems();
- 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();
+void LibraryDialog::Library() {
+ clearItems();
- odebug << "opening GUTINDEX.ALL file" << oendl;
+// 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);
+
+ if( (indexLine.mid(4,4)).toInt() ) {
+
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 );
+ addItems();
- 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 ( indexLine.mid(73,5).toInt() && indexLine.mid(73,5).toInt() > 10000 ) {
+// newer files with numbers > 100000 have new dir structure and need to be parsed differently..
+ number = indexLine.mid(73,5);
+ int num = number.toInt();
+ if(num < 10626)
+ year = "2003";
+ else if(num >= 10626 && num < 14600)
+ year = "2004";
+ else if(num >= 14600)
+ year = "2005";
- 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 );
+ file = number;// + ".txt";
+ title = indexLine.mid(0,72);
- 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 );
- }
- }
+ addItems();
+ // qDebug("file number is " + number + " title is " + title );
}
}
}
indexLib.close();
} else {
QString sMsg;
- sMsg = ( tr("<p>Error opening local library index:</P> "))+local_index;
+
+ sMsg = ( tr("<p>Error opening library index file. Please download a new one.</P> "));
QMessageBox::message( "Error",sMsg);
}
-
} //end Library()
/*
Groks the author out of the title */
bool LibraryDialog::getAuthor()
{
- if( title.contains( ", by", TRUE)) {
+ if( title.contains( ", by", true)) {
int auth;
- auth = title.find(", by", 0, TRUE);
+ auth = title.find(", by", 0, true);
author = title.right(title.length() - (auth + 4) );
- if( int finder = author.find("[", 0, TRUE)) {
+ if( int finder = author.find("[", 0, true)) {
author = author.left(finder);
}
}
- else if ( title.contains( "by, ", TRUE) ) {
+ else if ( title.contains( "by, ", true) ) {
int auth;
- auth = title.find("by, ", 0, TRUE);
+ auth = title.find("by, ", 0, true);
author = title.right(title.length() - (auth + 4) );
- if( int finder = author.find("[", 0, TRUE)) {
+ if( int finder = author.find("[", 0, true)) {
author = author.left( finder);
}
}
- else if ( title.contains( " by", TRUE) ) {
+ else if ( title.contains( " by", true) ) {
int auth;
- auth = title.find(" by", 0, TRUE);
+ auth = title.find(" by", 0, true);
author = title.right(title.length() - (auth + 3) );
- if( int finder = author.find("[", 0, TRUE)) {
+ if( int finder = author.find("[", 0, true)) {
author = author.left( finder);
}
}
- else if ( title.contains( "by ", TRUE) ) {
+ else if ( title.contains( "by ", true) ) {
int auth;
- auth = title.find("by ", 0, TRUE);
+ auth = title.find("by ", 0, true);
author = title.right(title.length() - (auth + 3) );
- if( int finder = author.find("[", 0, TRUE)) {
+ if( int finder = author.find("[", 0, true)) {
author = author.left( finder);
}
}
- else if ( title.contains( ",", TRUE) ) {
+ else if ( title.contains( ",", true) ) {
int auth;
- auth = title.find(",", 0, TRUE);
+ auth = title.find(",", 0, true);
author = title.right( title.length() - (auth + 1) );
- if ( author.contains( ",", TRUE) ) {
+ if ( author.contains( ",", true) ) {
int auth;
- auth = author.find(",", 0, TRUE);
+ auth = author.find(",", 0, true);
author = author.right( author.length() - (auth + 1) );
}
- if( int finder = author.find("[", 0, TRUE)) {
+ if( int finder = author.find("[", 0, true)) {
author = author.left( finder);
}
}
- else if ( title.contains( "/", TRUE) ) {
+ else if ( title.contains( "/", true) ) {
int auth;
- auth = title.find("/", 0, TRUE);
+ auth = title.find("/", 0, true);
author = title.right(title.length() - (auth + 1) );
- if( int finder = author.find("[", 0, TRUE)) {
+ if( int finder = author.find("[", 0, true)) {
author = author.left( finder);
}
}
- else if ( title.contains( "of", TRUE) ) {
+ else if ( title.contains( "of", true) ) {
int auth;
- auth = title.find("of", 0, TRUE);
+ auth = title.find("of", 0, true);
author = title.right(title.length() - (auth + 2) );
- if( int finder = author.find("[", 0, TRUE))
+ 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);
+ auth = author.find("et. al", 0, true);
author = author.left( auth );
}
if ( author.contains("#")) {
int auth;
- auth = author.find("#", 0, TRUE);
+ auth = author.find("#", 0, true);
author = author.left( auth);
}
if ( author.contains("(")) {
int auth;
- auth = author.find("(", 0, TRUE);
+ auth = author.find("(", 0, true);
author = author.left( auth);
}
if ( author.contains("et al")) {
int auth;
- auth = author.find("et al", 0, TRUE);
+ auth = author.find("et al", 0, true);
author = author.left( auth );
}
- QRegExp r = QRegExp("[0-9]", TRUE, FALSE);
+ 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
+ author = author.stripWhiteSpace();
+ 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;
+ }
return true;
}////// end getAuthor()
+void LibraryDialog::addItems() {
+ cleanStrings();
+ getAuthor(); // grok author
+ if( !number.isEmpty()
+ && (title.find( "reserved",0, FALSE) == -1)
+ && (file.find( "]",0, true) == -1)
+ &&(title.find( "Audio",0, FALSE) == -1)) {
+// qDebug("new item "+title);
+ // 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 );
+ }
+ }
+}
+
/*
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;
+ // todo check for connection here
- // check for connection here
- // if( get_extext())
-
- if(download_Etext()) {
- // odebug << "get here 2" << oendl;
- if(i_binary == 1) {
+ bool ok = false;
+ qDebug(DlglistItemFile);
+ if( DlglistItemFile.toInt() > 10000 ) {
+ // new directory sturcture
+ if( download_newEtext())
+ ok = true;
+ } else {
+ if(download_Etext())
+ ok = true;
}
- if(checkBox->isChecked () ) {
+ if(ok) {
+ if(checkBox->isChecked () )
accept();
}
}
}
-}
-bool LibraryDialog::download_Etext()
+bool LibraryDialog::download_newEtext()
{ // ftp method
- // might have to use old gpl'd ftp for embedded!!
+ QString fileName = DlglistItemFile;
+
+ QString directory;
+ int stringlength = DlglistItemFile.length();
+ for(i = 0; i < stringlength - 1; i++ ) {
+ directory += "/"+ DlglistItemFile[i];
+ }
+
+ directory += "/" + DlglistItemFile;
+
+// qWarning(directory);
+
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;
+ QString dir = ftp_base_dir + directory;
+ QString outputFile = local_library + ".guten_temp";
+ QString file = fileName + ".txt";
- 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;
+ networkList.append((const char *)ftp_host); //host
+ networkList.append((const char *)dir); //ftp base directory
+ networkList.append((const char *)outputFile); //output filepath
+ networkList.append((const char *)file); //filename
- NetworkDialog *NetworkDlg;
- NetworkDlg = new NetworkDialog( this,"Network Protocol Dialog", TRUE, 0, networkList);
+ getEtext( networkList);
+
+ return true;
+}
+bool LibraryDialog::getEtext(const QStringList &networkList)
+{
+ NetworkDialog *NetworkDlg;
+ NetworkDlg = new NetworkDialog( this,"Network Protocol Dialog", true, 0, networkList);
- if( NetworkDlg->exec() != 0 ) { // use new, improved, *INSTANT* network-dialog-file-getterer
+// use new, improved, *INSTANT* network-dialog-file-getterer
+ if( NetworkDlg->exec() != 0 ) {
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;
+ qDebug("Just downloaded " + NetworkDlg->localFileName);
- // }
- // rename .txt to .etx
if(NetworkDlg->successDownload) {
- odebug << "Filename is "+File_Name << oendl;
+ //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;
+ //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;
+ //odebug << "Setting doclink" << oendl;
DocLnk lnk;
- odebug << "name is "+name_file << oendl;
+ //odebug << "name is "+name_file << oendl;
lnk.setName(name_file); //sets file name
- odebug << "Title is "+DlglistItemTitle << oendl;
+ //odebug << "Title is "+DlglistItemTitle << oendl;
lnk.setComment(DlglistItemTitle);
- odebug << "Filename is "+File_Name << oendl;
+ //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;
+ //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::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);
+ //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";
+
+ qDebug( "Download file: " +NewlistItemFile);
+ qDebug("Checking: " + ftp_host + " " + dir + " " + outputFile+" " + NewlistItemFile);
+
+
+ QStringList networkList;
+ networkList.append((const char *)ftp_host); //host
+ networkList.append((const char *)dir); //ftp base directory
+ networkList.append((const char *)outputFile); //output filepath
+ networkList.append((const char *)NewlistItemFile); //filename
+//<< (char *)ftp_host << (char *)dir << (char *)outputFile << (char *)NewlistItemFile;
+ getEtext( networkList);
+
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 ) );
+ 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");
- 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;
+ //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;
}
}
+
+ 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) {
+ if( httpBox->isChecked() == true) {
checked = 1;
config.setGroup( "Proxy" );
- config.writeEntry("IsChecked", "TRUE");
+ config.writeEntry("IsChecked", "true");
} else {
checked = 0;
config.setGroup( "Proxy" );
- config.writeEntry("IsChecked", "FALSE");
+ config.writeEntry("IsChecked", "false");
}
- if (authBox->isChecked() == TRUE) {
+ if (authBox->isChecked() == true) {
config.setGroup("SortAuth");
- config.writeEntry("authSort", "TRUE");
+ config.writeEntry("authSort", "true");
} else {
config.setGroup("SortAuth");
- config.writeEntry("authSort", "FALSE");
+ 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 = 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;
+ // //odebug << texter << oendl;
resultLs= SearchResultsDialog->resultsList;
i_berger = 1;
+ } else {
+ resultLs.clear();
}
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;
+ // //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);
+
+ int titleInt = resultStr.find( " : ", 0, true);
DlglistItemTitle = resultStr.left( titleInt);
- int yearInt = resultStr.find( " : ", titleInt+3, TRUE);
+
+ int yearInt = resultStr.find( " : ", titleInt+3, true);
+
DlglistItemYear = resultStr.mid( titleInt+3, (yearInt - titleInt)-3);
+
DlglistItemFile = resultStr.right( resultStr.length() - (yearInt + 3));
- download_Etext();
+ DlglistItemFile = DlglistItemFile.left( DlglistItemFile.length() - 2);
+
+ cleanStrings();
+
+ if(DlglistItemFile.left(1) == "/")
+ DlglistItemFile = DlglistItemFile.right( DlglistItemFile.length() - 1);
+
+
+ if( DlglistItemFile.toInt() > 10000 ) {
+ // new directory sturcture
+ download_newEtext(); //)
+ } else {
+ 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;
+ // //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;
+ // //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);
+ it1.current()->setSelected(false);
}
for ( ; it2.current(); ++it2 ) {
if ( it2.current()->isSelected() )
getItem(it2.current());
- it2.current()->setSelected(FALSE);
+ it2.current()->setSelected(false);
}
for ( ; it3.current(); ++it3 ) {
if ( it3.current()->isSelected() )
getItem(it3.current());
- it3.current()->setSelected(FALSE);
+ it3.current()->setSelected(false);
}
for ( ; it4.current(); ++it4 ) {
if ( it4.current()->isSelected() )
getItem(it4.current());
- it4.current()->setSelected(FALSE);
+ it4.current()->setSelected(false);
}
for ( ; it5.current(); ++it5 ) {
if ( it5.current()->isSelected() )
getItem(it5.current());
- it5.current()->setSelected(FALSE);
+ 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);
+ // //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";
+ buttonNewList->setDown(true);
+ //odebug << "changing dir "+QPEApplication::qpeDir()+"etc/gutenbrowser" << oendl;
+ QString gutenindex1 = local_library + "/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 = 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);
+ 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;
+ //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);
+ 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);
+ 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;
+ // //odebug << "renaming error" << oendl;
// }
}
// outDlg->close();
FindLibrary();
if(outDlg) delete outDlg;
}
- buttonNewList->setDown(FALSE);
- } else {
- QMessageBox::message("Note","Could not change directories");
- }
+ buttonNewList->setDown(false);
+
// 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;
+ //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);
+ 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;
+ //odebug << "index file is "+ new_index << oendl;
Newlibrary();
} else {
newindexLib.setName( old_index);
indexLib.setName( old_index);
- odebug << "new index nameis "+ old_index << oendl;
+ //odebug << "new index nameis "+ old_index << oendl;
Library();
}
indexLoaded=true;
- buttonSearch->setEnabled(TRUE);
- moreInfoButton->setEnabled(TRUE);
+ buttonSearch->setEnabled(true);
+ moreInfoButton->setEnabled(true);
- buttonLibrary->setDown(FALSE);
+ buttonLibrary->setDown(false);
buttonNewList->setText("Download");
qApp->processEvents();
}
+
+void LibraryDialog::cleanStrings() {
+ year = year.stripWhiteSpace();
+ file = file.stripWhiteSpace();
+ title = title.stripWhiteSpace();
+ number = number.stripWhiteSpace();
+
+}
diff --git a/noncore/apps/opie-gutenbrowser/LibraryDialog.h b/noncore/apps/opie-gutenbrowser/LibraryDialog.h
index f5bfe08..8d6352f 100644
--- a/noncore/apps/opie-gutenbrowser/LibraryDialog.h
+++ b/noncore/apps/opie-gutenbrowser/LibraryDialog.h
@@ -1,126 +1,133 @@
/***************************************************************************
LibraryDialog.h - 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. *
***************************************************************************/
#ifndef LIBRARYDIALOG_H
#define LIBRARYDIALOG_H
#include <qpe/config.h>
#include "SearchDialog.h"
#include "NetworkDialog.h"
#include <qstringlist.h>
#include <qdialog.h>
#include <qcheckbox.h>
#include <qdatetime.h>
#include <qfile.h>
#include <qheader.h>
#include <qlistview.h>
#include <qmessagebox.h>
#include <qregexp.h>
#include <qstring.h>
#include <qtextstream.h>
#include <qlabel.h>
#include <stdlib.h>
#include <qtabwidget.h>
class QVBoxLayout;
class QHBoxLayout;
class QGridLayout;
class QListView;
class QListViewItem;
class QPushButton;
//class QTabWidget;
class QWidget;
//class Gutenbrowser;
class LibraryDialog : public QDialog {
Q_OBJECT
public:
LibraryDialog( QWidget* parent = 0, const char* name = 0 , bool modal = TRUE, WFlags fl = 0 );
~LibraryDialog();
QTabWidget *tabWidget;
QListView *ListView1,*ListView2,*ListView3,*ListView4,*ListView5;
QWidget *widget_1,*widget_2,*widget_3,*widget_4,*widget_5,*widget_6;
QString ftp_host,ftp_base_dir;
QLabel *statusLabel;
QListViewItem *QList_Item1,*QList_Item2,*QList_Item3,*QList_Item4,*QList_Item5;
QStringList list,ItemStrlist,Searchlist,resultLs;
// QStringList list1,list2,list3,list4;
QPushButton *buttonSearch,*buttonCancel,*buttonDownload,*buttonLibrary,*buttonNewList,*moreInfoButton;
QString new_index,old_index;
QFile newindexLib,indexLib;
int checked;
int i_binary;
bool useSmallInterface;
bool indexLoaded;
QPushButton *cancel,*DownloadAll;
QCheckBox *checkBox,*httpBox,*authBox;
// QCheckBox * httpBox;
QString filename;
QString downDir;
int ftpNumb;
int i;
QString year,title,number,file,author;
QString DlglistItemNumber,DlglistItemFile,DlglistItemYear,DlglistItemTitle,NewlistItemFile;
QString m_getFilePath;
QString Edir;
QString index;
QString IDontKnowWhy;
QString local_library;
QString local_index;
QString File_Name;
QString proxy_http;
int doitAll;
QString texter;
// CConfigFile *config;
void parseSearchResults( QString resultStr);
public slots:
bool getItem(QListViewItem* );
void doListView();
void FindLibrary();
void newList();
void Newlibrary();
void Library();
bool getAuthor();
void select_title(QListViewItem*);
void cancelIt();
void sort();
bool moreInfo();
// void DownloadEmAll();
bool httpDownload();
bool setTitle();
void saveConfig();
bool download_Etext();
+ bool download_newEtext();
+
void onButtonSearch();
bool onButtonDownload();
// bool UnzipIt( QString fileName);
void comboSelect(int index);
protected slots:
protected:
void initDialog();
QHBoxLayout *hbox,*hbox1,*hbox2;
QVBoxLayout *vbox;
// void search_slot();
+private:
+ void addItems();
+ void clearItems();
+ void cleanStrings();
+ bool getEtext(const QStringList &);
};
#endif // LIBRARYDIALOG_H
diff --git a/noncore/apps/opie-gutenbrowser/NetworkDialog.cpp b/noncore/apps/opie-gutenbrowser/NetworkDialog.cpp
index a321952..ba583ad 100644
--- a/noncore/apps/opie-gutenbrowser/NetworkDialog.cpp
+++ b/noncore/apps/opie-gutenbrowser/NetworkDialog.cpp
@@ -1,279 +1,278 @@
// /***************************************************************************
// NetworkDialog.cpp - description
// begin : Sun Aug 27 2000
// copyright : (C) 2000 - 2004 by L.J. Potter
// email : ljp@llornkcor.com
// * This program is free software; you can redistribute it and/or modify *
// * it under the terms of the GNU General Public License as published by *
// * the Free Software Foundation; either version 2 of the License, or *
// * (at your option) any later version. *
// ***************************************************************************/
// // half-assed attempt at providing a network dialog.
// /* Created: Sun Aug 27 15:24:52 2000*/
#include "NetworkDialog.h"
#include "gutenbrowser.h"
/* OPIE */
#include <opie2/odebug.h>
/* QT */
#include <qprogressbar.h>
#include <qstringlist.h>
#include <qpe/config.h>
#include <qvaluelist.h>
#include <qapplication.h>
#include <qfile.h>
#include <qstringlist.h>
#include <qlabel.h>
#include <qpushbutton.h>
#include <qlayout.h>
/* STD */
#include <unistd.h>
extern "C" {
#include <ftplib.h>
}
QProgressBar* ProgressBar1;
QPushButton* buttonCancel;
static netbuf *conn = NULL;
static int log_progress(netbuf *, int xfered, void *arg) {
int fsz = *(int *)arg;
int pct = (xfered * 100) / fsz;
printf("%3d%%\r", pct);
fflush(stdout);
ProgressBar1->setProgress(xfered);
qApp->processEvents();
return 1;
}
NetworkDialog::NetworkDialog( QWidget* parent, const char* name, bool modal, WFlags fl, const QStringList netL)
: QDialog( parent, name, modal, fl )
{
ftp_host = netL[0];
networkUrl = strUrl = netL[0];
dir = ftp_base_dir = netL[1];
localFileName = netL[2];
s_partialFileName = netL[3];
resize(240,120);
local_library = (QDir::homeDirPath ()) +"/Applications/gutenbrowser/";
// autoOk = autoDownload;
// if( networkUrl.find("ftp",0,false)== -1 ) {
// if ( !name )
// setName( "HTTP NetworkDialog" );
// setCaption( tr( "HTTP Download ) );
// qInitNetworkProtocols(); // registers ftp protocol // for now
// QNetworkProtocol::registerNetworkProtocol( "http", new QNetworkProtocolFactory<Http> );
// } else {
if ( !name )
setName( "FTP NetworkDialog" );
setCaption(tr("FTP Download"));
// }
initDialog(); //opens file to be written
}
NetworkDialog::~NetworkDialog() {
}
void NetworkDialog::initDialog() {
QGridLayout *layout = new QGridLayout( this );
totalBytesDownloaded=0;
warnLabel = new QLabel( this, "TextLabel" );
warnLabel ->setText( tr( "Download should start shortly" ) );
TextLabel3 = new QLabel( this, "TextLabel3" );
TextLabel3->setText( "");
layout->addMultiCellWidget( warnLabel, 0, 0, 0, 5 );
layout->addMultiCellWidget( TextLabel3, 1, 1, 0, 5 );
ProgressBar1 = new QProgressBar( this, "ProgressBar1" );
ProgressBar1->setProgress(0);
layout->addMultiCellWidget( ProgressBar1, 3, 3, 0, 4 );
// hbox->addStretch(1);
buttonCancel = new QPushButton( this, "buttonCancel" );
buttonCancel->setText( tr( "&Cancel" ) );
buttonCancel->setAutoDefault( TRUE );
buttonCancel->setDefault( TRUE );
layout->addMultiCellWidget( buttonCancel, 3, 3, 5, 5 );
connect(buttonCancel,SIGNAL(clicked()),this,SLOT(reject()));
QTimer::singleShot( 1000, this, SLOT( doOk() ));
}
/*
downloads the file networkUrl */
bool NetworkDialog::downloadFile( QString networkUrl )
{
int fsz;
warnLabel ->setText( "");
qApp->processEvents();
odebug << "Downloading: " << networkUrl << "" << oendl;
odebug << "Into: " << localFileName << "" << oendl;
if( networkUrl.length() > 5) {
QString ftp_user = "anonymous";
QString ftp_pass = "zaurus@gutenbrowser.com";
// ftp_host= networkUrl.mid(networkUrl.find("ftp://",0, TRUE),
if(ftp_host.length() < 2) {
odebug << "Please select an ftp host" << oendl;
successDownload=false;
QMessageBox::message("Note","You need to select an ftp host");
return false;
}
QString msg;
odebug << ftp_host << oendl;
odebug << "Opening ftp connection." << oendl;
warnLabel->setText("connecting to: "+ftp_host );
qApp->processEvents();
/////////// Open FTP connection
if (!FtpConnect( ftp_host.latin1(), &conn)) {
i=0;
successDownload=false;
QMessageBox::message("Note","Unable to connect to\n"+ftp_host);
return false;
}
TextLabel3->setText("Opening ftp connection.");
qApp->processEvents();
if (!FtpLogin( ftp_user.latin1(), ftp_pass.latin1(),conn )) {
FtpQuit(conn);
successDownload=false;
msg.sprintf("Unable to log in\n%s",FtpLastResponse(conn));
QMessageBox::message("Note",msg);
return false;
}
odebug << "Changing directories." << oendl;
TextLabel3->setText("Changing directories.");
qApp->processEvents();
if (!FtpChdir( dir.latin1(), conn )) {
successDownload=false;
msg.sprintf("Unable to change directories "+dir+"\n%s",FtpLastResponse(conn));
QMessageBox::message("Note",msg);
FtpQuit(conn);
return false;
}
// if (!FtpNlst( "./.guten_temp", dir, conn)) {
// successDownload=false;
// msg.sprintf("Unable to change directories "+dir+"\n%s",FtpLastResponse(conn));
// QMessageBox::message("Note",msg);
// FtpQuit(conn);
// return false;
// }
- odebug << "Requesting directory list." << oendl;
+ QString File_Name;
+
+ if( s_partialFileName.right(4) != ".txt") {
TextLabel3->setText("Getting directory list.");
qApp->processEvents();
if (!FtpDir( "./.guten_temp", dir.latin1(), conn) ) {
msg.sprintf("Unable to list the directory\n"+dir+"\n%s",FtpLastResponse(conn));
QMessageBox::message("Note",msg);
successDownload=false;
FtpQuit(conn);
return false;
}
QFile tmp("./.guten_temp");
- QString s, File_Name;
-
if (tmp.open(IO_ReadOnly)) {
QTextStream t( &tmp ); // use a text stream
- odebug << "Finding partial filename "+s_partialFileName << oendl;
+ //odebug << "Finding partial filename "+s_partialFileName << oendl;
+ QString s;
+
while ( !t.eof()) {
s = t.readLine();
if (s.contains(s_partialFileName, FALSE)) {
QString str = s.right( (s.length()) - (s.find(s_partialFileName, FALSE)) );
if (str.contains(".txt")) {
File_Name = str;
- odebug << "Found file_name "+ File_Name << oendl;
+ //odebug << "Found file_name "+ File_Name << oendl;
break;
}
-// if (str.contains(".zip")) {
-// File_Name = str;
-// odebug << "Found file_name "+ File_Name << oendl;
-// break;
-// }
-
}
} //end of while loop
tmp.close();
// tmp.remove(); ///TODO this is for release version Zaurus
}
- else
- odebug << "Error opening temp file." << oendl;
+ } else {
+ File_Name = s_partialFileName;
+ qDebug("new dir " + File_Name);
+ }
+
Config cfg("Gutenbrowser");
cfg.setGroup("General");
QString temp=cfg.readEntry("DownloadDirectory",local_library);
localFileName = temp+File_Name;
odebug << "Requesting file "+ File_Name << oendl;
odebug << "Saving as "+localFileName << oendl;
msg="Requesting file "+ File_Name;
TextLabel3->setText(msg);
qApp->processEvents();
if( File_Name.length()>3) {
if (!FtpSize( File_Name.latin1(), &fsz, FTPLIB_ASCII, conn))
fsz = 0;
QString temp;
temp.sprintf( File_Name+" "+" %dkb", fsz);
TextLabel3->setText(temp);
ProgressBar1->setTotalSteps(fsz);
FtpOptions(FTPLIB_CALLBACK, (long) log_progress, conn);
FtpOptions(FTPLIB_IDLETIME, (long) 1000, conn);
FtpOptions(FTPLIB_CALLBACKARG, (long) &fsz, conn);
FtpOptions(FTPLIB_CALLBACKBYTES, (long) fsz/10, conn);
if (!FtpGet( localFileName.latin1(), File_Name.latin1(), FTPLIB_ASCII, conn)) {
msg.sprintf("Could not download "+ File_Name+"\n%s",FtpLastResponse(conn));
successDownload=false;
QMessageBox::message("Note",msg);
update();
}
} else {
QMessageBox::message("Note","Could not download file "+ File_Name);
successDownload=false;
FtpQuit(conn);
return false;
}
odebug << "Ftp session successful" << oendl;
successDownload=TRUE;
FtpQuit(conn);
return true;
} //no network url
return false;
}
void NetworkDialog::doOk() {
owarn << "Do OK" << oendl;
QString loginStr;
loginStr = "gutenbrowser";
if ( !ftp_host.isEmpty() ) {
if( ftp_host.find( "/", ftp_host.length() - 1,TRUE) != -1 && ftp_host.find("ftp://",0, TRUE) != -1) {
TextLabel3->setText( tr( "List remote dir:\n" + ftp_host) );
// TextLabel2->setText( tr( "local file to download into: " +localFileName ) );
if( downloadFile(ftp_host))
successDownload = true;
else {
successDownload = false;
reject();
}
} else {
if(downloadFile(ftp_host))
successDownload = true;
else {
successDownload = false;
reject();
}
}
}
accept();
}
diff --git a/noncore/apps/opie-gutenbrowser/gutenbrowser.cpp b/noncore/apps/opie-gutenbrowser/gutenbrowser.cpp
index c7cdd83..413ab51 100644
--- a/noncore/apps/opie-gutenbrowser/gutenbrowser.cpp
+++ b/noncore/apps/opie-gutenbrowser/gutenbrowser.cpp
@@ -1,661 +1,661 @@
/***************************************************************************
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";
+ QString gutenIndex = local_library + "/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";
// 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);
+ QString filename = local_library + "/GUTINDEX.ALL";
+// QString filename = old_index;
- Config config("Gutenbrowser");
- config.setGroup( "Browser" );
- QString brow = config.readEntry("Preferred", "Opera");
- odebug << "Preferred browser is "+brow << oendl;
+// filename += url.right( url.length() - url.findRev("/",-1,TRUE) -1);
+
+ Config cfg("Gutenbrowser");
+ cfg.setGroup("FTPsite");
+ ftp_host=cfg.readEntry("SiteName", "sailor.gutenberg.org");
+ ftp_base_dir= cfg.readEntry("base", "/pub/gutenberg");
+
+// 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
+// QString cmd="wget -O " + gutenindex1 + " http://sailor.gutenberg.org/GUTINDEX.ALL 2>&1";
cmd="wget -O " + filename +" " + url+" 2>&1" ;
chdir(local_library);
- odebug << "Issuing the system command: " << cmd << "" << oendl;
+// //odebug << "Issuing the system command: " << cmd << "" << oendl;
Output *outDlg;
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();
}
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;
+// //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);