diff --git a/src/lib/CMakeLists.txt b/src/lib/CMakeLists.txt index c688c3e5..1bfcd86e 100644 --- a/src/lib/CMakeLists.txt +++ b/src/lib/CMakeLists.txt @@ -248,8 +248,6 @@ add_files( utility/messaging/type/MessageGraphNodeExpand.h utility/messaging/type/MessageGraphNodeMove.h utility/messaging/type/MessageInterruptTasks.h - utility/messaging/type/MessageLoadAfter.h - utility/messaging/type/MessageLoadBefore.h utility/messaging/type/MessageLoadProject.h utility/messaging/type/MessageMoveIDECursor.h utility/messaging/type/MessageProjectEdit.h diff --git a/src/lib/component/ComponentFactory.cpp b/src/lib/component/ComponentFactory.cpp index e18e0ecd..64e66ce1 100644 --- a/src/lib/component/ComponentFactory.cpp +++ b/src/lib/component/ComponentFactory.cpp @@ -38,6 +38,8 @@ ViewFactory* ComponentFactory::getViewFactory() const std::shared_ptr ComponentFactory::createCodeComponent(ViewLayout* viewLayout) { std::shared_ptr view = m_viewFactory->createCodeView(viewLayout); + view->createOverlay(); + std::shared_ptr controller = std::make_shared(m_storageAccess); return std::make_shared(view, controller); @@ -53,6 +55,8 @@ std::shared_ptr ComponentFactory::createFeatureComponent() std::shared_ptr ComponentFactory::createGraphComponent(ViewLayout* viewLayout) { std::shared_ptr view = m_viewFactory->createGraphView(viewLayout); + view->createOverlay(); + std::shared_ptr controller = std::make_shared(m_storageAccess); return std::make_shared(view, controller); diff --git a/src/lib/component/controller/GraphController.cpp b/src/lib/component/controller/GraphController.cpp index ef0499ab..ed5ac5ce 100644 --- a/src/lib/component/controller/GraphController.cpp +++ b/src/lib/component/controller/GraphController.cpp @@ -26,6 +26,8 @@ void GraphController::handleMessage(MessageActivateAll* message) { TRACE("graph all"); + getView()->showOverlay(); + m_activeNodeIds.clear(); m_activeEdgeIds.clear(); @@ -43,6 +45,8 @@ void GraphController::handleMessage(MessageActivateTokens* message) { TRACE("graph activate"); + getView()->showOverlay(); + if (message->isEdge || message->keepContent()) { m_activeEdgeIds = message->tokenIds; diff --git a/src/lib/component/view/View.cpp b/src/lib/component/view/View.cpp index d4ed7363..2a35421b 100644 --- a/src/lib/component/view/View.cpp +++ b/src/lib/component/view/View.cpp @@ -25,14 +25,29 @@ void View::addToLayout() m_viewLayout->addView(this); } +void View::setComponent(Component* component) +{ + m_component = component; +} + ViewWidgetWrapper* View::getWidgetWrapper() const { return m_widgetWrapper.get(); } -void View::setComponent(Component* component) +void View::createOverlay() { - m_component = component; + getWidgetWrapper()->createOverlay(); +} + +void View::showOverlay() +{ + getWidgetWrapper()->showOverlay(); +} + +void View::hideOverlay() +{ + getWidgetWrapper()->hideOverlay(); } ViewLayout* View::getViewLayout() const diff --git a/src/lib/component/view/View.h b/src/lib/component/view/View.h index 170b5d69..fd60ae16 100644 --- a/src/lib/component/view/View.h +++ b/src/lib/component/view/View.h @@ -35,6 +35,10 @@ public: ViewWidgetWrapper* getWidgetWrapper() const; + void createOverlay(); + void showOverlay(); + void hideOverlay(); + protected: template ControllerType* getController(); diff --git a/src/lib/component/view/ViewWidgetWrapper.h b/src/lib/component/view/ViewWidgetWrapper.h index 205753e4..6197921b 100644 --- a/src/lib/component/view/ViewWidgetWrapper.h +++ b/src/lib/component/view/ViewWidgetWrapper.h @@ -6,6 +6,10 @@ class ViewWidgetWrapper public: ViewWidgetWrapper(); virtual ~ViewWidgetWrapper(); + + virtual void createOverlay() = 0; + virtual void showOverlay() = 0; + virtual void hideOverlay() = 0; }; #endif // VIEW_WIDGET_WRAPPER_H diff --git a/src/lib/utility/messaging/type/MessageLoadAfter.h b/src/lib/utility/messaging/type/MessageLoadAfter.h deleted file mode 100644 index 1bee329e..00000000 --- a/src/lib/utility/messaging/type/MessageLoadAfter.h +++ /dev/null @@ -1,21 +0,0 @@ -#ifndef MESSAGE_LOAD_AFTER_H -#define MESSAGE_LOAD_AFTER_H - -#include "utility/messaging/Message.h" - -class MessageLoadAfter - : public Message -{ -public: - MessageLoadAfter() - { - setSendAsTask(false); - } - - static const std::string getStaticType() - { - return "MessageLoadAfter"; - } -}; - -#endif // MESSAGE_LOAD_AFTER_H diff --git a/src/lib/utility/messaging/type/MessageLoadBefore.h b/src/lib/utility/messaging/type/MessageLoadBefore.h deleted file mode 100644 index cf37d10d..00000000 --- a/src/lib/utility/messaging/type/MessageLoadBefore.h +++ /dev/null @@ -1,21 +0,0 @@ -#ifndef MESSAGE_LOAD_BEFORE_H -#define MESSAGE_LOAD_BEFORE_H - -#include "utility/messaging/Message.h" - -class MessageLoadBefore - : public Message -{ -public: - MessageLoadBefore() - { - setSendAsTask(false); - } - - static const std::string getStaticType() - { - return "MessageLoadBefore"; - } -}; - -#endif // MESSAGE_LOAD_BEFORE_H diff --git a/src/lib_gui/qt/view/QtCodeView.cpp b/src/lib_gui/qt/view/QtCodeView.cpp index aaab2549..7576c4d7 100644 --- a/src/lib_gui/qt/view/QtCodeView.cpp +++ b/src/lib_gui/qt/view/QtCodeView.cpp @@ -7,7 +7,6 @@ #include "qt/element/QtCodeArea.h" #include "qt/element/QtCodeFileList.h" #include "qt/utility/QtHighlighter.h" -#include "qt/view/QtViewOverlay.h" #include "qt/view/QtViewWidgetWrapper.h" #include "settings/ColorScheme.h" @@ -42,7 +41,6 @@ void QtCodeView::createWidgetWrapper() void QtCodeView::initView() { - m_overlay = new QtViewOverlay(m_widget); } void QtCodeView::refreshView() diff --git a/src/lib_gui/qt/view/QtCodeView.h b/src/lib_gui/qt/view/QtCodeView.h index 31843cc1..d8192e11 100644 --- a/src/lib_gui/qt/view/QtCodeView.h +++ b/src/lib_gui/qt/view/QtCodeView.h @@ -11,7 +11,6 @@ class QFrame; class QtCodeFileList; -class QtViewOverlay; class QWidget; class QtCodeView @@ -90,8 +89,6 @@ private: std::vector m_activeTokenIds; std::vector m_errorInfos; - - QtViewOverlay* m_overlay; }; # endif // QT_CODE_VIEW_H diff --git a/src/lib_gui/qt/view/QtGraphView.cpp b/src/lib_gui/qt/view/QtGraphView.cpp index cffa2901..5789ee35 100644 --- a/src/lib_gui/qt/view/QtGraphView.cpp +++ b/src/lib_gui/qt/view/QtGraphView.cpp @@ -26,7 +26,6 @@ #include "qt/view/graphElements/QtGraphNodeBundle.h" #include "qt/view/graphElements/QtGraphNodeData.h" #include "qt/view/graphElements/QtGraphNodeExpandToggle.h" -#include "qt/view/QtViewOverlay.h" #include "qt/view/QtViewWidgetWrapper.h" #include "settings/ColorScheme.h" @@ -73,8 +72,6 @@ void QtGraphView::initView() connect(view, SIGNAL(emptySpaceClicked()), this, SLOT(clickedInEmptySpace())); - m_overlay = new QtViewOverlay(widget); - doRefreshView(); } @@ -254,6 +251,8 @@ void QtGraphView::doRebuildGraph( m_graph = graph; } + hideOverlay(); + if (animated) { createTransition(); diff --git a/src/lib_gui/qt/view/QtGraphView.h b/src/lib_gui/qt/view/QtGraphView.h index 0c36ac3f..447d062c 100644 --- a/src/lib_gui/qt/view/QtGraphView.h +++ b/src/lib_gui/qt/view/QtGraphView.h @@ -15,7 +15,6 @@ class QSequentialAnimationGroup; class QtGraphEdge; class QtGraphicsView; class QtGraphNode; -class QtViewOverlay; class QtGraphView : public QObject @@ -109,8 +108,6 @@ private: std::shared_ptr m_transition; QPointF m_sceneRectOffset; - - QtViewOverlay* m_overlay; }; #endif // QT_GRAPH_VIEW_H diff --git a/src/lib_gui/qt/view/QtViewOverlay.cpp b/src/lib_gui/qt/view/QtViewOverlay.cpp index ea5128b5..0c6f2fbc 100644 --- a/src/lib_gui/qt/view/QtViewOverlay.cpp +++ b/src/lib_gui/qt/view/QtViewOverlay.cpp @@ -79,8 +79,8 @@ void QtOverlay::paintEvent(QPaintEvent *event) QtViewOverlay::QtViewOverlay(QWidget* parent) : m_parent(parent) - , m_beforeFunctor(std::bind(&QtViewOverlay::doBefore, this)) - , m_afterFunctor(std::bind(&QtViewOverlay::doAfter, this)) + , m_showFunctor(std::bind(&QtViewOverlay::doShowOverlay, this)) + , m_hideFunctor(std::bind(&QtViewOverlay::doHideOverlay, this)) { m_overlay = new QtOverlay(m_parent); m_parent->installEventFilter(new ResizeFilter(m_overlay)); @@ -88,17 +88,17 @@ QtViewOverlay::QtViewOverlay(QWidget* parent) m_timer = new QTimer(m_overlay); } -void QtViewOverlay::handleMessage(MessageLoadBefore* message) +void QtViewOverlay::showOverlay() { - m_beforeFunctor(); + m_showFunctor(); } -void QtViewOverlay::handleMessage(MessageLoadAfter* message) +void QtViewOverlay::hideOverlay() { - m_afterFunctor(); + m_hideFunctor(); } -void QtViewOverlay::doBefore() +void QtViewOverlay::doShowOverlay() { QObject::connect(m_timer, SIGNAL(timeout()), m_overlay, SLOT(animate())); @@ -107,7 +107,7 @@ void QtViewOverlay::doBefore() m_overlay->show(); } -void QtViewOverlay::doAfter() +void QtViewOverlay::doHideOverlay() { m_timer->stop(); diff --git a/src/lib_gui/qt/view/QtViewOverlay.h b/src/lib_gui/qt/view/QtViewOverlay.h index 91f35d7c..93f726b5 100644 --- a/src/lib_gui/qt/view/QtViewOverlay.h +++ b/src/lib_gui/qt/view/QtViewOverlay.h @@ -4,9 +4,6 @@ #include #include "qt/utility/QtThreadedFunctor.h" -#include "utility/messaging/MessageListener.h" -#include "utility/messaging/type/MessageLoadBefore.h" -#include "utility/messaging/type/MessageLoadAfter.h" class QTimer; @@ -50,26 +47,24 @@ private: class QtViewOverlay - : public MessageListener - , public MessageListener { public: QtViewOverlay(QWidget* parent = 0); -private: - void handleMessage(MessageLoadBefore* message); - void handleMessage(MessageLoadAfter* message); + void showOverlay(); + void hideOverlay(); - void doBefore(); - void doAfter(); +private: + void doShowOverlay(); + void doHideOverlay(); QWidget* m_parent; QtOverlay* m_overlay; QTimer* m_timer; - QtThreadedFunctor m_beforeFunctor; - QtThreadedFunctor m_afterFunctor; + QtThreadedFunctor m_showFunctor; + QtThreadedFunctor m_hideFunctor; }; #endif // QT_VIEW_OVERLAY diff --git a/src/lib_gui/qt/view/QtViewWidgetWrapper.cpp b/src/lib_gui/qt/view/QtViewWidgetWrapper.cpp index baf6c4ff..fff31be1 100644 --- a/src/lib_gui/qt/view/QtViewWidgetWrapper.cpp +++ b/src/lib_gui/qt/view/QtViewWidgetWrapper.cpp @@ -1,6 +1,7 @@ #include "qt/view/QtViewWidgetWrapper.h" #include "component/view/View.h" +#include "qt/view/QtViewOverlay.h" #include "utility/logging/logging.h" QWidget* QtViewWidgetWrapper::getWidgetOfView(const View* view) @@ -24,6 +25,7 @@ QWidget* QtViewWidgetWrapper::getWidgetOfView(const View* view) QtViewWidgetWrapper::QtViewWidgetWrapper(QWidget* widget) : m_widget(widget) + , m_overlay(nullptr) { } @@ -31,6 +33,27 @@ QtViewWidgetWrapper::~QtViewWidgetWrapper() { } +void QtViewWidgetWrapper::createOverlay() +{ + m_overlay = new QtViewOverlay(m_widget); +} + +void QtViewWidgetWrapper::showOverlay() +{ + if (m_overlay) + { + m_overlay->showOverlay(); + } +} + +void QtViewWidgetWrapper::hideOverlay() +{ + if (m_overlay) + { + m_overlay->hideOverlay(); + } +} + QWidget* QtViewWidgetWrapper::getWidget() { return m_widget; diff --git a/src/lib_gui/qt/view/QtViewWidgetWrapper.h b/src/lib_gui/qt/view/QtViewWidgetWrapper.h index 1935c0e1..e19564f8 100644 --- a/src/lib_gui/qt/view/QtViewWidgetWrapper.h +++ b/src/lib_gui/qt/view/QtViewWidgetWrapper.h @@ -6,8 +6,10 @@ #include "component/view/ViewWidgetWrapper.h" class View; +class QtViewOverlay; -class QtViewWidgetWrapper: public ViewWidgetWrapper +class QtViewWidgetWrapper + : public ViewWidgetWrapper { public: static QWidget* getWidgetOfView(const View* view); @@ -15,10 +17,16 @@ public: QtViewWidgetWrapper(QWidget* widget); virtual ~QtViewWidgetWrapper(); + virtual void createOverlay() override; + virtual void showOverlay() override; + virtual void hideOverlay() override; + QWidget* getWidget(); private: QWidget* m_widget; + + QtViewOverlay* m_overlay; }; #endif // QT_VIEW_WIDGET_WRAPPER_H