summaryrefslogtreecommitdiff
path: root/src/modinfo.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/modinfo.cpp')
-rw-r--r--src/modinfo.cpp43
1 files changed, 41 insertions, 2 deletions
diff --git a/src/modinfo.cpp b/src/modinfo.cpp
index aa831e04..4befd232 100644
--- a/src/modinfo.cpp
+++ b/src/modinfo.cpp
@@ -474,6 +474,7 @@ ModInfoRegular::ModInfoRegular(const QDir &path, DirectoryEntry **directoryStruc
: ModInfoWithConflictInfo(directoryStructure)
, m_Name(path.dirName())
, m_Path(path.absolutePath())
+ , m_Repository()
, m_MetaInfoChanged(false)
, m_EndorsedState(ENDORSED_UNKNOWN)
, m_NexusBridge()
@@ -515,7 +516,6 @@ bool ModInfoRegular::isEmpty() const
void ModInfoRegular::readMeta()
{
QSettings metaFile(m_Path + "/meta.ini", QSettings::IniFormat);
-
m_Notes = metaFile.value("notes", "").toString();
m_NexusID = metaFile.value("modid", -1).toInt();
m_Version.parse(metaFile.value("version", "").toString());
@@ -523,6 +523,7 @@ void ModInfoRegular::readMeta()
m_IgnoredVersion = metaFile.value("ignoredVersion", "").toString();
m_InstallationFile = metaFile.value("installationFile", "").toString();
m_NexusDescription = metaFile.value("nexusDescription", "").toString();
+ m_Repository = metaFile.value("repository", "Nexus").toString();
m_LastNexusQuery = QDateTime::fromString(metaFile.value("lastNexusQuery", "").toString(), Qt::ISODate);
if (metaFile.contains("endorsed")) {
if (metaFile.value("endorsed").canConvert<int>()) {
@@ -555,6 +556,13 @@ void ModInfoRegular::readMeta()
}
}
+ int numFiles = metaFile.beginReadArray("installedFiles");
+ for (int i = 0; i < numFiles; ++i) {
+ metaFile.setArrayIndex(i);
+ m_InstalledFileIDs.insert(std::make_pair(metaFile.value("modid").toInt(), metaFile.value("fileid").toInt()));
+ }
+ metaFile.endArray();
+
m_MetaInfoChanged = false;
}
@@ -570,6 +578,8 @@ void ModInfoRegular::saveMeta()
metaFile.setValue("newestVersion", m_NewestVersion.canonicalString());
metaFile.setValue("ignoredVersion", m_IgnoredVersion.canonicalString());
metaFile.setValue("version", m_Version.canonicalString());
+ metaFile.setValue("installationFile", m_InstallationFile);
+ metaFile.setValue("repository", m_Repository);
metaFile.setValue("modid", m_NexusID);
metaFile.setValue("notes", m_Notes);
metaFile.setValue("nexusDescription", m_NexusDescription);
@@ -577,6 +587,16 @@ void ModInfoRegular::saveMeta()
if (m_EndorsedState != ENDORSED_UNKNOWN) {
metaFile.setValue("endorsed", m_EndorsedState);
}
+
+ metaFile.beginWriteArray("installedFiles");
+ int idx = 0;
+ for (auto iter = m_InstalledFileIDs.begin(); iter != m_InstalledFileIDs.end(); ++iter) {
+ metaFile.setArrayIndex(idx++);
+ metaFile.setValue("modid", iter->first);
+ metaFile.setValue("fileid", iter->second);
+ }
+ metaFile.endArray();
+
metaFile.sync(); // sync needs to be called to ensure the file is created
if (metaFile.status() == QSettings::NoError) {
@@ -750,8 +770,10 @@ void ModInfoRegular::setVersion(const VersionInfo &version)
m_MetaInfoChanged = true;
}
-void ModInfoRegular::setNewestVersion(const VersionInfo &version) {
+void ModInfoRegular::setNewestVersion(const VersionInfo &version)
+{
m_NewestVersion = version;
+ m_MetaInfoChanged = true;
}
void ModInfoRegular::setNexusDescription(const QString &description)
@@ -760,6 +782,12 @@ void ModInfoRegular::setNexusDescription(const QString &description)
m_MetaInfoChanged = true;
}
+void ModInfoRegular::setInstallationFile(const QString &fileName)
+{
+ m_InstallationFile = fileName;
+ m_MetaInfoChanged = true;
+}
+
void ModInfoRegular::addNexusCategory(int categoryID)
{
m_Categories.insert(CategoryFactory::instance().resolveNexusID(categoryID));
@@ -891,6 +919,11 @@ QString ModInfoRegular::getNexusDescription() const
return m_NexusDescription;
}
+QString ModInfoRegular::repository() const
+{
+ return m_Repository;
+}
+
ModInfoRegular::EEndorsedState ModInfoRegular::endorsedState() const
{
return m_EndorsedState;
@@ -912,6 +945,12 @@ QStringList ModInfoRegular::archives() const
return result;
}
+void ModInfoRegular::addInstalledFile(int modId, int fileId)
+{
+ m_InstalledFileIDs.insert(std::make_pair(modId, fileId));
+ m_MetaInfoChanged = true;
+}
+
std::vector<QString> ModInfoRegular::getIniTweaks() const
{
QString metaFileName = absolutePath().append("/meta.ini");