summaryrefslogtreecommitdiffstats
path: root/pokemodr/PokemodUI.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'pokemodr/PokemodUI.cpp')
-rw-r--r--pokemodr/PokemodUI.cpp49
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();
}