diff options
author | Arno <arno@disconnect.de> | 2016-11-09 17:52:08 +0100 |
---|---|---|
committer | Arno <arno@disconnect.de> | 2016-11-09 17:52:08 +0100 |
commit | 54eaa7a4a883978a308d799e1f108bdce5e9c030 (patch) | |
tree | eef8ab6f1a7d56930f908c79d3861bcd88c32aa2 | |
parent | aea54efd00c1cbd0f66bcda83e9c7a196d3c317b (diff) | |
download | SheMov-54eaa7a4a883978a308d799e1f108bdce5e9c030.tar.gz SheMov-54eaa7a4a883978a308d799e1f108bdce5e9c030.tar.bz2 SheMov-54eaa7a4a883978a308d799e1f108bdce5e9c030.zip |
Add display of Origin files
Show orgin files as child of archived file in the archive.
Sidenote: Adding an origin file in here won't be very useful, since the
actual file is elsewhere. That's a job for ShemovCleaner, I guess.
-rw-r--r-- | archivecontroller.cpp | 2 | ||||
-rw-r--r-- | archivemodel.cpp | 13 | ||||
-rw-r--r-- | archiveview.cpp | 3 | ||||
-rw-r--r-- | archiveview.h | 2 | ||||
-rw-r--r-- | delegates.cpp | 4 |
5 files changed, 20 insertions, 4 deletions
diff --git a/archivecontroller.cpp b/archivecontroller.cpp index 087fd67..af05c7a 100644 --- a/archivecontroller.cpp +++ b/archivecontroller.cpp @@ -258,7 +258,7 @@ void ArchiveController::treeSelectionChanged(const QItemSelection &selected, con ids.unite(mArchiveModel->seriesPartIds(idx)); } mArchiveFilesModel->populate(ids); - mArchiveFiles->expandAll(); + mArchiveFiles->expandToDepth(0); mArchiveView->setCurrentArchivePath(mArchiveModel->indexToPath(sel.first())); QStringList actors = mArchiveModel->actors(ids); mActorModel->clear(); diff --git a/archivemodel.cpp b/archivemodel.cpp index cace26b..549eef5 100644 --- a/archivemodel.cpp +++ b/archivemodel.cpp @@ -511,6 +511,7 @@ void ArchiveModel::addFiles(int partId, const QStringList files){ } } + void ArchiveModel::removeFiles(const QList<int> fileIds){ QSqlQuery removeQ(mDb); removeQ.prepare("DELETE FROM files WHERE ifiles_id = :id"); @@ -880,7 +881,7 @@ QVariant ArchiveFilesModel::data(const QModelIndex &index, int role) const { } if(role == Qt::DecorationRole){ if(index.column() == 0){ - if(item->parent() == root()){ + if(item->parent() == root() || item->data(FileType) == FT_ORIGIN){ return QVariant(); }else{ return decorationIcon(); @@ -964,6 +965,8 @@ void ArchiveFilesModel::populate(const QSet<int> &seriesPartIds){ } QString queryString = QString("SELECT iseriespart_id, tfilename, cmd5sum, bisize, idvd, sifiletype, sifileno, siquality, ifiles_id, cpicsize, iduration, series.tseries_name, seriesparts.iseriespart, seriesparts.tsubtitle FROM files, seriesparts, series WHERE iseriespart_id IN (%1) and files.iseriespart_id = seriesparts.iseriesparts_id and seriesparts.iseries_id = series.iseries_id ORDER BY tfilename ASC;").arg(ids.join(",")); QSqlQuery q(queryString, mDb); + QSqlQuery originq(mDb); + originq.prepare("SELECT ifiles_id, tname, cmd5sum, bisize, ibitrate FROM files_origin where ifiles_id = :fid"); while(q.next()){ QList<QVariant> data; data << QVariant(); //expansion (empty) @@ -1003,6 +1006,14 @@ void ArchiveFilesModel::populate(const QSet<int> &seriesPartIds){ data[SizeDur] = dur; } } + originq.bindValue(":fid", data.at(FileId)); + originq.exec(); + while(originq.next()){ + QList<QVariant> oData; + oData << QVariant() << data.at(SeriesPartId) << originq.value(1) << originq.value(2) << originq.value(3) << -2 << FT_ORIGIN << data.at(FileNumber) << data.at(Quality) << data.at(FileId) << data.at(SizeDur) << tr("n/a") << data.at(SeriesName) << data.at(SeriesPart) << data.at(Subtitle); + SmTreeItem *oItem = new SmTreeItem(oData, newItem); + newItem->appendChild(oItem); + } }else{ ++mTotalOthers; SmTreeItem *newItem = new SmTreeItem(data, pictures); diff --git a/archiveview.cpp b/archiveview.cpp index c4ac0e4..cf4013a 100644 --- a/archiveview.cpp +++ b/archiveview.cpp @@ -114,6 +114,7 @@ ArchiveView::ArchiveView(QWidget *parent) : QWidget(parent) { mFilesProxy = new ArchiveFilesProxy; mFilesProxy->setSourceModel(mFilesModel); mFiles->setModel(mFilesProxy); + mFiles->setSourceModel(mFilesModel); mActorView = new SmTreeView; mActorView->setHeaderHidden(true); @@ -473,6 +474,7 @@ void ArchiveTree::newPart(){ } } + void ArchiveTree::dragEnterEvent(QDragEnterEvent *e){ if(e->mimeData()->hasFormat("application/x-shemov-file")){ e->acceptProposedAction(); @@ -554,7 +556,6 @@ void ArchiveFiles::deleteFromFiles(){ c->archiveTreeModel()->removeFiles(fileIds); c->archiveTreeModel()->refresh(); } - } void ArchiveFiles::mousePressEvent(QMouseEvent *e){ diff --git a/archiveview.h b/archiveview.h index 7d477e8..7a288db 100644 --- a/archiveview.h +++ b/archiveview.h @@ -117,6 +117,7 @@ class ArchiveFiles : public SmTreeView { Q_OBJECT public: explicit ArchiveFiles(const QString &headerSettings = "afilesheaders", QWidget *parent = 0); + void setSourceModel(ArchiveFilesModel *m) { mSourceModel = m; } public slots: void deleteFromFiles(); @@ -127,6 +128,7 @@ class ArchiveFiles : public SmTreeView { private: QPoint mDragStartPos; + ArchiveFilesModel *mSourceModel; }; class ArchiveProxy : public QSortFilterProxyModel { diff --git a/delegates.cpp b/delegates.cpp index db4b6b1..a168790 100644 --- a/delegates.cpp +++ b/delegates.cpp @@ -61,8 +61,10 @@ QWidget *FileTypeDelegate::createEditor(QWidget *parent, const QStyleOptionViewI QString DvdNoDelegate::displayText(const QVariant &value, const QLocale &locale) const{ Q_UNUSED(locale); int no = value.toInt(); - if(no < 0){ + if(no == -1){ return tr("(local)"); + }else if(no == -2){ + return tr("(origin)"); } QString retval = QString(tr("#%1")).arg(QString::number(no)); return retval; |