summaryrefslogtreecommitdiffstats
path: root/sigmodr/widgets/TrainerUI.cpp
diff options
context:
space:
mode:
authorBen Boeckel <MathStuf@gmail.com>2009-03-01 20:44:32 -0500
committerBen Boeckel <MathStuf@gmail.com>2009-03-01 20:44:32 -0500
commit1430a9e2b52109f3f57cfa7a9bb2f68e0dda1365 (patch)
tree4e577a25fadedb054e58921a1ced00941d488c90 /sigmodr/widgets/TrainerUI.cpp
parent4ed55e72070115125732f5125d3da8efd09ffb2b (diff)
Made the rest of the widgets use pimpl
Diffstat (limited to 'sigmodr/widgets/TrainerUI.cpp')
-rw-r--r--sigmodr/widgets/TrainerUI.cpp153
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));
}