summaryrefslogtreecommitdiff
path: root/src/modinfodialog.cpp
diff options
context:
space:
mode:
authorisanae <14251494+isanae@users.noreply.github.com>2019-06-25 11:41:00 -0400
committerisanae <14251494+isanae@users.noreply.github.com>2019-07-02 10:10:18 -0400
commit139c33ccc4f529083b0288907caad2946a3f5a8f (patch)
treeac4d1ed9311cdfe1e59b6e825cba228a431bf649 /src/modinfodialog.cpp
parent86e4f65eb6a2e52d0513a8c2fe1e94cd1af9967d (diff)
various optimizations and caching
fixed conflict list not sorting when changing parameters switched from QDirIterator to std::filesystem, much faster FilterWidget precompiles the list
Diffstat (limited to 'src/modinfodialog.cpp')
-rw-r--r--src/modinfodialog.cpp12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/modinfodialog.cpp b/src/modinfodialog.cpp
index a407e9b7..c6cdb961 100644
--- a/src/modinfodialog.cpp
+++ b/src/modinfodialog.cpp
@@ -29,6 +29,7 @@ along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>.
#include "modinfodialogcategories.h"
#include "modinfodialognexus.h"
#include "modinfodialogfiletree.h"
+#include <filesystem>
using namespace MOBase;
using namespace MOShared;
@@ -310,12 +311,17 @@ void ModInfoDialog::updateTabs(bool becauseOriginChanged)
void ModInfoDialog::feedFiles(bool becauseOriginChanged)
{
+ namespace fs = std::filesystem;
const auto rootPath = m_mod->absolutePath();
if (rootPath.length() > 0) {
- QDirIterator dirIterator(rootPath, QDir::Files, QDirIterator::Subdirectories);
- while (dirIterator.hasNext()) {
- QString fileName = dirIterator.next();
+
+ for (const auto& entry : fs::recursive_directory_iterator(rootPath.toStdString())) {
+ if (!entry.is_regular_file()) {
+ continue;
+ }
+
+ const auto fileName = QString::fromWCharArray(entry.path().c_str());
for (auto& tabInfo : m_tabs) {
if (!tabInfo.isVisible()) {