Save adv search clause list + add delete button
This commit is contained in:
parent
350a7c49fe
commit
078b414cab
@ -118,6 +118,25 @@
|
|||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
</spacer>
|
</spacer>
|
||||||
|
<widget class="QPushButton">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>delClausePB</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy>
|
||||||
|
<hsizetype>0</hsizetype>
|
||||||
|
<vsizetype>0</vsizetype>
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Delete clause</string>
|
||||||
|
</property>
|
||||||
|
<property name="autoDefault">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
<widget class="QPushButton">
|
<widget class="QPushButton">
|
||||||
<property name="name">
|
<property name="name">
|
||||||
<cstring>addClausePB</cstring>
|
<cstring>addClausePB</cstring>
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
#ifndef lint
|
#ifndef lint
|
||||||
static char rcsid[] = "@(#$Id: advsearch_w.cpp,v 1.11 2006-11-17 10:08:12 dockes Exp $ (C) 2005 J.F.Dockes";
|
static char rcsid[] = "@(#$Id: advsearch_w.cpp,v 1.12 2006-11-17 15:26:40 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
|
||||||
@ -50,6 +50,7 @@ using std::string;
|
|||||||
extern RclConfig *rclconfig;
|
extern RclConfig *rclconfig;
|
||||||
|
|
||||||
static const int initclausetypes[] = {1, 3, 0, 0, 2, 5};
|
static const int initclausetypes[] = {1, 3, 0, 0, 2, 5};
|
||||||
|
static const unsigned int iclausescnt = sizeof(initclausetypes) / sizeof(int);
|
||||||
|
|
||||||
void AdvSearch::init()
|
void AdvSearch::init()
|
||||||
{
|
{
|
||||||
@ -71,14 +72,28 @@ void AdvSearch::init()
|
|||||||
connect(saveFileTypesPB, SIGNAL(clicked()),
|
connect(saveFileTypesPB, SIGNAL(clicked()),
|
||||||
this, SLOT(saveFileTypes()));
|
this, SLOT(saveFileTypes()));
|
||||||
connect(addClausePB, SIGNAL(clicked()), this, SLOT(addClause()));
|
connect(addClausePB, SIGNAL(clicked()), this, SLOT(addClause()));
|
||||||
|
connect(delClausePB, SIGNAL(clicked()), this, SLOT(delClause()));
|
||||||
|
|
||||||
conjunctCMB->insertItem(tr("All clauses"));
|
conjunctCMB->insertItem(tr("All clauses"));
|
||||||
conjunctCMB->insertItem(tr("Any clause"));
|
conjunctCMB->insertItem(tr("Any clause"));
|
||||||
|
|
||||||
// Create preconfigured clauses
|
// Create preconfigured clauses
|
||||||
for (unsigned int i = 0; i < sizeof(initclausetypes) / sizeof(int); i++) {
|
for (unsigned int i = 0; i < iclausescnt; i++) {
|
||||||
addClause(initclausetypes[i]);
|
addClause(initclausetypes[i]);
|
||||||
}
|
}
|
||||||
|
// Tune initial state according to last saved
|
||||||
|
{
|
||||||
|
std::list<SearchClauseW *>::iterator cit = m_clauseWins.begin();
|
||||||
|
for (vector<int>::iterator it = prefs.advSearchClauses.begin();
|
||||||
|
it != prefs.advSearchClauses.end(); it++) {
|
||||||
|
if (cit != m_clauseWins.end()) {
|
||||||
|
(*cit)->tpChange(*it);
|
||||||
|
cit++;
|
||||||
|
} else {
|
||||||
|
addClause(*it);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Initialize lists of accepted and ignored mime types from config
|
// Initialize lists of accepted and ignored mime types from config
|
||||||
// and settings
|
// and settings
|
||||||
@ -102,6 +117,21 @@ void AdvSearch::init()
|
|||||||
clauseline->close();
|
clauseline->close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void AdvSearch::saveCnf()
|
||||||
|
{
|
||||||
|
// Save my state
|
||||||
|
prefs.advSearchClauses.clear();
|
||||||
|
for (std::list<SearchClauseW *>::iterator cit = m_clauseWins.begin();
|
||||||
|
cit != m_clauseWins.end(); cit++) {
|
||||||
|
prefs.advSearchClauses.push_back((*cit)->sTpCMB->currentItem());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool AdvSearch::close()
|
||||||
|
{
|
||||||
|
saveCnf();
|
||||||
|
return AdvSearchBase::close();
|
||||||
|
}
|
||||||
|
|
||||||
// Move selected file types from the searched to the ignored box
|
// Move selected file types from the searched to the ignored box
|
||||||
void AdvSearch::delFiltypPB_clicked()
|
void AdvSearch::delFiltypPB_clicked()
|
||||||
@ -155,11 +185,38 @@ void AdvSearch::addClause(int tp)
|
|||||||
clauseVBox->addWidget(w);
|
clauseVBox->addWidget(w);
|
||||||
w->show();
|
w->show();
|
||||||
w->tpChange(tp);
|
w->tpChange(tp);
|
||||||
|
if (m_clauseWins.size() > iclausescnt) {
|
||||||
|
delClausePB->setEnabled(true);
|
||||||
|
} else {
|
||||||
|
delClausePB->setEnabled(false);
|
||||||
|
}
|
||||||
// Have to adjust the size else we lose the bottom buttons! Why?
|
// Have to adjust the size else we lose the bottom buttons! Why?
|
||||||
QSize sz = AdvSearchBaseLayout->sizeHint();
|
QSize sz = AdvSearchBaseLayout->sizeHint();
|
||||||
resize(QSize(sz.width()+40, sz.height()+80));
|
resize(QSize(sz.width()+40, sz.height()+80));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void AdvSearch::delClause()
|
||||||
|
{
|
||||||
|
if (m_clauseWins.size() <= iclausescnt)
|
||||||
|
return;
|
||||||
|
delete m_clauseWins.back();
|
||||||
|
m_clauseWins.pop_back();
|
||||||
|
if (m_clauseWins.size() > iclausescnt) {
|
||||||
|
delClausePB->setEnabled(true);
|
||||||
|
} else {
|
||||||
|
delClausePB->setEnabled(false);
|
||||||
|
}
|
||||||
|
QSize sz = AdvSearchBaseLayout->sizeHint();
|
||||||
|
resize(QSize(sz.width()+40, sz.height()+80));
|
||||||
|
}
|
||||||
|
|
||||||
|
void AdvSearch::polish()
|
||||||
|
{
|
||||||
|
QSize sz = AdvSearchBaseLayout->sizeHint();
|
||||||
|
resize(QSize(sz.width()+40, sz.height()+80));
|
||||||
|
AdvSearchBase::polish();
|
||||||
|
}
|
||||||
|
|
||||||
// Move selected file types from the ignored to the searched box
|
// Move selected file types from the ignored to the searched box
|
||||||
void AdvSearch::addFiltypPB_clicked()
|
void AdvSearch::addFiltypPB_clicked()
|
||||||
{
|
{
|
||||||
@ -248,10 +305,11 @@ 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));
|
||||||
}
|
}
|
||||||
|
saveCnf();
|
||||||
|
|
||||||
emit startSearch(sdata);
|
emit startSearch(sdata);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void AdvSearch::browsePB_clicked()
|
void AdvSearch::browsePB_clicked()
|
||||||
{
|
{
|
||||||
QString dir = QFileDialog::getExistingDirectory();
|
QString dir = QFileDialog::getExistingDirectory();
|
||||||
|
|||||||
@ -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.6 2006-11-14 18:29:09 dockes Exp $ (C) 2005 J.F.Dockes */
|
/* @(#$Id: advsearch_w.h,v 1.7 2006-11-17 15:26:40 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
|
||||||
@ -46,8 +46,11 @@ public slots:
|
|||||||
virtual void searchPB_clicked();
|
virtual void searchPB_clicked();
|
||||||
virtual void browsePB_clicked();
|
virtual void browsePB_clicked();
|
||||||
virtual void saveFileTypes();
|
virtual void saveFileTypes();
|
||||||
|
virtual void delClause();
|
||||||
virtual void addClause();
|
virtual void addClause();
|
||||||
virtual void addClause(int);
|
virtual void addClause(int);
|
||||||
|
virtual bool close();
|
||||||
|
virtual void polish();
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void startSearch(RefCntr<Rcl::SearchData>);
|
void startSearch(RefCntr<Rcl::SearchData>);
|
||||||
@ -55,6 +58,7 @@ signals:
|
|||||||
private:
|
private:
|
||||||
virtual void init();
|
virtual void init();
|
||||||
std::list<SearchClauseW *> m_clauseWins;
|
std::list<SearchClauseW *> m_clauseWins;
|
||||||
|
void saveCnf();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
#ifndef lint
|
#ifndef lint
|
||||||
static char rcsid[] = "@(#$Id: guiutils.cpp,v 1.23 2006-11-10 13:32:08 dockes Exp $ (C) 2005 Jean-Francois Dockes";
|
static char rcsid[] = "@(#$Id: guiutils.cpp,v 1.24 2006-11-17 15:26:40 dockes Exp $ (C) 2005 Jean-Francois 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
|
||||||
@ -147,6 +147,27 @@ void rwSettings(bool writing)
|
|||||||
"/Recoll/prefs/startWithAdvSearchOpen", Bool, false);
|
"/Recoll/prefs/startWithAdvSearchOpen", Bool, false);
|
||||||
SETTING_RW(prefs.startWithSortToolOpen,
|
SETTING_RW(prefs.startWithSortToolOpen,
|
||||||
"/Recoll/prefs/startWithSortToolOpen", Bool, false);
|
"/Recoll/prefs/startWithSortToolOpen", Bool, false);
|
||||||
|
|
||||||
|
QString advSearchClauses;
|
||||||
|
QString ascdflt = QString::fromAscii("1 3 0 0 2 5 ");
|
||||||
|
if (writing) {
|
||||||
|
for (vector<int>::iterator it = prefs.advSearchClauses.begin();
|
||||||
|
it != prefs.advSearchClauses.end(); it++) {
|
||||||
|
char buf[20];
|
||||||
|
sprintf(buf, "%d ", *it);
|
||||||
|
advSearchClauses += QString::fromAscii(buf);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
SETTING_RW(advSearchClauses, "/Recoll/prefs/adv/clauseList", , ascdflt);
|
||||||
|
if (!writing) {
|
||||||
|
list<string> clauses;
|
||||||
|
stringToStrings(advSearchClauses, clauses);
|
||||||
|
for (list<string>::iterator it = clauses.begin();
|
||||||
|
it != clauses.end(); it++) {
|
||||||
|
prefs.advSearchClauses.push_back(atoi(it->c_str()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
SETTING_RW(prefs.showicons, "/Recoll/prefs/reslist/showicons", Bool, true);
|
SETTING_RW(prefs.showicons, "/Recoll/prefs/reslist/showicons", Bool, true);
|
||||||
SETTING_RW(prefs.autoSearchOnWS, "/Recoll/prefs/reslist/autoSearchOnWS",
|
SETTING_RW(prefs.autoSearchOnWS, "/Recoll/prefs/reslist/autoSearchOnWS",
|
||||||
Bool, false);
|
Bool, false);
|
||||||
@ -157,10 +178,10 @@ void rwSettings(bool writing)
|
|||||||
"");
|
"");
|
||||||
SETTING_RW(prefs.reslistfontsize, "/Recoll/prefs/reslist/fontSize", Num,
|
SETTING_RW(prefs.reslistfontsize, "/Recoll/prefs/reslist/fontSize", Num,
|
||||||
0);
|
0);
|
||||||
QString rlfDflt =QString::fromAscii(
|
QString rlfDflt =
|
||||||
"%R %S %L <b>%T</b><br>"
|
QString::fromAscii("%R %S %L <b>%T</b><br>"
|
||||||
"%M %D <i>%U</i><br>"
|
"%M %D <i>%U</i><br>"
|
||||||
"%A %K");
|
"%A %K");
|
||||||
SETTING_RW(prefs.reslistformat, "/Recoll/prefs/reslist/format", , rlfDflt);
|
SETTING_RW(prefs.reslistformat, "/Recoll/prefs/reslist/format", , rlfDflt);
|
||||||
if (prefs.reslistformat.stripWhiteSpace().isEmpty())
|
if (prefs.reslistformat.stripWhiteSpace().isEmpty())
|
||||||
prefs.reslistformat = rlfDflt;
|
prefs.reslistformat = rlfDflt;
|
||||||
|
|||||||
@ -17,7 +17,7 @@
|
|||||||
#ifndef _GUIUTILS_H_INCLUDED_
|
#ifndef _GUIUTILS_H_INCLUDED_
|
||||||
#define _GUIUTILS_H_INCLUDED_
|
#define _GUIUTILS_H_INCLUDED_
|
||||||
/*
|
/*
|
||||||
* @(#$Id: guiutils.h,v 1.15 2006-11-10 13:32:08 dockes Exp $ (C) 2005 Jean-Francois Dockes
|
* @(#$Id: guiutils.h,v 1.16 2006-11-17 15:26:40 dockes Exp $ (C) 2005 Jean-Francois Dockes
|
||||||
* jean-francois.dockes@wanadoo.fr
|
* jean-francois.dockes@wanadoo.fr
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
@ -38,12 +38,15 @@
|
|||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <list>
|
#include <list>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
#include <qstring.h>
|
#include <qstring.h>
|
||||||
#include <qstringlist.h>
|
#include <qstringlist.h>
|
||||||
|
|
||||||
#ifndef NO_NAMESPACES
|
#ifndef NO_NAMESPACES
|
||||||
using std::string;
|
using std::string;
|
||||||
using std::list;
|
using std::list;
|
||||||
|
using std::vector;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/** Start a browser on the help document */
|
/** Start a browser on the help document */
|
||||||
@ -96,6 +99,9 @@ class PrefsPack {
|
|||||||
// Remembered term match mode
|
// Remembered term match mode
|
||||||
int termMatchType;
|
int termMatchType;
|
||||||
|
|
||||||
|
// Advanced search window clause list state
|
||||||
|
vector<int> advSearchClauses;
|
||||||
|
|
||||||
PrefsPack() :
|
PrefsPack() :
|
||||||
showicons(true),
|
showicons(true),
|
||||||
respagesize(8),
|
respagesize(8),
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user