File indexing completed on 2024-11-24 04:53:23

0001 /* Copyright (C) 2006 - 2014 Jan Kundrát <jkt@flaska.net>
0002 
0003    This file is part of the Trojita Qt IMAP e-mail client,
0004    http://trojita.flaska.net/
0005 
0006    This program is free software; you can redistribute it and/or
0007    modify it under the terms of the GNU General Public License as
0008    published by the Free Software Foundation; either version 2 of
0009    the License or (at your option) version 3 or any later version
0010    accepted by the membership of KDE e.V. (or its successor approved
0011    by the membership of KDE e.V.), which shall act as a proxy
0012    defined in Section 14 of version 3 of the license.
0013 
0014    This program is distributed in the hope that it will be useful,
0015    but WITHOUT ANY WARRANTY; without even the implied warranty of
0016    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
0017    GNU General Public License for more details.
0018 
0019    You should have received a copy of the GNU General Public License
0020    along with this program.  If not, see <http://www.gnu.org/licenses/>.
0021 */
0022 #include "ImapSubmit.h"
0023 #include "Common/InvokeMethod.h"
0024 #include "Imap/Model/Model.h"
0025 #include "Imap/Tasks/UidSubmitTask.h"
0026 
0027 namespace MSA
0028 {
0029 
0030 ImapSubmit::ImapSubmit(QObject *parent, Imap::Mailbox::Model *model):
0031     AbstractMSA(parent), m_model(model)
0032 {
0033 }
0034 
0035 void ImapSubmit::cancel()
0036 {
0037     emit error(QStringLiteral("MSA::ImapSubmit::cancel() is not implemented; this is a bug in Trojita."));
0038     Q_ASSERT(false);
0039 }
0040 
0041 bool ImapSubmit::supportsImapSending() const
0042 {
0043     return true;
0044 }
0045 
0046 void ImapSubmit::sendImap(const QString &mailbox, const uint uidValidity, const uint uid,
0047                           const Imap::Mailbox::UidSubmitOptionsList options)
0048 {
0049     Imap::Mailbox::UidSubmitTask *submitTask = m_model->sendMailViaUidSubmit(mailbox, uidValidity, uid, options);
0050     Q_ASSERT(submitTask);
0051     connect(submitTask, &Imap::Mailbox::ImapTask::completed, this, &AbstractMSA::sent);
0052     connect(submitTask, &Imap::Mailbox::ImapTask::failed, this, &AbstractMSA::error);
0053     EMIT_LATER_NOARG(this, sending);
0054 }
0055 
0056 ImapSubmitFactory::ImapSubmitFactory(Imap::Mailbox::Model *model):
0057     m_model(model)
0058 {
0059 }
0060 
0061 ImapSubmitFactory::~ImapSubmitFactory()
0062 {
0063 }
0064 
0065 AbstractMSA *ImapSubmitFactory::create(QObject *parent) const
0066 {
0067     return new ImapSubmit(parent, m_model);
0068 }
0069 
0070 }