summaryrefslogtreecommitdiffstats
path: root/seriestreemodel.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'seriestreemodel.cpp')
-rw-r--r--seriestreemodel.cpp14
1 files changed, 8 insertions, 6 deletions
diff --git a/seriestreemodel.cpp b/seriestreemodel.cpp
index e881eb5..555c0f4 100644
--- a/seriestreemodel.cpp
+++ b/seriestreemodel.cpp
@@ -10,6 +10,7 @@
#include <QIcon>
#include <QFile>
#include <QFileInfo>
+#include <QRegExp>
#include "seriestreemodel.h"
#include "smtreeitem.h"
@@ -379,7 +380,7 @@ void SeriesTreeModel::setFileFilter(const QString &filter, const QString &column
QSqlQuery seriesIdQuery(mDb);
QString partsQueryTemplate;
QString op("=");
- QString value = filter;
+ QVariant value = filter;
if(queryType == TextQuery){
QString idQueryTemplate = QString("SELECT DISTINCT(series.iseries_id), series.tseries_name FROM series, seriesparts, files WHERE files.%1 LIKE :value AND files.iseriespart_id = seriesparts.iseriesparts_id AND seriesparts.iseries_id = series.iseries_id ORDER BY series.tseries_name").arg(column);
seriesIdQuery.prepare(idQueryTemplate);
@@ -387,10 +388,11 @@ void SeriesTreeModel::setFileFilter(const QString &filter, const QString &column
seriesIdQuery.bindValue(":value", value);
partsQueryTemplate = QString("SELECT DISTINCT(seriesparts.iseriesparts_id), seriesparts.iseriespart FROM seriesparts, series, files WHERE series.iseries_id = :id AND series.iseries_id = seriesparts.iseries_id AND seriesparts.iseriesparts_id = files.iseriespart_id AND files.%1 LIKE :value");
}else if(queryType == NumericQuery){
- if(value.startsWith("<") || value.startsWith(">") || value.startsWith("=")){
- op = value.at(0);
- value = value.right(value.size() - 1);
- }
+ QRegExp valRe("([<>=]?)\\s*(\\d+)\\s*(\\w*)");
+ (void)valRe.indexIn(value.toString());
+ QStringList capText = valRe.capturedTexts();
+ op = capText.at(1).isEmpty() ? op : capText.at(1);
+ value = Helper::bytesFromUnit(capText.at(2), capText.at(3));
QString idQueryTemplate = QString("SELECT DISTINCT(series.iseries_id), series.tseries_name FROM series, seriesparts, files WHERE files.%1 %2 :value AND files.iseriespart_id = seriesparts.iseriesparts_id AND seriesparts.iseries_id = series.iseries_id ORDER BY series.tseries_name").arg(column).arg(op);
seriesIdQuery.prepare(idQueryTemplate);
seriesIdQuery.bindValue(":value", value);
@@ -409,7 +411,7 @@ void SeriesTreeModel::setFileFilter(const QString &filter, const QString &column
QString partsQueryString;
if(queryType == TextQuery){
partsQueryString = partsQueryTemplate.arg(column);
- value = QString("%%1%").arg(value);
+ value = QString("%%1%").arg(value.toString());
}else{
partsQueryString = partsQueryTemplate.arg(column).arg(op);
}