qtgui: add menu to erase search history + misc cleanups
This commit is contained in:
@@ -22,6 +22,9 @@ static char rcsid[] = "@(#$Id: docseq.cpp,v 1.11 2008-09-29 08:59:20 dockes Exp
|
||||
#include "sortseq.h"
|
||||
#include "debuglog.h"
|
||||
|
||||
string DocSequence::o_sort_trans;
|
||||
string DocSequence::o_filt_trans;
|
||||
|
||||
int DocSequence::getSeqSlice(int offs, int cnt, vector<ResListEntry>& result)
|
||||
{
|
||||
int ret = 0;
|
||||
@@ -78,11 +81,10 @@ bool DocSource::buildStack()
|
||||
return true;
|
||||
}
|
||||
|
||||
string DocSource::o_sort_trans;
|
||||
string DocSource::o_filt_trans;
|
||||
|
||||
string DocSource::title()
|
||||
{
|
||||
if (m_seq.isNull())
|
||||
return "";
|
||||
string qual;
|
||||
if (m_fspec.isNotNull() && !m_sspec.isNotNull())
|
||||
qual = string(" (") + o_filt_trans + string(")");
|
||||
|
||||
+20
-7
@@ -131,6 +131,14 @@ class DocSequence {
|
||||
virtual bool setSortSpec(const DocSeqSortSpec &) {return false;}
|
||||
virtual RefCntr<DocSequence> getSourceSeq() {return RefCntr<DocSequence>();}
|
||||
|
||||
static void set_translations(const string& sort, const string& filt)
|
||||
{
|
||||
o_sort_trans = sort;
|
||||
o_filt_trans = filt;
|
||||
}
|
||||
protected:
|
||||
static string o_sort_trans;
|
||||
static string o_filt_trans;
|
||||
private:
|
||||
string m_title;
|
||||
};
|
||||
@@ -147,20 +155,28 @@ public:
|
||||
|
||||
virtual string getAbstract(Rcl::Doc& doc)
|
||||
{
|
||||
if (m_seq.isNull())
|
||||
return "";
|
||||
return m_seq->getAbstract(doc);
|
||||
}
|
||||
virtual string getDescription()
|
||||
{
|
||||
if (m_seq.isNull())
|
||||
return "";
|
||||
return m_seq->getDescription();
|
||||
}
|
||||
virtual bool getTerms(vector<string>& terms,
|
||||
vector<vector<string> >& groups,
|
||||
vector<int>& gslks)
|
||||
{
|
||||
if (m_seq.isNull())
|
||||
return false;
|
||||
return m_seq->getTerms(terms, groups, gslks);
|
||||
}
|
||||
virtual void getUTerms(vector<string>& terms)
|
||||
{
|
||||
if (m_seq.isNull())
|
||||
return;
|
||||
m_seq->getUTerms(terms);
|
||||
}
|
||||
virtual string title() {return m_seq->title();}
|
||||
@@ -183,25 +199,22 @@ public:
|
||||
virtual bool setSortSpec(const DocSeqSortSpec &);
|
||||
virtual bool getDoc(int num, Rcl::Doc &doc, string *sh = 0)
|
||||
{
|
||||
if (m_seq.isNull())
|
||||
return false;
|
||||
return m_seq->getDoc(num, doc, sh);
|
||||
}
|
||||
virtual int getResCnt()
|
||||
{
|
||||
if (m_seq.isNull())
|
||||
return 0;
|
||||
return m_seq->getResCnt();
|
||||
}
|
||||
static void set_translations(const string& sort, const string& filt)
|
||||
{
|
||||
o_sort_trans = sort;
|
||||
o_filt_trans = filt;
|
||||
}
|
||||
virtual string title();
|
||||
private:
|
||||
bool buildStack();
|
||||
void stripStack();
|
||||
DocSeqFiltSpec m_fspec;
|
||||
DocSeqSortSpec m_sspec;
|
||||
static string o_sort_trans;
|
||||
static string o_filt_trans;
|
||||
};
|
||||
|
||||
#endif /* _DOCSEQ_H_INCLUDED_ */
|
||||
|
||||
+34
-4
@@ -30,7 +30,10 @@ DocSequenceDb::DocSequenceDb(RefCntr<Rcl::Query> q, const string &t,
|
||||
: DocSequence(t), m_q(q), m_sdata(sdata), m_fsdata(sdata),
|
||||
m_rescnt(-1),
|
||||
m_queryBuildAbstract(true),
|
||||
m_queryReplaceAbstract(false)
|
||||
m_queryReplaceAbstract(false),
|
||||
m_isFiltered(false),
|
||||
m_isSorted(false),
|
||||
m_needSetQuery(false)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -57,12 +60,14 @@ string DocSequenceDb::getDescription()
|
||||
|
||||
bool DocSequenceDb::getDoc(int num, Rcl::Doc &doc, string *sh)
|
||||
{
|
||||
setQuery();
|
||||
if (sh) sh->erase();
|
||||
return m_q->getDoc(num, doc);
|
||||
}
|
||||
|
||||
int DocSequenceDb::getResCnt()
|
||||
{
|
||||
setQuery();
|
||||
if (m_rescnt < 0) {
|
||||
m_rescnt= m_q->getResCnt();
|
||||
}
|
||||
@@ -71,6 +76,7 @@ int DocSequenceDb::getResCnt()
|
||||
|
||||
string DocSequenceDb::getAbstract(Rcl::Doc &doc)
|
||||
{
|
||||
setQuery();
|
||||
if (!m_q->whatDb())
|
||||
return doc.meta[Rcl::Doc::keyabs];
|
||||
string abstract;
|
||||
@@ -86,6 +92,7 @@ string DocSequenceDb::getAbstract(Rcl::Doc &doc)
|
||||
|
||||
bool DocSequenceDb::getEnclosing(Rcl::Doc& doc, Rcl::Doc& pdoc)
|
||||
{
|
||||
setQuery();
|
||||
string udi;
|
||||
if (!FileInterner::getEnclosing(doc.url, doc.ipath, pdoc.url, pdoc.ipath,
|
||||
udi))
|
||||
@@ -95,9 +102,22 @@ bool DocSequenceDb::getEnclosing(Rcl::Doc& doc, Rcl::Doc& pdoc)
|
||||
|
||||
list<string> DocSequenceDb::expand(Rcl::Doc &doc)
|
||||
{
|
||||
setQuery();
|
||||
return m_q->expand(doc);
|
||||
}
|
||||
|
||||
string DocSequenceDb::title()
|
||||
{
|
||||
string qual;
|
||||
if (m_isFiltered && !m_isSorted)
|
||||
qual = string(" (") + o_filt_trans + string(")");
|
||||
else if (!m_isFiltered && m_isSorted)
|
||||
qual = string(" (") + o_sort_trans + string(")");
|
||||
else if (m_isFiltered && m_isSorted)
|
||||
qual = string(" (") + o_sort_trans + string(",") + o_filt_trans + string(")");
|
||||
return DocSequence::title() + qual;
|
||||
}
|
||||
|
||||
bool DocSequenceDb::setFiltSpec(const DocSeqFiltSpec &fs)
|
||||
{
|
||||
LOGDEB(("DocSequenceDb::setFiltSpec\n"));
|
||||
@@ -114,10 +134,13 @@ bool DocSequenceDb::setFiltSpec(const DocSeqFiltSpec &fs)
|
||||
m_fsdata->addFiletype(fs.values[i]);
|
||||
}
|
||||
}
|
||||
m_isFiltered = true;
|
||||
} else {
|
||||
m_fsdata = m_sdata;
|
||||
m_isFiltered = false;
|
||||
}
|
||||
return m_q->setQuery(m_fsdata);
|
||||
m_needSetQuery = true;
|
||||
return true;
|
||||
}
|
||||
|
||||
bool DocSequenceDb::setSortSpec(const DocSeqSortSpec &spec)
|
||||
@@ -126,13 +149,20 @@ bool DocSequenceDb::setSortSpec(const DocSeqSortSpec &spec)
|
||||
spec.field.c_str(), spec.desc ? "desc" : "asc"));
|
||||
if (spec.isNotNull()) {
|
||||
m_q->setSortBy(spec.field, !spec.desc);
|
||||
m_isSorted = true;
|
||||
} else {
|
||||
m_q->setSortBy(string(), true);
|
||||
m_isSorted = false;
|
||||
}
|
||||
return m_q->setQuery(m_fsdata);
|
||||
m_needSetQuery = true;
|
||||
return true;
|
||||
}
|
||||
|
||||
bool DocSequenceDb::setQuery()
|
||||
{
|
||||
return m_q->setQuery(m_fsdata);
|
||||
if (!m_needSetQuery)
|
||||
return true;
|
||||
m_rescnt = -1;
|
||||
m_needSetQuery = !m_q->setQuery(m_fsdata);
|
||||
return !m_needSetQuery;
|
||||
}
|
||||
|
||||
@@ -23,8 +23,7 @@
|
||||
#include "searchdata.h"
|
||||
#include "rclquery.h"
|
||||
|
||||
/** A DocSequence from a Db query (there should be one active for this
|
||||
to make sense) */
|
||||
/** A DocSequence from a Db query */
|
||||
class DocSequenceDb : public DocSequence {
|
||||
public:
|
||||
DocSequenceDb(RefCntr<Rcl::Query> q, const string &t,
|
||||
@@ -44,12 +43,12 @@ class DocSequenceDb : public DocSequence {
|
||||
virtual bool setFiltSpec(const DocSeqFiltSpec &filtspec);
|
||||
virtual bool canSort() {return true;}
|
||||
virtual bool setSortSpec(const DocSeqSortSpec &sortspec);
|
||||
virtual bool setQuery();
|
||||
virtual void setAbstractParams(bool qba, bool qra)
|
||||
{
|
||||
m_queryBuildAbstract = qba;
|
||||
m_queryReplaceAbstract = qra;
|
||||
}
|
||||
virtual string title();
|
||||
|
||||
private:
|
||||
RefCntr<Rcl::Query> m_q;
|
||||
@@ -58,6 +57,10 @@ class DocSequenceDb : public DocSequence {
|
||||
int m_rescnt;
|
||||
bool m_queryBuildAbstract;
|
||||
bool m_queryReplaceAbstract;
|
||||
bool m_isFiltered;
|
||||
bool m_isSorted;
|
||||
bool m_needSetQuery; // search data changed, need to reapply before fetch
|
||||
bool setQuery();
|
||||
};
|
||||
|
||||
#endif /* _DOCSEQDB_H_INCLUDED_ */
|
||||
|
||||
Reference in New Issue
Block a user