diff options
| author | Ben Boeckel <MathStuf@gmail.com> | 2009-03-01 20:44:32 -0500 |
|---|---|---|
| committer | Ben Boeckel <MathStuf@gmail.com> | 2009-03-01 20:44:32 -0500 |
| commit | 1430a9e2b52109f3f57cfa7a9bb2f68e0dda1365 (patch) | |
| tree | 4e577a25fadedb054e58921a1ced00941d488c90 /sigmodr/widgets/TrainerUI.cpp | |
| parent | 4ed55e72070115125732f5125d3da8efd09ffb2b (diff) | |
Made the rest of the widgets use pimpl
Diffstat (limited to 'sigmodr/widgets/TrainerUI.cpp')
| -rw-r--r-- | sigmodr/widgets/TrainerUI.cpp | 153 |
1 files changed, 80 insertions, 73 deletions
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 <sigmod/Game.h> @@ -29,35 +30,52 @@ #include <KIntNumInput> #include <KLineEdit> -// Qt includes -#include <QtCore/QFile> -#include <QtGui/QVBoxLayout> -#include <QtUiTools/QUiLoader> - 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<KLineEdit*>("varName"); - ui_moneyFactor = formWidget->findChild<KIntNumInput*>("varMoneyFactor"); - ui_skin = formWidget->findChild<KComboBox*>("varSkin"); - ui_depth = formWidget->findChild<KIntNumInput*>("varDepth"); - ui_teamIntel = formWidget->findChild<KComboBox*>("varTeamIntel"); - ui_moveIntel = formWidget->findChild<KComboBox*>("varMoveIntel"); - ui_itemIntel = formWidget->findChild<KComboBox*>("varItemIntel"); - ui_abilityIntel = formWidget->findChild<KComboBox*>("varAbilityIntel"); - ui_statIntel = formWidget->findChild<KComboBox*>("varStatIntel"); + ObjectUI(trainer, parent), + d(new Private(new Trainer(*trainer))) +{ + setWidget(d->makeWidgets(this)); +} + +void TrainerUI::apply() +{ + *qobject_cast<Trainer*>(m_object) = *d->m_trainer; + ObjectUI::apply(); +} + +void TrainerUI::discard() +{ + *d->m_trainer = *qobject_cast<Trainer*>(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<KLineEdit*>("varName"); + ui_moneyFactor = form->findChild<KIntNumInput*>("varMoneyFactor"); + ui_skin = form->findChild<KComboBox*>("varSkin"); + ui_depth = form->findChild<KIntNumInput*>("varDepth"); + ui_teamIntel = form->findChild<KComboBox*>("varTeamIntel"); + ui_moveIntel = form->findChild<KComboBox*>("varMoveIntel"); + ui_itemIntel = form->findChild<KComboBox*>("varItemIntel"); + ui_abilityIntel = form->findChild<KComboBox*>("varAbilityIntel"); + ui_statIntel = form->findChild<KComboBox*>("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<Trainer*>(modified())->name()); - ui_moneyFactor->setValue(qobject_cast<Trainer*>(modified())->moneyFactor()); - ui_skin->setCurrentIndex(game()->skinIndex(qobject_cast<Trainer*>(modified())->skin())); - ui_depth->setValue(qobject_cast<Trainer*>(modified())->depth()); - ui_teamIntel->setCurrentIndex(qobject_cast<Trainer*>(modified())->teamIntel()); - ui_moveIntel->setCurrentIndex(qobject_cast<Trainer*>(modified())->moveIntel()); - ui_itemIntel->setCurrentIndex(qobject_cast<Trainer*>(modified())->itemIntel()); - ui_abilityIntel->setCurrentIndex(qobject_cast<Trainer*>(modified())->abilityIntel()); - ui_statIntel->setCurrentIndex(qobject_cast<Trainer*>(modified())->statIntel()); -} - -void TrainerUI::apply() -{ - *qobject_cast<Trainer*>(original()) = *qobject_cast<Trainer*>(modified()); - emit(changed(false)); -} - -void TrainerUI::discard() +void TrainerUI::Private::resetGui() { - *qobject_cast<Trainer*>(modified()) = *qobject_cast<Trainer*>(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<Trainer*>(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<Trainer*>(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<Trainer*>(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<Trainer*>(modified())->setDepth(depth); + m_trainer->setDepth(depth); } -void TrainerUI::teamIntelChanged(const int teamIntel) +void TrainerUI::Private::teamIntelChanged(const int teamIntel) { - qobject_cast<Trainer*>(modified())->setTeamIntel(static_cast<Trainer::Intelligence>(teamIntel)); + m_trainer->setTeamIntel(static_cast<Trainer::Intelligence>(teamIntel)); } -void TrainerUI::moveIntelChanged(const int moveIntel) +void TrainerUI::Private::moveIntelChanged(const int moveIntel) { - qobject_cast<Trainer*>(modified())->setMoveIntel(static_cast<Trainer::Intelligence>(moveIntel)); + m_trainer->setMoveIntel(static_cast<Trainer::Intelligence>(moveIntel)); } -void TrainerUI::itemIntelChanged(const int itemIntel) +void TrainerUI::Private::itemIntelChanged(const int itemIntel) { - qobject_cast<Trainer*>(modified())->setItemIntel(static_cast<Trainer::Intelligence>(itemIntel)); + m_trainer->setItemIntel(static_cast<Trainer::Intelligence>(itemIntel)); } -void TrainerUI::abilityIntelChanged(const int abilityIntel) +void TrainerUI::Private::abilityIntelChanged(const int abilityIntel) { - qobject_cast<Trainer*>(modified())->setAbilityIntel(static_cast<Trainer::Intelligence>(abilityIntel)); + m_trainer->setAbilityIntel(static_cast<Trainer::Intelligence>(abilityIntel)); } -void TrainerUI::statIntelChanged(const int statIntel) +void TrainerUI::Private::statIntelChanged(const int statIntel) { - qobject_cast<Trainer*>(modified())->setStatIntel(static_cast<Trainer::Intelligence>(statIntel)); + m_trainer->setStatIntel(static_cast<Trainer::Intelligence>(statIntel)); } |
