summaryrefslogtreecommitdiffstats
path: root/archivebrowsermodel.cpp
diff options
context:
space:
mode:
authorArno <am@disconnect.de>2014-02-07 13:17:48 +0100
committerArno <am@disconnect.de>2014-02-07 13:17:48 +0100
commite5e91f5f1fc65861f0fd04d805e30b72f27a7dd8 (patch)
treea582e0be51579777873eff05b9803c3ae0821693 /archivebrowsermodel.cpp
parentf41e3577a9fc25b37e33047afc8852017d612f5e (diff)
downloadSheMov-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.cpp42
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;