src/platform/qt/BattleChipModel.h (view raw)
1/* Copyright (c) 2013-2019 Jeffrey Pfau
2 *
3 * This Source Code Form is subject to the terms of the Mozilla Public
4 * License, v. 2.0. If a copy of the MPL was not distributed with this
5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6#pragma once
7
8#include <QAbstractListModel>
9#include <QPixmap>
10
11namespace QGBA {
12
13class BattleChipUpdater;
14
15class BattleChipModel : public QAbstractListModel {
16Q_OBJECT
17
18public:
19 BattleChipModel(QObject* parent = nullptr);
20
21 virtual int rowCount(const QModelIndex& parent = QModelIndex()) const override;
22 virtual QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override;
23 virtual Qt::ItemFlags flags(const QModelIndex& index) const override;
24 virtual bool removeRows(int row, int count, const QModelIndex& parent = QModelIndex()) override;
25 virtual Qt::DropActions supportedDropActions() const override;
26 virtual QStringList mimeTypes() const override;
27 virtual QMimeData* mimeData(const QModelIndexList& indices) const override;
28 virtual bool dropMimeData(const QMimeData* data, Qt::DropAction, int row, int column, const QModelIndex& parent) override;
29
30 int flavor() const { return m_flavor; }
31 QMap<int, QString> chipNames() const { return m_chipIdToName; }
32
33public slots:
34 void setFlavor(int);
35 void addChip(int id);
36 void removeChip(const QModelIndex&);
37 void setChips(QList<int> ids);
38 void clear();
39 void setScale(int);
40 void reloadAssets();
41
42private:
43 struct BattleChip {
44 int id;
45 QString name;
46 QPixmap icon;
47 };
48
49 BattleChip createChip(int id) const;
50
51 QMap<int, QString> m_chipIdToName;
52 int m_flavor;
53 int m_scale = 1;
54
55 QList<BattleChip> m_deck;
56};
57
58}