Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
PIM
KPkPass
Commits
735722a8
Commit
735722a8
authored
Mar 04, 2018
by
Volker Krause
Browse files
Move private members to dptr
parent
2fbddc5d
Changes
2
Hide whitespace changes
Inline
Side-by-side
src/pkpass/pass.cpp
View file @
735722a8
...
...
@@ -36,28 +36,40 @@
using
namespace
KPkPass
;
namespace
KPkPass
{
class
PassPrivate
{
public:
std
::
unique_ptr
<
QIODevice
>
buffer
;
std
::
unique_ptr
<
KZip
>
zip
;
QJsonObject
passObj
;
QHash
<
QString
,
QString
>
messages
;
QString
passType
;
};
}
Pass
::
Pass
(
const
QString
&
passType
,
QObject
*
parent
)
:
QObject
(
parent
)
,
m_passType
(
passTyp
e
)
,
d
(
new
PassPrivat
e
)
{
d
->
passType
=
passType
;
}
Pass
::~
Pass
()
=
default
;
QJsonObject
Pass
::
data
()
const
{
return
m_
passObj
;
return
d
->
passObj
;
}
QJsonObject
Pass
::
passData
()
const
{
return
m_
passObj
.
value
(
m_
passType
).
toObject
();
return
d
->
passObj
.
value
(
d
->
passType
).
toObject
();
}
QString
Pass
::
message
(
const
QString
&
key
)
const
{
const
auto
it
=
m_
messages
.
constFind
(
key
);
if
(
it
!=
m_
messages
.
constEnd
())
{
const
auto
it
=
d
->
messages
.
constFind
(
key
);
if
(
it
!=
d
->
messages
.
constEnd
())
{
return
it
.
value
();
}
return
key
;
...
...
@@ -65,12 +77,12 @@ QString Pass::message(const QString &key) const
QString
Pass
::
passTypeIdentifier
()
const
{
return
m_
passObj
.
value
(
QLatin1String
(
"passTypeIdentifier"
)).
toString
();
return
d
->
passObj
.
value
(
QLatin1String
(
"passTypeIdentifier"
)).
toString
();
}
QString
Pass
::
serialNumber
()
const
{
return
m_
passObj
.
value
(
QLatin1String
(
"serialNumber"
)).
toString
();
return
d
->
passObj
.
value
(
QLatin1String
(
"serialNumber"
)).
toString
();
}
static
const
char
*
passTypes
[]
=
{
"boardingPass"
,
"coupon"
,
"eventTicket"
,
"generic"
,
"storeCard"
};
...
...
@@ -100,17 +112,17 @@ static QColor parseColor(const QString &s)
QColor
Pass
::
backgroundColor
()
const
{
return
parseColor
(
m_
passObj
.
value
(
QLatin1String
(
"backgroundColor"
)).
toString
());
return
parseColor
(
d
->
passObj
.
value
(
QLatin1String
(
"backgroundColor"
)).
toString
());
}
QColor
Pass
::
foregroundColor
()
const
{
return
parseColor
(
m_
passObj
.
value
(
QLatin1String
(
"foregroundColor"
)).
toString
());
return
parseColor
(
d
->
passObj
.
value
(
QLatin1String
(
"foregroundColor"
)).
toString
());
}
QColor
Pass
::
labelColor
()
const
{
const
auto
c
=
parseColor
(
m_
passObj
.
value
(
QLatin1String
(
"labelColor"
)).
toString
());
const
auto
c
=
parseColor
(
d
->
passObj
.
value
(
QLatin1String
(
"labelColor"
)).
toString
());
if
(
c
.
isValid
())
{
return
c
;
}
...
...
@@ -119,19 +131,19 @@ QColor Pass::labelColor() const
QString
Pass
::
logoText
()
const
{
return
message
(
m_
passObj
.
value
(
QLatin1String
(
"logoText"
)).
toString
());
return
message
(
d
->
passObj
.
value
(
QLatin1String
(
"logoText"
)).
toString
());
}
QImage
Pass
::
logo
(
unsigned
int
devicePixelRatio
)
const
{
const
KArchiveFile
*
file
=
nullptr
;
for
(;
devicePixelRatio
>
1
;
--
devicePixelRatio
)
{
file
=
m_
zip
->
directory
()
->
file
(
QLatin1String
(
"logo@"
)
+
QString
::
number
(
devicePixelRatio
)
+
QLatin1String
(
"x.png"
));
file
=
d
->
zip
->
directory
()
->
file
(
QLatin1String
(
"logo@"
)
+
QString
::
number
(
devicePixelRatio
)
+
QLatin1String
(
"x.png"
));
if
(
file
)
break
;
}
if
(
!
file
)
file
=
m_
zip
->
directory
()
->
file
(
QLatin1String
(
"logo.png"
));
file
=
d
->
zip
->
directory
()
->
file
(
QLatin1String
(
"logo.png"
));
if
(
!
file
)
return
{};
std
::
unique_ptr
<
QIODevice
>
dev
(
file
->
createDevice
());
...
...
@@ -142,7 +154,7 @@ QImage Pass::logo(unsigned int devicePixelRatio) const
QDateTime
Pass
::
relevantDate
()
const
{
return
QDateTime
::
fromString
(
m_
passObj
.
value
(
QLatin1String
(
"relevantDate"
)).
toString
(),
Qt
::
ISODate
);
return
QDateTime
::
fromString
(
d
->
passObj
.
value
(
QLatin1String
(
"relevantDate"
)).
toString
(),
Qt
::
ISODate
);
}
QVector
<
Barcode
>
Pass
::
barcodes
()
const
...
...
@@ -222,9 +234,9 @@ Pass *Pass::fromData(std::unique_ptr<QIODevice> device, QObject *parent)
pass
=
new
Pass
(
QStringLiteral
(
"generic"
),
parent
);
}
pass
->
m_
buffer
=
std
::
move
(
device
);
pass
->
m_
zip
=
std
::
move
(
zip
);
pass
->
m_
passObj
=
passObj
;
pass
->
d
->
buffer
=
std
::
move
(
device
);
pass
->
d
->
zip
=
std
::
move
(
zip
);
pass
->
d
->
passObj
=
passObj
;
pass
->
parse
();
return
pass
;
}
...
...
@@ -296,7 +308,7 @@ static QString unquote(const QStringRef &str)
bool
Pass
::
parseMessages
(
const
QString
&
lang
)
{
auto
entry
=
m_
zip
->
directory
()
->
entry
(
lang
);
auto
entry
=
d
->
zip
->
directory
()
->
entry
(
lang
);
if
(
!
entry
||
!
entry
->
isDirectory
())
{
return
false
;
}
...
...
@@ -344,11 +356,11 @@ bool Pass::parseMessages(const QString &lang)
const
auto
key
=
catalog
.
mid
(
keyBegin
,
keyEnd
-
keyBegin
);
const
auto
value
=
unquote
(
catalog
.
midRef
(
valueBegin
,
valueEnd
-
valueBegin
));
m_
messages
.
insert
(
key
,
value
);
d
->
messages
.
insert
(
key
,
value
);
idx
=
valueEnd
+
1
;
// there's at least the linebreak and/or a ';'
}
return
!
m_
messages
.
isEmpty
();
return
!
d
->
messages
.
isEmpty
();
}
QVector
<
Field
>
Pass
::
fields
(
const
QLatin1String
&
fieldType
)
const
...
...
src/pkpass/pass.h
View file @
735722a8
...
...
@@ -44,6 +44,7 @@ class QString;
namespace
KPkPass
{
class
Barcode
;
class
PassPrivate
;
/** Base class for a pkpass file.
* @see https://developer.apple.com/library/content/documentation/UserExperience/Reference/PassKit_Bundle/Chapters/TopLevel.html
...
...
@@ -132,11 +133,7 @@ private:
QVariantList
secondaryFieldsVariant
()
const
;
QVariantList
barcodesVariant
()
const
;
std
::
unique_ptr
<
QIODevice
>
m_buffer
;
std
::
unique_ptr
<
KZip
>
m_zip
;
QJsonObject
m_passObj
;
QHash
<
QString
,
QString
>
m_messages
;
QString
m_passType
;
std
::
unique_ptr
<
PassPrivate
>
d
;
};
}
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new 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