From b185254de61a7b6497d480339a9a38ff94a2cd87 Mon Sep 17 00:00:00 2001 From: Arno Date: Wed, 10 Oct 2012 19:56:12 +0200 Subject: Usability: MappingTreeWidget Try to select newly added mapping. Only try, because it will fail if we have two children with the same name. The first will win. --- mappingtreewidget.cpp | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'mappingtreewidget.cpp') diff --git a/mappingtreewidget.cpp b/mappingtreewidget.cpp index 0951312..305bb41 100644 --- a/mappingtreewidget.cpp +++ b/mappingtreewidget.cpp @@ -42,6 +42,7 @@ MappingTreeWidget::MappingTreeWidget(QWidget *parent) : QWidget(parent){ mTree->setColumnHidden(1, true); mTree->setColumnHidden(2, true); mTree->setColumnHidden(3, true); + mTree->setColumnHidden(4, true); mTree->setAlternatingRowColors(true); mTree->expandAll(); connect(mModel, SIGNAL(needExpansion()), mTree, SLOT(expandAll())); @@ -119,15 +120,23 @@ void MappingTreeWidget::addChild(){ QMessageBox::critical(this, tr("Error"), msg); return; } - QModelIndex sel = selected(); QModelIndex parent = mModel->rootIndex(); if(!dlg.createRoot()){ QModelIndex sel = selected(); parent = mProxy->mapToSource(sel); } if(!mModel->addChild(value, parent)){ - QString err = QString(tr("Error: Database said: %1")).arg(mModel->lastError().text()); + QString err = QString(tr("

Failed to create child! Database said:

%1

")).arg(mModel->lastError().text()); QMessageBox::critical(this, tr("Error"), err); + }else{ + // we repopulated the model, so all indexes are invalid! + // this will fail if we have 2 children with the same name... :( + QModelIndex newSIdx = mModel->findRecursive(value, 0, mModel->rootIndex()); + if(newSIdx.isValid()){ + QModelIndex newPIdx = mProxy->mapFromSource(newSIdx); + mTree->scrollTo(newPIdx, QAbstractItemView::EnsureVisible); + mTree->selectionModel()->setCurrentIndex(newPIdx, QItemSelectionModel::ClearAndSelect | QItemSelectionModel::Current | QItemSelectionModel::Rows); + } } } -- cgit v1.2.3-70-g09d2