summaryrefslogtreecommitdiffstats
path: root/archivetreeview.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'archivetreeview.cpp')
-rw-r--r--archivetreeview.cpp49
1 files changed, 25 insertions, 24 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())){