diff --git a/src/qtgui/rclm_sidefilters.cpp b/src/qtgui/rclm_sidefilters.cpp
index 74c10d06..c2c5a830 100644
--- a/src/qtgui/rclm_sidefilters.cpp
+++ b/src/qtgui/rclm_sidefilters.cpp
@@ -24,14 +24,27 @@
#include "idxmodel.h"
#include "guiutils.h"
-void RclMain::populateFilters()
+void RclMain::populateSideFilters(bool init)
{
m_idxtreemodel = new IdxTreeModel(theconfig, prefs.idxFilterTreeDepth, idxTreeView);
m_idxtreemodel->populate();
m_idxtreemodel->setHeaderData(0, Qt::Horizontal, QVariant(tr("Filter directories")));
idxTreeView->setModel(m_idxtreemodel);
- idxTreeView->setEditTriggers(QAbstractItemView::NoEditTriggers);
- idxTreeView->setSelectionMode(QAbstractItemView::MultiSelection);
+ if (init) {
+ idxTreeView->setEditTriggers(QAbstractItemView::NoEditTriggers);
+ idxTreeView->setSelectionMode(QAbstractItemView::MultiSelection);
+ connect(idxTreeView, SIGNAL(clicked(const QModelIndex&)), this, SLOT(setFiltSpec()));
+
+ minDateFilterDTEDT->setCalendarPopup(true);
+ maxDateFilterDTEDT->setCalendarPopup(true);
+ minDateFilterDTEDT->setDate(QDate::currentDate());
+ maxDateFilterDTEDT->setDate(QDate::currentDate());
+ connect(minDateFilterDTEDT, SIGNAL(dateChanged(const QDate &)), this, SLOT(setFiltSpec()));
+ connect(maxDateFilterDTEDT, SIGNAL(dateChanged(const QDate &)), this, SLOT(setFiltSpec()));
+ connect(dateFilterCB, SIGNAL(toggled(bool)), this, SLOT(setFiltSpec()));
+ connect(dateFilterCB, SIGNAL(toggled(bool)), minDateFilterDTEDT, SLOT(setEnabled(bool)));
+ connect(dateFilterCB, SIGNAL(toggled(bool)), maxDateFilterDTEDT, SLOT(setEnabled(bool)));
+ }
}
void RclMain::clearDirFilter()
diff --git a/src/qtgui/rclm_wins.cpp b/src/qtgui/rclm_wins.cpp
index de1d370c..fe3f91f1 100644
--- a/src/qtgui/rclm_wins.cpp
+++ b/src/qtgui/rclm_wins.cpp
@@ -190,7 +190,7 @@ void RclMain::showIndexConfig(bool modal)
if (created) {
connect(new QShortcut(quitKeySeq, indexConfig->getDialog()),
SIGNAL (activated()), this, SLOT (fileExit()));
- connect(indexConfig, SIGNAL(idxConfigPossiblyChanged()), this, SLOT(populateFilters()));
+ connect(indexConfig, SIGNAL(idxConfigPossiblyChanged()), this, SLOT(populateSideFilters()));
}
}
diff --git a/src/qtgui/rclmain.ui b/src/qtgui/rclmain.ui
index 334dfd3f..326ffdc8 100644
--- a/src/qtgui/rclmain.ui
+++ b/src/qtgui/rclmain.ui
@@ -38,7 +38,48 @@
Qt::Horizontal
-
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ -
+
+
+ Filter dates
+
+
+ false
+
+
+
+ -
+
+
-
+
+
+ false
+
+
+
+ -
+
+
+ false
+
+
+
+
+
+ -
+
+
+
+
diff --git a/src/qtgui/rclmain_w.cpp b/src/qtgui/rclmain_w.cpp
index c5f06344..56eb2afc 100644
--- a/src/qtgui/rclmain_w.cpp
+++ b/src/qtgui/rclmain_w.cpp
@@ -289,8 +289,7 @@ void RclMain::init()
sideFiltersSPLT->setSizes(sizes);
}
- populateFilters();
- connect(idxTreeView, SIGNAL(clicked(const QModelIndex&)), this, SLOT(setFiltSpec()));
+ populateSideFilters(true);
enableTrayIcon(prefs.showTrayIcon);
@@ -1151,7 +1150,7 @@ void RclMain::setUIPrefs()
return;
LOGDEB("Recollmain::setUIPrefs\n");
if (nullptr != m_idxtreemodel && m_idxtreemodel->getDepth() != prefs.idxFilterTreeDepth) {
- populateFilters();
+ populateSideFilters();
}
emit uiPrefsChanged();
enbSynAction->setDisabled(prefs.synFile.isEmpty());
@@ -1256,6 +1255,13 @@ void RclMain::setFiltSpec()
m_filtspec.orCrit(DocSeqFiltSpec::DSFS_QLANG, clause);
}
+ if (dateFilterCB->isChecked()) {
+ QString mindate = minDateFilterDTEDT->date().toString("yyyy-MM-dd");
+ QString maxdate = maxDateFilterDTEDT->date().toString("yyyy-MM-dd");
+ std::string clause = std::string("date:") + qs2utf8s(mindate) + "/" + qs2utf8s(maxdate);
+ LOGDEB1("RclMain::setFiltSpec: date clause " << clause << "\n");
+ m_filtspec.orCrit(DocSeqFiltSpec::DSFS_QLANG, clause);
+ }
if (m_source)
m_source->setFiltSpec(m_filtspec);
initiateQuery();
diff --git a/src/qtgui/rclmain_w.h b/src/qtgui/rclmain_w.h
index 8f76d773..1818ebd8 100644
--- a/src/qtgui/rclmain_w.h
+++ b/src/qtgui/rclmain_w.h
@@ -144,7 +144,7 @@ public slots:
virtual void startNativeViewer(Rcl::Doc, int pagenum = -1, QString term = QString());
virtual void openWith(Rcl::Doc, string);
virtual void saveDocToFile(Rcl::Doc);
- virtual void populateFilters();
+ virtual void populateSideFilters(bool init = false);
virtual void previewNextInTab(Preview *, int sid, int docnum);
virtual void previewPrevInTab(Preview *, int sid, int docnum);
virtual void previewExposed(Preview *, int sid, int docnum);