aboutsummaryrefslogtreecommitdiff
path: root/launcher
diff options
context:
space:
mode:
authorTrial97 <alexandru.tripon97@gmail.com>2023-06-27 18:09:29 +0300
committerTrial97 <alexandru.tripon97@gmail.com>2023-07-14 23:34:28 +0300
commit50dae9d4f38d84f168922552e9f87bf2d1130d98 (patch)
tree8f2f4048aa4e30b93fffccfdc37f5ac31defea3d /launcher
parent9a3931dac6e75a79989f13b10604a142dbafcfbb (diff)
downloadPrismLauncher-50dae9d4f38d84f168922552e9f87bf2d1130d98.tar.gz
PrismLauncher-50dae9d4f38d84f168922552e9f87bf2d1130d98.tar.bz2
PrismLauncher-50dae9d4f38d84f168922552e9f87bf2d1130d98.zip
Moved to separate functions
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
Diffstat (limited to 'launcher')
-rw-r--r--launcher/modplatform/helpers/ExportToModList.cpp264
1 files changed, 143 insertions, 121 deletions
diff --git a/launcher/modplatform/helpers/ExportToModList.cpp b/launcher/modplatform/helpers/ExportToModList.cpp
index 86bb9c41..a8a015e3 100644
--- a/launcher/modplatform/helpers/ExportToModList.cpp
+++ b/launcher/modplatform/helpers/ExportToModList.cpp
@@ -21,135 +21,157 @@
#include <QJsonObject>
namespace ExportToModList {
-QString ExportToModList(QList<Mod*> mods, Formats format, OptionalData extraData)
+QString toHTML(QList<Mod*> mods, OptionalData extraData)
{
- switch (format) {
- case HTML: {
- QStringList lines;
- for (auto mod : mods) {
- auto meta = mod->metadata();
- auto modName = mod->name();
- if (extraData & Url) {
- auto url = mod->metaurl();
- if (!url.isEmpty())
- modName = QString("<a href=\"%1\">%2</a>").arg(url, modName);
- }
- auto line = modName;
- if (extraData & Version) {
- auto ver = mod->version();
- if (ver.isEmpty() && meta != nullptr)
- ver = meta->version().toString();
- if (!ver.isEmpty())
- line += QString(" [%1]").arg(ver);
- }
- if (extraData & Authors && !mod->authors().isEmpty())
- line += " by " + mod->authors().join(", ");
- lines.append(QString("<li>%1</li>").arg(line));
- }
- return QString("<html><body><ul>\n\t%1\n</ul></body></html>").arg(lines.join("\n\t"));
+ QStringList lines;
+ for (auto mod : mods) {
+ auto meta = mod->metadata();
+ auto modName = mod->name();
+ if (extraData & Url) {
+ auto url = mod->metaurl();
+ if (!url.isEmpty())
+ modName = QString("<a href=\"%1\">%2</a>").arg(url, modName);
}
- case MARKDOWN: {
- QStringList lines;
- for (auto mod : mods) {
- auto meta = mod->metadata();
- auto modName = mod->name();
- if (extraData & Url) {
- auto url = mod->metaurl();
- if (!url.isEmpty())
- modName = QString("[%1](%2)").arg(modName, url);
- }
- auto line = modName;
- if (extraData & Version) {
- auto ver = mod->version();
- if (ver.isEmpty() && meta != nullptr)
- ver = meta->version().toString();
- if (!ver.isEmpty())
- line += QString(" [%1]").arg(ver);
- }
- if (extraData & Authors && !mod->authors().isEmpty())
- line += " by " + mod->authors().join(", ");
- lines << "- " + line;
- }
- return lines.join("\n");
+ auto line = modName;
+ if (extraData & Version) {
+ auto ver = mod->version();
+ if (ver.isEmpty() && meta != nullptr)
+ ver = meta->version().toString();
+ if (!ver.isEmpty())
+ line += QString(" [%1]").arg(ver);
}
- case PLAINTXT: {
- QStringList lines;
- for (auto mod : mods) {
- auto meta = mod->metadata();
- auto modName = mod->name();
+ if (extraData & Authors && !mod->authors().isEmpty())
+ line += " by " + mod->authors().join(", ");
+ lines.append(QString("<li>%1</li>").arg(line));
+ }
+ return QString("<html><body><ul>\n\t%1\n</ul></body></html>").arg(lines.join("\n\t"));
+}
- auto line = modName;
- if (extraData & Url) {
- auto url = mod->metaurl();
- if (!url.isEmpty())
- line += QString(" (%1)").arg(url);
- }
- if (extraData & Version) {
- auto ver = mod->version();
- if (ver.isEmpty() && meta != nullptr)
- ver = meta->version().toString();
- if (!ver.isEmpty())
- line += QString(" [%1]").arg(ver);
- }
- if (extraData & Authors && !mod->authors().isEmpty())
- line += " by " + mod->authors().join(", ");
- lines << line;
- }
- return lines.join("\n");
+QString toMARKDOWN(QList<Mod*> mods, OptionalData extraData)
+{
+ QStringList lines;
+ for (auto mod : mods) {
+ auto meta = mod->metadata();
+ auto modName = mod->name();
+ if (extraData & Url) {
+ auto url = mod->metaurl();
+ if (!url.isEmpty())
+ modName = QString("[%1](%2)").arg(modName, url);
}
- case JSON: {
- QJsonArray lines;
- for (auto mod : mods) {
- auto meta = mod->metadata();
- auto modName = mod->name();
- QJsonObject line;
- line["name"] = modName;
- if (extraData & Url) {
- auto url = mod->metaurl();
- if (!url.isEmpty())
- line["url"] = url;
- }
- if (extraData & Version) {
- auto ver = mod->version();
- if (ver.isEmpty() && meta != nullptr)
- ver = meta->version().toString();
- if (!ver.isEmpty())
- line["version"] = ver;
- }
- if (extraData & Authors && !mod->authors().isEmpty())
- line["authors"] = QJsonArray::fromStringList(mod->authors());
- lines << line;
- }
- QJsonDocument doc;
- doc.setArray(lines);
- return doc.toJson();
+ auto line = modName;
+ if (extraData & Version) {
+ auto ver = mod->version();
+ if (ver.isEmpty() && meta != nullptr)
+ ver = meta->version().toString();
+ if (!ver.isEmpty())
+ line += QString(" [%1]").arg(ver);
}
- case CSV: {
- QStringList lines;
- for (auto mod : mods) {
- QStringList data;
- auto meta = mod->metadata();
- auto modName = mod->name();
+ if (extraData & Authors && !mod->authors().isEmpty())
+ line += " by " + mod->authors().join(", ");
+ lines << "- " + line;
+ }
+ return lines.join("\n");
+}
- data << modName;
- if (extraData & Url) {
- auto url = mod->metaurl();
- if (!url.isEmpty())
- data << url;
- }
- if (extraData & Version) {
- auto ver = mod->version();
- if (ver.isEmpty() && meta != nullptr)
- ver = meta->version().toString();
- if (!ver.isEmpty())
- data << ver;
- }
- if (extraData & Authors && !mod->authors().isEmpty())
- data << QString("\"%1\"").arg(mod->authors().join(","));
- lines << data.join(",");
- }
- return lines.join("\n");
+QString toPLAINTXT(QList<Mod*> mods, OptionalData extraData)
+{
+ QStringList lines;
+ for (auto mod : mods) {
+ auto meta = mod->metadata();
+ auto modName = mod->name();
+
+ auto line = modName;
+ if (extraData & Url) {
+ auto url = mod->metaurl();
+ if (!url.isEmpty())
+ line += QString(" (%1)").arg(url);
+ }
+ if (extraData & Version) {
+ auto ver = mod->version();
+ if (ver.isEmpty() && meta != nullptr)
+ ver = meta->version().toString();
+ if (!ver.isEmpty())
+ line += QString(" [%1]").arg(ver);
}
+ if (extraData & Authors && !mod->authors().isEmpty())
+ line += " by " + mod->authors().join(", ");
+ lines << line;
+ }
+ return lines.join("\n");
+}
+
+QString toJSON(QList<Mod*> mods, OptionalData extraData)
+{
+ QJsonArray lines;
+ for (auto mod : mods) {
+ auto meta = mod->metadata();
+ auto modName = mod->name();
+ QJsonObject line;
+ line["name"] = modName;
+ if (extraData & Url) {
+ auto url = mod->metaurl();
+ if (!url.isEmpty())
+ line["url"] = url;
+ }
+ if (extraData & Version) {
+ auto ver = mod->version();
+ if (ver.isEmpty() && meta != nullptr)
+ ver = meta->version().toString();
+ if (!ver.isEmpty())
+ line["version"] = ver;
+ }
+ if (extraData & Authors && !mod->authors().isEmpty())
+ line["authors"] = QJsonArray::fromStringList(mod->authors());
+ lines << line;
+ }
+ QJsonDocument doc;
+ doc.setArray(lines);
+ return doc.toJson();
+}
+
+QString toCSV(QList<Mod*> mods, OptionalData extraData)
+{
+ QStringList lines;
+ for (auto mod : mods) {
+ QStringList data;
+ auto meta = mod->metadata();
+ auto modName = mod->name();
+
+ data << modName;
+ if (extraData & Url)
+ data << mod->metaurl();
+ if (extraData & Version) {
+ auto ver = mod->version();
+ if (ver.isEmpty() && meta != nullptr)
+ ver = meta->version().toString();
+ data << ver;
+ }
+ if (extraData & Authors) {
+ QString authors;
+ if (mod->authors().length() == 1)
+ authors = mod->authors().back();
+ else if (mod->authors().length() > 1)
+ authors = QString("\"%1\"").arg(mod->authors().join(","));
+ data << authors;
+ }
+ lines << data.join(",");
+ }
+ return lines.join("\n");
+}
+
+QString ExportToModList(QList<Mod*> mods, Formats format, OptionalData extraData)
+{
+ switch (format) {
+ case HTML:
+ return toHTML(mods, extraData);
+ case MARKDOWN:
+ return toMARKDOWN(mods, extraData);
+ case PLAINTXT:
+ return toPLAINTXT(mods, extraData);
+ case JSON:
+ return toJSON(mods, extraData);
+ case CSV:
+ return toCSV(mods, extraData);
default: {
return QString("unknown format:%1").arg(format);
}