Debounce input from the search edit

This makes writing there a little bit more pleasant
This commit is contained in:
Luis Ángel San Martín
2023-06-03 20:25:14 +02:00
parent c30e1c6829
commit 16faacec65
5 changed files with 331 additions and 2 deletions

View File

@ -264,6 +264,7 @@ include(./comic_vine/comic_vine.pri)
include(../third_party/QsLog/QsLog.pri)
include(../shortcuts_management/shortcuts_management.pri)
include(../third_party/QrCode/QrCode.pri)
include(../third_party/KDToolBox/KDToolBox.pri)
RESOURCES += images.qrc files.qrc
win32:RESOURCES += images_win.qrc

View File

@ -95,6 +95,8 @@ extern YACReaderHttpServer *httpServer;
#include <shellapi.h>
#endif
#include <KDSignalThrottler.h>
namespace {
template<class Remover>
void moveAndConnectRemoverToThread(Remover *remover, QThread *thread)
@ -1281,11 +1283,20 @@ void LibraryWindow::createConnections()
connect(optionsDialog, &YACReaderOptionsDialog::optionsChanged, this, &LibraryWindow::reloadOptions);
connect(optionsDialog, &YACReaderOptionsDialog::editShortcuts, editShortcutsDialog, &QWidget::show);
auto searchDebouncer = new KDToolBox::KDSignalDebouncer(this);
searchDebouncer->setTimeout(400);
// Search filter
#ifdef Y_MAC_UI
connect(searchEdit, &YACReaderMacOSXSearchLineEdit::filterChanged, this, &LibraryWindow::setSearchFilter);
connect(searchEdit, &YACReaderMacOSXSearchLineEdit::textChanged, searchDebouncer, &KDToolBox::KDSignalThrottler::throttle);
connect(searchDebouncer, &KDToolBox::KDSignalThrottler::triggered, this, [=] {
setSearchFilter(searchEdit->text());
});
#else
connect(searchEdit, &YACReaderSearchLineEdit::filterChanged, this, &LibraryWindow::setSearchFilter);
connect(searchEdit, &YACReaderSearchLineEdit::textChanged, searchDebouncer, &KDToolBox::KDSignalThrottler::throttle);
connect(searchDebouncer, &KDToolBox::KDSignalThrottler::triggered, this, [=] {
setSearchFilter(searchEdit->text());
});
#endif
connect(&comicQueryResultProcessor, &ComicQueryResultProcessor::newData, this, &LibraryWindow::setComicSearchFilterData);
qRegisterMetaType<FolderItem *>("FolderItem *");