Standard recycle bin now able to mark read/unread.
This commit is contained in:
parent
d5ff059543
commit
e3d6d8e494
5 changed files with 52 additions and 2 deletions
|
|
@ -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_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_actionDeleteSelectedItem->setEnabled(!critical_action_running && anything_selected);
|
||||||
form_main->m_ui->m_actionEditSelectedItem->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_actionMarkSelectedItemsAsRead->setEnabled(anything_selected);
|
||||||
form_main->m_ui->m_actionMarkSelectedItemsAsUnread->setEnabled(feed_selected || category_selected || service_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_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_actionUpdateSelectedItems->setEnabled(!critical_action_running && (feed_selected || category_selected || service_selected));
|
||||||
form_main->m_ui->m_actionViewSelectedItemsNewspaperMode->setEnabled(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/application.h"
|
||||||
#include "miscellaneous/iconfactory.h"
|
#include "miscellaneous/iconfactory.h"
|
||||||
|
#include "services/standard/standardserviceroot.h"
|
||||||
|
|
||||||
#include <QSqlQuery>
|
#include <QSqlQuery>
|
||||||
|
|
||||||
|
|
@ -38,6 +39,10 @@ StandardRecycleBin::~StandardRecycleBin() {
|
||||||
qDebug("Destroying RecycleBin instance.");
|
qDebug("Destroying RecycleBin instance.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
StandardServiceRoot *StandardRecycleBin::serviceRoot() {
|
||||||
|
return static_cast<StandardServiceRoot*>(getParentServiceRoot());
|
||||||
|
}
|
||||||
|
|
||||||
int StandardRecycleBin::childCount() const {
|
int StandardRecycleBin::childCount() const {
|
||||||
return 0;
|
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() {
|
bool StandardRecycleBin::empty() {
|
||||||
QSqlDatabase db_handle = qApp->database()->connection(QSL("RecycleBin"), DatabaseFactory::FromSettings);
|
QSqlDatabase db_handle = qApp->database()->connection(QSL("RecycleBin"), DatabaseFactory::FromSettings);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -23,6 +23,8 @@
|
||||||
#include <QCoreApplication>
|
#include <QCoreApplication>
|
||||||
|
|
||||||
|
|
||||||
|
class StandardServiceRoot;
|
||||||
|
|
||||||
class StandardRecycleBin : public RootItem {
|
class StandardRecycleBin : public RootItem {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
|
|
@ -30,12 +32,16 @@ class StandardRecycleBin : public RootItem {
|
||||||
explicit StandardRecycleBin(RootItem *parent = NULL);
|
explicit StandardRecycleBin(RootItem *parent = NULL);
|
||||||
virtual ~StandardRecycleBin();
|
virtual ~StandardRecycleBin();
|
||||||
|
|
||||||
|
StandardServiceRoot *serviceRoot();
|
||||||
|
|
||||||
int childCount() const;
|
int childCount() const;
|
||||||
void appendChild(RootItem *child);
|
void appendChild(RootItem *child);
|
||||||
int countOfUnreadMessages() const;
|
int countOfUnreadMessages() const;
|
||||||
int countOfAllMessages() const;
|
int countOfAllMessages() const;
|
||||||
QVariant data(int column, int role) const;
|
QVariant data(int column, int role) const;
|
||||||
|
|
||||||
|
bool markAsReadUnread(ReadStatus status);
|
||||||
|
|
||||||
bool empty();
|
bool empty();
|
||||||
bool restore();
|
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) {
|
bool StandardServiceRoot::cleanFeeds(QList<Feed*> items, bool clean_read_only) {
|
||||||
QSqlDatabase db_handle = qApp->database()->connection(QSL("StandardServiceRoot"), DatabaseFactory::FromSettings);
|
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 mergeImportExportModel(FeedsImportExportModel *model, QString &output_message);
|
||||||
|
|
||||||
bool markFeedsReadUnread(QList<Feed*> items, ReadStatus read);
|
bool markFeedsReadUnread(QList<Feed*> items, ReadStatus read);
|
||||||
|
bool markRecycleBinReadUnread(ReadStatus read);
|
||||||
bool cleanFeeds(QList<Feed*> items, bool clean_read_only);
|
bool cleanFeeds(QList<Feed*> items, bool clean_read_only);
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue