X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=stats.cpp;h=356c5f9b177b5fc0310366ba9797e2a6ede931bd;hb=2c80ef3ccb7232b605f0733535d2e579a4c8c759;hp=653c16bd78474fdc583c44b4791fa78b086707c9;hpb=fd286d4a7163cf2a54fb4e1f31cb6ee8c551c876;p=pkanalytics diff --git a/stats.cpp b/stats.cpp index 653c16b..356c5f9 100644 --- a/stats.cpp +++ b/stats.cpp @@ -46,6 +46,8 @@ public: QVariant headerData(int section, Qt::Orientation orientation, int role) const override; QVariant data(const QModelIndex &index, int role) const override; + int insert_event(uint64_t t, int player_id); + private: struct Player { int player_id; @@ -176,6 +178,26 @@ void EventsModel::refresh_if_needed() const //emit dataChanged(QModelIndex( } +int EventsModel::insert_event(uint64_t t, int player_id) +{ + auto it = lower_bound(events.begin(), events.end(), t, + [](const Event &e, uint64_t t) { return e.t < t; }); + int pos = distance(events.begin(), it); + beginInsertRows(QModelIndex(), pos, pos + 1); + + Event e; + e.t = t; + e.player_id = player_id; + e.type = "unknown"; + events.insert(events.begin() + pos, e); + + endInsertRows(); + + // FIXME sqlite + + return pos; +} + MainWindow::MainWindow() { player = new QMediaPlayer; @@ -223,11 +245,34 @@ MainWindow::MainWindow() // Needs to be set anew when we modify setText(), evidently. ui->play_pause->setShortcut(QCoreApplication::translate("MainWindow", "Space", nullptr)); }); + + connect(ui->player_1, &QPushButton::clicked, [this]() { + ui->event_view->selectRow(model->insert_event(player->position(), 1)); + }); + connect(ui->player_2, &QPushButton::clicked, [this]() { + ui->event_view->selectRow(model->insert_event(player->position(), 2)); + }); + connect(ui->player_3, &QPushButton::clicked, [this]() { + ui->event_view->selectRow(model->insert_event(player->position(), 3)); + }); + connect(ui->player_4, &QPushButton::clicked, [this]() { + ui->event_view->selectRow(model->insert_event(player->position(), 4)); + }); + connect(ui->player_5, &QPushButton::clicked, [this]() { + ui->event_view->selectRow(model->insert_event(player->position(), 5)); + }); + connect(ui->player_6, &QPushButton::clicked, [this]() { + ui->event_view->selectRow(model->insert_event(player->position(), 6)); + }); + connect(ui->player_7, &QPushButton::clicked, [this]() { + ui->event_view->selectRow(model->insert_event(player->position(), 7)); + }); } -void MainWindow::setModel(QAbstractItemModel *model) +void MainWindow::setModel(EventsModel *model) { ui->event_view->setModel(model); + this->model = model; } void MainWindow::seek(int64_t delta_ms)