-
Notifications
You must be signed in to change notification settings - Fork 4
/
LinkListModel.h
72 lines (60 loc) · 2.47 KB
/
LinkListModel.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#pragma once
#include <QAbstractListModel>
#include "Link.h"
class LinkListModel : public QAbstractListModel
{
Q_OBJECT
public:
enum Roles {
Uuid,
ConnectionStatus,
ControlType,
PortName,
Baudrate,
Parity,
LinkType,
Address,
SourcePort,
DestinationPort,
IsPinned,
IsHided,
IsNotAvailable
};
/*methods*/
explicit LinkListModel(QObject* parent = nullptr);
QVariant data(const QModelIndex& index, int role) const override;
QHash<int, QByteArray> roleNames() const override;
Q_INVOKABLE int rowCount(const QModelIndex& parent = QModelIndex()) const override;
int getSize() const;
void clear();
QList<QPair<QUuid, ::LinkType>> getOpenedUuids() const;
private:
Q_DISABLE_COPY(LinkListModel)
/*methods*/
void doAppendModify(QUuid uuid, bool connectionStatus, ::ControlType controlType, const QString& portName, int baudrate, bool parity,
::LinkType linkType, const QString& address, int sourcePort, int destinationPort, bool isPinned, bool isHided, bool isNotAvailable);
void doRemove(QUuid uuid);
/*data*/
QHash<int, QByteArray> roleNames_ {
{{LinkListModel::Uuid}, {"Uuid"}},
{{LinkListModel::ConnectionStatus}, {"ConnectionStatus"}},
{{LinkListModel::ControlType}, {"ControlType"}},
{{LinkListModel::PortName}, {"PortName"}},
{{LinkListModel::Baudrate}, {"Baudrate"}},
{{LinkListModel::Parity}, {"Parity"}},
{{LinkListModel::LinkType}, {"LinkType"}},
{{LinkListModel::Address}, {"Address"}},
{{LinkListModel::SourcePort}, {"SourcePort"}},
{{LinkListModel::DestinationPort}, {"DestinationPort"}},
{{LinkListModel::IsPinned}, {"IsPinned"}},
{{LinkListModel::IsHided}, {"IsHided"}},
{{LinkListModel::IsNotAvailable}, {"IsNotAvailable"}}
};
QHash<int, QVector<QVariant>> vectors_; // first - roleName, second - vec of vals
QHash<QUuid, int> index_; // first - uuid, second - row
int size_;
signals:
void appendModifyEvent(QUuid uuid, bool connectionStatus, ::ControlType controlType, const QString& portName, int baudrate, bool parity,
::LinkType linkType, const QString& address, int sourcePort, int destinationPort, bool isPinned, bool isHided, bool isNotAvailable);
void removeEvent(QUuid uuid);
};