blob: d0b309307d4b1173f20666d9741c8a764f46563a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
#include "morrowinddataarchives.h"
#include "registry.h"
#include <utility.h>
#include <QSettings>
#include "gamegamebryo.h"
QStringList MorrowindDataArchives::vanillaArchives() const
{
return {"Morrowind.bsa"};
}
QStringList MorrowindDataArchives::getArchives(const QString& iniFile) const
{
QStringList result;
QSettings settings(iniFile, QSettings::IniFormat);
QString key = "Archive ";
int i = 0;
while (true) {
QString value =
settings.value("Archives/" + key + QString::number(i), "").toString().trimmed();
if (value.isEmpty()) {
break;
}
result.append(value);
i++;
}
return result;
}
void MorrowindDataArchives::setArchives(const QString& iniFile, const QStringList& list)
{
QSettings settings(iniFile, QSettings::IniFormat);
settings.remove("Archives");
QString key = "Archive ";
int writtenCount = 0;
foreach (const QString& value, list) {
if (!MOBase::WriteRegistryValue(
"Archives", key + QString::number(writtenCount), value, iniFile)) {
qWarning("failed to set archives in \"%s\"", qUtf8Printable(iniFile));
}
++writtenCount;
}
}
QStringList MorrowindDataArchives::archives(const MOBase::IProfile* profile) const
{
QStringList result;
QString iniFile =
profile->localSettingsEnabled()
? QDir(profile->absolutePath()).absoluteFilePath("Morrowind.ini")
: gameDirectory().absoluteFilePath("Morrowind.ini");
result.append(getArchives(iniFile));
return result;
}
void MorrowindDataArchives::writeArchiveList(MOBase::IProfile* profile,
const QStringList& before)
{
QString iniFile =
profile->localSettingsEnabled()
? QDir(profile->absolutePath()).absoluteFilePath("Morrowind.ini")
: gameDirectory().absoluteFilePath("Morrowind.ini");
setArchives(iniFile, before);
}
|