From b0bbddfe5b054eb9d40fa8b12d9f5bf86dd6dcee Mon Sep 17 00:00:00 2001 From: "Steinar H. Gunderson" Date: Mon, 1 May 2023 17:05:33 +0200 Subject: [PATCH] Move EventsModel into the MainWindow constructor. --- main.cpp | 29 ++++++++++++----------------- mainwindow.h | 5 ++--- 2 files changed, 14 insertions(+), 20 deletions(-) diff --git a/main.cpp b/main.cpp index 0f66603..b65895d 100644 --- a/main.cpp +++ b/main.cpp @@ -30,7 +30,7 @@ string format_timestamp(uint64_t pos) return buf; } -MainWindow::MainWindow() +MainWindow::MainWindow(EventsModel *events) : events(events) { player = new QMediaPlayer; //player->setSource(QUrl::fromLocalFile("/home/sesse/dev/stats/ultimate.mkv")); @@ -40,6 +40,12 @@ MainWindow::MainWindow() ui = new Ui::MainWindow; ui->setupUi(this); + ui->event_view->setModel(events); + connect(ui->event_view->selectionModel(), &QItemSelectionModel::currentRowChanged, + [this, events](const QModelIndex ¤t, const QModelIndex &previous) { + player->setPosition(events->get_time(current.row())); + }); + connect(player, &QMediaPlayer::positionChanged, [this](uint64_t pos) { position_changed(pos); }); @@ -107,16 +113,6 @@ void MainWindow::position_changed(uint64_t pos) update_status(); } -void MainWindow::setModel(EventsModel *model) -{ - ui->event_view->setModel(model); - this->model = model; - connect(ui->event_view->selectionModel(), &QItemSelectionModel::currentRowChanged, - [this, model](const QModelIndex ¤t, const QModelIndex &previous) { - player->setPosition(model->get_time(current.row())); - }); -} - void MainWindow::seek(int64_t delta_ms) { int64_t current_pos = buffered_seek ? *buffered_seek : player->position(); @@ -131,7 +127,7 @@ void MainWindow::seek(int64_t delta_ms) void MainWindow::insert_event(int button_id) { ui->event_view->selectionModel()->blockSignals(true); - ui->event_view->selectRow(model->insert_event(player->position(), button_id)); + ui->event_view->selectRow(events->insert_event(player->position(), button_id)); ui->event_view->selectionModel()->blockSignals(false); } @@ -142,7 +138,7 @@ void MainWindow::set_current_event_type(const string &type) return; } int row = select->selectedRows().front().row(); // Should only be one, due to our selection behavior. - model->set_event_type(row, type); + events->set_event_type(row, type); update_status(); } @@ -154,14 +150,14 @@ void MainWindow::delete_current_event() } int row = select->selectedRows().front().row(); // Should only be one, due to our selection behavior. ui->event_view->selectionModel()->blockSignals(true); - model->delete_event(row); + events->delete_event(row); ui->event_view->selectionModel()->blockSignals(false); update_status(); } void MainWindow::update_status() { - EventsModel::Status s = model->get_status_at(player->position()); + EventsModel::Status s = events->get_status_at(player->position()); char buf[256]; snprintf(buf, sizeof(buf), "%d–%d | %s | %d passes, %d sec possession", s.our_score, s.their_score, s.offense ? "offense" : "defense", s.num_passes, s.possession_sec); @@ -195,8 +191,7 @@ int main(int argc, char *argv[]) QApplication app(argc, argv); sqlite3 *db = open_db("ultimate.db"); - MainWindow mainWindow; - mainWindow.setModel(new EventsModel(db)); + MainWindow mainWindow(new EventsModel(db)); mainWindow.resize(QSize(1280, 720)); mainWindow.show(); diff --git a/mainwindow.h b/mainwindow.h index 1f4f29c..a51b88b 100644 --- a/mainwindow.h +++ b/mainwindow.h @@ -12,8 +12,7 @@ class MainWindow : public QMainWindow Q_OBJECT public: - MainWindow(); - void setModel(EventsModel *model); + MainWindow(EventsModel *events); private: void position_changed(uint64_t pos); @@ -24,7 +23,7 @@ private: void update_status(); Ui::MainWindow *ui; - EventsModel *model; + EventsModel *events; bool seeking = false; bool playing = true; std::optional buffered_seek; -- 2.39.2