messagehandling.cpp Example File
demos/mobile/qcamera/messagehandling.cpp
 
 
 #include "messagehandling.h"
 #include <QMessageBox>
 #include <QDebug>
 #include <QTimerEvent>
 #include <QTimer>
 #include <QFile>
 #include <QPixmap>
 #include <QImageReader>
 Message::Message(QObject *parent) :
     QObject(parent)
 {
     
     m_service = new QMessageService(this);
     
     QObject::connect(m_service, SIGNAL(messagesFound(const QMessageIdList&)), this, SLOT(messagesFound(const QMessageIdList&)));
     
     
     m_manager = new QMessageManager(this);
     QObject::connect(m_manager, SIGNAL(messageAdded(const QMessageId&,const QMessageManager::NotificationFilterIdSet&)),
     this, SLOT(messageAdded(const QMessageId&,const QMessageManager::NotificationFilterIdSet&)));
     
 #ifdef Q_OS_SYMBIAN
 #ifdef __WINS__
     m_notifFilterSet.insert(m_manager->registerNotificationFilter(QMessageFilter::byStandardFolder(
         QMessage::DraftsFolder)));
 #else
     m_notifFilterSet.insert(m_manager->registerNotificationFilter(QMessageFilter::byStandardFolder(
         QMessage::InboxFolder)));
 #endif
 #else
     m_notifFilterSet.insert(m_manager->registerNotificationFilter(QMessageFilter::byStandardFolder(
         QMessage::InboxFolder)));
 #endif
 }
 Message::~Message()
 {
 }
 void Message::messageAdded(const QMessageId& id,
     const QMessageManager::NotificationFilterIdSet& matchingFilterIds)
 {
     if (matchingFilterIds.contains(m_notifFilterSet)) {
         processIncomingMMS(id);
     }
 }
 void Message::checkMessages()
 {
 #ifdef Q_OS_SYMBIAN
 #ifdef __WINS__
     QMessageFilter folderFilter(QMessageFilter::byStandardFolder(QMessage::DraftsFolder));
 #else
     QMessageFilter folderFilter(QMessageFilter::byStandardFolder(QMessage::InboxFolder));
 #endif
 #else
     QMessageFilter folderFilter(QMessageFilter::byStandardFolder(QMessage::InboxFolder));
 #endif
     m_service->queryMessages(folderFilter);
     
 }
 void Message::messagesFound(const QMessageIdList &ids)
 {
     foreach (const QMessageId& id, ids) {
             processIncomingMMS(id);
         }
 }
 void Message::processIncomingMMS(const QMessageId& id)
 {
     QMessage message = m_manager->message(id);
     
     if (message.type()!=QMessage::Mms)
         return;
     QMessageContentContainerIdList attachments = message.attachmentIds();
     if (!attachments.isEmpty()) {
         QMessageContentContainer messageContent = message.find(attachments[0]);
         if (messageContent.isContentAvailable() && messageContent.contentType() == "image") {
             
             QPixmap pixmap;
             pixmap.loadFromData(messageContent.content());
             QString from = message.from().addressee();
             QString filename = messageContent.suggestedFileName();
             
             emit messageReceived(from, filename, pixmap);
         }
     }
 }
 bool Message::sendMMS(QString picturePath, QString phoneNumber)
 {
     QString tmpFileName = "c:/System/qcamera_mms.jpg";
     
     
     QFile previousFile(tmpFileName);
     if (previousFile.exists()) {
         previousFile.remove();
     }
     
     QImageReader reader;
     reader.setFileName(picturePath);
     QSize imageSize = reader.size();
     imageSize.scale(QSize(300,300), Qt::KeepAspectRatio);
     reader.setScaledSize(imageSize);
     QImage image = reader.read();
     image.save(tmpFileName);
     
     picturePath = tmpFileName;
     
     QMessage message;
     message.setType(QMessage::Mms);
     message.setParentAccountId(QMessageAccount::defaultAccount(QMessage::Mms));
     message.setTo(QMessageAddress(QMessageAddress::Phone, phoneNumber));
     QStringList paths;
     paths << picturePath;
     message.appendAttachments(paths);
     return m_service->send(message);
 }
 void Message::stateChanged(QMessageService::State s)
 {
     emit messageStateChanged(s);
 }