diff options
-rw-r--r-- | archivetreeview.cpp | 49 | ||||
-rw-r--r-- | archivetreeview.h | 3 | ||||
-rw-r--r-- | seriestreewidget.cpp | 12 | ||||
-rw-r--r-- | seriestreewidget.h | 3 |
4 files changed, 26 insertions, 41 deletions
diff --git a/archivetreeview.cpp b/archivetreeview.cpp index 412591b..1ae3cc8 100644 --- a/archivetreeview.cpp +++ b/archivetreeview.cpp @@ -100,37 +100,38 @@ void ArchiveTreeView::setFileViewMode(int mode){ } void ArchiveTreeView::currentChanged(const QItemSelection &selected, const QItemSelection &deselected){ - foreach(QModelIndex i, deselected.indexes()){ - mSelectedItems.removeAll(i); - } - foreach(QModelIndex i, selected.indexes()){ - if(!mSelectedItems.contains(i)){ - mSelectedItems << i; - } - } + Q_UNUSED(selected); + Q_UNUSED(deselected); + + QModelIndexList selectedSeries = mSeriesWidget->seriesTree()->selectionModel()->selectedRows(); mFilesWidget->resetSize(); - if(mSelectedItems.isEmpty()){ + if(selectedSeries.isEmpty()){ return; } + QList<int> selectedPartIds; - QModelIndexList realSel = mSeriesWidget->mapToSource(mSelectedItems); - foreach(QModelIndex i, realSel){ - if(i.data(SeriesTreeModel::TypeRole).toInt() == SeriesTreeModel::Series){ - QList<QVariant> ids = mSeriesModel->childrenColumnList(i, SeriesTreeModel::SeriesPartId); - foreach(QVariant id, ids){ - int thisId = id.toInt(); - if(!selectedPartIds.contains(thisId)){ - selectedPartIds << thisId; + SeriesTreeSortModel *proxy = mSeriesWidget->seriesProxy(); + foreach(QModelIndex i, selectedSeries){ + QModelIndex real = proxy->mapToSource(i); + if(real.isValid()){ + int type = real.data(SeriesTreeModel::TypeRole).toInt(); + if(type == SeriesTreeModel::Series){ + QList<QVariant> childIds = mSeriesModel->childrenColumnList(real, SeriesTreeModel::SeriesPartId); + foreach(QVariant id, childIds){ + int realId = id.toInt(); + if(!selectedPartIds.contains(realId)){ + selectedPartIds << realId; + } + } + }else if(type == SeriesTreeModel::Part){ + int realId = i.data(SeriesTreeModel::SeriesPartIdRole).toInt(); + if(!selectedPartIds.contains(realId)){ + selectedPartIds << realId; } - } - } - if(i.data(SeriesTreeModel::TypeRole).toInt() == SeriesTreeModel::Part){ - int thisId = i.data(SeriesTreeModel::SeriesPartIdRole).toInt(); - if(!selectedPartIds.contains(thisId)){ - selectedPartIds << thisId; } } } + mFilesModel->setIds(selectedPartIds); mFilesWidget->filesTree()->expandAll(); mFilesWidget->filesTree()->resizeColumnToContents(0); @@ -168,7 +169,7 @@ void ArchiveTreeView::playSelected(const QString &preferred){ } QStringList files; foreach(QModelIndex idx, selected){ - QModelIndex real = mSeriesWidget->mapToSource(idx); + QModelIndex real = mSeriesWidget->seriesProxy()->mapToSource(idx); QFileInfoList movies = mSeriesModel->findSortedMovies(real); foreach(QFileInfo fi, movies){ if(!files.contains(fi.absoluteFilePath())){ diff --git a/archivetreeview.h b/archivetreeview.h index 54f304f..24ef2f8 100644 --- a/archivetreeview.h +++ b/archivetreeview.h @@ -57,9 +57,6 @@ class ArchiveTreeView : public QWidget MappingTableModel *mActorsModel; MappingTableModel *mGenresModel; - //lists - QModelIndexList mSelectedItems; - //misc QString mWindowTitle; }; diff --git a/seriestreewidget.cpp b/seriestreewidget.cpp index 7e5d41f..b5a48be 100644 --- a/seriestreewidget.cpp +++ b/seriestreewidget.cpp @@ -70,18 +70,6 @@ SeriesTreeWidget::SeriesTreeWidget(QWidget *parent) : QWidget(parent){ } -QModelIndexList SeriesTreeWidget::mapToSource(const QModelIndexList &indexes) const{ - QModelIndexList retval; - foreach(QModelIndex i, indexes){ - retval << mProxy->mapToSource(i); - } - return retval; -} - -QModelIndex SeriesTreeWidget::mapToSource(const QModelIndex &index) const{ - return mProxy->mapToSource(index); -} - void SeriesTreeWidget::newSeries(){ QList<QVariant> data; data << tr("<New series>") << QVariant() << QVariant() << QVariant() << SeriesTreeModel::NewSeries; diff --git a/seriestreewidget.h b/seriestreewidget.h index fd850b4..578edef 100644 --- a/seriestreewidget.h +++ b/seriestreewidget.h @@ -28,8 +28,7 @@ class SeriesTreeWidget : public QWidget { public: explicit SeriesTreeWidget(QWidget *parent = 0); SeriesTreeView *seriesTree() { return mView; } - QModelIndexList mapToSource(const QModelIndexList &indexes) const; - QModelIndex mapToSource(const QModelIndex &index) const; + SeriesTreeSortModel *seriesProxy() { return mProxy; } public slots: void newSeries(); |