Work on disabling actions.

This commit is contained in:
Martin Rotter 2015-06-12 20:10:18 +02:00
parent b52e0e7027
commit 37f4ad4cfe
3 changed files with 30 additions and 4 deletions

View file

@ -64,8 +64,8 @@ FeedMessageViewer::FeedMessageViewer(QWidget *parent)
m_messagesView(new MessagesView(this)), m_messagesView(new MessagesView(this)),
m_feedsView(new FeedsView(this)), m_feedsView(new FeedsView(this)),
m_messagesBrowser(new WebBrowser(this)), m_messagesBrowser(new WebBrowser(this)),
m_dbCleanerThread(NULL),
m_feedDownloaderThread(NULL), m_feedDownloaderThread(NULL),
m_dbCleanerThread(NULL),
m_feedDownloader(NULL), m_feedDownloader(NULL),
m_dbCleaner(NULL) { m_dbCleaner(NULL) {
initialize(); initialize();
@ -261,6 +261,26 @@ void FeedMessageViewer::switchFeedComponentVisibility() {
m_feedsWidget->setVisible(!m_feedsWidget->isVisible()); 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() { void FeedMessageViewer::createConnections() {
FormMain *form_main = qApp->mainForm(); FormMain *form_main = qApp->mainForm();
@ -271,6 +291,8 @@ void FeedMessageViewer::createConnections() {
// Message changers. // Message changers.
connect(m_messagesView, SIGNAL(currentMessagesRemoved()), m_messagesBrowser, SLOT(clear())); connect(m_messagesView, SIGNAL(currentMessagesRemoved()), m_messagesBrowser, SLOT(clear()));
connect(m_messagesView, SIGNAL(currentMessagesChanged(QList<Message>)), m_messagesBrowser, SLOT(navigateToMessages(QList<Message>))); connect(m_messagesView, SIGNAL(currentMessagesChanged(QList<Message>)), m_messagesBrowser, SLOT(navigateToMessages(QList<Message>)));
connect(m_messagesView, SIGNAL(currentMessagesRemoved()), this, SLOT(updateMessageButtonsAvailability()));
connect(m_messagesView, SIGNAL(currentMessagesChanged(QList<Message>)), this, SLOT(updateMessageButtonsAvailability()));
// If user selects feeds, load their messages. // If user selects feeds, load their messages.
connect(m_feedsView, SIGNAL(feedsSelected(FeedsSelection)), m_messagesView, SLOT(loadFeeds(FeedsSelection))); 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_messagesView, m_toolBarFeeds);
setTabOrder(m_toolBarFeeds, m_toolBarMessages); setTabOrder(m_toolBarFeeds, m_toolBarMessages);
setTabOrder(m_toolBarMessages, m_messagesBrowser); setTabOrder(m_toolBarMessages, m_messagesBrowser);
updateMessageButtonsAvailability();
} }
void FeedMessageViewer::showDbCleanupAssistant() { void FeedMessageViewer::showDbCleanupAssistant() {

View file

@ -103,7 +103,7 @@ class FeedMessageViewer : public TabContent {
void updateFeeds(QList<FeedsModelFeed*> feeds); void updateFeeds(QList<FeedsModelFeed*> feeds);
protected slots: private slots:
// Updates counts of messages for example in tray icon. // Updates counts of messages for example in tray icon.
void updateTrayIconStatus(int unread_messages, int total_messages, bool any_unread_messages); void updateTrayIconStatus(int unread_messages, int total_messages, bool any_unread_messages);
@ -116,6 +116,8 @@ class FeedMessageViewer : public TabContent {
// toolbar. // toolbar.
void switchFeedComponentVisibility(); void switchFeedComponentVisibility();
void updateMessageButtonsAvailability();
protected: protected:
// Initializes some properties of the widget. // Initializes some properties of the widget.
void initialize(); void initialize();

View file

@ -34,7 +34,7 @@ void Mutex::lock() {
bool Mutex::tryLock() { bool Mutex::tryLock() {
bool result; bool result;
if (result = m_mutex->tryLock()) { if ((result = m_mutex->tryLock())) {
setLocked(); setLocked();
} }
@ -44,7 +44,7 @@ bool Mutex::tryLock() {
bool Mutex::tryLock(int timeout) { bool Mutex::tryLock(int timeout) {
bool result; bool result;
if (result = m_mutex->tryLock(timeout)) { if ((result = m_mutex->tryLock(timeout))) {
setLocked(); setLocked();
} }