@@ -219,6 +219,7 @@ void MainWindow::resetGUI(){
219
219
ui->combo_Levels ->setCurrentIndex (0 );
220
220
ui->combo_RoomH ->setCurrentIndex (0 );
221
221
ui->combo_RoomW ->setCurrentIndex (0 );
222
+ ui->spin_TimeLimit ->setValue (0 );
222
223
timer.stop ();
223
224
ui->label_GenerationTime ->setText (" Current Generation Time: 00:00:00" );
224
225
display = true ;
@@ -259,23 +260,48 @@ void MainWindow::on_actionSave_As_triggered()
259
260
260
261
void MainWindow::rightClickMenu (const QPoint &pos){
261
262
QPoint PItem = ui->list_LevelSet ->mapToGlobal (pos);
262
- QMenu submenu;
263
- submenu.addAction (" Regenerate Level" );
264
- submenu.addAction (" Delete Level" );
265
- QAction* rightClickItem = submenu.exec (PItem);
266
- if (rightClickItem && rightClickItem->text ().contains (" Delete Level" )){
267
- QListWidgetItem* item = ui->list_LevelSet ->takeItem (ui->list_LevelSet ->indexAt (pos).row ());
268
- Generator.deleteLevel (item->data (Qt::UserRole).toInt ()+1 );
269
- for (int i = 0 ; i < ui->list_LevelSet ->count (); i++){
270
- ui->list_LevelSet ->item (i)->setData (Qt::UserRole, i);
271
- ui->list_LevelSet ->item (i)->setText (" Level " + QString::number (i+1 ));
263
+ if (ui->list_LevelSet ->indexAt (pos).row () >= 0 ){
264
+ QMenu submenu;
265
+ submenu.addAction (" Regenerate Level" );
266
+ submenu.addAction (" Delete Level" );
267
+ QAction* rightClickItem = submenu.exec (PItem);
268
+
269
+ if (rightClickItem && rightClickItem->text ().contains (" Delete Level" )){
270
+ QListWidgetItem* item = ui->list_LevelSet ->takeItem (ui->list_LevelSet ->indexAt (pos).row ());
271
+ if (item != NULL ){
272
+ int levelNum = item->data (Qt::UserRole).toInt ();
273
+ Generator.deleteLevel (levelNum);
274
+ vector<SokoGenerator::Level> levelSet = Generator.getLevels ();
275
+ for (int i = levelNum; i < ui->list_LevelSet ->count (); i++){
276
+ ui->list_LevelSet ->item (i)->setData (Qt::UserRole, i);
277
+
278
+ int millis = levelSet[i].generationTime % 1000 ;
279
+ int seconds = ((int )levelSet[i].generationTime / 1000 ) % 60 ;
280
+ int minutes = ((int )levelSet[i].generationTime / (1000 *60 )) % 60 ;
281
+ QString padMillis = QString (" %1" ).arg (millis, 3 , 10 , QChar (' 0' ));
282
+ QString padSeconds = QString (" %1" ).arg (seconds, 2 , 10 , QChar (' 0' ));
283
+ QString padMinutes = QString (" %1" ).arg (minutes, 2 , 10 , QChar (' 0' ));
284
+
285
+ ui->list_LevelSet ->item (i)->setText (" Level " + QString::number (i+1 ) + " - " + padMinutes + " :" + padSeconds + " :" + padMillis);
286
+ }
287
+ if (item->data (Qt::UserRole).toInt () == ui->list_LevelSet ->count ()){
288
+ ui->list_LevelSet ->setCurrentRow (ui->list_LevelSet ->count ()-1 );
289
+ }
290
+ else {
291
+ ui->list_LevelSet ->setCurrentRow (item->data (Qt::UserRole).toInt ());
292
+ }
293
+
294
+ delete item;
295
+ }
272
296
}
273
- ui->list_LevelSet ->setCurrentRow (item->data (Qt::UserRole).toInt ());
274
- delete item;
275
- }
276
- else if (rightClickItem && rightClickItem->text ().contains (" Regenerate Level" )){
277
- regenerateLevel (ui->list_LevelSet ->indexAt (pos).row ());
278
- displayLevel (ui->list_LevelSet ->indexAt (pos).row ());
297
+ else if (rightClickItem && rightClickItem->text ().contains (" Regenerate Level" )){
298
+ int row = ui->list_LevelSet ->indexAt (pos).row ();
299
+ if (row >= 0 ){
300
+ regenerateLevel (row);
301
+ displayLevel (row);
302
+ }
303
+ }
304
+
279
305
}
280
306
281
307
}
0 commit comments