summaryrefslogtreecommitdiffstats
path: root/filestreemodel.cpp
diff options
context:
space:
mode:
authorArno <am@disconnect.de>2013-02-08 03:57:41 +0100
committerArno <am@disconnect.de>2013-02-08 03:57:41 +0100
commit534ca73d64b13c4604e6823e7d3a7f290b225e1d (patch)
treeb155a08517a059a4d88e2beb4d6933c40568aa03 /filestreemodel.cpp
parenta2c0865ca9491d403ae0032bbc9894c452cc09d0 (diff)
downloadSheMov-534ca73d64b13c4604e6823e7d3a7f290b225e1d.tar.gz
SheMov-534ca73d64b13c4604e6823e7d3a7f290b225e1d.tar.bz2
SheMov-534ca73d64b13c4604e6823e7d3a7f290b225e1d.zip
Fix "suggest file for burning"
Don't use a SQL-Query to find files. Traverse the model instead. Also check if the resulting index is already selected. All in all, make it usable again.
Diffstat (limited to 'filestreemodel.cpp')
-rw-r--r--filestreemodel.cpp33
1 files changed, 17 insertions, 16 deletions
diff --git a/filestreemodel.cpp b/filestreemodel.cpp
index a762c1f..d290d5c 100644
--- a/filestreemodel.cpp
+++ b/filestreemodel.cpp
@@ -44,7 +44,6 @@ FilesTreeModel::FilesTreeModel(QStringList &headers, QObject *parent) : SmTreeMo
mDeleteFileQuery->prepare("DELETE FROM files WHERE ifiles_id = :id");
mFileTypeQuery = new QSqlQuery(mDb);
mFileTypeQuery->prepare("SELECT sifiletype FROM files WHERE cmd5sum = :md5");
- mFileSizeLessThanQueryTemplate = QString("SELECT cmd5sum FROM files WHERE bisize <= :size AND sifiletype = 1 AND idvd = -1 ORDER BY bisize DESC LIMIT %1");
mUpdateSeriesPartQuery = new QSqlQuery(mDb);
mUpdateSeriesPartQuery->prepare("UPDATE files SET iseriespart_id = :partid WHERE ifiles_id = :fileid");
@@ -417,21 +416,23 @@ QMap<QString, QString> FilesTreeModel::pictureMetaInfo(const QModelIndex &idx){
return retval;
}
-QModelIndexList FilesTreeModel::fileSizeLessThan(quint64 size, quint16 limit) const {
- QModelIndexList retval;
- QString queryString = mFileSizeLessThanQueryTemplate.arg(QString::number(limit));
- QSqlQuery query(mDb);
- query.prepare(queryString);
- query.bindValue(":size", size);
- query.exec();
- while(query.next()){
- QVariant md5sum = query.value(0);
- QModelIndex curIdx = findRecursive(md5sum, Md5Sum, index(0, Md5Sum, QModelIndex()));
- if(curIdx.isValid()){
- retval << curIdx;
- }
- }
- return retval;
+QModelIndex FilesTreeModel::fileSizeLessThan(quint64 size) const {
+ QModelIndex retval;
+ //bodly assume that movies is the first child...
+ QModelIndex movies = index(0, 0, QModelIndex());
+ QModelIndex cur = index(0, 0, movies);
+ quint64 best = 0;
+ while(cur.isValid()){
+ quint64 curSize = cur.data(FilesTreeModel::SizeRole).toLongLong();
+ if(curSize < size){
+ if(curSize > best){
+ best = curSize;
+ retval = cur;
+ }
+ }
+ cur = index(cur.row() + 1, 0, movies);
+ }
+ return retval;
}
int FilesTreeModel::fileType(const QString &md5sum) const{