From 9e12957c363a68543456dfe95ab88a11a69ae610 Mon Sep 17 00:00:00 2001 From: Arno Date: Thu, 5 Aug 2010 20:39:09 +0200 Subject: Fixed edit trigger in SeriesTreeView Until now doubleclicking an item with children in SeriesTreeWidget did 3 things: 1. Expand or collapse the item 2. Trigger editing 3. Start playing all child movies in the default player This is not really expected behavior. So I disabled all EditTriggers on SeriesTreeView and set expandsOnDoubleClick to false. To still retain the ability to edit series a new slot was introduced to SeriesTreeWidget triggering the edit event. It's available from the SeriesTreeWidget context menu. Now doubleclicking an item in SeriesTreeView just plays all child movies. Child items also have their name changed when changing the parent item. This bug was long present in renameSeries. mergeSeries always did the right thing (tm). --- seriestreemodel.cpp | 9 +++++++++ seriestreewidget.cpp | 9 +++++++++ seriestreewidget.h | 1 + shemov.cpp | 3 +++ shemov.h | 1 + 5 files changed, 23 insertions(+) diff --git a/seriestreemodel.cpp b/seriestreemodel.cpp index 0f20f3a..8de3d01 100644 --- a/seriestreemodel.cpp +++ b/seriestreemodel.cpp @@ -492,6 +492,15 @@ bool SeriesTreeModel::renameSeries(const QModelIndex &source, const QVariant &va SmTreeItem *curItem = static_cast(source.internalPointer()); curItem->setData(Name, value); emit dataChanged(source, source); + for(int i = 0; i < curItem->childCount(); ++i){ + SmTreeItem *child = curItem->child(i); + child->setData(Name, value); + } + if(curItem->childCount()){ + QModelIndex start = source.child(0, 0); + QModelIndex end = source.child(curItem->childCount() - 1, 0); + emit dataChanged(start, end); + } emit needResort(); return true; } diff --git a/seriestreewidget.cpp b/seriestreewidget.cpp index b09d7f7..e717b13 100644 --- a/seriestreewidget.cpp +++ b/seriestreewidget.cpp @@ -58,6 +58,8 @@ SeriesTreeWidget::SeriesTreeWidget(QWidget *parent) : QWidget(parent){ } mView->resizeColumnToContents(0); mView->setSelectionMode(QAbstractItemView::ExtendedSelection); + mView->setEditTriggers(QAbstractItemView::NoEditTriggers); + mView->setExpandsOnDoubleClick(false); connect(mModel, SIGNAL(needResort()), this, SLOT(resort())); connect(mView, SIGNAL(expanded(QModelIndex)), this, SLOT(itemExpanded(QModelIndex))); connect(mView, SIGNAL(collapsed(QModelIndex)), this, SLOT(itemCollaped(QModelIndex))); @@ -268,6 +270,13 @@ void SeriesTreeWidget::expandItems(const QStringList &items){ } } +void SeriesTreeWidget::editItem(){ + QModelIndex current = mView->selectionModel()->currentIndex(); + if(current.isValid()){ + mView->edit(current); + } +} + void SeriesTreeWidget::addCover(){ QModelIndexList selected = mView->selectionModel()->selectedRows(); if(selected.isEmpty()){ diff --git a/seriestreewidget.h b/seriestreewidget.h index 2e28c1c..a917501 100644 --- a/seriestreewidget.h +++ b/seriestreewidget.h @@ -46,6 +46,7 @@ class SeriesTreeWidget : public QWidget { void itemExpanded(const QModelIndex &); void itemCollaped(const QModelIndex &); void expandItems(const QStringList &items); + void editItem(); signals: void filesReload(); diff --git a/shemov.cpp b/shemov.cpp index 36b0f1f..4bb7dd9 100644 --- a/shemov.cpp +++ b/shemov.cpp @@ -343,6 +343,8 @@ void SheMov::createActions(){ connect(mExpandCurrentA, SIGNAL(triggered()), mATree->seriesWidget(), SLOT(expandCurrent())); mAddCoverA = new QAction(tr("Add cover..."), this); connect(mAddCoverA, SIGNAL(triggered()), mATree->seriesWidget(), SLOT(addCover())); + mEditItemA = new QAction(tr("Edit..."), this); + connect(mEditItemA, SIGNAL(triggered()), mATree->seriesWidget(), SLOT(editItem())); //Tree view menu mViewTreeGroup = new QActionGroup(this); @@ -467,6 +469,7 @@ void SheMov::createMenus(){ //ArchiveTreeView context menu mATree->seriesWidget()->seriesTree()->addAction(mNewSeriesA); mATree->seriesWidget()->seriesTree()->addAction(mDeleteFromSeriesA); + mATree->seriesWidget()->seriesTree()->addAction(mEditItemA); QAction *sep4 = new QAction(this); sep4->setSeparator(true); mATree->seriesWidget()->seriesTree()->addAction(sep4); diff --git a/shemov.h b/shemov.h index 24e00dc..2d7c94e 100644 --- a/shemov.h +++ b/shemov.h @@ -92,6 +92,7 @@ class SheMov : public QMainWindow { QAction *mExpandCurrentA; QAction *mNewMovieWizardA; QAction *mAddCoverA; + QAction *mEditItemA; //TreeView View Actions QAction *mShowLocalA; -- cgit v1.2.3-70-g09d2