#include <QMainWindow>
#include <QApplication>
#include <stdint.h>
+#include <sqlite3.h>
#include <optional>
#include "ui_mainwindow.h"
-class QAbstractItemModel;
+class EventsModel;
+class PlayersModel;
+class FormationsModel;
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
- MainWindow();
- void setModel(QAbstractItemModel *model);
+ 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_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 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 *player;
+ sqlite3 *db; // TODO: Check threading
+ int match_id;
};