From f3dea9ef5fef1d5b63355431c19eab440bbb4326 Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Wed, 22 Aug 2018 10:56:19 +0200 Subject: Sort calendars by name --- framework/src/entitymodel.cpp | 17 +++++++++++++++++ framework/src/entitymodel.h | 5 +++++ views/calendar/qml/View.qml | 1 + 3 files changed, 23 insertions(+) diff --git a/framework/src/entitymodel.cpp b/framework/src/entitymodel.cpp index e2a4ea2d..92f8c70b 100644 --- a/framework/src/entitymodel.cpp +++ b/framework/src/entitymodel.cpp @@ -29,6 +29,7 @@ EntityModel::EntityModel(QObject *parent) : QSortFilterProxyModel(parent) { setDynamicSortFilter(true); sort(0, Qt::AscendingOrder); + setFilterCaseSensitivity(Qt::CaseInsensitive); } EntityModel::~EntityModel() @@ -124,6 +125,9 @@ void EntityModel::setRoles(const QStringList &roles) for (const auto &r : mRoleNames.keys()) { mRoles.insert(mRoleNames.value(r), r); } + if (!mSortRole.isEmpty()) { + QSortFilterProxyModel::setSortRole(mRoles.value(mSortRole.toUtf8())); + } updateQuery(); } @@ -143,6 +147,19 @@ QVariantMap EntityModel::filter() const return {}; } +void EntityModel::setSortRole(const QString &sortRole) +{ + mSortRole = sortRole; + if (!mRoles.isEmpty()) { + QSortFilterProxyModel::setSortRole(mRoles.value(sortRole.toUtf8())); + } +} + +QString EntityModel::sortRole() const +{ + return mSortRole; +} + QVariantMap EntityModel::data(int row) const { diff --git a/framework/src/entitymodel.h b/framework/src/entitymodel.h index e8c294a0..688905dc 100644 --- a/framework/src/entitymodel.h +++ b/framework/src/entitymodel.h @@ -35,6 +35,7 @@ class KUBE_EXPORT EntityModel : public QSortFilterProxyModel Q_PROPERTY (QString accountId READ accountId WRITE setAccountId) Q_PROPERTY (QString type READ type WRITE setType) Q_PROPERTY (QStringList roles READ roles WRITE setRoles) + Q_PROPERTY (QString sortRole READ sortRole WRITE setSortRole) Q_PROPERTY (QVariantMap filter READ filter WRITE setFilter) public: @@ -64,6 +65,9 @@ public: void setFilter(const QVariantMap &); QVariantMap filter() const; + void setSortRole(const QString &); + QString sortRole() const; + Q_INVOKABLE QVariantMap data(int row) const; private: @@ -74,6 +78,7 @@ private: QHash mRoles; QString mAccountId; QString mType; + QString mSortRole; }; diff --git a/views/calendar/qml/View.qml b/views/calendar/qml/View.qml index dd41841c..1faf2820 100644 --- a/views/calendar/qml/View.qml +++ b/views/calendar/qml/View.qml @@ -146,6 +146,7 @@ Kube.View { id: calendarModel type: "calendar" roles: ["name", "color"] + sortRole: "name" } delegate: ItemDelegate { id: delegate -- cgit v1.2.3