all repos — mgba @ d33f1d13926f4aa2afebad31775222cdd278411c

mGBA Game Boy Advance Emulator

src/platform/qt/LogConfigModel.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 <QAbstractItemModel>
 9
10#include "LogController.h"
11
12namespace QGBA {
13
14class ConfigController;
15
16class LogConfigModel : public QAbstractItemModel {
17Q_OBJECT
18
19public:
20	LogConfigModel(LogController*, QObject* parent = nullptr);
21
22	virtual QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override;
23	virtual bool setData(const QModelIndex& index, const QVariant& value, int role = Qt::EditRole) override;
24	virtual QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override;
25
26	virtual QModelIndex index(int row, int column, const QModelIndex& parent) const override;
27	virtual QModelIndex parent(const QModelIndex& index) const override;
28
29	virtual int columnCount(const QModelIndex& parent = QModelIndex()) const override;
30	virtual int rowCount(const QModelIndex& parent = QModelIndex()) const override;
31	virtual Qt::ItemFlags flags(const QModelIndex& index) const override;
32
33	LogController* logger() { return m_controller; }
34
35public slots:
36	void reset();
37	void save(ConfigController*);
38
39private:
40	struct ConfigSetting {
41		int index;
42		QString name;
43		const char* id;
44		int levels;
45
46		bool operator<(const ConfigSetting& other) const {
47			return name < other.name;
48		}
49	};
50
51	LogController* m_controller;
52
53	QList<ConfigSetting> m_cache;
54	int m_levels;
55};
56
57}