summaryrefslogtreecommitdiff
path: root/src/modinforegular.cpp
diff options
context:
space:
mode:
authorAl <gabriel.cortesi@outlook.com>2019-01-22 17:58:34 +0100
committerAl <gabriel.cortesi@outlook.com>2019-01-22 17:58:34 +0100
commita40613f885c18a8a9f090cd88c595bcb960d97c9 (patch)
tree72e83683c89e360efb1b050b8f3e188161955f1c /src/modinforegular.cpp
parent917c08cd5f87bd06e872b6fb99e00cb5ef5d0066 (diff)
Cache list of archives contained in a mod instead of accessing disk each time
Diffstat (limited to 'src/modinforegular.cpp')
-rw-r--r--src/modinforegular.cpp21
1 files changed, 14 insertions, 7 deletions
diff --git a/src/modinforegular.cpp b/src/modinforegular.cpp
index 0f1f93dc..f29d3725 100644
--- a/src/modinforegular.cpp
+++ b/src/modinforegular.cpp
@@ -45,6 +45,10 @@ ModInfoRegular::ModInfoRegular(PluginContainer *pluginContainer, const IPluginGa
if (!game->primarySources().contains(m_GameName, Qt::CaseInsensitive))
m_IsAlternate = true;
+ //populate m_Archives
+ m_Archives = QStringList();
+ archives(true);
+
connect(&m_NexusBridge, SIGNAL(descriptionAvailable(QString,int,QVariant,QVariant))
, this, SLOT(nxmDescriptionAvailable(QString,int,QVariant,QVariant)));
connect(&m_NexusBridge, SIGNAL(endorsementToggled(QString,int,QVariant,QVariant))
@@ -627,15 +631,18 @@ QString ModInfoRegular::getURL() const
-QStringList ModInfoRegular::archives() const
+QStringList ModInfoRegular::archives(bool checkOnDisk)
{
- QStringList result;
- QDir dir(this->absolutePath());
- QStringList bsaList = dir.entryList(QStringList({ "*.bsa", "*.ba2" }));
- for (const QString &archive : bsaList) {
- result.append(this->absolutePath() + "/" + archive);
+ if (checkOnDisk) {
+ QStringList result;
+ QDir dir(this->absolutePath());
+ QStringList bsaList = dir.entryList(QStringList({ "*.bsa", "*.ba2" }));
+ for (const QString &archive : bsaList) {
+ result.append(this->absolutePath() + "/" + archive);
+ }
+ m_Archives = result;
}
- return result;
+ return m_Archives;
}
void ModInfoRegular::addInstalledFile(int modId, int fileId)