diff options
author | Joseph Donofry <rubberduckie3554@gmail.com> | 2022-12-20 16:34:55 -0500 |
---|---|---|
committer | Joseph Donofry <rubberduckie3554@gmail.com> | 2022-12-20 16:34:55 -0500 |
commit | a2e120a8a3764ff0ec45aa6c1515e335bb910589 (patch) | |
tree | 056f75dfb1e8e1989284259f71b3f0364e963ce8 /src/timeline | |
parent | Make unfiltered messages hidden by default (diff) | |
download | nheko-a2e120a8a3764ff0ec45aa6c1515e335bb910589.tar.xz |
Add 'clear' button to search bar and implement search indicator via spinner
Diffstat (limited to 'src/timeline')
-rw-r--r-- | src/timeline/TimelineFilter.cpp | 9 | ||||
-rw-r--r-- | src/timeline/TimelineFilter.h | 3 |
2 files changed, 12 insertions, 0 deletions
diff --git a/src/timeline/TimelineFilter.cpp b/src/timeline/TimelineFilter.cpp index 7dc4c7aa..9389b815 100644 --- a/src/timeline/TimelineFilter.cpp +++ b/src/timeline/TimelineFilter.cpp @@ -39,6 +39,7 @@ void TimelineFilter::startFiltering() { incrementalSearchIndex = 0; + emit isFilteringChanged(); invalidateFilter(); continueFiltering(); @@ -82,6 +83,7 @@ TimelineFilter::event(QEvent *ev) continueFiltering(); } } + emit isFilteringChanged(); } return true; } @@ -172,6 +174,7 @@ TimelineFilter::setSource(TimelineModel *s) incrementalSearchIndex = 0; emit sourceChanged(); + emit isFilteringChanged(); invalidateFilter(); } } @@ -201,6 +204,12 @@ TimelineFilter::currentIndex() const } bool +TimelineFilter::isFiltering() const +{ + return incrementalSearchIndex != std::numeric_limits<int>::max() && !(threadId.isEmpty() && contentFilter.isEmpty()); +} + +bool TimelineFilter::filterAcceptsRow(int source_row, const QModelIndex &) const { // this chunk is still unfiltered. diff --git a/src/timeline/TimelineFilter.h b/src/timeline/TimelineFilter.h index 30ec3300..c35f8da3 100644 --- a/src/timeline/TimelineFilter.h +++ b/src/timeline/TimelineFilter.h @@ -20,6 +20,7 @@ class TimelineFilter : public QSortFilterProxyModel contentFilterChanged) Q_PROPERTY(TimelineModel *source READ source WRITE setSource NOTIFY sourceChanged) Q_PROPERTY(int currentIndex READ currentIndex WRITE setCurrentIndex NOTIFY currentIndexChanged) + Q_PROPERTY(bool filteringInProgress READ isFiltering NOTIFY isFilteringChanged) public: explicit TimelineFilter(QObject *parent = nullptr); @@ -28,6 +29,7 @@ public: QString filterByContent() const { return contentFilter; } TimelineModel *source() const; int currentIndex() const; + bool isFiltering() const; void setThreadId(const QString &t); void setContentFilter(const QString &t); @@ -46,6 +48,7 @@ signals: void contentFilterChanged(); void sourceChanged(); void currentIndexChanged(); + void isFilteringChanged(); private slots: void fetchAgain(); |