31 #include "templates/quiz/quizcore.h"
33 #include "templates/quiz/quizeditor.h"
34 #include "templates/quiz/quizsimulator.h"
35 #include "miscellaneous/application.h"
36 #include "miscellaneous/iofactory.h"
37 #include "core/templatefactory.h"
38 #include "core/templateentrypoint.h"
39 #include "core/templategenerator.h"
40 #include "definitions/definitions.h"
43 #include <QTextStream>
55 QuizCore::~QuizCore() {
56 qDebug(
"Destroying QuizCore instance.");
62 qApp->templateManager()->generator()->cleanWorkspace();
69 if (quiz_data.isEmpty()) {
74 QString temp_folder = qApp->templateManager()->tempDirectory();
75 QDir temp_directory(temp_folder);
76 QString base_folder = temp_folder +
"/" + APP_LOW_NAME;
77 QDir base_directory(base_folder);
82 temp_directory.mkdir(APP_LOW_NAME);
83 base_directory.mkdir(
"assets");
85 QFile index_file(base_folder +
"/assets/quiz_content.xml");
86 index_file.open(QIODevice::WriteOnly | QIODevice::Text);
90 QTextStream out(&index_file);
99 QString new_apk_name = input_apk_file;
100 if (!QFile::copy(APP_TEMPLATES_PATH +
"/" +
entryPoint()->baseFolder() +
"/" +
entryPoint()->mobileApplicationApkFile(),
101 base_folder +
"/" + new_apk_name)) {
102 qApp->templateManager()->generator()->cleanWorkspace();
111 zip.setWorkingDirectory(base_folder);
112 zip.start(qApp->zipUtilityPath(), QStringList() <<
"-m" <<
"-r" << new_apk_name <<
"assets");
113 zip.waitForFinished();
115 if (zip.exitCode() != EXIT_STATUS_ZIP_NORMAL) {
117 qApp->templateManager()->generator()->cleanWorkspace();
124 QString pem_certificate = QDir::toNativeSeparators(APP_CERT_PATH +
"/" + CERTIFICATE_PATH);
125 QString pk_certificate = QDir::toNativeSeparators(APP_CERT_PATH +
"/" + KEY_PATH);
128 signapk.setWorkingDirectory(base_folder);
129 signapk.start(qApp->javaInterpreterPath(), QStringList() <<
"-jar" << qApp->signApkUtlityPath() <<
130 pem_certificate << pk_certificate << new_apk_name <<
131 QDir::toNativeSeparators(new_apk_name +
".new"));
132 signapk.waitForFinished();
134 if (signapk.exitCode() != EXIT_STATUS_SIGNAPK_WORKING) {
135 qApp->templateManager()->generator()->cleanWorkspace();
136 return SignApkProblem;
143 qApp->templateManager()->outputDirectory() +
"/" + new_apk_name)) {
144 qApp->templateManager()->generator()->cleanWorkspace();
148 output_file = QDir(qApp->templateManager()->outputDirectory()).filePath(new_apk_name);
151 qApp->templateManager()->generator()->cleanWorkspace();
virtual TemplateEditor * editor() const
Access to editor widget of the template.
Simulator for Quiz template.
static bool copyFile(const QString &source, const QString &destination)
Copies source file into destination path.
GenerationResult generateMobileApplication(const QString &input_apk_file, QString &output_file)
Generates APK file from current project with active settings.
void generationProgress(int percent_completed, const QString &progress_info)
Emitted when there is something new concerning generating of mobile APK application.
virtual TemplateEntryPoint * entryPoint() const
Access to entry point of the template.
The entry point for a template.
The core class container for single template.
GenerationResult
Possible results of generation of bundle data.
virtual QString generateBundleData()=0
Generates RAW data which represent data of this template.