Skip to content
Snippets Groups Projects
Commit e84ffa22 authored by Alessandro Portale's avatar Alessandro Portale
Browse files

Added (optional) version number and checksum to generated files.

parent f2f882a9
No related branches found
No related tags found
No related merge requests found
...@@ -474,18 +474,11 @@ QString QmlStandaloneApp::templatesRoot() ...@@ -474,18 +474,11 @@ QString QmlStandaloneApp::templatesRoot()
return Core::ICore::instance()->resourcePath() + QLatin1String("/templates/qmlapp/"); return Core::ICore::instance()->resourcePath() + QLatin1String("/templates/qmlapp/");
} }
static Core::GeneratedFile generateFileCopy(const QString &source, static Core::GeneratedFile file(const QByteArray &data, const QString &targetFile)
const QString &target,
bool openEditor = false)
{ {
QFile sourceFile(source); Core::GeneratedFile generatedFile(targetFile);
sourceFile.open(QIODevice::ReadOnly);
Q_ASSERT(sourceFile.isOpen());
Core::GeneratedFile generatedFile(target);
generatedFile.setBinary(true); generatedFile.setBinary(true);
generatedFile.setBinaryContents(sourceFile.readAll()); generatedFile.setBinaryContents(data);
if (openEditor)
generatedFile.setAttributes(Core::GeneratedFile::OpenEditorAttribute);
return generatedFile; return generatedFile;
} }
...@@ -493,22 +486,19 @@ Core::GeneratedFiles QmlStandaloneApp::generateFiles(QString *errorMessage) cons ...@@ -493,22 +486,19 @@ Core::GeneratedFiles QmlStandaloneApp::generateFiles(QString *errorMessage) cons
{ {
Core::GeneratedFiles files; Core::GeneratedFiles files;
Core::GeneratedFile generatedProFile(path(AppProfile)); files.append(file(generateFile(AppProfileFile, errorMessage), path(AppProfile)));
generatedProFile.setContents(generateProFile(errorMessage)); files.last().setAttributes(Core::GeneratedFile::OpenProjectAttribute);
generatedProFile.setAttributes(Core::GeneratedFile::OpenProjectAttribute); files.append(file(generateFile(AppPriFile, errorMessage), path(AppPri)));
files.append(generatedProFile);
files.append(generateFileCopy(path(AppPriOrigin), path(AppPri)));
if (!useExistingMainQml()) if (!useExistingMainQml()) {
files.append(generateFileCopy(path(MainQmlOrigin), path(MainQml), true)); files.append(file(generateFile(MainQmlFile, errorMessage), path(MainQml)));
files.last().setAttributes(Core::GeneratedFile::OpenEditorAttribute);
Core::GeneratedFile generatedMainCppFile(path(MainCpp)); }
generatedMainCppFile.setContents(generateMainCpp(errorMessage));
files.append(generatedMainCppFile);
files.append(generateFileCopy(path(AppViewerCppOrigin), path(AppViewerCpp))); files.append(file(generateFile(MainCppFile, errorMessage), path(MainCpp)));
files.append(generateFileCopy(path(AppViewerHOrigin), path(AppViewerH))); files.append(file(generateFile(AppViewerCppFile, errorMessage), path(AppViewerCpp)));
files.append(generateFileCopy(path(SymbianSvgIconOrigin), path(SymbianSvgIcon))); files.append(file(generateFile(AppViewerHFile, errorMessage), path(AppViewerH)));
files.append(file(generateFile(SymbianSvgIconFile, errorMessage), path(SymbianSvgIcon)));
return files; return files;
} }
...@@ -529,5 +519,68 @@ const QList<QmlModule*> QmlStandaloneApp::modules() const ...@@ -529,5 +519,68 @@ const QList<QmlModule*> QmlStandaloneApp::modules() const
return m_modules; return m_modules;
} }
static QByteArray readBlob(const QString &source)
{
QFile sourceFile(source);
sourceFile.open(QIODevice::ReadOnly);
Q_ASSERT(sourceFile.isOpen());
return sourceFile.readAll();
}
QByteArray QmlStandaloneApp::generateFile(GeneratedFile file, const QString *errorMessage) const
{
QByteArray data;
const QString cFileComment = QLatin1String("//");
const QString proFileComment = QLatin1String("#");
QString comment = cFileComment;
bool versionAndChecksum = false;
switch (file) {
case MainQmlFile:
data = readBlob(path(MainQmlOrigin));
break;
case MainCppFile:
data = generateMainCpp(errorMessage);
break;
case SymbianSvgIconFile:
data = readBlob(path(SymbianSvgIconOrigin));
break;
case AppProfileFile:
data = generateProFile(errorMessage);
comment = proFileComment;
break;
case AppPriFile:
data = readBlob(path(AppPriOrigin));
comment = proFileComment;
versionAndChecksum = true;
break;
case AppViewerCppFile:
data = readBlob(path(AppViewerCppOrigin));
versionAndChecksum = true;
break;
case AppViewerHFile:
default:
data = readBlob(path(AppViewerHOrigin));
versionAndChecksum = true;
break;
}
if (!versionAndChecksum)
return data;
QByteArray versioned = data;
versioned.replace('\x0D', "");
versioned.replace('\x0A', "");
const quint16 checkSum = qChecksum(versioned.constData(), versioned.length());
const QString checkSumString = QString::number(checkSum, 16);
const QString versionString = QString::number(stubVersion());
const QString versionLine =
comment + QLatin1String(" checksum: ") + checkSumString
+ QLatin1String(" version: ") + versionString + QLatin1Char('\x0A');
return versionLine.toAscii() + data;
}
int QmlStandaloneApp::stubVersion()
{
return 1;
}
} // namespace Internal } // namespace Internal
} // namespace QmlProjectManager } // namespace QmlProjectManager
...@@ -112,6 +112,16 @@ public: ...@@ -112,6 +112,16 @@ public:
ModulesDir ModulesDir
}; };
enum GeneratedFile {
MainQmlFile,
MainCppFile,
AppProfileFile,
AppPriFile,
AppViewerCppFile,
AppViewerHFile,
SymbianSvgIconFile
};
QmlStandaloneApp(); QmlStandaloneApp();
~QmlStandaloneApp(); ~QmlStandaloneApp();
...@@ -142,6 +152,8 @@ public: ...@@ -142,6 +152,8 @@ public:
bool useExistingMainQml() const; bool useExistingMainQml() const;
QString error() const; QString error() const;
const QList<QmlModule*> modules() const; const QList<QmlModule*> modules() const;
QByteArray generateFile(GeneratedFile file, const QString *errorMessage) const;
static int stubVersion();
private: private:
QByteArray generateMainCpp(const QString *errorMessage) const; QByteArray generateMainCpp(const QString *errorMessage) const;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment