backend: allow users to sort based on last activity
This MR allows an option to prefer the last activity as the most favorable parameter for sorting.
This commit is contained in:
committed by
Tobias Fella
parent
c585f3d8ae
commit
020385c850
@@ -64,8 +64,17 @@ static const QVector<RoomTreeModel::EventRoles> activitySortPriorities{
|
|||||||
RoomTreeModel::HasHighlightNotificationsRole,
|
RoomTreeModel::HasHighlightNotificationsRole,
|
||||||
RoomTreeModel::ContextNotificationCountRole,
|
RoomTreeModel::ContextNotificationCountRole,
|
||||||
RoomTreeModel::FavouriteRole,
|
RoomTreeModel::FavouriteRole,
|
||||||
// Finally sort by last activity time
|
};
|
||||||
|
|
||||||
|
static const QVector<RoomTreeModel::EventRoles> lastMessageSortPriorities{
|
||||||
|
// Sort by last activity time
|
||||||
RoomTreeModel::LastActiveTimeRole,
|
RoomTreeModel::LastActiveTimeRole,
|
||||||
|
// Anything useful at the top, quiet rooms at the bottom
|
||||||
|
RoomTreeModel::AttentionRole,
|
||||||
|
// Organize by highlights, notifications, unread favorites, all other unread, in that order
|
||||||
|
RoomTreeModel::HasHighlightNotificationsRole,
|
||||||
|
RoomTreeModel::ContextNotificationCountRole,
|
||||||
|
RoomTreeModel::FavouriteRole,
|
||||||
};
|
};
|
||||||
|
|
||||||
bool SortFilterRoomTreeModel::roleCmp(const QVariant &sortLeft, const QVariant &sortRight) const
|
bool SortFilterRoomTreeModel::roleCmp(const QVariant &sortLeft, const QVariant &sortRight) const
|
||||||
@@ -110,8 +119,9 @@ bool SortFilterRoomTreeModel::lessThan(const QModelIndex &source_left, const QMo
|
|||||||
return prioritiesCmp(alphabeticalSortPriorities, source_left, source_right);
|
return prioritiesCmp(alphabeticalSortPriorities, source_left, source_right);
|
||||||
case SortFilterRoomTreeModel::Activity:
|
case SortFilterRoomTreeModel::Activity:
|
||||||
return prioritiesCmp(activitySortPriorities, source_left, source_right);
|
return prioritiesCmp(activitySortPriorities, source_left, source_right);
|
||||||
|
case SortFilterRoomTreeModel::LastMessage:
|
||||||
|
return prioritiesCmp(lastMessageSortPriorities, source_left, source_right);
|
||||||
}
|
}
|
||||||
|
|
||||||
return QSortFilterProxyModel::lessThan(source_left, source_right);
|
return QSortFilterProxyModel::lessThan(source_left, source_right);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -53,6 +53,7 @@ public:
|
|||||||
enum RoomSortOrder {
|
enum RoomSortOrder {
|
||||||
Alphabetical,
|
Alphabetical,
|
||||||
Activity,
|
Activity,
|
||||||
|
LastMessage,
|
||||||
};
|
};
|
||||||
Q_ENUM(RoomSortOrder)
|
Q_ENUM(RoomSortOrder)
|
||||||
|
|
||||||
|
|||||||
@@ -110,6 +110,16 @@ FormCard.FormCardPage {
|
|||||||
NeoChatConfig.save()
|
NeoChatConfig.save()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
FormCard.FormRadioDelegate {
|
||||||
|
text: i18nc("As in 'sort something based on the last message'", "Last Message Activity")
|
||||||
|
description: i18nc("@info", "Rooms with the newest activity will be shown first")
|
||||||
|
checked: NeoChatConfig.sortOrder === 2
|
||||||
|
enabled: !NeoChatConfig.isSortOrderImmutable
|
||||||
|
onToggled: {
|
||||||
|
NeoChatConfig.sortOrder = 2
|
||||||
|
NeoChatConfig.save()
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
FormCard.FormHeader {
|
FormCard.FormHeader {
|
||||||
title: i18n("Timeline Events")
|
title: i18n("Timeline Events")
|
||||||
|
|||||||
Reference in New Issue
Block a user