Commit 25f07764423af70cf3f4daa2590969f8595613f6
1 parent
1dce31e3
Implementing the memorymodel
Showing
3 changed files
with
101 additions
and
0 deletions
src/CMakeLists.txt
| ... | ... | @@ -14,11 +14,13 @@ include(compiler) |
| 14 | 14 | set( SRC_LIST |
| 15 | 15 | ${CMAKE_CURRENT_SOURCE_DIR}/tablemodel/tablemodel.cpp |
| 16 | 16 | ${CMAKE_CURRENT_SOURCE_DIR}/tablemodel/modeldataitem.cpp |
| 17 | + ${CMAKE_CURRENT_SOURCE_DIR}/memorymodel/memorymodel.cpp | |
| 17 | 18 | ) |
| 18 | 19 | |
| 19 | 20 | include(qtmoc) |
| 20 | 21 | create_mocs( SRC_LIST MOC_LIST |
| 21 | 22 | ${CMAKE_CURRENT_SOURCE_DIR}/tablemodel/tablemodel.h |
| 23 | + ${CMAKE_CURRENT_SOURCE_DIR}/memorymodel/memorymodel.h | |
| 22 | 24 | ) |
| 23 | 25 | |
| 24 | 26 | link_directories( | ... | ... |
src/memorymodel/memorymodel.cpp
0 → 100644
| 1 | +#include "memorymodel.h" | |
| 2 | + | |
| 3 | +MemoryModel::MemoryModel(int segments, int registers_per_segment, QObject *parent) | |
| 4 | + : QAbstractItemModel(parent) | |
| 5 | + , m_memoryData() | |
| 6 | +{ | |
| 7 | + for(int nCount = 0; nCount < segments; nCount++) | |
| 8 | + { | |
| 9 | + m_memoryData.insert( nCount, QVector<uint16_t>(registers_per_segment, 0x00) ); | |
| 10 | + } | |
| 11 | +} | |
| 12 | + | |
| 13 | +int MemoryModel::columnCount(const QModelIndex &parent) const | |
| 14 | +{ | |
| 15 | + if(rowCount(parent) > 0) | |
| 16 | + { | |
| 17 | + return m_memoryData.value(0).count(); | |
| 18 | + } | |
| 19 | + return 0; | |
| 20 | +} | |
| 21 | + | |
| 22 | +QVariant MemoryModel::data(const QModelIndex &index, int role) const | |
| 23 | +{ | |
| 24 | + int segment = index.row(); | |
| 25 | + int reg = index.column(); | |
| 26 | + | |
| 27 | + switch(role) | |
| 28 | + { | |
| 29 | + case Qt::DisplayRole: | |
| 30 | + return QVariant(m_memoryData.value(segment).at(reg)); | |
| 31 | + | |
| 32 | + default: | |
| 33 | + return QVariant(); | |
| 34 | + } | |
| 35 | +} | |
| 36 | + | |
| 37 | +QVariant MemoryModel::headerData(int section, Qt::Orientation orientation, int role) const | |
| 38 | +{ | |
| 39 | + // Make sure we stay within the header boundaries... | |
| 40 | + // ColumnNames | |
| 41 | + if(role == Qt::DisplayRole && orientation == Qt::Horizontal && section < m_headers.size()) | |
| 42 | + { | |
| 43 | + return m_headers.at(section); | |
| 44 | + } | |
| 45 | + return QVariant(); | |
| 46 | +} | |
| 47 | + | |
| 48 | +QModelIndex MemoryModel::index(int row, int column, const QModelIndex &parent) const | |
| 49 | +{ | |
| 50 | + | |
| 51 | +} | |
| 52 | + | |
| 53 | +QModelIndex MemoryModel::parent(const QModelIndex &index) const | |
| 54 | +{ | |
| 55 | + Q_UNUSED(index) | |
| 56 | + return QModelIndex(); | |
| 57 | +} | |
| 58 | + | |
| 59 | +int MemoryModel::rowCount(const QModelIndex &parent) const | |
| 60 | +{ | |
| 61 | + return m_memoryData.count(); | |
| 62 | +} | |
| 63 | + | |
| 64 | +bool MemoryModel::setData(const QModelIndex &index, const QVariant &value, int role) | |
| 65 | +{ | |
| 66 | + | |
| 67 | +} | |
| 68 | + | |
| 69 | +bool MemoryModel::setHeaderData(int section, Qt::Orientation orientation, const QVariant &value, int role) | |
| 70 | +{ | |
| 71 | + | |
| 72 | +} | ... | ... |
src/memorymodel/memorymodel.h
0 → 100644
| 1 | +#pragma once | |
| 2 | + | |
| 3 | +#include <QAbstractItemModel> | |
| 4 | +#include <QVector> | |
| 5 | +#include <QHash> | |
| 6 | + | |
| 7 | +class MemoryModel : public QAbstractItemModel | |
| 8 | +{ | |
| 9 | + Q_OBJECT | |
| 10 | + | |
| 11 | +public: | |
| 12 | + explicit MemoryModel(int segments = 10, int registers_per_segment = 10, QObject *parent = nullptr); | |
| 13 | + virtual ~MemoryModel() override {} | |
| 14 | + | |
| 15 | + virtual int columnCount(const QModelIndex &parent = QModelIndex()) const override; | |
| 16 | + virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; | |
| 17 | + virtual QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override; | |
| 18 | + virtual QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const override; | |
| 19 | + virtual QModelIndex parent(const QModelIndex &index) const override; | |
| 20 | + virtual int rowCount(const QModelIndex &parent = QModelIndex()) const override; | |
| 21 | + virtual bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole) override; | |
| 22 | + virtual bool setHeaderData(int section, Qt::Orientation orientation, const QVariant &value, int role = Qt::EditRole) override; | |
| 23 | + | |
| 24 | +private: | |
| 25 | + QHash<int, QVector<uint16_t>> m_memoryData; | |
| 26 | + QStringList m_headers; | |
| 27 | +}; | ... | ... |