26
26
#include "uniondatainformation.h"
27
27
#include "primitivedatainformation.h"
28
28
#include "staticlengtharraydatainformation.h"
29
#include "topleveldatainformation.h"
30
31
DataInformation::DataInformation(const QString& name, int index,
31
32
DataInformation* parent) :
32
QObject(parent), mIndex(index)
33
QObject(parent), mIndex(index), mValidationSuccessful(false), mHasBeenValidated(
34
false), mWasAbleToRead(false), mAdditionalData(NULL)
34
36
setObjectName(name);
37
39
DataInformation::DataInformation(const DataInformation& d) :
38
QObject(NULL), mIndex(d.mIndex)
40
QObject(NULL), QScriptable(), mIndex(d.mIndex), mValidationSuccessful(d.mValidationSuccessful),
41
mHasBeenValidated(d.mHasBeenValidated),
42
mWasAbleToRead(d.mWasAbleToRead), mAdditionalData(NULL)
40
44
setObjectName(d.objectName());
45
if (d.mAdditionalData)
46
mAdditionalData = new AdditionalData(*(d.mAdditionalData));
43
49
DataInformation::~DataInformation()
51
delete mAdditionalData;
47
QString DataInformation::getValueString() const
54
QString DataInformation::valueString() const
52
QString DataInformation::getSizeString() const
59
QString DataInformation::sizeString() const
54
return i18np("1 byte", "%1 bytes", getSize() / 8);
55
// return KGlobal::locale()->formatByteSize(getSize() / 8);
61
if (size() % 8 == 0) //no bits remaining
63
return i18np("1 byte", "%1 bytes", size() / 8);
67
QString bytes = i18np("1 byte", "%1 bytes", size() / 8);
68
QString bits = i18np("1 bit", "%1 bits", size() % 8);
69
return i18nc("number of bytes, then number of bits", "%1 %2", bytes, bits);
59
Okteta::Size DataInformation::positionRelativeToParent() const
73
quint64 DataInformation::positionRelativeToParent() const
61
DataInformation* par = static_cast<DataInformation*> (parent());
75
//FIXME this needs updating to support bitfield marking
76
DataInformation* par = dynamic_cast<DataInformation*> (parent());
66
81
return par->offset(this->mIndex) + par->positionRelativeToParent();
84
void DataInformation::setIndex(int newIndex)
89
TopLevelDataInformation* DataInformation::topLevelDataInformation() const
91
DataInformation* par = dynamic_cast<DataInformation*> (parent());
93
return par->topLevelDataInformation();
96
TopLevelDataInformation* top =
97
dynamic_cast<TopLevelDataInformation*> (parent());
104
DataInformation* DataInformation::mainStructure()
106
DataInformation* par = dynamic_cast<DataInformation*> (parent());
108
return par->mainStructure();
114
void DataInformation::setAdditionalData(AdditionalData* data)
116
mAdditionalData = data;
119
QString DataInformation::validationError() const
121
if (!mAdditionalData)
123
return mAdditionalData->validationError();
126
void DataInformation::setValidationError(QString errorMessage)
128
setValidationSuccessful(false);
129
if (!mAdditionalData)
130
mAdditionalData = new AdditionalData();
131
mAdditionalData->setValidationError(errorMessage);
134
bool DataInformation::validationSuccessful() const
136
return mValidationSuccessful;
139
void DataInformation::setValidationSuccessful(bool successful)
141
mValidationSuccessful = successful;
142
setHasBeenValidated(true);
145
bool DataInformation::hasBeenValidated() const
147
return mHasBeenValidated;
150
void DataInformation::setHasBeenValidated(bool hasBeen)
152
mHasBeenValidated = hasBeen;
155
void DataInformation::resetValidationState()
157
mHasBeenValidated = false;
158
mValidationSuccessful = false;
160
mAdditionalData->setValidationError(QString());
162
void DataInformation::beginRead()
164
for (uint i = 0; i < childCount(); ++i)
166
childAt(i)->beginRead();
168
mWasAbleToRead = false;