[vlc-devel] [PATCH 01/13] qt: medialib: make fetch() const

Romain Vimont rom1v at videolabs.io
Mon Nov 23 17:30:15 CET 2020


The fetch() methods returns the data it loads, it does not need access
(except possibly to mutable fields for caching).

This makes it consistent with countTotalElements().
---
 modules/gui/qt/medialibrary/mlalbummodel.cpp        | 2 +-
 modules/gui/qt/medialibrary/mlalbummodel.hpp        | 2 +-
 modules/gui/qt/medialibrary/mlalbumtrackmodel.cpp   | 2 +-
 modules/gui/qt/medialibrary/mlalbumtrackmodel.hpp   | 2 +-
 modules/gui/qt/medialibrary/mlartistmodel.cpp       | 2 +-
 modules/gui/qt/medialibrary/mlartistmodel.hpp       | 2 +-
 modules/gui/qt/medialibrary/mlbasemodel.hpp         | 6 +++---
 modules/gui/qt/medialibrary/mlgenremodel.cpp        | 2 +-
 modules/gui/qt/medialibrary/mlgenremodel.hpp        | 2 +-
 modules/gui/qt/medialibrary/mlrecentsmodel.cpp      | 2 +-
 modules/gui/qt/medialibrary/mlrecentsmodel.hpp      | 2 +-
 modules/gui/qt/medialibrary/mlrecentsvideomodel.cpp | 5 +++--
 modules/gui/qt/medialibrary/mlrecentsvideomodel.hpp | 4 ++--
 modules/gui/qt/medialibrary/mlurlmodel.cpp          | 2 +-
 modules/gui/qt/medialibrary/mlurlmodel.hpp          | 2 +-
 modules/gui/qt/medialibrary/mlvideomodel.cpp        | 2 +-
 modules/gui/qt/medialibrary/mlvideomodel.hpp        | 2 +-
 17 files changed, 22 insertions(+), 21 deletions(-)

diff --git a/modules/gui/qt/medialibrary/mlalbummodel.cpp b/modules/gui/qt/medialibrary/mlalbummodel.cpp
index acb6e7fbec..423081a0d0 100644
--- a/modules/gui/qt/medialibrary/mlalbummodel.cpp
+++ b/modules/gui/qt/medialibrary/mlalbummodel.cpp
@@ -88,7 +88,7 @@ QHash<int, QByteArray> MLAlbumModel::roleNames() const
     };
 }
 
-std::vector<std::unique_ptr<MLAlbum>> MLAlbumModel::fetch( )
+std::vector<std::unique_ptr<MLAlbum>> MLAlbumModel::fetch() const
 {
     ml_unique_ptr<vlc_ml_album_list_t> album_list;
     if ( m_parent.id <= 0 )
diff --git a/modules/gui/qt/medialibrary/mlalbummodel.hpp b/modules/gui/qt/medialibrary/mlalbummodel.hpp
index 804f32fe5b..2ffe82c5ee 100644
--- a/modules/gui/qt/medialibrary/mlalbummodel.hpp
+++ b/modules/gui/qt/medialibrary/mlalbummodel.hpp
@@ -58,7 +58,7 @@ public:
     Q_INVOKABLE QHash<int, QByteArray> roleNames() const override;
 
 private:
-    std::vector<std::unique_ptr<MLAlbum>> fetch() override;
+    std::vector<std::unique_ptr<MLAlbum>> fetch() const override;
     size_t countTotalElements() const override;
     vlc_ml_sorting_criteria_t roleToCriteria(int role) const override;
     vlc_ml_sorting_criteria_t nameToCriteria(QByteArray name) const override;
diff --git a/modules/gui/qt/medialibrary/mlalbumtrackmodel.cpp b/modules/gui/qt/medialibrary/mlalbumtrackmodel.cpp
index 4d07c93757..cd091129f0 100644
--- a/modules/gui/qt/medialibrary/mlalbumtrackmodel.cpp
+++ b/modules/gui/qt/medialibrary/mlalbumtrackmodel.cpp
@@ -103,7 +103,7 @@ size_t MLAlbumTrackModel::countTotalElements() const
     return vlc_ml_count_media_of(m_ml, &queryParams, m_parent.type, m_parent.id );
 }
 
-std::vector<std::unique_ptr<MLAlbumTrack>> MLAlbumTrackModel::fetch()
+std::vector<std::unique_ptr<MLAlbumTrack>> MLAlbumTrackModel::fetch() const
 {
     ml_unique_ptr<vlc_ml_media_list_t> media_list;
 
diff --git a/modules/gui/qt/medialibrary/mlalbumtrackmodel.hpp b/modules/gui/qt/medialibrary/mlalbumtrackmodel.hpp
index 93785660ce..4289c58766 100644
--- a/modules/gui/qt/medialibrary/mlalbumtrackmodel.hpp
+++ b/modules/gui/qt/medialibrary/mlalbumtrackmodel.hpp
@@ -58,7 +58,7 @@ public:
     QHash<int, QByteArray> roleNames() const override;
 
 private:
-    std::vector<std::unique_ptr<MLAlbumTrack>> fetch() override;
+    std::vector<std::unique_ptr<MLAlbumTrack>> fetch() const override;
     size_t countTotalElements() const override;
     vlc_ml_sorting_criteria_t roleToCriteria(int role) const override;
     vlc_ml_sorting_criteria_t nameToCriteria(QByteArray name) const override;
diff --git a/modules/gui/qt/medialibrary/mlartistmodel.cpp b/modules/gui/qt/medialibrary/mlartistmodel.cpp
index 8bc65fb6b0..a3f18f67f3 100644
--- a/modules/gui/qt/medialibrary/mlartistmodel.cpp
+++ b/modules/gui/qt/medialibrary/mlartistmodel.cpp
@@ -67,7 +67,7 @@ QHash<int, QByteArray> MLArtistModel::roleNames() const
     };
 }
 
-std::vector<std::unique_ptr<MLArtist>> MLArtistModel::fetch()
+std::vector<std::unique_ptr<MLArtist>> MLArtistModel::fetch() const
 {
     ml_unique_ptr<vlc_ml_artist_list_t> artist_list;
     if ( m_parent.id <= 0 )
diff --git a/modules/gui/qt/medialibrary/mlartistmodel.hpp b/modules/gui/qt/medialibrary/mlartistmodel.hpp
index af495d969d..e85a9b9149 100644
--- a/modules/gui/qt/medialibrary/mlartistmodel.hpp
+++ b/modules/gui/qt/medialibrary/mlartistmodel.hpp
@@ -49,7 +49,7 @@ public:
     QHash<int, QByteArray> roleNames() const override;
 
 private:
-    std::vector<std::unique_ptr<MLArtist>> fetch() override;
+    std::vector<std::unique_ptr<MLArtist>> fetch() const override;
     size_t countTotalElements() const override;
     vlc_ml_sorting_criteria_t roleToCriteria(int role) const override;
     vlc_ml_sorting_criteria_t nameToCriteria(QByteArray name) const override;
diff --git a/modules/gui/qt/medialibrary/mlbasemodel.hpp b/modules/gui/qt/medialibrary/mlbasemodel.hpp
index c25fb948b3..bac19005ed 100644
--- a/modules/gui/qt/medialibrary/mlbasemodel.hpp
+++ b/modules/gui/qt/medialibrary/mlbasemodel.hpp
@@ -235,7 +235,7 @@ protected:
         {
             m_total_count = countTotalElements();
             if ( m_total_count > 0 )
-                m_item_list = const_cast<MLSlidingWindowModel<T>*>(this)->fetch();
+                m_item_list = fetch();
             m_initialized = true;
             emit countChanged( static_cast<unsigned int>(m_total_count) );
         }
@@ -249,7 +249,7 @@ protected:
                 m_query_param.i_offset = 0;
             else
                 m_query_param.i_offset = idx - idx % m_query_param.i_nbResults;
-            m_item_list = const_cast<MLSlidingWindowModel<T>*>(this)->fetch();
+            m_item_list = fetch();
         }
 
         //db has changed
@@ -284,7 +284,7 @@ protected:
 
 private:
     virtual size_t countTotalElements() const = 0;
-    virtual std::vector<std::unique_ptr<T>> fetch() = 0;
+    virtual std::vector<std::unique_ptr<T>> fetch() const = 0;
     virtual void thumbnailUpdated( int ) {}
 
     mutable std::vector<std::unique_ptr<T>> m_item_list;
diff --git a/modules/gui/qt/medialibrary/mlgenremodel.cpp b/modules/gui/qt/medialibrary/mlgenremodel.cpp
index 55bf5e78a9..339cd49384 100644
--- a/modules/gui/qt/medialibrary/mlgenremodel.cpp
+++ b/modules/gui/qt/medialibrary/mlgenremodel.cpp
@@ -68,7 +68,7 @@ QHash<int, QByteArray> MLGenreModel::roleNames() const
     };
 }
 
-std::vector<std::unique_ptr<MLGenre>> MLGenreModel::fetch()
+std::vector<std::unique_ptr<MLGenre>> MLGenreModel::fetch() const
 {
     ml_unique_ptr<vlc_ml_genre_list_t> genre_list(
         vlc_ml_list_genres(m_ml, &m_query_param)
diff --git a/modules/gui/qt/medialibrary/mlgenremodel.hpp b/modules/gui/qt/medialibrary/mlgenremodel.hpp
index 6943207d03..3bc4928c3c 100644
--- a/modules/gui/qt/medialibrary/mlgenremodel.hpp
+++ b/modules/gui/qt/medialibrary/mlgenremodel.hpp
@@ -52,7 +52,7 @@ public:
     QVariant data(const QModelIndex &index, int role) const override;
 
 private:
-    std::vector<std::unique_ptr<MLGenre>> fetch() override;
+    std::vector<std::unique_ptr<MLGenre>> fetch() const override;
     size_t countTotalElements() const override;
     void onVlcMlEvent(const MLEvent &event) override;
     void thumbnailUpdated(int idx) override;
diff --git a/modules/gui/qt/medialibrary/mlrecentsmodel.cpp b/modules/gui/qt/medialibrary/mlrecentsmodel.cpp
index 8cdcbfacbf..5d0ce5bdde 100644
--- a/modules/gui/qt/medialibrary/mlrecentsmodel.cpp
+++ b/modules/gui/qt/medialibrary/mlrecentsmodel.cpp
@@ -79,7 +79,7 @@ void MLRecentsModel::clearHistory()
     vlc_ml_clear_history(m_ml);
 }
 
-std::vector<std::unique_ptr<MLRecentMedia> > MLRecentsModel::fetch()
+std::vector<std::unique_ptr<MLRecentMedia> > MLRecentsModel::fetch() const
 {
     std::vector<std::unique_ptr<MLRecentMedia>> res;
     auto queryParams = m_query_param;
diff --git a/modules/gui/qt/medialibrary/mlrecentsmodel.hpp b/modules/gui/qt/medialibrary/mlrecentsmodel.hpp
index 8040c2918f..171132b84a 100644
--- a/modules/gui/qt/medialibrary/mlrecentsmodel.hpp
+++ b/modules/gui/qt/medialibrary/mlrecentsmodel.hpp
@@ -76,7 +76,7 @@ public:
     int getNumberOfItemsToShow() const;
 
 private:
-    std::vector<std::unique_ptr<MLRecentMedia>> fetch() override;
+    std::vector<std::unique_ptr<MLRecentMedia>> fetch() const override;
     size_t countTotalElements() const override;
     vlc_ml_sorting_criteria_t roleToCriteria( int /* role */ ) const override{
         return VLC_ML_SORTING_DEFAULT;
diff --git a/modules/gui/qt/medialibrary/mlrecentsvideomodel.cpp b/modules/gui/qt/medialibrary/mlrecentsvideomodel.cpp
index 2e7c1947f6..9c09945c50 100644
--- a/modules/gui/qt/medialibrary/mlrecentsvideomodel.cpp
+++ b/modules/gui/qt/medialibrary/mlrecentsvideomodel.cpp
@@ -92,7 +92,7 @@ QHash<int, QByteArray> MLRecentsVideoModel::roleNames() const
     };
 }
 
-std::vector<std::unique_ptr<MLVideo> > MLRecentsVideoModel::fetch()
+std::vector<std::unique_ptr<MLVideo> > MLRecentsVideoModel::fetch() const
 {
     ml_unique_ptr<vlc_ml_media_list_t> media_list{ vlc_ml_list_history(
                 m_ml, &m_query_param ) };
@@ -111,7 +111,8 @@ std::vector<std::unique_ptr<MLVideo> > MLRecentsVideoModel::fetch()
 
 size_t MLRecentsVideoModel::countTotalElements() const
 {
-
+    // FIXME: countTotalElements() may not depend on fetch(), since the call to
+    // fetch() depends on countTotalElements()
     if(numberOfItemsToShow == -1){
         return m_video_count;
     }
diff --git a/modules/gui/qt/medialibrary/mlrecentsvideomodel.hpp b/modules/gui/qt/medialibrary/mlrecentsvideomodel.hpp
index 65c923b8bd..0b8e4be0ab 100644
--- a/modules/gui/qt/medialibrary/mlrecentsvideomodel.hpp
+++ b/modules/gui/qt/medialibrary/mlrecentsvideomodel.hpp
@@ -45,7 +45,7 @@ public:
     int numberOfItemsToShow = 10;
 
 private:
-    std::vector<std::unique_ptr<MLVideo>> fetch() override;
+    std::vector<std::unique_ptr<MLVideo>> fetch() const override;
     size_t countTotalElements() const override;
     vlc_ml_sorting_criteria_t roleToCriteria( int /* role */ ) const override{
         return VLC_ML_SORTING_DEFAULT;
@@ -56,7 +56,7 @@ private:
     virtual void onVlcMlEvent( const MLEvent &event ) override;
     void setNumberOfItemsToShow(int);
     int getNumberOfItemsToShow();
-    int m_video_count;
+    mutable int m_video_count;
 };
 
 #endif // ML_RECENTS_VIDEO_MODEL_H
diff --git a/modules/gui/qt/medialibrary/mlurlmodel.cpp b/modules/gui/qt/medialibrary/mlurlmodel.cpp
index 92a114a4fe..4dd949adba 100644
--- a/modules/gui/qt/medialibrary/mlurlmodel.cpp
+++ b/modules/gui/qt/medialibrary/mlurlmodel.cpp
@@ -81,7 +81,7 @@ size_t MLUrlModel::countTotalElements() const
     return s;
 }
 
-std::vector<std::unique_ptr<MLUrl>> MLUrlModel::fetch()
+std::vector<std::unique_ptr<MLUrl>> MLUrlModel::fetch() const
 {
     ml_unique_ptr<vlc_ml_media_list_t> media_list;
     media_list.reset( vlc_ml_list_stream_history(m_ml, &m_query_param) );
diff --git a/modules/gui/qt/medialibrary/mlurlmodel.hpp b/modules/gui/qt/medialibrary/mlurlmodel.hpp
index 425edb48e5..bbc3bdc173 100644
--- a/modules/gui/qt/medialibrary/mlurlmodel.hpp
+++ b/modules/gui/qt/medialibrary/mlurlmodel.hpp
@@ -70,7 +70,7 @@ public:
     Q_INVOKABLE void addAndPlay( const QString& url );
 
 private:
-    std::vector<std::unique_ptr<MLUrl>> fetch() override;
+    std::vector<std::unique_ptr<MLUrl>> fetch() const override;
     size_t countTotalElements() const override;
     vlc_ml_sorting_criteria_t roleToCriteria(int role) const override;
     virtual void onVlcMlEvent( const MLEvent &event ) override;
diff --git a/modules/gui/qt/medialibrary/mlvideomodel.cpp b/modules/gui/qt/medialibrary/mlvideomodel.cpp
index 21332e298a..63338b2f96 100644
--- a/modules/gui/qt/medialibrary/mlvideomodel.cpp
+++ b/modules/gui/qt/medialibrary/mlvideomodel.cpp
@@ -92,7 +92,7 @@ QHash<int, QByteArray> MLVideoModel::roleNames() const
     };
 }
 
-std::vector<std::unique_ptr<MLVideo> > MLVideoModel::fetch()
+std::vector<std::unique_ptr<MLVideo> > MLVideoModel::fetch() const
 {
     ml_unique_ptr<vlc_ml_media_list_t> media_list{ vlc_ml_list_video_media(
                 m_ml, &m_query_param ) };
diff --git a/modules/gui/qt/medialibrary/mlvideomodel.hpp b/modules/gui/qt/medialibrary/mlvideomodel.hpp
index 653c6e164c..f373d26b6b 100644
--- a/modules/gui/qt/medialibrary/mlvideomodel.hpp
+++ b/modules/gui/qt/medialibrary/mlvideomodel.hpp
@@ -63,7 +63,7 @@ public:
     QHash<int, QByteArray> roleNames() const override;
 
 private:
-    std::vector<std::unique_ptr<MLVideo>> fetch() override;
+    std::vector<std::unique_ptr<MLVideo>> fetch() const override;
     size_t countTotalElements() const override;
     vlc_ml_sorting_criteria_t roleToCriteria(int role) const override;
     vlc_ml_sorting_criteria_t nameToCriteria(QByteArray name) const override;
-- 
2.29.2



More information about the vlc-devel mailing list