Mercurial > hg > orthanc-stone
diff Applications/Qt/QCairoWidget.h @ 385:6cc3ce74dc05
using message broker in widgets
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Wed, 07 Nov 2018 20:49:41 +0100 |
parents | 87376a645ee1 |
children | b70e9be013e4 |
line wrap: on
line diff
--- a/Applications/Qt/QCairoWidget.h Wed Nov 07 16:17:02 2018 +0100 +++ b/Applications/Qt/QCairoWidget.h Wed Nov 07 20:49:41 2018 +0100 @@ -1,7 +1,7 @@ /** * Stone of Orthanc * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics - * Department, University Hospital of Liege, Belgium +4 * Department, University Hospital of Liege, Belgium * Copyright (C) 2017-2018 Osimis S.A., Belgium * * This program is free software: you can redistribute it and/or @@ -20,23 +20,39 @@ #pragma once -#include "../../Framework/Widgets/CairoWidget.h" #include "../../Applications/Generic/NativeStoneApplicationContext.h" #include "../../Framework/Viewport/CairoSurface.h" +#include "../../Framework/Widgets/IWidget.h" #include <QWidget> -#include <QGestureEvent> #include <memory> #include <cassert> -class QCairoWidget : public QWidget, public OrthancStone::IViewport::IObserver +class QCairoWidget : public QWidget { Q_OBJECT private: + class StoneObserver : public OrthancStone::IObserver + { + private: + QCairoWidget& that_; + + public: + StoneObserver(QCairoWidget& that, + OrthancStone::IViewport& viewport, + OrthancStone::MessageBroker& broker); + + void OnViewportChanged(const OrthancStone::IViewport::ViewportChangedMessage& message) + { + that_.OnViewportChanged(); + } + }; + std::auto_ptr<QImage> image_; OrthancStone::CairoSurface surface_; OrthancStone::NativeStoneApplicationContext* context_; + std::auto_ptr<StoneObserver> observer_; protected: virtual void paintEvent(QPaintEvent *event); @@ -56,18 +72,15 @@ public: explicit QCairoWidget(QWidget *parent); - virtual ~QCairoWidget(); - void SetContext(OrthancStone::NativeStoneApplicationContext& context); - virtual void OnViewportContentChanged(const OrthancStone::IViewport& /*sceneNotUsed*/) + void OnViewportChanged() { update(); // schedule a repaint (handled by Qt) emit ContentChanged(); } signals: - void ContentChanged(); public slots: