Feeds/categories can be sorted by "item" counts/alphabetically + sorting is dynamic for feeds/categories.
This commit is contained in:
parent
11d28da3bd
commit
4f6cf19e3f
@ -31,6 +31,17 @@ QVariant FeedsModelStandardCategory::data(int column, int role) const {
|
||||
return QVariant();
|
||||
}
|
||||
|
||||
case Qt::EditRole:
|
||||
if (column == FDS_MODEL_TITLE_INDEX) {
|
||||
return m_title;
|
||||
}
|
||||
else if (column == FDS_MODEL_COUNTS_INDEX) {
|
||||
return countOfUnreadMessages();
|
||||
}
|
||||
else {
|
||||
return QVariant();
|
||||
}
|
||||
|
||||
case Qt::DisplayRole:
|
||||
if (column == FDS_MODEL_TITLE_INDEX) {
|
||||
return QString("%1%2").arg(m_title, "-C");
|
||||
|
@ -80,6 +80,20 @@ QVariant FeedsModelStandardFeed::data(int column, int role) const {
|
||||
else if (column == FDS_MODEL_COUNTS_INDEX) {
|
||||
return QString("(%1)").arg(QString::number(countOfUnreadMessages()));
|
||||
}
|
||||
else {
|
||||
return QVariant();
|
||||
}
|
||||
|
||||
case Qt::EditRole:
|
||||
if (column == FDS_MODEL_TITLE_INDEX) {
|
||||
return m_title;
|
||||
}
|
||||
else if (column == FDS_MODEL_COUNTS_INDEX) {
|
||||
return countOfUnreadMessages();
|
||||
}
|
||||
else {
|
||||
return QVariant();
|
||||
}
|
||||
|
||||
case Qt::DecorationRole:
|
||||
return column == FDS_MODEL_TITLE_INDEX ?
|
||||
|
@ -3,6 +3,7 @@
|
||||
#include "core/feedsmodelcategory.h"
|
||||
#include "core/feedsmodelfeed.h"
|
||||
#include "core/feedsmodelrootitem.h"
|
||||
#include "core/defs.h"
|
||||
|
||||
|
||||
FeedsProxyModel::FeedsProxyModel(QObject *parent)
|
||||
@ -37,12 +38,20 @@ bool FeedsProxyModel::lessThan(const QModelIndex &left,
|
||||
// NOTE: Here we want to accomplish that ALL
|
||||
// categories are queued one after another and all
|
||||
// feeds are queued one after another too.
|
||||
// Moreover, sort everything alphabetically.
|
||||
// Moreover, sort everything alphabetically or
|
||||
// by item counts, depending on the sort column.
|
||||
|
||||
if (left_item->kind() == right_item->kind()) {
|
||||
// Both items are feeds or both items are categories.
|
||||
if (left.column() == FDS_MODEL_COUNTS_INDEX) {
|
||||
// User wants to sort according to counts.
|
||||
return left_item->countOfUnreadMessages() < right_item->countOfUnreadMessages();
|
||||
}
|
||||
else {
|
||||
// In other cases, sort by title.
|
||||
return left_item->title() < right_item->title();
|
||||
}
|
||||
}
|
||||
else if (left_item->kind() == FeedsModelRootItem::Feed) {
|
||||
// Left item is feed, right item is category.
|
||||
return false;
|
||||
|
@ -418,10 +418,6 @@ bool MessagesModel::setBatchMessagesRead(const QModelIndexList &messages, int re
|
||||
}
|
||||
}
|
||||
|
||||
bool MessagesModel::switchAllMessageImportance() {
|
||||
return false;
|
||||
}
|
||||
|
||||
bool MessagesModel::setAllMessagesDeleted(int deleted) {
|
||||
QSqlDatabase db_handle = database();
|
||||
|
||||
|
@ -70,7 +70,6 @@ class MessagesModel : public QSqlTableModel {
|
||||
// of many messages via DIRECT SQL calls.
|
||||
// List of loaded feed ids is used for WHERE clause.
|
||||
// Model is reset after one of these methods is applied.
|
||||
bool switchAllMessageImportance();
|
||||
bool setAllMessagesDeleted(int deleted);
|
||||
bool setAllMessagesRead(int read);
|
||||
|
||||
|
@ -30,16 +30,19 @@ class MessagesView : public QTreeView {
|
||||
void openSelectedSourceMessagesInternally();
|
||||
void openSelectedMessagesInternally();
|
||||
|
||||
// Works with SELECTED messages only.
|
||||
void setSelectedMessagesReadStatus(int read);
|
||||
void markSelectedMessagesRead();
|
||||
void markSelectedMessagesUnread();
|
||||
void deleteSelectedMessages();
|
||||
void switchSelectedMessagesImportance();
|
||||
|
||||
// Sets ALL (unfiltered) messages read.
|
||||
void setAllMessagesReadStatus(int read);
|
||||
void setAllMessagesRead();
|
||||
void setAllMessagesUnread();
|
||||
|
||||
// Sets ALL (unfiltered) messages deleted.
|
||||
void setAllMessagesDeleteStatus(int deleted);
|
||||
void setAllMessagesDeleted();
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user