Engauge Digitizer
2
Toggle main menu visibility
Loading...
Searching...
No Matches
Point
PointIdentifiers.cpp
Go to the documentation of this file.
1
/******************************************************************************************************
2
* (C) 2014 markummitchell@github.com. This file is part of Engauge Digitizer, which is released *
3
* under GNU General Public License version 2 (GPLv2) or (at your option) any later version. See file *
4
* LICENSE or go to gnu.org/licenses for details. Distribution requires prior written permission. *
5
******************************************************************************************************/
6
7
#include "
DocumentSerialize.h
"
8
#include "
EngaugeAssert.h
"
9
#include "
Logger.h
"
10
#include "
PointIdentifiers.h
"
11
#include <QObject>
12
#include <QXmlStreamReader>
13
#include <QXmlStreamWriter>
14
#include "
Xml.h
"
15
16
PointIdentifiers::PointIdentifiers
()
17
{
18
}
19
20
bool
PointIdentifiers::contains
(
const
QString &pointIdentifier)
const
21
{
22
qCDebug(ENGAUGE_LOG) <<
"PointIdentifiers::contains"
23
<<
" pointCount="
<< m_pointIdentifiers.count();
24
25
return
m_pointIdentifiers.contains (pointIdentifier);
26
}
27
28
int
PointIdentifiers::count
()
const
29
{
30
return
m_pointIdentifiers.count();
31
}
32
33
QString
PointIdentifiers::getKey
(
int
i)
const
34
{
35
ENGAUGE_ASSERT
(i < m_pointIdentifiers.count());
36
37
QList<QString> keys = m_pointIdentifiers.keys();
38
39
return
keys.at(i);
40
}
41
42
bool
PointIdentifiers::getValue
(
const
QString &pointIdentifier)
const
43
{
44
ENGAUGE_ASSERT
(m_pointIdentifiers.contains (pointIdentifier));
45
46
return
m_pointIdentifiers [pointIdentifier];
47
}
48
49
void
PointIdentifiers::loadXml
(QXmlStreamReader &reader)
50
{
51
bool
success =
true
;
52
53
// Read through each DOCUMENT_SERIALIZE_POINT_IDENTIFIER until end of DOCUMENT_SERIALIZE_POINT_IDENTIFIERS is encountered
54
while
(
loadNextFromReader
(reader)) {
55
56
if
(reader.atEnd() || reader.hasError ()) {
57
success =
false
;
58
break
;
59
}
60
61
if
((reader.tokenType() == QXmlStreamReader::EndElement) &&
62
(reader.name() ==
DOCUMENT_SERIALIZE_POINT_IDENTIFIERS
)) {
63
break
;
64
}
65
66
// Not done yet
67
if
((reader.tokenType() == QXmlStreamReader::StartElement) &&
68
(reader.name() ==
DOCUMENT_SERIALIZE_POINT_IDENTIFIER
)) {
69
70
// This is an entry that we need to add
71
QXmlStreamAttributes attributes = reader.attributes();
72
73
if
(attributes.hasAttribute(
DOCUMENT_SERIALIZE_POINT_IDENTIFIER_NAME
) &&
74
attributes.hasAttribute(
DOCUMENT_SERIALIZE_POINT_IDENTIFIER_VALUE
)) {
75
76
QString valueStr = attributes.value (
DOCUMENT_SERIALIZE_POINT_IDENTIFIER_VALUE
).toString();
77
78
QString identifier = attributes.value (
DOCUMENT_SERIALIZE_POINT_IDENTIFIER_NAME
).toString();
79
bool
value = (valueStr ==
DOCUMENT_SERIALIZE_BOOL_TRUE
);
80
81
m_pointIdentifiers [identifier] = value;
82
}
83
}
84
}
85
86
if
(!success) {
87
reader.raiseError (QObject::tr (
"Cannot read point identifiers"
));
88
}
89
}
90
91
void
PointIdentifiers::saveXml
(QXmlStreamWriter &writer)
const
92
{
93
writer.writeStartElement(
DOCUMENT_SERIALIZE_POINT_IDENTIFIERS
);
94
PointIdentifiersInternal::const_iterator itr;
95
for
(itr = m_pointIdentifiers.begin(); itr != m_pointIdentifiers.end (); itr++) {
96
QString identifier = itr.key();
97
bool
value = itr.value();
98
writer.writeStartElement (
DOCUMENT_SERIALIZE_POINT_IDENTIFIER
);
99
writer.writeAttribute(
DOCUMENT_SERIALIZE_POINT_IDENTIFIER_NAME
, identifier);
100
writer.writeAttribute(
DOCUMENT_SERIALIZE_POINT_IDENTIFIER_VALUE
,
101
value ?
DOCUMENT_SERIALIZE_BOOL_TRUE
:
DOCUMENT_SERIALIZE_BOOL_FALSE
);
102
writer.writeEndElement();
103
}
104
writer.writeEndElement();
105
}
106
107
void
PointIdentifiers::setKeyValue
(
const
QString &pointIdentifier,
108
bool
value)
109
{
110
m_pointIdentifiers [pointIdentifier] = value;
111
}
DocumentSerialize.h
DOCUMENT_SERIALIZE_POINT_IDENTIFIERS
const QString DOCUMENT_SERIALIZE_POINT_IDENTIFIERS
DOCUMENT_SERIALIZE_POINT_IDENTIFIER
const QString DOCUMENT_SERIALIZE_POINT_IDENTIFIER
DOCUMENT_SERIALIZE_POINT_IDENTIFIER_VALUE
const QString DOCUMENT_SERIALIZE_POINT_IDENTIFIER_VALUE
DOCUMENT_SERIALIZE_POINT_IDENTIFIER_NAME
const QString DOCUMENT_SERIALIZE_POINT_IDENTIFIER_NAME
DOCUMENT_SERIALIZE_BOOL_TRUE
const QString DOCUMENT_SERIALIZE_BOOL_TRUE
DOCUMENT_SERIALIZE_BOOL_FALSE
const QString DOCUMENT_SERIALIZE_BOOL_FALSE
EngaugeAssert.h
ENGAUGE_ASSERT
#define ENGAUGE_ASSERT(cond)
Drop in replacement for Q_ASSERT.
Definition
EngaugeAssert.h:17
Logger.h
PointIdentifiers.h
loadNextFromReader
QXmlStreamReader::TokenType loadNextFromReader(QXmlStreamReader &reader)
Load next token from xml reader.
Definition
Xml.cpp:14
Xml.h
PointIdentifiers::contains
bool contains(const QString &pointIdentifier) const
True if specified entry exists in the table.
Definition
PointIdentifiers.cpp:20
PointIdentifiers::PointIdentifiers
PointIdentifiers()
Single constructor.
Definition
PointIdentifiers.cpp:16
PointIdentifiers::getKey
QString getKey(int i) const
Get key for index.
Definition
PointIdentifiers.cpp:33
PointIdentifiers::loadXml
void loadXml(QXmlStreamReader &reader)
Load from serialized xml.
Definition
PointIdentifiers.cpp:49
PointIdentifiers::count
int count() const
Number of entries.
Definition
PointIdentifiers.cpp:28
PointIdentifiers::getValue
bool getValue(const QString &pointIdentifier) const
Get value for key.
Definition
PointIdentifiers.cpp:42
PointIdentifiers::setKeyValue
void setKeyValue(const QString &pointIdentifier, bool value)
Set key/value pair.
Definition
PointIdentifiers.cpp:107
PointIdentifiers::saveXml
void saveXml(QXmlStreamWriter &writer) const
Serialize table to xml.
Definition
PointIdentifiers.cpp:91
Generated on
for Engauge Digitizer by
1.17.0