From d0768817618143739b8fd81cfa9124e8f60e1b12 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Fri, 25 Aug 2017 23:55:43 +0300 Subject: Validate destination name after it entered in mail edit window. --- src/gui/windows/maileditwindow.cpp | 34 +++++++++++++++++++++++++++++++++- src/gui/windows/maileditwindow.h | 8 +++++++- 2 files changed, 40 insertions(+), 2 deletions(-) (limited to 'src/gui') diff --git a/src/gui/windows/maileditwindow.cpp b/src/gui/windows/maileditwindow.cpp index 47b4d409e..b3cfd560b 100644 --- a/src/gui/windows/maileditwindow.cpp +++ b/src/gui/windows/maileditwindow.cpp @@ -52,6 +52,7 @@ MailEditWindow::MailEditWindow() : // TRANSLATORS: mail edit window name Window(_("Edit mail"), Modal_false, nullptr, "mailedit.xml"), ActionListener(), + FocusListener(), // TRANSLATORS: mail edit window button mSendButton(new Button(this, _("Send"), "send", this)), // TRANSLATORS: mail edit window button @@ -101,8 +102,8 @@ MailEditWindow::MailEditWindow() : mSubjectField->setWidth(100); mMessageField->setWidth(100); mItemScrollArea->setHeight(100); - mItemScrollArea->setHorizontalScrollPolicy(ScrollArea::SHOW_NEVER); + mToField->addFocusListener(this); placer(0, 0, mToLabel); placer(1, 0, mToField, 3); @@ -120,6 +121,7 @@ MailEditWindow::MailEditWindow() : placer(3, 6, mCloseButton); loadWindowState(); + mSendButton->setEnabled(false); enableVisibleSound(true); } @@ -177,6 +179,7 @@ void MailEditWindow::setSubject(const std::string &str) void MailEditWindow::setTo(const std::string &str) { mToField->setText(str); + mSendButton->setEnabled(true); } void MailEditWindow::setMessage(const std::string &str) @@ -240,3 +243,32 @@ void MailEditWindow::updateItems() { mItemContainer->updateMatrix(); } + +void MailEditWindow::focusLost(const Event &event) +{ + if (!mUseMail2) + return; + + if (event.getSource() == mToField) + { + const std::string to = mToField->getText(); + if (to != mail2Handler->getCheckedName()) + { + mail2Handler->queueCheckName(MailQueueType::ValidateTo, + to, + std::string(), + std::string(), + 0); + mSendButton->setEnabled(false); + } + else + { + mSendButton->setEnabled(true); + } + } +} + +void MailEditWindow::validatedTo() +{ + mSendButton->setEnabled(true); +} diff --git a/src/gui/windows/maileditwindow.h b/src/gui/windows/maileditwindow.h index 37d983c1c..2c6c5d0ef 100644 --- a/src/gui/windows/maileditwindow.h +++ b/src/gui/windows/maileditwindow.h @@ -24,6 +24,7 @@ #include "gui/widgets/window.h" #include "listeners/actionlistener.h" +#include "listeners/focuslistener.h" class Button; class IntTextField; @@ -35,7 +36,8 @@ class ScrollArea; class TextField; class MailEditWindow final : public Window, - public ActionListener + public ActionListener, + public FocusListener { public: MailEditWindow(); @@ -60,6 +62,10 @@ class MailEditWindow final : public Window, void updateItems(); + void focusLost(const Event &event) override final; + + void validatedTo(); + private: void sendMail(); -- cgit v1.2.3-60-g2f50