From: Steinar H. Gunderson Date: Mon, 1 May 2023 15:00:07 +0000 (+0200) Subject: Clean out the refresh-on-demand code from EventsModel. X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=190f35c8fc6fc135a8c94636245d2ac0f79e4ef5;p=pkanalytics Clean out the refresh-on-demand code from EventsModel. --- diff --git a/events.cpp b/events.cpp index 5752d82..4ce3e86 100644 --- a/events.cpp +++ b/events.cpp @@ -10,6 +10,11 @@ using namespace std; string format_timestamp(uint64_t pos); +EventsModel::EventsModel(sqlite3 *db) : db(db) +{ + load_data(); +} + QVariant EventsModel::headerData(int section, Qt::Orientation orientation, int role) const { if (role != Qt::DisplayRole) { @@ -33,13 +38,13 @@ QVariant EventsModel::data(const QModelIndex &index, int role) const if (role != Qt::DisplayRole) { return QVariant(); } - refresh_if_needed(); if (index.column() == 0) { return QString::fromUtf8(format_timestamp(events[index.row()].t)); } else if (index.column() == 1) { optional player_id = events[index.row()].player_id; if (player_id) { - const Player &p = players[*player_id]; + auto p_it = players.find(*player_id); + const Player &p = p_it->second; return QString::fromUtf8(p.name + " (" + p.number + ")"); } else { return QVariant(); @@ -50,15 +55,10 @@ QVariant EventsModel::data(const QModelIndex &index, int role) const return QVariant(); } -void EventsModel::refresh_if_needed() const +void EventsModel::load_data() { - if (!stale) { - return; - } - players.clear(); events.clear(); - stale = false; // Read the players. sqlite3_stmt *stmt; @@ -115,9 +115,6 @@ void EventsModel::refresh_if_needed() const fprintf(stderr, "SELECT finalize: %s\n", sqlite3_errmsg(db)); abort(); } - - // TODO what if data changes externally? - //emit dataChanged(QModelIndex( } unsigned EventsModel::insert_event(uint64_t t, int player_id) diff --git a/events.h b/events.h index 56fcbaf..910e2b9 100644 --- a/events.h +++ b/events.h @@ -11,11 +11,10 @@ class EventsModel : public QAbstractTableModel { public: - EventsModel(sqlite3 *db) : db(db) {} + EventsModel(sqlite3 *db); int rowCount(const QModelIndex &parent) const override { - refresh_if_needed(); return events.size(); } int columnCount(const QModelIndex &column) const override @@ -44,7 +43,7 @@ private: std::string number; std::string name; }; - mutable std::map players; + std::map players; struct Event { int event_id; @@ -52,12 +51,11 @@ private: std::optional player_id; std::string type; }; - mutable std::vector events; - mutable bool stale = true; + std::vector events; sqlite3 *db; - void refresh_if_needed() const; + void load_data(); }; #endif // !defined(_EVENTS_H)