summaryrefslogtreecommitdiffstats
path: root/sigmodr/widgets/MapTrainerTeamMemberUI.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'sigmodr/widgets/MapTrainerTeamMemberUI.cpp')
-rw-r--r--sigmodr/widgets/MapTrainerTeamMemberUI.cpp194
1 files changed, 94 insertions, 100 deletions
diff --git a/sigmodr/widgets/MapTrainerTeamMemberUI.cpp b/sigmodr/widgets/MapTrainerTeamMemberUI.cpp
index 3148bc61..9b15bd78 100644
--- a/sigmodr/widgets/MapTrainerTeamMemberUI.cpp
+++ b/sigmodr/widgets/MapTrainerTeamMemberUI.cpp
@@ -17,6 +17,7 @@
// Header include
#include "MapTrainerTeamMemberUI.h"
+#include "MapTrainerTeamMemberUI_p.h"
// Sigmod includes
#include <sigmod/Ability.h>
@@ -35,39 +36,58 @@
#include <KLineEdit>
// Qt includes
-#include <QtCore/QFile>
#include <QtGui/QGroupBox>
#include <QtGui/QListWidgetItem>
-#include <QtGui/QVBoxLayout>
-#include <QtUiTools/QUiLoader>
using namespace Sigmod;
using namespace Sigmodr::Widgets;
MapTrainerTeamMemberUI::MapTrainerTeamMemberUI(MapTrainerTeamMember* teamMember, QWidget* parent) :
- ObjectUI(parent)
+ ObjectUI(teamMember, parent),
+ d(new Private(new MapTrainerTeamMember(*teamMember)))
{
- setObjects(teamMember, new MapTrainerTeamMember(*teamMember));
+ setWidget(d->makeWidgets(this));
}
-void MapTrainerTeamMemberUI::initGui()
+void MapTrainerTeamMemberUI::apply()
+{
+ *qobject_cast<MapTrainerTeamMember*>(m_object) = *d->m_teamMember;
+ ObjectUI::apply();
+}
+
+void MapTrainerTeamMemberUI::discard()
+{
+ *d->m_teamMember = *qobject_cast<MapTrainerTeamMember*>(m_object);
+ d->resetGui();
+ ObjectUI::discard();
+}
+
+MapTrainerTeamMemberUI::Private::Private(MapTrainerTeamMember* teamMember) :
+ ObjectUIPrivate(teamMember),
+ m_teamMember(teamMember)
+{
+}
+
+MapTrainerTeamMemberUI::Private::~Private()
{
- QFile file(":/gui/maptrainerteammember.ui");
- file.open(QFile::ReadOnly);
- QWidget *formWidget = QUiLoader().load(&file, this);
- file.close();
- ui_species = formWidget->findChild<KComboBox*>("varSpecies");
- ui_level = formWidget->findChild<KIntNumInput*>("varLevel");
- ui_abilities = formWidget->findChild<KActionSelector*>("varAbilities");
- ui_boxItems = formWidget->findChild<QGroupBox*>("boxItems");
- ui_items = formWidget->findChild<KActionSelector*>("varItems");
- ui_itemCount = formWidget->findChild<KIntNumInput*>("varItemCount");
- ui_moves = formWidget->findChild<KActionSelector*>("varMoves");
- ui_natures = formWidget->findChild<KActionSelector*>("varNatures");
+ delete m_teamMember;
+}
+
+QWidget* MapTrainerTeamMemberUI::Private::makeWidgets(ObjectUI* widget)
+{
+ QWidget *form = openUiFile(":/gui/maptrainerteammember.ui", widget);
+ ui_species = form->findChild<KComboBox*>("varSpecies");
+ ui_level = form->findChild<KIntNumInput*>("varLevel");
+ ui_abilities = form->findChild<KActionSelector*>("varAbilities");
+ ui_boxItems = form->findChild<QGroupBox*>("boxItems");
+ ui_items = form->findChild<KActionSelector*>("varItems");
+ ui_itemCount = form->findChild<KIntNumInput*>("varItemCount");
+ ui_moves = form->findChild<KActionSelector*>("varMoves");
+ ui_natures = form->findChild<KActionSelector*>("varNatures");
connect(ui_species, SIGNAL(currentIndexChanged(int)), this, SLOT(speciesChanged(int)));
connect(ui_level, SIGNAL(valueChanged(int)), this, SLOT(levelChanged(int)));
- connect(ui_abilities, SIGNAL(added(QListWidgetItem*)), this, SLOT(abilityAdded(QListWidgetItem*)));
- connect(ui_abilities, SIGNAL(removed(QListWidgetItem*)), this, SLOT(abilityRemoved(QListWidgetItem*)));
+ connect(ui_abilities, SIGNAL(added(QListWidgetItem*)), this, SLOT(teamMemberAdded(QListWidgetItem*)));
+ connect(ui_abilities, SIGNAL(removed(QListWidgetItem*)), this, SLOT(teamMemberRemoved(QListWidgetItem*)));
connect(ui_items, SIGNAL(added(QListWidgetItem*)), this, SLOT(itemAdded(QListWidgetItem*)));
connect(ui_items, SIGNAL(removed(QListWidgetItem*)), this, SLOT(itemRemoved(QListWidgetItem*)));
connect(ui_itemCount, SIGNAL(valueChanged(int)), this, SLOT(itemCountChanged(int)));
@@ -76,49 +96,48 @@ void MapTrainerTeamMemberUI::initGui()
connect(ui_natures, SIGNAL(added(QListWidgetItem*)), this, SLOT(natureAdded(QListWidgetItem*)));
connect(ui_natures, SIGNAL(removed(QListWidgetItem*)), this, SLOT(natureRemoved(QListWidgetItem*)));
connect(ui_items->selectedListWidget(), SIGNAL(currentItemChanged(QListWidgetItem*, QListWidgetItem*)), this, SLOT(selectedItemChanged(QListWidgetItem*)));
- QVBoxLayout* layout = new QVBoxLayout;
- layout->addWidget(formWidget);
- setLayout(layout);
+ return form;
}
-void MapTrainerTeamMemberUI::refreshGui()
+void MapTrainerTeamMemberUI::Private::refreshGui()
{
const bool blockedSpecies = ui_species->blockSignals(true);
ui_species->clear();
- for (int i = 0; i < game()->speciesCount(); ++i)
- ui_species->addItem(game()->species(i)->name());
+ for (int i = 0; i < m_teamMember->game()->speciesCount(); ++i)
+ ui_species->addItem(m_teamMember->game()->species(i)->name());
ui_species->blockSignals(blockedSpecies);
- ui_level->setMaximum(game()->rules()->maxLevel());
+ ui_level->setMaximum(m_teamMember->game()->rules()->maxLevel());
const bool blockedAbilities = ui_abilities->blockSignals(true);
ui_abilities->availableListWidget()->clear();
ui_abilities->selectedListWidget()->clear();
- for (int i = 0; i < game()->abilityCount(); ++i)
+ for (int i = 0; i < m_teamMember->game()->abilityCount(); ++i)
{
- const Ability* ability = game()->ability(i);
+ const Ability* ability = m_teamMember->game()->ability(i);
QListWidgetItem* widgetItem = new QListWidgetItem(ability->name(), ui_abilities->availableListWidget());
widgetItem->setData(Qt::UserRole, ability->id());
}
ui_abilities->blockSignals(blockedAbilities);
ui_abilities->setButtonsEnabled();
- ui_abilities->setEnabled(game()->rules()->maxAbilities());
+ ui_abilities->setEnabled(m_teamMember->game()->rules()->maxAbilities());
const bool blockedItems = ui_items->blockSignals(true);
ui_items->availableListWidget()->clear();
ui_items->selectedListWidget()->clear();
- for (int i = 0; i < game()->itemCount(); ++i)
+ for (int i = 0; i < m_teamMember->game()->itemCount(); ++i)
{
- const Item* item = game()->item(i);
+ const Item* item = m_teamMember->game()->item(i);
QListWidgetItem* widgetItem = new QListWidgetItem(item->name(), ui_items->availableListWidget());
widgetItem->setData(Qt::UserRole, item->id());
}
ui_items->blockSignals(blockedItems);
ui_items->setButtonsEnabled();
- ui_boxItems->setEnabled(game()->rules()->maxHeldItems());
+ ui_itemCount->setEnabled(false);
+ ui_boxItems->setEnabled(m_teamMember->game()->rules()->maxHeldItems());
const bool blockedMoves = ui_moves->blockSignals(true);
ui_moves->availableListWidget()->clear();
ui_moves->selectedListWidget()->clear();
- for (int i = 0; i < game()->moveCount(); ++i)
+ for (int i = 0; i < m_teamMember->game()->moveCount(); ++i)
{
- const Move* move = game()->move(i);
+ const Move* move = m_teamMember->game()->move(i);
QListWidgetItem* widgetItem = new QListWidgetItem(move->name(), ui_moves->availableListWidget());
widgetItem->setData(Qt::UserRole, move->id());
}
@@ -127,161 +146,136 @@ void MapTrainerTeamMemberUI::refreshGui()
const bool blockedNatures = ui_natures->blockSignals(true);
ui_natures->availableListWidget()->clear();
ui_natures->selectedListWidget()->clear();
- for (int i = 0; i < game()->natureCount(); ++i)
+ for (int i = 0; i < m_teamMember->game()->natureCount(); ++i)
{
- const Nature* nature = game()->nature(i);
+ const Nature* nature = m_teamMember->game()->nature(i);
QListWidgetItem* widgetItem = new QListWidgetItem(nature->name(), ui_natures->availableListWidget());
widgetItem->setData(Qt::UserRole, nature->id());
}
ui_natures->blockSignals(blockedNatures);
ui_natures->setButtonsEnabled();
- ui_natures->setEnabled(game()->rules()->maxNatures());
+ ui_natures->setEnabled(m_teamMember->game()->rules()->maxNatures());
}
-void MapTrainerTeamMemberUI::setGui()
+void MapTrainerTeamMemberUI::Private::resetGui()
{
- ui_species->setCurrentIndex(game()->speciesIndex(qobject_cast<MapTrainerTeamMember*>(modified())->species()));
- ui_level->setValue(qobject_cast<MapTrainerTeamMember*>(modified())->level());
+ ui_species->setCurrentIndex(m_teamMember->game()->speciesIndex(m_teamMember->species()));
+ ui_level->setValue(m_teamMember->level());
for (int i = 0; i < ui_abilities->availableListWidget()->count(); ++i)
{
QListWidgetItem* widgetItem = ui_abilities->availableListWidget()->item(i);
- if (qobject_cast<MapTrainerTeamMember*>(modified())->ability(widgetItem->data(Qt::UserRole).toInt()))
+ if (m_teamMember->ability(widgetItem->data(Qt::UserRole).toInt()))
ui_abilities->selectedListWidget()->addItem(ui_abilities->availableListWidget()->takeItem(i--));
}
for (int i = 0; i < ui_abilities->selectedListWidget()->count(); ++i)
{
QListWidgetItem* widgetItem = ui_abilities->selectedListWidget()->item(i);
- if (!qobject_cast<MapTrainerTeamMember*>(modified())->ability(widgetItem->data(Qt::UserRole).toInt()))
+ if (!m_teamMember->ability(widgetItem->data(Qt::UserRole).toInt()))
ui_abilities->availableListWidget()->addItem(ui_abilities->selectedListWidget()->takeItem(i--));
}
ui_abilities->setButtonsEnabled();
for (int i = 0; i < ui_items->availableListWidget()->count(); ++i)
{
QListWidgetItem* widgetItem = ui_items->availableListWidget()->item(i);
- if (qobject_cast<MapTrainerTeamMember*>(modified())->item(widgetItem->data(Qt::UserRole).toInt()))
+ if (m_teamMember->item(widgetItem->data(Qt::UserRole).toInt()))
ui_items->selectedListWidget()->addItem(ui_items->availableListWidget()->takeItem(i--));
}
for (int i = 0; i < ui_items->selectedListWidget()->count(); ++i)
{
QListWidgetItem* widgetItem = ui_items->selectedListWidget()->item(i);
- if (!qobject_cast<MapTrainerTeamMember*>(modified())->item(widgetItem->data(Qt::UserRole).toInt()))
+ if (!m_teamMember->item(widgetItem->data(Qt::UserRole).toInt()))
ui_items->availableListWidget()->addItem(ui_items->selectedListWidget()->takeItem(i--));
}
ui_items->setButtonsEnabled();
- QListWidgetItem* selectedItem = ui_items->selectedListWidget()->currentItem();
- if (selectedItem)
- ui_itemCount->setValue(qobject_cast<MapTrainerTeamMember*>(modified())->item(selectedItem->data(Qt::UserRole).toInt()));
for (int i = 0; i < ui_moves->availableListWidget()->count(); ++i)
{
QListWidgetItem* widgetItem = ui_moves->availableListWidget()->item(i);
- if (qobject_cast<MapTrainerTeamMember*>(modified())->move(widgetItem->data(Qt::UserRole).toInt()))
+ if (m_teamMember->move(widgetItem->data(Qt::UserRole).toInt()))
ui_moves->selectedListWidget()->addItem(ui_moves->availableListWidget()->takeItem(i--));
}
for (int i = 0; i < ui_moves->selectedListWidget()->count(); ++i)
{
QListWidgetItem* widgetItem = ui_moves->selectedListWidget()->item(i);
- if (!qobject_cast<MapTrainerTeamMember*>(modified())->move(widgetItem->data(Qt::UserRole).toInt()))
+ if (!m_teamMember->move(widgetItem->data(Qt::UserRole).toInt()))
ui_moves->availableListWidget()->addItem(ui_moves->selectedListWidget()->takeItem(i--));
}
ui_moves->setButtonsEnabled();
for (int i = 0; i < ui_natures->availableListWidget()->count(); ++i)
{
QListWidgetItem* widgetItem = ui_natures->availableListWidget()->item(i);
- if (qobject_cast<MapTrainerTeamMember*>(modified())->nature(widgetItem->data(Qt::UserRole).toInt()))
+ if (m_teamMember->nature(widgetItem->data(Qt::UserRole).toInt()))
ui_natures->selectedListWidget()->addItem(ui_natures->availableListWidget()->takeItem(i--));
}
for (int i = 0; i < ui_natures->selectedListWidget()->count(); ++i)
{
QListWidgetItem* widgetItem = ui_natures->selectedListWidget()->item(i);
- if (!qobject_cast<MapTrainerTeamMember*>(modified())->nature(widgetItem->data(Qt::UserRole).toInt()))
+ if (!m_teamMember->nature(widgetItem->data(Qt::UserRole).toInt()))
ui_natures->availableListWidget()->addItem(ui_natures->selectedListWidget()->takeItem(i--));
}
ui_natures->setButtonsEnabled();
}
-void MapTrainerTeamMemberUI::apply()
-{
- *qobject_cast<MapTrainerTeamMember*>(original()) = *qobject_cast<MapTrainerTeamMember*>(modified());
- emit(changed(false));
-}
-
-void MapTrainerTeamMemberUI::discard()
-{
- *qobject_cast<MapTrainerTeamMember*>(modified()) = *qobject_cast<MapTrainerTeamMember*>(original());
- setGui();
- emit(changed(false));
-}
-
-void MapTrainerTeamMemberUI::speciesChanged(const int species)
+void MapTrainerTeamMemberUI::Private::speciesChanged(const int species)
{
if (0 <= species)
- qobject_cast<MapTrainerTeamMember*>(modified())->setSpecies(game()->species(species)->id());
+ m_teamMember->setSpecies(m_teamMember->game()->species(species)->id());
}
-void MapTrainerTeamMemberUI::levelChanged(const int level)
+void MapTrainerTeamMemberUI::Private::levelChanged(const int level)
{
- qobject_cast<MapTrainerTeamMember*>(modified())->setLevel(level);
+ m_teamMember->setLevel(level);
}
-void MapTrainerTeamMemberUI::abilityAdded(QListWidgetItem* item)
+void MapTrainerTeamMemberUI::Private::abilityAdded(QListWidgetItem* item)
{
- qobject_cast<MapTrainerTeamMember*>(modified())->setAbility(item->data(Qt::UserRole).toInt(), true);
- setGui();
+ m_teamMember->setAbility(item->data(Qt::UserRole).toInt(), true);
}
-void MapTrainerTeamMemberUI::abilityRemoved(QListWidgetItem* item)
+void MapTrainerTeamMemberUI::Private::abilityRemoved(QListWidgetItem* item)
{
- qobject_cast<MapTrainerTeamMember*>(modified())->setAbility(item->data(Qt::UserRole).toInt(), false);
- setGui();
+ m_teamMember->setAbility(item->data(Qt::UserRole).toInt(), false);
}
-void MapTrainerTeamMemberUI::itemAdded(QListWidgetItem* item)
+void MapTrainerTeamMemberUI::Private::itemAdded(QListWidgetItem* item)
{
- qobject_cast<MapTrainerTeamMember*>(modified())->setItem(item->data(Qt::UserRole).toInt(), 1);
- setGui();
+ m_teamMember->setItem(item->data(Qt::UserRole).toInt(), 1);
}
-void MapTrainerTeamMemberUI::itemRemoved(QListWidgetItem* item)
+void MapTrainerTeamMemberUI::Private::itemRemoved(QListWidgetItem* item)
{
- qobject_cast<MapTrainerTeamMember*>(modified())->setItem(item->data(Qt::UserRole).toInt(), 0);
- setGui();
+ m_teamMember->setItem(item->data(Qt::UserRole).toInt(), 0);
}
-void MapTrainerTeamMemberUI::itemChanged(QListWidgetItem* item)
+void MapTrainerTeamMemberUI::Private::itemChanged(QListWidgetItem* item)
{
if (item)
- ui_itemCount->setValue(qobject_cast<MapTrainerTeamMember*>(modified())->item(item->data(Qt::UserRole).toInt()));
- else
- ui_itemCount->setEnabled(false);
+ ui_itemCount->setValue(m_teamMember->item(item->data(Qt::UserRole).toInt()));
+ ui_itemCount->setEnabled(!!item);
}
-void MapTrainerTeamMemberUI::itemCountChanged(const int itemCount)
+void MapTrainerTeamMemberUI::Private::itemCountChanged(const int itemCount)
{
QListWidgetItem* item = ui_items->selectedListWidget()->currentItem();
- qobject_cast<MapTrainerTeamMember*>(modified())->setItem(item->data(Qt::UserRole).toInt(), itemCount);
- setGui();
+ m_teamMember->setItem(item->data(Qt::UserRole).toInt(), itemCount);
+ emit(changed());
}
-void MapTrainerTeamMemberUI::moveAdded(QListWidgetItem* item)
+void MapTrainerTeamMemberUI::Private::moveAdded(QListWidgetItem* item)
{
- qobject_cast<MapTrainerTeamMember*>(modified())->setMove(item->data(Qt::UserRole).toInt(), true);
- setGui();
+ m_teamMember->setMove(item->data(Qt::UserRole).toInt(), true);
}
-void MapTrainerTeamMemberUI::moveRemoved(QListWidgetItem* item)
+void MapTrainerTeamMemberUI::Private::moveRemoved(QListWidgetItem* item)
{
- qobject_cast<MapTrainerTeamMember*>(modified())->setMove(item->data(Qt::UserRole).toInt(), false);
- setGui();
+ m_teamMember->setMove(item->data(Qt::UserRole).toInt(), false);
}
-void MapTrainerTeamMemberUI::natureAdded(QListWidgetItem* item)
+void MapTrainerTeamMemberUI::Private::natureAdded(QListWidgetItem* item)
{
- qobject_cast<MapTrainerTeamMember*>(modified())->setNature(item->data(Qt::UserRole).toInt(), true);
- setGui();
+ m_teamMember->setNature(item->data(Qt::UserRole).toInt(), true);
}
-void MapTrainerTeamMemberUI::natureRemoved(QListWidgetItem* item)
+void MapTrainerTeamMemberUI::Private::natureRemoved(QListWidgetItem* item)
{
- qobject_cast<MapTrainerTeamMember*>(modified())->setNature(item->data(Qt::UserRole).toInt(), false);
- setGui();
+ m_teamMember->setNature(item->data(Qt::UserRole).toInt(), false);
}