Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
PIM
KItinerary
Commits
a789129e
Commit
a789129e
authored
May 10, 2021
by
Volker Krause
Browse files
Extend ERA SSB document processor to support multiple ticket versions
parent
b04c7b10
Changes
1
Hide whitespace changes
Inline
Side-by-side
src/lib/processors/ssbdocumentprocessor.cpp
View file @
a789129e
...
...
@@ -6,6 +6,7 @@
#include "ssbdocumentprocessor.h"
#include "era/ssbv1ticket.h"
#include "era/ssbv3ticket.h"
#include <KItinerary/ExtractorFilter>
...
...
@@ -16,27 +17,38 @@ using namespace KItinerary;
bool
SsbDocumentProcessor
::
canHandleData
(
const
QByteArray
&
encodedData
,
[[
maybe_unused
]]
QStringView
fileName
)
const
{
return
SSBv3Ticket
::
maybeSSB
(
encodedData
);
return
SSBv3Ticket
::
maybeSSB
(
encodedData
)
||
SSBv1Ticket
::
maybeSSB
(
encodedData
)
;
}
ExtractorDocumentNode
SsbDocumentProcessor
::
createNodeFromData
(
const
QByteArray
&
encodedData
)
const
{
ExtractorDocumentNode
node
;
auto
ticket
=
SSBv3Ticket
(
encodedData
);
if
(
ticket
.
isValid
())
{
node
.
setContent
(
ticket
);
if
(
SSBv3Ticket
::
maybeSSB
(
encodedData
))
{
auto
ticket
=
SSBv3Ticket
(
encodedData
);
if
(
ticket
.
isValid
())
{
node
.
setContent
(
ticket
);
}
}
else
if
(
SSBv1Ticket
::
maybeSSB
(
encodedData
))
{
auto
ticket
=
SSBv1Ticket
(
encodedData
);
if
(
ticket
.
isValid
())
{
node
.
setContent
(
ticket
);
}
}
return
node
;
}
bool
SsbDocumentProcessor
::
matches
(
const
ExtractorFilter
&
filter
,
const
ExtractorDocumentNode
&
node
)
const
{
const
auto
ticket
=
node
.
content
<
SSBv3Ticket
>
();
const
auto
propIdx
=
SSBv3Ticket
::
staticMetaObject
.
indexOfProperty
(
filter
.
fieldName
().
toUtf8
().
constData
());
const
auto
ticket
=
node
.
content
();
const
auto
mo
=
QMetaType
(
ticket
.
userType
()).
metaObject
();
if
(
!
mo
)
{
return
false
;
}
const
auto
propIdx
=
mo
->
indexOfProperty
(
filter
.
fieldName
().
toUtf8
().
constData
());
if
(
propIdx
<
0
)
{
return
false
;
}
const
auto
prop
=
SSBv3Ticket
::
staticMetaObject
.
property
(
propIdx
);
const
auto
value
=
prop
.
readOnGadget
(
&
ticket
);
const
auto
prop
=
mo
->
property
(
propIdx
);
const
auto
value
=
prop
.
readOnGadget
(
ticket
.
constData
()
);
return
filter
.
matches
(
value
.
toString
());
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment