All messages from selected feeds can be removed now.

This commit is contained in:
Martin Rotter 2013-12-19 10:33:12 +01:00
parent 17d4122a72
commit 11d28da3bd
5 changed files with 54 additions and 5 deletions

View File

@ -325,9 +325,6 @@ bool MessagesModel::switchBatchMessageImportance(const QModelIndexList &messages
query_delete_msg.bindValue(":id", message_id);
query_delete_msg.bindValue(":important",
importance == 1 ? 0 : 1);
// TODO: dat u vsech funkci ty execy do ifu a kdyz
// vratijou false tak udela rollback a vratit funkci s hodnotou false.
query_delete_msg.exec();
}
@ -373,6 +370,8 @@ bool MessagesModel::setBatchMessagesDeleted(const QModelIndexList &messages, int
// FULLY reload the model if underlying data is changed.
select();
fetchAll();
emit feedCountsChanged();
return true;
}
else {
@ -424,7 +423,41 @@ bool MessagesModel::switchAllMessageImportance() {
}
bool MessagesModel::setAllMessagesDeleted(int deleted) {
QSqlDatabase db_handle = database();
if (!db_handle.transaction()) {
qWarning("Starting transaction for all message deletion.");
return false;
}
QSqlQuery query_delete_msg(db_handle);
if (!query_delete_msg.prepare(QString("UPDATE messages SET deleted = :deleted "
"WHERE feed IN (%1) AND deleted = 0").arg(textualFeeds().join(", ")))) {
qWarning("Query preparation failed for message deletion.");
db_handle.rollback();
return false;
}
query_delete_msg.bindValue(":deleted", deleted);
if (!query_delete_msg.exec()) {
qDebug("Query execution for all message deletion failed.");
db_handle.rollback();
}
// Commit changes.
if (db_handle.commit()) {
// FULLY reload the model if underlying data is changed.
select();
fetchAll();
emit feedCountsChanged();
return true;
}
else {
return db_handle.rollback();
}
}
bool MessagesModel::setAllMessagesRead(int read) {

View File

@ -20,7 +20,6 @@ class Message {
QDateTime m_updated;
};
class MessagesModel : public QSqlTableModel {
Q_OBJECT

View File

@ -62,6 +62,8 @@ void FeedMessageViewer::createConnections() {
SIGNAL(triggered()), m_messagesView, SLOT(openSelectedMessagesInternally()));
connect(FormMain::getInstance()->m_ui->m_actionMarkAllMessagesAsRead,
SIGNAL(triggered()), m_messagesView, SLOT(setAllMessagesRead()));
connect(FormMain::getInstance()->m_ui->m_actionDeleteAllMessages,
SIGNAL(triggered()), m_messagesView, SLOT(setAllMessagesDeleted()));
}
void FeedMessageViewer::initialize() {

View File

@ -338,6 +338,18 @@ void MessagesView::setAllMessagesUnread() {
setAllMessagesReadStatus(0);
}
void MessagesView::setAllMessagesDeleteStatus(int deleted) {
m_sourceModel->setAllMessagesDeleted(deleted);
// We deleted completely each and every visible message.
// That is why no message can be displayed now.
emit currentMessageRemoved();
}
void MessagesView::setAllMessagesDeleted() {
setAllMessagesDeleteStatus(1);
}
void MessagesView::reselectIndexes(const QModelIndexList &indexes) {
selectionModel()->clearSelection();

View File

@ -40,6 +40,9 @@ class MessagesView : public QTreeView {
void setAllMessagesRead();
void setAllMessagesUnread();
void setAllMessagesDeleteStatus(int deleted);
void setAllMessagesDeleted();
protected slots:
// Marks given indexes as selected.
void reselectIndexes(const QModelIndexList &indexes);