-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathxmlfileprocessor.cpp
98 lines (82 loc) · 2.84 KB
/
xmlfileprocessor.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
/*
* Copyright (C) 2013-2015 Atmel Corporation.
*
* This file is licensed under the terms of the Atmel LIMITED License Agreement
* as written in the COPYING file that is delivered in the project root directory.
*
* DISCLAIMER: THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND.
* See the COPYING license file for more details.
*/
#include "qdatastream.h"
#include "xmlfileprocessor.h"
#include <QFile>
#include <QDir>
#include <QDebug>
XMLFileProcessor::XMLFileProcessor(QObject *parent) :
QObject(parent)
{
}
void XMLFileProcessor::processFiles()
{
QDataStream in, init, out;
int screenNumber = 1;
int internalCounter = 0;
QFile result("./applications_list.xml");
if (!result.open(QIODevice::WriteOnly)) {
qDebug() << "Can not open for write: " << result.fileName();
return;
}
QFileInfo fir(result);
qDebug() << "result (W): " << fir.absoluteFilePath();
out.setDevice(&result);
QFile initFile("./applications/xml/header.init");
if (!initFile.open(QIODevice::ReadOnly)) {
qDebug() << "Can not open for read: " << initFile.fileName();
return;
}
QFileInfo fiinit(initFile);
qDebug() << "initFile (R): " << fiinit.absoluteFilePath();
init.setDevice(&initFile);
char *initData = new char[initFile.size()];
init.readRawData(initData, initFile.size());
out.writeRawData(initData, initFile.size());
delete [] initData;
out.writeRawData( "<screen id=\"Screen ", 19);
char c[2];
sprintf(c, "%d", screenNumber);
out.writeRawData( c, 1);
out.writeRawData("\">", 2);
QDir dir("./applications/xml/");
QFileInfoList list = dir.entryInfoList(QDir::NoFilter, QDir::Name);
for (int i = 0; i < list.size(); ++i)
{
QFileInfo fileInfo = list.at(i);
if (fileInfo.absoluteFilePath().endsWith(".xml", Qt::CaseInsensitive))
{
internalCounter++;
if(internalCounter > 6){
screenNumber++;
out.writeRawData( "</screen>", 9);
out.writeRawData( "<screen id=\"Screen ", 19);
char d[2];
sprintf(d, "%d", screenNumber);
out.writeRawData( d, 1);
out.writeRawData("\">", 2);
internalCounter = 1;
}
QFile inFile(fileInfo.absoluteFilePath());
if (!inFile.open(QIODevice::ReadOnly))
continue;
QFileInfo fiinFile(inFile);
qDebug() << "inFile (R): " << fiinFile.absoluteFilePath();
in.setDevice(&inFile);
char *data = new char[inFile.size()];
in.readRawData(data, inFile.size());
out.writeRawData(data, inFile.size());
delete [] data;
}
}
out.writeRawData( "</screen>", 9);
out.writeRawData( "</feed>", 7);
result.close();
}