summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArno <arno@disconnect.de>2016-11-09 17:52:08 +0100
committerArno <arno@disconnect.de>2016-11-09 17:52:08 +0100
commit54eaa7a4a883978a308d799e1f108bdce5e9c030 (patch)
treeeef8ab6f1a7d56930f908c79d3861bcd88c32aa2
parentaea54efd00c1cbd0f66bcda83e9c7a196d3c317b (diff)
downloadSheMov-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.cpp2
-rw-r--r--archivemodel.cpp13
-rw-r--r--archiveview.cpp3
-rw-r--r--archiveview.h2
-rw-r--r--delegates.cpp4
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;