From 1430a9e2b52109f3f57cfa7a9bb2f68e0dda1365 Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Sun, 1 Mar 2009 20:44:32 -0500 Subject: Made the rest of the widgets use pimpl --- sigmodr/widgets/MapEffectUI.cpp | 96 ++++++++++++++++++++++------------------- 1 file changed, 52 insertions(+), 44 deletions(-) (limited to 'sigmodr/widgets/MapEffectUI.cpp') diff --git a/sigmodr/widgets/MapEffectUI.cpp b/sigmodr/widgets/MapEffectUI.cpp index 075bc96f..f2565a7e 100644 --- a/sigmodr/widgets/MapEffectUI.cpp +++ b/sigmodr/widgets/MapEffectUI.cpp @@ -17,6 +17,7 @@ // Header include #include "MapEffectUI.h" +#include "MapEffectUI_p.h" // Sigmodr core widget includes #include @@ -32,10 +33,7 @@ #include // Qt includes -#include #include -#include -#include using namespace Sigcore; using namespace Sigmod; @@ -43,76 +41,86 @@ using namespace Sigmodr::CoreWidgets; using namespace Sigmodr::Widgets; MapEffectUI::MapEffectUI(MapEffect* effect, QWidget* parent) : - ObjectUI(parent) + ObjectUI(effect, parent), + d(new Private(new MapEffect(*effect))) { - setObjects(effect, new MapEffect(*effect)); + setWidget(d->makeWidgets(this)); } -void Sigmodr::Widgets::MapEffectUI::initGui() +void MapEffectUI::apply() { - QFile file(":/gui/mapeffect.ui"); - file.open(QFile::ReadOnly); - QWidget *formWidget = QUiLoader().load(&file, this); - file.close(); - ui_name = formWidget->findChild("varName"); - ui_skin = formWidget->findChild("varSkin"); - ui_script = formWidget->findChild("varScript"); - ui_isGhost = formWidget->findChild("varIsGhost"); - connect(ui_name, SIGNAL(textChanged(QString)), this, SLOT(nameChanged(QString))); - connect(ui_skin, SIGNAL(currentIndexChanged(int)), this, SLOT(skinChanged(int))); - connect(ui_script, SIGNAL(valueChanged(Sigcore::Script)), this, SLOT(scriptChanged(Sigcore::Script))); - connect(ui_isGhost, SIGNAL(toggled(bool)), this, SLOT(isGhostChanged(bool))); - QVBoxLayout* layout = new QVBoxLayout; - layout->addWidget(formWidget); - setLayout(layout); + *qobject_cast(m_object) = *d->m_effect; + ObjectUI::apply(); } -void MapEffectUI::refreshGui() +void MapEffectUI::discard() { - for (int i = 0; i < game()->skinCount(); ++i) - ui_skin->addItem(game()->skin(i)->name()); + *d->m_effect = *qobject_cast(m_object); + d->resetGui(); + ObjectUI::discard(); } -void MapEffectUI::setGui() +MapEffectUI::Private::Private(MapEffect* effect) : + ObjectUIPrivate(effect), + m_effect(effect) { - ui_name->setText(qobject_cast(modified())->name()); - ui_skin->setCurrentIndex(game()->skinIndex(qobject_cast(modified())->skin())); - ui_script->setValue(qobject_cast(modified())->script()); - ui_isGhost->setCheckState(qobject_cast(modified())->isGhost() ? Qt::Checked : Qt::Unchecked); } -void MapEffectUI::apply() +MapEffectUI::Private::~Private() { - *qobject_cast(original()) = *qobject_cast(modified()); - emit(changed(false)); + delete m_effect; } -void MapEffectUI::discard() +QWidget* MapEffectUI::Private::makeWidgets(ObjectUI* widget) +{ + QWidget *form = openUiFile(":/gui/mapeffect.ui", widget); + ui_name = form->findChild("varName"); + ui_skin = form->findChild("varSkin"); + ui_script = form->findChild("varScript"); + ui_isGhost = form->findChild("varIsGhost"); + connect(ui_name, SIGNAL(textChanged(QString)), this, SLOT(nameChanged(QString))); + connect(ui_skin, SIGNAL(currentIndexChanged(int)), this, SLOT(skinChanged(int))); + connect(ui_script, SIGNAL(valueChanged(Sigcore::Script)), this, SLOT(scriptChanged(Sigcore::Script))); + connect(ui_isGhost, SIGNAL(toggled(bool)), this, SLOT(isGhostChanged(bool))); + return form; +} + +void MapEffectUI::Private::refreshGui() +{ + const bool blocked = ui_skin->blockSignals(true); + ui_skin->clear(); + for (int i = 0; i < m_effect->game()->skinCount(); ++i) + ui_skin->addItem(m_effect->game()->skin(i)->name()); + ui_skin->blockSignals(blocked); +} + +void MapEffectUI::Private::resetGui() { - *qobject_cast(modified()) = *qobject_cast(original()); - setGui(); - emit(changed(false)); + ui_name->setText(m_effect->name()); + ui_skin->setCurrentIndex(m_effect->game()->skinIndex(m_effect->skin())); + ui_script->setValue(m_effect->script()); + ui_isGhost->setCheckState(m_effect->isGhost() ? Qt::Checked : Qt::Unchecked); } -void MapEffectUI::nameChanged(const QString& name) +void MapEffectUI::Private::nameChanged(const QString& name) { const int cursor = ui_name->cursorPosition(); - qobject_cast(modified())->setName(name); + m_effect->setName(name); ui_name->setCursorPosition(cursor); } -void MapEffectUI::skinChanged(const int skin) +void MapEffectUI::Private::skinChanged(const int skin) { if (0 <= skin) - qobject_cast(modified())->setSkin(game()->skin(skin)->id()); + m_effect->setSkin(m_effect->game()->skin(skin)->id()); } -void MapEffectUI::scriptChanged(const Script& script) +void MapEffectUI::Private::scriptChanged(const Script& script) { - qobject_cast(modified())->setScript(script); + m_effect->setScript(script); } -void MapEffectUI::isGhostChanged(const bool isGhost) +void MapEffectUI::Private::isGhostChanged(const bool isGhost) { - qobject_cast(modified())->setIsGhost(isGhost); + m_effect->setIsGhost(isGhost); } -- cgit