diff --git a/src/contents/ui/main.qml b/src/contents/ui/main.qml index 9953d633..ab95951e 100644 --- a/src/contents/ui/main.qml +++ b/src/contents/ui/main.qml @@ -37,6 +37,10 @@ Kirigami.ApplicationWindow { delegate: Kirigami.BasicListItem { text: model.display } + Controls.BusyIndicator { + anchors.centerIn: parent + visible: searchModel.loading + } } } } diff --git a/src/searchmodel.cpp b/src/searchmodel.cpp index a2a7c56c..648b5f38 100644 --- a/src/searchmodel.cpp +++ b/src/searchmodel.cpp @@ -18,10 +18,12 @@ SearchModel::SearchModel(QObject *parent) return; } + setLoading(true); m_ytm.search(m_searchQuery); }); connect(&m_ytm, &AsyncYTMusic::searchFinished, this, [=](const std::vector &results) { beginResetModel(); + setLoading(false); m_searchResults = results; endResetModel(); }); @@ -73,3 +75,14 @@ void SearchModel::setSearchQuery(const QString &searchQuery) m_searchQuery = searchQuery; Q_EMIT searchQueryChanged(); } + +bool SearchModel::loading() const +{ + return m_loading; +} + +void SearchModel::setLoading(bool loading) +{ + m_loading = loading; + Q_EMIT loadingChanged(); +} diff --git a/src/searchmodel.h b/src/searchmodel.h index b8e6c047..e566b325 100644 --- a/src/searchmodel.h +++ b/src/searchmodel.h @@ -11,6 +11,7 @@ class SearchModel : public QAbstractListModel Q_OBJECT Q_PROPERTY(QString searchQuery READ searchQuery WRITE setSearchQuery NOTIFY searchQueryChanged) + Q_PROPERTY(bool loading READ loading WRITE setLoading NOTIFY loadingChanged) public: explicit SearchModel(QObject *parent = nullptr); @@ -19,14 +20,18 @@ public: int rowCount(const QModelIndex &parent) const override; QVariant data(const QModelIndex &index, int role) const override; - Q_SIGNAL void searchQueryChanged(); - QString searchQuery() const; void setSearchQuery(const QString &searchQuery); + Q_SIGNAL void searchQueryChanged(); + + bool loading() const; + void setLoading(bool loading); + Q_SIGNAL void loadingChanged(); private: QString m_searchQuery; std::vector m_searchResults; + bool m_loading = false; AsyncYTMusic m_ytm; QThread *m_thread;