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/TrainerUI.cpp | 153 ++++++++++++++++++++++-------------------- 1 file changed, 80 insertions(+), 73 deletions(-) (limited to 'sigmodr/widgets/TrainerUI.cpp') diff --git a/sigmodr/widgets/TrainerUI.cpp b/sigmodr/widgets/TrainerUI.cpp index be7822bf..e8bf49ef 100644 --- a/sigmodr/widgets/TrainerUI.cpp +++ b/sigmodr/widgets/TrainerUI.cpp @@ -17,6 +17,7 @@ // Header include #include "TrainerUI.h" +#include "TrainerUI_p.h" // Sigmod includes #include @@ -29,35 +30,52 @@ #include #include -// Qt includes -#include -#include -#include - using namespace Sigmod; using namespace Sigmodr::Widgets; TrainerUI::TrainerUI(Trainer* trainer, QWidget* parent) : - ObjectUI(parent) -{ - setObjects(trainer, new Trainer(*trainer)); -} - -void TrainerUI::initGui() -{ - QFile file(":/gui/trainer.ui"); - file.open(QFile::ReadOnly); - QWidget *formWidget = QUiLoader().load(&file, this); - file.close(); - ui_name = formWidget->findChild("varName"); - ui_moneyFactor = formWidget->findChild("varMoneyFactor"); - ui_skin = formWidget->findChild("varSkin"); - ui_depth = formWidget->findChild("varDepth"); - ui_teamIntel = formWidget->findChild("varTeamIntel"); - ui_moveIntel = formWidget->findChild("varMoveIntel"); - ui_itemIntel = formWidget->findChild("varItemIntel"); - ui_abilityIntel = formWidget->findChild("varAbilityIntel"); - ui_statIntel = formWidget->findChild("varStatIntel"); + ObjectUI(trainer, parent), + d(new Private(new Trainer(*trainer))) +{ + setWidget(d->makeWidgets(this)); +} + +void TrainerUI::apply() +{ + *qobject_cast(m_object) = *d->m_trainer; + ObjectUI::apply(); +} + +void TrainerUI::discard() +{ + *d->m_trainer = *qobject_cast(m_object); + d->resetGui(); + ObjectUI::discard(); +} + +TrainerUI::Private::Private(Trainer* trainer) : + ObjectUIPrivate(trainer), + m_trainer(trainer) +{ +} + +TrainerUI::Private::~Private() +{ + delete m_trainer; +} + +QWidget* TrainerUI::Private::makeWidgets(ObjectUI* widget) +{ + QWidget *form = openUiFile(":/gui/trainer.ui", widget); + ui_name = form->findChild("varName"); + ui_moneyFactor = form->findChild("varMoneyFactor"); + ui_skin = form->findChild("varSkin"); + ui_depth = form->findChild("varDepth"); + ui_teamIntel = form->findChild("varTeamIntel"); + ui_moveIntel = form->findChild("varMoveIntel"); + ui_itemIntel = form->findChild("varItemIntel"); + ui_abilityIntel = form->findChild("varAbilityIntel"); + ui_statIntel = form->findChild("varStatIntel"); connect(ui_name, SIGNAL(textChanged(QString)), this, SLOT(nameChanged(QString))); connect(ui_moneyFactor, SIGNAL(valueChanged(int)), this, SLOT(moneyFactorChanged(int))); connect(ui_skin, SIGNAL(currentIndexChanged(int)), this, SLOT(skinChanged(int))); @@ -72,88 +90,77 @@ void TrainerUI::initGui() ui_itemIntel->addItems(Trainer::IntelligenceStr); ui_abilityIntel->addItems(Trainer::IntelligenceStr); ui_statIntel->addItems(Trainer::IntelligenceStr); - QVBoxLayout* layout = new QVBoxLayout; - layout->addWidget(formWidget); - setLayout(layout); + return form; } -void TrainerUI::refreshGui() +void TrainerUI::Private::refreshGui() { - for (int i = 0; i < game()->skinCount(); ++i) - ui_skin->addItem(game()->skin(i)->name()); - ui_itemIntel->setEnabled(game()->rules()->maxHeldItems()); - ui_abilityIntel->setEnabled(game()->rules()->maxAbilities()); + const bool blocked = ui_skin->blockSignals(true); + ui_skin->clear(); + for (int i = 0; i < m_trainer->game()->skinCount(); ++i) + ui_skin->addItem(m_trainer->game()->skin(i)->name()); + ui_skin->blockSignals(blocked); + ui_itemIntel->setEnabled(m_trainer->game()->rules()->maxHeldItems()); + ui_abilityIntel->setEnabled(m_trainer->game()->rules()->maxAbilities()); } -void TrainerUI::setGui() -{ - ui_name->setText(qobject_cast(modified())->name()); - ui_moneyFactor->setValue(qobject_cast(modified())->moneyFactor()); - ui_skin->setCurrentIndex(game()->skinIndex(qobject_cast(modified())->skin())); - ui_depth->setValue(qobject_cast(modified())->depth()); - ui_teamIntel->setCurrentIndex(qobject_cast(modified())->teamIntel()); - ui_moveIntel->setCurrentIndex(qobject_cast(modified())->moveIntel()); - ui_itemIntel->setCurrentIndex(qobject_cast(modified())->itemIntel()); - ui_abilityIntel->setCurrentIndex(qobject_cast(modified())->abilityIntel()); - ui_statIntel->setCurrentIndex(qobject_cast(modified())->statIntel()); -} - -void TrainerUI::apply() -{ - *qobject_cast(original()) = *qobject_cast(modified()); - emit(changed(false)); -} - -void TrainerUI::discard() +void TrainerUI::Private::resetGui() { - *qobject_cast(modified()) = *qobject_cast(original()); - emit(changed(false)); + ui_name->setText(m_trainer->name()); + ui_moneyFactor->setValue(m_trainer->moneyFactor()); + ui_skin->setCurrentIndex(m_trainer->game()->skinIndex(m_trainer->skin())); + ui_depth->setValue(m_trainer->depth()); + ui_teamIntel->setCurrentIndex(m_trainer->teamIntel()); + ui_moveIntel->setCurrentIndex(m_trainer->moveIntel()); + ui_itemIntel->setCurrentIndex(m_trainer->itemIntel()); + ui_abilityIntel->setCurrentIndex(m_trainer->abilityIntel()); + ui_statIntel->setCurrentIndex(m_trainer->statIntel()); } -void TrainerUI::nameChanged(const QString& name) +void TrainerUI::Private::nameChanged(const QString& name) { const int cursor = ui_name->cursorPosition(); - qobject_cast(modified())->setName(name); + m_trainer->setName(name); ui_name->setCursorPosition(cursor); } -void TrainerUI::moneyFactorChanged(const int moneyFactor) +void TrainerUI::Private::moneyFactorChanged(const int moneyFactor) { - qobject_cast(modified())->setMoneyFactor(moneyFactor); + m_trainer->setMoneyFactor(moneyFactor); } -void TrainerUI::skinChanged(const int skin) +void TrainerUI::Private::skinChanged(const int skin) { if (0 <= skin) - qobject_cast(modified())->setSkin(game()->skin(skin)->id()); + m_trainer->setSkin(m_trainer->game()->skin(skin)->id()); } -void TrainerUI::depthChanged(const int depth) +void TrainerUI::Private::depthChanged(const int depth) { - qobject_cast(modified())->setDepth(depth); + m_trainer->setDepth(depth); } -void TrainerUI::teamIntelChanged(const int teamIntel) +void TrainerUI::Private::teamIntelChanged(const int teamIntel) { - qobject_cast(modified())->setTeamIntel(static_cast(teamIntel)); + m_trainer->setTeamIntel(static_cast(teamIntel)); } -void TrainerUI::moveIntelChanged(const int moveIntel) +void TrainerUI::Private::moveIntelChanged(const int moveIntel) { - qobject_cast(modified())->setMoveIntel(static_cast(moveIntel)); + m_trainer->setMoveIntel(static_cast(moveIntel)); } -void TrainerUI::itemIntelChanged(const int itemIntel) +void TrainerUI::Private::itemIntelChanged(const int itemIntel) { - qobject_cast(modified())->setItemIntel(static_cast(itemIntel)); + m_trainer->setItemIntel(static_cast(itemIntel)); } -void TrainerUI::abilityIntelChanged(const int abilityIntel) +void TrainerUI::Private::abilityIntelChanged(const int abilityIntel) { - qobject_cast(modified())->setAbilityIntel(static_cast(abilityIntel)); + m_trainer->setAbilityIntel(static_cast(abilityIntel)); } -void TrainerUI::statIntelChanged(const int statIntel) +void TrainerUI::Private::statIntelChanged(const int statIntel) { - qobject_cast(modified())->setStatIntel(static_cast(statIntel)); + m_trainer->setStatIntel(static_cast(statIntel)); } -- cgit