QElectroTech 0.200.1-dev
Loading...
Searching...
No Matches
freeterminalmodel.h
Go to the documentation of this file.
1/*
2 Copyright 2006-2026 The QElectroTech Team
3 This file is part of QElectroTech.
4
5 QElectroTech is free software: you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation, either version 2 of the License, or
8 (at your option) any later version.
9
10 QElectroTech is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
17*/
18#ifndef FREETERMINALMODEL_H
19#define FREETERMINALMODEL_H
20
21#include <QAbstractTableModel>
22#include <QPointer>
23#include <QStyledItemDelegate>
24
25#include "modelTerminalData.h"
26#include "../../qetproject.h"
27
28class RealTerminal;
29
33class FreeTerminalModel : public QAbstractTableModel
34{
35 public:
36 enum Column {
37 Label = 0,
38 XRef = 1,
39 Type = 2,
41 Led = 4,
43 };
44
45 static FreeTerminalModel::Column columnTypeForIndex(const QModelIndex &index);
46 Q_OBJECT
47
48 public:
49 explicit FreeTerminalModel(QETProject *project, QObject *parent = nullptr);
50 void setProject(QETProject *project);
51
52 int rowCount(const QModelIndex &parent) const override;
53 int columnCount(const QModelIndex &parent) const override;
54 QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
55 bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole) override;
56 QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override;
57 Qt::ItemFlags flags(const QModelIndex &index) const override;
58
59 void clear();
60 QVector<modelRealTerminalData> modifiedModelRealTerminalData() const;
61 modelRealTerminalData dataAtRow(int row) const;
62 QVector<QSharedPointer<RealTerminal>> realTerminalForIndex(const QModelIndexList &index_list) const;
63
64 private:
65 void fillTerminalVector();
66
67 private:
68 QPointer<QETProject> m_project;
69 QVector<QSharedPointer<RealTerminal>> m_terminal_vector;
70 QVector<modelRealTerminalData> m_real_t_data;
71 QHash<QSharedPointer<RealTerminal>, QVector<bool>> m_modified_cell;
72};
73
74class FreeTerminalModelDelegate : public QStyledItemDelegate
75{
76 Q_OBJECT
77
78 public:
79 FreeTerminalModelDelegate(QObject *parent = nullptr);
80
81 QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const override;
82 void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const override;
83};
84
85#endif // FREETERMINALMODEL_H
FreeTerminalModelDelegate(QObject *parent=nullptr)
Definition freeterminalmodel.cpp:350
void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const override
Definition freeterminalmodel.cpp:380
QWidget * createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const override
Definition freeterminalmodel.cpp:354
void fillTerminalVector()
FreeTerminalModel::fillTerminalVector.
Definition freeterminalmodel.cpp:326
QVariant headerData(int section, Qt::Orientation orientation, int role=Qt::DisplayRole) const override
FreeTerminalModel::headerData.
Definition freeterminalmodel.cpp:220
QVector< modelRealTerminalData > m_real_t_data
Definition freeterminalmodel.h:70
void setProject(QETProject *project)
FreeTerminalModel::setProject Set @project as project handled by this model. If a previous project wa...
Definition freeterminalmodel.cpp:73
QVector< modelRealTerminalData > modifiedModelRealTerminalData() const
FreeTerminalModel::modifiedModelRealTerminalData.
Definition freeterminalmodel.cpp:272
modelRealTerminalData dataAtRow(int row) const
FreeTerminalModel::dataAtRow.
Definition freeterminalmodel.cpp:290
QVariant data(const QModelIndex &index, int role=Qt::DisplayRole) const override
FreeTerminalModel::data.
Definition freeterminalmodel.cpp:112
QHash< QSharedPointer< RealTerminal >, QVector< bool > > m_modified_cell
Definition freeterminalmodel.h:71
static FreeTerminalModel::Column columnTypeForIndex(const QModelIndex &index)
Definition freeterminalmodel.cpp:37
QVector< QSharedPointer< RealTerminal > > realTerminalForIndex(const QModelIndexList &index_list) const
FreeTerminalModel::realTerminalForIndex.
Definition freeterminalmodel.cpp:304
Column
Definition freeterminalmodel.h:36
@ Type
Definition freeterminalmodel.h:39
@ Led
Definition freeterminalmodel.h:41
@ Invalid
Definition freeterminalmodel.h:42
@ Label
Definition freeterminalmodel.h:37
@ Function
Definition freeterminalmodel.h:40
@ XRef
Definition freeterminalmodel.h:38
FreeTerminalModel(QETProject *project, QObject *parent=nullptr)
FreeTerminalModel::FreeTerminalModel.
Definition freeterminalmodel.cpp:58
QPointer< QETProject > m_project
Definition freeterminalmodel.h:68
Qt::ItemFlags flags(const QModelIndex &index) const override
Definition freeterminalmodel.cpp:240
int columnCount(const QModelIndex &parent) const override
FreeTerminalModel::columnCount.
Definition freeterminalmodel.cpp:100
bool setData(const QModelIndex &index, const QVariant &value, int role=Qt::EditRole) override
Definition freeterminalmodel.cpp:155
QVector< QSharedPointer< RealTerminal > > m_terminal_vector
Definition freeterminalmodel.h:69
void clear()
FreeTerminalModel::clear Clear the model and set it as the current state of the project.
Definition freeterminalmodel.cpp:258
int rowCount(const QModelIndex &parent) const override
FreeTerminalModel::rowCount.
Definition freeterminalmodel.cpp:89
Definition qetproject.h:77
The RealTerminal class Represent a real terminal. A real terminal can be a drawn terminal in a folio ...
Definition realterminal.h:43
Definition modelTerminalData.h:26