From 37f4ad4cfe97c4e462528850a65321afe3a1c6ad Mon Sep 17 00:00:00 2001 From: Martin Rotter Date: Fri, 12 Jun 2015 20:10:18 +0200 Subject: [PATCH] Work on disabling actions. --- src/gui/feedmessageviewer.cpp | 26 +++++++++++++++++++++++++- src/gui/feedmessageviewer.h | 4 +++- src/miscellaneous/mutex.cpp | 4 ++-- 3 files changed, 30 insertions(+), 4 deletions(-) diff --git a/src/gui/feedmessageviewer.cpp b/src/gui/feedmessageviewer.cpp index 4859053c4..ab8313c80 100755 --- a/src/gui/feedmessageviewer.cpp +++ b/src/gui/feedmessageviewer.cpp @@ -64,8 +64,8 @@ FeedMessageViewer::FeedMessageViewer(QWidget *parent) m_messagesView(new MessagesView(this)), m_feedsView(new FeedsView(this)), m_messagesBrowser(new WebBrowser(this)), - m_dbCleanerThread(NULL), m_feedDownloaderThread(NULL), + m_dbCleanerThread(NULL), m_feedDownloader(NULL), m_dbCleaner(NULL) { initialize(); @@ -261,6 +261,26 @@ void FeedMessageViewer::switchFeedComponentVisibility() { m_feedsWidget->setVisible(!m_feedsWidget->isVisible()); } +void FeedMessageViewer::updateMessageButtonsAvailability() { + bool one_message_selected = m_messagesView->selectionModel()->selectedRows().size() == 1; + bool atleast_one_message_selected = m_messagesView->selectionModel()->selectedRows().size() >= 1; + bool recycle_bin_selected = m_messagesView->sourceModel()->loadedSelection().mode() == FeedsSelection::MessagesFromRecycleBin; + FormMain *form_main = qApp->mainForm(); + + form_main->m_ui->m_actionDeleteSelectedMessages->setEnabled(atleast_one_message_selected); + form_main->m_ui->m_actionMarkSelectedMessagesAsRead->setEnabled(atleast_one_message_selected); + form_main->m_ui->m_actionMarkSelectedMessagesAsUnread->setEnabled(atleast_one_message_selected); + form_main->m_ui->m_actionOpenSelectedMessagesInternally->setEnabled(atleast_one_message_selected); + form_main->m_ui->m_actionOpenSelectedSourceArticlesExternally->setEnabled(atleast_one_message_selected); + form_main->m_ui->m_actionOpenSelectedSourceArticlesInternally->setEnabled(atleast_one_message_selected); + form_main->m_ui->m_actionSendMessageViaEmail->setEnabled(one_message_selected); + form_main->m_ui->m_actionSwitchImportanceOfSelectedMessages->setEnabled(atleast_one_message_selected); + + form_main->m_ui->m_actionRestoreSelectedMessagesFromRecycleBin->setEnabled(recycle_bin_selected && atleast_one_message_selected); + + // TODO: To samo udělat s feedy, řešit pouze buttony, které se týkají výběru, ale také vzít v potaz, zda zrovna běží update. +} + void FeedMessageViewer::createConnections() { FormMain *form_main = qApp->mainForm(); @@ -271,6 +291,8 @@ void FeedMessageViewer::createConnections() { // Message changers. connect(m_messagesView, SIGNAL(currentMessagesRemoved()), m_messagesBrowser, SLOT(clear())); connect(m_messagesView, SIGNAL(currentMessagesChanged(QList)), m_messagesBrowser, SLOT(navigateToMessages(QList))); + connect(m_messagesView, SIGNAL(currentMessagesRemoved()), this, SLOT(updateMessageButtonsAvailability())); + connect(m_messagesView, SIGNAL(currentMessagesChanged(QList)), this, SLOT(updateMessageButtonsAvailability())); // If user selects feeds, load their messages. connect(m_feedsView, SIGNAL(feedsSelected(FeedsSelection)), m_messagesView, SLOT(loadFeeds(FeedsSelection))); @@ -437,6 +459,8 @@ void FeedMessageViewer::initializeViews() { setTabOrder(m_messagesView, m_toolBarFeeds); setTabOrder(m_toolBarFeeds, m_toolBarMessages); setTabOrder(m_toolBarMessages, m_messagesBrowser); + + updateMessageButtonsAvailability(); } void FeedMessageViewer::showDbCleanupAssistant() { diff --git a/src/gui/feedmessageviewer.h b/src/gui/feedmessageviewer.h index af8eb8af9..124eb8922 100644 --- a/src/gui/feedmessageviewer.h +++ b/src/gui/feedmessageviewer.h @@ -103,7 +103,7 @@ class FeedMessageViewer : public TabContent { void updateFeeds(QList feeds); - protected slots: + private slots: // Updates counts of messages for example in tray icon. void updateTrayIconStatus(int unread_messages, int total_messages, bool any_unread_messages); @@ -116,6 +116,8 @@ class FeedMessageViewer : public TabContent { // toolbar. void switchFeedComponentVisibility(); + void updateMessageButtonsAvailability(); + protected: // Initializes some properties of the widget. void initialize(); diff --git a/src/miscellaneous/mutex.cpp b/src/miscellaneous/mutex.cpp index dfe00410d..ecd4a8871 100644 --- a/src/miscellaneous/mutex.cpp +++ b/src/miscellaneous/mutex.cpp @@ -34,7 +34,7 @@ void Mutex::lock() { bool Mutex::tryLock() { bool result; - if (result = m_mutex->tryLock()) { + if ((result = m_mutex->tryLock())) { setLocked(); } @@ -44,7 +44,7 @@ bool Mutex::tryLock() { bool Mutex::tryLock(int timeout) { bool result; - if (result = m_mutex->tryLock(timeout)) { + if ((result = m_mutex->tryLock(timeout))) { setLocked(); }