ARRka  1.05
mainwindow.cpp
Idź do dokumentacji tego pliku.
1 
8 #include "inc/mainwindow.h"
9 #include "ui_mainwindow.h"
10 #include <QMessageBox>
11 #include <QGraphicsView>
12 #include <QMessageBox>
13 #include <QTextStream>
14 #include <QDebug>
15 
16 MainWindow::MainWindow(QWidget *parent) :
17  QMainWindow(parent),
18  ui(new Ui::MainWindow)
19 {
20  ui->setupUi(this);
21 
22  _controller = new SerialPortReader(this);
24  _plots = new PlotsWindow(this);
25 
26  //połączenia dla gry
27  connect(ui->game,SIGNAL(changeDeficit(int)),ui->lcdDeficit,SLOT(display(int)));
28  connect(ui->game,SIGNAL(changeECTS(int)),ui->lcdECTS,SLOT(display(int)));
29  connect(ui->game,SIGNAL(changeTerm(int)),ui->lcdTerm,SLOT(display(int)));
30  connect(ui->game,SIGNAL(changeDeansLeave(int)),ui->lcdDeansLeave,SLOT(display(int)));
31  connect(ui->game,SIGNAL(closeGame()),this,SLOT(onGameCloseGame()));
32  connect(ui->game,SIGNAL(changeButtonToStart()),this,SLOT(onGameChangeButtonToStart()));
33  connect(this,SIGNAL(stopGame()),ui->game,SLOT(on_stopGame_clicked()));
34  connect(this,SIGNAL(startGame()),ui->game,SLOT(on_startGame_clicked()));
35  connect(this,SIGNAL(inicializeNewGame()),ui->game,SLOT(on_MainWindow_inicializeNewGame()));
36 
37  //połączenia dla okna ustawień
38  connect(_cWindow,SIGNAL(connectToSerial()),_controller,SLOT(openSerialPort()));
39  connect(_cWindow,SIGNAL(disconnectFromSerial()),_controller,SLOT(closeSerialPort()));
40 
41  //połączenia dla kontrolera
42  connect(_controller,SIGNAL(portOpened()),this,SLOT(onSerialPortOpened()));
43  connect(_controller,SIGNAL(portClosed()),this,SLOT(onSerialPortClosed()));
44  connect(_controller,SIGNAL(portError(QString)),this,SLOT(onSerialPortError(QString)));
45  connect(_controller,SIGNAL(newData(rawData)),ui->game,SLOT(newDataArrived(rawData)));
46 
47  //połączenia dla wykresów
48  connect(_controller,SIGNAL(newData(rawData)),_plots,SLOT(onControllerNewData(rawData)));
49 }
50 
52 {
53  delete _controller;
54  delete _plots;
55  delete _cWindow;
56  delete ui;
57 }
58 
60 {
61  qApp->exit();
62 }
63 
65 {
66  if (_controller->getPortOpened()) { //jeśli otwarto port
67  ui->game->setGameStarted(!ui->game->getGameStarted());
68  if (ui->game->getGameStarted()) {
69  emit startGame();
70  ui->start_stop->setText(tr("PAUZA"));
71  }
72  else {
73  emit stopGame();
74  ui->start_stop->setText(tr("START"));
75  QMessageBox::information(this,tr("Informacja"),tr("Zatrzymano grę"));
76  }
77  } else { //jesli nie nawiązano połączenia
78  QMessageBox::warning(this, tr("Brak połączenia"), tr("Najpierw proszę połączyć się z kontrolerem."));
79  }
80 }
81 
82 
84 {
85  if (ui->game->getGameStarted()) { //jesli gra jest wystartowana
86  emit stopGame();
87  }
88  emit inicializeNewGame();
89 }
90 
92 {
93  qApp->exit();
94 }
95 
97 {
98  ui->start_stop->setText(tr("START"));
99 }
100 
102 {
103  QMessageBox::information(this, tr("Połączono"), tr("Poprawnie otwarto port"));
104 }
105 
107 {
108  QMessageBox::information(this, tr("Rozłączono"), tr("Zamknięto port"));
109 }
110 
111 void MainWindow::onSerialPortError(QString error)
112 {
113  QMessageBox::critical(this, tr("Błąd krytyczny"), error);
114 }
115 
117 {
118  if (ui->game->getGameStarted()) { //jesli gra jest wystartowana
119  emit stopGame();
120  }
121  emit inicializeNewGame();
122 }
123 
125 {
127 }
128 
130 {
131  emit stopGame();
132  ui->start_stop->setText(tr("START"));
134 }
135 
137 {
138  if (ui->game->getGameStarted()) {
139  emit stopGame();
140  ui->start_stop->setText(tr("START"));
141  }
142  _cWindow->update();
143  _cWindow->show();
144 }
145 
147 {
148  _plots->show();
149 }
void on_newGameButton_clicked()
Reaguje na naciśniecie przycisku "Nowa gra" na oknie głównym.
Definition: mainwindow.cpp:83
void stopGame()
Pauza gry.
bool getPortOpened()
Zwraca wartość flagi otwarcia portu.
Definicja przestrzeni nazw interfejsu użytkownika.
void on_actionNowa_gra_triggered()
Reaguje na naciśnięcie "Nowa gra" w górnym menu.
Definition: mainwindow.cpp:116
Modeluje pojęcie czytnika danych z poru szeregowego.
~MainWindow()
Desktrutor klasy MainWindow.
Definition: mainwindow.cpp:51
QSettings * serialSettings()
Dostęp do ustawień portu szeregowego.
SerialPortReader * _controller
Uchwyt do obsługi portu szeregowego.
Definition: mainwindow.h:180
void onGameCloseGame()
Obsługuje koniec gry wysłany przez obiekt klasy Game.
Definition: mainwindow.cpp:91
void on_actionZamknij_triggered()
Obsługa kliknięcia "Zamknij" w menu.
Definition: mainwindow.cpp:59
Surowe dane otrzymane z kontrolera (płytki)
Definition: memsdata.h:17
Klasa ControllerWindow.
void closeSerialPort()
Zamyka port szeregowy.
void onSerialPortOpened()
Wyświetla kominikat o poprawnym otwarciu portu szeregowego.
Definition: mainwindow.cpp:101
Definicja klasy MainWindow.
void on_start_stop_clicked()
Obsługuje naciśnięcie przycisku START/PAUZA.
Definition: mainwindow.cpp:64
Ui::MainWindow * ui
Interfejs okna.
Definition: mainwindow.h:168
void update()
Aktualizuje stan okna ControllerWindow.
void openSerialPort()
Otwiera port szeregowy.
void onSerialPortError(QString error)
Wyświetla komunikat błędu portu szeregowego.
Definition: mainwindow.cpp:111
MainWindow(QWidget *parent=nullptr)
Kontruktor klasy MainWindow.
Definition: mainwindow.cpp:16
Modeluje klasę PlotsWindow - okna z wykresami.
Definition: plotswindow.h:26
void on_actionRoz_cz_triggered()
Reaguje na naciśnięcie "Rozłącz w górnym menu".
Definition: mainwindow.cpp:129
ControllerWindow * _cWindow
Uchwyt do okna kontrolera.
Definition: mainwindow.h:174
void onGameChangeButtonToStart()
Zmienia napis przycisku START/PAUZA na START.
Definition: mainwindow.cpp:96
void on_actionPoka_triggered()
Obsługuje naciśnięcie przycisku pokaż w górnym menu głównym.
Definition: mainwindow.cpp:146
void inicializeNewGame()
Inicjalizacja nowej gry.
void startGame()
Start gry.
Modeluje pojęcie okna głównego.
Definition: mainwindow.h:36
PlotsWindow * _plots
Uchwyt do okna z wykresami.
Definition: mainwindow.h:186
void on_actionPo_cz_triggered()
Reaguje na naciśnięcie "Połącz" w górnym menu.
Definition: mainwindow.cpp:124
void on_actionUstawienia_triggered()
Odpowiada na naciśnięcie przycisku ustawień w głownym menu.
Definition: mainwindow.cpp:136
void onSerialPortClosed()
Wyświetla kominikat o poprawnym zamknięciu portu szeregowego.
Definition: mainwindow.cpp:106