QML SMShelper Plugin
vineet.jain
(Talk | contribs) (Vineet.jain -) |
hamishwillee
(Talk | contribs) m (Hamishwillee - Bot update - Fix ArticleMetaData and other general fixes) |
||
| Line 2: | Line 2: | ||
{{Abstract|SMSplugin to expose Qt mobility SMS APIs to QML environment}} | {{Abstract|SMSplugin to expose Qt mobility SMS APIs to QML environment}} | ||
__NOTOC__ __NOEDITSECTION__ | __NOTOC__ __NOEDITSECTION__ | ||
| − | {{ArticleMetaData | + | {{ArticleMetaData <!-- v1.2 --> |
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
|sourcecode= [[Media:Smssender.zip]] | |sourcecode= [[Media:Smssender.zip]] | ||
|installfile= <!-- Link to installation file (e.g. [[Media:The Installation File.sis]]) --> | |installfile= <!-- Link to installation file (e.g. [[Media:The Installation File.sis]]) --> | ||
| − | |sdk=[http://qt.nokia.com/downloads Qt SDK] 4.7.1 or newer and [http://qt.nokia.com/products/qt-addons/mobility Qt mobility] 1.1.0 or newer | + | |devices= N8, E7, C7 |
| − | |devicecompatability=<!-- Compatible devices (e.g.: All* (must have GPS) ) --> | + | |sdk= [http://qt.nokia.com/downloads Qt SDK] 4.7.1 or newer and [http://qt.nokia.com/products/qt-addons/mobility Qt mobility] 1.1.0 or newer |
| − | |signing=Self-Signed | + | |platform= Symbian^3 |
| − | |capabilities=NetworkServices | + | |devicecompatability= <!-- Compatible devices (e.g.: All* (must have GPS) ) --> |
| − | |author=[[User:Jahartik]] | + | |dependencies= <!-- Any other/external dependencies e.g.: Google Maps Api v1.0 --> |
| + | |signing= Self-Signed | ||
| + | |capabilities= NetworkServices | ||
| + | |keywords= QMessageService, QMessageManager | ||
| + | |language= <!-- Language category code for non-English topics - e.g. Lang-Chinese --> | ||
| + | |translated-by= <!-- [[User:XXXX]] --> | ||
| + | |translated-from-title= <!-- Title only --> | ||
| + | |translated-from-id= <!-- Id of translated revision --> | ||
| + | |review-by= <!-- After re-review: [[User:username]] --> | ||
| + | |review-timestamp= <!-- After re-review: YYYYMMDD --> | ||
| + | |update-by= <!-- After significant update: [[User:username]]--> | ||
| + | |update-timestamp= <!-- After significant update: YYYYMMDD --> | ||
| + | |creationdate= 20110429 | ||
| + | |author= [[User:Jahartik]] | ||
}} | }} | ||
Revision as of 07:11, 20 February 2012
SMSplugin to expose Qt mobility SMS APIs to QML environment
Article Metadata
Code Example
Source file: Media:Smssender.zip
Tested with
SDK: Qt SDK 4.7.1 or newer and Qt mobility 1.1.0 or newer
Devices(s): N8, E7, C7
Compatibility
Platform(s): Symbian^3
Platform Security
Signing Required: Self-Signed
Capabilities: NetworkServices
Article
Keywords: QMessageService, QMessageManager
Created: jahartik
(29 Apr 2011)
Last edited: hamishwillee
(20 Feb 2012)
Pro file
The following capabilities and libraries are required:
symbian:TARGET.CAPABILITY = NetworkServices
CONFIG += mobility
MOBILITY = messaging
Header file
smshelper.h applying this macro to definitions of member functions to allow them to be invoked via the meta-object system
#ifndef SMSHELPER_H
#define SMSHELPER_H
#include <QObject>
#include <qmessage.h>
#include <qmessageservice.h>
QTM_USE_NAMESPACE
#ifdef Q_OS_SYMBIAN
# define SENDSMS_ENABLED
#elif defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6)
# define SENDSMS_ENABLED
#endif
class SMSHelper : public QObject
{
Q_OBJECT
public:
explicit SMSHelper(QObject *parent = 0);
~SMSHelper();
Q_INVOKABLE bool sendsms(QString phonenumber, QString message);
signals:
void stateMsg(const QString &statemsg);
void errorMsg(const QString &errormsg);
void debugMsg(const QString &dbgmsg);
private slots:
void messageStateChanged(QMessageService::State s);
#ifndef SENDSMS_ENABLED
void signalFinishedState() { emit stateMsg("FinishedState");};
#endif
private:
QMessageService iMessageService;
QMessageManager iManager;
QMessageService::State state;
};
#endif // SMSHELPER_H
Source file
smshelper source code
#include "smshelper.h"
#ifndef SENDSMS_ENABLED
#include <QTimer>
#endif
SMSHelper::SMSHelper(QObject *parent) :
QObject(parent)
{
state = QMessageService::InactiveState;
connect(&iMessageService, SIGNAL(stateChanged(QMessageService::State)), this, SLOT(messageStateChanged(QMessageService::State)));
}
SMSHelper::~SMSHelper()
{
}
bool SMSHelper::sendsms(QString phonenumber, QString message)
{
#ifdef SENDSMS_ENABLED
if (!QMessageAccount::defaultAccount(QMessage::Sms).isValid())
{
emit errorMsg("No messageaccount for sms sending.");
return false;
}
if (state == QMessageService::InactiveState || state == QMessageService::FinishedState)
{
QMessage sms;
sms.setType(QMessage::Sms);
sms.setParentAccountId(QMessageAccount::defaultAccount(QMessage::Sms));
sms.setTo(QMessageAddress(QMessageAddress::Phone, phonenumber));
sms.setBody(message);
return iMessageService.send(sms);
}
else
{
return false;
}
#else
QTimer::singleShot(1000,this,SLOT(signalFinishedState()));
return true;
#endif
}
void SMSHelper::messageStateChanged(QMessageService::State s)
{
state = s;
if (s == QMessageService::InactiveState)
{
emit stateMsg("InactiveState");
}
else if (s == QMessageService::ActiveState)
{
emit stateMsg("ActiveState");
}
else if (s == QMessageService::CanceledState)
{
emit stateMsg("CanceledState");
}
else if (s == QMessageService::FinishedState)
{
emit stateMsg("FinishedState");
}
else
{
emit stateMsg(QString("QMessageService::%1").arg(s));
}
}
To register the C++ type in the QML system with the name SMSHelper include following code in your main.cpp file
qmlRegisterType<SMSHelper>("SMSHelper",1,0,"SMSHelper");
Import sms plugin in QML
import SMSHelper 1.0Example use QML
SMSHelper
{
id: smshelper
}
SMShelper developer APIs
//Constructor and destructor
SMSHelper(QObject *parent = 0);
~SMSHelper();
public slots:
sendsms(QString phonenumber, QString message);
signals:
void stateMsg(const QString &statemsg);
void errorMsg(const QString &errormsg);
void debugMsg(const QString &dbgmsg);

