From d7bcf3c3fc0fc7de33d62a754ceab96568959890 Mon Sep 17 00:00:00 2001 From: Martin Rotter Date: Fri, 1 Apr 2016 12:52:21 +0200 Subject: [PATCH] Enable msg status change from previewer. --- src/gui/feedmessageviewer.cpp | 4 ++- src/gui/messagepreviewer.cpp | 48 +++++++++++++++++++++++++++++++++++ src/gui/messagepreviewer.h | 3 +++ src/gui/messagesview.cpp | 1 + 4 files changed, 55 insertions(+), 1 deletion(-) diff --git a/src/gui/feedmessageviewer.cpp b/src/gui/feedmessageviewer.cpp index 18d0fe1e1..66c7549d6 100755 --- a/src/gui/feedmessageviewer.cpp +++ b/src/gui/feedmessageviewer.cpp @@ -243,7 +243,9 @@ void FeedMessageViewer::createConnections() { connect(m_messagesView, SIGNAL(currentMessageChanged(Message,RootItem*)), m_messagesBrowser, SLOT(loadMessage(Message,RootItem*))); connect(m_messagesView, SIGNAL(currentMessageRemoved()), this, SLOT(updateMessageButtonsAvailability())); connect(m_messagesView, SIGNAL(currentMessageChanged(Message,RootItem*)), this, SLOT(updateMessageButtonsAvailability())); - + connect(m_messagesBrowser, SIGNAL(requestMessageListReload(bool)), m_messagesView, SLOT(reloadSelections(bool))); + + connect(m_feedsView, SIGNAL(itemSelected(RootItem*)), this, SLOT(updateFeedButtonsAvailability())); connect(qApp->feedUpdateLock(), SIGNAL(locked()), this, SLOT(updateFeedButtonsAvailability())); connect(qApp->feedUpdateLock(), SIGNAL(unlocked()), this, SLOT(updateFeedButtonsAvailability())); diff --git a/src/gui/messagepreviewer.cpp b/src/gui/messagepreviewer.cpp index a511bd6da..0190dc08c 100644 --- a/src/gui/messagepreviewer.cpp +++ b/src/gui/messagepreviewer.cpp @@ -21,9 +21,11 @@ #include "network-web/webfactory.h" #include "gui/messagebox.h" #include "gui/dialogs/formmain.h" +#include "services/abstract/serviceroot.h" #include #include +#include MessagePreviewer::MessagePreviewer(QWidget *parent) : QWidget(parent), @@ -100,15 +102,61 @@ void MessagePreviewer::loadMessage(const Message &message, RootItem *root) { } void MessagePreviewer::markMessageAsRead() { + if (!m_root.isNull()) { + if (m_root->getParentServiceRoot()->onBeforeSetMessagesRead(m_root.data(), + QList() << m_message, + RootItem::Read)) { + // TODO: upravit v db. + QSqlQuery query_read_msg(qApp->database()->connection(objectName(), DatabaseFactory::FromSettings)); + query_read_msg.setForwardOnly(true); + + query_read_msg.prepare(QSL("UPDATE Messages SET is_read = :read WHERE id = :id;")); + query_read_msg.bindValue(QSL(":id"), m_message.m_id); + query_read_msg.bindValue(QSL(":read"), 1); + query_read_msg.exec(); + + m_root->getParentServiceRoot()->onAfterSetMessagesRead(m_root.data(), + QList() << m_message, + RootItem::Read); + + emit requestMessageListReload(false); + } + } } void MessagePreviewer::markMessageAsUnread() { + if (!m_root.isNull()) { + if (m_root->getParentServiceRoot()->onBeforeSetMessagesRead(m_root.data(), + QList() << m_message, + RootItem::Unread)) { + // TODO: upravit v db. + + m_root->getParentServiceRoot()->onAfterSetMessagesRead(m_root.data(), + QList() << m_message, + RootItem::Unread); + } + } } void MessagePreviewer::switchMessageImportance(bool checked) { + if (!m_root.isNull()) { + if (m_root->getParentServiceRoot()->onBeforeSwitchMessageImportance(m_root.data(), + QList() << ImportanceChange(m_message, + m_message.m_isImportant ? + RootItem::NotImportant : + RootItem::Important))) { + // TODO: upravit v db. + + m_root->getParentServiceRoot()->onBeforeSwitchMessageImportance(m_root.data(), + QList() << ImportanceChange(m_message, + m_message.m_isImportant ? + RootItem::NotImportant : + RootItem::Important)); + } + } } QString MessagePreviewer::prepareHtmlForMessage(const Message &message) { diff --git a/src/gui/messagepreviewer.h b/src/gui/messagepreviewer.h index f8e9a3e3f..124910c4c 100644 --- a/src/gui/messagepreviewer.h +++ b/src/gui/messagepreviewer.h @@ -50,6 +50,9 @@ class MessagePreviewer : public QWidget { void markMessageAsUnread(); void switchMessageImportance(bool checked); + signals: + void requestMessageListReload(bool mark_current_as_read); + private: QString prepareHtmlForMessage(const Message &message); diff --git a/src/gui/messagesview.cpp b/src/gui/messagesview.cpp index 57ac3d6d5..836bd32b7 100755 --- a/src/gui/messagesview.cpp +++ b/src/gui/messagesview.cpp @@ -201,6 +201,7 @@ void MessagesView::selectionChanged(const QItemSelection &selected, const QItemS // Set this message as read only if current item // wasn't changed by "mark selected messages unread" action. m_sourceModel->setMessageRead(mapped_current_index.row(), RootItem::Read); + message.m_isRead = true; } emit currentMessageChanged(message, m_sourceModel->loadedItem());