Standard recycle bin now able to mark read/unread.
This commit is contained in:
parent
d5ff059543
commit
e3d6d8e494
@ -299,8 +299,8 @@ void FeedMessageViewer::updateFeedButtonsAvailability() {
|
||||
form_main->m_ui->m_actionClearSelectedItems->setEnabled(feed_selected || category_selected || service_selected);
|
||||
form_main->m_ui->m_actionDeleteSelectedItem->setEnabled(!critical_action_running && anything_selected);
|
||||
form_main->m_ui->m_actionEditSelectedItem->setEnabled(!critical_action_running && anything_selected);
|
||||
form_main->m_ui->m_actionMarkSelectedItemsAsRead->setEnabled(feed_selected || category_selected || service_selected);
|
||||
form_main->m_ui->m_actionMarkSelectedItemsAsUnread->setEnabled(feed_selected || category_selected || service_selected);
|
||||
form_main->m_ui->m_actionMarkSelectedItemsAsRead->setEnabled(anything_selected);
|
||||
form_main->m_ui->m_actionMarkSelectedItemsAsUnread->setEnabled(anything_selected);
|
||||
form_main->m_ui->m_actionUpdateAllItems->setEnabled(!critical_action_running);
|
||||
form_main->m_ui->m_actionUpdateSelectedItems->setEnabled(!critical_action_running && (feed_selected || category_selected || service_selected));
|
||||
form_main->m_ui->m_actionViewSelectedItemsNewspaperMode->setEnabled(feed_selected || category_selected || service_selected);
|
||||
|
@ -19,6 +19,7 @@
|
||||
|
||||
#include "miscellaneous/application.h"
|
||||
#include "miscellaneous/iconfactory.h"
|
||||
#include "services/standard/standardserviceroot.h"
|
||||
|
||||
#include <QSqlQuery>
|
||||
|
||||
@ -38,6 +39,10 @@ StandardRecycleBin::~StandardRecycleBin() {
|
||||
qDebug("Destroying RecycleBin instance.");
|
||||
}
|
||||
|
||||
StandardServiceRoot *StandardRecycleBin::serviceRoot() {
|
||||
return static_cast<StandardServiceRoot*>(getParentServiceRoot());
|
||||
}
|
||||
|
||||
int StandardRecycleBin::childCount() const {
|
||||
return 0;
|
||||
}
|
||||
@ -64,6 +69,10 @@ QVariant StandardRecycleBin::data(int column, int role) const {
|
||||
}
|
||||
}
|
||||
|
||||
bool StandardRecycleBin::markAsReadUnread(RootItem::ReadStatus status) {
|
||||
return serviceRoot()->markRecycleBinReadUnread(status);
|
||||
}
|
||||
|
||||
bool StandardRecycleBin::empty() {
|
||||
QSqlDatabase db_handle = qApp->database()->connection(QSL("RecycleBin"), DatabaseFactory::FromSettings);
|
||||
|
||||
|
@ -23,6 +23,8 @@
|
||||
#include <QCoreApplication>
|
||||
|
||||
|
||||
class StandardServiceRoot;
|
||||
|
||||
class StandardRecycleBin : public RootItem {
|
||||
Q_OBJECT
|
||||
|
||||
@ -30,12 +32,16 @@ class StandardRecycleBin : public RootItem {
|
||||
explicit StandardRecycleBin(RootItem *parent = NULL);
|
||||
virtual ~StandardRecycleBin();
|
||||
|
||||
StandardServiceRoot *serviceRoot();
|
||||
|
||||
int childCount() const;
|
||||
void appendChild(RootItem *child);
|
||||
int countOfUnreadMessages() const;
|
||||
int countOfAllMessages() const;
|
||||
QVariant data(int column, int role) const;
|
||||
|
||||
bool markAsReadUnread(ReadStatus status);
|
||||
|
||||
bool empty();
|
||||
bool restore();
|
||||
|
||||
|
@ -163,6 +163,40 @@ bool StandardServiceRoot::markFeedsReadUnread(QList<Feed*> items, ReadStatus rea
|
||||
}
|
||||
}
|
||||
|
||||
bool StandardServiceRoot::markRecycleBinReadUnread(RootItem::ReadStatus read) {
|
||||
QSqlDatabase db_handle = qApp->database()->connection(QSL("StandardServiceRoot"), DatabaseFactory::FromSettings);
|
||||
|
||||
if (!db_handle.transaction()) {
|
||||
qWarning("Starting transaction for recycle bin read change.");
|
||||
return false;
|
||||
}
|
||||
|
||||
QSqlQuery query_read_msg(db_handle);
|
||||
query_read_msg.setForwardOnly(true);
|
||||
|
||||
if (!query_read_msg.prepare("UPDATE Messages SET is_read = :read WHERE is_deleted = 1;")) {
|
||||
qWarning("Query preparation failed for recycle bin read change.");
|
||||
|
||||
db_handle.rollback();
|
||||
return false;
|
||||
}
|
||||
|
||||
query_read_msg.bindValue(QSL(":read"), read == RootItem::Read ? 1 : 0);
|
||||
|
||||
if (!query_read_msg.exec()) {
|
||||
qDebug("Query execution for recycle bin read change failed.");
|
||||
db_handle.rollback();
|
||||
}
|
||||
|
||||
// Commit changes.
|
||||
if (db_handle.commit()) {
|
||||
return true;
|
||||
}
|
||||
else {
|
||||
return db_handle.rollback();
|
||||
}
|
||||
}
|
||||
|
||||
bool StandardServiceRoot::cleanFeeds(QList<Feed*> items, bool clean_read_only) {
|
||||
QSqlDatabase db_handle = qApp->database()->connection(QSL("StandardServiceRoot"), DatabaseFactory::FromSettings);
|
||||
|
||||
|
@ -75,6 +75,7 @@ class StandardServiceRoot : public ServiceRoot {
|
||||
bool mergeImportExportModel(FeedsImportExportModel *model, QString &output_message);
|
||||
|
||||
bool markFeedsReadUnread(QList<Feed*> items, ReadStatus read);
|
||||
bool markRecycleBinReadUnread(ReadStatus read);
|
||||
bool cleanFeeds(QList<Feed*> items, bool clean_read_only);
|
||||
|
||||
public slots:
|
||||
|
Loading…
x
Reference in New Issue
Block a user