filter: introduce people- and tags-filtering in the mobile UI

Add a combo-box where the user can switch between "fulltext",
"people" and "tags" filtering. Connect the combobox to the
already existing filter-code.

Dirk: make combo-box smaller by using a smaller font and restricting
the width. Setting both maximum and preferred widths gives more
consistent results.

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Berthold Stoeger 2020-02-19 21:39:23 +01:00 committed by Dirk Hohndel
parent c1e33aac21
commit e0766aa4bd
5 changed files with 36 additions and 10 deletions

View file

@ -2094,13 +2094,20 @@ void QMLManager::showDownloadPage(QString deviceString)
emit pluggedInDeviceNameChanged();
}
void QMLManager::setFilter(const QString filterText)
void QMLManager::setFilter(const QString filterText, int index)
{
FilterData::Mode mode;
switch(index) {
default:
case 0: mode = FilterData::Mode::FULLTEXT; break;
case 1: mode = FilterData::Mode::PEOPLE; break;
case 2: mode = FilterData::Mode::TAGS; break;
}
// show that we are doing something, then do something in another thread in order not to block the UI
QMetaObject::invokeMethod(qmlWindow, "showBusyAndDisconnectModel");
QtConcurrent::run(QThreadPool::globalInstance(),
[this,filterText]{
DiveListSortModel::instance()->setFilter(filterText);
[this,filterText,mode]{
DiveListSortModel::instance()->setFilter(filterText, mode);
CollapsedDiveListSortModel::instance()->updateFilterState();
QMetaObject::invokeMethod(qmlWindow, "hideBusyAndConnectModel");
});