]> git.sesse.net Git - pkanalytics/commitdiff
Show gender (optional free-form field) in the player list.
authorSteinar H. Gunderson <sgunderson@bigfoot.com>
Wed, 3 May 2023 16:25:52 +0000 (18:25 +0200)
committerSteinar H. Gunderson <sgunderson@bigfoot.com>
Wed, 3 May 2023 16:25:52 +0000 (18:25 +0200)
main.cpp
players.cpp
players.h

index 611e6c1a4579918eccb373a9840e9de7a479b206..d9e605894ddee0f5d3a91934ff6df5a308b2cfce 100644 (file)
--- 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"(
index af33df0c91be2e439721e9c15970f3604e67ad87..21e9bdf7e4571c644b643ceaad7398d573de7288 100644 (file)
@@ -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;
index bea45621faea0489e20c22055fc088ba6eb6cb5b..a8940ff28683ff2e665b49bf67e7a2e5dc7563a3 100644 (file)
--- 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<Player> players;