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}