From 9b2f7da813faea42587c0a78435a41aa338471fe Mon Sep 17 00:00:00 2001 From: Arno Date: Sun, 15 May 2011 09:58:19 +0200 Subject: Implement show all files Implemented a new function showing all files belonging to the selected series. The function respectect the current filter of the SeriesTreeWidget. --- archivetreeview.cpp | 23 +++++++++++++++++++++-- archivetreeview.h | 1 + seriestreewidget.h | 1 + shemov.cpp | 7 +++++++ shemov.h | 1 + 5 files changed, 31 insertions(+), 2 deletions(-) diff --git a/archivetreeview.cpp b/archivetreeview.cpp index 7587a6a..9bb5aae 100644 --- a/archivetreeview.cpp +++ b/archivetreeview.cpp @@ -103,13 +103,32 @@ ArchiveTreeView::ArchiveTreeView(QWidget *parent) : QWidget(parent){ } void ArchiveTreeView::setFileViewMode(int mode){ - SeriesTreeModel *seriesModel = static_cast(SmGlobals::instance()->model("SeriesModel")); - seriesModel->setRowFilter(mode); + mSeriesModel->setRowFilter(mode); mSeriesWidget->seriesProxy()->invalidate(); constructWindowTitle(); mSeriesWidget->expandItems(); } +void ArchiveTreeView::showAllFiles(){ + int seriesRow = 0; + QModelIndex series = mSeriesModel->index(seriesRow, 0, QModelIndex()); + QList ids; + while(series.isValid()){ + int childRow = 0; + QModelIndex child = mSeriesModel->index(childRow, 0, series); + while(child.isValid()){ + if(mSeriesWidget->seriesProxy()->acceptedByFilter(child.row(), child.parent())){ + ids << child.data(SeriesTreeModel::SeriesPartIdRole).toInt(); + } + child = mSeriesModel->index(++childRow, 0, child.parent()); + } + series = mSeriesModel->index(++seriesRow, 0, series.parent()); + } + mFilesModel->setIds(ids); + mFilesWidget->filesTree()->expandAll(); + mFilesWidget->filesTree()->resizeColumnToContents(0); +} + void ArchiveTreeView::cleanDatabase(const QString &table){ MappingTableModel *model = 0; if(table == "genres"){ diff --git a/archivetreeview.h b/archivetreeview.h index 342e3c4..0de5782 100644 --- a/archivetreeview.h +++ b/archivetreeview.h @@ -47,6 +47,7 @@ class ArchiveTreeView : public QWidget public slots: void setFileViewMode(int mode); + void showAllFiles(); void cleanDatabase(const QString &table); void showNoCoverDialog(); void selectMovie(const QModelIndex &idx); diff --git a/seriestreewidget.h b/seriestreewidget.h index 9c2438e..9e2e0dc 100644 --- a/seriestreewidget.h +++ b/seriestreewidget.h @@ -115,6 +115,7 @@ class SeriesTreeSortModel : public QSortFilterProxyModel { public: SeriesTreeSortModel(QObject *parent = 0); ~SeriesTreeSortModel() {} + bool acceptedByFilter(int source_row, const QModelIndex &parent) const { return filterAcceptsRow(source_row, parent); } protected: virtual bool lessThan(const QModelIndex &left, const QModelIndex &right) const; diff --git a/shemov.cpp b/shemov.cpp index eebaf8d..1b871db 100644 --- a/shemov.cpp +++ b/shemov.cpp @@ -468,6 +468,8 @@ void SheMov::createActions(){ mShowNormalA->setChecked(true); mShowNoCoverDialogA = new QAction(QIcon(":/higheels.png"), tr("List movies without cover..."), this); connect(mShowNoCoverDialogA, SIGNAL(triggered()), mATree, SLOT(showNoCoverDialog())); + mShowAllFilesA = new QAction(tr("Show All files"), this); + connect(mShowAllFilesA, SIGNAL(triggered()), mATree, SLOT(showAllFiles())); //Tree view headers QHash headerData = filesModel->headerData(); @@ -667,6 +669,7 @@ void SheMov::createMenus(){ mTreeViewMenu->addAction(mShowNormalA); mTreeViewMenu->addAction(mShowLocalA); mTreeViewMenu->addAction(mShowArchivedA); + mTreeViewMenu->addAction(mShowAllFilesA); QAction *sep14 = new QAction(this); sep14->setSeparator(true); mTreeViewMenu->addAction(sep14); @@ -779,6 +782,10 @@ void SheMov::createMenus(){ sep7->setSeparator(true); mATree->filesWidget()->filesTree()->addAction(sep7); mATree->filesWidget()->filesTree()->addActions(mEditGroup->actions()); + QAction *sep21 = new QAction(this); + sep21->setSeparator(true); + mATree->filesWidget()->filesTree()->addAction(sep20); + mATree->filesWidget()->filesTree()->addAction(mShowAllFilesA); QAction *sep8 = new QAction(this); sep8->setSeparator(true); mATree->filesWidget()->filesTree()->addAction(sep8); diff --git a/shemov.h b/shemov.h index ab95425..bf4cc93 100644 --- a/shemov.h +++ b/shemov.h @@ -120,6 +120,7 @@ class SheMov : public QMainWindow { QAction *mShowLocalA; QAction *mShowArchivedA; QAction *mShowNormalA; + QAction *mShowAllFilesA; QAction *mShowNoCoverDialogA; QActionGroup *mShowTreeGroup; QAction *mHoverPicsA; -- cgit v1.2.3-70-g09d2