diff --git a/src/qtgui/rclmain.cpp b/src/qtgui/rclmain.cpp
index 1c0e5755..9b2f0df5 100644
--- a/src/qtgui/rclmain.cpp
+++ b/src/qtgui/rclmain.cpp
@@ -62,7 +62,6 @@ void RclMain::init()
sortform = 0;
sortwidth = 0;
uiprefs = 0;
- docsource = 0;
// We manage pgup/down, but let ie the arrows for the editor to process
resList->reslistTE->installEventFilter(this);
@@ -287,12 +286,7 @@ void RclMain::startAdvSearch(Rcl::AdvSearchData sdata)
return;
curPreview = 0;
- if (docsource) {
- delete docsource;
- docsource = 0;
- resList->setDocSource(0);
- }
-
+ DocSequence *docsource;
if (sortwidth > 0) {
DocSequenceDb myseq(rcldb, tr("Query results"));
docsource = new DocSeqSorted(myseq, sortwidth, sortspecs,
@@ -379,7 +373,7 @@ void RclMain::showUIPrefs()
void RclMain::startPreview(int docnum)
{
Rcl::Doc doc;
- if (!docsource->getDoc(docnum, doc, 0)) {
+ if (!resList->getDoc(docnum, doc)) {
QMessageBox::warning(0, "Recoll",
tr("Cannot retrieve document info"
" from database"));
@@ -423,7 +417,7 @@ void RclMain::startPreview(int docnum)
void RclMain::startNativeViewer(int docnum)
{
Rcl::Doc doc;
- if (!docsource->getDoc(docnum, doc, 0, 0)) {
+ if (!resList->getDoc(docnum, doc)) {
QMessageBox::warning(0, "Recoll",
tr("Cannot retrieve document info"
" from database"));
@@ -491,12 +485,8 @@ void RclMain::showDocHistory()
LOGDEB(("RclMain::showDocHistory\n"));
resList->m_winfirst = -1;
curPreview = 0;
- if (docsource) {
- delete docsource;
- docsource = 0;
- resList->setDocSource(0);
- }
+ DocSequence *docsource;
if (sortwidth > 0) {
DocSequenceHistory myseq(rcldb, m_history, tr("Document history"));
docsource = new DocSeqSorted(myseq, sortwidth, sortspecs,
diff --git a/src/qtgui/rclmain.h b/src/qtgui/rclmain.h
index af697a37..a5c78891 100644
--- a/src/qtgui/rclmain.h
+++ b/src/qtgui/rclmain.h
@@ -52,7 +52,6 @@ protected:
UIPrefsDialog *uiprefs;
int sortwidth;
RclSortSpec sortspecs;
- DocSequence *docsource;
RclDHistory *m_history;
private:
virtual void init();
diff --git a/src/qtgui/reslistb.ui b/src/qtgui/reslistb.ui
index c0d72649..a8541a28 100644
--- a/src/qtgui/reslistb.ui
+++ b/src/qtgui/reslistb.ui
@@ -100,7 +100,9 @@
init()
+ destroy()
reldocnumfromparnum( int )
+ getDoc( int, Rcl::Doc & )
setDocSource(DocSequence *)
diff --git a/src/qtgui/reslistb.ui.h b/src/qtgui/reslistb.ui.h
index 1a4a0d8a..8aca9324 100644
--- a/src/qtgui/reslistb.ui.h
+++ b/src/qtgui/reslistb.ui.h
@@ -34,9 +34,30 @@ void ResListBase::init()
m_car = -1;
m_waitingdbl = false;
m_dblclck = false;
+ m_docsource = 0;
}
-// how we format the title etc..
+void ResListBase::destroy()
+{
+ if (m_docsource)
+ delete m_docsource;
+}
+
+// Acquire new docsource
+void ResListBase::setDocSource(DocSequence *docsource)
+{
+ if (m_docsource)
+ delete m_docsource;
+ m_docsource = docsource;
+ showResultPage();
+}
+
+bool ResListBase::getDoc(int docnum, Rcl::Doc &doc)
+{
+ return m_docsource ? m_docsource->getDoc(docnum, doc, 0, 0) : false;
+}
+
+// Get document number-in-window from paragraph number
int ResListBase::reldocnumfromparnum(int par)
{
std::map::iterator it = m_pageParaToReldocnums.find(par);
@@ -50,10 +71,10 @@ int ResListBase::reldocnumfromparnum(int par)
return rdn;
}
-// Double click in result list: use external viewer to display file
+// Double click in result list
void ResListBase::doubleClicked(int par, int )
{
- LOGDEB(("RclMain::reslist::doubleClicked: par %d\n", par));
+ LOGDEB(("ResListBase::doubleClicked: par %d\n", par));
m_dblclck = true;
int reldocnum = reldocnumfromparnum(par);
if (reldocnum < 0)
@@ -61,16 +82,14 @@ void ResListBase::doubleClicked(int par, int )
emit docDoubleClicked(m_winfirst + reldocnum);
}
-
-// Display preview for the selected document, and highlight entry. The
-// paragraph number is doc number in window + 1
-// We don't actually do anything but start a timer because we want to
-// check first if this might be a double click
+// Single click in result list: we don't actually do anything but
+// start a timer because we want to check first if this might be a
+// double click
void ResListBase::clicked(int par, int car)
{
if (m_waitingdbl)
return;
- LOGDEB(("RclMain::reslistTE_clicked:wfirst %d par %d char %d drg %d\n",
+ LOGDEB(("ResListBase::clicked:wfirst %d par %d char %d drg %d\n",
m_winfirst, par, car, m_mouseDrag));
if (m_winfirst == -1 || m_mouseDrag)
return;
@@ -81,19 +100,20 @@ void ResListBase::clicked(int par, int car)
m_waitingdbl = true;
m_dblclck = false;
// Wait to see if there's going to be a dblclck
- QTimer::singleShot(150, this, SLOT(reslistTE_delayedclick()) );
+ QTimer::singleShot(150, this, SLOT(delayedClick()) );
}
// This gets called by a timer 100mS after a single click in the
// result list. We don't want to start a preview if the user has
-// requested a native viewer by double-clicking
+// requested a native viewer by double-clicking. If this was not actually
+// a double-clik, we finally say it's a click, and change the active paragraph
void ResListBase::delayedClick()
{
- LOGDEB(("RclMain::reslistTE_delayedclick:\n"));
+ LOGDEB(("ResListBase::delayedClick:\n"));
m_waitingdbl = false;
if (m_dblclck) {
- LOGDEB1(("RclMain::reslistTE_delayedclick: dbleclick\n"));
+ LOGDEB1(("ResListBase::delayedclick: dbleclick\n"));
m_dblclck = false;
return;
}
@@ -138,7 +158,7 @@ void ResListBase::resPageDownOrNext()
{
int vpos = reslistTE->contentsY();
reslistTE->moveCursor(QTextEdit::MovePgDown, false);
- LOGDEB(("RclMain::resPageDownOrNext: vpos before %d, after %d\n",
+ LOGDEB(("ResListBase::resPageDownOrNext: vpos before %d, after %d\n",
vpos, reslistTE->contentsY()));
if (vpos == reslistTE->contentsY())
showResultPage();
@@ -154,12 +174,6 @@ void ResListBase::resultPageBack()
showResultPage();
}
-void ResListBase::setDocSource(DocSequence *docsource)
-{
- m_docsource = docsource;
- showResultPage();
-}
-
// Fill up result list window with next screen of hits
void ResListBase::showResultPage()
{
diff --git a/src/qtgui/ssearchb.ui.h b/src/qtgui/ssearchb.ui.h
index e6be684e..edcab344 100644
--- a/src/qtgui/ssearchb.ui.h
+++ b/src/qtgui/ssearchb.ui.h
@@ -23,11 +23,10 @@ void SSearchBase::searchTextChanged( const QString & text )
}
}
-
void SSearchBase::startSimpleSearch()
{
- LOGDEB(("RclMain::queryText_returnPressed()\n"));
- // The db may have been closed at the end of indexing
+ LOGDEB(("SSearchBase::startSimpleSearch\n"));
+
Rcl::AdvSearchData sdata;
QCString u8 = queryText->text().utf8();