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 "notifyfriends.h" 00041 00042 // Conditional compilation for the target platform. 00043 #ifdef Q_OS_SYMBIAN 00044 #include "notifyfriends_symbian.h" // Symbian definition of private implementation class. 00045 #else 00046 #include "notifyfriends_stub.h" // Stub class for all other platforms. 00047 #endif 00048 00049 00050 // Constructor. 00051 NotifyFriends::NotifyFriends(QObject *parent) : QObject(parent) 00052 { 00053 #ifdef Q_OS_SYMBIAN 00054 // Symbian private class implementation. 00055 // This code can generate a Symbian Leave. 00056 // If it does, convert it into a throw. 00057 QT_TRAP_THROWING(d_ptr = NotifyFriendsPrivate::NewL(this)); 00058 #else 00059 // Stub class implementation 00060 d_ptr = new NotifyFriendsPrivate(this); 00061 #endif 00062 } 00063 00064 // Destructor - this public object owns the private implementation. 00065 NotifyFriends::~NotifyFriends() 00066 { 00067 delete d_ptr; 00068 } 00069 00070 // Public slot - adds a alarm. 00071 void NotifyFriends::addAlarm(QString message, QString alarmTime, QString contactNumber) 00072 { 00073 d_ptr->AddAlarm(message, alarmTime.toInt(), contactNumber); 00074 connect(this, SIGNAL(alarmFinished(QString, QString)), this, SLOT(sendSms(QString,QString))); 00075 } 00076 00077 // Send the sms to the contact, when alarm finishes. 00078 void NotifyFriends::sendSms(QString number, QString msgDetails) 00079 { 00080 // Capture the signal emitted by message service, when their is a state change. 00081 connect(&msgService, SIGNAL(stateChanged(QMessageService::State)), this, SLOT(stateChanged(QMessageService::State))); 00082 00083 // Create message account. 00084 QMessageAccount myAccount; 00085 00086 // For each account found, fing the account Id. 00087 foreach (const QMessageAccountId &id, manager.queryAccounts()) { 00088 00089 // Create the Account, using account id information. 00090 QMessageAccount account(id); 00091 00092 // Find the message type of the account found. 00093 QMessage::Type type(QMessage::NoType); 00094 if (account.messageTypes() & QMessage::Email) { 00095 type = QMessage::Email; 00096 } else if (account.messageTypes() & QMessage::Mms) { 00097 type = QMessage::Mms; 00098 } else if (account.messageTypes() & QMessage::Sms) { 00099 type = QMessage::Sms; 00100 myAccount = account; 00101 } 00102 } 00103 00104 // Create message. 00105 QMessage message; 00106 00107 // Set the type of the message. 00108 message.setType(QMessage::Sms); 00109 00110 // Message address type for SMS. 00111 QMessageAddress::Type addressType = QMessageAddress::Phone; 00112 00113 // Add the numbers, added by the user. 00114 if( !number.isEmpty()) 00115 toList.append(QMessageAddress(addressType,number)); 00116 00117 // Add to senders list. 00118 message.setTo(toList); 00119 00120 // Set the parent Account Id. 00121 message.setParentAccountId(myAccount.id()); 00122 00123 // Set network details captured, as the body of the SMS. 00124 message.setBody(msgDetails); 00125 00126 // Send the message. 00127 if(!msgService.send(message)){ 00128 // If not able to send the message 00129 //emit msgStatusReceived("Unable to send message"); 00130 } 00131 }