File indexing completed on 2024-05-12 04:39:43
0001 /* 0002 SPDX-FileCopyrightText: 2013 Vlas Puhov <vlas.puhov@mail.ru> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #ifndef MODELSMANAGER_H 0008 #define MODELSMANAGER_H 0009 0010 #include <QObject> 0011 #include <QString> 0012 #include <QVector> 0013 #include <QScopedPointer> 0014 0015 #include <KConfigGroup> 0016 0017 #include "registercontroller.h" 0018 0019 class QAbstractItemView; 0020 class QStandardItem; 0021 class QModelIndex; 0022 0023 namespace KDevMI { 0024 class Models; 0025 class IRegisterController; 0026 struct Register; 0027 struct RegistersGroup; 0028 class GroupsName; 0029 0030 class ModelsManager : public QObject 0031 { 0032 Q_OBJECT 0033 0034 public: 0035 explicit ModelsManager(QObject* parent = nullptr); 0036 0037 ~ModelsManager() override; 0038 0039 ///Adds new @p view with @p name, if not yet registered. 0040 ///All views removed after debug session ended. 0041 ///@return: Name of the new view. 0042 QString addView(QAbstractItemView* view); 0043 0044 void setController(IRegisterController* rc); 0045 0046 ///Sets @p format for the @p group, if format is valid. Does nothing otherwise. 0047 void setFormat(const QString& group, Format format); 0048 0049 ///Returns all supported formats for @p group. The first one is current. 0050 QVector<Format> formats(const QString& group) const; 0051 0052 ///Sets @p mode for the @p group, if mode is valid. Does nothing otherwise. 0053 void setMode(const QString& group, Mode mode); 0054 0055 ///Returns all supported modes for @p group. The first one is current. 0056 QVector<Mode> modes(const QString& group) const; 0057 0058 Q_SIGNALS: 0059 ///Emitted when a register in a model changed. Updated value should be send to the debugger. 0060 void registerChanged(const Register&); 0061 0062 public Q_SLOTS: 0063 void updateModelForGroup(const RegistersGroup& group); 0064 0065 ///Forcedly updates registers in @p group. 0066 void updateRegisters(const QString& group = QString()); 0067 0068 private: 0069 void save(const GroupsName&); 0070 void load(const GroupsName&); 0071 0072 private Q_SLOTS: 0073 void flagChanged(const QModelIndex&); 0074 0075 void itemChanged(QStandardItem*); 0076 0077 private: 0078 QScopedPointer<Models> m_models; 0079 0080 IRegisterController* m_controller = nullptr; 0081 0082 KConfigGroup m_config; 0083 }; 0084 0085 } // end of namespace KDevMI 0086 #endif // MODELSMANAGER_H