diff --git a/db/Database.cpp b/db/Database.cpp index 5736438..dee859e 100644 --- a/db/Database.cpp +++ b/db/Database.cpp @@ -14,6 +14,14 @@ namespace NekoGui { _add(new configItem("groups", &groupsTabOrder, itemType::integerList)); } + QList> ProfileManager::Profiles() const { + QList> ret; + for (const auto &[_, profile]: profiles) { + ret += profile; + } + return ret; + } + QList filterIntJsonFile(const QString &path) { QList result; QDir dr(path); diff --git a/db/Database.hpp b/db/Database.hpp index dc7272f..b6c9948 100644 --- a/db/Database.hpp +++ b/db/Database.hpp @@ -28,6 +28,8 @@ namespace NekoGui { [[nodiscard]] static std::shared_ptr NewGroup(); + QList> Profiles() const; + bool AddProfile(const std::shared_ptr &ent, int gid = -1); void DeleteProfile(int id); diff --git a/ui/mainwindow.cpp b/ui/mainwindow.cpp index 9155f61..83f908a 100644 --- a/ui/mainwindow.cpp +++ b/ui/mainwindow.cpp @@ -1359,11 +1359,12 @@ void MainWindow::on_menu_select_all_triggered() { ui->proxyListTable->selectAll(); } -void MainWindow::on_menu_delete_repeat_triggered() { +void MainWindow::on_menu_delete_repeat_triggered(bool const search_across_all_profiles) { QList> out; QList> out_del; - NekoGui::ProfileFilter::Uniq(NekoGui::profileManager->CurrentGroup()->Profiles(), out, true, false); + auto const profiles = search_across_all_profiles ? NekoGui::profileManager->Profiles() : NekoGui::profileManager->CurrentGroup()->Profiles(); + NekoGui::ProfileFilter::Uniq(profiles, out, true, false); NekoGui::ProfileFilter::OnlyInSrc_ByPointer(NekoGui::profileManager->CurrentGroup()->Profiles(), out, out_del); int remove_display_count = 0; @@ -1385,6 +1386,10 @@ void MainWindow::on_menu_delete_repeat_triggered() { } } +void MainWindow::on_menu_delete_duplicates_global_triggered() { + return on_menu_delete_repeat_triggered(true); +} + bool mw_sub_updating = false; void MainWindow::on_menu_update_subscription_triggered() { diff --git a/ui/mainwindow.h b/ui/mainwindow.h index 5ca492d..a6157ae 100644 --- a/ui/mainwindow.h +++ b/ui/mainwindow.h @@ -121,7 +121,9 @@ private slots: void on_menu_select_all_triggered(); - void on_menu_delete_repeat_triggered(); + void on_menu_delete_repeat_triggered(bool const search_across_all_profiles = false); + + void on_menu_delete_duplicates_global_triggered(); void on_menu_remove_unavailable_triggered(); diff --git a/ui/mainwindow.ui b/ui/mainwindow.ui index 585577a..e2758f2 100644 --- a/ui/mainwindow.ui +++ b/ui/mainwindow.ui @@ -555,6 +555,7 @@ + @@ -742,6 +743,14 @@ Ctrl+Alt+D + + + Remove Duplicates Across All Groups + + + + + fake