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