summaryrefslogtreecommitdiffstats
path: root/sigmodr/widgets/MapTrainerUI.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/MapTrainerUI.cpp
parent4ed55e72070115125732f5125d3da8efd09ffb2b (diff)
Made the rest of the widgets use pimpl
Diffstat (limited to 'sigmodr/widgets/MapTrainerUI.cpp')
-rw-r--r--sigmodr/widgets/MapTrainerUI.cpp121
1 files changed, 62 insertions, 59 deletions
diff --git a/sigmodr/widgets/MapTrainerUI.cpp b/sigmodr/widgets/MapTrainerUI.cpp
index fcb46cb1..d5d11b26 100644
--- a/sigmodr/widgets/MapTrainerUI.cpp
+++ b/sigmodr/widgets/MapTrainerUI.cpp
@@ -17,6 +17,7 @@
// Header include
#include "MapTrainerUI.h"
+#include "MapTrainerUI_p.h"
// Sigmodr core widget includes
#include <sigmodr/corewidgets/ScriptWidget.h>
@@ -36,11 +37,8 @@
#include <KLineEdit>
// Qt includes
-#include <QtCore/QFile>
#include <QtGui/QListWidget>
#include <QtGui/QListWidgetItem>
-#include <QtGui/QVBoxLayout>
-#include <QtUiTools/QUiLoader>
using namespace Sigcore;
using namespace Sigmod;
@@ -48,49 +46,69 @@ using namespace Sigmodr::CoreWidgets;
using namespace Sigmodr::Widgets;
MapTrainerUI::MapTrainerUI(MapTrainer* trainer, QWidget* parent) :
- ObjectUI(parent)
+ ObjectUI(trainer, parent),
+ d(new Private(new MapTrainer(*trainer)))
{
- setObjects(trainer, new MapTrainer(*trainer));
+ setWidget(d->makeWidgets(this));
}
-void MapTrainerUI::initGui()
+void MapTrainerUI::apply()
+{
+ *qobject_cast<MapTrainer*>(m_object) = *d->m_trainer;
+ ObjectUI::apply();
+}
+
+void MapTrainerUI::discard()
+{
+ *d->m_trainer = *qobject_cast<MapTrainer*>(m_object);
+ d->resetGui();
+ ObjectUI::discard();
+}
+
+MapTrainerUI::Private::Private(MapTrainer* trainer) :
+ ObjectUIPrivate(trainer),
+ m_trainer(trainer)
+{
+}
+
+MapTrainerUI::Private::~Private()
{
- QFile file(":/gui/maptrainer.ui");
- file.open(QFile::ReadOnly);
- QWidget *formWidget = QUiLoader().load(&file, this);
- file.close();
- ui_name = formWidget->findChild<KLineEdit*>("varName");
- ui_trainerClass = formWidget->findChild<KComboBox*>("varTrainerClass");
- ui_numberFight = formWidget->findChild<KIntNumInput*>("varNumberFight");
- ui_script = formWidget->findChild<ScriptWidget*>("varScript");
- ui_leadTeamMembers = formWidget->findChild<KActionSelector*>("varLeadTeamMembers");
+ delete m_trainer;
+}
+
+QWidget* MapTrainerUI::Private::makeWidgets(ObjectUI* widget)
+{
+ QWidget *form = openUiFile(":/gui/maptrainer.ui", widget);
+ ui_name = form->findChild<KLineEdit*>("varName");
+ ui_trainerClass = form->findChild<KComboBox*>("varTrainerClass");
+ ui_numberFight = form->findChild<KIntNumInput*>("varNumberFight");
+ ui_script = form->findChild<ScriptWidget*>("varScript");
+ ui_leadTeamMembers = form->findChild<KActionSelector*>("varLeadTeamMembers");
connect(ui_name, SIGNAL(textChanged(QString)), this, SLOT(nameChanged(QString)));
connect(ui_trainerClass, SIGNAL(currentIndexChanged(int)), this, SLOT(trainerClassChanged(int)));
connect(ui_numberFight, SIGNAL(valueChanged(int)), this, SLOT(numberFightChanged(int)));
connect(ui_script, SIGNAL(valueChanged(Sigcore::Script)), this, SLOT(scriptChanged(Sigcore::Script)));
connect(ui_leadTeamMembers, SIGNAL(added(QListWidgetItem*)), this, SLOT(leadTeamMemberAdded(QListWidgetItem*)));
connect(ui_leadTeamMembers, SIGNAL(removed(QListWidgetItem*)), this, SLOT(leadTeamMemberRemoved(QListWidgetItem*)));
- QVBoxLayout* layout = new QVBoxLayout;
- layout->addWidget(formWidget);
- setLayout(layout);
+ return form;
}
-void MapTrainerUI::refreshGui()
+void MapTrainerUI::Private::refreshGui()
{
const bool blockedTrainerClass = ui_trainerClass->blockSignals(true);
ui_trainerClass->clear();
- for (int i = 0; i < game()->trainerCount(); ++i)
- ui_trainerClass->addItem(game()->trainer(i)->name());
+ for (int i = 0; i < m_trainer->game()->trainerCount(); ++i)
+ ui_trainerClass->addItem(m_trainer->game()->trainer(i)->name());
ui_trainerClass->blockSignals(blockedTrainerClass);
- ui_numberFight->setMaximum(game()->rules()->maxFight());
+ ui_numberFight->setMaximum(m_trainer->game()->rules()->maxFight());
const bool blockedLeadTeamMember = ui_leadTeamMembers->blockSignals(true);
ui_leadTeamMembers->availableListWidget()->clear();
ui_leadTeamMembers->selectedListWidget()->clear();
- for (int i = 0; i < qobject_cast<MapTrainer*>(original())->teamMemberCount(); ++i)
+ for (int i = 0; i < m_trainer->teamMemberCount(); ++i)
{
QString speciesName;
- const MapTrainerTeamMember* teamMember = qobject_cast<MapTrainer*>(original())->teamMember(i);
- const Species* species = game()->species(teamMember->species());
+ const MapTrainerTeamMember* teamMember = m_trainer->teamMember(i);
+ const Species* species = m_trainer->game()->species(teamMember->species());
speciesName = species ? species->name() : "(Invalid)";
QListWidgetItem* widgetItem = new QListWidgetItem(QString("%1 level %2 (%3)").arg(speciesName, teamMember->level(), i), ui_leadTeamMembers->availableListWidget());
widgetItem->setData(Qt::UserRole, teamMember->id());
@@ -99,71 +117,56 @@ void MapTrainerUI::refreshGui()
ui_leadTeamMembers->setButtonsEnabled();
}
-void MapTrainerUI::setGui()
+void MapTrainerUI::Private::resetGui()
{
- ui_name->setText(qobject_cast<MapTrainer*>(modified())->name());
- ui_trainerClass->setCurrentIndex(game()->trainerIndex(qobject_cast<MapTrainer*>(modified())->trainerClass()));
- ui_numberFight->setValue(qobject_cast<MapTrainer*>(modified())->numberFight());
- ui_script->setValue(qobject_cast<MapTrainer*>(modified())->script());
+ ui_name->setText(m_trainer->name());
+ ui_trainerClass->setCurrentIndex(m_trainer->game()->trainerIndex(m_trainer->trainerClass()));
+ ui_numberFight->setValue(m_trainer->numberFight());
+ ui_script->setValue(m_trainer->script());
for (int i = 0; i < ui_leadTeamMembers->availableListWidget()->count(); ++i)
{
QListWidgetItem* widgetItem = ui_leadTeamMembers->availableListWidget()->item(i);
- if (qobject_cast<MapTrainer*>(modified())->leadTeamMember(widgetItem->data(Qt::UserRole).toInt()))
+ if (m_trainer->leadTeamMember(widgetItem->data(Qt::UserRole).toInt()))
ui_leadTeamMembers->selectedListWidget()->addItem(ui_leadTeamMembers->availableListWidget()->takeItem(i--));
}
for (int i = 0; i < ui_leadTeamMembers->selectedListWidget()->count(); ++i)
{
QListWidgetItem* widgetItem = ui_leadTeamMembers->selectedListWidget()->item(i);
- if (!qobject_cast<MapTrainer*>(modified())->leadTeamMember(widgetItem->data(Qt::UserRole).toInt()))
+ if (!m_trainer->leadTeamMember(widgetItem->data(Qt::UserRole).toInt()))
ui_leadTeamMembers->availableListWidget()->addItem(ui_leadTeamMembers->selectedListWidget()->takeItem(i--));
}
ui_leadTeamMembers->setButtonsEnabled();
}
-void MapTrainerUI::apply()
-{
- *qobject_cast<MapTrainer*>(original()) = *qobject_cast<MapTrainer*>(modified());
- emit(changed(false));
-}
-
-void MapTrainerUI::discard()
-{
- *qobject_cast<MapTrainer*>(modified()) = *qobject_cast<MapTrainer*>(original());
- setGui();
- emit(changed(false));
-}
-
-void MapTrainerUI::nameChanged(const QString& name)
+void MapTrainerUI::Private::nameChanged(const QString& name)
{
const int cursor = ui_name->cursorPosition();
- qobject_cast<MapTrainer*>(modified())->setName(name);
+ m_trainer->setName(name);
ui_name->setCursorPosition(cursor);
}
-void MapTrainerUI::trainerClassChanged(const int trainerClass)
+void MapTrainerUI::Private::trainerClassChanged(const int trainerClass)
{
if (0 <= trainerClass)
- qobject_cast<MapTrainer*>(modified())->setTrainerClass(game()->trainer(trainerClass)->id());
+ m_trainer->setTrainerClass(m_trainer->game()->trainer(trainerClass)->id());
}
-void MapTrainerUI::numberFightChanged(const int numberFight)
+void MapTrainerUI::Private::numberFightChanged(const int numberFight)
{
- qobject_cast<MapTrainer*>(modified())->setNumberFight(numberFight);
+ m_trainer->setNumberFight(numberFight);
}
-void MapTrainerUI::scriptChanged(const Script& script)
+void MapTrainerUI::Private::scriptChanged(const Script& script)
{
- qobject_cast<MapTrainer*>(modified())->setScript(script);
+ m_trainer->setScript(script);
}
-void MapTrainerUI::leadTeamMemberAdded(QListWidgetItem* item)
+void MapTrainerUI::Private::leadTeamMemberAdded(QListWidgetItem* item)
{
- qobject_cast<MapTrainer*>(modified())->setLeadTeamMember(item->data(Qt::UserRole).toInt(), true);
- setGui();
+ m_trainer->setLeadTeamMember(item->data(Qt::UserRole).toInt(), true);
}
-void MapTrainerUI::leadTeamMemberRemoved(QListWidgetItem* item)
+void MapTrainerUI::Private::leadTeamMemberRemoved(QListWidgetItem* item)
{
- qobject_cast<MapTrainer*>(modified())->setLeadTeamMember(item->data(Qt::UserRole).toInt(), false);
- setGui();
+ m_trainer->setLeadTeamMember(item->data(Qt::UserRole).toInt(), false);
}