diff options
Diffstat (limited to 'src/modinfo.cpp')
| -rw-r--r-- | src/modinfo.cpp | 43 |
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"); |
