-rw-r--r-- | noncore/apps/opie-gutenbrowser/LibraryDialog.cpp | 265 | ||||
-rw-r--r-- | noncore/apps/opie-gutenbrowser/LibraryDialog.h | 15 | ||||
-rw-r--r-- | noncore/apps/opie-gutenbrowser/LibraryDialogData.cpp | 90 |
3 files changed, 170 insertions, 200 deletions
diff --git a/noncore/apps/opie-gutenbrowser/LibraryDialog.cpp b/noncore/apps/opie-gutenbrowser/LibraryDialog.cpp index 58babe9..9858188 100644 --- a/noncore/apps/opie-gutenbrowser/LibraryDialog.cpp +++ b/noncore/apps/opie-gutenbrowser/LibraryDialog.cpp @@ -135,64 +135,85 @@ void LibraryDialog::Library() { clearItems(); // qDebug( "opening GUTINDEX.ALL file"); IDontKnowWhy = ""; - if ( indexLib.open( IO_ReadOnly) ) { // file opened successfully + system("date"); + if ( indexLib.open( IO_ReadOnly) ) { +// file opened successfully QTextStream indexStream( &indexLib ); QString indexLine; qApp->processEvents(); - + + bool okToRead = false; while ( !indexStream.eof() ) { - indexLine = indexStream.readLine(); - if ( indexLine != "") { - - if( (indexLine.mid(4,4)).toInt() ) { - - year = indexLine.mid(4,4); - 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"); - file = tmpfile; - } - - number = indexLine.mid(55,5); - title = indexLine.mid( 9, 50 ); - - addItems(); - - } - 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"; - - file = number;// + ".txt"; - title = indexLine.mid(0,72); - - addItems(); - // qDebug("file number is " + number + " title is " + title ); - } + if(indexLine == "<==Start GUTINDEX.ALL listings==>") + okToRead = true; + if(indexLine == "<==End of GUTINDEX.ALL==>") { + okToRead = false; + indexLib.at(indexLib.size()); } + + if(okToRead) { + QStringList token = QStringList::split(' ', indexLine); + int textNumber; + if(( textNumber = token.last().toInt() )) + if(textNumber > 10001) { +// qWarning("Last "+token.last()); +// newer files with numbers > 100000 have new dir structure and need to be parsed differently.. + if(textNumber < 10626) + year = "2003"; + else if(textNumber >= 10626 && textNumber < 14600) + year = "2004"; + else if(textNumber >= 14600) + year = "2005"; + + file = token.last(); + title = indexLine.mid(0,72); + + addItems(); //author and qlistview + // qDebug("file number is " + number + " title is " + title ); + + } else { //end new etexts + + if(token[1].toInt() && token[1].toInt() > 1969) { + year = token[1]; + 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"); + file = tmpfile; + } + title = indexLine.mid( 9, 50); + + addItems(); + } + } else { // then try new format texts + file = token.last(); + title = indexLine.mid(0,72); + year = "1980"; + + addItems(); //author and qlistview + } + } //end old etexts + + } //end okToTRead } indexLib.close(); } else { QString sMsg; sMsg = ( tr("<p>Error opening library index file. Please download a new one.</P> ")); QMessageBox::message( "Error",sMsg); } + system("date"); + sortLists(0); + } //end Library() /* @@ -302,35 +323,42 @@ bool LibraryDialog::getAuthor() } return true; }////// end getAuthor() -void LibraryDialog::addItems() { +void LibraryDialog::addItems() +{ cleanStrings(); getAuthor(); // grok author - if( !number.isEmpty() - && (title.find( "reserved",0, FALSE) == -1) + + etext etextStruct; + 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 + etextStruct.title = title; + etextStruct.author = author; + etextStruct.year = year; + etextStruct.file = file; + + etextLibrary.append( etextStruct); + if( author.isEmpty() ) - QList_Item5 = new QListViewItem( ListView5, /*number, */title, author, year, file ); + QList_Item5 = new QListViewItem( ListView5, /*number, */author, title, 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 ); + if( author.find(QRegExp("[^a-fA-F]")) ) + QList_Item1 = new QListViewItem( ListView1, /* number,*/author, title, 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.find(QRegExp("[^g-mG-M]")) ) + QList_Item2 = new QListViewItem( ListView2, /* number,*/ author, title,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.find(QRegExp("[^n-rN-R]")) ) + QList_Item3 = new QListViewItem( ListView3, /* number,*/ author, title, 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 if(author.find(QRegExp("[^s-zS-Z]")) ) + QList_Item4 = new QListViewItem( ListView4, /* number,*/ author, title, year, file ); } } } @@ -674,88 +702,29 @@ void LibraryDialog::onButtonSearch() 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 + 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); - } - } - } + cS = false; + + etext etextStruct; + QValueList<etext>::Iterator it; + + for( it = etextLibrary.begin(); it != etextLibrary.end(); ++it ) { + QString tempTitle = (*it).title; + QString tempAuthor = (*it).author; + QString tempFile = (*it).file; + QString tempYear = (*it).year; + if(tempTitle.find( searcherStr, 0, cS) != -1 + || tempAuthor.find( searcherStr, 0, cS) != -1) { + qWarning(tempTitle); + Searchlist.append( tempTitle + " : " + tempYear + " : " + tempFile); + } + } + tabWidget->setCurrentPage( curTab); Searchlist.sort(); @@ -772,10 +741,8 @@ void LibraryDialog::onButtonSearch() 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; @@ -819,20 +786,30 @@ void LibraryDialog::parseSearchResults( QString resultStr) if(DlglistItemFile.left(1) == "/") DlglistItemFile = DlglistItemFile.right( DlglistItemFile.length() - 1); - if( DlglistItemFile.toInt() > 10000 ) { + if( DlglistItemFile.toInt() > 10000 || yearInt == 1980 ) { // new directory sturcture download_newEtext(); //) } else { download_Etext(); //) } } } -void LibraryDialog::sort() +void LibraryDialog::sortLists(int index) { - + + ListView1->setSorting(index); + ListView2->setSorting(index); + ListView3->setSorting(index); + ListView4->setSorting(index); + ListView5->setSorting(index); + ListView1->sort(); + ListView2->sort(); + ListView3->sort(); + ListView4->sort(); + ListView5->sort(); } /* Downloads the current selected listitem*/ @@ -1049,9 +1026,9 @@ void LibraryDialog::FindLibrary() indexLib.setName( old_index); //odebug << "new index nameis "+ old_index << oendl; Library(); } - indexLoaded=true; + indexLoaded =true; buttonSearch->setEnabled(true); moreInfoButton->setEnabled(true); buttonLibrary->setDown(false); @@ -1066,4 +1043,10 @@ void LibraryDialog::cleanStrings() { title = title.stripWhiteSpace(); number = number.stripWhiteSpace(); } + +void LibraryDialog::authBoxClicked() +{ + qApp->processEvents(); + FindLibrary(); +} diff --git a/noncore/apps/opie-gutenbrowser/LibraryDialog.h b/noncore/apps/opie-gutenbrowser/LibraryDialog.h index 8d6352f..95226b2 100644 --- a/noncore/apps/opie-gutenbrowser/LibraryDialog.h +++ b/noncore/apps/opie-gutenbrowser/LibraryDialog.h @@ -29,8 +29,9 @@ #include <qtextstream.h> #include <qlabel.h> #include <stdlib.h> #include <qtabwidget.h> +#include <qvaluelist.h> class QVBoxLayout; class QHBoxLayout; class QGridLayout; @@ -40,8 +41,16 @@ class QPushButton; //class QTabWidget; class QWidget; //class Gutenbrowser; +typedef struct { + QString title; + QString author; + QString year; + QString file; +} etext; + + class LibraryDialog : public QDialog { Q_OBJECT public: @@ -98,9 +107,9 @@ public slots: void Library(); bool getAuthor(); void select_title(QListViewItem*); void cancelIt(); - void sort(); + void sortLists(int); bool moreInfo(); // void DownloadEmAll(); bool httpDownload(); bool setTitle(); @@ -117,8 +126,10 @@ protected slots: protected: + QValueList<etext> etextLibrary; + void initDialog(); QHBoxLayout *hbox,*hbox1,*hbox2; QVBoxLayout *vbox; // void search_slot(); @@ -126,8 +137,10 @@ private: void addItems(); void clearItems(); void cleanStrings(); bool getEtext(const QStringList &); +private slots: + void authBoxClicked(); }; #endif // LIBRARYDIALOG_H diff --git a/noncore/apps/opie-gutenbrowser/LibraryDialogData.cpp b/noncore/apps/opie-gutenbrowser/LibraryDialogData.cpp index 60c1c75..bfbf84d 100644 --- a/noncore/apps/opie-gutenbrowser/LibraryDialogData.cpp +++ b/noncore/apps/opie-gutenbrowser/LibraryDialogData.cpp @@ -71,107 +71,80 @@ void LibraryDialog::initDialog(){ ListView5 = new QListView( widget_5, "ListView5" ); QGridLayout *layout5 = new QGridLayout(widget_5 ); - ListView1->addColumn( tr( "Title" ) ); - ListView1->setColumnWidthMode( 0, QListView::Manual ); - ListView1->setColumnWidth(0, 330); + ListView1->addColumn( tr( "Author" ), -1 ); + ListView1->setColumnAlignment( 1, 1 ); + + ListView1->addColumn( tr( "Title" ), -1 ); ListView1->setColumnAlignment( 0, 1 ); - ListView1->addColumn( tr( "Author" ) ); - ListView1->setColumnWidthMode( 1, QListView::Manual ); - ListView1->setColumnWidth(1, 170); - ListView1->setColumnAlignment( 1, 1 ); ListView1->addColumn( tr( "Year" ) ); ListView1->setColumnWidthMode( 2, QListView::Manual ); - ListView1->setColumnWidth(2, 50); ListView1->setColumnAlignment( 2, 1 ); - ListView1->addColumn( tr( "File" ) ); + ListView1->addColumn( tr( "File" ), -1 ); ListView1->setColumnWidthMode( 2, QListView::Manual ); - ListView1->setColumnWidth(2, 100); - ListView1->setColumnAlignment( 2, 1 ); - ListView2->addColumn( tr( "Title" ) ); - ListView2->setColumnWidthMode( 0, QListView::Manual ); - ListView2->setColumnWidth(0, 330); - ListView2->setColumnAlignment( 0, 1 ); + ListView1->setColumnAlignment( 2, 1 ); - ListView2->addColumn( tr( "Author" ) ); - ListView2->setColumnWidthMode( 1, QListView::Manual ); - ListView2->setColumnWidth(1, 170); + ListView2->addColumn( tr( "Author" ), -1 ); ListView2->setColumnAlignment( 1, 1 ); - ListView2->addColumn( tr( "Year" ) ); + ListView2->addColumn( tr( "Title" ), -1); + ListView2->setColumnAlignment( 0, 1 ); + + ListView2->addColumn( tr( "Year" ), -1 ); ListView2->setColumnWidthMode( 2, QListView::Manual ); - ListView2->setColumnWidth(2, 50); ListView2->setColumnAlignment( 2, 1 ); - ListView2->addColumn( tr( "File" ) ); + ListView2->addColumn( tr( "File" ), -1 ); ListView2->setColumnWidthMode( 3, QListView::Manual ); - ListView2->setColumnWidth(3, 100); ListView2->setColumnAlignment( 3, 1 ); - ListView3->addColumn( tr( "Title" ) ); - ListView3->setColumnWidthMode( 0, QListView::Manual ); - ListView3->setColumnWidth(0, 330); + ListView3->addColumn( tr( "Author" ), -1 ); + ListView3->setColumnAlignment( 1, 1 ); + + ListView3->addColumn( tr( "Title" ), -1 ); ListView3->setColumnAlignment( 0, 1 ); - ListView3->addColumn( tr( "Author" ) ); - ListView3->setColumnWidthMode( 1, QListView::Manual ); - ListView3->setColumnWidth(1, 170); - ListView3->setColumnAlignment( 1, 1 ); - ListView3->addColumn( tr( "Year" ) ); + ListView3->addColumn( tr( "Year" ), -1 ); ListView3->setColumnWidthMode( 2, QListView::Manual ); - ListView3->setColumnWidth(2, 50); ListView3->setColumnAlignment( 2, 1 ); - ListView3->addColumn( tr( "File" ) ); + ListView3->addColumn( tr( "File" ), -1 ); ListView3->setColumnWidthMode( 3, QListView::Manual ); - ListView3->setColumnWidth(3, 100); ListView3->setColumnAlignment( 3, 1 ); - ListView4->addColumn( tr( "Title" ) ); - ListView4->setColumnWidthMode( 0, QListView::Manual ); - ListView4->setColumnWidth(0, 330); - ListView4->setColumnAlignment( 0, 1 ); - - ListView4->addColumn( tr( "Author" ) ); - ListView4->setColumnWidthMode( 1, QListView::Manual ); - ListView4->setColumnWidth(1, 170); + ListView4->addColumn( tr( "Author" ), -1 ); ListView4->setColumnAlignment( 1, 1 ); + ListView4->addColumn( tr( "Title" ), -1 ); + ListView4->setColumnAlignment( 0, 1 ); - ListView4->addColumn( tr( "Year" ) ); + ListView4->addColumn( tr( "Year" ), -1 ); ListView4->setColumnWidthMode( 2, QListView::Manual ); - ListView4->setColumnWidth(2, 50); ListView4->setColumnAlignment( 2, 1 ); - ListView4->addColumn( tr( "File" ) ); + ListView4->addColumn( tr( "File" ), -1 ); ListView4->setColumnWidthMode( 3, QListView::Manual ); - ListView4->setColumnWidth(3, 100); ListView4->setColumnAlignment( 3, 1 ); - ListView5->addColumn( tr( "Title" ) ); - ListView5->setColumnWidthMode( 0, QListView::Manual ); - ListView5->setColumnWidth(0, 330); + ListView5->addColumn( tr( "Author" ), -1 ); + ListView5->setColumnAlignment( 1, 1 ); + + ListView5->addColumn( tr( "Title" ), -1 ); ListView5->setColumnAlignment( 0, 1 ); - ListView5->addColumn( tr( "Author" ) ); - ListView5->setColumnWidthMode( 1, QListView::Manual ); - ListView5->setColumnWidth(1, 170); - ListView5->setColumnAlignment( 1, 1 ); - ListView5->addColumn( tr( "Year" ) ); + ListView5->addColumn( tr( "Year" ), -1 ); ListView5->setColumnWidthMode( 2, QListView::Manual ); - ListView5->setColumnWidth(2, 50); ListView5->setColumnAlignment( 2, 1 ); - ListView5->addColumn( tr( "File" ) ); + ListView5->addColumn( tr( "File" ), -1 ); ListView5->setColumnWidthMode( 3, QListView::Manual ); - ListView5->setColumnWidth(3, 100); ListView5->setColumnAlignment( 3, 1 ); tabWidget->insertTab( widget_1, tr( "A-F" ) ); tabWidget->insertTab( widget_2, tr( "G-M" ) ); @@ -206,10 +179,10 @@ void LibraryDialog::initDialog(){ checkBox->setChecked( FALSE); // httpBox = new QCheckBox( ( tr("Use http")),widget_6); // httpBox->setChecked( FALSE); // QToolTip::add( httpBox, ( tr("Use http to download \nproxy users should probably use this.")) ); - authBox= new QCheckBox( ( tr("Last name first \n(requires library restart)")),widget_6); - authBox->setChecked( FALSE); + authBox= new QCheckBox( ( tr("Last name first.")),widget_6); + authBox->setChecked( true); layout1->addMultiCellWidget( ListView1, 0, 0, 0, 4); layout2->addMultiCellWidget( ListView2, 0, 0, 0, 4); layout3->addMultiCellWidget( ListView3, 0, 0, 0, 4); @@ -271,8 +244,9 @@ void LibraryDialog::initDialog(){ connect(ListView4,SIGNAL(doubleClicked(QListViewItem*)),SLOT(select_title(QListViewItem*))); connect(ListView4,SIGNAL(returnPressed(QListViewItem*)),SLOT(select_title(QListViewItem*))); connect(ListView5,SIGNAL(doubleClicked(QListViewItem*)),SLOT(select_title(QListViewItem*))); connect(ListView5,SIGNAL(returnPressed(QListViewItem*)),SLOT(select_title(QListViewItem*))); + connect(authBox,SIGNAL(clicked()),this,SLOT(authBoxClicked())); connect(sortingCombo,SIGNAL(activated(int)),SLOT(comboSelect(int))); } |