You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
quest-wizard/features/qw_widgetdialoguemanager.cpp

51 lines
1.6 KiB
C++

#include "models/dialogues/qw_widgetdialogue.h"
#include "qw_widgetdialoguemanager.h"
#include "qw_globalmetadata.h"
#include <QQuickWidget>
#include <QQmlEngine>
#include <QQmlContext>
QWWidgetDialogueManager::QWWidgetDialogueManager(QWScene *scene) :
QWAbstractDialogueManager(scene)
{}
QWWidgetDialogueManager::~QWWidgetDialogueManager()
{}
void QWWidgetDialogueManager::activateDialogue(const std::shared_ptr<QWAbstractGameDialogue> &dialogue)
{
widget_dialogue = std::dynamic_pointer_cast<QWWidgetDialogue>(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();
}