Port from SortFilterProxyModel to KSortFilterProxyModel
This commit is contained in:
committed by
Carl Schwan
parent
5de778ea82
commit
5993c1f683
@@ -92,7 +92,7 @@ find_package(Qt5Keychain REQUIRED)
|
||||
|
||||
find_package(cmark REQUIRED)
|
||||
|
||||
add_subdirectory(include/SortFilterProxyModel EXCLUDE_FROM_ALL)
|
||||
find_package(KF5ItemModels REQUIRED)
|
||||
|
||||
message( STATUS )
|
||||
message( STATUS "=============================================================================" )
|
||||
@@ -206,7 +206,7 @@ endif(APPLE)
|
||||
|
||||
# Windows, this is a GUI executable; OSX, make a bundle
|
||||
add_executable(${PROJECT_NAME} WIN32 MACOSX_BUNDLE
|
||||
${spectral_SRCS} ${spectral_QRC_SRC} $<TARGET_OBJECTS:SortFilterProxyModel>
|
||||
${spectral_SRCS} ${spectral_QRC_SRC}
|
||||
${spectral_WINRC} ${${PROJECT_NAME}_MAC_ICON})
|
||||
|
||||
target_link_libraries(${PROJECT_NAME}
|
||||
|
||||
@@ -4,8 +4,7 @@ import QtQuick.Layouts 1.12
|
||||
|
||||
import org.kde.kirigami 2.13 as Kirigami
|
||||
|
||||
import SortFilterProxyModel 0.2
|
||||
|
||||
import org.kde.kitemmodels 1.0
|
||||
import Spectral.Component 2.0
|
||||
import Spectral 0.1
|
||||
|
||||
@@ -14,7 +13,9 @@ Kirigami.ScrollablePage {
|
||||
|
||||
property var roomListModel
|
||||
property var enteredRoom
|
||||
property var searchText
|
||||
property var searchText: ""
|
||||
|
||||
onSearchTextChanged: sortedFilteredRoomListModel.invalidateFilter()
|
||||
|
||||
signal enterRoom(var room)
|
||||
signal leaveRoom(var room)
|
||||
@@ -32,52 +33,17 @@ Kirigami.ScrollablePage {
|
||||
ListView {
|
||||
id: messageListView
|
||||
|
||||
model: SortFilterProxyModel {
|
||||
model: KSortFilterProxyModel {
|
||||
id: sortedFilteredRoomListModel
|
||||
sourceModel: roomListModel
|
||||
proxyRoles: ExpressionRole {
|
||||
name: "categoryName"
|
||||
expression: {
|
||||
switch (category) {
|
||||
case 1: return "Invited"
|
||||
case 2: return "Favorites"
|
||||
case 3: return "People"
|
||||
case 4: return "Rooms"
|
||||
case 5: return "Low Priority"
|
||||
}
|
||||
}
|
||||
|
||||
sortRole: "name"
|
||||
sortOrder: Qt.AscendingOrder
|
||||
filterRowCallback: function(row, parent) {
|
||||
return (roomListModel.data(roomListModel.index(row, 0), RoomListModel.JoinStateRole) !== "upgraded") && roomListModel.data(roomListModel.index(row, 0), RoomListModel.NameRole).toLowerCase().includes(page.searchText.toLowerCase())
|
||||
}
|
||||
|
||||
sorters: [
|
||||
RoleSorter { roleName: "category" },
|
||||
ExpressionSorter {
|
||||
expression: {
|
||||
return modelLeft.highlightCount > 0;
|
||||
}
|
||||
},
|
||||
ExpressionSorter {
|
||||
expression: {
|
||||
return modelLeft.notificationCount > 0;
|
||||
}
|
||||
},
|
||||
RoleSorter {
|
||||
roleName: "name"
|
||||
sortOrder: Qt.DescendingOrder
|
||||
}
|
||||
]
|
||||
|
||||
filters: [
|
||||
ExpressionFilter {
|
||||
expression: joinState != "upgraded"
|
||||
},
|
||||
RegExpFilter {
|
||||
roleName: "name"
|
||||
pattern: page.searchText
|
||||
caseSensitivity: Qt.CaseInsensitive
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
|
||||
section.property: "categoryName"
|
||||
section.delegate: Kirigami.ListSectionHeader {
|
||||
label: section
|
||||
|
||||
@@ -6,7 +6,7 @@ import QtQuick.Controls.Material 2.12
|
||||
|
||||
import org.kde.kirigami 2.4 as Kirigami
|
||||
|
||||
import SortFilterProxyModel 0.2
|
||||
import org.kde.kitemmodels 1.0
|
||||
|
||||
import Spectral.Component 2.0
|
||||
import Spectral.Component.Timeline 2.0
|
||||
@@ -89,16 +89,14 @@ Kirigami.ScrollablePage {
|
||||
}
|
||||
|
||||
|
||||
SortFilterProxyModel {
|
||||
KSortFilterProxyModel {
|
||||
id: sortedMessageEventModel
|
||||
|
||||
sourceModel: messageEventModel
|
||||
|
||||
filters: [
|
||||
ExpressionFilter {
|
||||
expression: marks !== 0x10 && eventType !== "other"
|
||||
}
|
||||
]
|
||||
filterRowCallback: function(row, parent) {
|
||||
return messageEventModel.data(messageEventModel.index(row, 0), MessageEventModel.MessageRole) !== 0x10 && messageEventModel.data(messageEventModel.index(row, 0), MessageEventModel.EventTypeRole) !== "other"
|
||||
}
|
||||
}
|
||||
|
||||
ListView {
|
||||
|
||||
@@ -37,6 +37,7 @@ class MessageEventModel : public QAbstractListModel {
|
||||
// For debugging
|
||||
EventResolvedTypeRole,
|
||||
};
|
||||
Q_ENUM(EventRoles)
|
||||
|
||||
enum BubbleShapes {
|
||||
NoShape = 0,
|
||||
|
||||
@@ -44,6 +44,7 @@ class RoomListModel : public QAbstractListModel {
|
||||
JoinStateRole,
|
||||
CurrentRoomRole,
|
||||
};
|
||||
Q_ENUM(EventRoles)
|
||||
|
||||
RoomListModel(QObject* parent = nullptr);
|
||||
virtual ~RoomListModel() override;
|
||||
|
||||
Reference in New Issue
Block a user