make searchdata a more flexible struct
This commit is contained in:
parent
cdbf026738
commit
28b05f7fb2
@ -1,5 +1,5 @@
|
|||||||
#ifndef lint
|
#ifndef lint
|
||||||
static char rcsid[] = "@(#$Id: advsearch_w.cpp,v 1.4 2006-09-13 08:13:36 dockes Exp $ (C) 2005 J.F.Dockes";
|
static char rcsid[] = "@(#$Id: advsearch_w.cpp,v 1.5 2006-11-13 08:58:47 dockes Exp $ (C) 2005 J.F.Dockes";
|
||||||
#endif
|
#endif
|
||||||
/*
|
/*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
@ -161,7 +161,6 @@ void AdvSearch::addAFiltypPB_clicked()
|
|||||||
addFiltypPB_clicked();
|
addFiltypPB_clicked();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Activate file type selection
|
// Activate file type selection
|
||||||
void AdvSearch::restrictFtCB_toggled(bool on)
|
void AdvSearch::restrictFtCB_toggled(bool on)
|
||||||
{
|
{
|
||||||
@ -173,37 +172,60 @@ void AdvSearch::restrictFtCB_toggled(bool on)
|
|||||||
noFiltypsLB->setEnabled(on);
|
noFiltypsLB->setEnabled(on);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
using namespace Rcl;
|
||||||
void AdvSearch::searchPB_clicked()
|
void AdvSearch::searchPB_clicked()
|
||||||
{
|
{
|
||||||
Rcl::AdvSearchData mydata;
|
RefCntr<SearchData> sdata(new SearchData(SCLT_AND));
|
||||||
|
bool hasnotnot = false;
|
||||||
|
bool hasnot = false;
|
||||||
|
if (!andWordsLE->text().isEmpty()) {
|
||||||
|
sdata->addClause(new SearchDataClauseSimple(SCLT_AND,
|
||||||
|
(const char *)andWordsLE->text().utf8()));
|
||||||
|
hasnotnot = true;
|
||||||
|
}
|
||||||
|
if (!orWordsLE->text().isEmpty()) {
|
||||||
|
sdata->addClause(new SearchDataClauseSimple(SCLT_OR,
|
||||||
|
(const char *)orWordsLE->text().utf8()));
|
||||||
|
hasnotnot = true;
|
||||||
|
}
|
||||||
|
if (!orWords1LE->text().isEmpty()) {
|
||||||
|
sdata->addClause(new SearchDataClauseSimple(SCLT_OR,
|
||||||
|
(const char *)orWords1LE->text().utf8()));
|
||||||
|
hasnotnot = true;
|
||||||
|
}
|
||||||
|
if (!noWordsLE->text().isEmpty()) {
|
||||||
|
sdata->addClause(new SearchDataClauseSimple(SCLT_EXCL,
|
||||||
|
(const char *)noWordsLE->text().utf8()));
|
||||||
|
hasnot = true;
|
||||||
|
}
|
||||||
|
if (!fileNameLE->text().isEmpty()) {
|
||||||
|
sdata->addClause(new SearchDataClauseFilename(
|
||||||
|
(const char *)fileNameLE->text().utf8()));
|
||||||
|
hasnotnot = true;
|
||||||
|
}
|
||||||
|
if (!phraseLE->text().isEmpty()) {
|
||||||
|
sdata->addClause(new SearchDataClauseDist(SCLT_PHRASE,
|
||||||
|
(const char *)phraseLE->text().utf8(), 0));
|
||||||
|
hasnotnot = true;
|
||||||
|
}
|
||||||
|
|
||||||
mydata.allwords = string((const char*)(andWordsLE->text().utf8()));
|
if (!hasnotnot) {
|
||||||
mydata.phrase = string((const char*)(phraseLE->text().utf8()));
|
if (!hasnot)
|
||||||
mydata.orwords = string((const char*)(orWordsLE->text().utf8()));
|
|
||||||
mydata.orwords1 = string((const char*)(orWords1LE->text().utf8()));
|
|
||||||
mydata.nowords = string((const char*)(noWordsLE->text().utf8()));
|
|
||||||
mydata.filename = string((const char*)(fileNameLE->text().utf8()));
|
|
||||||
|
|
||||||
if (mydata.allwords.empty() && mydata.phrase.empty() &&
|
|
||||||
mydata.orwords.empty() && mydata.orwords1.empty() &&
|
|
||||||
mydata.filename.empty()) {
|
|
||||||
if (mydata.nowords.empty())
|
|
||||||
return;
|
return;
|
||||||
QMessageBox::warning(0, "Recoll",
|
QMessageBox::warning(0, "Recoll",
|
||||||
tr("Cannot execute pure negative query. "
|
tr("Cannot execute pure negative query. "
|
||||||
"Please enter common terms in the 'any words' field"));
|
"Please enter common terms in the 'any words' field"));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (restrictFtCB->isOn() && noFiltypsLB->count() > 0) {
|
if (restrictFtCB->isOn() && noFiltypsLB->count() > 0) {
|
||||||
for (unsigned int i = 0; i < yesFiltypsLB->count(); i++) {
|
for (unsigned int i = 0; i < yesFiltypsLB->count(); i++) {
|
||||||
QCString ctext = yesFiltypsLB->item(i)->text().utf8();
|
QCString ctext = yesFiltypsLB->item(i)->text().utf8();
|
||||||
mydata.filetypes.push_back(string((const char *)ctext));
|
sdata->m_filetypes.push_back(string((const char *)ctext));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!subtreeCMB->currentText().isEmpty()) {
|
if (!subtreeCMB->currentText().isEmpty()) {
|
||||||
mydata.topdir =
|
sdata->m_topdir =
|
||||||
string((const char*)(subtreeCMB->currentText().utf8()));
|
string((const char*)(subtreeCMB->currentText().utf8()));
|
||||||
// The listbox is set for no insertion, do it. Have to check
|
// The listbox is set for no insertion, do it. Have to check
|
||||||
// for dups as the internal feature seems to only work for
|
// for dups as the internal feature seems to only work for
|
||||||
@ -217,7 +239,7 @@ void AdvSearch::searchPB_clicked()
|
|||||||
for (int index = 0; index < subtreeCMB->count(); index++)
|
for (int index = 0; index < subtreeCMB->count(); index++)
|
||||||
prefs.asearchSubdirHist.push_back(subtreeCMB->text(index));
|
prefs.asearchSubdirHist.push_back(subtreeCMB->text(index));
|
||||||
}
|
}
|
||||||
emit startSearch(mydata);
|
emit startSearch(sdata);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
#ifndef _ADVSEARCH_W_H_INCLUDED_
|
#ifndef _ADVSEARCH_W_H_INCLUDED_
|
||||||
#define _ADVSEARCH_W_H_INCLUDED_
|
#define _ADVSEARCH_W_H_INCLUDED_
|
||||||
/* @(#$Id: advsearch_w.h,v 1.2 2006-09-13 08:13:36 dockes Exp $ (C) 2005 J.F.Dockes */
|
/* @(#$Id: advsearch_w.h,v 1.3 2006-11-13 08:58:47 dockes Exp $ (C) 2005 J.F.Dockes */
|
||||||
/*
|
/*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* 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
|
* it under the terms of the GNU General Public License as published by
|
||||||
@ -20,6 +20,7 @@
|
|||||||
#include <qvariant.h>
|
#include <qvariant.h>
|
||||||
#include <qdialog.h>
|
#include <qdialog.h>
|
||||||
#include "advsearch.h"
|
#include "advsearch.h"
|
||||||
|
#include "refcntr.h"
|
||||||
|
|
||||||
#include "recoll.h"
|
#include "recoll.h"
|
||||||
#include "searchdata.h"
|
#include "searchdata.h"
|
||||||
@ -43,7 +44,7 @@ public slots:
|
|||||||
virtual void saveFileTypes();
|
virtual void saveFileTypes();
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void startSearch(Rcl::AdvSearchData);
|
void startSearch(RefCntr<Rcl::SearchData>);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
virtual void init();
|
virtual void init();
|
||||||
|
|||||||
@ -135,7 +135,7 @@
|
|||||||
<horstretch>0</horstretch>
|
<horstretch>0</horstretch>
|
||||||
<verstretch>0</verstretch>
|
<verstretch>0</verstretch>
|
||||||
</sizepolicy>
|
</sizepolicy>
|
||||||
<signal>startSearch(Rcl::AdvSearchData)</signal>
|
<signal>startSearch(RefCntr<Rcl::AdvSearchData>)</signal>
|
||||||
</customwidget>
|
</customwidget>
|
||||||
<customwidget>
|
<customwidget>
|
||||||
<class>ResList</class>
|
<class>ResList</class>
|
||||||
@ -292,6 +292,7 @@
|
|||||||
<includes>
|
<includes>
|
||||||
<include location="local" impldecl="in declaration">ssearch_w.h</include>
|
<include location="local" impldecl="in declaration">ssearch_w.h</include>
|
||||||
<include location="local" impldecl="in declaration">reslist.h</include>
|
<include location="local" impldecl="in declaration">reslist.h</include>
|
||||||
|
<include location="local" impldecl="in declaration">refcntr.h</include>
|
||||||
</includes>
|
</includes>
|
||||||
<pixmapinproject/>
|
<pixmapinproject/>
|
||||||
<layoutdefaults spacing="6" margin="11"/>
|
<layoutdefaults spacing="6" margin="11"/>
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
#ifndef lint
|
#ifndef lint
|
||||||
static char rcsid[] = "@(#$Id: rclmain_w.cpp,v 1.5 2006-11-10 13:32:08 dockes Exp $ (C) 2005 J.F.Dockes";
|
static char rcsid[] = "@(#$Id: rclmain_w.cpp,v 1.6 2006-11-13 08:58:47 dockes Exp $ (C) 2005 J.F.Dockes";
|
||||||
#endif
|
#endif
|
||||||
/*
|
/*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
@ -61,6 +61,7 @@ using std::pair;
|
|||||||
#include "guiutils.h"
|
#include "guiutils.h"
|
||||||
#include "reslist.h"
|
#include "reslist.h"
|
||||||
#include "transcode.h"
|
#include "transcode.h"
|
||||||
|
#include "refcntr.h"
|
||||||
|
|
||||||
#include "rclmain_w.h"
|
#include "rclmain_w.h"
|
||||||
#include "moc_rclmain_w.cpp"
|
#include "moc_rclmain_w.cpp"
|
||||||
@ -93,8 +94,8 @@ void RclMain::init()
|
|||||||
QFont nfont(prefs.reslistfontfamily, prefs.reslistfontsize);
|
QFont nfont(prefs.reslistfontfamily, prefs.reslistfontsize);
|
||||||
resList->setFont(nfont);
|
resList->setFont(nfont);
|
||||||
}
|
}
|
||||||
connect(sSearch, SIGNAL(startSearch(Rcl::AdvSearchData)),
|
connect(sSearch, SIGNAL(startSearch(RefCntr<Rcl::SearchData>)),
|
||||||
this, SLOT(startAdvSearch(Rcl::AdvSearchData)));
|
this, SLOT(startAdvSearch(RefCntr<Rcl::SearchData>)));
|
||||||
|
|
||||||
// signals and slots connections
|
// signals and slots connections
|
||||||
connect(sSearch, SIGNAL(clearSearch()),
|
connect(sSearch, SIGNAL(clearSearch()),
|
||||||
@ -318,7 +319,7 @@ static string urltolocalpath(string url)
|
|||||||
|
|
||||||
// Execute an advanced search query. The parameters normally come from
|
// Execute an advanced search query. The parameters normally come from
|
||||||
// the advanced search dialog
|
// the advanced search dialog
|
||||||
void RclMain::startAdvSearch(Rcl::AdvSearchData sdata)
|
void RclMain::startAdvSearch(RefCntr<Rcl::SearchData> sdata)
|
||||||
{
|
{
|
||||||
LOGDEB(("RclMain::startAdvSearch\n"));
|
LOGDEB(("RclMain::startAdvSearch\n"));
|
||||||
// The db may have been closed at the end of indexing
|
// The db may have been closed at the end of indexing
|
||||||
@ -331,7 +332,7 @@ void RclMain::startAdvSearch(Rcl::AdvSearchData sdata)
|
|||||||
resList->resetSearch();
|
resList->resetSearch();
|
||||||
|
|
||||||
int qopts = 0;
|
int qopts = 0;
|
||||||
if (prefs.queryBuildAbstract && !sdata.fileNameOnly()) {
|
if (prefs.queryBuildAbstract && !sdata->fileNameOnly()) {
|
||||||
qopts |= Rcl::Db::QO_BUILD_ABSTRACT;
|
qopts |= Rcl::Db::QO_BUILD_ABSTRACT;
|
||||||
if (prefs.queryReplaceAbstract)
|
if (prefs.queryReplaceAbstract)
|
||||||
qopts |= Rcl::Db::QO_REPLACE_ABSTRACT;
|
qopts |= Rcl::Db::QO_REPLACE_ABSTRACT;
|
||||||
@ -362,8 +363,8 @@ void RclMain::showAdvSearchDialog()
|
|||||||
asearchform = new AdvSearch(0, tr("Advanced search"), FALSE,
|
asearchform = new AdvSearch(0, tr("Advanced search"), FALSE,
|
||||||
WStyle_Customize | WStyle_NormalBorder |
|
WStyle_Customize | WStyle_NormalBorder |
|
||||||
WStyle_Title | WStyle_SysMenu);
|
WStyle_Title | WStyle_SysMenu);
|
||||||
connect(asearchform, SIGNAL(startSearch(Rcl::AdvSearchData)),
|
connect(asearchform, SIGNAL(startSearch(RefCntr<Rcl::SearchData>)),
|
||||||
this, SLOT(startAdvSearch(Rcl::AdvSearchData)));
|
this, SLOT(startAdvSearch(RefCntr<Rcl::SearchData>)));
|
||||||
asearchform->show();
|
asearchform->show();
|
||||||
} else {
|
} else {
|
||||||
// Close and reopen, in hope that makes us visible...
|
// Close and reopen, in hope that makes us visible...
|
||||||
@ -715,8 +716,8 @@ void RclMain::showDocHistory()
|
|||||||
docsource = new DocSequenceHistory(rcldb, g_dynconf,
|
docsource = new DocSequenceHistory(rcldb, g_dynconf,
|
||||||
string(tr("Document history").utf8()));
|
string(tr("Document history").utf8()));
|
||||||
}
|
}
|
||||||
Rcl::AdvSearchData sdata;
|
RefCntr<Rcl::SearchData> sdata(new Rcl::SearchData(Rcl::SCLT_AND));
|
||||||
sdata.description = tr("History data").utf8();
|
sdata->m_description = tr("History data").utf8();
|
||||||
m_searchId++;
|
m_searchId++;
|
||||||
resList->setDocSource(docsource, sdata);
|
resList->setDocSource(docsource, sdata);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -28,6 +28,7 @@
|
|||||||
#include "rcldb.h"
|
#include "rcldb.h"
|
||||||
#include "searchdata.h"
|
#include "searchdata.h"
|
||||||
#include "spell_w.h"
|
#include "spell_w.h"
|
||||||
|
#include "refcntr.h"
|
||||||
|
|
||||||
#include "rclmain.h"
|
#include "rclmain.h"
|
||||||
|
|
||||||
@ -49,7 +50,7 @@ public slots:
|
|||||||
virtual void fileExit();
|
virtual void fileExit();
|
||||||
virtual void periodic100();
|
virtual void periodic100();
|
||||||
virtual void startIndexing();
|
virtual void startIndexing();
|
||||||
virtual void startAdvSearch(Rcl::AdvSearchData sdata);
|
virtual void startAdvSearch(RefCntr<Rcl::SearchData> sdata);
|
||||||
virtual void previewClosed(QWidget * w);
|
virtual void previewClosed(QWidget * w);
|
||||||
virtual void showAdvSearchDialog();
|
virtual void showAdvSearchDialog();
|
||||||
virtual void showSortDialog();
|
virtual void showSortDialog();
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
#ifndef lint
|
#ifndef lint
|
||||||
static char rcsid[] = "@(#$Id: reslist.cpp,v 1.8 2006-11-11 15:30:48 dockes Exp $ (C) 2005 J.F.Dockes";
|
static char rcsid[] = "@(#$Id: reslist.cpp,v 1.9 2006-11-13 08:58:47 dockes Exp $ (C) 2005 J.F.Dockes";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
@ -23,6 +23,7 @@ static char rcsid[] = "@(#$Id: reslist.cpp,v 1.8 2006-11-11 15:30:48 dockes Exp
|
|||||||
#include "pathut.h"
|
#include "pathut.h"
|
||||||
#include "mimehandler.h"
|
#include "mimehandler.h"
|
||||||
#include "plaintorich.h"
|
#include "plaintorich.h"
|
||||||
|
#include "refcntr.h"
|
||||||
|
|
||||||
#include "reslist.h"
|
#include "reslist.h"
|
||||||
#include "moc_reslist.cpp"
|
#include "moc_reslist.cpp"
|
||||||
@ -32,7 +33,7 @@ static char rcsid[] = "@(#$Id: reslist.cpp,v 1.8 2006-11-11 15:30:48 dockes Exp
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
ResList::ResList(QWidget* parent, const char* name)
|
ResList::ResList(QWidget* parent, const char* name)
|
||||||
: QTextBrowser(parent, name)
|
: QTextBrowser(parent, name)
|
||||||
{
|
{
|
||||||
if (!name)
|
if (!name)
|
||||||
setName("resList");
|
setName("resList");
|
||||||
@ -68,7 +69,8 @@ void ResList::languageChange()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Acquire new docsource
|
// Acquire new docsource
|
||||||
void ResList::setDocSource(DocSequence *docsource, Rcl::AdvSearchData& sdt)
|
void ResList::setDocSource(DocSequence *docsource,
|
||||||
|
RefCntr<Rcl::SearchData> sdt)
|
||||||
{
|
{
|
||||||
if (m_docsource)
|
if (m_docsource)
|
||||||
delete m_docsource;
|
delete m_docsource;
|
||||||
@ -607,7 +609,7 @@ void ResList::menuExpand()
|
|||||||
|
|
||||||
QString ResList::getDescription()
|
QString ResList::getDescription()
|
||||||
{
|
{
|
||||||
return QString::fromUtf8(m_queryData.description.c_str());
|
return QString::fromUtf8(m_queryData->m_description.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Show detailed expansion of a query */
|
/** Show detailed expansion of a query */
|
||||||
@ -617,7 +619,7 @@ void ResList::showQueryDetails()
|
|||||||
// Also limit the total number of lines.
|
// Also limit the total number of lines.
|
||||||
const unsigned int ll = 100;
|
const unsigned int ll = 100;
|
||||||
const unsigned int maxlines = 50;
|
const unsigned int maxlines = 50;
|
||||||
string query = m_queryData.description;
|
string query = m_queryData->m_description;
|
||||||
string oq;
|
string oq;
|
||||||
unsigned int nlines = 0;
|
unsigned int nlines = 0;
|
||||||
while (query.length() > 0) {
|
while (query.length() > 0) {
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
#ifndef _RESLIST_H_INCLUDED_
|
#ifndef _RESLIST_H_INCLUDED_
|
||||||
#define _RESLIST_H_INCLUDED_
|
#define _RESLIST_H_INCLUDED_
|
||||||
/* @(#$Id: reslist.h,v 1.1 2006-09-22 07:29:34 dockes Exp $ (C) 2005 J.F.Dockes */
|
/* @(#$Id: reslist.h,v 1.2 2006-11-13 08:58:47 dockes Exp $ (C) 2005 J.F.Dockes */
|
||||||
|
|
||||||
#include <list>
|
#include <list>
|
||||||
|
|
||||||
@ -14,6 +14,7 @@ using std::list;
|
|||||||
#include "rcldb.h"
|
#include "rcldb.h"
|
||||||
#include "docseq.h"
|
#include "docseq.h"
|
||||||
#include "searchdata.h"
|
#include "searchdata.h"
|
||||||
|
#include "refcntr.h"
|
||||||
|
|
||||||
class ResList : public QTextBrowser
|
class ResList : public QTextBrowser
|
||||||
{
|
{
|
||||||
@ -29,7 +30,8 @@ class ResList : public QTextBrowser
|
|||||||
// num is inside the current page or its immediate neighbours.
|
// num is inside the current page or its immediate neighbours.
|
||||||
virtual bool getDoc(int docnum, Rcl::Doc &);
|
virtual bool getDoc(int docnum, Rcl::Doc &);
|
||||||
|
|
||||||
virtual void setDocSource(DocSequence *, Rcl::AdvSearchData& qdata);
|
virtual void setDocSource(DocSequence *,
|
||||||
|
RefCntr<Rcl::SearchData> qdata);
|
||||||
virtual QPopupMenu *createPopupMenu(const QPoint& pos);
|
virtual QPopupMenu *createPopupMenu(const QPoint& pos);
|
||||||
virtual QString getDescription(); // Printable actual query performed on db
|
virtual QString getDescription(); // Printable actual query performed on db
|
||||||
virtual int getResCnt(); // Return total result list size
|
virtual int getResCnt(); // Return total result list size
|
||||||
@ -69,7 +71,7 @@ class ResList : public QTextBrowser
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
std::map<int,int> m_pageParaToReldocnums;
|
std::map<int,int> m_pageParaToReldocnums;
|
||||||
Rcl::AdvSearchData m_queryData;
|
RefCntr<Rcl::SearchData> m_queryData;
|
||||||
DocSequence *m_docsource;
|
DocSequence *m_docsource;
|
||||||
std::vector<Rcl::Doc> m_curDocs;
|
std::vector<Rcl::Doc> m_curDocs;
|
||||||
int m_winfirst;
|
int m_winfirst;
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
#ifndef lint
|
#ifndef lint
|
||||||
static char rcsid[] = "@(#$Id: ssearch_w.cpp,v 1.10 2006-11-04 14:49:46 dockes Exp $ (C) 2006 J.F.Dockes";
|
static char rcsid[] = "@(#$Id: ssearch_w.cpp,v 1.11 2006-11-13 08:58:47 dockes Exp $ (C) 2006 J.F.Dockes";
|
||||||
#endif
|
#endif
|
||||||
/*
|
/*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
@ -31,6 +31,7 @@ static char rcsid[] = "@(#$Id: ssearch_w.cpp,v 1.10 2006-11-04 14:49:46 dockes E
|
|||||||
#include "guiutils.h"
|
#include "guiutils.h"
|
||||||
#include "searchdata.h"
|
#include "searchdata.h"
|
||||||
#include "ssearch_w.h"
|
#include "ssearch_w.h"
|
||||||
|
#include "refcntr.h"
|
||||||
|
|
||||||
void SSearch::init()
|
void SSearch::init()
|
||||||
{
|
{
|
||||||
@ -72,27 +73,30 @@ void SSearch::startSimpleSearch()
|
|||||||
|
|
||||||
if (queryText->currentText().length() == 0)
|
if (queryText->currentText().length() == 0)
|
||||||
return;
|
return;
|
||||||
Rcl::AdvSearchData sdata;
|
RefCntr<Rcl::SearchData> sdata(new Rcl::SearchData(Rcl::SCLT_AND));
|
||||||
QCString u8 = queryText->currentText().utf8();
|
QCString u8 = queryText->currentText().utf8();
|
||||||
switch (searchTypCMB->currentItem()) {
|
switch (searchTypCMB->currentItem()) {
|
||||||
case 0:
|
case 0:
|
||||||
default: {
|
default:
|
||||||
QString comp = queryText->currentText();
|
{
|
||||||
// If this is an or and we're set for autophrase and there are
|
QString comp = queryText->currentText();
|
||||||
// no quotes in the query, add a phrase search
|
// If this is an or and we're set for autophrase and there are
|
||||||
if (prefs.ssearchAutoPhrase && comp.find('"', 0) == -1) {
|
// no quotes in the query, add a phrase search
|
||||||
comp += QString::fromAscii(" \"") + comp +
|
if (prefs.ssearchAutoPhrase && comp.find('"', 0) == -1) {
|
||||||
QString::fromAscii("\"");
|
comp += QString::fromAscii(" \"") + comp +
|
||||||
u8 = comp.utf8();
|
QString::fromAscii("\"");
|
||||||
|
u8 = comp.utf8();
|
||||||
|
}
|
||||||
|
sdata->addClause(new Rcl::SearchDataClauseSimple(Rcl::SCLT_OR,
|
||||||
|
(const char *)u8));
|
||||||
}
|
}
|
||||||
sdata.orwords = u8;
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
sdata.allwords = u8;
|
sdata->addClause(new Rcl::SearchDataClauseSimple(Rcl::SCLT_AND,
|
||||||
|
(const char *)u8));
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
sdata.filename = u8;
|
sdata->addClause(new Rcl::SearchDataClauseFilename((const char *)u8));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
/* @(#$Id: ssearch_w.h,v 1.2 2006-11-04 14:49:46 dockes Exp $ (C) 2006 J.F.Dockes */
|
/* @(#$Id: ssearch_w.h,v 1.3 2006-11-13 08:58:47 dockes Exp $ (C) 2006 J.F.Dockes */
|
||||||
/*
|
/*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* 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
|
* it under the terms of the GNU General Public License as published by
|
||||||
@ -23,6 +23,7 @@
|
|||||||
#include "recoll.h"
|
#include "recoll.h"
|
||||||
#include "searchdata.h"
|
#include "searchdata.h"
|
||||||
#include "ssearchb.h"
|
#include "ssearchb.h"
|
||||||
|
#include "refcntr.h"
|
||||||
|
|
||||||
class SSearch : public SSearchBase
|
class SSearch : public SSearchBase
|
||||||
{
|
{
|
||||||
@ -43,7 +44,7 @@ public slots:
|
|||||||
virtual void startSimpleSearch();
|
virtual void startSimpleSearch();
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void startSearch(Rcl::AdvSearchData);
|
void startSearch(RefCntr<Rcl::SearchData>);
|
||||||
void clearSearch();
|
void clearSearch();
|
||||||
private:
|
private:
|
||||||
bool m_escape;
|
bool m_escape;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user