diff options
Diffstat (limited to 'sigmodr/widgets/BadgeUI.cpp')
| -rw-r--r-- | sigmodr/widgets/BadgeUI.cpp | 139 |
1 files changed, 81 insertions, 58 deletions
diff --git a/sigmodr/widgets/BadgeUI.cpp b/sigmodr/widgets/BadgeUI.cpp index 50ad7458..5e92e085 100644 --- a/sigmodr/widgets/BadgeUI.cpp +++ b/sigmodr/widgets/BadgeUI.cpp @@ -18,40 +18,63 @@ // Header include #include "BadgeUI.h" +// Sigmodr widget includes +#include "FractionWidget.h" + // Sigmod includes #include <sigmod/Badge.h> #include <sigmod/Rules.h> #include <sigmod/Sigmod.h> #include <sigmod/Sprite.h> +// KDE includes +#include <KComboBox> +#include <KIntNumInput> +#include <KLineEdit> + // Qt includes +#include <QtCore/QFile> #include <QtGui/QHeaderView> +#include <QtGui/QTableWidget> +#include <QtGui/QTableWidgetItem> +#include <QtUiTools/QUiLoader> Sigmodr::Widgets::BadgeUI::BadgeUI(Sigmod::Badge* badge, QWidget* parent) : ObjectUI(parent) { - setupUi(this); setObjects(badge, new Sigmod::Badge(*badge)); } -Sigmodr::Widgets::BadgeUI::~BadgeUI() -{ -} - void Sigmodr::Widgets::BadgeUI::initGui() { - varStat->horizontalHeader()->setResizeMode(QHeaderView::Stretch); + QFile file(":/gui/badge.ui"); + file.open(QFile::ReadOnly); + QWidget *formWidget = QUiLoader().load(&file, this); + file.close(); + ui_name = formWidget->findChild<KLineEdit*>("varName"); + ui_obey= formWidget->findChild<KIntNumInput*>("varName"); + ui_face = formWidget->findChild<KComboBox*>("varName"); + ui_badge = formWidget->findChild<KComboBox*>("varName"); + ui_stat = formWidget->findChild<QTableWidget*>("varName"); + ui_statMultiplier = formWidget->findChild<FractionWidget*>("varName"); + connect(ui_name, SIGNAL(textChanged(QString)), this, SLOT(nameChanged(QString))); + connect(ui_obey, SIGNAL(valueChanged(int)), this, SLOT(obeyChanged(int))); + connect(ui_face, SIGNAL(currentIndexChanged(int)), this, SLOT(faceChanged(int))); + connect(ui_badge, SIGNAL(currentIndexChanged(int)), this, SLOT(badgeChanged(int))); + connect(ui_stat, SIGNAL(currentCellChanged(int,int,int,int)), this, SLOT(statChanged(int))); + connect(ui_statMultiplier, SIGNAL(valueChanged(Sigcore::Fraction)), this, SLOT(statMultiplierChanged(Sigcore::Fraction))); + ui_stat->horizontalHeader()->setResizeMode(QHeaderView::Stretch); } void Sigmodr::Widgets::BadgeUI::refreshGui() { int maxHeight = 0; int maxWidth = 0; - varObey->setMaximum(sigmod()->rules()->maxLevel()); - const bool blockedFace = varFace->blockSignals(true); - const bool blockedBadge = varBadge->blockSignals(true); - varFace->clear(); - varBadge->clear(); + ui_obey->setMaximum(sigmod()->rules()->maxLevel()); + const bool blockedFace = ui_face->blockSignals(true); + const bool blockedBadge = ui_badge->blockSignals(true); + ui_face->clear(); + ui_badge->clear(); for (int i = 0; i < sigmod()->spriteCount(); ++i) { const Sigmod::Sprite* sprite = sigmod()->sprite(i); @@ -59,74 +82,74 @@ void Sigmodr::Widgets::BadgeUI::refreshGui() icon.loadFromData(sprite->sprite()); maxHeight = qMax(maxHeight, icon.height()); maxWidth = qMax(maxWidth, icon.width()); - varFace->addItem(icon, sprite->name(), sprite->id()); - varBadge->addItem(icon, sprite->name(), sprite->id()); + ui_face->addItem(icon, sprite->name()); + ui_badge->addItem(icon, sprite->name()); } - varFace->blockSignals(blockedFace); - varBadge->blockSignals(blockedBadge); + ui_face->blockSignals(blockedFace); + ui_badge->blockSignals(blockedBadge); const QSize maxSize(maxWidth, maxHeight); - varFace->setIconSize(maxSize); - varBadge->setIconSize(maxSize); + ui_face->setIconSize(maxSize); + ui_badge->setIconSize(maxSize); const bool isSplit = sigmod()->rules()->specialSplit(); - varStat->clear(); - varStat->setRowCount((isSplit ? Sigmod::ST_SpecialDefense : Sigmod::ST_Special) - Sigmod::ST_Attack + 1); - varStat->setVerticalHeaderLabels((isSplit ? Sigmod::StatGSCStr : Sigmod::StatRBYStr).mid(Sigmod::ST_Attack, (isSplit ? Sigmod::ST_SpecialDefense : Sigmod::ST_Special) - Sigmod::ST_Attack + 1)); - varStat->setColumnCount(1); - varStat->setHorizontalHeaderLabels(QStringList() << "Multiplier"); - varStat->verticalHeaderItem(Sigmod::ST_Attack - Sigmod::ST_Attack)->setData(Qt::UserRole, QVariant::fromValue(Sigmod::ST_Attack)); - varStat->verticalHeaderItem(Sigmod::ST_Defense - Sigmod::ST_Attack)->setData(Qt::UserRole, QVariant::fromValue(Sigmod::ST_Defense)); - varStat->verticalHeaderItem(Sigmod::ST_Speed - Sigmod::ST_Attack)->setData(Qt::UserRole, QVariant::fromValue(Sigmod::ST_Speed)); + ui_stat->clear(); + ui_stat->setRowCount((isSplit ? Sigmod::ST_SpecialDefense : Sigmod::ST_Special) - Sigmod::ST_Attack + 1); + ui_stat->setVerticalHeaderLabels((isSplit ? Sigmod::StatGSCStr : Sigmod::StatRBYStr).mid(Sigmod::ST_Attack, (isSplit ? Sigmod::ST_SpecialDefense : Sigmod::ST_Special) - Sigmod::ST_Attack + 1)); + ui_stat->setColumnCount(1); + ui_stat->setHorizontalHeaderLabels(QStringList() << "Multiplier"); + ui_stat->verticalHeaderItem(Sigmod::ST_Attack - Sigmod::ST_Attack)->setData(Qt::UserRole, QVariant::fromValue(Sigmod::ST_Attack)); + ui_stat->verticalHeaderItem(Sigmod::ST_Defense - Sigmod::ST_Attack)->setData(Qt::UserRole, QVariant::fromValue(Sigmod::ST_Defense)); + ui_stat->verticalHeaderItem(Sigmod::ST_Speed - Sigmod::ST_Attack)->setData(Qt::UserRole, QVariant::fromValue(Sigmod::ST_Speed)); if (isSplit) { - varStat->verticalHeaderItem(Sigmod::ST_SpecialAttack - Sigmod::ST_Attack)->setData(Qt::UserRole, QVariant::fromValue(Sigmod::ST_SpecialAttack)); - varStat->verticalHeaderItem(Sigmod::ST_SpecialDefense - Sigmod::ST_Attack)->setData(Qt::UserRole, QVariant::fromValue(Sigmod::ST_SpecialDefense)); + ui_stat->verticalHeaderItem(Sigmod::ST_SpecialAttack - Sigmod::ST_Attack)->setData(Qt::UserRole, QVariant::fromValue(Sigmod::ST_SpecialAttack)); + ui_stat->verticalHeaderItem(Sigmod::ST_SpecialDefense - Sigmod::ST_Attack)->setData(Qt::UserRole, QVariant::fromValue(Sigmod::ST_SpecialDefense)); } else - varStat->verticalHeaderItem(Sigmod::ST_Special - Sigmod::ST_Attack)->setData(Qt::UserRole, QVariant::fromValue(Sigmod::ST_Special)); + ui_stat->verticalHeaderItem(Sigmod::ST_Special - Sigmod::ST_Attack)->setData(Qt::UserRole, QVariant::fromValue(Sigmod::ST_Special)); QTableWidgetItem* item = new QTableWidgetItem; item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); - varStat->setItem(Sigmod::ST_Attack - Sigmod::ST_Attack, 0, item); - varStat->setCurrentItem(item); + ui_stat->setItem(Sigmod::ST_Attack - Sigmod::ST_Attack, 0, item); + ui_stat->setCurrentItem(item); item = new QTableWidgetItem; item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); - varStat->setItem(Sigmod::ST_Defense- Sigmod::ST_Attack, 0, item); + ui_stat->setItem(Sigmod::ST_Defense- Sigmod::ST_Attack, 0, item); item = new QTableWidgetItem; item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); - varStat->setItem(Sigmod::ST_Speed - Sigmod::ST_Attack, 0, item); + ui_stat->setItem(Sigmod::ST_Speed - Sigmod::ST_Attack, 0, item); if (isSplit) { item = new QTableWidgetItem; item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); - varStat->setItem(Sigmod::ST_SpecialAttack - Sigmod::ST_Attack, 0, item); + ui_stat->setItem(Sigmod::ST_SpecialAttack - Sigmod::ST_Attack, 0, item); item = new QTableWidgetItem; item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); - varStat->setItem(Sigmod::ST_SpecialDefense - Sigmod::ST_Attack, 0, item); + ui_stat->setItem(Sigmod::ST_SpecialDefense - Sigmod::ST_Attack, 0, item); } else { item = new QTableWidgetItem; item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); - varStat->setItem(Sigmod::ST_Special - Sigmod::ST_Attack, 0, item); + ui_stat->setItem(Sigmod::ST_Special - Sigmod::ST_Attack, 0, item); } } void Sigmodr::Widgets::BadgeUI::setGui() { - varName->setText(qobject_cast<Sigmod::Badge*>(modified())->name()); - varObey->setValue(qobject_cast<Sigmod::Badge*>(modified())->obey()); - varFace->setCurrentIndex(varFace->findData(qobject_cast<Sigmod::Badge*>(modified())->face())); - varBadge->setCurrentIndex(varBadge->findData(qobject_cast<Sigmod::Badge*>(modified())->badge())); - varStat->item(Sigmod::ST_Attack - Sigmod::ST_Attack, 0)->setData(Qt::DisplayRole, QString::number(qobject_cast<Sigmod::Badge*>(modified())->stat(Sigmod::ST_Attack), 'g', 7)); - varStat->item(Sigmod::ST_Defense - Sigmod::ST_Attack, 0)->setData(Qt::DisplayRole, QString::number(qobject_cast<Sigmod::Badge*>(modified())->stat(Sigmod::ST_Defense), 'g', 7)); - varStat->item(Sigmod::ST_Speed - Sigmod::ST_Attack, 0)->setData(Qt::DisplayRole, QString::number(qobject_cast<Sigmod::Badge*>(modified())->stat(Sigmod::ST_Speed), 'g', 7)); + ui_name->setText(qobject_cast<Sigmod::Badge*>(modified())->name()); + ui_obey->setValue(qobject_cast<Sigmod::Badge*>(modified())->obey()); + ui_face->setCurrentIndex(sigmod()->spriteIndex(qobject_cast<Sigmod::Badge*>(modified())->face())); + ui_badge->setCurrentIndex(sigmod()->spriteIndex(qobject_cast<Sigmod::Badge*>(modified())->badge())); + ui_stat->item(Sigmod::ST_Attack - Sigmod::ST_Attack, 0)->setData(Qt::DisplayRole, QString::number(qobject_cast<Sigmod::Badge*>(modified())->stat(Sigmod::ST_Attack), 'g', 7)); + ui_stat->item(Sigmod::ST_Defense - Sigmod::ST_Attack, 0)->setData(Qt::DisplayRole, QString::number(qobject_cast<Sigmod::Badge*>(modified())->stat(Sigmod::ST_Defense), 'g', 7)); + ui_stat->item(Sigmod::ST_Speed - Sigmod::ST_Attack, 0)->setData(Qt::DisplayRole, QString::number(qobject_cast<Sigmod::Badge*>(modified())->stat(Sigmod::ST_Speed), 'g', 7)); if (sigmod()->rules()->specialSplit()) { - varStat->item(Sigmod::ST_SpecialAttack - Sigmod::ST_Attack, 0)->setData(Qt::DisplayRole, QString::number(qobject_cast<Sigmod::Badge*>(modified())->stat(Sigmod::ST_SpecialAttack), 'g', 7)); - varStat->item(Sigmod::ST_SpecialDefense - Sigmod::ST_Attack, 0)->setData(Qt::DisplayRole, QString::number(qobject_cast<Sigmod::Badge*>(modified())->stat(Sigmod::ST_SpecialDefense), 'g', 7)); + ui_stat->item(Sigmod::ST_SpecialAttack - Sigmod::ST_Attack, 0)->setData(Qt::DisplayRole, QString::number(qobject_cast<Sigmod::Badge*>(modified())->stat(Sigmod::ST_SpecialAttack), 'g', 7)); + ui_stat->item(Sigmod::ST_SpecialDefense - Sigmod::ST_Attack, 0)->setData(Qt::DisplayRole, QString::number(qobject_cast<Sigmod::Badge*>(modified())->stat(Sigmod::ST_SpecialDefense), 'g', 7)); } else - varStat->item(Sigmod::ST_Special - Sigmod::ST_Attack, 0)->setData(Qt::DisplayRole, QString::number(qobject_cast<Sigmod::Badge*>(modified())->stat(Sigmod::ST_Special), 'g', 7)); - varStatMultiplier->setValue(qobject_cast<Sigmod::Badge*>(modified())->stat(varStat->verticalHeaderItem(varStat->currentRow())->data(Qt::UserRole).value<Sigmod::Stat>())); + ui_stat->item(Sigmod::ST_Special - Sigmod::ST_Attack, 0)->setData(Qt::DisplayRole, QString::number(qobject_cast<Sigmod::Badge*>(modified())->stat(Sigmod::ST_Special), 'g', 7)); + ui_statMultiplier->setValue(qobject_cast<Sigmod::Badge*>(modified())->stat(ui_stat->verticalHeaderItem(ui_stat->currentRow())->data(Qt::UserRole).value<Sigmod::Stat>())); } void Sigmodr::Widgets::BadgeUI::apply() @@ -142,34 +165,34 @@ void Sigmodr::Widgets::BadgeUI::discard() emit(changed(false)); } -void Sigmodr::Widgets::BadgeUI::on_varName_textChanged(const QString& name) +void Sigmodr::Widgets::BadgeUI::nameChanged(const QString& name) { - const int cursor = varName->cursorPosition(); + const int cursor = ui_name->cursorPosition(); qobject_cast<Sigmod::Badge*>(modified())->setName(name); - varName->setCursorPosition(cursor); + ui_name->setCursorPosition(cursor); } -void Sigmodr::Widgets::BadgeUI::on_varObey_valueChanged(const int obey) +void Sigmodr::Widgets::BadgeUI::obeyChanged(const int obey) { qobject_cast<Sigmod::Badge*>(modified())->setObey(obey); } -void Sigmodr::Widgets::BadgeUI::on_varFace_currentIndexChanged(const int face) +void Sigmodr::Widgets::BadgeUI::faceChanged(const int face) { - qobject_cast<Sigmod::Badge*>(modified())->setFace(varFace->itemData(face).toInt()); + qobject_cast<Sigmod::Badge*>(modified())->setFace(sigmod()->sprite(face)->id()); } -void Sigmodr::Widgets::BadgeUI::on_varBadge_currentIndexChanged(const int badge) +void Sigmodr::Widgets::BadgeUI::badgeChanged(const int badge) { - qobject_cast<Sigmod::Badge*>(modified())->setBadge(varFace->itemData(badge).toInt()); + qobject_cast<Sigmod::Badge*>(modified())->setBadge(sigmod()->sprite(badge)->id()); } -void Sigmodr::Widgets::BadgeUI::on_varStat_currentCellChanged(const int row) +void Sigmodr::Widgets::BadgeUI::statChanged(const int row) { - varStatMultiplier->setValue(qobject_cast<Sigmod::Badge*>(modified())->stat(varStat->verticalHeaderItem(row)->data(Qt::UserRole).value<Sigmod::Stat>())); + ui_statMultiplier->setValue(qobject_cast<Sigmod::Badge*>(modified())->stat(ui_stat->verticalHeaderItem(row)->data(Qt::UserRole).value<Sigmod::Stat>())); } -void Sigmodr::Widgets::BadgeUI::on_varStatMultiplier_valueChanged(const Sigcore::Fraction& multiplier) +void Sigmodr::Widgets::BadgeUI::statMultiplierChanged(const Sigcore::Fraction& multiplier) { - qobject_cast<Sigmod::Badge*>(modified())->setStat(varStat->verticalHeaderItem(varStat->currentRow())->data(Qt::UserRole).value<Sigmod::Stat>(), multiplier); + qobject_cast<Sigmod::Badge*>(modified())->setStat(ui_stat->verticalHeaderItem(ui_stat->currentRow())->data(Qt::UserRole).value<Sigmod::Stat>(), multiplier); } |
