diff options
| author | Al <gabriel.cortesi@outlook.com> | 2019-01-22 17:58:34 +0100 |
|---|---|---|
| committer | Al <gabriel.cortesi@outlook.com> | 2019-01-22 17:58:34 +0100 |
| commit | a40613f885c18a8a9f090cd88c595bcb960d97c9 (patch) | |
| tree | 72e83683c89e360efb1b050b8f3e188161955f1c /src | |
| parent | 917c08cd5f87bd06e872b6fb99e00cb5ef5d0066 (diff) | |
Cache list of archives contained in a mod instead of accessing disk each time
Diffstat (limited to 'src')
| -rw-r--r-- | src/modinfo.h | 2 | ||||
| -rw-r--r-- | src/modinfoforeign.h | 2 | ||||
| -rw-r--r-- | src/modinfooverwrite.cpp | 2 | ||||
| -rw-r--r-- | src/modinfooverwrite.h | 2 | ||||
| -rw-r--r-- | src/modinforegular.cpp | 21 | ||||
| -rw-r--r-- | src/modinforegular.h | 4 |
6 files changed, 21 insertions, 12 deletions
diff --git a/src/modinfo.h b/src/modinfo.h index 5a69185d..b6d7209c 100644 --- a/src/modinfo.h +++ b/src/modinfo.h @@ -534,7 +534,7 @@ public: /**
* @return a list of archives belonging to this mod (as absolute file paths)
*/
- virtual QStringList archives() const = 0;
+ virtual QStringList archives(bool checkOnDisk = false) = 0;
/*
*@return the color choosen by the user for the mod/separator
diff --git a/src/modinfoforeign.h b/src/modinfoforeign.h index 93061294..45fe7689 100644 --- a/src/modinfoforeign.h +++ b/src/modinfoforeign.h @@ -49,7 +49,7 @@ public: virtual QDateTime getLastNexusQuery() const { return QDateTime(); } virtual QString getNexusDescription() const { return QString(); } virtual int getFixedPriority() const { return INT_MIN; } - virtual QStringList archives() const { return m_Archives; } + virtual QStringList archives(bool checkOnDisk = false) { return m_Archives; } virtual QStringList stealFiles() const { return m_Archives + QStringList(m_ReferenceFile); } virtual bool alwaysEnabled() const { return true; } virtual void addInstalledFile(int, int) {} diff --git a/src/modinfooverwrite.cpp b/src/modinfooverwrite.cpp index 742ae384..0e428483 100644 --- a/src/modinfooverwrite.cpp +++ b/src/modinfooverwrite.cpp @@ -49,7 +49,7 @@ QString ModInfoOverwrite::getDescription() const "modified (i.e. by the construction kit)"); } -QStringList ModInfoOverwrite::archives() const +QStringList ModInfoOverwrite::archives(bool checkOnDisk) { QStringList result; QDir dir(this->absolutePath()); diff --git a/src/modinfooverwrite.h b/src/modinfooverwrite.h index 4b98d715..cfd662af 100644 --- a/src/modinfooverwrite.h +++ b/src/modinfooverwrite.h @@ -51,7 +51,7 @@ public: virtual QString getDescription() const; virtual QDateTime getLastNexusQuery() const { return QDateTime(); } virtual QString getNexusDescription() const { return QString(); } - virtual QStringList archives() const; + virtual QStringList archives(bool checkOnDisk = false); virtual void addInstalledFile(int, int) {} private: 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) diff --git a/src/modinforegular.h b/src/modinforegular.h index 33b26998..093b4e5b 100644 --- a/src/modinforegular.h +++ b/src/modinforegular.h @@ -320,7 +320,7 @@ public: */ virtual QDateTime getLastNexusQuery() const; - virtual QStringList archives() const; + virtual QStringList archives(bool checkOnDisk = false); virtual void setColor(QColor color); @@ -371,6 +371,8 @@ private: QString m_URL; QString m_GameName; + mutable QStringList m_Archives; + QDateTime m_CreationTime; QDateTime m_LastNexusQuery; |
