From a493d6500c33a0956e0165ad53136fa6110a7a64 Mon Sep 17 00:00:00 2001 From: Arno Date: Thu, 29 Jul 2010 22:26:54 +0200 Subject: Fix SQL errors While trying to find out why a newly added SeriesPart won't get selected programmatically, I discovered a not so serious SQL bug. MappingTableModel::addMapping happily tries to execute queries with an invalid seriesPartId. Return if seriesPartId = -1. Now all items expanded previously will be expanded after adding a new movie. (SeriesTreeWidgetT::seriesAdded). Unfortunately the original problem remains unsolved... --- mappingtablemodel.cpp | 3 +++ seriestreewidget.cpp | 11 +++++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/mappingtablemodel.cpp b/mappingtablemodel.cpp index bcb601e..65221e4 100644 --- a/mappingtablemodel.cpp +++ b/mappingtablemodel.cpp @@ -163,6 +163,9 @@ bool MappingTableModel::removeItem(const QModelIndex &idx){ } bool MappingTableModel::addMapping(int seriesPartId, int itemId){ + if(seriesPartId == -1){ + return false; + } mDb.transaction(); mAddMappingQuery->bindValue(":id1", seriesPartId); mAddMappingQuery->bindValue(":id2", itemId); diff --git a/seriestreewidget.cpp b/seriestreewidget.cpp index 7e60c53..35276a1 100644 --- a/seriestreewidget.cpp +++ b/seriestreewidget.cpp @@ -77,7 +77,7 @@ void SeriesTreeWidget::newSeries(){ QModelIndex newRow = mModel->index(mModel->rowCount(QModelIndex()) - 1, 0, QModelIndex()); if(newRow.isValid()){ QModelIndex proxyIndex = mProxy->mapFromSource(newRow); - mView->selectionModel()->setCurrentIndex(proxyIndex, QItemSelectionModel::ClearAndSelect); + mView->selectionModel()->select(proxyIndex, QItemSelectionModel::ClearAndSelect); mView->edit(proxyIndex); } } @@ -86,6 +86,10 @@ void SeriesTreeWidget::newSeries(){ void SeriesTreeWidget::seriesAdded(QString seriesName, int seriesPart, bool resort){ if(resort){ mProxy->invalidate(); + foreach(QString e, mExpandedItems){ + QModelIndex idx = mProxy->mapFromSource(mModel->findValue(e)); + mView->expand(idx); + } } QModelIndex destIdx = mModel->findValue(seriesName); if(destIdx.isValid()){ @@ -96,7 +100,10 @@ void SeriesTreeWidget::seriesAdded(QString seriesName, int seriesPart, bool reso } if(destIdx.isValid()){ QModelIndex proxyIndex = mProxy->mapFromSource(destIdx); - mView->selectionModel()->setCurrentIndex(proxyIndex, QItemSelectionModel::ClearAndSelect); + if(destIdx.parent().isValid()){ + mView->expand(destIdx); + } + mView->selectionModel()->select(proxyIndex, QItemSelectionModel::ClearAndSelect); } } -- cgit v1.2.3-70-g09d2