diff options
Diffstat (limited to 'pokemodr/PokemodUI.cpp')
| -rw-r--r-- | pokemodr/PokemodUI.cpp | 49 |
1 files changed, 26 insertions, 23 deletions
diff --git a/pokemodr/PokemodUI.cpp b/pokemodr/PokemodUI.cpp index 88d7111b..8479fd15 100644 --- a/pokemodr/PokemodUI.cpp +++ b/pokemodr/PokemodUI.cpp @@ -20,7 +20,7 @@ // PokeModr includes #include "FileDialog.h" -#include "TypechartWidgetItem.h" +#include "TypechartModel.h" // Pokemod includes #include "../pokemod/Map.h" @@ -40,6 +40,14 @@ PokemodUI::~PokemodUI() { } +void PokemodUI::initGui() +{ + QStringList types; + for (int i = 0; i < static_cast<Pokemod*>(original())->typeCount(); ++i) + types << static_cast<Pokemod*>(original())->type(i)->name(); + varTypechart->setModel(new TypechartModel(static_cast<Pokemod*>(original())->typechart(), types)); +} + void PokemodUI::refreshGui() { varMap->clear(); @@ -48,19 +56,7 @@ void PokemodUI::refreshGui() const Map* map = static_cast<Pokemod*>(original())->map(i); varMap->addItem(map->name(), map->id()); } - varTypechart->setRowCount(static_cast<Pokemod*>(original())->typeCount()); - varTypechart->setColumnCount(static_cast<Pokemod*>(original())->typeCount()); - QStringList types; - Matrix<Fraction>* typeChart = static_cast<Pokemod*>(original())->typeChart(); - for (int i = 0; i < static_cast<Pokemod*>(original())->typeCount(); ++i) - { - types << static_cast<Pokemod*>(original())->type(i)->name(); - // TODO: set the typechart correctly -// for (int j = 0; j < static_cast<Pokemod*>(original())->typeCount(); ++j) -// varTypechart->item(i, j)->setData(Qt::EditRole, QVariant::fromValue(typeChart->at(i, j))); - } - varTypechart->setVerticalHeaderLabels(types); - varTypechart->setHorizontalHeaderLabels(types); + varEffectiveness->setEnabled(false); } void PokemodUI::setGui() @@ -74,9 +70,10 @@ void PokemodUI::setGui() if (resetWarps) { varWarp->clear(); - const Map* map = static_cast<Pokemod*>(original())->mapById(static_cast<Pokemod*>(modified())->startMap()); - if (map) + const int mapIndex = static_cast<Pokemod*>(original())->mapIndex(static_cast<Pokemod*>(modified())->startMap()); + if (mapIndex != INT_MAX) { + const Map* map = static_cast<Pokemod*>(original())->map(mapIndex); for (int i = 0; i < map->warpCount(); ++i) { const MapWarp* warp = map->warp(i); @@ -127,12 +124,12 @@ void PokemodUI::on_varDescription_textChanged(const QString& description) void PokemodUI::on_varMap_activated(const int map) { - static_cast<Pokemod*>(modified())->setStartMap(map); + static_cast<Pokemod*>(modified())->setStartMap(varMap->itemData(map).toInt()); } void PokemodUI::on_varWarp_activated(const int warp) { - static_cast<Pokemod*>(modified())->setStartWarp(warp); + static_cast<Pokemod*>(modified())->setStartWarp(varWarp->itemData(warp).toInt()); } void PokemodUI::on_varWalkSkin_pressed() @@ -201,10 +198,16 @@ void PokemodUI::on_varSurfFishSkin_pressed() delete dialog; } -void PokemodUI::on_varTypechart_currentItemChanged(QTableWidgetItem* current, QTableWidgetItem* previous) +void PokemodUI::on_varTypechart_clicked(const QModelIndex& index) { - disconnect(varEffectiveness, SIGNAL(valueChanged(Fraction)), static_cast<TypechartWidgetItem*>(previous), SLOT(setValue(Fraction))); - TypechartWidgetItem* widgetItem = static_cast<TypechartWidgetItem*>(current); -// varEffectiveness->setValue(widgetItem->data(Qt::EditRole).value<Fraction>()); - connect(varEffectiveness, SIGNAL(valueChanged(Fraction)), widgetItem, SLOT(setValue(Fraction))); + m_index = index; + varEffectiveness->setEnabled(true); + varEffectiveness->setValue(varTypechart->model()->data(m_index, Qt::EditRole).value<Fraction>()); +} + +void PokemodUI::on_varEffectiveness_valueChanged(const Fraction& multiplier) +{ + varTypechart->model()->setData(m_index, QVariant::fromValue(multiplier), Qt::EditRole); + emit(changed()); + setGui(); } |
