Set UnifiedSearchResultNothingFound visibility less messily
authorClaudio Cambra <claudio.cambra@gmail.com>
Mon, 18 Jul 2022 14:27:04 +0000 (16:27 +0200)
committerClaudio Cambra <claudio.cambra@gmail.com>
Wed, 7 Sep 2022 13:01:07 +0000 (15:01 +0200)
Signed-off-by: Claudio Cambra <claudio.cambra@gmail.com>
src/gui/tray/Window.qml
src/gui/tray/unifiedsearchresultslistmodel.cpp
src/gui/tray/unifiedsearchresultslistmodel.h

index 1061a3c8459853968a3f5c905def9747e111fc84..f7f88fb878e49e47242f62222dbc803739abe676 100644 (file)
@@ -706,7 +706,7 @@ ApplicationWindow {
 \r
         UnifiedSearchResultNothingFound {\r
             id: unifiedSearchResultNothingFound\r
-            visible: false\r
+\r
             anchors.top: trayWindowUnifiedSearchInputContainer.bottom\r
             anchors.left: trayWindowMainItem.left\r
             anchors.right: trayWindowMainItem.right\r
@@ -715,28 +715,11 @@ ApplicationWindow {
             text: UserModel.currentUser.unifiedSearchResultsListModel.searchTerm\r
 \r
             property bool isSearchRunning: UserModel.currentUser.unifiedSearchResultsListModel.isSearchInProgress\r
+            property bool waitingForSearchTermEditEnd: UserModel.currentUser.unifiedSearchResultsListModel.waitingForSearchTermEditEnd\r
             property bool isSearchResultsEmpty: unifiedSearchResultsListView.count === 0\r
             property bool nothingFound: text && isSearchResultsEmpty && !UserModel.currentUser.unifiedSearchResultsListModel.errorString\r
 \r
-            onIsSearchRunningChanged: {\r
-                if (unifiedSearchResultNothingFound.isSearchRunning) {\r
-                    visible = false;\r
-                } else {\r
-                    if (nothingFound) {\r
-                        visible = true;\r
-                    }\r
-                }\r
-            }\r
-\r
-            onTextChanged: {\r
-                visible = false;\r
-            }\r
-\r
-            onIsSearchResultsEmptyChanged: {\r
-                if (!unifiedSearchResultNothingFound.isSearchResultsEmpty) {\r
-                    visible = false;\r
-                }\r
-            }\r
+            visible: !isSearchRunning && !waitingForSearchTermEditEnd && nothingFound\r
         }\r
 \r
         Loader {\r
index 0e9a44fe0afa44f72c37230952af4c60afbfde82..805af8ea4b6b449f8f98c78b727b76840949d8f1 100644 (file)
@@ -194,6 +194,7 @@ Q_LOGGING_CATEGORY(lcUnifiedSearch, "nextcloud.gui.unifiedsearch", QtInfoMsg)
 
 UnifiedSearchResultsListModel::UnifiedSearchResultsListModel(AccountState *accountState, QObject *parent)
     : QAbstractListModel(parent)
+    , _waitingForSearchTermEditEnd(false)
     , _accountState(accountState)
 {
 }
@@ -280,6 +281,11 @@ QString UnifiedSearchResultsListModel::currentFetchMoreInProgressProviderId() co
     return _currentFetchMoreInProgressProviderId;
 }
 
+bool UnifiedSearchResultsListModel::waitingForSearchTermEditEnd() const
+{
+    return _waitingForSearchTermEditEnd;
+}
+
 void UnifiedSearchResultsListModel::setSearchTerm(const QString &term)
 {
     if (term == _searchTerm) {
@@ -303,6 +309,8 @@ void UnifiedSearchResultsListModel::setSearchTerm(const QString &term)
 
     if (_unifiedSearchTextEditingFinishedTimer.isActive()) {
         _unifiedSearchTextEditingFinishedTimer.stop();
+        _waitingForSearchTermEditEnd = false;
+        emit waitingForSearchTermEditEndChanged();
     }
 
     if (!_searchTerm.isEmpty()) {
@@ -310,6 +318,8 @@ void UnifiedSearchResultsListModel::setSearchTerm(const QString &term)
         connect(&_unifiedSearchTextEditingFinishedTimer, &QTimer::timeout, this,
             &UnifiedSearchResultsListModel::slotSearchTermEditingFinished);
         _unifiedSearchTextEditingFinishedTimer.start();
+        _waitingForSearchTermEditEnd = true;
+        emit waitingForSearchTermEditEndChanged();
     }
 
     if (!_results.isEmpty()) {
@@ -367,6 +377,9 @@ void UnifiedSearchResultsListModel::fetchMoreTriggerClicked(const QString &provi
 
 void UnifiedSearchResultsListModel::slotSearchTermEditingFinished()
 {
+    _waitingForSearchTermEditEnd = false;
+    emit waitingForSearchTermEditEndChanged();
+
     disconnect(&_unifiedSearchTextEditingFinishedTimer, &QTimer::timeout, this,
         &UnifiedSearchResultsListModel::slotSearchTermEditingFinished);
 
index 7403b2ce9a957bd6f869cee8248948e805de5a6b..c69a4ee8adfddd15b7694b593faa45fad22030cf 100644 (file)
@@ -38,6 +38,7 @@ class UnifiedSearchResultsListModel : public QAbstractListModel
             currentFetchMoreInProgressProviderIdChanged)
     Q_PROPERTY(QString errorString READ errorString NOTIFY errorStringChanged)
     Q_PROPERTY(QString searchTerm READ searchTerm WRITE setSearchTerm NOTIFY searchTermChanged)
+    Q_PROPERTY(bool waitingForSearchTermEditEnd READ waitingForSearchTermEditEnd NOTIFY waitingForSearchTermEditEndChanged)
 
     struct UnifiedSearchProvider
     {
@@ -77,6 +78,7 @@ public:
     QString currentFetchMoreInProgressProviderId() const;
     QString searchTerm() const;
     QString errorString() const;
+    bool waitingForSearchTermEditEnd() const;
 
     Q_INVOKABLE void resultClicked(const QString &providerId, const QUrl &resourceUrl) const;
     Q_INVOKABLE void fetchMoreTriggerClicked(const QString &providerId);
@@ -106,6 +108,7 @@ signals:
     void isSearchInProgressChanged();
     void errorStringChanged();
     void searchTermChanged();
+    void waitingForSearchTermEditEndChanged();
 
 public slots:
     void setSearchTerm(const QString &term);
@@ -121,6 +124,7 @@ private:
 
     QString _searchTerm;
     QString _errorString;
+    bool _waitingForSearchTermEditEnd;
 
     QString _currentFetchMoreInProgressProviderId;