Main Page | Class Hierarchy | Class List | File List | Class Members | File Members

search.cpp

Go to the documentation of this file.
00001 /***************************************************************************
00002  *                                                                         *
00003  *   search.cpp                                                            *
00004  *                                                                         *
00005  *   This program is free software; you can redistribute it and/or modify  *
00006  *   it under the terms of the GNU General Public License as published by  *
00007  *   the Free Software Foundation; either version 2 of the License, or     *
00008  *   (at your option) any later version.                                   *
00009  *                                                                         *
00010  *   Read the file COPYING for details.                                    *
00011  *                                                                         *
00012  *   copyright: (C) 2003 by Jan Mueller                                    *
00013  *   email: janmueller7@hotmail.com                                        *
00014  *                                                                         *
00015  ***************************************************************************/
00016 
00017 #include "search.h"
00018 #include "readonlyformbase.h"
00019 #include <qglobal.h>
00020 #include <qlabel.h>
00021 #include <qsqlquery.h>
00022 #include <qlayout.h>
00023 #include <qregexp.h>
00024 #include <qtextbrowser.h>
00025 #include <qlineedit.h>
00026 #include <qpushbutton.h>
00027 #include <qcheckbox.h>
00028 #include <qmessagebox.h>
00029 #include <qptrlist.h>
00030 #include <threadsearchevent.h>
00031 #include <fillsearchlist.h>
00032 #include "error.h"
00033 #include <qapplication.h>
00034 #include "urlevent.h"
00035 #include "searchtextbrowser.h"
00036 
00037 Search::Search(LitUrl u, QObject *receiver, QString slot, QWidget *parent, const char *name): 
00038   ReadOnlyFormBase(u, receiver, slot, parent, name), fillsearchlist(0L) {
00039     searchform=new SearchForm(this, "searchform");
00040     QHBoxLayout *l=new QHBoxLayout(this);
00041     l->addWidget(searchform);
00042     Q_ASSERT(searchform);  
00043     setData();
00044     connect(searchform->start, SIGNAL(pressed()), this, SLOT(startSearch()));
00045     connect(searchform->results, SIGNAL(linkClicked(const QString&)), this, SLOT(linkClicked(const QString&)));
00046     connect(&threadtimer, SIGNAL(timeout()), SLOT(checkThreads()));
00047   }
00048 
00049 void Search::checkThreads() {
00050   if(fillsearchlist && fillsearchlist->finished()) {
00051     searchform->start->setEnabled(true);
00052     threadtimer.stop();
00053   }
00054 }
00055 
00056 void Search::linkClicked(const QString &link) {
00057   debug("Link clicked: "+link);
00058   qApp->postEvent(topLevelWidget(), new UrlEvent(link, true));
00059 }
00060   
00061 
00062 void Search::customEvent(QCustomEvent *e) {
00063   ThreadSearchEvent *l=dynamic_cast<ThreadSearchEvent*>(e);
00064   if(l) searchform->results->append(l->result());
00065 }
00066 
00067 void Search::startSearch() {
00068   try {
00069     searchform->start->setEnabled(false);
00070     QString q=searchform->query->text();
00071     q=q.simplifyWhiteSpace();
00072     QStringList sl=QStringList::split(' ', q);
00073 
00074     searchform->results->clear();
00075     fillsearchlist=new FillSearchList(this, sl);
00076     fillsearchlist->start();
00077     threadtimer.start(200, false);
00078   } catch(Error &e) {
00079     setValid(false);
00080     QMessageBox::warning(this, "Error", e.message());
00081   }
00082 }
00083 
00084 bool Search::setData() {
00085   setValid(true);
00086   return true;
00087 }
00088 
00089 Search::~Search() {
00090 }
00091 
00092 
00093 

Generated on Sat Mar 27 19:20:44 2004 for Literature by doxygen 1.3.6-20040222