all repos — mgba @ f35136f8814b74518a3a0ba2d39f3b70876f3f3d

mGBA Game Boy Advance Emulator

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}