Commit c880fbfd authored by Karel Slaný's avatar Karel Slaný

Merge branch 'code-refactore' into 'develop'

Code refactore

See merge request !77
parents cbff9eac 6095af29
......@@ -110,8 +110,10 @@ SOURCES += \
src/net/isds_wrapper.cpp \
src/net/net_layer.cpp \
src/net/xml_layer.cpp \
src/qml_interaction/attachment_data.cpp \
src/qml_interaction/interaction_filesystem.cpp \
src/qml_interaction/interaction_zfo_file.cpp \
src/qml_interaction/message_envelope.cpp \
src/qml_interaction/message_info.cpp \
src/settings.cpp \
src/setwrapper.cpp \
......@@ -167,8 +169,10 @@ HEADERS += \
src/net/isds_wrapper.h \
src/net/net_layer.h \
src/net/xml_layer.h \
src/qml_interaction/attachment_data.h \
src/qml_interaction/interaction_filesystem.h \
src/qml_interaction/interaction_zfo_file.h \
src/qml_interaction/message_envelope.h \
src/qml_interaction/message_info.h \
src/settings.h \
src/setwrapper.h \
......
......@@ -37,6 +37,8 @@
#include "src/io/filesystem.h"
#include "ios/src/url_opener.h"
#include "src/models/accountmodel.h"
#include "src/qml_interaction/attachment_data.h"
#include "src/qml_interaction/message_envelope.h"
#include "src/sqlite/file_db_container.h"
#include "src/sqlite/message_db_container.h"
#include "src/net/xml_layer.h"
......@@ -140,13 +142,13 @@ Files::Files(QObject *parent) : QObject(parent)
*/
static
void setZfoFilesToModel(FileListModel &model,
const QList<Files::File> &fileList)
const QList<AttachmentData> &fileList)
{
model.clearAll();
foreach (const Files::File &file, fileList) {
model.appendFileEntry(FileListModel::Entry(-1, file.dmFileDescr,
file._dmFileSize, file._icon, file.dmEncodedContent));
foreach (const AttachmentData &file, fileList) {
model.appendFileEntry(FileListModel::Entry(-1, file.dmFileDescr(),
file._dmFileSize(), file._icon(), file.dmEncodedContent()));
}
}
......@@ -873,8 +875,8 @@ bool Files::parseAndShowXmlData(enum MsgInfo::ZfoType type, QString *idStr,
QXmlStreamReader xml;
XmlLayer xmlLayer;
Messages::Message msg;
QList<Files::File> fileList;
MsgEnvelope msg;
QList<AttachmentData> fileList;
QList<Messages::Event> eventList;
if (type == MsgInfo::TYPE_UNKNOWN) {
......@@ -919,65 +921,65 @@ bool Files::parseAndShowXmlData(enum MsgInfo::ZfoType type, QString *idStr,
QString html = divStart;
html += "<h3>" + QObject::tr("General") + "</h3>";
html += strongInfoLine(QObject::tr("Subject"), msg.dmAnnotation);
QString size = QString::number(msg.dmAttachmentSize);
html += strongInfoLine(QObject::tr("Subject"), msg.dmAnnotation());
QString size = QString::number(msg.dmAttachmentSize());
html += strongInfoLine(QObject::tr("Attachment size"),
(size == "0") ? "&lt;1 KB" : "~" + size + " KB");
html += strongInfoLine(QObject::tr("Personal delivery"),
(msg.dmPersonalDelivery) ? QObject::tr("Yes") : QObject::tr("No"));
(msg.dmPersonalDelivery()) ? QObject::tr("Yes") : QObject::tr("No"));
html += strongInfoLine(QObject::tr("Delivery by fiction"),
(msg.dmAllowSubstDelivery) ? QObject::tr("Yes") : QObject::tr("No"));
(msg.dmAllowSubstDelivery()) ? QObject::tr("Yes") : QObject::tr("No"));
html += "<h3>" + QObject::tr("Sender") + "</h3>";
html += strongInfoLine(QObject::tr("Databox ID"), msg.dbIDSender);
html += strongInfoLine(QObject::tr("Name"), msg.dmSender);
html += strongInfoLine(QObject::tr("Address"),msg.dmSenderAddress);
html += strongInfoLine(QObject::tr("Databox ID"), msg.dbIDSender());
html += strongInfoLine(QObject::tr("Name"), msg.dmSender());
html += strongInfoLine(QObject::tr("Address"),msg.dmSenderAddress());
html += "<h3>" + QObject::tr("Recipient") + "</h3>";
html += strongInfoLine(QObject::tr("Databox ID"), msg.dbIDRecipient);
html += strongInfoLine(QObject::tr("Name"), msg.dmRecipient);
html += strongInfoLine(QObject::tr("Address"),msg.dmRecipientAddress);
if (!msg.dmToHands.isEmpty()) {
html += strongInfoLine(QObject::tr("Databox ID"), msg.dbIDRecipient());
html += strongInfoLine(QObject::tr("Name"), msg.dmRecipient());
html += strongInfoLine(QObject::tr("Address"),msg.dmRecipientAddress());
if (!msg.dmToHands().isEmpty()) {
html += strongInfoLine(QObject::tr("To hands"),
msg.dmToHands);
msg.dmToHands());
}
QString tmpHtml;
if (!msg.dmSenderIdent.isEmpty()) {
if (!msg.dmSenderIdent().isEmpty()) {
tmpHtml += strongInfoLine(QObject::tr("Our file mark"),
msg.dmSenderIdent);
msg.dmSenderIdent());
}
if (!msg.dmSenderRefNumber.isEmpty()) {
if (!msg.dmSenderRefNumber().isEmpty()) {
tmpHtml += strongInfoLine(QObject::tr("Our reference number"),
msg.dmSenderRefNumber);
msg.dmSenderRefNumber());
}
if (!msg.dmRecipientIdent.isEmpty()) {
if (!msg.dmRecipientIdent().isEmpty()) {
tmpHtml += strongInfoLine(QObject::tr("Your file mark"),
msg.dmRecipientIdent);
msg.dmRecipientIdent());
}
if (!msg.dmRecipientRefNumber.isEmpty()) {
if (!msg.dmRecipientRefNumber().isEmpty()) {
tmpHtml += strongInfoLine(QObject::tr("Your reference number"),
msg.dmRecipientRefNumber);
msg.dmRecipientRefNumber());
}
if (!msg.dmLegalTitleLaw.isEmpty()) {
if (!msg.dmLegalTitleLaw().isEmpty()) {
tmpHtml += strongInfoLine(QObject::tr("Law"),
msg.dmLegalTitleLaw);
msg.dmLegalTitleLaw());
}
if (!msg.dmLegalTitleYear.isEmpty()) {
if (!msg.dmLegalTitleYear().isEmpty()) {
tmpHtml += strongInfoLine(QObject::tr("Year"),
msg.dmLegalTitleYear);
msg.dmLegalTitleYear());
}
if (!msg.dmLegalTitleSect.isEmpty()) {
if (!msg.dmLegalTitleSect().isEmpty()) {
tmpHtml += strongInfoLine(QObject::tr("Section"),
msg.dmLegalTitleSect);
msg.dmLegalTitleSect());
}
if (!msg.dmLegalTitlePar.isEmpty()) {
if (!msg.dmLegalTitlePar().isEmpty()) {
tmpHtml += strongInfoLine(QObject::tr("Paragraph"),
msg.dmLegalTitlePar);
msg.dmLegalTitlePar());
}
if (!msg.dmLegalTitlePoint.isEmpty()) {
if (!msg.dmLegalTitlePoint().isEmpty()) {
tmpHtml += strongInfoLine(QObject::tr("Letter"),
msg.dmLegalTitlePoint);
msg.dmLegalTitlePoint());
}
if (!tmpHtml.isEmpty()) {
html += "<h3>" + QObject::tr("Additional info") + "</h3>";
......@@ -987,14 +989,14 @@ bool Files::parseAndShowXmlData(enum MsgInfo::ZfoType type, QString *idStr,
html += "<h3>" + QObject::tr("Message state") + "</h3>";
html += strongInfoLine(QObject::tr("Delivery time"),
dateTimeStrFromDbFormat(
dateTimeStrToUTCDbFormat(msg.dmDeliveryTime),
dateTimeStrToUTCDbFormat(msg.dmDeliveryTime()),
DATETIME_QML_FORMAT));
html += strongInfoLine(QObject::tr("Accetance time"),
dateTimeStrFromDbFormat(
dateTimeStrToUTCDbFormat(msg.dmAcceptanceTime),
dateTimeStrToUTCDbFormat(msg.dmAcceptanceTime()),
DATETIME_QML_FORMAT));
html += strongInfoLine(QObject::tr("Status"),
QString::number(msg.dmMessageStatus));
QString::number(msg.dmMessageStatus()));
if (type == MsgInfo::TYPE_DELIVERY_INFO) {
html += "<h3>" + QObject::tr("Events") + "</h3>";
......@@ -1011,26 +1013,26 @@ bool Files::parseAndShowXmlData(enum MsgInfo::ZfoType type, QString *idStr,
// Create body for email
QString body = QObject::tr("ID") + ": ";
body += QString::number(msg.dmID) + "\n";
body += QString::number(msg.dmID()) + "\n";
body += QObject::tr("FROM") + ": ";
body += msg.dmSender + "\n";
body += msg.dmSender() + "\n";
body += QObject::tr("TO") + ": ";
body += msg.dmRecipient + "\n";
body += msg.dmRecipient() + "\n";
body += QObject::tr("DELIVERED") + ": ";
body += dateTimeStrFromDbFormat(
dateTimeStrToUTCDbFormat(msg.dmAcceptanceTime),
dateTimeStrToUTCDbFormat(msg.dmAcceptanceTime()),
DATETIME_QML_FORMAT)
+ "\n\n---\n";
body += QObject::tr("This email has been generated with Datovka "
"application based on a data message (%1) delivered "
"to databox.").arg(msg.dmID);
"to databox.").arg(msg.dmID());
body += "\n";
if (idStr != Q_NULLPTR) {
*idStr = QString::number(msg.dmID);
*idStr = QString::number(msg.dmID());
}
if (annotation != Q_NULLPTR) {
*annotation = msg.dmAnnotation;
*annotation = msg.dmAnnotation();
}
if (msgDescrHtml != Q_NULLPTR) {
*msgDescrHtml = html;
......
......@@ -248,30 +248,6 @@ public:
Q_INVOKABLE
void deleteTmpFileFromStorage(const QString &filePath);
class File {
public:
File(void)
: id (-1), dmID(-1), dmFileDescr(), dmUpFileGuid(),
dmFileGuid(), dmMimeType(), dmFormat(), dmFileMetaType(),
dmEncodedContent(), _dmFileSize(), _dmDownloadDate(),
_icon()
{
}
int id;
qint64 dmID;
QString dmFileDescr;
QString dmUpFileGuid;
QString dmFileGuid;
QString dmMimeType;
QString dmFormat;
QString dmFileMetaType;
QString dmEncodedContent;
QString _dmFileSize;
QString _dmDownloadDate;
QString _icon;
};
signals:
/*!
* @brief Set new statusbar text and active busy indicator to QML.
......
......@@ -47,8 +47,10 @@
#if defined(Q_OS_ANDROID)
#include "src/os_android.h"
#endif /* defined(Q_OS_ANDROID) */
#include "src/qml_interaction/attachment_data.h"
#include "src/qml_interaction/interaction_filesystem.h"
#include "src/qml_interaction/interaction_zfo_file.h"
#include "src/qml_interaction/message_envelope.h"
#include "src/settings.h"
#include "src/setwrapper.h"
#include "src/sqlite/db_tables.h"
......@@ -293,6 +295,7 @@ int main(int argc, char *argv[])
/* Register types into QML. */
AccountListModel::declareQML();
AttachmentData::declareQML();
DataboxListModel::declareQML();
DataboxModelEntry::declareQML();
Dialogues::declareQML();
......@@ -301,6 +304,7 @@ int main(int argc, char *argv[])
ListSortFilterProxyModel::declareQML();
MessageListModel::declareQML();
Messages::declareQML();
MsgEnvelope::declareQML();
MsgInfo::declareQML();
InteractionZfoFile interactionZfoFile;
......
......@@ -132,64 +132,6 @@ public:
*/
void deleteExpiredMessagesFromDbs(int days);
class Message {
public:
Message(void)
: dmID(-1), dmSender(), dmSenderAddress(), dmSenderType(),
dmRecipient(), dmRecipientAddress(), dmAmbiguousRecipient(),
dmSenderOrgUnit(), dmSenderOrgUnitNum(), dbIDRecipient(),
dmRecipientOrgUnit(), dmRecipientOrgUnitNum(), dmToHands(),
dmAnnotation(), dmRecipientRefNumber(), dmSenderRefNumber(),
dmRecipientIdent(), dmSenderIdent(), dmLegalTitleLaw(),
dmLegalTitleYear(), dmLegalTitleSect(), dmLegalTitlePar(),
dmLegalTitlePoint(), dmPersonalDelivery(false),
dmAllowSubstDelivery(false), dmQTimestamp(),
dmDeliveryTime(), dmAcceptanceTime(), dmMessageStatus(-1),
dmAttachmentSize(-1), dmType(), _dmMessageType(-1),
_dmDownloadDate(), _dmCustomData(),
_dmAttachDownloaded(false), _dmReadLocally(false)
{
}
qint64 dmID;
QString dbIDSender;
QString dmSender;
QString dmSenderAddress;
QString dmSenderType;
QString dmRecipient;
QString dmRecipientAddress;
QString dmAmbiguousRecipient;
QString dmSenderOrgUnit;
QString dmSenderOrgUnitNum;
QString dbIDRecipient;
QString dmRecipientOrgUnit;
QString dmRecipientOrgUnitNum;
QString dmToHands;
QString dmAnnotation;
QString dmRecipientRefNumber;
QString dmSenderRefNumber;
QString dmRecipientIdent;
QString dmSenderIdent;
QString dmLegalTitleLaw;
QString dmLegalTitleYear;
QString dmLegalTitleSect;
QString dmLegalTitlePar;
QString dmLegalTitlePoint;
bool dmPersonalDelivery;
bool dmAllowSubstDelivery;
QString dmQTimestamp;
QString dmDeliveryTime;
QString dmAcceptanceTime;
int dmMessageStatus;
int dmAttachmentSize;
QString dmType;
int _dmMessageType;
QString _dmDownloadDate;
QString _dmCustomData;
bool _dmAttachDownloaded;
bool _dmReadLocally;
};
class Event {
public:
QString dmEventTime;
......
......@@ -119,7 +119,7 @@ QString DbWrapper::createAccountInfoStringForQml(
*/
bool DbWrapper::insertMessageListToDb(const QString &userName,
enum MessageDb::MessageType messageType,
const QList<Messages::Message> &messages,
const QList<MsgEnvelope> &messages,
QList<qint64> &messageChangedStatusList, QString &txt,
QList<qint64> &listOfNewMsgIds)
/* ========================================================================= */
......@@ -138,34 +138,37 @@ bool DbWrapper::insertMessageListToDb(const QString &userName,
int msgs = messages.count();
msgDb->beginTransaction();
for (int i = 0; i < msgs; ++i) {
bool hasFiles;
int msgStatus =
msgDb->getMessageStatusFromDb(messages.at(i).dmID, hasFiles);
msgDb->getMessageStatusFromDb(messages.at(i).dmID(), hasFiles);
// -1 = message is not in the database, mesasge is new
if (-1 == msgStatus) {
newMsgs++;
if (!msgDb->insertOrUpdateMessageEnvelopeInDb(messages.at(i))) {
txt = tr("Message %1 envelope insertion failed!").
arg(messages.at(i).dmID);
arg(messages.at(i).dmID());
} else {
// New message envelope has been saved into
// database. Append message id to list
// of complete messages to be downloaded.
listOfNewMsgIds.append(messages.at(i).dmID);
listOfNewMsgIds.append(messages.at(i).dmID());
}
} else {
if (!msgDb->updateMessageEnvelopeInDb(messages.at(i))) {
txt = tr("Message %1 envelope update failed!").
arg(messages.at(i).dmID);
arg(messages.at(i).dmID());
}
if (isSentMessage) {
if (msgStatus != messages.at(i).dmMessageStatus && hasFiles) {
messageChangedStatusList.append(messages.at(i).dmID);
if (msgStatus != messages.at(i).dmMessageStatus() && hasFiles) {
messageChangedStatusList.append(messages.at(i).dmID());
}
}
}
}
msgDb->commitTransaction();
if (!isSentMessage) {
......@@ -181,7 +184,7 @@ bool DbWrapper::insertMessageListToDb(const QString &userName,
}
bool DbWrapper::insertCompleteMessageToDb(const QString &userName,
Messages::Message &msg, QList<Files::File> &fileList, QString &txt)
MsgEnvelope &msg, QList<AttachmentData> &fileList, QString &txt)
{
bool ret = true;
......@@ -198,7 +201,7 @@ bool DbWrapper::insertCompleteMessageToDb(const QString &userName,
for (int i = 0; i < fileList.count(); ++i) {
if (!fDb->insertUpdateFilesIntoDb(fileList.at(i))) {
txt = tr("File %1 insertion failed!").
arg(fileList.at(i).dmFileDescr);
arg(fileList.at(i).dmFileDescr());
ret = ret * false;
}
}
......@@ -215,17 +218,17 @@ bool DbWrapper::insertCompleteMessageToDb(const QString &userName,
/* Update message envelope data in messages database */
if (ret) {
msg._dmReadLocally = true;
msg._dmAttachDownloaded = true;
msg._setDmReadLocally(true);
msg._setDmAttachDownloaded(true);
if (!msgDb->insertOrUpdateMessageEnvelopeInDb(msg)) {
txt = tr("Message %1 envelope update failed!").
arg(msg.dmID);
arg(msg.dmID());
ret = ret * false;
}
}
if (ret) {
msgDb->setAttachmentDownloaded(msg.dmID, true);
msgDb->setAttachmentDownloaded(msg.dmID(), true);
}
txt = tr("Message has been downloaded");
......
......@@ -26,6 +26,7 @@
#include <QObject>
#include "src/qml_interaction/message_envelope.h"
#include "src/sqlite/message_db_container.h"
#include "src/sqlite/file_db_container.h"
......@@ -125,7 +126,7 @@ public:
*/
bool insertMessageListToDb(const QString &userName,
enum MessageDb::MessageType messageType,
const QList<Messages::Message> &messages,
const QList<MsgEnvelope> &messages,
QList<qint64> &messageChangedStatusList, QString &txt,
QList<qint64> &listOfNewMsgIds);
......@@ -139,7 +140,7 @@ public:
* @return true if success.
*/
bool insertCompleteMessageToDb(const QString &userName,
Messages::Message &msg, QList<Files::File> &fileList,
MsgEnvelope &msg, QList<AttachmentData> &fileList,
QString &txt);
/*!
......
......@@ -31,6 +31,7 @@
#include "src/models/messagemodel.h"
#include "src/net/isds_wrapper.h"
#include "src/net/xml_layer.h"
#include "src/qml_interaction/message_envelope.h"
#include "src/settings.h"
#include "src/worker/emitter.h"
#include "src/worker/task_change_password.h"
......@@ -465,53 +466,50 @@ void IsdsWrapper::sendMessage(const QString &userName,
return;
}
Messages::Message msg;
MsgEnvelope msg;
/* Fill message envelope */
msg.dmAnnotation = dmAnnotation;
msg.dmLegalTitleLaw = dmLegalTitleLaw;
msg.dmLegalTitleYear = dmLegalTitleYear;
msg.dmLegalTitleSect = dmLegalTitleSect;
msg.dmLegalTitlePar = dmLegalTitlePar;
msg.dmLegalTitlePoint = dmLegalTitlePoint;
msg.dmToHands = dmToHands;
msg.dmRecipientRefNumber = dmRecipientRefNumber;
msg.dmRecipientIdent = dmRecipientIdent;
msg.dmSenderRefNumber = dmSenderRefNumber;
msg.dmSenderIdent = dmSenderIdent;
msg.dmAllowSubstDelivery = dmAllowSubstDelivery;
msg.dmPersonalDelivery =dmPersonalDelivery;
msg.setDmAnnotation(dmAnnotation);
msg.setDmLegalTitleLaw(dmLegalTitleLaw);
msg.setDmLegalTitleYear(dmLegalTitleYear);
msg.setDmLegalTitleSect(dmLegalTitleSect);
msg.setDmLegalTitlePar(dmLegalTitlePar);
msg.setDmLegalTitlePoint(dmLegalTitlePoint);
msg.setDmToHands(dmToHands);
msg.setDmRecipientRefNumber(dmRecipientRefNumber);
msg.setDmRecipientIdent(dmRecipientIdent);
msg.setDmSenderRefNumber(dmSenderRefNumber);
msg.setDmSenderIdent(dmSenderIdent);
msg.setDmAllowSubstDelivery(dmAllowSubstDelivery);
msg.setDmPersonalDelivery(dmPersonalDelivery);
int totalAttachmentSizeKBs = 0;
QList<Files::File> attachList;
QList<AttachmentData> attachList;
/* Load file contents from storage (path) to file structure */
foreach (const QString &file, filePaths) {
Files::File attach;
AttachmentData attach;
QFileInfo fi(file);
attach.dmFileDescr = fi.fileName();
attach.setDmFileDescr(fi.fileName());
totalAttachmentSizeKBs += fi.size() / 1024;
QFile fin(file);
if (!fin.open(QIODevice::ReadOnly)) {
continue;
}
attach.dmEncodedContent = fin.readAll().toBase64();
attach._dmFileSize =
getApproximatelyAttachmentFileSizeFromBase64(
attach.dmEncodedContent.length());
attach._icon =
getAttachmentFileIconFromFileExtension(attach.dmFileDescr);
attach.setDmEncodedContent(fin.readAll().toBase64());
attach._setDmFileSize(getApproximatelyAttachmentFileSizeFromBase64(attach.dmEncodedContent().length()));
attach._setIcon(getAttachmentFileIconFromFileExtension(attach.dmFileDescr()));
attachList.append(attach);
}
msg.dmAttachmentSize = totalAttachmentSizeKBs;
msg.setDmAttachmentSize(totalAttachmentSizeKBs);
emit statusBarTextChanged(tr("%1: sending message").arg(userName),
true, true);
/* Send message to all recipients */
foreach (const DataboxModelEntry &db, databoxModel->allEntries()) {
msg.dbIDRecipient = db.dbID();
msg.dmRecipient = db.dbName();
msg.dmRecipientAddress = db.dbAddress();
msg.setDbIDRecipient(db.dbID());
msg.setDmRecipient(db.dbName());
msg.setDmRecipientAddress(db.dbAddress());
TaskSendMessage *task;
task = new (std::nothrow) TaskSendMessage(
m_isdsSession.isdsCtxMap[userName], &m_netLayer,
......
This diff is collapsed.
......@@ -30,6 +30,7 @@
#include "src/models/databoxmodel.h"
#include "src/net/db_wrapper.h"
#include "src/qml_interaction/message_envelope.h"
/*
* Class XmlLayer realizes XML layer of SOAP.
......@@ -180,8 +181,8 @@ public:
* @return Soap request string as byte array.
*/
static
QByteArray xmlCreateSendMessageSoapRequest(const Messages::Message &msg,
const QList<Files::File> &fileList, bool dmOVM, bool dmPublishOwnID);
QByteArray xmlCreateSendMessageSoapRequest(const MsgEnvelope &msg,
const QList<AttachmentData> &fileList, bool dmOVM, bool dmPublishOwnID);
/*!
* @brief Create send SMS soap request.
......@@ -218,8 +219,8 @@ public:
* @return true if success.
*/
static
bool completeMessageParse(QXmlStreamReader &xml, Messages::Message &msg,
QList<Files::File> &fileList);
bool completeMessageParse(QXmlStreamReader &xml, MsgEnvelope &msg,
QList<AttachmentData> &fileList);
/*!
* @brief Parse event from XML.
......@@ -282,7 +283,7 @@ public:
*/
static
bool parseGetListOfMessagesResponse(enum MessageDb::MessageType messageType,
const QByteArray &xmlData, QList<Messages::Message> &messages,
const QByteArray &xmlData, QList<MsgEnvelope> &messages,
QString &txt);
/*!
......@@ -297,7 +298,7 @@ public:
*/
static
bool parseSignedMessageDownloadResponse(const QByteArray &xmlData,
Messages::Message &msg, QList<Files::File> &fileList, QString &txt,
MsgEnvelope &msg, QList<AttachmentData> &fileList, QString &txt,
QByteArray &zfoData);
/*!
......@@ -408,7 +409,7 @@ public:
* @return Message envelope structure.
*/
static
Messages::Message msgEnvelopeParse(QXmlStreamReader &xml,
MsgEnvelope msgEnvelopeParse(QXmlStreamReader &xml,
enum MessageDb::MessageType messageType);
/*!
......@@ -428,7 +429,7 @@ public:
* @return File structure.
*/
static
Files::File parseFile(QXmlStreamReader &xml, const qint64 msgId);
AttachmentData parseFile(QXmlStreamReader &xml, const qint64 msgId);
/*!
* @brief Parse find databox info xml data.
......
/*
* Copyright (C) 2014-2017 CZ.NIC
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*