Git commit 2c563d108a3ff536a27196fbfe96d95e3360e8b1 by Jan Kundr?t.
Committed on 21/08/2013 at 08:28.
Pushed by jkt into branch 'master'.

GUI: manage the enabled state of buttons which modify the message flags

BUG: 320618

M  +12   -2    src/Gui/Window.cpp

http://commits.kde.org/trojita/2c563d108a3ff536a27196fbfe96d95e3360e8b1

diff --git a/src/Gui/Window.cpp b/src/Gui/Window.cpp
index c435fdb..800a49e 100644
--- a/src/Gui/Window.cpp
+++ b/src/Gui/Window.cpp
@@ -467,6 +467,8 @@ void MainWindow::createActions()
     m_mainToolbar->addSeparator();
     m_mainToolbar->addAction(showMenuBar);
     m_mainToolbar->addAction(configSettings);
+
+    updateMessageFlags();
 }
 
 void MainWindow::connectModelActions()
@@ -715,8 +717,11 @@ void MainWindow::setupModels()
     connect(msgListModel, SIGNAL(messagesAvailable()), msgListWidget->tree, 
SLOT(scrollToBottom()));
     connect(msgListModel, SIGNAL(rowsInserted(QModelIndex,int,int)), 
msgListWidget, SLOT(slotAutoEnableDisableSearch()));
     connect(msgListModel, SIGNAL(rowsRemoved(QModelIndex,int,int)), 
msgListWidget, SLOT(slotAutoEnableDisableSearch()));
+    connect(msgListModel, SIGNAL(rowsRemoved(QModelIndex,int,int)), this, 
SLOT(updateMessageFlags()));
     connect(msgListModel, SIGNAL(layoutChanged()), msgListWidget, 
SLOT(slotAutoEnableDisableSearch()));
+    connect(msgListModel, SIGNAL(layoutChanged()), this, 
SLOT(updateMessageFlags()));
     connect(msgListModel, SIGNAL(modelReset()), msgListWidget, 
SLOT(slotAutoEnableDisableSearch()));
+    connect(msgListModel, SIGNAL(modelReset()), this, 
SLOT(updateMessageFlags()));
     connect(msgListModel, SIGNAL(mailboxChanged(QModelIndex)), this, 
SLOT(slotMailboxChanged(QModelIndex)));
 
     connect(model, SIGNAL(alertReceived(const QString &)), this, 
SLOT(alertReceived(const QString &)));
@@ -1446,8 +1451,11 @@ void MainWindow::updateMessageFlags()
 
 void MainWindow::updateMessageFlags(const QModelIndex &index)
 {
-    
markAsRead->setChecked(index.data(Imap::Mailbox::RoleMessageIsMarkedRead).toBool());
-    
markAsDeleted->setChecked(index.data(Imap::Mailbox::RoleMessageIsMarkedDeleted).toBool());
+    bool okToModify = model->isNetworkAvailable() && index.isValid() && 
index.data(Imap::Mailbox::RoleMessageUid).toUInt() > 0;
+    markAsRead->setEnabled(okToModify);
+    markAsDeleted->setEnabled(okToModify);
+    markAsRead->setChecked(okToModify && 
index.data(Imap::Mailbox::RoleMessageIsMarkedRead).toBool());
+    markAsDeleted->setChecked(okToModify && 
index.data(Imap::Mailbox::RoleMessageIsMarkedDeleted).toBool());
 }
 
 void MainWindow::updateActionsOnlineOffline(bool online)
@@ -1652,6 +1660,8 @@ void MainWindow::slotMailboxChanged(const QModelIndex 
&mailbox)
             tree->showColumn(MsgListModel::FROM);
         }
     }
+
+    updateMessageFlags();
 }
 
 void MainWindow::showConnectionStatus(QObject *parser, Imap::ConnectionState 
state)

Reply via email to