#include <QMainWindow>
#include <QApplication>
#include <stdint.h>
+#include <sqlite3.h>
#include <optional>
#include "ui_mainwindow.h"
class EventsModel;
class PlayersModel;
+class FormationsModel;
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
- MainWindow(EventsModel *events, PlayersModel *players);
+ MainWindow(EventsModel *events, PlayersModel *players,
+ FormationsModel *offensive_formations, FormationsModel *defensive_formations,
+ sqlite3 *db, int match_id);
+ ~MainWindow() {
+ if (ui && ui->video) {
+ ui->video->stop();
+ }
+ }
private:
void position_changed(uint64_t pos);
void seek(int64_t delta_ms);
- void insert_event(int button_id);
+ void insert_player_event(int button_id);
+ void insert_noplayer_event(const std::string &type);
void set_current_event_type(const std::string &type);
+ void insert_or_change_formation(bool offense);
void delete_current_event();
void make_substitution();
- void update_status();
+ void formation_double_clicked(bool offense, unsigned row);
+
+ void update_ui_from_time(uint64_t t);
+ void update_status(uint64_t t);
+ void update_player_buttons(uint64_t t);
+ void update_action_buttons(uint64_t t);
Ui::MainWindow *ui;
EventsModel *events;
PlayersModel *players;
+ FormationsModel *offensive_formations;
+ FormationsModel *defensive_formations;
bool seeking = false;
- bool playing = true;
+ std::atomic<bool> playing{true};
std::optional<uint64_t> buffered_seek;
- QMediaPlayer *video;
+ sqlite3 *db; // TODO: Check threading
+ int match_id;
};