#include <QtDBus/QDBusInterface>
#endif
-
+#include <QAbstractItemModel>
#include <QQmlEngine>
#include <QQmlComponent>
#include <QQmlApplicationEngine>
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");
qRegisterMetaTypeStreamOperators<Emoji>();
- qRegisterMetaType<ActivityListModel *>("ActivityListModel*");
qRegisterMetaType<UnifiedSearchResultsListModel *>("UnifiedSearchResultsListModel*");
qRegisterMetaType<UserStatus>("UserStatus");
qRegisterMetaType<SharePtr>("SharePtr");
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
model: NC.SortedActivityListModel {
id: sortedActivityList
- activityListModel: controlRoot.model
}
delegate: ActivityItem {
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
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();
};
}