diff options
| author | Tannin <devnull@localhost> | 2013-06-05 09:51:48 +0200 |
|---|---|---|
| committer | Tannin <devnull@localhost> | 2013-06-05 09:51:48 +0200 |
| commit | 1606c1366f5d0ba304334b0e57680fb99feb88b9 (patch) | |
| tree | 2023762f0c10f3c8801ffc4f0d0d1b4c1f40ffbc /src/modinfo.cpp | |
| parent | 8077c1ad7324e44059fbdc89401eaeb774b8cb84 (diff) | |
- install plugins now get a chance to update name, version and modid of mods
- NCC now makes name, version and modid from the info.xml file available to the installer
- integrated fomod installer also uses version and modid from the info.xml
- mods can now be renamed during installation
- configurator plugin now highlights changed keys and saves changes
Diffstat (limited to 'src/modinfo.cpp')
| -rw-r--r-- | src/modinfo.cpp | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/src/modinfo.cpp b/src/modinfo.cpp index a08a4ccd..e3e0487b 100644 --- a/src/modinfo.cpp +++ b/src/modinfo.cpp @@ -509,6 +509,7 @@ bool ModInfoRegular::setName(const QString &name) QString newPath = m_Path.mid(0).replace(m_Path.length() - m_Name.length(), m_Name.length(), name); QDir modDir(m_Path.mid(0, m_Path.length() - m_Name.length())); + if (m_Name.compare(name, Qt::CaseInsensitive) == 0) { QString tempName = name; tempName.append("_temp"); @@ -524,23 +525,29 @@ bool ModInfoRegular::setName(const QString &name) return false; } } else { - if (!modDir.rename(m_Name, name)) { + if (!shellRename(modDir.absoluteFilePath(m_Name), modDir.absoluteFilePath(name))) { + qCritical("failed to rename mod %s (errorcode %d)", + qPrintable(name), ::GetLastError()); return false; } } std::map<QString, unsigned int>::iterator nameIter = s_ModsByName.find(m_Name); - unsigned int index = nameIter->second; - s_ModsByName.erase(nameIter); - - m_Name = name; - m_Path = newPath; + if (nameIter != s_ModsByName.end()) { + unsigned int index = nameIter->second; + s_ModsByName.erase(nameIter); - s_ModsByName[m_Name] = index; + m_Name = name; + m_Path = newPath; - std::sort(s_Collection.begin(), s_Collection.end(), ByName); + s_ModsByName[m_Name] = index; - updateIndices(); + std::sort(s_Collection.begin(), s_Collection.end(), ByName); + updateIndices(); + } else { // otherwise mod isn't registered yet? + m_Name = name; + m_Path = newPath; + } return true; } |
