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/MapTrainerTeamMemberUI.cpp | 194 ++++++++++++++--------------- 1 file changed, 94 insertions(+), 100 deletions(-) (limited to 'sigmodr/widgets/MapTrainerTeamMemberUI.cpp') 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 @@ -35,39 +36,58 @@ #include // Qt includes -#include #include #include -#include -#include 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(m_object) = *d->m_teamMember; + ObjectUI::apply(); +} + +void MapTrainerTeamMemberUI::discard() +{ + *d->m_teamMember = *qobject_cast(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("varSpecies"); - ui_level = formWidget->findChild("varLevel"); - ui_abilities = formWidget->findChild("varAbilities"); - ui_boxItems = formWidget->findChild("boxItems"); - ui_items = formWidget->findChild("varItems"); - ui_itemCount = formWidget->findChild("varItemCount"); - ui_moves = formWidget->findChild("varMoves"); - ui_natures = formWidget->findChild("varNatures"); + delete m_teamMember; +} + +QWidget* MapTrainerTeamMemberUI::Private::makeWidgets(ObjectUI* widget) +{ + QWidget *form = openUiFile(":/gui/maptrainerteammember.ui", widget); + ui_species = form->findChild("varSpecies"); + ui_level = form->findChild("varLevel"); + ui_abilities = form->findChild("varAbilities"); + ui_boxItems = form->findChild("boxItems"); + ui_items = form->findChild("varItems"); + ui_itemCount = form->findChild("varItemCount"); + ui_moves = form->findChild("varMoves"); + ui_natures = form->findChild("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(modified())->species())); - ui_level->setValue(qobject_cast(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(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(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(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(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(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(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(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(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(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(original()) = *qobject_cast(modified()); - emit(changed(false)); -} - -void MapTrainerTeamMemberUI::discard() -{ - *qobject_cast(modified()) = *qobject_cast(original()); - setGui(); - emit(changed(false)); -} - -void MapTrainerTeamMemberUI::speciesChanged(const int species) +void MapTrainerTeamMemberUI::Private::speciesChanged(const int species) { if (0 <= species) - qobject_cast(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(modified())->setLevel(level); + m_teamMember->setLevel(level); } -void MapTrainerTeamMemberUI::abilityAdded(QListWidgetItem* item) +void MapTrainerTeamMemberUI::Private::abilityAdded(QListWidgetItem* item) { - qobject_cast(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(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(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(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(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(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(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(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(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(modified())->setNature(item->data(Qt::UserRole).toInt(), false); - setGui(); + m_teamMember->setNature(item->data(Qt::UserRole).toInt(), false); } -- cgit