mirror of
https://github.com/YACReader/yacreader
synced 2025-07-17 20:44:32 -04:00
Run folder search filtering in the background
It uses the same approach used by the comics search filter
This commit is contained in:
@ -400,6 +400,7 @@ void LibraryWindow::doModels()
|
||||
//folders
|
||||
foldersModel = new FolderModel();
|
||||
foldersModelProxy = new FolderModelProxy();
|
||||
folderQueryResultProcessor = new FolderQueryResultProcessor(foldersModel);
|
||||
//foldersModelProxy->setSourceModel(foldersModel);
|
||||
//comics
|
||||
comicsModel = new ComicModel(this);
|
||||
@ -1056,6 +1057,7 @@ void LibraryWindow::createConnections()
|
||||
//Search filter
|
||||
connect(searchEdit, SIGNAL(filterChanged(YACReader::SearchModifiers, QString)), this, SLOT(setSearchFilter(YACReader::SearchModifiers, QString)));
|
||||
connect(&comicQueryResultProcesor, &ComicQueryResultProcesor::newData, this, &LibraryWindow::setComicSearchFilterData);
|
||||
connect(folderQueryResultProcessor, &FolderQueryResultProcessor::newData, this, &LibraryWindow::setFolderSearchFilterData);
|
||||
|
||||
//ContextMenus
|
||||
connect(openContainingFolderComicAction, SIGNAL(triggered()), this, SLOT(openContainingFolderComic()));
|
||||
@ -2069,8 +2071,7 @@ void LibraryWindow::toNormal()
|
||||
void LibraryWindow::setSearchFilter(const YACReader::SearchModifiers modifier, QString filter)
|
||||
{
|
||||
if (!filter.isEmpty()) {
|
||||
//TODO move search query for folders to its own async processor
|
||||
foldersModelProxy->setFilter(modifier, filter, true); //includeComicsCheckBox->isChecked());
|
||||
folderQueryResultProcessor->createModelData(modifier, filter, true);
|
||||
comicQueryResultProcesor.createModelData(modifier, filter, foldersModel->getDatabase());
|
||||
} else if (status == LibraryWindow::Searching) { //if no searching, then ignore this
|
||||
clearSearchFilter();
|
||||
@ -2085,7 +2086,6 @@ void LibraryWindow::setComicSearchFilterData(QList<ComicItem *> *data, const QSt
|
||||
comicsModel->setModelData(data, databasePath);
|
||||
comicsViewsManager->comicsView->enableFilterMode(true);
|
||||
comicsViewsManager->comicsView->setModel(comicsModel); //TODO, columns are messed up after ResetModel some times, this shouldn't be necesary
|
||||
foldersView->expandAll();
|
||||
|
||||
if (comicsModel->rowCount() == 0)
|
||||
comicsViewsManager->showNoSearchResultsView();
|
||||
@ -2093,6 +2093,12 @@ void LibraryWindow::setComicSearchFilterData(QList<ComicItem *> *data, const QSt
|
||||
comicsViewsManager->showComicsView();
|
||||
}
|
||||
|
||||
void LibraryWindow::setFolderSearchFilterData(QMap<unsigned long long, FolderItem *> *filteredItems, FolderItem *root)
|
||||
{
|
||||
foldersModelProxy->setFilterData(filteredItems, root);
|
||||
foldersView->expandAll();
|
||||
}
|
||||
|
||||
void LibraryWindow::clearSearchFilter()
|
||||
{
|
||||
foldersModelProxy->clear();
|
||||
|
Reference in New Issue
Block a user