-
Notifications
You must be signed in to change notification settings - Fork 2
/
attackpillowmodel.cpp
107 lines (95 loc) · 3.69 KB
/
attackpillowmodel.cpp
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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* *
* Copyright (C) 2015 Simon Stuerz <stuerz.simon@gmail.com> *
* *
* This file is part of Monster Wars. *
* *
* Monster Wars is free software: you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation, version 3 of the License. *
* *
* Monster Wars is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with Monster Wars. If not, see <http://www.gnu.org/licenses/>. *
* *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
#include "attackpillowmodel.h"
#include "monster.h"
AttackPillowModel::AttackPillowModel(QObject *parent) :
QAbstractListModel(parent)
{
}
QList<AttackPillow *> AttackPillowModel::pillows()
{
return m_pillows;
}
int AttackPillowModel::rowCount(const QModelIndex &parent) const
{
Q_UNUSED(parent)
return m_pillows.count();
}
QVariant AttackPillowModel::data(const QModelIndex &index, int role) const
{
if (index.row() < 0 || index.row() >= m_pillows.count())
return QVariant();
AttackPillow *pillow = m_pillows.at(index.row());
if (role == ValueRole) {
return pillow->count();
} else if (role == ColorStringRole) {
return pillow->colorString();
} else if (role == SpeedRole) {
return pillow->speed();
} else if (role == IdRole) {
return pillow->id();
} else if (role == SourceXRole) {
return pillow->sourceMonster()->position().x();
} else if (role == SourceYRole) {
return pillow->sourceMonster()->position().y();
} else if (role == DestinationXRole) {
return pillow->destinationMonster()->position().x();
} else if (role == DestinationYRole) {
return pillow->destinationMonster()->position().y();
}
return QVariant();
}
void AttackPillowModel::addPillow(AttackPillow *pillow)
{
beginInsertRows(QModelIndex(), m_pillows.count(), m_pillows.count());
m_pillows.append(pillow);
emit pillowListChanged();
endInsertRows();
}
void AttackPillowModel::removePillow(AttackPillow *pillow)
{
beginRemoveRows(QModelIndex(), indexOf(pillow), indexOf(pillow));
m_pillows.removeAll(pillow);
emit pillowListChanged();
endRemoveRows();
}
void AttackPillowModel::clearModel()
{
beginResetModel();
m_pillows.clear();
endResetModel();
}
QHash<int, QByteArray> AttackPillowModel::roleNames() const
{
QHash<int, QByteArray> roles;
roles[ValueRole] = "value";
roles[ColorStringRole] = "colorString";
roles[SpeedRole] = "speed";
roles[IdRole] = "id";
roles[SourceXRole] = "sourceX";
roles[SourceYRole] = "sourceY";
roles[DestinationXRole] = "destinationX";
roles[DestinationYRole] = "destinationY";
return roles;
}
int AttackPillowModel::indexOf(AttackPillow *pillow)
{
return m_pillows.indexOf(pillow);
}