blob: bddd9d9cd615e74189be3514cb1eda26149114fb (
plain)
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
73
74
75
76
77
78
79
|
#include "controllers/controllermappingtablemodel.h"
#include "moc_controllermappingtablemodel.cpp"
ControllerMappingTableModel::ControllerMappingTableModel(QObject* pParent)
: QAbstractTableModel(pParent),
m_pMidiMapping(nullptr) {
}
ControllerMappingTableModel::~ControllerMappingTableModel() {
}
void ControllerMappingTableModel::setMapping(std::shared_ptr<LegacyControllerMapping> pMapping) {
m_pMidiMapping = std::dynamic_pointer_cast<LegacyMidiControllerMapping>(pMapping);
// Only legacy MIDI mappings are supported
// TODO: prevent calling this code for unsupported mapping types?
if (!m_pMidiMapping) {
return;
}
// Notify the child class a mapping was loaded.
onMappingLoaded();
}
void ControllerMappingTableModel::cancel() {
// Apply mutates the mapping so to revert to the time just before the last
// apply, simply reload the mapping.
onMappingLoaded();
}
bool ControllerMappingTableModel::setHeaderData(int section,
Qt::Orientation orientation,
const QVariant& value,
int role) {
int numColumns = columnCount();
if (section < 0 || section >= numColumns) {
return false;
}
if (orientation != Qt::Horizontal) {
// We only care about horizontal headers.
return false;
}
if (m_headerInfo.size() != numColumns) {
m_headerInfo.resize(numColumns);
}
m_headerInfo[section][role] = value;
emit headerDataChanged(orientation, section, section);
return true;
}
QVariant ControllerMappingTableModel::headerData(int section,
Qt::Orientation orientation,
int role) const {
if (role == Qt::DisplayRole && orientation == Qt::Horizontal) {
QVariant headerValue = m_headerInfo.value(section).value(role);
if (!headerValue.isValid()) {
// Try EditRole if DisplayRole wasn't present
headerValue = m_headerInfo.value(section).value(Qt::EditRole);
}
if (!headerValue.isValid()) {
headerValue = QVariant(section).toString();
}
return headerValue;
}
return QAbstractTableModel::headerData(section, orientation, role);
}
Qt::ItemFlags ControllerMappingTableModel::flags(const QModelIndex& index) const {
if (!index.isValid()) {
return Qt::ItemIsEnabled;
}
Qt::ItemFlags defaultFlags = QAbstractTableModel::flags(index);
return defaultFlags | Qt::ItemIsEditable;
}
|