examples/QtQuick/qmlnetworkinfo/sendmessage.cpp

00001 /****************************************************************************
00002 **
00003 ** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
00004 ** All rights reserved.
00005 ** Contact: Nokia Corporation
00006 **
00007 **
00008 ** $QT_BEGIN_LICENSE:BSD$
00009 ** You may use this file under the terms of the BSD license as follows:
00010 **
00011 ** "Redistribution and use in source and binary forms, with or without
00012 ** modification, are permitted provided that the following conditions are
00013 ** met:
00014 **   * Redistributions of source code must retain the above copyright
00015 **     notice, this list of conditions and the following disclaimer.
00016 **   * Redistributions in binary form must reproduce the above copyright
00017 **     notice, this list of conditions and the following disclaimer in
00018 **     the documentation and/or other materials provided with the
00019 **     distribution.
00020 **   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
00021 **     the names of its contributors may be used to endorse or promote
00022 **     products derived from this software without specific prior written
00023 **     permission.
00024 **
00025 ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
00026 ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
00027 ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
00028 ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
00029 ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
00030 ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
00031 ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
00032 ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
00033 ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
00034 ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
00035 ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
00036 ** $QT_END_LICENSE$
00037 **
00038 ****************************************************************************/
00039 
00040 #include <QMessageBox>
00041 #include "sendmessage.h"
00042 
00043 // Default Constructor.
00044 MyMessageService::MyMessageService()
00045 {
00046 
00047 }
00048 
00049 // Default destructor.
00050 MyMessageService::~MyMessageService()
00051 {
00052 
00053 }
00054 
00055 // Sends the message.
00056 void MyMessageService::sendMessage(QString details, QString num1, QString num2, QString num3)
00057 {
00058 
00059     // Capture the signal emitted by message service, when their is a state change.
00060     connect(&msgService, SIGNAL(stateChanged(QMessageService::State)), this, SLOT(stateChanged(QMessageService::State)));
00061 
00062     // Create message account.
00063     QMessageAccount myAccount;
00064 
00065     // For each account found, fing the account Id.
00066     foreach (const QMessageAccountId &id, manager.queryAccounts()) {
00067 
00068         // Create the Account, using account id information.
00069         QMessageAccount account(id);
00070 
00071         // Find the message type of the account found.
00072         QMessage::Type type(QMessage::NoType);
00073         if (account.messageTypes() & QMessage::Email) {
00074             type = QMessage::Email;
00075         } else if (account.messageTypes() & QMessage::Mms) {
00076             type = QMessage::Mms;
00077         } else if (account.messageTypes() & QMessage::Sms) {
00078             type = QMessage::Sms;
00079             myAccount = account;
00080         }
00081     }
00082 
00083     // Create message.
00084     QMessage message;
00085 
00086     // Set the type of the message.
00087     message.setType(QMessage::Sms);
00088 
00089     // Message address type for SMS.
00090     QMessageAddress::Type addressType = QMessageAddress::Phone;
00091 
00092     // Add the numbers, added by the user.
00093     if( !num1.isEmpty())
00094     toList.append(QMessageAddress(addressType,num1));
00095     if( !num2.isEmpty())
00096     toList.append(QMessageAddress(addressType,num2));
00097     if( !num3.isEmpty())
00098     toList.append(QMessageAddress(addressType,num3));
00099 
00100     // Add to senders list.
00101     message.setTo(toList);
00102 
00103     // Set the parent Account Id.
00104     message.setParentAccountId(myAccount.id());
00105 
00106     // Set network details captured, as the body of the SMS.
00107     message.setBody(details);
00108 
00109     // Send the message.
00110     if(!msgService.send(message)){
00111         // If not able to send the message
00112         emit msgStatusReceived("Unable to send message");
00113     }
00114 }
00115 
00116 
00120 void MyMessageService::stateChanged(QMessageService::State newState)
00121 {
00122     if (newState == QMessageService::FinishedState) {
00123         if (msgService.error() == QMessageManager::NoError) {
00124             emit msgStatusReceived("Message sent successfully");
00125         } else {
00126             emit msgStatusReceived("Unable to send message");
00127             }
00128         }
00129 }

Generated by  doxygen 1.6.2