logic: Disable bookmark creation when overview or errors are shown

This commit is contained in:
Eberhard Graether
2017-04-26 16:44:49 +02:00
parent b98444c15e
commit e33be096a6
3 changed files with 38 additions and 5 deletions
@@ -32,6 +32,12 @@ BookmarkController::~BookmarkController()
void BookmarkController::clear()
{
m_activeNodeIds.clear();
m_activeEdgeIds.clear();
m_hasBookmarkForActiveToken = false;
getView<BookmarkView>()->setCreateButtonState(BookmarkView::CreateButtonState::CANNOT_CREATE);
}
std::vector<std::shared_ptr<Bookmark>> BookmarkController::getBookmarks(
@@ -97,6 +103,11 @@ std::shared_ptr<Bookmark> BookmarkController::getBookmarkForActiveToken() const
return std::shared_ptr<Bookmark>();
}
bool BookmarkController::canCreateBookmark() const
{
return m_activeNodeIds.size() || m_activeEdgeIds.size();
}
BookmarkController::BookmarkCache::BookmarkCache(StorageAccess* storageAccess)
: m_storageAccess(storageAccess)
{
@@ -128,6 +139,11 @@ std::vector<EdgeBookmark> BookmarkController::BookmarkCache::getAllEdgeBookmarks
return m_edgeBookmarks;
}
void BookmarkController::handleMessage(MessageActivateAll* message)
{
clear();
}
void BookmarkController::handleMessage(MessageActivateBookmark* message)
{
LOG_INFO_STREAM(<< "Attempting to activate Bookmark");
@@ -203,7 +219,7 @@ void BookmarkController::handleMessage(MessageActivateTokens* message)
getView<BookmarkView>()->setCreateButtonState(BookmarkView::CreateButtonState::CAN_CREATE);
}
}
else if(!message->isEdge)
else if (!message->isEdge)
{
LOG_INFO_STREAM(<< "Registering new Node");
@@ -254,8 +270,7 @@ void BookmarkController::handleMessage(MessageCreateBookmark* message)
LOG_ERROR("Cannot create bookmark for edge if no active node exists");
}
const Id id = m_storageAccess->addEdgeBookmark(bookmark);
bookmark.setId(id);
m_storageAccess->addEdgeBookmark(bookmark);
}
else
{
@@ -273,8 +288,7 @@ void BookmarkController::handleMessage(MessageCreateBookmark* message)
NodeBookmark bookmark(0, displayName, message->comment, TimePoint::now(), category);
bookmark.setNodeIds(m_activeNodeIds);
const Id id = m_storageAccess->addNodeBookmark(bookmark);
bookmark.setId(id);
m_storageAccess->addNodeBookmark(bookmark);
}
m_bookmarkCache.clear();
@@ -361,6 +375,11 @@ void BookmarkController::handleMessage(MessageFinishedParsing* message)
getView<BookmarkView>()->enableDisplayBookmarks(true);
}
void BookmarkController::handleMessage(MessageShowErrors* message)
{
clear();
}
std::vector<std::shared_ptr<Bookmark>> BookmarkController::getAllBookmarks() const
{
LOG_INFO_STREAM(<< "Retrieving all bookmarks");
@@ -8,6 +8,7 @@
#include "data/StorageTypes.h"
#include "utility/messaging/MessageListener.h"
#include "utility/messaging/type/MessageActivateAll.h"
#include "utility/messaging/type/MessageActivateBookmark.h"
#include "utility/messaging/type/MessageActivateEdge.h"
#include "utility/messaging/type/MessageActivateTokens.h"
@@ -19,6 +20,7 @@
#include "utility/messaging/type/MessageDisplayBookmarks.h"
#include "utility/messaging/type/MessageEditBookmark.h"
#include "utility/messaging/type/MessageFinishedParsing.h"
#include "utility/messaging/type/MessageShowErrors.h"
#include "component/controller/Controller.h"
@@ -26,6 +28,7 @@ class StorageAccess;
class BookmarkController
: public Controller
, public MessageListener<MessageActivateAll>
, public MessageListener<MessageActivateBookmark>
, public MessageListener<MessageActivateTokens>
, public MessageListener<MessageCreateBookmark>
@@ -35,6 +38,7 @@ class BookmarkController
, public MessageListener<MessageDeleteBookmarkForActiveTokens>
, public MessageListener<MessageEditBookmark>
, public MessageListener<MessageFinishedParsing>
, public MessageListener<MessageShowErrors>
{
public:
BookmarkController(StorageAccess* storageAccess);
@@ -47,9 +51,12 @@ public:
std::vector<std::string> getActiveTokenDisplayNames() const;
std::vector<BookmarkCategory> getAllBookmarkCategories() const;
bool hasBookmarkForActiveToken() const;
std::shared_ptr<Bookmark> getBookmarkForActiveToken() const;
bool canCreateBookmark() const;
private:
class BookmarkCache
{
@@ -69,6 +76,7 @@ private:
bool m_edgeBookmarksValid;
};
virtual void handleMessage(MessageActivateAll* message);
virtual void handleMessage(MessageActivateBookmark* message);
virtual void handleMessage(MessageActivateTokens* message);
virtual void handleMessage(MessageCreateBookmark* message);
@@ -78,6 +86,7 @@ private:
virtual void handleMessage(MessageDeleteBookmarkForActiveTokens* message);
virtual void handleMessage(MessageEditBookmark* message);
virtual void handleMessage(MessageFinishedParsing* message);
virtual void handleMessage(MessageShowErrors* message);
std::vector<std::shared_ptr<Bookmark>> getAllBookmarks() const;
std::vector<std::shared_ptr<NodeBookmark>> getAllNodeBookmarks() const;
+5
View File
@@ -46,6 +46,11 @@ void BookmarkView::handleMessage(MessageDisplayBookmarks* message)
void BookmarkView::handleMessage(MessageDisplayBookmarkCreator* message)
{
if (!getController()->canCreateBookmark())
{
return;
}
if (getController()->hasBookmarkForActiveToken())
{
displayBookmarkEditor(getController()->getBookmarkForActiveToken(), getController()->getAllBookmarkCategories());