summary refs log tree commit diff
path: root/src/timeline
diff options
context:
space:
mode:
authorJoseph Donofry <rubberduckie3554@gmail.com>2022-12-20 16:34:55 -0500
committerJoseph Donofry <rubberduckie3554@gmail.com>2022-12-20 16:34:55 -0500
commita2e120a8a3764ff0ec45aa6c1515e335bb910589 (patch)
tree056f75dfb1e8e1989284259f71b3f0364e963ce8 /src/timeline
parentMake unfiltered messages hidden by default (diff)
downloadnheko-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.cpp9
-rw-r--r--src/timeline/TimelineFilter.h3
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();