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 12 namespace QGBA { 13 14 class ConfigController; 15 16 class LogConfigModel : public QAbstractItemModel { 17 Q_OBJECT 18 19 public: 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 logger()33 LogController* logger() { return m_controller; } 34 35 public slots: 36 void reset(); 37 void save(ConfigController*); 38 39 private: 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 } 58