This commit is contained in:
Martin Rotter 2016-02-21 10:59:35 +01:00
parent ee03175eed
commit ad2b02aba3
4 changed files with 33 additions and 13 deletions

View file

@ -9,6 +9,7 @@ http://goo.gl/forms/GcvPYgS2a8
Added:
▪ Recycle bins now have context menu. (issue #162)
▪ User is now able to delete TT-RSS feeds. (issue #151)
▪ Added ability to stop running batch feed update. (issue #157)

View file

@ -239,6 +239,7 @@ void FormMain::updateRecycleBinMenu() {
root_menu->setToolTip(activated_root->description());
RecycleBin *bin = activated_root->recycleBin();
QList<QAction*> context_menu;
if (bin == NULL) {
QAction *no_action = new QAction(qApp->icons()->fromTheme(QSL("dialog-error")),
@ -247,19 +248,15 @@ void FormMain::updateRecycleBinMenu() {
no_action->setEnabled(false);
root_menu->addAction(no_action);
}
else if ((context_menu = bin->contextMenu()).isEmpty()) {
QAction *no_action = new QAction(qApp->icons()->fromTheme(QSL("dialog-error")),
tr("No actions possible"),
m_ui->m_menuRecycleBin);
no_action->setEnabled(false);
root_menu->addAction(no_action);
}
else {
QAction *restore_action = new QAction(qApp->icons()->fromTheme(QSL("recycle-bin-restore-all")),
tr("Restore recycle bin"),
m_ui->m_menuRecycleBin);
QAction *empty_action = new QAction(qApp->icons()->fromTheme(QSL("recycle-bin-empty")),
tr("Empty recycle bin"),
m_ui->m_menuRecycleBin);
connect(restore_action, SIGNAL(triggered()), bin, SLOT(restore()));
connect(empty_action, SIGNAL(triggered()), bin, SLOT(empty()));
root_menu->addAction(restore_action);
root_menu->addAction(empty_action);
root_menu->addActions(context_menu);
}
m_ui->m_menuRecycleBin->addMenu(root_menu);

View file

@ -25,7 +25,7 @@
#include <QSqlQuery>
RecycleBin::RecycleBin(RootItem *parent_item) : RootItem(parent_item) {
RecycleBin::RecycleBin(RootItem *parent_item) : RootItem(parent_item), m_contextMenu(QList<QAction*>()) {
setKind(RootItemKind::Bin);
setId(ID_RECYCLE_BIN);
setIcon(qApp->icons()->fromTheme(QSL("folder-recycle-bin")));
@ -87,6 +87,25 @@ QVariant RecycleBin::data(int column, int role) const {
}
}
QList<QAction*> RecycleBin::contextMenu() {
if (m_contextMenu.isEmpty()) {
QAction *restore_action = new QAction(qApp->icons()->fromTheme(QSL("recycle-bin-restore-all")),
tr("Restore recycle bin"),
this);
QAction *empty_action = new QAction(qApp->icons()->fromTheme(QSL("recycle-bin-empty")),
tr("Empty recycle bin"),
this);
connect(restore_action, SIGNAL(triggered()), this, SLOT(restore()));
connect(empty_action, SIGNAL(triggered()), this, SLOT(empty()));
m_contextMenu.append(restore_action);
m_contextMenu.append(empty_action);
}
return m_contextMenu;
}
QList<Message> RecycleBin::undeletedMessages() const {
QList<Message> messages;
const int account_id = getParentServiceRoot()->accountId();

View file

@ -30,6 +30,7 @@ class RecycleBin : public RootItem {
QVariant data(int column, int role) const;
QList<QAction*> contextMenu();
QList<Message> undeletedMessages() const;
bool markAsReadUnread(ReadStatus status);
@ -60,6 +61,8 @@ class RecycleBin : public RootItem {
private:
int m_totalCount;
int m_unreadCount;
QList<QAction*> m_contextMenu;
};
#endif // RECYCLEBIN_H