From 09248fdb1453888a3d4bef476c216bc3e5ce3453 Mon Sep 17 00:00:00 2001 From: Florian Geyer Date: Wed, 2 May 2012 19:33:37 +0200 Subject: [PATCH] Select newly created entries. --- src/gui/DatabaseWidget.cpp | 2 ++ src/gui/EntryModel.cpp | 7 +++++++ src/gui/EntryModel.h | 1 + src/gui/EntryView.cpp | 5 +++++ src/gui/EntryView.h | 1 + 5 files changed, 16 insertions(+) diff --git a/src/gui/DatabaseWidget.cpp b/src/gui/DatabaseWidget.cpp index 7ed11f22..e866cbb9 100644 --- a/src/gui/DatabaseWidget.cpp +++ b/src/gui/DatabaseWidget.cpp @@ -223,6 +223,8 @@ void DatabaseWidget::switchToView(bool accepted) else if (m_newEntry) { if (accepted) { m_newEntry->setGroup(m_newParent); + m_entryView->setFocus(); + m_entryView->setCurrentEntry(m_newEntry); } else { delete m_newEntry; diff --git a/src/gui/EntryModel.cpp b/src/gui/EntryModel.cpp index 37a17028..b966e76e 100644 --- a/src/gui/EntryModel.cpp +++ b/src/gui/EntryModel.cpp @@ -35,6 +35,13 @@ Entry* EntryModel::entryFromIndex(const QModelIndex& index) const return m_group->entries().at(index.row()); } +QModelIndex EntryModel::indexFromEntry(Entry* entry) const +{ + int row = m_group->entries().indexOf(entry); + Q_ASSERT(row != -1); + return index(row, 0); +} + void EntryModel::setGroup(Group* group) { beginResetModel(); diff --git a/src/gui/EntryModel.h b/src/gui/EntryModel.h index a248a5d1..fd44f96a 100644 --- a/src/gui/EntryModel.h +++ b/src/gui/EntryModel.h @@ -30,6 +30,7 @@ class EntryModel : public QAbstractTableModel public: explicit EntryModel(QObject* parent = 0); Entry* entryFromIndex(const QModelIndex& index) const; + QModelIndex indexFromEntry(Entry* entry) const; int rowCount(const QModelIndex& parent = QModelIndex()) const; int columnCount(const QModelIndex& parent = QModelIndex()) const; diff --git a/src/gui/EntryView.cpp b/src/gui/EntryView.cpp index 9985a1eb..40b12c60 100644 --- a/src/gui/EntryView.cpp +++ b/src/gui/EntryView.cpp @@ -60,3 +60,8 @@ bool EntryView::isSingleEntrySelected() { return (selectionModel()->selectedRows().size() == 1); } + +void EntryView::setCurrentEntry(Entry* entry) +{ + setCurrentIndex(m_model->indexFromEntry(entry)); +} diff --git a/src/gui/EntryView.h b/src/gui/EntryView.h index 99b7d2fc..a00f3b10 100644 --- a/src/gui/EntryView.h +++ b/src/gui/EntryView.h @@ -33,6 +33,7 @@ public: void setModel(QAbstractItemModel* model); Entry* currentEntry(); bool isSingleEntrySelected(); + void setCurrentEntry(Entry* entry); public Q_SLOTS: void setGroup(Group* group);