commit 2f17c8882bb530cc528384225307214fa0d40dcc
parent ba208cb240ffb4b70ea962b6632e16e8cd320153
Author: dsp56300 <dsp56300@users.noreply.github.com>
Date: Sat, 4 May 2024 16:34:56 +0200
add deduplication by name
Diffstat:
2 files changed, 28 insertions(+), 14 deletions(-)
diff --git a/source/jucePluginEditorLib/patchmanager/list.cpp b/source/jucePluginEditorLib/patchmanager/list.cpp
@@ -290,9 +290,13 @@ namespace jucePluginEditorLib::patchManager
}
}
menu.addSeparator();
- menu.addItem("Hide Duplicates", true, m_hideDuplicates, [this]
+ menu.addItem("Hide Duplicates (by hash)", true, m_hideDuplicatesByHash, [this]
{
- setFilter(m_filter, !m_hideDuplicates);
+ setFilter(m_filter, !m_hideDuplicatesByHash, m_hideDuplicatesByName);
+ });
+ menu.addItem("Hide Duplicates (by name)", true, m_hideDuplicatesByName, [this]
+ {
+ setFilter(m_filter, m_hideDuplicatesByHash, !m_hideDuplicatesByName);
});
menu.showMenuAsync({});
return true;
@@ -533,18 +537,19 @@ namespace jucePluginEditorLib::patchManager
void List::setFilter(const std::string& _filter)
{
- setFilter(_filter, m_hideDuplicates);
+ setFilter(_filter, m_hideDuplicatesByHash, m_hideDuplicatesByName);
}
- void List::setFilter(const std::string& _filter, const bool _hideDuplicates)
+ void List::setFilter(const std::string& _filter, const bool _hideDuplicatesByHash, const bool _hideDuplicatesByName)
{
- if (m_filter == _filter && _hideDuplicates == m_hideDuplicates)
+ if (m_filter == _filter && _hideDuplicatesByHash == m_hideDuplicatesByHash && m_hideDuplicatesByName == _hideDuplicatesByName)
return;
const auto selected = getSelectedPatches();
m_filter = _filter;
- m_hideDuplicates = _hideDuplicates;
+ m_hideDuplicatesByHash = _hideDuplicatesByHash;
+ m_hideDuplicatesByName = _hideDuplicatesByName;
filterPatches();
updateContent();
@@ -646,7 +651,7 @@ namespace jucePluginEditorLib::patchManager
void List::filterPatches()
{
- if (m_filter.empty() && !m_hideDuplicates)
+ if (m_filter.empty() && !m_hideDuplicatesByHash && !m_hideDuplicatesByName)
{
m_filteredPatches.clear();
return;
@@ -655,15 +660,23 @@ namespace jucePluginEditorLib::patchManager
m_filteredPatches.reserve(m_patches.size());
m_filteredPatches.clear();
- std::set<pluginLib::patchDB::PatchHash> knownPatches;
+ std::set<pluginLib::patchDB::PatchHash> knownHashes;
+ std::set<std::string> knownNames;
for (const auto& patch : m_patches)
{
- if(m_hideDuplicates)
+ if(m_hideDuplicatesByHash)
+ {
+ if(knownHashes.find(patch->hash) != knownHashes.end())
+ continue;
+ knownHashes.insert(patch->hash);
+ }
+
+ if(m_hideDuplicatesByName)
{
- if(knownPatches.find(patch->hash) != knownPatches.end())
+ if(knownNames.find(patch->getName()) != knownNames.end())
continue;
- knownPatches.insert(patch->hash);
+ knownNames.insert(patch->getName());
}
if (m_filter.empty() || match(patch))
diff --git a/source/jucePluginEditorLib/patchmanager/list.h b/source/jucePluginEditorLib/patchmanager/list.h
@@ -43,7 +43,7 @@ namespace jucePluginEditorLib::patchManager
const Patches& getPatches() const
{
- if (m_filter.empty() && !m_hideDuplicates)
+ if (m_filter.empty() && !m_hideDuplicatesByHash && !m_hideDuplicatesByName)
return m_patches;
return m_filteredPatches;
}
@@ -73,7 +73,7 @@ namespace jucePluginEditorLib::patchManager
}
void setFilter(const std::string& _filter);
- void setFilter(const std::string& _filter, bool _hideDuplicates);
+ void setFilter(const std::string& _filter, bool _hideDuplicatesByHash, bool _hideDuplicatesByName);
PatchManager& getPatchManager() const
{
@@ -108,7 +108,8 @@ namespace jucePluginEditorLib::patchManager
Patches m_patches;
Patches m_filteredPatches;
std::string m_filter;
- bool m_hideDuplicates = false;
+ bool m_hideDuplicatesByHash = false;
+ bool m_hideDuplicatesByName = false;
pluginLib::patchDB::SearchHandle m_searchHandle = pluginLib::patchDB::g_invalidSearchHandle;
bool m_ignoreSelectedRowsChanged = false;
};