#include "mainwindow.h" #include "ui_mainwindow.h" #include MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); adloader = new Loader(this); adloader->load("data2.xml"); alModel = new AlienModel(adloader->aliens.values()); ui->lvAliens->setModel((QAbstractItemModel * )alModel); connect(ui->lvAliens->selectionModel(),SIGNAL(currentChanged(QModelIndex, QModelIndex)),this,SLOT(lvAliens_select(QModelIndex, QModelIndex))); ui->lvAliens->selectionModel()->setCurrentIndex(ui->lvAliens->model()->index(0,0),QItemSelectionModel::Select); splModel = new SplashModel(adloader->splashes.values()); ui->lvSplashes->setModel((QAbstractItemModel * )splModel); connect(ui->lvSplashes->selectionModel(),SIGNAL(currentChanged(QModelIndex, QModelIndex)),this,SLOT(lvSplashes_select(QModelIndex, QModelIndex))); ui->lvSplashes->selectionModel()->setCurrentIndex(ui->lvSplashes->model()->index(0,0),QItemSelectionModel::Select); twModel = new TowerModel(adloader->towers.values()); ui->lvTowers->setModel((QAbstractItemModel * )twModel); connect(ui->lvTowers->selectionModel(),SIGNAL(currentChanged(QModelIndex, QModelIndex)),this,SLOT(lvTowers_select(QModelIndex, QModelIndex))); ui->lvTowers->selectionModel()->setCurrentIndex(ui->lvTowers->model()->index(0,0),QItemSelectionModel::Select); ui->cbTwSplash->setModel((QAbstractItemModel * )splModel); } MainWindow::~MainWindow() { delete ui; } void MainWindow::changeEvent(QEvent *e) { QMainWindow::changeEvent(e); switch (e->type()) { case QEvent::LanguageChange: ui->retranslateUi(this); break; default: break; } } void MainWindow::on_cbAlArmor_toggled(bool checked) { int id = adloader->aliens.values().at(ui->lvAliens->currentIndex().row()).id; ui->sbAlArmor->setEnabled(checked); if (checked) adloader->aliens[id].armor = ui->sbAlArmor->value(); else adloader->aliens[id].armor = 0; } void MainWindow::on_cbAlRegeneration_toggled(bool checked) { int id = adloader->aliens.values().at(ui->lvAliens->currentIndex().row()).id; ui->sbAlregeneration->setEnabled(checked); if (checked) adloader->aliens[id].regeneration = ui->sbAlregeneration->value(); else adloader->aliens[id].regeneration = 0; } void MainWindow::lvAliens_select(QModelIndex index, QModelIndex) { tbAlien al = adloader->aliens.values().at(index.row()); ui->leAlName->setText(al.name); ui->sbAlHealth->setValue(al.health); ui->sbAlArmor->setValue(al.armor); if (al.armor > 0) ui->cbAlArmor->setChecked(true); else ui->cbAlArmor->setChecked(false); ui->sbAlSpeed->setValue(al.speed); ui->sbAlPrise->setValue(al.prise); ui->sbAlregeneration->setValue(al.regeneration); if (al.regeneration > 0) ui->cbAlRegeneration->setChecked(true); else ui->cbAlRegeneration->setChecked(false); ui->sbAlScore->setValue(al.score); ui->cbAlIsFly->setChecked(al.isFlying); } void MainWindow::lvTowers_select(QModelIndex index, QModelIndex) { tbTower tw = adloader->towers.values().at(index.row()); ui->sbTwBuildTime->setValue(tw.buildTime); ui->sbTwCost->setValue(tw.cost); ui->sbTwExpByDam->setValue(tw.expByDamage); ui->sbTwExpByKill->setValue(tw.expByKill); ui->sbTwExpByShot->setValue(tw.expByShot); ui->leTwName->setText(tw.name); ui->sbTwRadius->setValue(tw.radius); ui->sbTwReload->setValue(tw.reload); ui->cbTwSplash->setCurrentIndex(adloader->splashes.keys().indexOf(tw.splashId)); } void MainWindow::lvSplashes_select(QModelIndex index, QModelIndex) { tbSplash spl = adloader->splashes.values().at(index.row()); ui->sbSplLifeTime->setValue(spl.lifetime); ui->sbSplSpeed->setValue(spl.speed); ui->cbSplAutoControl->setChecked(spl.autoControl); ui->leSplName->setText(spl.name); } void MainWindow::on_pbSave_clicked() { adloader->save("data2.xml"); adloader->load("data2.xml"); alModel->refresh(adloader->aliens.values()); } void MainWindow::on_sbAlHealth_valueChanged(double value) { int id = adloader->aliens.values().at(ui->lvAliens->currentIndex().row()).id; adloader->aliens[id].health = value; } void MainWindow::on_sbAlArmor_valueChanged(double value) { int id = adloader->aliens.values().at(ui->lvAliens->currentIndex().row()).id; adloader->aliens[id].armor = value; } void MainWindow::on_sbAlregeneration_valueChanged(double value) { int id = adloader->aliens.values().at(ui->lvAliens->currentIndex().row()).id; adloader->aliens[id].regeneration = value; } void MainWindow::on_sbAlSpeed_valueChanged(double value) { int id = adloader->aliens.values().at(ui->lvAliens->currentIndex().row()).id; adloader->aliens[id].speed = value; } void MainWindow::on_sbAlPrise_valueChanged(int val) { int id = adloader->aliens.values().at(ui->lvAliens->currentIndex().row()).id; adloader->aliens[id].prise = val; } void MainWindow::on_sbAlScore_valueChanged(int val) { int id = adloader->aliens.values().at(ui->lvAliens->currentIndex().row()).id; adloader->aliens[id].score = val; } void MainWindow::on_cbAlIsFly_clicked(bool checked) { int id = adloader->aliens.values().at(ui->lvAliens->currentIndex().row()).id; adloader->aliens[id].isFlying = checked; } void MainWindow::on_leAlName_editingFinished() { int id = adloader->aliens.values().at(ui->lvAliens->currentIndex().row()).id; adloader->aliens[id].name = ui->leAlName->text(); alModel->refresh(adloader->aliens.values()); ui->lvAliens->setModel((QAbstractItemModel * )alModel); } void MainWindow::on_pbAlAdd_clicked() { int i = 1; while (adloader->aliens.contains(i)) i++; tbAlien al; al.id = i; al.name = tr("Alien"); adloader->aliens.insert(al.id,al); int index = adloader->aliens.keys().indexOf(i); alModel->refresh(adloader->aliens.values()); ui->lvAliens->setModel((QAbstractItemModel * )alModel); ui->lvAliens->reset(); ui->lvAliens->selectionModel()->setCurrentIndex(ui->lvAliens->model()->index(index,0),QItemSelectionModel::Select); } void MainWindow::on_pbAlDel_clicked() { QMessageBox msgBox; int id = adloader->aliens.keys().at(ui->lvAliens->currentIndex().row()); msgBox.setText(tr("Delete alien %1 id=%2").arg(adloader->aliens.value(id).name).arg(id)); msgBox.setInformativeText(tr("Are you sure?")); msgBox.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel); msgBox.setDefaultButton(QMessageBox::Ok); int ret = msgBox.exec(); if (ret == QMessageBox::Ok) { adloader->aliens.remove(id); alModel->refresh(adloader->aliens.values()); ui->lvAliens->setModel((QAbstractItemModel * )alModel); ui->lvAliens->reset(); ui->lvAliens->selectionModel()->setCurrentIndex(ui->lvAliens->model()->index(0,0),QItemSelectionModel::Select); } } void MainWindow::on_leTwName_editingFinished() { int id = adloader->towers.values().at(ui->lvTowers->currentIndex().row()).id; adloader->towers[id].name = ui->leTwName->text(); twModel->refresh(adloader->towers.values()); ui->lvTowers->setModel((QAbstractItemModel * )twModel); } void MainWindow::on_sbTwBuildTime_valueChanged(int val) { int id = adloader->towers.values().at(ui->lvTowers->currentIndex().row()).id; adloader->towers[id].buildTime = val; } void MainWindow::on_sbTwCost_valueChanged(int val) { int id = adloader->towers.values().at(ui->lvTowers->currentIndex().row()).id; adloader->towers[id].cost = val; } void MainWindow::on_cbTwSplash_currentIndexChanged(int index) { int id = adloader->towers.values().at(ui->lvTowers->currentIndex().row()).id; adloader->towers[id].splashId = adloader->splashes.values().at(index).id; } void MainWindow::on_sbTwReload_valueChanged(int val) { int id = adloader->towers.values().at(ui->lvTowers->currentIndex().row()).id; adloader->towers[id].reload = val; } void MainWindow::on_sbTwRadius_valueChanged(double val) { int id = adloader->towers.values().at(ui->lvTowers->currentIndex().row()).id; adloader->towers[id].radius = val; } void MainWindow::on_sbTwExpByShot_valueChanged(double val) { int id = adloader->towers.values().at(ui->lvTowers->currentIndex().row()).id; adloader->towers[id].expByShot = val; } void MainWindow::on_sbTwExpByDam_valueChanged(double val) { int id = adloader->towers.values().at(ui->lvTowers->currentIndex().row()).id; adloader->towers[id].expByDamage = val; } void MainWindow::on_sbTwExpByKill_valueChanged(double val) { int id = adloader->towers.values().at(ui->lvTowers->currentIndex().row()).id; adloader->towers[id].expByKill = val; } void MainWindow::on_pbTwAdd_clicked() { int i = 1; while (adloader->towers.contains(i)) i++; tbTower tw; tw.id = i; tw.name = tr("Tower"); adloader->towers.insert(tw.id,tw); int index = adloader->towers.keys().indexOf(i); twModel->refresh(adloader->towers.values()); ui->lvTowers->setModel((QAbstractItemModel * )twModel); ui->lvTowers->reset(); ui->lvTowers->selectionModel()->setCurrentIndex(ui->lvTowers->model()->index(index,0),QItemSelectionModel::Select); } void MainWindow::on_pbTwDel_clicked() { QMessageBox msgBox; int id = adloader->towers.keys().at(ui->lvTowers->currentIndex().row()); msgBox.setText(tr("Delete tower %1 id=%2").arg(adloader->towers.value(id).name).arg(id)); msgBox.setInformativeText(tr("Are you sure?")); msgBox.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel); msgBox.setDefaultButton(QMessageBox::Ok); int ret = msgBox.exec(); if (ret == QMessageBox::Ok) { adloader->towers.remove(id); twModel->refresh(adloader->towers.values()); ui->lvTowers->setModel((QAbstractItemModel * )twModel); ui->lvTowers->reset(); ui->lvTowers->selectionModel()->setCurrentIndex(ui->lvTowers->model()->index(0,0),QItemSelectionModel::Select); } } void MainWindow::on_leSplName_editingFinished() { int id = adloader->splashes.values().at(ui->lvSplashes->currentIndex().row()).id; adloader->splashes[id].name = ui->leSplName->text(); splModel->refresh(adloader->splashes.values()); ui->lvSplashes->setModel((QAbstractItemModel * )splModel); ui->cbTwSplash->setModel((QAbstractItemModel * )splModel); } void MainWindow::on_sbSplSpeed_valueChanged(double val) { int id = adloader->splashes.values().at(ui->lvSplashes->currentIndex().row()).id; adloader->splashes[id].speed = val; } void MainWindow::on_cbSplAutoControl_toggled(bool checked) { int id = adloader->splashes.values().at(ui->lvSplashes->currentIndex().row()).id; adloader->splashes[id].autoControl = checked; } void MainWindow::on_sbSplLifeTime_valueChanged(int val) { int id = adloader->splashes.values().at(ui->lvSplashes->currentIndex().row()).id; adloader->splashes[id].lifetime = val; } void MainWindow::on_pbSplAdd_clicked() { int i = 1; while (adloader->splashes.contains(i)) i++; tbSplash spl; spl.id = i; spl.name = tr("Splash"); adloader->splashes.insert(spl.id,spl); int index = adloader->splashes.keys().indexOf(i); splModel->refresh(adloader->splashes.values()); ui->lvSplashes->setModel((QAbstractItemModel * )splModel); ui->lvSplashes->reset(); ui->lvSplashes->selectionModel()->setCurrentIndex(ui->lvSplashes->model()->index(index,0),QItemSelectionModel::Select); ui->cbTwSplash->setModel((QAbstractItemModel * )splModel); } void MainWindow::on_pbSlpDel_clicked() { QMessageBox msgBox; int id = adloader->splashes.keys().at(ui->lvSplashes->currentIndex().row()); msgBox.setText(tr("Delete splash %1 id=%2").arg(adloader->splashes.value(id).name).arg(id)); msgBox.setInformativeText(tr("Are you sure?")); msgBox.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel); msgBox.setDefaultButton(QMessageBox::Ok); int ret = msgBox.exec(); if (ret == QMessageBox::Ok) { adloader->splashes.remove(id); splModel->refresh(adloader->splashes.values()); ui->lvSplashes->setModel((QAbstractItemModel * )splModel); ui->lvSplashes->reset(); ui->lvSplashes->selectionModel()->setCurrentIndex(ui->lvSplashes->model()->index(0,0),QItemSelectionModel::Select); ui->cbTwSplash->setModel((QAbstractItemModel * )splModel); } }