From: Steinar H. Gunderson Date: Wed, 3 May 2023 16:25:52 +0000 (+0200) Subject: Show gender (optional free-form field) in the player list. X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=e1b3fc3c35cc286bb2c1d7d215c0185fb431b4f7;p=pkanalytics Show gender (optional free-form field) in the player list. --- diff --git a/main.cpp b/main.cpp index 611e6c1..d9e6058 100644 --- a/main.cpp +++ b/main.cpp @@ -56,6 +56,9 @@ MainWindow::MainWindow(EventsModel *events, PlayersModel *players) : events(even }); ui->player_view->setModel(players); + ui->player_view->setColumnWidth(0, 30); + ui->player_view->setColumnWidth(1, 20); + ui->player_view->horizontalHeader()->setStretchLastSection(true); connect(video, &QMediaPlayer::positionChanged, [this](uint64_t pos) { position_changed(pos); @@ -429,7 +432,7 @@ sqlite3 *open_db(const char *filename) } sqlite3_exec(db, R"( - CREATE TABLE IF NOT EXISTS player (player INTEGER PRIMARY KEY, number VARCHAR, name VARCHAR); + CREATE TABLE IF NOT EXISTS player (player INTEGER PRIMARY KEY, number VARCHAR, name VARCHAR, gender VARCHAR(1)); )", nullptr, nullptr, nullptr); // Ignore errors. sqlite3_exec(db, R"( diff --git a/players.cpp b/players.cpp index af33df0..21e9bdf 100644 --- a/players.cpp +++ b/players.cpp @@ -22,6 +22,8 @@ QVariant PlayersModel::headerData(int section, Qt::Orientation orientation, int if (section == 0) { return "#"; } else if (section == 1) { + return ""; // Gender + } else if (section == 2) { return "Name"; } else { return QVariant(); @@ -39,6 +41,8 @@ QVariant PlayersModel::data(const QModelIndex &index, int role) const if (index.column() == 0) { return QString::fromUtf8(players[index.row()].number); } else if (index.column() == 1) { + return QString::fromUtf8(players[index.row()].gender); + } else if (index.column() == 2) { return QString::fromUtf8(players[index.row()].name); } return QVariant(); @@ -56,7 +60,7 @@ void PlayersModel::load_data() // Read the players. sqlite3_stmt *stmt; - int ret = sqlite3_prepare_v2(db, "SELECT player, number, name FROM player ORDER BY (number+0), number", -1, &stmt, 0); + int ret = sqlite3_prepare_v2(db, "SELECT player, number, name, gender FROM player ORDER BY (number+0), number", -1, &stmt, 0); if (ret != SQLITE_OK) { fprintf(stderr, "SELECT prepare: %s\n", sqlite3_errmsg(db)); abort(); @@ -67,7 +71,8 @@ void PlayersModel::load_data() Player p; p.player_id = sqlite3_column_int(stmt, 0); p.number = (const char *)sqlite3_column_text(stmt, 1); - p.name = (const char *) sqlite3_column_text(stmt, 2); + p.name = (const char *)sqlite3_column_text(stmt, 2); + p.gender = (const char *)sqlite3_column_text(stmt, 3); players.push_back(p); } else if (ret == SQLITE_DONE) { break; diff --git a/players.h b/players.h index bea4562..a8940ff 100644 --- a/players.h +++ b/players.h @@ -17,7 +17,7 @@ public: } int columnCount(const QModelIndex &column) const override { - return 2; + return 3; } QVariant headerData(int section, Qt::Orientation orientation, int role) const override; QVariant data(const QModelIndex &index, int role) const override; @@ -32,6 +32,7 @@ private: int player_id; std::string number; std::string name; + std::string gender; }; std::vector players;