logic: Disable bookmark creation when overview or errors are shown
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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());
|
||||
|
||||
Reference in New Issue
Block a user