diff --git a/src/plugins/qt4projectmanager/qt-s60/s60publisherovi.cpp b/src/plugins/qt4projectmanager/qt-s60/s60publisherovi.cpp index 93e5feb76251824ca2675c500ad733113b678d63..57bf18a2d1de525b75592bf90a67c76288392276 100644 --- a/src/plugins/qt4projectmanager/qt-s60/s60publisherovi.cpp +++ b/src/plugins/qt4projectmanager/qt-s60/s60publisherovi.cpp @@ -266,7 +266,7 @@ void S60PublisherOvi::updateProFile(const QString &var, const QString &values) //todo: after ossi has added scope profile writing, make sure the following works //QString scope("symbian"); - ProWriter::addVarValues(profile, &lines, m_qt4project->rootProjectNode()->path(), QStringList() << values, var); + ProWriter::addVarValues(profile, &lines, QStringList() << values, var); if (qfile.open(QIODevice::WriteOnly | QIODevice::Text)) { qfile.write(lines.join("\n").toLocal8Bit()); diff --git a/src/shared/proparser/prowriter.cpp b/src/shared/proparser/prowriter.cpp index 7831991ae52d5c9d3db9dc699adc8fd473d047d4..353484d1c74fd3006591e2b8efe2bc6adf3422d0 100644 --- a/src/shared/proparser/prowriter.cpp +++ b/src/shared/proparser/prowriter.cpp @@ -175,17 +175,8 @@ static const ushort *skipToken(ushort tok, const ushort *&tokPtr, int &lineNo) } void ProWriter::addVarValues(ProFile *profile, QStringList *lines, - const QDir &proFileDir, const QStringList &values, const QString &var, - bool valuesAreFiles) + const QStringList &values, const QString &var) { - QStringList valuesToWrite; - if (valuesAreFiles) { - foreach (const QString &v, values) - valuesToWrite << proFileDir.relativeFilePath(v); - } else { - valuesToWrite = values; - } - // Check if variable item exists as child of root item const ushort *tokPtr = profile->tokPtr(); int lineNo = 0; @@ -213,7 +204,7 @@ void ProWriter::addVarValues(ProFile *profile, QStringList *lines, } } QString added; - foreach (const QString &v, valuesToWrite) + foreach (const QString &v, values) added += QLatin1String(" ") + v + QLatin1String(" \\\n"); added.chop(3); lines->insert(lineNo, added); @@ -227,11 +218,21 @@ void ProWriter::addVarValues(ProFile *profile, QStringList *lines, // Create & append new variable item QString added = QLatin1Char('\n') + var + QLatin1String(" +="); - foreach (const QString &v, valuesToWrite) + foreach (const QString &v, values) added += QLatin1String(" \\\n ") + v; *lines << added; } +void ProWriter::addFiles(ProFile *profile, QStringList *lines, + const QDir &proFileDir, const QStringList &values, const QString &var) +{ + QStringList valuesToWrite; + foreach (const QString &v, values) + valuesToWrite << proFileDir.relativeFilePath(v); + + addVarValues(profile, lines, valuesToWrite, var); +} + static void findProVariables(const ushort *tokPtr, const QStringList &vars, QList<int> *proVars, const uint firstLine = 0) { @@ -256,25 +257,17 @@ static void findProVariables(const ushort *tokPtr, const QStringList &vars, } } -QStringList ProWriter::removeVarValues(ProFile *profile, QStringList *lines, - const QDir &proFileDir, const QStringList &values, const QStringList &vars, - bool valuesAreFiles) +QList<int> ProWriter::removeVarValues(ProFile *profile, QStringList *lines, + const QStringList &values, const QStringList &vars) { - QStringList notChanged = values; + QList<int> notChanged; + // yeah, this is a bit silly + for (int i = 0; i < values.size(); i++) + notChanged << i; QList<int> varLines; findProVariables(profile->tokPtr(), vars, &varLines); - QStringList valuesToFind; - if (valuesAreFiles) { - // This is a tad stupid - basically, it can remove only entries which - // the above code added. - foreach (const QString &absoluteFilePath, values) - valuesToFind << proFileDir.relativeFilePath(absoluteFilePath); - } else { - valuesToFind = values; - } - // This code expects proVars to be sorted by the variables' appearance in the file. int delta = 1; foreach (int ln, varLines) { @@ -326,9 +319,9 @@ QStringList ProWriter::removeVarValues(ProFile *profile, QStringList *lines, colNo++; } const QString fn = line.mid(varCol, colNo - varCol); - const int pos = valuesToFind.indexOf(fn); + const int pos = values.indexOf(fn); if (pos != -1) { - notChanged.removeOne(values.at(pos)); + notChanged.removeOne(pos); if (colNo < lineLen) colNo++; else if (varCol) @@ -380,3 +373,18 @@ QStringList ProWriter::removeVarValues(ProFile *profile, QStringList *lines, } return notChanged; } + +QStringList ProWriter::removeFiles(ProFile *profile, QStringList *lines, + const QDir &proFileDir, const QStringList &values, const QStringList &vars) +{ + // This is a tad stupid - basically, it can remove only entries which + // the above code added. + QStringList valuesToFind; + foreach (const QString &absoluteFilePath, values) + valuesToFind << proFileDir.relativeFilePath(absoluteFilePath); + + QStringList notChanged; + foreach (int i, removeVarValues(profile, lines, valuesToFind, vars)) + notChanged.append(values.at(i)); + return notChanged; +} diff --git a/src/shared/proparser/prowriter.h b/src/shared/proparser/prowriter.h index 5aacf6a16c42663e74d819789def06413274057e..40ce8a73da2339b59c64f61a0828867d7ea3ce1f 100644 --- a/src/shared/proparser/prowriter.h +++ b/src/shared/proparser/prowriter.h @@ -49,41 +49,15 @@ namespace Internal { class ProWriter { public: - static void addFiles(ProFile *profile, QStringList *lines, - const QDir &proFileDir, const QStringList &filePaths, const QString &var) - { - addVarValues(profile, lines, proFileDir, filePaths, var, true); - } - - static QStringList removeFiles(ProFile *profile, QStringList *lines, - const QDir &proFileDir, const QStringList &filePaths, - const QStringList &vars) - { - return removeVarValues(profile, lines, proFileDir, filePaths, vars, true); - } - - static void addVarValues(ProFile *profile, QStringList *lines, - const QDir &proFileDir, const QStringList &values, const QString &var) - { - addVarValues(profile, lines, proFileDir, values, var, false); - } - - static QStringList removeVarValues(ProFile *profile, QStringList *lines, - const QDir &proFileDir, const QStringList &values, - const QStringList &vars) - { - return removeVarValues(profile, lines, proFileDir, values, vars, false); - } - -private: - static void addVarValues(ProFile *profile, QStringList *lines, - const QDir &proFileDir, const QStringList &values, const QString &var, - bool valuesAreFiles); + const QStringList &values, const QString &var); + static QList<int> removeVarValues(ProFile *profile, QStringList *lines, + const QStringList &values, const QStringList &vars); - static QStringList removeVarValues(ProFile *profile, QStringList *lines, - const QDir &proFileDir, const QStringList &values, - const QStringList &vars, bool valuesAreFiles); + static void addFiles(ProFile *profile, QStringList *lines, + const QDir &proFileDir, const QStringList &filePaths, const QString &var); + static QStringList removeFiles(ProFile *profile, QStringList *lines, + const QDir &proFileDir, const QStringList &filePaths, const QStringList &vars); }; } // namespace Internal