From 7b8493a8a977032b502e6df00b89f6b1a813b78b Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Thu, 30 Apr 2015 02:19:10 +0300 Subject: In mail view window add buttons for open previous and next message. --- src/gui/windows/mailviewwindow.cpp | 23 +++++++++++++++--- src/gui/windows/mailviewwindow.h | 2 ++ src/gui/windows/mailwindow.cpp | 48 ++++++++++++++++++++++++++++++++++++++ src/gui/windows/mailwindow.h | 4 ++++ 4 files changed, 74 insertions(+), 3 deletions(-) (limited to 'src/gui/windows') diff --git a/src/gui/windows/mailviewwindow.cpp b/src/gui/windows/mailviewwindow.cpp index 3caf7dc53..8dce1228b 100644 --- a/src/gui/windows/mailviewwindow.cpp +++ b/src/gui/windows/mailviewwindow.cpp @@ -26,7 +26,7 @@ #include "gui/mailmessage.h" -#include "gui/windows/setupwindow.h" +#include "gui/windows/mailwindow.h" #include "gui/widgets/button.h" #include "gui/widgets/containerplacer.h" @@ -59,6 +59,8 @@ MailViewWindow::MailViewWindow(const MailMessage *const message) : mGetAttachButton(nullptr), // TRANSLATORS: mail view window button mCloseButton(new Button(this, _("Close"), "close", this)), + mPrevButton(new Button(this, "<", "prev", this)), + mNextButton(new Button(this, ">", "next", this)), // TRANSLATORS: mail view window label mTimeLabel(new Label(this, strprintf("%s %s", _("Time:"), message->strTime.c_str()))), @@ -119,9 +121,14 @@ MailViewWindow::MailViewWindow(const MailMessage *const message) : if (message->money || message->itemId) { mGetAttachButton = new Button(this, _("Get attach"), "attach", this); - placer(0, n, mGetAttachButton); + placer(0, n++, mGetAttachButton); } - placer(2, n, mCloseButton); + ContainerPlacer placer2; + placer2 = getPlacer(0, n); + + placer2(0, 0, mPrevButton); + placer2(1, 0, mNextButton); + placer2(2, 0, mCloseButton); loadWindowState(); enableVisibleSound(true); @@ -151,4 +158,14 @@ void MailViewWindow::action(const ActionEvent &event) if (mGetAttachButton) mailHandler->getAttach(mMessage->id); } + else if (eventId == "next") + { + if (mMessage) + mailWindow->viewNext(mMessage->id); + } + else if (eventId == "prev") + { + if (mMessage) + mailWindow->viewPrev(mMessage->id); + } } diff --git a/src/gui/windows/mailviewwindow.h b/src/gui/windows/mailviewwindow.h index 155449bcf..77e1fb2cb 100644 --- a/src/gui/windows/mailviewwindow.h +++ b/src/gui/windows/mailviewwindow.h @@ -50,6 +50,8 @@ class MailViewWindow final : public Window, const MailMessage *mMessage; Button *mGetAttachButton; Button *mCloseButton; + Button *mPrevButton; + Button *mNextButton; Label *mTimeLabel; Label *mMoneyLabel; Label *mFromLabel; diff --git a/src/gui/windows/mailwindow.cpp b/src/gui/windows/mailwindow.cpp index ecef7b54e..aec30ce89 100644 --- a/src/gui/windows/mailwindow.cpp +++ b/src/gui/windows/mailwindow.cpp @@ -210,3 +210,51 @@ void MailWindow::showMessage(MailMessage *const mail) delete mailViewWindow; mailViewWindow = new MailViewWindow(mail); } + +void MailWindow::viewNext(const int id) +{ + FOR_EACH (std::vector::iterator, it, mMessages) + { + MailMessage *message = *it; + if (message && message->id == id) + { + ++ it; + if (it == mMessages.end()) + { + it = mMessages.begin(); + mListBox->setSelected(0); + } + else + { + mListBox->setSelected(mListBox->getSelected() + 1); + } + message = *it; + mailHandler->readMessage(message->id); + return; + } + } +} + +void MailWindow::viewPrev(const int id) +{ + FOR_EACH (std::vector::iterator, it, mMessages) + { + MailMessage *message = *it; + if (message && message->id == id) + { + if (it == mMessages.begin()) + { + it = mMessages.end(); + mListBox->setSelected(mMessages.size() - 1); + } + else + { + mListBox->setSelected(mListBox->getSelected() - 1); + } + -- it; + message = *it; + mailHandler->readMessage(message->id); + return; + } + } +} diff --git a/src/gui/windows/mailwindow.h b/src/gui/windows/mailwindow.h index 23f89be0a..fc5fab397 100644 --- a/src/gui/windows/mailwindow.h +++ b/src/gui/windows/mailwindow.h @@ -58,6 +58,10 @@ class MailWindow final : public Window, void removeMail(const int id); + void viewNext(const int id); + + void viewPrev(const int id); + private: std::vector mMessages; std::map mMessagesMap; -- cgit v1.2.3-60-g2f50