remove custom property and use standard sourceModel for our proxy model

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>
This commit is contained in:
Matthieu Gallien 2023-02-13 18:02:14 +01:00
parent 9bbabd3baa
commit 32ee1a962f
No known key found for this signature in database
GPG key ID: 7D0F74F05C22F553
4 changed files with 4 additions and 47 deletions

View file

@ -54,7 +54,7 @@
#include <QtDBus/QDBusInterface> #include <QtDBus/QDBusInterface>
#endif #endif
#include <QAbstractItemModel>
#include <QQmlEngine> #include <QQmlEngine>
#include <QQmlComponent> #include <QQmlComponent>
#include <QQmlApplicationEngine> #include <QQmlApplicationEngine>
@ -127,6 +127,7 @@ ownCloudGui::ownCloudGui(Application *parent)
qmlRegisterType<ShareeModel>("com.nextcloud.desktopclient", 1, 0, "ShareeModel"); qmlRegisterType<ShareeModel>("com.nextcloud.desktopclient", 1, 0, "ShareeModel");
qmlRegisterType<SortedShareModel>("com.nextcloud.desktopclient", 1, 0, "SortedShareModel"); qmlRegisterType<SortedShareModel>("com.nextcloud.desktopclient", 1, 0, "SortedShareModel");
qmlRegisterType<SyncConflictsModel>("com.nextcloud.desktopclient", 1, 0, "SyncConflictsModel"); 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<UnifiedSearchResultsListModel>("com.nextcloud.desktopclient", 1, 0, "UnifiedSearchResultsListModel", "UnifiedSearchResultsListModel");
qmlRegisterUncreatableType<UserStatus>("com.nextcloud.desktopclient", 1, 0, "UserStatus", "Access to Status enum"); qmlRegisterUncreatableType<UserStatus>("com.nextcloud.desktopclient", 1, 0, "UserStatus", "Access to Status enum");
@ -134,7 +135,6 @@ ownCloudGui::ownCloudGui(Application *parent)
qRegisterMetaTypeStreamOperators<Emoji>(); qRegisterMetaTypeStreamOperators<Emoji>();
qRegisterMetaType<ActivityListModel *>("ActivityListModel*");
qRegisterMetaType<UnifiedSearchResultsListModel *>("UnifiedSearchResultsListModel*"); qRegisterMetaType<UnifiedSearchResultsListModel *>("UnifiedSearchResultsListModel*");
qRegisterMetaType<UserStatus>("UserStatus"); qRegisterMetaType<UserStatus>("UserStatus");
qRegisterMetaType<SharePtr>("SharePtr"); qRegisterMetaType<SharePtr>("SharePtr");

View file

@ -6,8 +6,8 @@ import com.nextcloud.desktopclient 1.0 as NC
ScrollView { ScrollView {
id: controlRoot id: controlRoot
property alias model: sortedActivityList.activityListModel
property alias model: sortedActivityList.sourceModel
property bool isFileActivityList: false property bool isFileActivityList: false
property int iconSize: Style.trayListItemIconSize property int iconSize: Style.trayListItemIconSize
property int delegateHorizontalPadding: 0 property int delegateHorizontalPadding: 0
@ -53,7 +53,6 @@ ScrollView {
model: NC.SortedActivityListModel { model: NC.SortedActivityListModel {
id: sortedActivityList id: sortedActivityList
activityListModel: controlRoot.model
} }
delegate: ActivityItem { delegate: ActivityItem {

View file

@ -21,37 +21,7 @@ namespace OCC {
SortedActivityListModel::SortedActivityListModel(QObject *parent) SortedActivityListModel::SortedActivityListModel(QObject *parent)
: QSortFilterProxyModel(parent) : QSortFilterProxyModel(parent)
{ {
} sort(0, Qt::AscendingOrder);
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();
} }
bool SortedActivityListModel::lessThan(const QModelIndex &sourceLeft, const QModelIndex &sourceRight) const bool SortedActivityListModel::lessThan(const QModelIndex &sourceLeft, const QModelIndex &sourceRight) const

View file

@ -23,24 +23,12 @@ class ActivityListModel;
class SortedActivityListModel : public QSortFilterProxyModel class SortedActivityListModel : public QSortFilterProxyModel
{ {
Q_OBJECT Q_OBJECT
Q_PROPERTY(ActivityListModel* activityListModel READ activityListModel WRITE setActivityListModel NOTIFY activityListModelChanged)
public: public:
explicit SortedActivityListModel(QObject *parent = nullptr); explicit SortedActivityListModel(QObject *parent = nullptr);
[[nodiscard]] ActivityListModel *activityListModel() const;
signals:
void activityListModelChanged();
public slots:
void setActivityListModel(OCC::ActivityListModel *activityListModel);
protected: protected:
[[nodiscard]] bool lessThan(const QModelIndex &sourceLeft, const QModelIndex &sourceRight) const override; [[nodiscard]] bool lessThan(const QModelIndex &sourceLeft, const QModelIndex &sourceRight) const override;
private slots:
void sortModel();
}; };
} }