Some cleaning of messages model.
This commit is contained in:
parent
9cb84ec313
commit
f712ae1cf7
@ -30,7 +30,7 @@
|
||||
|
||||
MessagesModel::MessagesModel(QObject *parent)
|
||||
: QSqlTableModel(parent, qApp->database()->connection(QSL("MessagesModel"), DatabaseFactory::FromSettings)),
|
||||
m_messageFilter(NoHighlighting), m_customDateFormat(QString()) {
|
||||
m_messageHighlighter(NoHighlighting), m_customDateFormat(QString()) {
|
||||
setObjectName(QSL("MessagesModel"));
|
||||
setupFonts();
|
||||
setupIcons();
|
||||
@ -55,11 +55,9 @@ void MessagesModel::setupIcons() {
|
||||
m_unreadIcon = qApp->icons()->fromTheme(QSL("mail-mark-unread"));
|
||||
}
|
||||
|
||||
FeedsSelection MessagesModel::loadedSelection() const {
|
||||
return m_currentSelection;
|
||||
}
|
||||
void MessagesModel::fetchAllData() {
|
||||
select();
|
||||
|
||||
void MessagesModel::fetchAll() {
|
||||
while (canFetchMore()) {
|
||||
fetchMore();
|
||||
}
|
||||
@ -84,12 +82,16 @@ void MessagesModel::loadMessages(const FeedsSelection &selection) {
|
||||
qDebug("Loading messages from feeds: %s.", qPrintable(assembled_ids));
|
||||
}
|
||||
|
||||
select();
|
||||
fetchAll();
|
||||
fetchAllData();
|
||||
}
|
||||
|
||||
void MessagesModel::filterMessages(MessagesModel::MessageFilter filter) {
|
||||
m_messageFilter = filter;
|
||||
bool MessagesModel::submitAll() {
|
||||
qFatal("Submitting changes via model is not allowed.");
|
||||
return false;
|
||||
}
|
||||
|
||||
void MessagesModel::highlightMessages(MessagesModel::MessageHighlighter highlight) {
|
||||
m_messageHighlighter = highlight;
|
||||
emit layoutAboutToBeChanged();
|
||||
emit layoutChanged();
|
||||
}
|
||||
@ -196,7 +198,7 @@ QVariant MessagesModel::data(const QModelIndex &idx, int role) const {
|
||||
return QSqlTableModel::data(index(idx.row(), MSG_DB_READ_INDEX)).toInt() == 1 ? m_normalFont : m_boldFont;
|
||||
|
||||
case Qt::ForegroundRole:
|
||||
switch (m_messageFilter) {
|
||||
switch (m_messageHighlighter) {
|
||||
case HighlightImportant:
|
||||
return QSqlTableModel::data(index(idx.row(), MSG_DB_IMPORTANT_INDEX)).toInt() == 1 ? QColor(Qt::blue) : QVariant();
|
||||
|
||||
@ -348,8 +350,7 @@ bool MessagesModel::switchBatchMessageImportance(const QModelIndexList &messages
|
||||
|
||||
if (query_read_msg.exec(QString(QSL("UPDATE Messages SET is_important = NOT is_important WHERE id IN (%1);"))
|
||||
.arg(message_ids.join(QSL(", "))))) {
|
||||
select();
|
||||
fetchAll();
|
||||
fetchAllData();
|
||||
|
||||
//emit messageCountsChanged(false);
|
||||
return true;
|
||||
@ -383,8 +384,7 @@ bool MessagesModel::setBatchMessagesDeleted(const QModelIndexList &messages, int
|
||||
}
|
||||
|
||||
if (query_read_msg.exec(sql_delete_query)) {
|
||||
select();
|
||||
fetchAll();
|
||||
fetchAllData();
|
||||
|
||||
emit messageCountsChanged(m_currentSelection.mode(), true, false);
|
||||
return true;
|
||||
@ -409,8 +409,7 @@ bool MessagesModel::setBatchMessagesRead(const QModelIndexList &messages, RootIt
|
||||
if (query_read_msg.exec(QString(QSL("UPDATE Messages SET is_read = %2 WHERE id IN (%1);"))
|
||||
.arg(message_ids.join(QSL(", ")),
|
||||
read == RootItem::Read ? QSL("1") : QSL("0")))) {
|
||||
select();
|
||||
fetchAll();
|
||||
fetchAllData();
|
||||
|
||||
emit messageCountsChanged(m_currentSelection.mode(), false, false);
|
||||
return true;
|
||||
@ -440,8 +439,7 @@ bool MessagesModel::setBatchMessagesRestored(const QModelIndexList &messages) {
|
||||
QString sql_delete_query = QString(QSL("UPDATE Messages SET is_deleted = 0 WHERE id IN (%1);")).arg(message_ids.join(QSL(", ")));
|
||||
|
||||
if (query_read_msg.exec(sql_delete_query)) {
|
||||
select();
|
||||
fetchAll();
|
||||
fetchAllData();
|
||||
|
||||
emit messageCountsChanged(m_currentSelection.mode(), true, true);
|
||||
return true;
|
||||
|
@ -35,7 +35,7 @@ class MessagesModel : public QSqlTableModel {
|
||||
public:
|
||||
// Enum which describes basic filtering schemes
|
||||
// for messages.
|
||||
enum MessageFilter {
|
||||
enum MessageHighlighter {
|
||||
NoHighlighting = 100,
|
||||
HighlightUnread = 101,
|
||||
HighlightImportant = 102
|
||||
@ -55,15 +55,6 @@ class MessagesModel : public QSqlTableModel {
|
||||
Message messageAt(int row_index) const;
|
||||
int messageId(int row_index) const;
|
||||
|
||||
FeedsSelection loadedSelection() const;
|
||||
|
||||
public slots:
|
||||
// To disable persistent changes submissions.
|
||||
inline bool submitAll() {
|
||||
qFatal("Submitting changes via model is not allowed.");
|
||||
return false;
|
||||
}
|
||||
|
||||
void updateDateFormat();
|
||||
void reloadWholeLayout();
|
||||
|
||||
@ -85,18 +76,24 @@ class MessagesModel : public QSqlTableModel {
|
||||
bool setBatchMessagesRestored(const QModelIndexList &messages);
|
||||
|
||||
// Fetches ALL available data to the model.
|
||||
void fetchAll();
|
||||
void fetchAllData();
|
||||
|
||||
// Filters messages
|
||||
void highlightMessages(MessageHighlighter highlight);
|
||||
|
||||
public slots:
|
||||
// Loads messages of given feeds.
|
||||
void loadMessages(const FeedsSelection &selection);
|
||||
|
||||
void filterMessages(MessageFilter filter);
|
||||
|
||||
signals:
|
||||
// Emitted if some persistent change is made which affects count of "unread/all" messages.
|
||||
void messageCountsChanged(FeedsSelection::SelectionMode mode, bool total_msg_count_changed, bool any_msg_restored);
|
||||
|
||||
protected:
|
||||
private slots:
|
||||
// To disable persistent changes submissions.
|
||||
bool submitAll();
|
||||
|
||||
private:
|
||||
// Sets up header data.
|
||||
void setupHeaderData();
|
||||
|
||||
@ -106,8 +103,7 @@ class MessagesModel : public QSqlTableModel {
|
||||
// Sets up all icons which are used directly by this model.
|
||||
void setupIcons();
|
||||
|
||||
private:
|
||||
MessageFilter m_messageFilter;
|
||||
MessageHighlighter m_messageHighlighter;
|
||||
|
||||
QString m_customDateFormat;
|
||||
FeedsSelection m_currentSelection;
|
||||
@ -122,6 +118,6 @@ class MessagesModel : public QSqlTableModel {
|
||||
QIcon m_unreadIcon;
|
||||
};
|
||||
|
||||
Q_DECLARE_METATYPE(MessagesModel::MessageFilter)
|
||||
Q_DECLARE_METATYPE(MessagesModel::MessageHighlighter)
|
||||
|
||||
#endif // MESSAGESMODEL_H
|
||||
|
@ -313,7 +313,7 @@ void FeedMessageViewer::createConnections() {
|
||||
|
||||
// Filtering & searching.
|
||||
connect(m_toolBarMessages, SIGNAL(messageSearchPatternChanged(QString)), m_messagesView, SLOT(searchMessages(QString)));
|
||||
connect(m_toolBarMessages, SIGNAL(messageFilterChanged(MessagesModel::MessageFilter)), m_messagesView, SLOT(filterMessages(MessagesModel::MessageFilter)));
|
||||
connect(m_toolBarMessages, SIGNAL(messageFilterChanged(MessagesModel::MessageHighlighter)), m_messagesView, SLOT(filterMessages(MessagesModel::MessageHighlighter)));
|
||||
|
||||
// Message changers.
|
||||
connect(m_messagesView, SIGNAL(currentMessagesRemoved()), m_messagesBrowser, SLOT(clear()));
|
||||
|
@ -103,7 +103,7 @@ void MessagesToolBar::handleMessageHighlighterChange(QAction *action) {
|
||||
m_btnMessageHighlighter->setIcon(action->icon());
|
||||
m_btnMessageHighlighter->setToolTip(action->text());
|
||||
|
||||
emit messageFilterChanged(action->data().value<MessagesModel::MessageFilter>());
|
||||
emit messageFilterChanged(action->data().value<MessagesModel::MessageHighlighter>());
|
||||
}
|
||||
|
||||
void MessagesToolBar::initializeSearchBox() {
|
||||
|
2
src/gui/messagestoolbar.h
Normal file → Executable file
2
src/gui/messagestoolbar.h
Normal file → Executable file
@ -56,7 +56,7 @@ class MessagesToolBar : public BaseToolBar {
|
||||
void messageSearchPatternChanged(const QString &pattern);
|
||||
|
||||
// Emitted if message filter is changed.
|
||||
void messageFilterChanged(MessagesModel::MessageFilter filter);
|
||||
void messageFilterChanged(MessagesModel::MessageHighlighter filter);
|
||||
|
||||
private slots:
|
||||
// Called when highlighter gets changed.
|
||||
|
@ -78,8 +78,7 @@ void MessagesView::reloadSelections(bool mark_current_index_read) {
|
||||
QModelIndexList mapped_indexes = m_proxyModel->mapListToSource(selected_indexes);
|
||||
|
||||
// Reload the model now.
|
||||
m_sourceModel->select();
|
||||
m_sourceModel->fetchAll();
|
||||
m_sourceModel->fetchAllData();
|
||||
|
||||
sortByColumn(header()->sortIndicatorSection(), header()->sortIndicatorOrder());
|
||||
|
||||
@ -451,8 +450,8 @@ void MessagesView::searchMessages(const QString &pattern) {
|
||||
}
|
||||
}
|
||||
|
||||
void MessagesView::filterMessages(MessagesModel::MessageFilter filter) {
|
||||
m_sourceModel->filterMessages(filter);
|
||||
void MessagesView::filterMessages(MessagesModel::MessageHighlighter filter) {
|
||||
m_sourceModel->highlightMessages(filter);
|
||||
}
|
||||
|
||||
void MessagesView::adjustColumns() {
|
||||
|
@ -79,7 +79,7 @@ class MessagesView : public QTreeView {
|
||||
|
||||
// Searchs the visible message according to given pattern.
|
||||
void searchMessages(const QString &pattern);
|
||||
void filterMessages(MessagesModel::MessageFilter filter);
|
||||
void filterMessages(MessagesModel::MessageHighlighter filter);
|
||||
|
||||
private slots:
|
||||
// Marks given indexes as selected.
|
||||
|
Loading…
x
Reference in New Issue
Block a user