#include "models/dialogues/qw_widgetdialogue.h" #include "qw_widgetdialoguemanager.h" #include "qw_globalmetadata.h" #include #include #include QWWidgetDialogueManager::QWWidgetDialogueManager(QWScene *scene) : QWAbstractDialogueManager(scene) {} QWWidgetDialogueManager::~QWWidgetDialogueManager() {} void QWWidgetDialogueManager::activateDialogue(const std::shared_ptr &dialogue) { widget_dialogue = std::dynamic_pointer_cast(dialogue); connect(ptr_scene, SIGNAL(signalClickDialogue(MouseButton)), this, SLOT(onClicked(MouseButton))); emit onEntryDialogueTransition(); quick_view = new QQuickWidget; // Moving dialogue model into qml widget to handle the properties from inside quick_view->engine()->rootContext()->setContextProperty("dialogue", widget_dialogue.get()); quick_view->setSource(QUrl::fromLocalFile(widget_dialogue->qmlPath())); QObject::connect(quick_view, SIGNAL(destroyed()), this, SLOT(onDestroyingWidget())); } void QWWidgetDialogueManager::onClicked(MouseButton mouse_button) { if (mouse_button == MouseButton::RIGHT) quick_view->close(); } void QWWidgetDialogueManager::onDestroyingWidget() { // Testing qDebug() << "Exit code:" << widget_dialogue->exitCode(); disconnect(ptr_scene, SIGNAL(signalClickDialogue(MouseButton)), this, SLOT(onClicked(MouseButton))); if (widget_dialogue->isCustomStringToSave()) QWGlobalMetadata::setValue(widget_dialogue->tag(), widget_dialogue->customString()); widget_dialogue->onExit(widget_dialogue->exitCode()); emit onLeaveDialogueTransition(); }