GUI split advanced search dialog in 2 tabs and add/adjust date and size filtering

This commit is contained in:
"Jean-Francois Dockes ext:(%22) 2012-03-13 16:33:59 +01:00
parent 9ff88adf22
commit 382cdc9f8a
3 changed files with 576 additions and 440 deletions

View File

@ -6,8 +6,8 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>545</width> <width>544</width>
<height>537</height> <height>441</height>
</rect> </rect>
</property> </property>
<property name="windowTitle"> <property name="windowTitle">
@ -16,7 +16,17 @@
<property name="sizeGripEnabled"> <property name="sizeGripEnabled">
<bool>true</bool> <bool>true</bool>
</property> </property>
<layout class="QVBoxLayout"> <layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QTabWidget" name="tabWidget">
<property name="currentIndex">
<number>0</number>
</property>
<widget class="QWidget" name="tab_5">
<attribute name="title">
<string>Find</string>
</attribute>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item> <item>
<layout class="QHBoxLayout"> <layout class="QHBoxLayout">
<item> <item>
@ -145,6 +155,63 @@
</item> </item>
</layout> </layout>
</item> </item>
</layout>
</widget>
<widget class="QWidget" name="tab_6">
<attribute name="title">
<string>Filter</string>
</attribute>
<layout class="QVBoxLayout" name="verticalLayout_5">
<item>
<layout class="QVBoxLayout" name="verticalLayout_4">
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QCheckBox" name="filterDatesCB">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>1</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string>Check this to enable filtering on dates</string>
</property>
<property name="text">
<string>Filter dates</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label">
<property name="text">
<string>From</string>
</property>
</widget>
</item>
<item>
<widget class="QDateEdit" name="minDateDTE">
<property name="enabled">
<bool>false</bool>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_2">
<property name="text">
<string>To</string>
</property>
</widget>
</item>
<item>
<widget class="QDateEdit" name="maxDateDTE">
<property name="enabled">
<bool>false</bool>
</property>
</widget>
</item>
</layout>
</item>
<item> <item>
<widget class="Line" name="line2"> <widget class="Line" name="line2">
<property name="frameShape"> <property name="frameShape">
@ -157,6 +224,22 @@
</item> </item>
<item> <item>
<layout class="QHBoxLayout" name="horizontalLayout"> <layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QCheckBox" name="filterSizesCB">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>1</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string>Check this to enable filtering on sizes</string>
</property>
<property name="text">
<string>Filter sizes</string>
</property>
</widget>
</item>
<item> <item>
<widget class="QLabel" name="labelminsize"> <widget class="QLabel" name="labelminsize">
<property name="toolTip"> <property name="toolTip">
@ -168,7 +251,11 @@
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QLineEdit" name="minSizeLE"/> <widget class="QLineEdit" name="minSizeLE">
<property name="enabled">
<bool>false</bool>
</property>
</widget>
</item> </item>
<item> <item>
<widget class="QLabel" name="labelmaxsize"> <widget class="QLabel" name="labelmaxsize">
@ -181,7 +268,11 @@
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QLineEdit" name="maxSizeLE"/> <widget class="QLineEdit" name="maxSizeLE">
<property name="enabled">
<bool>false</bool>
</property>
</widget>
</item> </item>
</layout> </layout>
</item> </item>
@ -195,6 +286,8 @@
</property> </property>
</widget> </widget>
</item> </item>
<item>
<layout class="QVBoxLayout" name="verticalLayout_3">
<item> <item>
<layout class="QHBoxLayout"> <layout class="QHBoxLayout">
<item> <item>
@ -376,6 +469,8 @@
</item> </item>
</layout> </layout>
</item> </item>
</layout>
</item>
<item> <item>
<widget class="Line" name="line5"> <widget class="Line" name="line5">
<property name="frameShape"> <property name="frameShape">
@ -448,14 +543,10 @@
</item> </item>
</layout> </layout>
</item> </item>
<item> </layout>
<widget class="Line" name="line1"> </item>
<property name="frameShape"> </layout>
<enum>QFrame::HLine</enum> </widget>
</property>
<property name="frameShadow">
<enum>QFrame::Sunken</enum>
</property>
</widget> </widget>
</item> </item>
<item> <item>

View File

@ -62,6 +62,10 @@ void AdvSearch::init()
// signals and slots connections // signals and slots connections
connect(delFiltypPB, SIGNAL(clicked()), this, SLOT(delFiltypPB_clicked())); connect(delFiltypPB, SIGNAL(clicked()), this, SLOT(delFiltypPB_clicked()));
connect(searchPB, SIGNAL(clicked()), this, SLOT(runSearch())); connect(searchPB, SIGNAL(clicked()), this, SLOT(runSearch()));
connect(filterDatesCB, SIGNAL(toggled(bool)),
this, SLOT(filterDatesCB_toggled(bool)));
connect(filterSizesCB, SIGNAL(toggled(bool)),
this, SLOT(filterSizesCB_toggled(bool)));
connect(restrictFtCB, SIGNAL(toggled(bool)), connect(restrictFtCB, SIGNAL(toggled(bool)),
this, SLOT(restrictFtCB_toggled(bool))); this, SLOT(restrictFtCB_toggled(bool)));
connect(restrictCtCB, SIGNAL(toggled(bool)), connect(restrictCtCB, SIGNAL(toggled(bool)),
@ -101,6 +105,14 @@ void AdvSearch::init()
} }
(*m_clauseWins.begin())->wordsLE->setFocus(); (*m_clauseWins.begin())->wordsLE->setFocus();
// Initialize min/max mtime from extrem values in the index
int minyear, maxyear;
if (rcldb) {
rcldb->maxYearSpan(&minyear, &maxyear);
minDateDTE->setDate(QDate(minyear, 1, 1));
maxDateDTE->setDate(QDate(maxyear, 12, 31));
}
// Initialize lists of accepted and ignored mime types from config // Initialize lists of accepted and ignored mime types from config
// and settings // and settings
m_ignTypes = prefs.asearchIgnFilTyps; m_ignTypes = prefs.asearchIgnFilTyps;
@ -118,6 +130,10 @@ void AdvSearch::init()
// don't want to see it. // don't want to see it.
clauseline->close(); clauseline->close();
bool calpop = 0;
minDateDTE->setCalendarPopup(calpop);
maxDateDTE->setCalendarPopup(calpop);
// Translations for known categories // Translations for known categories
cat_translations[QString::fromUtf8("texts")] = tr("texts"); cat_translations[QString::fromUtf8("texts")] = tr("texts");
cat_rtranslations[tr("texts")] = QString::fromUtf8("texts"); cat_rtranslations[tr("texts")] = QString::fromUtf8("texts");
@ -248,6 +264,19 @@ void AdvSearch::restrictFtCB_toggled(bool on)
saveFileTypesPB->setEnabled(on); saveFileTypesPB->setEnabled(on);
} }
// Activate file type selection
void AdvSearch::filterSizesCB_toggled(bool on)
{
minSizeLE->setEnabled(on);
maxSizeLE->setEnabled(on);
}
// Activate file type selection
void AdvSearch::filterDatesCB_toggled(bool on)
{
minDateDTE->setEnabled(on);
maxDateDTE->setEnabled(on);
}
void AdvSearch::restrictCtCB_toggled(bool on) void AdvSearch::restrictCtCB_toggled(bool on)
{ {
m_ignByCats = on; m_ignByCats = on;
@ -367,10 +396,24 @@ void AdvSearch::runSearch()
} }
} }
if (filterDatesCB->isChecked()) {
QDate mindate = minDateDTE->date();
QDate maxdate = maxDateDTE->date();
DateInterval di;
di.y1 = mindate.year();
di.m1 = mindate.month();
di.d1 = mindate.day();
di.y2 = maxdate.year();
di.m2 = maxdate.month();
di.d2 = maxdate.day();
sdata->setDateSpan(&di);
}
if (filterSizesCB->isChecked()) {
size_t size = stringToSize(minSizeLE->text()); size_t size = stringToSize(minSizeLE->text());
sdata->setMinSize(size); sdata->setMinSize(size);
size = stringToSize(maxSizeLE->text()); size = stringToSize(maxSizeLE->text());
sdata->setMaxSize(size); sdata->setMaxSize(size);
}
if (!subtreeCMB->currentText().isEmpty()) { if (!subtreeCMB->currentText().isEmpty()) {
QString current = subtreeCMB->currentText(); QString current = subtreeCMB->currentText();

View File

@ -48,6 +48,8 @@ public slots:
virtual void addFiltypPB_clicked(); virtual void addFiltypPB_clicked();
virtual void addAFiltypPB_clicked(); virtual void addAFiltypPB_clicked();
virtual void guiListsToIgnTypes(); virtual void guiListsToIgnTypes();
virtual void filterDatesCB_toggled(bool);
virtual void filterSizesCB_toggled(bool);
virtual void restrictFtCB_toggled(bool); virtual void restrictFtCB_toggled(bool);
virtual void restrictCtCB_toggled(bool); virtual void restrictCtCB_toggled(bool);
virtual void runSearch(); virtual void runSearch();