// message.h /* * Copyright (C) Xabier Rodriguez Calvar * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public License * as published by the Free Software Foundation; version 3 of the * License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA * */ #ifndef MESSAGE_H #define MESSAGE_H #include #include #include QTM_USE_NAMESPACE class Message : public QDeclarativeItem { Q_OBJECT public: Q_PROPERTY(QStringList to READ to WRITE setTo) Q_PROPERTY(QString body READ body WRITE setBody) Q_PROPERTY(QString from READ from WRITE setFrom) Q_PROPERTY(QStringList attachments READ attachments WRITE setAttachments) Q_PROPERTY(QString subject READ subject WRITE setSubject) Message(QDeclarativeItem *parent = 0); virtual ~Message(); Q_INVOKABLE bool send(); Q_INVOKABLE bool compose(); QStringList to() { return m_to; }; QString body() { return m_body; }; QString from() { return m_from; }; QStringList attachments() { return m_attachments; }; QString subject() { return m_subject; }; public slots: void setTo(const QStringList& to) { m_to = to; }; void setBody(const QString& body) { m_body = body; }; void setFrom(const QString& from) { m_from = from; }; void setAttachments(const QStringList& attachments) { m_attachments = attachments; }; void setSubject(const QString& subject) { m_subject = subject; }; private slots: void stateChanged (QMessageService::State newState); private: const QMessage createMessage(); QStringList m_to; QString m_body; QString m_from; QStringList m_attachments; QString m_subject; QMessageService service; }; #endif // MESSAGE_H // message.cpp /* * Copyright (C) Xabier Rodriguez Calvar * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public License * as published by the Free Software Foundation; version 3 of the * License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA * */ #include "message.h" Message::Message(QDeclarativeItem *parent) : QDeclarativeItem(parent) { connect(&service, SIGNAL(stateChanged (QMessageService::State)), this, SLOT(stateChanged (QMessageService::State))); } Message::~Message() { } const QMessage Message::createMessage() { QMessage message; message.setFrom(QMessageAddress(QMessageAddress::Email, m_from)); QMessageAddressList toList; foreach (const QString &item, m_to) { toList.append(QMessageAddress(QMessageAddress::Email, item)); } message.setTo(toList); message.setSubject(m_subject); message.setBody(m_body); message.appendAttachments(m_attachments); return message; } bool Message::send() { QMessage message = createMessage(); qDebug("%s: from: <%s> to: <%s> body: \"%s\" attachment: %s", Q_FUNC_INFO, m_from.toUtf8().constData(), m_to[0].toUtf8().constData(), m_body.toUtf8().constData(), m_attachments[0].toUtf8().constData()); service.send(message); return true; } bool Message::compose() { QMessage message = createMessage(); qDebug("%s: from: <%s> to: <%s> body: \"%s\" attachment: %s", Q_FUNC_INFO, m_from.toUtf8().constData(), m_to[0].toUtf8().constData(), m_body.toUtf8().constData(), m_attachments[0].toUtf8().constData()); service.compose(message); return true; } void Message::stateChanged (QMessageService::State newState) { qDebug() << "state changed to" << newState; if (newState == QMessageService::FinishedState) { QMessageManager::Error error = service.error(); qDebug() << "error:" << error; } }