summaryrefslogtreecommitdiffstats
path: root/sigmodr/widgets/AbilityUI.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'sigmodr/widgets/AbilityUI.cpp')
-rw-r--r--sigmodr/widgets/AbilityUI.cpp106
1 files changed, 56 insertions, 50 deletions
diff --git a/sigmodr/widgets/AbilityUI.cpp b/sigmodr/widgets/AbilityUI.cpp
index 312c6b5a..ea010e41 100644
--- a/sigmodr/widgets/AbilityUI.cpp
+++ b/sigmodr/widgets/AbilityUI.cpp
@@ -17,6 +17,7 @@
// Header include
#include "AbilityUI.h"
+#include "AbilityUI_p.h"
// Sigmodr core widget includes
#include <sigmodr/corewidgets/ScriptWidget.h>
@@ -29,9 +30,7 @@
#include <KLineEdit>
// Qt includes
-#include <QtCore/QFile>
#include <QtGui/QVBoxLayout>
-#include <QtUiTools/QUiLoader>
using namespace Sigcore;
using namespace Sigmod;
@@ -39,87 +38,94 @@ using namespace Sigmodr::CoreWidgets;
using namespace Sigmodr::Widgets;
AbilityUI::AbilityUI(Ability* ability, QWidget* parent) :
- ObjectUI(parent)
+ ObjectUI(ability, parent),
+ d(new Private(new Ability(*ability)))
{
- setObjects(ability, new Ability(*ability));
+ setWidget(d->makeWidgets(this));
}
-void AbilityUI::initGui()
+void AbilityUI::apply()
{
- QFile file(":/gui/ability.ui");
- file.open(QFile::ReadOnly);
- QWidget *formWidget = QUiLoader().load(&file, this);
- file.close();
- ui_name = formWidget->findChild<KLineEdit*>("varName");
- ui_priority = formWidget->findChild<KIntNumInput*>("varPriority");
- ui_description = formWidget->findChild<KLineEdit*>("varDescription");
- ui_battleScript = formWidget->findChild<ScriptWidget*>("varBattleScript");
- ui_worldScript = formWidget->findChild<ScriptWidget*>("varWorldScript");
- ui_priorityScript = formWidget->findChild<ScriptWidget*>("varPriorityScript");
- connect(ui_name, SIGNAL(textChanged(QString)), this, SLOT(nameChanged(QString)));
- connect(ui_priority, SIGNAL(valueChanged(int)), this, SLOT(priorityChanged(int)));
- connect(ui_description, SIGNAL(textChanged(QString)), this, SLOT(descriptionChanged(QString)));
- connect(ui_battleScript, SIGNAL(valueChanged(Sigcore::Script)), this, SLOT(battleScriptChanged(Sigcore::Script)));
- connect(ui_worldScript, SIGNAL(valueChanged(Sigcore::Script)), this, SLOT(worldScriptChanged(Sigcore::Script)));
- connect(ui_priorityScript, SIGNAL(valueChanged(Sigcore::Script)), this, SLOT(priorityScriptChanged(Sigcore::Script)));
- QVBoxLayout* layout = new QVBoxLayout;
- layout->addWidget(formWidget);
- setLayout(layout);
+ *qobject_cast<Ability*>(m_object) = *d->m_ability;
+ ObjectUI::apply();
}
-void AbilityUI::setGui()
+void AbilityUI::discard()
{
- ui_name->setText(qobject_cast<Ability*>(modified())->name());
- ui_priority->setValue(qobject_cast<Ability*>(modified())->priority());
- ui_description->setText(qobject_cast<Ability*>(modified())->description());
- ui_battleScript->setValue(qobject_cast<Ability*>(modified())->battleScript());
- ui_worldScript->setValue(qobject_cast<Ability*>(modified())->worldScript());
- ui_priorityScript->setValue(qobject_cast<Ability*>(modified())->priorityScript());
+ *d->m_ability = *qobject_cast<Ability*>(m_object);
+ d->resetGui();
+ ObjectUI::discard();
}
-void AbilityUI::apply()
+AbilityUI::Private::Private(Ability* ability) :
+ ObjectUIPrivate(ability),
+ m_ability(ability)
{
- *qobject_cast<Ability*>(original()) = *qobject_cast<Ability*>(modified());
- emit(changed(false));
}
-void AbilityUI::discard()
+AbilityUI::Private::~Private()
+{
+ delete m_ability;
+}
+
+QWidget* AbilityUI::Private::makeWidgets(ObjectUI* widget)
+{
+ QWidget *form = openUiFile(":/gui/ability.ui", widget);
+ ui_name = form->findChild<KLineEdit*>("varName");
+ ui_priority = form->findChild<KIntNumInput*>("varPriority");
+ ui_description = form->findChild<KLineEdit*>("varDescription");
+ ui_battleScript = form->findChild<ScriptWidget*>("varBattleScript");
+ ui_worldScript = form->findChild<ScriptWidget*>("varWorldScript");
+ ui_priorityScript = form->findChild<ScriptWidget*>("varPriorityScript");
+ connect(ui_name, SIGNAL(textChanged(QString)), this, SLOT(nameChanged(QString)));
+ connect(ui_priority, SIGNAL(valueChanged(int)), this, SLOT(priorityChanged(int)));
+ connect(ui_description, SIGNAL(textChanged(QString)), this, SLOT(descriptionChanged(QString)));
+ connect(ui_battleScript, SIGNAL(valueChanged(Sigcore::Script)), this, SLOT(battleScriptChanged(Sigcore::Script)));
+ connect(ui_worldScript, SIGNAL(valueChanged(Sigcore::Script)), this, SLOT(worldScriptChanged(Sigcore::Script)));
+ connect(ui_priorityScript, SIGNAL(valueChanged(Sigcore::Script)), this, SLOT(priorityScriptChanged(Sigcore::Script)));
+ return form;
+}
+
+void AbilityUI::Private::resetGui()
{
- *qobject_cast<Ability*>(modified()) = *qobject_cast<Ability*>(original());
- setGui();
- emit(changed(false));
+ ui_name->setText(m_ability->name());
+ ui_priority->setValue(m_ability->priority());
+ ui_description->setText(m_ability->description());
+ ui_battleScript->setValue(m_ability->battleScript());
+ ui_worldScript->setValue(m_ability->worldScript());
+ ui_priorityScript->setValue(m_ability->priorityScript());
}
-void AbilityUI::nameChanged(const QString& name)
+void AbilityUI::Private::nameChanged(const QString& name)
{
const int cursor = ui_name->cursorPosition();
- qobject_cast<Ability*>(modified())->setName(name);
+ m_ability->setName(name);
ui_name->setCursorPosition(cursor);
}
-void AbilityUI::priorityChanged(const int priority)
+void AbilityUI::Private::priorityChanged(const int priority)
{
- qobject_cast<Ability*>(modified())->setPriority(priority);
+ m_ability->setPriority(priority);
}
-void AbilityUI::descriptionChanged(const QString& description)
+void AbilityUI::Private::descriptionChanged(const QString& description)
{
const int cursor = ui_description->cursorPosition();
- qobject_cast<Ability*>(modified())->setDescription(description);
+ m_ability->setDescription(description);
ui_description->setCursorPosition(cursor);
}
-void AbilityUI::battleScriptChanged(const Script& battleScript)
+void AbilityUI::Private::battleScriptChanged(const Script& battleScript)
{
- qobject_cast<Ability*>(modified())->setBattleScript(battleScript);
+ m_ability->setBattleScript(battleScript);
}
-void AbilityUI::worldScriptChanged(const Script& worldScript)
+void AbilityUI::Private::worldScriptChanged(const Script& worldScript)
{
- qobject_cast<Ability*>(modified())->setWorldScript(worldScript);
+ m_ability->setWorldScript(worldScript);
}
-void AbilityUI::priorityScriptChanged(const Script& priorityScript)
+void AbilityUI::Private::priorityScriptChanged(const Script& priorityScript)
{
- qobject_cast<Ability*>(modified())->setPriorityScript(priorityScript);
+ m_ability->setPriorityScript(priorityScript);
}