×
Namespaces

Variants
Actions
(Difference between revisions)

QML SMShelper Plugin

From Nokia Developer Wiki
Jump to: navigation, search
kpakarin (Talk | contribs)
kpakarin (Talk | contribs)
Line 29: Line 29:
 
==Pro file==
 
==Pro file==
  
The following capabilities are required:
+
The following capabilities and libraries are required:
  
 
CAPABILITY: symbian:TARGET.CAPABILITY = NetworkServices
 
CAPABILITY: symbian:TARGET.CAPABILITY = NetworkServices
  
<code> code </code>
+
CONFIG += mobility
 +
MOBILITY = messaging
  
 
==Header file==
 
==Header file==
Line 177: Line 178:
 
</code>  
 
</code>  
  
==Postconditions==
+
To register the C++ type in the QML system with the name SMSHelper include following code in your main.cpp file
  
''Explain what the code snippet is expected to do.''
+
<code>
 +
qmlRegisterType<SMSHelper>("SMSHelper",1,0,"SMSHelper");
 +
</code>
  
 +
Import sms plugin in QML
 +
<code>
 +
import SMSHelper 1.0
 +
</code>
  
==Test application and other attachments (optional)==
+
Example use QML
 
+
<code>
''The attachments should be provided with the visible info page (Categories need to be defined, the attached file must be uploaded to Wiki, and internal Wiki links must be used). Every attachment should have its own page (however, a ZIP package can be used for multiple source code files).''
+
SMSHelper
 
+
    {
[[Category:Code Examples]]
+
        id: smshelper
 +
----
 +
smshelper.sendsms(phone, message)
 +
</code>

Revision as of 12:50, 29 April 2011


Article Metadata
Tested with
Devices(s): ...
Compatibility
Platform(s): ...
Article
Keywords: ...
Created: (30 Jul 2014)
Last edited: kpakarin (29 Apr 2011)



Delete the guidance text written in italics.

Overview

SMSplugin to expose Qt mobility SMS apis to Qml environment

This snippet can be self-signed.

Preconditions

Qt 4.7.1 or newer and Qt mobility 1.1.0 or newer installed

Pro file

The following capabilities and libraries are required:

CAPABILITY: 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.0

Example use QML

SMSHelper
{
id: smshelper
----
smshelper.sendsms(phone, message)
159 page views in the last 30 days.
×