-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathTrackedTrajectory.cpp
More file actions
91 lines (78 loc) · 2.33 KB
/
Copy pathTrackedTrajectory.cpp
File metadata and controls
91 lines (78 loc) · 2.33 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
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
#include "TrackedTrajectory.h"
#include "QDebug"
#include "TrackedElement.h"
TrackedTrajectory::TrackedTrajectory(QObject* parent, QString name)
: IModelTrackedTrajectory(parent)
, name(name)
{
setFixed(false);
setValid(true);
}
void TrackedTrajectory::operate()
{
qDebug() << "Printing all TrackedElements in TrackedObject " << name;
qDebug() << "========================= Begin ==========================";
for (int i = 0; i < _TrackedComponents.size(); ++i) {
dynamic_cast<TrackedElement*>(_TrackedComponents.at(i))->operate();
}
qDebug() << "======================== End =========================";
}
void TrackedTrajectory::add(IModelTrackedComponent* comp, int pos)
{
if (pos < 0) {
_TrackedComponents.append(comp);
} else if (_TrackedComponents.size() <= pos) {
while (_TrackedComponents.size() < pos)
_TrackedComponents.append(0);
_TrackedComponents.append(comp);
} else {
_TrackedComponents[pos] = comp;
}
}
bool TrackedTrajectory::remove(IModelTrackedComponent* comp)
{
return _TrackedComponents.removeOne(
comp); // Do not actually remove, just invalidate / replace by dummy
}
void TrackedTrajectory::clear()
{
foreach (IModelTrackedComponent* el, _TrackedComponents) {
if (dynamic_cast<IModelTrackedTrajectory*>(el))
dynamic_cast<IModelTrackedTrajectory*>(el)->clear();
}
_TrackedComponents.clear();
}
IModelTrackedComponent* TrackedTrajectory::getChild(int index)
{
return (_TrackedComponents.size() > index ? _TrackedComponents.at(index)
: nullptr);
}
IModelTrackedComponent* TrackedTrajectory::getLastChild()
{
return _TrackedComponents.at(_TrackedComponents.size() - 1);
}
IModelTrackedComponent* TrackedTrajectory::getValidChild(int index)
{
int c = 0;
foreach (IModelTrackedComponent* el, _TrackedComponents) {
if (el) {
if (c == index && el->getValid())
return el;
c += el->getValid() ? 1 : 0;
}
}
return nullptr;
}
int TrackedTrajectory::size()
{
return _TrackedComponents.size();
}
int TrackedTrajectory::validCount()
{
int c = 0;
foreach (IModelTrackedComponent* el, _TrackedComponents) {
if (el)
c += el->getValid() ? 1 : 0;
}
return c;
}