diff options
author | Arno <am@disconnect.de> | 2014-02-07 13:17:48 +0100 |
---|---|---|
committer | Arno <am@disconnect.de> | 2014-02-07 13:17:48 +0100 |
commit | e5e91f5f1fc65861f0fd04d805e30b72f27a7dd8 (patch) | |
tree | a582e0be51579777873eff05b9803c3ae0821693 /archivebrowsermodel.cpp | |
parent | f41e3577a9fc25b37e33047afc8852017d612f5e (diff) | |
download | SheMov-e5e91f5f1fc65861f0fd04d805e30b72f27a7dd8.tar.gz SheMov-e5e91f5f1fc65861f0fd04d805e30b72f27a7dd8.tar.bz2 SheMov-e5e91f5f1fc65861f0fd04d805e30b72f27a7dd8.zip |
Move to Burn is back!
Reimplement move to burn...
Diffstat (limited to 'archivebrowsermodel.cpp')
-rw-r--r-- | archivebrowsermodel.cpp | 42 |
1 files changed, 40 insertions, 2 deletions
diff --git a/archivebrowsermodel.cpp b/archivebrowsermodel.cpp index 444a70b..b9fec74 100644 --- a/archivebrowsermodel.cpp +++ b/archivebrowsermodel.cpp @@ -88,6 +88,43 @@ bool ArchiveBrowserModel::setData(const QModelIndex &index, const QVariant &valu return SmTreeModel::setData(index, value, role); } +void ArchiveBrowserModel::updateDVDNo(const QList<int> fileNos) { + if(fileNos.isEmpty()){ + return; + } + int maxdvd = 0; + QSqlQuery maxDvdQ = QSqlQuery("SELECT max(idvd) FROM files", mDb); + maxDvdQ.exec(); + while(maxDvdQ.next()){ + maxdvd = maxDvdQ.value(0).toInt(); + } + ++maxdvd; + QSqlQuery updateFile(mDb); + updateFile.prepare("UPDATE files SET idvd = :dvd WHERE ifiles_id = :id"); + foreach(int i, fileNos){ + updateFile.bindValue(":id", i); + updateFile.bindValue(":dvd", maxdvd); + updateFile.exec(); + } +} + +QModelIndexList ArchiveBrowserModel::children(const QModelIndex &idx){ + if(!idx.isValid()){ + return QModelIndexList(); + } + QModelIndexList retval; + SmTreeItem *item = itemAt(idx); + for(int i = 0; i < item->childCount(); ++i){ + QModelIndex retIdx = createIndex(i, 0, item->child(i)); + retval << retIdx; + } + return retval; +} + +void ArchiveBrowserModel::refresh() { + populate(); +} + Qt::ItemFlags ArchiveBrowserModel::flags(const QModelIndex &index) const{ SmTreeItem *item = itemAt(index); int nt = item->data(NodeType).toInt(); @@ -101,7 +138,7 @@ void ArchiveBrowserModel::populate(){ SmTreeItem *rootItem = new SmTreeItem(mNumFields); mAvailableQualities.clear(); QSqlQuery localFilesQ(mDb); - localFilesQ.prepare("SELECT tfilename, bisize, sifiletype, siquality, cmd5sum FROM files WHERE iseriespart_id = :sid ORDER BY sifiletype"); + localFilesQ.prepare("SELECT tfilename, bisize, sifiletype, siquality, ifiles_id, cmd5sum FROM files WHERE iseriespart_id = :sid ORDER BY sifiletype"); QSqlQuery localQ = QSqlQuery("SELECT DISTINCT(series.iseries_id), tseries_name, seriesparts.iseriespart, seriesparts.tsubtitle, seriesparts.iseriesparts_id FROM series LEFT JOIN seriesparts ON series.iseries_id = seriesparts.iseries_id LEFT JOIN files ON seriesparts.iseriesparts_id = files.iseriespart_id WHERE files.sifiletype = 1 AND files.idvd < 1 AND seriesparts.bfavorite = false ORDER BY tseries_name ASC", mDb); while(localQ.next()){ QList<QVariant> serPartData; @@ -120,7 +157,7 @@ void ArchiveBrowserModel::populate(){ int quality = -1; while(localFilesQ.next()){ QList<QVariant> fileData; - fileData << localFilesQ.value(0) << QVariant() << FileNode << localFilesQ.value(1) << localFilesQ.value(3) << localFilesQ.value(2) << Helper::createArchivePath(localFilesQ.value(0).toString(), localFilesQ.value(4).toString()) << false; + fileData << localFilesQ.value(0) << localFilesQ.value(4) << FileNode << localFilesQ.value(1) << localFilesQ.value(3) << localFilesQ.value(2) << Helper::createArchivePath(localFilesQ.value(0).toString(), localFilesQ.value(5).toString()) << false; totalSize += localFilesQ.value(1).toDouble(); if(localFilesQ.value(2) == 1){ //this is a movie file, no need for another enum int q = localFilesQ.value(3).toInt(); @@ -161,6 +198,7 @@ void ArchiveBrowserModelProxy::setBytesRemaining(qint64 bytes){ invalidateFilter(); } + bool ArchiveBrowserModelProxy::filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const { if(mQuality == -1 && !mSizeFilter){ return true; |