datefilter

This commit is contained in:
mrbesen 2021-04-11 15:58:53 +02:00
parent aae84eb047
commit 038dde8d8f
Signed by: MrBesen
GPG Key ID: 596B2350DCD67504
3 changed files with 32 additions and 0 deletions

19
src/datefilter.cpp Normal file
View File

@ -0,0 +1,19 @@
#include "datefilter.h"
void DateFilter::setup(std::ostream& o, std::istream& str) {
o << "Enter Date: (yyyy-mm-dd HH:MM)";
std::string d;
std::getline(str, d);
tm parsedTime;
::strptime(d.c_str(), "%Y-%m-%d %H:%M", &parsedTime);
date = timegm(&parsedTime);
o << "search messages bevore or after? (b/a)";
char c;
str >> c;
bevore = isLetter(c, 'b');
resetStream(str);
}
bool DateFilter::filter(const Message& m) const {
return (m.date < date) == bevore;
}

11
src/datefilter.h Normal file
View File

@ -0,0 +1,11 @@
#pragma once
#include "filter.h"
struct DateFilter : public Filter {
virtual void setup(std::ostream& o, std::istream& str) override;
virtual bool filter(const Message& m) const override;
protected:
time_t date;
bool bevore; // true = bevore, false = after
};

View File

@ -10,6 +10,7 @@
#include "search.h"
#include "textfilter.h"
#include "mediafilter.h"
#include "datefilter.h"
static bool run = true;
@ -28,6 +29,7 @@ void loadFilter() {
filterlist.insert({"HasMedia", new HasMediaFilter()});
filterlist.insert({"Filename", new FilenameFilter()});
filterlist.insert({"RegexFilename", new RegexFilenameFilter()});
filterlist.insert({"Date", new DateFilter()});
}
void removeFilter() {