From 008d0b3fc107b466b3e9ebcc601e16c812c0c406 Mon Sep 17 00:00:00 2001 From: Martin Rotter Date: Mon, 30 Dec 2013 21:23:42 +0100 Subject: [PATCH] Worked on more things. --- src/core/feedsmodel.h | 3 +++ src/gui/feedmessageviewer.cpp | 10 +++---- src/gui/feedsview.cpp | 48 +++++++++++++++++++++------------ src/gui/feedsview.h | 6 +++-- src/gui/formmain.cpp | 12 ++++----- src/gui/formmain.ui | 51 +++++++++++++++++------------------ 6 files changed, 73 insertions(+), 57 deletions(-) diff --git a/src/core/feedsmodel.h b/src/core/feedsmodel.h index 1aa58af5d..d62bf9380 100644 --- a/src/core/feedsmodel.h +++ b/src/core/feedsmodel.h @@ -74,6 +74,7 @@ class FeedsModel : public QAbstractItemModel { FeedsModelRootItem *rootItem() const; public slots: + // Feeds operations. bool markFeedsRead(const QList &feeds, int read); bool markFeedsDeleted(const QList &feeds, int deleted); @@ -86,6 +87,8 @@ class FeedsModel : public QAbstractItemModel { void reloadChangedLayout(QModelIndexList list); protected: + // Returns converted ids of given feeds + // which are suitable as IN clause for SQL queries. QStringList textualFeedIds(const QList &feeds); // Loads feed/categories from the database. diff --git a/src/gui/feedmessageviewer.cpp b/src/gui/feedmessageviewer.cpp index de7d09e6c..00d9b4180 100644 --- a/src/gui/feedmessageviewer.cpp +++ b/src/gui/feedmessageviewer.cpp @@ -181,13 +181,13 @@ void FeedMessageViewer::createConnections() { SIGNAL(triggered()), m_feedsView, SLOT(markSelectedFeedsUnread())); connect(FormMain::getInstance()->m_ui->m_actionClearFeeds, SIGNAL(triggered()), m_feedsView, SLOT(clearSelectedFeeds())); - connect(FormMain::getInstance()->m_ui->m_actionUpdateSelectedFeeds, + connect(FormMain::getInstance()->m_ui->m_actionUpdateSelectedFeedsCategories, SIGNAL(triggered()), this, SLOT(updateSelectedFeeds())); connect(FormMain::getInstance()->m_ui->m_actionUpdateAllFeeds, SIGNAL(triggered()), this, SLOT(updateAllFeeds())); connect(FormMain::getInstance()->m_ui->m_actionAddNewCategory, SIGNAL(triggered()), m_feedsView, SLOT(addNewCategory())); - connect(FormMain::getInstance()->m_ui->m_actionEditSelectedFeed, + connect(FormMain::getInstance()->m_ui->m_actionEditSelectedFeedCategory, SIGNAL(triggered()), m_feedsView, SLOT(editSelectedItem())); } @@ -200,10 +200,10 @@ void FeedMessageViewer::initialize() { // Add everything to toolbar. m_toolBar->addAction(FormMain::getInstance()->m_ui->m_actionUpdateAllFeeds); - m_toolBar->addAction(FormMain::getInstance()->m_ui->m_actionUpdateSelectedFeeds); + m_toolBar->addAction(FormMain::getInstance()->m_ui->m_actionUpdateSelectedFeedsCategories); m_toolBar->addAction(FormMain::getInstance()->m_ui->m_actionAddNewFeed); - m_toolBar->addAction(FormMain::getInstance()->m_ui->m_actionEditSelectedFeed); - m_toolBar->addAction(FormMain::getInstance()->m_ui->m_actionDeleteSelectedFeeds); + m_toolBar->addAction(FormMain::getInstance()->m_ui->m_actionEditSelectedFeedCategory); + m_toolBar->addAction(FormMain::getInstance()->m_ui->m_actionDeleteSelectedFeedsCategories); m_toolBar->addAction(FormMain::getInstance()->m_ui->m_actionMarkFeedsAsRead); m_toolBar->addAction(FormMain::getInstance()->m_ui->m_actionMarkFeedsAsUnread); m_toolBar->addAction(FormMain::getInstance()->m_ui->m_actionClearFeeds); diff --git a/src/gui/feedsview.cpp b/src/gui/feedsview.cpp index a45894df6..21b97c5d4 100644 --- a/src/gui/feedsview.cpp +++ b/src/gui/feedsview.cpp @@ -17,7 +17,10 @@ #include -FeedsView::FeedsView(QWidget *parent) : QTreeView(parent), m_contextMenu(NULL) { +FeedsView::FeedsView(QWidget *parent) + : QTreeView(parent), + m_contextMenuCategoriesFeeds(NULL), + m_contextMenuEmptySpace(NULL) { m_proxyModel = new FeedsProxyModel(this); m_sourceModel = m_proxyModel->sourceModel(); @@ -141,12 +144,19 @@ void FeedsView::updateCountsOfAllFeeds(bool update_total_too) { m_sourceModel->reloadWholeLayout(); } -void FeedsView::initializeContextMenu() { - m_contextMenu = new QMenu(tr("Context menu for feeds"), this); - m_contextMenu->addActions(QList() << - FormMain::getInstance()->m_ui->m_actionUpdateSelectedFeeds << - FormMain::getInstance()->m_ui->m_actionMarkFeedsAsRead << - FormMain::getInstance()->m_ui->m_actionMarkFeedsAsUnread); +void FeedsView::initializeContextMenuCategoriesFeeds() { + m_contextMenuCategoriesFeeds = new QMenu(tr("Context menu for feeds"), this); + m_contextMenuCategoriesFeeds->addActions(QList() << + FormMain::getInstance()->m_ui->m_actionUpdateSelectedFeedsCategories << + FormMain::getInstance()->m_ui->m_actionMarkFeedsAsRead << + FormMain::getInstance()->m_ui->m_actionMarkFeedsAsUnread); +} + +void FeedsView::initializeContextMenuEmptySpace() { + m_contextMenuEmptySpace = new QMenu(tr("Context menu for feeds"), this); + m_contextMenuEmptySpace->addActions(QList() << + FormMain::getInstance()->m_ui->m_actionAddNewFeed); + } void FeedsView::setupAppearance() { @@ -194,20 +204,24 @@ void FeedsView::selectionChanged(const QItemSelection &selected, } void FeedsView::contextMenuEvent(QContextMenuEvent *event) { - QModelIndex clicked_index = indexAt(event->pos()); + if (indexAt(event->pos()).isValid()) { + // Display context menu for categories. + if (m_contextMenuCategoriesFeeds == NULL) { + // Context menu is not initialized, initialize. + initializeContextMenuCategoriesFeeds(); + } - if (!clicked_index.isValid()) { - qDebug("Context menu for FeedsView will not be shown because " - "user clicked on invalid item."); - return; + m_contextMenuCategoriesFeeds->exec(event->globalPos()); } + else { + // Display menu for empty space. + if (m_contextMenuEmptySpace == NULL) { + // Context menu is not initialized, initialize. + initializeContextMenuEmptySpace(); + } - if (m_contextMenu == NULL) { - // Context menu is not initialized, initialize. - initializeContextMenu(); + m_contextMenuEmptySpace->exec(event->globalPos()); } - - m_contextMenu->exec(event->globalPos()); } void FeedsView::drawBranches(QPainter *painter, const QRect &rect, const QModelIndex &index) const { diff --git a/src/gui/feedsview.h b/src/gui/feedsview.h index c8248e908..13af204d9 100644 --- a/src/gui/feedsview.h +++ b/src/gui/feedsview.h @@ -54,7 +54,8 @@ class FeedsView : public QTreeView { void updateCountsOfAllFeeds(bool update_total_too = true); protected: - void initializeContextMenu(); + void initializeContextMenuCategoriesFeeds(); + void initializeContextMenuEmptySpace(); // Sets up appearance of this widget. void setupAppearance(); @@ -79,7 +80,8 @@ class FeedsView : public QTreeView { void feedsSelected(const QList &feed_ids); private: - QMenu *m_contextMenu; + QMenu *m_contextMenuCategoriesFeeds; + QMenu *m_contextMenuEmptySpace; QList m_selectedFeeds; FeedsModel *m_sourceModel; diff --git a/src/gui/formmain.cpp b/src/gui/formmain.cpp index 480f88c77..42379804c 100755 --- a/src/gui/formmain.cpp +++ b/src/gui/formmain.cpp @@ -89,9 +89,9 @@ QList FormMain::getActions() { m_ui->m_actionSwitchImportanceOfSelectedMessages << m_ui->m_actionDeleteSelectedMessages << m_ui->m_actionUpdateAllFeeds << - m_ui->m_actionUpdateSelectedFeeds << - m_ui->m_actionEditSelectedFeed << - m_ui->m_actionDeleteSelectedFeeds; + m_ui->m_actionUpdateSelectedFeedsCategories << + m_ui->m_actionEditSelectedFeedCategory << + m_ui->m_actionDeleteSelectedFeedsCategories; return actions; } @@ -216,13 +216,13 @@ void FormMain::setupIcons() { // Feeds/messages. m_ui->m_actionUpdateAllFeeds->setIcon(IconThemeFactory::getInstance()->fromTheme("document-save-as")); - m_ui->m_actionUpdateSelectedFeeds->setIcon(IconThemeFactory::getInstance()->fromTheme("document-save")); + m_ui->m_actionUpdateSelectedFeedsCategories->setIcon(IconThemeFactory::getInstance()->fromTheme("document-save")); m_ui->m_actionClearFeeds->setIcon(IconThemeFactory::getInstance()->fromTheme("mail-mark-junk")); - m_ui->m_actionDeleteSelectedFeeds->setIcon(IconThemeFactory::getInstance()->fromTheme("edit-delete")); + m_ui->m_actionDeleteSelectedFeedsCategories->setIcon(IconThemeFactory::getInstance()->fromTheme("edit-delete")); m_ui->m_actionDeleteSelectedMessages->setIcon(IconThemeFactory::getInstance()->fromTheme("mail-mark-junk")); m_ui->m_actionAddNewCategory->setIcon(IconThemeFactory::getInstance()->fromTheme("document-new")); m_ui->m_actionAddNewFeed->setIcon(IconThemeFactory::getInstance()->fromTheme("document-new")); - m_ui->m_actionEditSelectedFeed->setIcon(IconThemeFactory::getInstance()->fromTheme("gnome-other")); + m_ui->m_actionEditSelectedFeedCategory->setIcon(IconThemeFactory::getInstance()->fromTheme("gnome-other")); m_ui->m_actionMarkFeedsAsRead->setIcon(IconThemeFactory::getInstance()->fromTheme("mail-mark-not-junk")); m_ui->m_actionMarkFeedsAsUnread->setIcon(IconThemeFactory::getInstance()->fromTheme("mail-mark-important")); m_ui->m_actionMarkFeedsAsRead->setIcon(IconThemeFactory::getInstance()->fromTheme("mail-mark-not-junk")); diff --git a/src/gui/formmain.ui b/src/gui/formmain.ui index fed300e15..c0364f490 100644 --- a/src/gui/formmain.ui +++ b/src/gui/formmain.ui @@ -15,7 +15,16 @@ - + + 0 + + + 0 + + + 0 + + 0 @@ -39,7 +48,7 @@ 0 0 979 - 20 + 21 @@ -83,15 +92,15 @@ - Fee&ds + Fee&ds && categories - + - - + + @@ -219,47 +228,35 @@ - Update &all feeds + Update &all items Update all feeds. - - - - + - Update &selected feeds + Update &selected items Update selected feeds/categories. - - - - + &Edit selected feed/category Edit selected feed/category. - - - - + - &Delete selected feed(s)/category(ies) + &Delete selected feeds/categories Delete selected feeds/categories. - - - @@ -296,7 +293,7 @@ - Mark &selected feeds read + Mark &selected items read Marks all messages (without message filters) from selected feeds as read. @@ -304,7 +301,7 @@ - Mark selected feeds unread + Mark selected items unread Marks all messages (without message filters) from selected feeds as unread. @@ -320,7 +317,7 @@ - Clear selected feeds + Clear selected items Removes all messages from selected feeds.