-
Notifications
You must be signed in to change notification settings - Fork 71
/
Copy pathExternalObjectProxy.cpp
141 lines (117 loc) · 2.5 KB
/
ExternalObjectProxy.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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
#include "ExternalObjectProxy.h"
#include "TargetApplicationProxy.h"
ExternalObjectProxy::ExternalObjectProxy(TargetApplicationProxy* appProxy, int objectId)
: m_appProxy(appProxy)
, m_objectId(objectId)
, m_isLoaded(false)
, m_propertiesLoaded(false)
{
}
void ExternalObjectProxy::setLoaded(bool loaded)
{
m_isLoaded = loaded;
}
int ExternalObjectProxy::objectId() const
{
return m_objectId;
}
void ExternalObjectProxy::setClassName(const QString& className)
{
m_className = className;
}
void ExternalObjectProxy::setObjectName(const QString& objectName)
{
m_objectName = objectName;
}
void ExternalObjectProxy::addProperty(const Property& property)
{
bool found = false;
QMutableListIterator<Property> iter(m_properties);
while (iter.hasNext())
{
if (iter.next().name == property.name)
{
iter.remove();
}
}
m_properties << property;
}
void ExternalObjectProxy::setPropertiesLoaded(bool loaded)
{
m_propertiesLoaded = loaded;
}
void ExternalObjectProxy::setChildIds(const QList<int>& childIds)
{
m_childIds = childIds;
}
QString ExternalObjectProxy::className() const
{
doLoad();
return m_className;
}
QString ExternalObjectProxy::objectName() const
{
doLoad();
return m_objectName;
}
void ExternalObjectProxy::writeProperty(const QString& name, const QVariant& value)
{
doPropertyLoad();
Property updatedProperty;
QMutableListIterator<Property> iter(m_properties);
while (iter.hasNext())
{
Property& property = iter.next();
if (property.name == name)
{
property.value = value;
updatedProperty = property;
}
}
m_appProxy->updateProperty(m_objectId,updatedProperty);
}
QList<ObjectProxy::Pointer> ExternalObjectProxy::children()
{
doLoad();
QList<ObjectProxy::Pointer> result;
Q_FOREACH(int childId, m_childIds)
{
result << m_appProxy->fetchProxy(childId);
}
return result;
}
bool ExternalObjectProxy::doLoad() const
{
if (m_isLoaded)
{
return true;
}
return m_appProxy->fetchObject(const_cast<ExternalObjectProxy*>(this),false);
}
bool ExternalObjectProxy::doPropertyLoad() const
{
if (m_propertiesLoaded)
{
return true;
}
return m_appProxy->fetchObject(const_cast<ExternalObjectProxy*>(this),true);
}
QList<ObjectProxy::Property> ExternalObjectProxy::properties() const
{
doPropertyLoad();
return m_properties;
}
void ExternalObjectProxy::setAddress(quintptr address)
{
m_address = address;
}
quintptr ExternalObjectProxy::address() const
{
doLoad();
return m_address;
}
void ExternalObjectProxy::refresh()
{
m_propertiesLoaded = false;
m_properties.clear();
}