remove custom property and use standard sourceModel for our proxy model
authorMatthieu Gallien <matthieu.gallien@nextcloud.com>
Mon, 13 Feb 2023 17:02:14 +0000 (18:02 +0100)
committerMatthieu Gallien <matthieu.gallien@nextcloud.com>
Wed, 17 May 2023 16:16:08 +0000 (18:16 +0200)
a QSortFilterProxyModel will trigger a new sort whenever needed, so
custom code is not needed

we might have someone that would use the standard property and loose teh
side effects of setting the source model via thet non standard property

this makes it more complicated to read as one might wonder why a custom
property was needed

deletes a bunch of code not really needed

Signed-off-by: Matthieu Gallien <matthieu.gallien@nextcloud.com>
src/gui/owncloudgui.cpp
src/gui/tray/ActivityList.qml
src/gui/tray/sortedactivitylistmodel.cpp
src/gui/tray/sortedactivitylistmodel.h

index 45215d53ee333fae7eba6adf15b5472203265825..713fca59fed1d1b72dd23b4b9caf207efdc796f1 100644 (file)
@@ -54,7 +54,7 @@
 #include <QtDBus/QDBusInterface>
 #endif
 
-
+#include <QAbstractItemModel>
 #include <QQmlEngine>
 #include <QQmlComponent>
 #include <QQmlApplicationEngine>
@@ -127,6 +127,7 @@ ownCloudGui::ownCloudGui(Application *parent)
     qmlRegisterType<ShareeModel>("com.nextcloud.desktopclient", 1, 0, "ShareeModel");
     qmlRegisterType<SortedShareModel>("com.nextcloud.desktopclient", 1, 0, "SortedShareModel");
     qmlRegisterType<SyncConflictsModel>("com.nextcloud.desktopclient", 1, 0, "SyncConflictsModel");
+    qmlRegisterUncreatableType<QAbstractItemModel>("com.nextcloud.desktopclient", 1, 0, "QAbstractItemModel", "QAbstractItemModel");
 
     qmlRegisterUncreatableType<UnifiedSearchResultsListModel>("com.nextcloud.desktopclient", 1, 0, "UnifiedSearchResultsListModel", "UnifiedSearchResultsListModel");
     qmlRegisterUncreatableType<UserStatus>("com.nextcloud.desktopclient", 1, 0, "UserStatus", "Access to Status enum");
@@ -134,7 +135,6 @@ ownCloudGui::ownCloudGui(Application *parent)
 
     qRegisterMetaTypeStreamOperators<Emoji>();
 
-    qRegisterMetaType<ActivityListModel *>("ActivityListModel*");
     qRegisterMetaType<UnifiedSearchResultsListModel *>("UnifiedSearchResultsListModel*");
     qRegisterMetaType<UserStatus>("UserStatus");
     qRegisterMetaType<SharePtr>("SharePtr");
index 0f690ca27b7fbe536bb6365cb0da104f5709b34d..168afaaba59a1f142b3d0751ea0ac9832a497f5e 100644 (file)
@@ -6,8 +6,8 @@ import com.nextcloud.desktopclient 1.0 as NC
 
 ScrollView {
     id: controlRoot
-    property alias model: sortedActivityList.activityListModel
 
+    property alias model: sortedActivityList.sourceModel
     property bool isFileActivityList: false
     property int iconSize: Style.trayListItemIconSize
     property int delegateHorizontalPadding: 0
@@ -53,7 +53,6 @@ ScrollView {
 
         model: NC.SortedActivityListModel {
             id: sortedActivityList
-            activityListModel: controlRoot.model
         }
 
         delegate: ActivityItem {
index 4879143f23b31d9978701af541fb25f654007a76..3dced09829ebd31d188982961c4f73dd0ab5cedd 100644 (file)
@@ -21,37 +21,7 @@ namespace OCC {
 SortedActivityListModel::SortedActivityListModel(QObject *parent)
     : QSortFilterProxyModel(parent)
 {
-}
-
-void SortedActivityListModel::sortModel()
-{
-    sort(0);
-}
-
-ActivityListModel* SortedActivityListModel::activityListModel() const
-{
-    return dynamic_cast<ActivityListModel*>(sourceModel());
-}
-
-void SortedActivityListModel::setActivityListModel(ActivityListModel* activityListModel)
-{
-     if(const auto currentSetModel = sourceModel()) {
-         disconnect(currentSetModel, &ActivityListModel::rowsInserted, this, &SortedActivityListModel::sortModel);
-         disconnect(currentSetModel, &ActivityListModel::rowsMoved, this, &SortedActivityListModel::sortModel);
-         disconnect(currentSetModel, &ActivityListModel::rowsRemoved, this, &SortedActivityListModel::sortModel);
-         disconnect(currentSetModel, &ActivityListModel::dataChanged, this, &SortedActivityListModel::sortModel);
-         disconnect(currentSetModel, &ActivityListModel::modelReset, this, &SortedActivityListModel::sortModel);
-     }
-
-     // Re-sort model when any changes take place
-     connect(activityListModel, &ActivityListModel::rowsInserted, this, &SortedActivityListModel::sortModel);
-     connect(activityListModel, &ActivityListModel::rowsMoved, this, &SortedActivityListModel::sortModel);
-     connect(activityListModel, &ActivityListModel::rowsRemoved, this, &SortedActivityListModel::sortModel);
-     connect(activityListModel, &ActivityListModel::dataChanged, this, &SortedActivityListModel::sortModel);
-     connect(activityListModel, &ActivityListModel::modelReset, this, &SortedActivityListModel::sortModel);
-
-    setSourceModel(activityListModel);
-    Q_EMIT activityListModelChanged();
+    sort(0, Qt::AscendingOrder);
 }
 
 bool SortedActivityListModel::lessThan(const QModelIndex &sourceLeft, const QModelIndex &sourceRight) const
index d3e8219c1206415ed1e262785afb87e2d32a3685..faf490d434d80d3819617c0d124a5c5723bdc9a5 100644 (file)
@@ -23,24 +23,12 @@ class ActivityListModel;
 class SortedActivityListModel : public QSortFilterProxyModel
 {
     Q_OBJECT
-    Q_PROPERTY(ActivityListModel* activityListModel READ activityListModel WRITE setActivityListModel NOTIFY activityListModelChanged)
 
 public:
     explicit SortedActivityListModel(QObject *parent = nullptr);
 
-    [[nodiscard]] ActivityListModel *activityListModel() const;
-
-signals:
-    void activityListModelChanged();
-
-public slots:
-    void setActivityListModel(OCC::ActivityListModel *activityListModel);
-
 protected:
     [[nodiscard]] bool lessThan(const QModelIndex &sourceLeft, const QModelIndex &sourceRight) const override;
-
-private slots:
-    void sortModel();
 };
 
 }