summaryrefslogtreecommitdiffstats
path: root/qmake
diff options
context:
space:
mode:
authorMiikka Heikkinen <miikka.heikkinen@digia.com>2010-03-11 15:17:46 +0200
committerMiikka Heikkinen <miikka.heikkinen@digia.com>2010-03-11 15:31:25 +0200
commit0e91875345c4505abac54f6d2cb03252332fcbfb (patch)
treecfa76ed9ecd67268d076bc890fe7f2c145c227d0 /qmake
parent90363486e7be80ec533be670cc54aee934c808db (diff)
Support for adding user specified list type content in rss file
Added support for the following RSS_RULES variables to improve control over placement of user defined rules inside application registration resource file: RSS_RULES.header - Rule placed before APP_REGISTRATION_INFO RSS_RULES.footer - Rule placed after APP_REGISTRATION_INFO RSS_RULES.service_list - Rule placed inside a SERVICE_INFO item in the service_list of APP_REGISTRATION_INFO RSS_RULES.file_ownership_list - Rule placed inside a FILE_OWNERSHIP_INFO item in the file_ownership_list of APP_REGISTRATION_INFO RSS_RULES.datatype_list - Rule placed inside a DATATYPE item in the datatype_list of APP_REGISTRATION_INFO Task-number: QT-3083 Reviewed-by: Janne Anttila
Diffstat (limited to 'qmake')
-rw-r--r--qmake/generators/symbian/symmake.cpp79
-rw-r--r--qmake/generators/symbian/symmake.h14
2 files changed, 79 insertions, 14 deletions
diff --git a/qmake/generators/symbian/symmake.cpp b/qmake/generators/symbian/symmake.cpp
index 9ade6991e2..f906c7651a 100644
--- a/qmake/generators/symbian/symmake.cpp
+++ b/qmake/generators/symbian/symmake.cpp
@@ -69,6 +69,12 @@
#define RSS_RULES_BASE "RSS_RULES."
#define RSS_TAG_NBROFICONS "number_of_icons"
#define RSS_TAG_ICONFILE "icon_file"
+#define RSS_TAG_HEADER "header"
+#define RSS_TAG_SERVICE_LIST "service_list"
+#define RSS_TAG_FILE_OWNERSHIP_LIST "file_ownership_list"
+#define RSS_TAG_DATATYPE_LIST "datatype_list"
+#define RSS_TAG_FOOTER "footer"
+#define RSS_TAG_DEFAULT "default_rules" // Same as just giving rules without tag
#define MMP_TARGET "TARGET"
#define MMP_TARGETTYPE "TARGETTYPE"
@@ -200,7 +206,7 @@ bool SymbianMakefileGenerator::writeMakefile(QTextStream &t)
QString numberOfIcons;
QString iconFile;
- QStringList userRssRules;
+ QMap<QString, QStringList> userRssRules;
readRssRules(numberOfIcons, iconFile, userRssRules);
// Get the application translations and convert to symbian OS lang code, i.e. decical number
@@ -1426,7 +1432,7 @@ void SymbianMakefileGenerator::writeBldInfContent(QTextStream &t, bool addDeploy
}
}
-void SymbianMakefileGenerator::writeRegRssFile(QStringList &userItems)
+void SymbianMakefileGenerator::writeRegRssFile(QMap<QString, QStringList> &userItems)
{
QString filename(fixedTarget);
filename.append("_reg.rss");
@@ -1443,6 +1449,8 @@ void SymbianMakefileGenerator::writeRegRssFile(QStringList &userItems)
t << endl;
t << "#include <" << fixedTarget << ".rsg>" << endl;
t << "#include <appinfo.rh>" << endl;
+ foreach(QString item, userItems[RSS_TAG_HEADER])
+ t << item << endl;
t << endl;
t << "UID2 KUidAppRegistrationResourceFile" << endl;
t << "UID3 " << uid3 << endl << endl;
@@ -1450,16 +1458,51 @@ void SymbianMakefileGenerator::writeRegRssFile(QStringList &userItems)
t << "\t{" << endl;
t << "\tapp_file=\"" << fixedTarget << "\";" << endl;
t << "\tlocalisable_resource_file=\"" RESOURCE_DIRECTORY_RESOURCE << fixedTarget << "\";" << endl;
+
+ writeRegRssList(t, userItems[RSS_TAG_SERVICE_LIST],
+ QLatin1String(RSS_TAG_SERVICE_LIST),
+ QLatin1String("SERVICE_INFO"));
+ writeRegRssList(t, userItems[RSS_TAG_FILE_OWNERSHIP_LIST],
+ QLatin1String(RSS_TAG_FILE_OWNERSHIP_LIST),
+ QLatin1String("FILE_OWNERSHIP_INFO"));
+ writeRegRssList(t, userItems[RSS_TAG_DATATYPE_LIST],
+ QLatin1String(RSS_TAG_DATATYPE_LIST),
+ QLatin1String("DATATYPE"));
t << endl;
- foreach(QString item, userItems)
- t << "\t" << item << endl;
+ foreach(QString item, userItems[RSS_TAG_DEFAULT])
+ t << "\t" << item.replace("\n","\n\t") << endl;
t << "\t}" << endl;
+
+ foreach(QString item, userItems[RSS_TAG_FOOTER])
+ t << item << endl;
} else {
PRINT_FILE_CREATE_ERROR(filename)
}
}
+void SymbianMakefileGenerator::writeRegRssList(QTextStream &t,
+ QStringList &userList,
+ const QString &listTag,
+ const QString &listItem)
+{
+ int itemCount = userList.count();
+ if (itemCount) {
+ t << "\t" << listTag << " ="<< endl;
+ t << "\t\t{" << endl;
+ foreach(QString item, userList) {
+ t << "\t\t" << listItem << endl;
+ t << "\t\t\t{" << endl;
+ t << "\t\t\t" << item.replace("\n","\n\t\t\t") << endl;
+ t << "\t\t\t}";
+ if (--itemCount)
+ t << ",";
+ t << endl;
+ }
+ t << "\t\t}; "<< endl;
+ }
+}
+
void SymbianMakefileGenerator::writeRssFile(QString &numberOfIcons, QString &iconFile)
{
QString filename(fixedTarget);
@@ -1538,7 +1581,9 @@ void SymbianMakefileGenerator::writeLocFile(QStringList &symbianLangCodes)
}
}
-void SymbianMakefileGenerator::readRssRules(QString &numberOfIcons, QString &iconFile, QStringList &userRssRules)
+void SymbianMakefileGenerator::readRssRules(QString &numberOfIcons,
+ QString &iconFile, QMap<QString,
+ QStringList> &userRssRules)
{
for (QMap<QString, QStringList>::iterator it = project->variables().begin(); it != project->variables().end(); ++it) {
if (it.key().startsWith(RSS_RULES_BASE)) {
@@ -1550,14 +1595,16 @@ void SymbianMakefileGenerator::readRssRules(QString &numberOfIcons, QString &ico
QStringList newValues;
QStringList values = it.value();
foreach(QString item, values) {
- // If there is no stringlist defined for a rule, use rule name directly
+ // If there is no stringlist defined for a rule, use rule value directly
// This is convenience for defining single line statements
if (project->values(item).isEmpty()) {
newValues << item;
} else {
+ QStringList itemList;
foreach(QString itemRow, project->values(item)) {
- newValues << itemRow;
+ itemList << itemRow;
}
+ newValues << itemList.join("\n");
}
}
// Verify thet there is exactly one value in RSS_TAG_NBROFICONS
@@ -1578,6 +1625,14 @@ void SymbianMakefileGenerator::readRssRules(QString &numberOfIcons, QString &ico
RSS_RULES_BASE, RSS_TAG_ICONFILE);
continue;
}
+ } else if (newKey == RSS_TAG_HEADER
+ || newKey == RSS_TAG_SERVICE_LIST
+ || newKey == RSS_TAG_FILE_OWNERSHIP_LIST
+ || newKey == RSS_TAG_DATATYPE_LIST
+ || newKey == RSS_TAG_FOOTER
+ || newKey == RSS_TAG_DEFAULT) {
+ userRssRules[newKey] = newValues;
+ continue;
} else {
fprintf(stderr, "Warning: Unsupported key:'%s%s'\n",
RSS_RULES_BASE, newKey.toLatin1().constData());
@@ -1586,15 +1641,17 @@ void SymbianMakefileGenerator::readRssRules(QString &numberOfIcons, QString &ico
}
}
+ QStringList newValues;
foreach(QString item, project->values(RSS_RULES)) {
- // If there is no stringlist defined for a rule, use rule name directly
- // This is convenience for defining single line mmp statements
+ // If there is no stringlist defined for a rule, use rule value directly
+ // This is convenience for defining single line statements
if (project->values(item).isEmpty()) {
- userRssRules << item;
+ newValues << item;
} else {
- userRssRules << project->values(item);
+ newValues << project->values(item);
}
}
+ userRssRules[RSS_TAG_DEFAULT] << newValues;
// Validate that either both RSS_TAG_NBROFICONS and RSS_TAG_ICONFILE keys exist
// or neither of them exist
diff --git a/qmake/generators/symbian/symmake.h b/qmake/generators/symbian/symmake.h
index ca697b486a..9de852af1a 100644
--- a/qmake/generators/symbian/symmake.h
+++ b/qmake/generators/symbian/symmake.h
@@ -107,7 +107,10 @@ protected:
QString &checkString);
void writeHeader(QTextStream &t);
- void writeBldInfContent(QTextStream& t, bool addDeploymentExtension, const QString &iconFile, DeploymentList &depList);
+ void writeBldInfContent(QTextStream& t,
+ bool addDeploymentExtension,
+ const QString &iconFile,
+ DeploymentList &depList);
static bool removeDuplicatedStrings(QStringList& stringList);
@@ -127,10 +130,15 @@ protected:
void writeCustomDefFile();
- void writeRegRssFile(QStringList &useritems);
+ void writeRegRssFile(QMap<QString, QStringList> &useritems);
+ void writeRegRssList(QTextStream &t, QStringList &userList,
+ const QString &listTag,
+ const QString &listItem);
void writeRssFile(QString &numberOfIcons, QString &iconfile);
void writeLocFile(QStringList &symbianLangCodes);
- void readRssRules(QString &numberOfIcons, QString &iconFile, QStringList &userRssRules);
+ void readRssRules(QString &numberOfIcons,
+ QString &iconFile,
+ QMap<QString, QStringList> &userRssRules);
QStringList symbianLangCodesFromTsFiles();
void fillQt2S60LangMapTable();