diff options
author | Eirik Aavitsland <eirik.aavitsland@qt.io> | 2017-12-11 15:11:05 +0100 |
---|---|---|
committer | Eirik Aavitsland <eirik.aavitsland@qt.io> | 2017-12-14 10:37:49 +0000 |
commit | 2f3dc790aefadc74debfa25efe958078def34146 (patch) | |
tree | abddeca402d1f135bcd1192fde9abbfe1c9d5c92 | |
parent | 796a5e005fa1ae2bfe6f9278fc482723eb89f429 (diff) | |
download | qttools-2f3dc790aefadc74debfa25efe958078def34146.tar.gz |
Assistant: ensure bookmarks are persistently stored when changed
The bookmark manager would only update the persistent storage in its
destructor. Since that is not called on an unclean process
termination, bookmark changes would be lost. Fix by updating the
persistent storage after every bookmark change.
Task-number: QTBUG-50350
Change-Id: Id03d5ea96df15d01fdf482203aaf1db7166a7036
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
-rw-r--r-- | src/assistant/assistant/bookmarkmanager.cpp | 22 | ||||
-rw-r--r-- | src/assistant/assistant/bookmarkmanager.h | 7 |
2 files changed, 28 insertions, 1 deletions
diff --git a/src/assistant/assistant/bookmarkmanager.cpp b/src/assistant/assistant/bookmarkmanager.cpp index 9016c2c6e..fe1b04067 100644 --- a/src/assistant/assistant/bookmarkmanager.cpp +++ b/src/assistant/assistant/bookmarkmanager.cpp @@ -81,6 +81,12 @@ void BookmarkManager::BookmarkTreeView::subclassKeyPressEvent(QKeyEvent *event) QTreeView::keyPressEvent(event); } +void BookmarkManager::BookmarkTreeView::commitData(QWidget *editor) +{ + QTreeView::commitData(editor); + emit editingDone(); +} + void BookmarkManager::BookmarkTreeView::setExpandedData(const QModelIndex &index) { TRACE_OBJ @@ -142,6 +148,8 @@ void BookmarkManager::addBookmark(const QString &title, const QString &url) TRACE_OBJ showBookmarkDialog(title.isEmpty() ? tr("Untitled") : title, url.isEmpty() ? QLatin1String("about:blank") : url); + + storeBookmarks(); } // -- private @@ -178,6 +186,8 @@ BookmarkManager::BookmarkManager() [this](const QModelIndex &index) { setSourceFromIndex(index, false); }); connect(bookmarkTreeView, &QWidget::customContextMenuRequested, this, &BookmarkManager::customContextMenuRequested); + connect(bookmarkTreeView, &BookmarkTreeView::editingDone, + this, &BookmarkManager::storeBookmarks); connect(&HelpEngineWrapper::instance(), &HelpEngineWrapper::setupFinished, this, &BookmarkManager::setupFinished); @@ -195,13 +205,14 @@ BookmarkManager::BookmarkManager() this, &BookmarkManager::refreshBookmarkToolBar); connect(bookmarkModel, &QAbstractItemModel::dataChanged, this, &BookmarkManager::refreshBookmarkToolBar); + } BookmarkManager::~BookmarkManager() { TRACE_OBJ delete bookmarkManagerWidget; - HelpEngineWrapper::instance().setBookmarks(bookmarkModel->bookmarks()); + storeBookmarks(); delete bookmarkModel; } @@ -225,6 +236,8 @@ void BookmarkManager::removeItem(const QModelIndex &index) return; } bookmarkModel->removeItem(current); + + storeBookmarks(); } bool BookmarkManager::eventFilter(QObject *object, QEvent *event) @@ -332,6 +345,11 @@ void BookmarkManager::setupFinished() typeAndSearchModel->setSourceModel(bookmarkFilterModel); } +void BookmarkManager::storeBookmarks() +{ + HelpEngineWrapper::instance().setBookmarks(bookmarkModel->bookmarks()); +} + void BookmarkManager::addBookmarkActivated() { TRACE_OBJ @@ -517,6 +535,8 @@ void BookmarkManager::managerWidgetAboutToClose() { delete bookmarkManagerWidget; bookmarkManagerWidget = 0; + + storeBookmarks(); } void BookmarkManager::textChanged(const QString &text) diff --git a/src/assistant/assistant/bookmarkmanager.h b/src/assistant/assistant/bookmarkmanager.h index fcdebf4d1..ac3a13a9e 100644 --- a/src/assistant/assistant/bookmarkmanager.h +++ b/src/assistant/assistant/bookmarkmanager.h @@ -77,6 +77,7 @@ private: private slots: void setupFinished(); + void storeBookmarks(); void addBookmarkActivated(); void removeBookmarkActivated(); @@ -137,6 +138,12 @@ public: void subclassKeyPressEvent(QKeyEvent *event); +signals: + void editingDone(); + +protected slots: + void commitData(QWidget *editor); + private slots: void setExpandedData(const QModelIndex &index); }; |