-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathVariableSequenceListModel.cpp
More file actions
66 lines (55 loc) · 1.91 KB
/
VariableSequenceListModel.cpp
File metadata and controls
66 lines (55 loc) · 1.91 KB
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
#include "VariableSequenceListModel.h"
#include "VariableSequence.h"
VariableSequenceListModel::VariableSequenceListModel(QList<VariableSequence*>* sequences, QObject *parent) :
QAbstractListModel(parent),
_variableSequences(sequences)
{}
int VariableSequenceListModel::rowCount(const QModelIndex& parent) const {
Q_UNUSED(parent);
return _variableSequences->length();
}
QVariant VariableSequenceListModel::data(const QModelIndex& index, int role) const {
if(!index.isValid() || index.row() < 0 || index.row() >= _variableSequences->length()) return QVariant();
switch(role) {
case Qt::DisplayRole:
return _variableSequences->at(index.row())->getName();
case Qt::EditRole:
return QVariant::fromValue<void*>((void*)_variableSequences->at(index.row()));
case Qt::UserRole:
return QVariant::fromValue<void*>((void*)_variableSequences->at(index.row())->getModel());
default:
return QVariant();
}
}
bool VariableSequenceListModel::setData(const QModelIndex& index, const QVariant& value, int role) {
VariableSequence* sequence;
switch(role) {
case Qt::EditRole:
case Qt::UserRole:
if(index.row() < 0 || index.row() >= _variableSequences->length()) return false;
sequence = (VariableSequence*)value.value<void*>();
(*_variableSequences)[index.row()] = sequence;
break;
}
QVector<int> roles;
roles << role;
emit dataChanged(index, index, roles);
return true;
}
bool VariableSequenceListModel::insertRows(int row, int count, const QModelIndex& parent) {
if(count <= 0) return true;
beginInsertRows(parent, row, row + count - 1);
while(count--) _variableSequences->insert(row, nullptr);
endInsertRows();
return true;
}
bool VariableSequenceListModel::removeRows(int row, int count, const QModelIndex& parent) {
Q_UNUSED(parent);
beginRemoveRows(QModelIndex(), row, row + count - 1);
while(count--) {
delete _variableSequences->at(row);
_variableSequences->removeAt(row);
}
endRemoveRows();
return true;
}