From a7a5e2a7b07b8bc0c9524cfe8e78cc8a5f06d6e2 Mon Sep 17 00:00:00 2001 From: anjoer <andyjoerg@gmail.com> Date: Fri, 18 Nov 2016 17:01:28 +0100 Subject: [PATCH] Added Views for TextureObjects and TrackedComponents --- .../Controller/ControllerGraphicScene.cpp | 21 +++++++++++++--- .../Controller/ControllerGraphicScene.h | 8 ++++++- .../ControllerStrategies/GuiContext.cpp | 20 ++++++++-------- .../Controller/ControllerTextureObject.cpp | 21 ++++++++++++---- .../Interfaces/IView/IGraphicsPixmapItem.cpp | 24 +++++++++++++++++++ .../Interfaces/IView/IGraphicsPixmapItem.h | 22 +++++++++++++++++ .../TrackedComponents/TrackedElement.cpp | 7 ++++++ 7 files changed, 105 insertions(+), 18 deletions(-) create mode 100644 biotracker/Interfaces/IView/IGraphicsPixmapItem.cpp create mode 100644 biotracker/Interfaces/IView/IGraphicsPixmapItem.h diff --git a/biotracker/Controller/ControllerGraphicScene.cpp b/biotracker/Controller/ControllerGraphicScene.cpp index a20fcb56..e6a733d6 100644 --- a/biotracker/Controller/ControllerGraphicScene.cpp +++ b/biotracker/Controller/ControllerGraphicScene.cpp @@ -1,6 +1,5 @@ #include "ControllerGraphicScene.h" #include "Model/TrackedComponents/TrackedElement.h" -#include "../biotracker_gui/biotracker/View/TrackedElementView.h" #include "../biotracker_gui/biotracker/View/GraphicsView.h" #include "Model/null_Model.h" @@ -10,9 +9,21 @@ ControllerGraphicScene::ControllerGraphicScene(QObject *parent, IBioTrackerConte } +void ControllerGraphicScene::addGraphicsItem(QGraphicsItem *item) +{ + GraphicsView *gview = dynamic_cast<GraphicsView *> (m_View); + gview->addGraphicsItem(item); +} + +void ControllerGraphicScene::addTextureObject(QGraphicsItem *item) +{ + GraphicsView *gview = dynamic_cast<GraphicsView *> (m_View); + gview->addPixmapItem(item); +} + void ControllerGraphicScene::createModel() { - m_Element = new TrackedElement(0, QString("myElement")); + m_Element = new TrackedElement(this, QString("myElement")); m_NullModel = new null_Model(); } @@ -20,6 +31,8 @@ void ControllerGraphicScene::createView() { m_View = new GraphicsView(0, this, m_NullModel); m_ElementView = new TrackedElementView(0, this, m_Element); + + addGraphicsItem(m_ElementView); } void ControllerGraphicScene::connectModelController() @@ -29,5 +42,7 @@ void ControllerGraphicScene::connectModelController() void ControllerGraphicScene::connectController() { - + IController *ctrM = m_BioTrackerContext->requestController(ENUMS::CONTROLLERTYPE::MAINWINDOW); + BioTracker3MainWindow *mainWin = dynamic_cast<BioTracker3MainWindow *>(ctrM->getView()); + mainWin->addVideoView(m_View); } diff --git a/biotracker/Controller/ControllerGraphicScene.h b/biotracker/Controller/ControllerGraphicScene.h index 62405a09..94a972b3 100644 --- a/biotracker/Controller/ControllerGraphicScene.h +++ b/biotracker/Controller/ControllerGraphicScene.h @@ -2,12 +2,18 @@ #define CONTROLLERGRAPHICSCENE_H #include "Interfaces/IController/icontroller.h" +#include "QGraphicsObject" +#include "../biotracker_gui/biotracker/View/TrackedElementView.h" + class ControllerGraphicScene : public IController { public: ControllerGraphicScene(QObject *parent = 0, IBioTrackerContext *context = 0, ENUMS::CONTROLLERTYPE ctr = ENUMS::CONTROLLERTYPE::NO_CTR); + void addGraphicsItem(QGraphicsItem *item); + void addTextureObject(QGraphicsItem *item); + // IController interface protected: void createModel() override; @@ -16,7 +22,7 @@ protected: void connectController() override; private: - IView *m_ElementView; + TrackedElementView *m_ElementView; IView *m_GraphicsView; IModel *m_Element; diff --git a/biotracker/Controller/ControllerStrategies/GuiContext.cpp b/biotracker/Controller/ControllerStrategies/GuiContext.cpp index 9c3619e7..d47ea94e 100644 --- a/biotracker/Controller/ControllerStrategies/GuiContext.cpp +++ b/biotracker/Controller/ControllerStrategies/GuiContext.cpp @@ -27,18 +27,18 @@ GuiContext::GuiContext(QObject *parent) : void GuiContext::createAppController() { - m_ControllersMap.value(ENUMS::CONTROLLERTYPE::MAINWINDOW)->createComponents(); - m_ControllersMap.value(ENUMS::CONTROLLERTYPE::PLAYER)->createComponents(); - m_ControllersMap.value(ENUMS::CONTROLLERTYPE::TEXTUREOBJECT)->createComponents(); - m_ControllersMap.value(ENUMS::CONTROLLERTYPE::TRACKING)->createComponents(); - m_ControllersMap.value(ENUMS::CONTROLLERTYPE::GRAPHICSVIEW)->createComponents(); - - - + QMap<ENUMS::CONTROLLERTYPE, IController *>::iterator i; + for (i = m_ControllersMap.begin(); i != m_ControllersMap.end(); ++i) + { + i.value()->createComponents(); + } } void GuiContext::connectController() { - - + QMap<ENUMS::CONTROLLERTYPE, IController *>::iterator i; + for (i = m_ControllersMap.begin(); i != m_ControllersMap.end(); ++i) + { + i.value()->connectComponents(); + } } diff --git a/biotracker/Controller/ControllerTextureObject.cpp b/biotracker/Controller/ControllerTextureObject.cpp index fdd9388b..ed6205e3 100644 --- a/biotracker/Controller/ControllerTextureObject.cpp +++ b/biotracker/Controller/ControllerTextureObject.cpp @@ -1,8 +1,10 @@ #include "ControllerTextureObject.h" #include "../biotracker_gui/biotracker/View/BioTracker3VideoView.h" #include "../biotracker_gui/biotracker/View/BioTracker3MainWindow.h" +#include "Controller/ControllerGraphicScene.h" #include "Controller/ControllerPlayer.h" #include "Model/BioTracker3Player.h" +#include "../biotracker_gui/biotracker/View/TextureObjectView.h" ControllerTextureObject::ControllerTextureObject(QObject *parent, IBioTrackerContext *context, ENUMS::CONTROLLERTYPE ctr) : IController(parent, context, ctr) @@ -29,9 +31,9 @@ void ControllerTextureObject::addTextureElementView(IView *view) void ControllerTextureObject::connectController() { - IController *ctrM = m_BioTrackerContext->requestController(ENUMS::CONTROLLERTYPE::MAINWINDOW); - BioTracker3MainWindow *mainWin = dynamic_cast<BioTracker3MainWindow *>(ctrM->getView()); - mainWin->addVideoView(m_View); +// IController *ctrM = m_BioTrackerContext->requestController(ENUMS::CONTROLLERTYPE::MAINWINDOW); +// BioTracker3MainWindow *mainWin = dynamic_cast<BioTracker3MainWindow *>(ctrM->getView()); +// mainWin->addVideoView(m_View); IController *ctr = m_BioTrackerContext->requestController(ENUMS::CONTROLLERTYPE::PLAYER); @@ -43,6 +45,15 @@ void ControllerTextureObject::connectController() BioTracker3VideoControllWidget *videoView = dynamic_cast<BioTracker3VideoControllWidget *> (ctrPlayer->getView()); videoView->setVideoViewComboboxModel(m_TextureViewNamesModel); + + + IController *ctrG = m_BioTrackerContext->requestController(ENUMS::CONTROLLERTYPE::GRAPHICSVIEW); + ControllerGraphicScene *ctrGraphics = dynamic_cast<ControllerGraphicScene *>(ctrG); + QGraphicsPixmapItem *item = dynamic_cast<QGraphicsPixmapItem *>(m_View); + + ctrGraphics->addTextureObject(item); + + } void ControllerTextureObject::receiveCvMat(cv::Mat mat, QString name) @@ -62,7 +73,9 @@ void ControllerTextureObject::createModel() void ControllerTextureObject::createView() { - m_View = new BioTracker3VideoView(0, this, m_Model); + m_View = new TextureObjectView(this, this, m_Model); + // this is the gl widget + // m_View = new BioTracker3VideoView(0, this, m_Model); } void ControllerTextureObject::connectModelController() diff --git a/biotracker/Interfaces/IView/IGraphicsPixmapItem.cpp b/biotracker/Interfaces/IView/IGraphicsPixmapItem.cpp new file mode 100644 index 00000000..acd55652 --- /dev/null +++ b/biotracker/Interfaces/IView/IGraphicsPixmapItem.cpp @@ -0,0 +1,24 @@ +#include "IGraphicsPixmapItem.h" + +IGraphicsPixmapItem::IGraphicsPixmapItem(QObject *parent, IController *controller, IModel *model) : + QObject(parent), + IView(controller, model) +{ + +} + +void IGraphicsPixmapItem::setNewModel(IModel *model) +{ + if (getModel() != nullptr) { + QObject::disconnect(getModel(), 0, this, 0); + } + + setModel(model); + + if (getModel() != nullptr) { + connectModelView(); + } + + update(); +} + diff --git a/biotracker/Interfaces/IView/IGraphicsPixmapItem.h b/biotracker/Interfaces/IView/IGraphicsPixmapItem.h new file mode 100644 index 00000000..47eaa3ad --- /dev/null +++ b/biotracker/Interfaces/IView/IGraphicsPixmapItem.h @@ -0,0 +1,22 @@ +#ifndef IGRAPHICSPIXMAPITEM_H +#define IGRAPHICSPIXMAPITEM_H + +#include "IView.h" +#include "QObject" +#include "QGraphicsPixmapItem" + +class IGraphicsPixmapItem : public QObject, public QGraphicsPixmapItem, public IView +{ + Q_OBJECT +public: + IGraphicsPixmapItem(QObject *parent = 0, IController *controller = 0, IModel *model = 0); + + // IView interface +public: + void setNewModel(IModel *model) override; + +public Q_SLOTS: + virtual void getNotified() = 0; +}; + +#endif // IGRAPHICSPIXMAPITEM_H diff --git a/biotracker/Model/TrackedComponents/TrackedElement.cpp b/biotracker/Model/TrackedComponents/TrackedElement.cpp index 97c02ccc..1a60ca6c 100644 --- a/biotracker/Model/TrackedComponents/TrackedElement.cpp +++ b/biotracker/Model/TrackedComponents/TrackedElement.cpp @@ -21,21 +21,28 @@ QString TrackedElement::getName() void TrackedElement::setX(int val) { x = val; + Q_EMIT notifyView(); + } void TrackedElement::setY(int val) { y = val; + Q_EMIT notifyView(); + } void TrackedElement::pressed() { mPressed = true; + Q_EMIT notifyView(); + } void TrackedElement::notPressed() { mPressed = false; + Q_EMIT notifyView(); } int TrackedElement::getX() -- GitLab