obliteration/gui/game_models.hpp

45 lines
1.2 KiB
C++
Raw Normal View History

2022-09-17 08:03:04 +00:00
#pragma once
#include <QAbstractListModel>
#include <QList>
2022-09-24 11:58:23 +00:00
#include <QPixmap>
2022-09-17 08:03:04 +00:00
class Game final : public QObject {
public:
2024-01-28 12:30:46 +00:00
Game(const QString &id, const QString &name, const QString &directory);
~Game() override;
2022-09-17 08:03:04 +00:00
public:
2024-01-28 12:30:46 +00:00
const QString &id() const { return m_id; }
const QString &name() const { return m_name; }
const QString &directory() const { return m_directory; }
2024-07-14 19:52:33 +00:00
const QPixmap &icon() const { return m_icon; }
2022-09-17 08:03:04 +00:00
private:
2024-01-28 12:30:46 +00:00
QString m_id;
QString m_name;
QString m_directory;
2024-07-14 19:52:33 +00:00
QPixmap m_icon;
2022-09-17 08:03:04 +00:00
};
class GameListModel final : public QAbstractListModel {
public:
2022-09-18 12:58:34 +00:00
GameListModel(QObject *parent = nullptr);
2024-07-14 19:52:33 +00:00
~GameListModel() override;
2022-09-17 08:03:04 +00:00
public:
void add(Game *game);
2022-09-18 02:57:50 +00:00
Game *get(int i) const { return m_items[i]; }
2022-09-18 12:58:34 +00:00
void clear();
2023-09-17 09:21:32 +00:00
void sort(int column, Qt::SortOrder order = Qt::AscendingOrder) override;
2022-09-17 08:03:04 +00:00
public:
2024-07-14 19:52:33 +00:00
int columnCount(const QModelIndex &parent = QModelIndex()) const override;
2022-09-17 08:03:04 +00:00
int rowCount(const QModelIndex &parent = QModelIndex()) const override;
2024-07-14 19:52:33 +00:00
QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override;
2022-09-17 08:03:04 +00:00
QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
private:
QList<Game *> m_items;
};