summaryrefslogtreecommitdiffstats
path: root/seriestreewidget.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'seriestreewidget.cpp')
-rw-r--r--seriestreewidget.cpp43
1 files changed, 42 insertions, 1 deletions
diff --git a/seriestreewidget.cpp b/seriestreewidget.cpp
index dd986b3..5a97587 100644
--- a/seriestreewidget.cpp
+++ b/seriestreewidget.cpp
@@ -337,7 +337,11 @@ void SeriesTreeWidget::itemCollaped(const QModelIndex &what){
}
void SeriesTreeWidget::expandItems(const QStringList &items){
- foreach(QString s, items){
+ QStringList expand = items;
+ if(items.isEmpty()){
+ expand = mExpandedItems;
+ }
+ foreach(QString s, expand){
QModelIndex idx = mProxy->mapFromSource(mModel->findValue(s));
mView->expand(idx);
}
@@ -482,6 +486,43 @@ bool SeriesTreeSortModel::lessThan(const QModelIndex &left, const QModelIndex &r
return QSortFilterProxyModel::lessThan(left, right);
}
+bool SeriesTreeSortModel::filterAcceptsRow(int source_row, const QModelIndex &source_parent) const {
+ SeriesTreeModel *seriesModel = static_cast<SeriesTreeModel*>(sourceModel());
+ int rowFilter = seriesModel->rowFilter();
+ QModelIndex curIdx = sourceModel()->index(source_row, 0, source_parent);
+ QString name = curIdx.data(SeriesTreeModel::NameRole).toString();
+ QRegExp filterRe = filterRegExp();
+ if(rowFilter == SeriesTreeModel::All){
+ if(filterRe.isEmpty()){
+ return true;
+ }else{
+ return (filterRe.indexIn(name) != -1);
+ }
+ }
+ if(!curIdx.isValid()){
+ return true;
+ }
+ int type = curIdx.data(SeriesTreeModel::TypeRole).toInt();
+ bool filterLocal = (rowFilter == SeriesTreeModel::Local);
+ if(type == SeriesTreeModel::Series){
+ int row = 0;
+ QModelIndex child = curIdx.child(row, 0);
+ while(child.isValid()){
+ bool hasLocals = child.data(SeriesTreeModel::IsLocalRole).toBool();
+ if(hasLocals == filterLocal){
+ return (filterRe.indexIn(name) != -1);
+ }
+ child = curIdx.child(++row, 0);
+ }
+ }else if(type == SeriesTreeModel::Part){
+ bool accept = (curIdx.data(SeriesTreeModel::IsLocalRole).toBool() == filterLocal);
+ if(accept){
+ return (filterRe.indexIn(name) != -1);
+ }
+ }
+ return false;
+}
+
AddCoverDialog::AddCoverDialog(QWidget *parent, Qt::WindowFlags f) : QDialog(parent, f){
//File selection
QLabel *l1 = new QLabel(tr("Select file"));