diff options
| author | isanae <14251494+isanae@users.noreply.github.com> | 2019-12-19 20:18:14 -0500 |
|---|---|---|
| committer | isanae <14251494+isanae@users.noreply.github.com> | 2020-02-04 03:33:18 -0500 |
| commit | 72394faa750ac05871f62583c7c922879a20bc7b (patch) | |
| tree | c392c4e9c3f82e75df0bf77b0d990e8f2a739877 /src/filetreemodel.cpp | |
| parent | 2d276cad0b46d68e6886645559cd47c0165392fe (diff) | |
some optimizations to avoid case conversions and memory allocations
Diffstat (limited to 'src/filetreemodel.cpp')
| -rw-r--r-- | src/filetreemodel.cpp | 24 |
1 files changed, 8 insertions, 16 deletions
diff --git a/src/filetreemodel.cpp b/src/filetreemodel.cpp index 024ec6ee..b5ae9dc8 100644 --- a/src/filetreemodel.cpp +++ b/src/filetreemodel.cpp @@ -1,6 +1,7 @@ #include "filetreemodel.h" #include "organizercore.h" #include <log.h> +#include <unordered_set> using namespace MOBase; using namespace MOShared; @@ -247,18 +248,16 @@ void FileTreeModel::updateDirectories( int row = 0; std::vector<FileTreeItem*> remove; - std::set<std::wstring> seen; + std::unordered_set<std::wstring_view> seen; for (auto&& item : parentItem.children()) { if (!item->isDirectory()) { break; } - const auto name = item->filename().toStdWString(); - - if (auto d=parentEntry.findSubDirectory(name)) { + if (auto d=parentEntry.findSubDirectory(item->filenameWsLowerCase())) { // directory still exists - seen.insert(name); + seen.insert(item->filenameWs()); if (item->areChildrenVisible()) { trace([&]{ log::debug( @@ -419,7 +418,7 @@ void FileTreeModel::updateFiles( parentItem.debugName(), (path.empty() ? L"\\" : path)); }); - std::set<std::wstring> seen; + std::unordered_set<std::wstring_view> seen; std::vector<FileTreeItem*> remove; for (auto&& item : parentItem.children()) { @@ -427,13 +426,11 @@ void FileTreeModel::updateFiles( continue; } - const auto name = item->filename().toStdWString(); - - if (auto f=parentEntry.findFile(name)) { + if (auto f=parentEntry.findFile(item->filenameWsLowerCase(), true)) { if (shouldShowFile(*f)) { // file still exists trace([&]{ log::debug("{} still exists", item->debugName()); }); - seen.insert(name); + seen.insert(item->filenameWs()); continue; } } @@ -569,12 +566,7 @@ FileTreeItem* FileTreeModel::itemFromIndex(const QModelIndex& index) const return nullptr; } - auto* item = static_cast<FileTreeItem*>(data); - if (!item->debugName().isEmpty()) { - return item; - } - - return nullptr; + return static_cast<FileTreeItem*>(data); } QModelIndex FileTreeModel::indexFromItem( |
