Git commit 6d940eeca283165e828f9158af971d9349e35f27 by Jan Kundr?t. Committed on 05/01/2013 at 15:11. Pushed by jkt into branch 'master'.
GUI: wip: proper replying M +39 -10 src/Gui/Window.cpp M +7 -2 src/Gui/Window.h http://commits.kde.org/trojita/6d940eeca283165e828f9158af971d9349e35f27 diff --git a/src/Gui/Window.cpp b/src/Gui/Window.cpp index 1474a00..548ec43 100644 --- a/src/Gui/Window.cpp +++ b/src/Gui/Window.cpp @@ -230,13 +230,17 @@ void MainWindow::createActions() connect(xtIncludeMailboxInSync, SIGNAL(triggered()), this, SLOT(slotXtSyncCurrentMailbox())); #endif - replyTo = new QAction(tr("Reply..."), this); - replyTo->setShortcut(tr("Ctrl+R")); - connect(replyTo, SIGNAL(triggered()), this, SLOT(slotReplyTo())); + m_replyPrivate = new QAction(tr("Private Reply"), this); + m_replyPrivate->setEnabled(false); + connect(m_replyPrivate, SIGNAL(triggered()), this, SLOT(slotReplyTo())); - replyAll = new QAction(tr("Reply All..."), this); - replyAll->setShortcut(tr("Ctrl+Shift+R")); - connect(replyAll, SIGNAL(triggered()), this, SLOT(slotReplyAll())); + m_replyAll = new QAction(tr("Reply to All"), this); + m_replyAll->setEnabled(false); + connect(m_replyAll, SIGNAL(triggered()), this, SLOT(slotReplyAll())); + + m_replyList = new QAction(tr("Reply to Mailing List"), this); + m_replyList->setEnabled(false); + connect(m_replyList, SIGNAL(triggered()), this, SLOT(slotReplyList())); actionThreadMsgList = new QAction(tr("Show Messages in Threads"), this); actionThreadMsgList->setCheckable(true); @@ -318,9 +322,17 @@ void MainWindow::createActions() connectModelActions(); + m_replyButton = new QToolButton(this); + m_replyButton->setPopupMode(QToolButton::MenuButtonPopup); + m_replyMenu = new QMenu(m_replyButton); + m_replyMenu->addAction(m_replyPrivate); + m_replyMenu->addAction(m_replyAll); + m_replyMenu->addAction(m_replyList); + m_replyButton->setMenu(m_replyMenu); + m_replyButton->setDefaultAction(m_replyPrivate); + m_mainToolbar->addAction(composeMail); - m_mainToolbar->addAction(replyTo); - m_mainToolbar->addAction(replyAll); + m_mainToolbar->addWidget(m_replyButton); m_mainToolbar->addAction(expunge); m_mainToolbar->addSeparator(); m_mainToolbar->addAction(markAsRead); @@ -342,8 +354,9 @@ void MainWindow::createMenus() { QMenu *imapMenu = menuBar()->addMenu(tr("IMAP")); imapMenu->addAction(composeMail); - imapMenu->addAction(replyTo); - imapMenu->addAction(replyAll); + imapMenu->addAction(m_replyPrivate); + imapMenu->addAction(m_replyAll); + imapMenu->addAction(m_replyList); imapMenu->addAction(expunge); imapMenu->addSeparator()->setText(tr("Network Access")); QMenu *netPolicyMenu = imapMenu->addMenu(tr("Network Access")); @@ -425,6 +438,7 @@ void MainWindow::createWidgets() area->setWidget(msgView); area->setWidgetResizable(true); connect(msgView, SIGNAL(messageChanged()), this, SLOT(scrollMessageUp())); + connect(msgView, SIGNAL(messageChanged()), this, SLOT(slotUpdateMessageActions())); connect(msgView, SIGNAL(linkHovered(QString)), this, SLOT(slotShowLinkTarget(QString))); if (QSettings().value(Common::SettingsNames::appLoadHomepage, QVariant(true)).toBool() && !QSettings().value(Common::SettingsNames::imapStartOffline).toBool()) { @@ -1143,6 +1157,16 @@ void MainWindow::updateActionsOnlineOffline(bool online) markAsDeleted->setEnabled(online); markAsRead->setEnabled(online); showImapCapabilities->setEnabled(online); + if (!online) { + m_replyPrivate->setEnabled(false); + m_replyAll->setEnabled(false); + m_replyList->setEnabled(false); + } +} + +void MainWindow::slotUpdateMessageActions() +{ + // FIXME } void MainWindow::scrollMessageUp() @@ -1160,6 +1184,11 @@ void MainWindow::slotReplyAll() msgView->reply(this, Composer::REPLY_ALL); } +void MainWindow::slotReplyList() +{ + msgView->reply(this, Composer::REPLY_LIST); +} + void MainWindow::slotComposeMailUrl(const QUrl &url) { Q_ASSERT(url.scheme().toLower() == QLatin1String("mailto")); diff --git a/src/Gui/Window.h b/src/Gui/Window.h index 3df71e1..c2adcb9 100644 --- a/src/Gui/Window.h +++ b/src/Gui/Window.h @@ -112,6 +112,8 @@ private slots: void slotComposeMail(); void slotReplyTo(); void slotReplyAll(); + void slotReplyList(); + void slotUpdateMessageActions(); void handleMarkAsRead(bool); void handleMarkAsDeleted(bool); void slotNextUnread(); @@ -211,8 +213,9 @@ private: QAction *showToolBar; QAction *configSettings; QAction *composeMail; - QAction *replyTo; - QAction *replyAll; + QAction *m_replyPrivate; + QAction *m_replyAll; + QAction *m_replyList; QAction *expunge; QAction *createChildMailbox; QAction *createTopMailbox; @@ -250,6 +253,8 @@ private: QAction *m_actionShowOnlySubscribed; QToolBar *m_mainToolbar; + QToolButton *m_replyButton; + QMenu *m_replyMenu; TaskProgressIndicator *busyParsersIndicator; QToolButton *networkIndicator;
