diff options
Diffstat (limited to 'seriestreemodel.cpp')
-rw-r--r-- | seriestreemodel.cpp | 14 |
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); } |