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 }