From 6db1c2645d6c5b7f8e4b13b8f58b4673ea5457f3 Mon Sep 17 00:00:00 2001 From: ConfuSomu Date: Fri, 5 Jan 2024 00:03:13 +0100 Subject: Rerun search if new archive is opened --- src/finddialog.cpp | 8 ++++++-- src/finddialog.h | 4 +++- src/mainwindow.cpp | 4 +++- src/widgets/tab_activity_list.cpp | 11 +++++++---- src/widgets/tab_activity_list.h | 2 +- 5 files changed, 20 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/finddialog.cpp b/src/finddialog.cpp index fe56b38..4d03aab 100644 --- a/src/finddialog.cpp +++ b/src/finddialog.cpp @@ -51,6 +51,10 @@ void FindDialog::set_search_text(const QString &text, bool search_immediately) { else on_textInputSearch_textEdited(text); } +void FindDialog::force_research() { + init_search(true); +} + inline void FindDialog::run_search() { init_search(); } @@ -76,9 +80,9 @@ void FindDialog::set_qlist_widget(QListWidget* widget) { } // Start a new search only if the search text input has changed -void FindDialog::init_search() { +void FindDialog::init_search(bool force) { QString current_search = ui->textInputSearch->text(); - if (*last_search == current_search or not list_widget) return; + if (not force and (*last_search == current_search or not list_widget)) return; matches = list_widget->findItems(current_search, Qt::MatchContains); diff --git a/src/finddialog.h b/src/finddialog.h index c26f8fd..38a58f2 100644 --- a/src/finddialog.h +++ b/src/finddialog.h @@ -13,6 +13,8 @@ class FindDialog : public QDialog { public: FindDialog(QWidget *parent = nullptr); ~FindDialog(); + // Force doing again the search, useful if list_widget items have changed + void force_research(); public slots: void set_search_text(const QString &text, bool search_immediately = false); @@ -42,7 +44,7 @@ private: // This is used with the spin box to avoid having repeated value changes due to the on_spinBox_valueChanged slot bool value_changed_processed = false; - void init_search(); + void init_search(bool force = false); void update_status(); void select_match(); bool has_search_changed(); diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 023119f..b54a767 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -48,7 +48,9 @@ void MainWindow::create_initial_tabs() { connect(ui->actionFind, &QAction::triggered, activity_list_tab, &TabActivityList::on_buttonSearch_clicked); connect(ui->actionOpen_URL, &QAction::triggered, activity_list_tab, &TabActivityList::actionOpen_URL_triggered); connect(ui->menuView, &QMenu::aboutToHide, activity_list_tab, &TabActivityList::menuView_aboutToHide); - connect(this, &MainWindow::new_archive_opened, activity_list_tab, &TabActivityList::relist_statuses); + connect(this, &MainWindow::new_archive_opened, activity_list_tab, [=] { + activity_list_tab->relist_statuses(true); + }); // TODO: Add the "+" tab for opening new tabs } diff --git a/src/widgets/tab_activity_list.cpp b/src/widgets/tab_activity_list.cpp index 8ae046a..faa6138 100644 --- a/src/widgets/tab_activity_list.cpp +++ b/src/widgets/tab_activity_list.cpp @@ -99,15 +99,18 @@ void TabActivityList::actionOpen_URL_triggered(bool checked) { } } -void TabActivityList::relist_statuses() { +void TabActivityList::relist_statuses(bool new_archive_opened) { if (*data_archive) { ui->listWidget->clear(); (*data_archive)->update_status_list(view_filters, ui->listWidget); view_filters_changed = false; } - // Cursor overriden only when opening new archive - if (QApplication::overrideCursor()) - QApplication::restoreOverrideCursor(); + if (new_archive_opened) { + if (QApplication::overrideCursor()) + QApplication::restoreOverrideCursor(); + if (find_dialog) + find_dialog->force_research(); + } } // Function used to reset filters when we have detected that the "All toots" toggle has been toggled on or shouldn't be toggled anymore diff --git a/src/widgets/tab_activity_list.h b/src/widgets/tab_activity_list.h index ae6d426..4e520da 100644 --- a/src/widgets/tab_activity_list.h +++ b/src/widgets/tab_activity_list.h @@ -41,7 +41,7 @@ public slots: void actionOpen_URL_triggered(bool checked); void menuView_aboutToHide(); - void relist_statuses(); + void relist_statuses(bool new_archive_opened = false); void select_list_item(QListWidgetItem* item); void set_search_text(const QString &text); -- cgit v1.2.3-54-g00ecf