-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmainwindow.cpp
More file actions
97 lines (86 loc) · 3.26 KB
/
Copy pathmainwindow.cpp
File metadata and controls
97 lines (86 loc) · 3.26 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
// Group: Null
// Names: Andrew Sumsion, Dillon Otto, Sam Bennett, Saoud Aldowaish
// Course: CS3505
// Assignment: A8
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "startscreen.h"
#include "levelselect.h"
#include "selectionsort.h"
#include "mergesort.h"
#include "bogosort.h"
#include "insertionsort.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
stackedWidget = new QStackedWidget(this);
stackedWidget->addWidget(new StartScreen(this));
setCentralWidget(stackedWidget);
switchScreen(Screen::SCREEN_MENU);
}
/// @brief counter too keep track of user progress
/// @param level
void MainWindow::beatLevel(int level)
{
currentLevel = level+1;
}
/// @brief switching between different levels
/// @param screen
void MainWindow::switchScreen(Screen screen)
{
// remove the current screen, if it exists
if(stackedWidget->count() > 0)
{
QWidget* widget = stackedWidget->widget(0);
stackedWidget->removeWidget(widget);
widget->deleteLater();
}
// add the new selected screen
if(screen == Screen::SCREEN_MENU)
{
StartScreen* startScreen = new StartScreen(this);
stackedWidget->addWidget(startScreen);
connect(startScreen, &StartScreen::startSetScreen, this, &MainWindow::switchScreen);
}
else if(screen == Screen::SCREEN_LEVELS)
{
LevelSelect* levelSelect = new LevelSelect(this);
levelSelect->setCurrentLevel(currentLevel);
stackedWidget->addWidget(levelSelect);
connect(levelSelect, &LevelSelect::levelSetScreen, this, &MainWindow::switchScreen);
}
else if(screen == Screen::SCREEN_SELECTIONSORT || (screen == Screen::SCREEN_NEXT_LEVEL && currentLevel == 0))
{
SelectionSort* selectionSort = new SelectionSort(this);
stackedWidget->addWidget(selectionSort);
connect(selectionSort, &SelectionSort::selectionSetScreen, this, &MainWindow::switchScreen);
connect(selectionSort, &SelectionSort::selectionBeatLevel, this, &MainWindow::beatLevel);
}
else if(screen == Screen::SCREEN_MERGESORT || (screen == Screen::SCREEN_NEXT_LEVEL && currentLevel == 2))
{
MergeSort* mergeSort = new MergeSort(this);
stackedWidget->addWidget(mergeSort);
connect(mergeSort, &MergeSort::mergeSwitchScreen, this, &MainWindow::switchScreen);
connect(mergeSort, &MergeSort::mergeBeatLevel, this, &MainWindow::beatLevel);
}
else if(screen == Screen::SCREEN_BOGOSORT || (screen == Screen::SCREEN_NEXT_LEVEL && currentLevel == 3))
{
BogoSort* bogoSort = new BogoSort(this);
stackedWidget->addWidget(bogoSort);
connect(bogoSort, &BogoSort::bogoSetScreen, this, &MainWindow::switchScreen);
}
else if(screen == Screen::SCREEN_INSERTIONSORT || (screen == Screen::SCREEN_NEXT_LEVEL && currentLevel == 1))
{
InsertionSort* insertionSort = new InsertionSort(this);
stackedWidget->addWidget(insertionSort);
connect(insertionSort, &InsertionSort::insertionSetScreen, this, &MainWindow::switchScreen);
connect(insertionSort, &InsertionSort::insertionBeatLevel, this, &MainWindow::beatLevel);
}
}
MainWindow::~MainWindow()
{
delete stackedWidget;
delete ui;
}