removesome bugs in ADeditor and add interactive
This commit is contained in:
@@ -15,17 +15,17 @@ MainWindow::MainWindow(QWidget *parent) :
|
||||
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);
|
||||
ui->lvAliens->selectionModel()->setCurrentIndex(ui->lvAliens->model()->index(0,0),QItemSelectionModel::ClearAndSelect);
|
||||
|
||||
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);
|
||||
ui->lvSplashes->selectionModel()->setCurrentIndex(ui->lvSplashes->model()->index(0,0),QItemSelectionModel::ClearAndSelect);
|
||||
|
||||
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->lvTowers->selectionModel()->setCurrentIndex(ui->lvTowers->model()->index(0,0),QItemSelectionModel::ClearAndSelect);
|
||||
ui->cbTwSplash->setModel((QAbstractItemModel * )splModel);
|
||||
|
||||
}
|
||||
@@ -111,11 +111,54 @@ void MainWindow::lvSplashes_select(QModelIndex index, QModelIndex)
|
||||
}
|
||||
|
||||
|
||||
void MainWindow::closeEvent(QCloseEvent *event)
|
||||
{
|
||||
QMessageBox msgBox;
|
||||
msgBox.setText(tr("Save changes?"));
|
||||
msgBox.setStandardButtons(QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel);
|
||||
msgBox.setDefaultButton(QMessageBox::Save);
|
||||
int ret = msgBox.exec();
|
||||
switch (ret)
|
||||
{
|
||||
case QMessageBox::Save :
|
||||
adloader->save("data2.xml");
|
||||
event->accept();
|
||||
break;
|
||||
case QMessageBox::Cancel :
|
||||
event->ignore();
|
||||
break;
|
||||
default:
|
||||
event->accept();
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::on_pbSave_clicked()
|
||||
{
|
||||
adloader->save("data2.xml");
|
||||
adloader->load("data2.xml");
|
||||
alModel->refresh(adloader->aliens.values());
|
||||
}
|
||||
|
||||
|
||||
void MainWindow::on_pbReload_clicked()
|
||||
{
|
||||
QMessageBox msgBox;
|
||||
msgBox.setText(tr("All unsaved changes will be lost"));
|
||||
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->load("data2.xml");
|
||||
alModel->refresh(adloader->aliens.values());
|
||||
twModel->refresh(adloader->towers.values());
|
||||
splModel->refresh(adloader->splashes.values());
|
||||
ui->lvAliens->reset();
|
||||
ui->lvAliens->selectionModel()->setCurrentIndex(ui->lvAliens->model()->index(0,0),QItemSelectionModel::ClearAndSelect);
|
||||
ui->lvTowers->reset();
|
||||
ui->lvTowers->selectionModel()->setCurrentIndex(ui->lvTowers->model()->index(0,0),QItemSelectionModel::ClearAndSelect);
|
||||
ui->lvSplashes->reset();
|
||||
ui->lvSplashes->selectionModel()->setCurrentIndex(ui->lvSplashes->model()->index(0,0),QItemSelectionModel::ClearAndSelect);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -174,6 +217,7 @@ void MainWindow::on_leAlName_editingFinished()
|
||||
adloader->aliens[id].name = ui->leAlName->text();
|
||||
alModel->refresh(adloader->aliens.values());
|
||||
ui->lvAliens->setModel((QAbstractItemModel * )alModel);
|
||||
ui->lvAliens->repaint();
|
||||
}
|
||||
|
||||
|
||||
@@ -184,17 +228,22 @@ void MainWindow::on_pbAlAdd_clicked()
|
||||
tbAlien al;
|
||||
al.id = i;
|
||||
al.name = tr("Alien");
|
||||
al.health = 1;
|
||||
al.prise = 0;
|
||||
al.score = 1;
|
||||
al.speed = 1;
|
||||
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);
|
||||
ui->lvAliens->selectionModel()->setCurrentIndex(ui->lvAliens->model()->index(index,0),QItemSelectionModel::ClearAndSelect);
|
||||
}
|
||||
|
||||
|
||||
void MainWindow::on_pbAlDel_clicked()
|
||||
{
|
||||
if (adloader->aliens.size() < 2) return;
|
||||
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));
|
||||
@@ -208,7 +257,7 @@ void MainWindow::on_pbAlDel_clicked()
|
||||
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);
|
||||
ui->lvAliens->selectionModel()->setCurrentIndex(ui->lvAliens->model()->index(0,0),QItemSelectionModel::ClearAndSelect);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -284,18 +333,24 @@ void MainWindow::on_pbTwAdd_clicked()
|
||||
tbTower tw;
|
||||
tw.id = i;
|
||||
tw.name = tr("Tower");
|
||||
tw.splashId = adloader->splashes.keys().at(0);
|
||||
tw.buildTime = 1;
|
||||
tw.cost = 1;
|
||||
tw.radius = 1;
|
||||
tw.reload = 1;
|
||||
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);
|
||||
ui->lvTowers->selectionModel()->setCurrentIndex(ui->lvTowers->model()->index(index,0),QItemSelectionModel::ClearAndSelect);
|
||||
}
|
||||
|
||||
|
||||
void MainWindow::on_pbTwDel_clicked()
|
||||
{
|
||||
QMessageBox msgBox;
|
||||
if (adloader->towers.size() < 2) return;
|
||||
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?"));
|
||||
@@ -308,7 +363,7 @@ void MainWindow::on_pbTwDel_clicked()
|
||||
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);
|
||||
ui->lvTowers->selectionModel()->setCurrentIndex(ui->lvTowers->model()->index(0,0),QItemSelectionModel::ClearAndSelect);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -350,20 +405,34 @@ void MainWindow::on_pbSplAdd_clicked()
|
||||
tbSplash spl;
|
||||
spl.id = i;
|
||||
spl.name = tr("Splash");
|
||||
spl.lifetime = 1;
|
||||
spl.speed = 1;
|
||||
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->lvSplashes->selectionModel()->setCurrentIndex(ui->lvSplashes->model()->index(index,0),QItemSelectionModel::ClearAndSelect);
|
||||
ui->cbTwSplash->setModel((QAbstractItemModel * )splModel);
|
||||
}
|
||||
|
||||
|
||||
void MainWindow::on_pbSlpDel_clicked()
|
||||
{
|
||||
if (adloader->splashes.size() < 2) return;
|
||||
QMessageBox msgBox;
|
||||
int id = adloader->splashes.keys().at(ui->lvSplashes->currentIndex().row());
|
||||
for (int i=0; i<adloader->towers.size(); i++)
|
||||
{
|
||||
if (adloader->towers.values().at(i).splashId == id)
|
||||
{
|
||||
msgBox.setText(tr("You can not delete splash %1 id=%2").arg(adloader->splashes.value(id).name).arg(id));
|
||||
msgBox.setInformativeText(tr("It used by tower %1").arg(adloader->towers.values().at(i).name));
|
||||
msgBox.setStandardButtons(QMessageBox::Ok);
|
||||
msgBox.exec();
|
||||
return;
|
||||
}
|
||||
}
|
||||
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);
|
||||
@@ -375,7 +444,15 @@ void MainWindow::on_pbSlpDel_clicked()
|
||||
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->lvSplashes->selectionModel()->setCurrentIndex(ui->lvSplashes->model()->index(0,0),QItemSelectionModel::ClearAndSelect);
|
||||
ui->cbTwSplash->setModel((QAbstractItemModel * )splModel);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void MainWindow::on_pushButton_clicked()
|
||||
{
|
||||
int splIndex = adloader->splashes.keys().indexOf(adloader->towers.values().at(ui->lvTowers->currentIndex().row()).splashId);
|
||||
ui->lvSplashes->selectionModel()->setCurrentIndex(ui->lvSplashes->model()->index(splIndex,0),QItemSelectionModel::ClearAndSelect);
|
||||
ui->tabWidget->setCurrentWidget(ui->tabSplashes);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user