]> git.sesse.net Git - pkanalytics/blob - players.h
Support filtering passes by thrower and receiver.
[pkanalytics] / players.h
1 #ifndef _PLAYERS_H
2 #define _PLAYERS_H 1
3
4 #include <sqlite3.h>
5 #include <QAbstractTableModel>
6 #include <string>
7 #include <vector>
8
9 class PlayersModel : public QAbstractTableModel
10 {
11 public:
12         PlayersModel(sqlite3 *db);
13
14         int rowCount(const QModelIndex &parent) const override
15         {
16                 return players.size();
17         }
18         int columnCount(const QModelIndex &column) const override
19         {
20                 return 3;
21         }
22         QVariant headerData(int section, Qt::Orientation orientation, int role) const override;
23         QVariant data(const QModelIndex &index, int role) const override;
24
25         int get_player_id(unsigned row) const { return players[row].player_id; }
26         std::string get_player_number(unsigned row) const { return players[row].number; }
27         std::string get_player_name(unsigned row) const { return players[row].name; }
28         std::string get_player_gender(unsigned row) const { return players[row].gender; }
29
30         std::string get_player_name_by_id(unsigned player_id);
31         std::string get_player_gender_by_id(unsigned player_id);
32         QModelIndex get_row_start_qt(unsigned row) const {
33                 return createIndex(row, 0);
34         }
35         QModelIndex get_row_end_qt(unsigned row) const {
36                 return createIndex(row, 2);
37         }
38
39         void edit_player(int player_id, const std::string &number, const std::string &gender, const std::string &name);
40
41 private:
42         struct Player {
43                 int player_id;
44                 std::string number;
45                 std::string name;
46                 std::string gender;
47         };
48         std::vector<Player> players;
49
50         sqlite3 *db;
51
52         std::vector<Player> load_data();
53 };
54
55 #endif  // !defined(_PLAYERS_H)