The Mobility Project
Alex Luddy
Purpose

• Fuel your ideas for using the Qt APIs from the
  Mobility project




                                                   1
Agenda

• Background

• Content Overview
  – Some examples

• Questions




                     2
Traditional Qt




                 3
Qt Going Forward




                   4
Mobility Project




                   5
Mobility and Applications




                            6
Qt Mobility Details

• The Mobility project is creating Qt APIs

• APIs will have supported functional back-ends on
  all platforms where it makes sense

• Some APIs on Qt labs now




                                                     7
The Story of Bob the Developer

• Wants to make a mobile application

• Wants the application to be cross-platform



• A Web feed reader…




                                               8
Bearer Management

• Enables roaming between
 connections

• Choose most appropriate
 connection

• Manage connections




                            9
Bearer Management




                    10
Bearer Management Demo




                         11
Bearer Management Example

class BearerCloud : public QGraphicsScene

{

     // ...

     QNetworkConfigurationManager manager;

};




                                             12
Bearer Management Example

connect(&manager,

    SIGNAL(configurationAdded(QNetworkConfiguration)),

    this, SLOT(configurationAdded(QNetworkConfiguration)));

connect(&manager,

    SIGNAL(configurationUpdated(QNetworkConfiguration)),

    this, SLOT(configurationUpdated(QNetworkConfiguration)));




                                                                13
Bearer Management Example

void BearerCloud::configurationAdded(

    const QNetworkConfiguration& configuration)

{

    const QNetworkConfiguration::StateFlags state =

            config.state();



    // position in cloud based on state

}




                                                      14
Back to Bob

• Efficient Internet connection



• Web feed reader with contact interest
  information…




                                          15
Contacts

• Work with contact data

• Add custom data

• Introspect contact data

• Enumerate contact stores
  – Local and remote




                             16
Contacts




           17
Contacts Example: Show Contacts

// prepare fetch request

QContactManager* manager = new QContactManager();

QContactFetchRequest* fetchRequest = new QContactFetchRequest;

fetchRequest->setManager(manager);



connect(fetchRequest,
  SIGNAL(progress(QContactFetchRequest*,bool)), this,
  SLOT(showContacts(QContactFetchRequest*,bool)));



m_fetchRequest->start()



                                                                 18
Contacts Example: Show Contacts

void Example::showContacts(QContactFetchRequest* request,
    bool appendOnly)

{

     QList<QContact> results = request->contacts();

     // handle append only case



     // access contacts for display

     for (int i = 0; i < results.size(); ++i) {

         QString display = results[i].displayLabel().label();

         // ...



                                                                19
Back to Bob

• Efficient Internet connection

• Access contact details
  – Add “interest” as custom data



• Web feed reader that can send messages to
  contacts about relevant information..



                                              20
Messaging

• Send (Email, SMS, MMS)

• Work with stored/remote messages

• Access message accounts

• New message notifications

• Retrieve




                                     21
Messaging




            22
Messaging Example: Send Message

// get to address

QString to =
  contact.detail<QContactEmailAddress>().emailAddress();



// prepare message

QMessage message;
message.setType(QMessage::Email);
message.setTo(QMessageAddress(to, QMessageAddress::Email));
message.setSubject(“Boating”);
message.setBody(“Here is a link you might like...”);




                                                              23
Messaging Example: Send Message

// send

QMessageServiceAction service;
connect(&service,
   SIGNAL(stateChanged(QMessageServiceAction::State)), this,
   SLOT(stateChanged(QMessageServiceAction::State)));
service.sendMessage(message);



// check send result
void MessageSender::stateChanged(
    QMessageServiceAction::State state)
{
    if (state == QMessageServiceAction::Successful)
        // all good


                                                               24
Back to Bob

• Efficient Internet connection

• Access contact details

• Send messages to contacts



• The “I am going to be late”
  application…



                                  25
Location

• Where am I?
  – Stream location data

• Be notified when within range of a
  location

• Underlying location technology
  agnostic



                                       26
Location




           27
Location Demo




                28
Location Example

// create source

source = new QNmeaPositionInfoSource(

        QNmeaPositionInfoSource::SimulationMode, this);



// open NMEA data file and set as device for source



source->setUpdateInterval(1500);



connect(source, SIGNAL(positionUpdated(QGeoPositionInfo)),

        this, SLOT(positionUpdated(QGeoPositionInfo)));



                                                             29
Location Example

void MapWindow::positionUpdated(const QGeoPositionInfo& info)

{

    if (info.hasProperty(QGeoPositionInfo::Heading))

        // ...



    QString url = /* ... */

            .arg(QString::number(

            info.coordinate().latitude()))

            // ...




                                                                30
Back to Bob

• Efficient use of network

• Accessing contact details

• Sending messages to contacts

• Knows where user is




                                 31
Other APIs for Application Developers

• Multimedia

• System Information

• Calendar (coming next year)

• Sensors (coming next year)

• More to come…




                                        32
System Developer APIs

• Use case is focused more on development of a
  system rather than an application

• Publish and subscribe

• Service framework




                                                 33
Publish and Subscribe

• Unifies various sources of hierarchical data into a
  single consistent model

• Uses QVariant


/Device/Buttons = 3

/Device/Buttons/1/Name = Context

/Device/Buttons/1/Usable = true

/Device/Buttons/2/Name = Select



                                                        34
Service Framework

• Discover and work with
  services

• Central service registry

• XML definition

• Out-of-process support
  coming next year



                             35
Service Framework




                    36
Content Summary

• Bearer Management, Contacts, Messaging,
 Location, Multimedia, System Information,
 Publish and Subscribe, Service Framework

• …




                                             37
Summary

• Rich cross-platform applications

• Qt brilliant developer offering everywhere




                                               38
Questions

• http://labs.qt.nokia.com/page/Projects/QtMobility

• All API feedback appreciated




                                                      39

More Related Content

PDF
QtQuick Day 4
PDF
QtQuick Day 1
PPTX
Qt Qml
PDF
Qt on Real Time Operating Systems
PDF
QtQuick Day 2
PDF
Qt for Python
 
PDF
Basics of Model/View Qt programming
 
PDF
Qt for Beginners Part 3 - QML and Qt Quick
 
QtQuick Day 4
QtQuick Day 1
Qt Qml
Qt on Real Time Operating Systems
QtQuick Day 2
Qt for Python
 
Basics of Model/View Qt programming
 
Qt for Beginners Part 3 - QML and Qt Quick
 

What's hot (20)

PDF
Best Practices in Qt Quick/QML - Part 3
 
PDF
Translating Qt Applications
PDF
Lockless Producer Consumer Threads: Asynchronous Communications Made Easy
 
PPTX
Hello, QML
PDF
Serving QML applications over the network
PDF
Best Practices in Qt Quick/QML - Part III
 
PDF
WT-4064, Build Rich Applications with HTML5 and WebGL, by Tony Parisi
PDF
Qt Application Programming with C++ - Part 1
PDF
Best Practices in Qt Quick/QML - Part 1 of 4
 
PPTX
Developing Driver Terminal for Forage Harvester with QML and Qt
PDF
WT-4069, WebCL: Enabling OpenCL Acceleration of Web Applications, by Mikael ...
PPTX
UI Programming with Qt-Quick and QML
PDF
Best Practices in Qt Quick/QML - Part 2
PPTX
OpenGL 4.5 Update for NVIDIA GPUs
PPTX
Migrating from OpenGL to Vulkan
PDF
Qt Application Programming with C++ - Part 2
PDF
WT-4067, High performance WebGL games with the Turbulenz Engine, by Ian Balla...
PDF
WT-4072, Rendering Web Content at 60fps, by Vangelis Kokkevis, Antoine Labour...
PDF
Build Your Kubernetes Operator with the Right Tool!
PDF
High performance graphics and computation - OpenGL ES and RenderScript
Best Practices in Qt Quick/QML - Part 3
 
Translating Qt Applications
Lockless Producer Consumer Threads: Asynchronous Communications Made Easy
 
Hello, QML
Serving QML applications over the network
Best Practices in Qt Quick/QML - Part III
 
WT-4064, Build Rich Applications with HTML5 and WebGL, by Tony Parisi
Qt Application Programming with C++ - Part 1
Best Practices in Qt Quick/QML - Part 1 of 4
 
Developing Driver Terminal for Forage Harvester with QML and Qt
WT-4069, WebCL: Enabling OpenCL Acceleration of Web Applications, by Mikael ...
UI Programming with Qt-Quick and QML
Best Practices in Qt Quick/QML - Part 2
OpenGL 4.5 Update for NVIDIA GPUs
Migrating from OpenGL to Vulkan
Qt Application Programming with C++ - Part 2
WT-4067, High performance WebGL games with the Turbulenz Engine, by Ian Balla...
WT-4072, Rendering Web Content at 60fps, by Vangelis Kokkevis, Antoine Labour...
Build Your Kubernetes Operator with the Right Tool!
High performance graphics and computation - OpenGL ES and RenderScript
Ad

Viewers also liked (8)

PDF
Qt and the Red Flag Linux Distro
PDF
Copy Your Favourite Nokia App with Qt
PDF
Discover Qt Learning and Certification
PDF
Success Story and Future Challenges of Applying Qt for Embedded Linux
ODP
Amazing KDE (K Desktop Environment)
PDF
Leveraging Open Source- Insight to Foresight
PDF
Kitware: Qt and Scientific Computing
PDF
World of Tanks: один миллион игроков онлайн
Qt and the Red Flag Linux Distro
Copy Your Favourite Nokia App with Qt
Discover Qt Learning and Certification
Success Story and Future Challenges of Applying Qt for Embedded Linux
Amazing KDE (K Desktop Environment)
Leveraging Open Source- Insight to Foresight
Kitware: Qt and Scientific Computing
World of Tanks: один миллион игроков онлайн
Ad

Similar to The Mobility Project (20)

PDF
Dominik Gusenbauer Qt Mobility
PDF
Next Generation Hybrid Applications with Qt - presentation for SEE 2009
PPTX
Social Photos - My presentation at Microsoft Tech Day
PDF
The Developer Experience
PDF
Building a Great Web API - Evan Cooke - QCON 2011
PDF
Building A Great API - Evan Cooke, Cloudstock, December 2010
PDF
Fun with QML and JavaScript: Embedded Linux Conference 11th April 2011, Hotel...
PDF
Hybrid Apps with Qt
PDF
Developing for BlackBerry 10 – Tools and SDKs by Luca Filigheddu
PDF
Be My API How to Implement an API Strategy Everyone will Love
PDF
Cutest technology of them all - Forum Nokia Qt Webinar December 2009
PDF
Nicholas Foo
PDF
Nicholas Foo
PDF
Making Things Work Together
PPTX
A great api is hard to find
PPT
Session18 Madduri
ODP
PPT
Qt Technical Presentation
PDF
The Developer Experience
DOC
City search documentation
Dominik Gusenbauer Qt Mobility
Next Generation Hybrid Applications with Qt - presentation for SEE 2009
Social Photos - My presentation at Microsoft Tech Day
The Developer Experience
Building a Great Web API - Evan Cooke - QCON 2011
Building A Great API - Evan Cooke, Cloudstock, December 2010
Fun with QML and JavaScript: Embedded Linux Conference 11th April 2011, Hotel...
Hybrid Apps with Qt
Developing for BlackBerry 10 – Tools and SDKs by Luca Filigheddu
Be My API How to Implement an API Strategy Everyone will Love
Cutest technology of them all - Forum Nokia Qt Webinar December 2009
Nicholas Foo
Nicholas Foo
Making Things Work Together
A great api is hard to find
Session18 Madduri
Qt Technical Presentation
The Developer Experience
City search documentation

More from account inactive (20)

ODP
PDF
KDE Plasma for Mobile Phones
PDF
Shipping Mobile Applications Using Qt for Symbian
PDF
The Future of Qt Widgets
PDF
Scripting Your Qt Application
PDF
Special Effects with Qt Graphics View
PDF
Developments in The Qt WebKit Integration
PDF
Qt Kwan-Do
PDF
Development with Qt for Windows CE
PDF
Qt Creator Bootcamp
PDF
Qt Widget In-Depth
PDF
Qt State Machine Framework
PDF
Mobile Development with Qt for Symbian
PDF
How to Make Your Qt App Look Native
PPT
Animation Framework: A Step Towards Modern UIs
PDF
Using Multi-Touch and Gestures with Qt
PDF
Debugging Qt, Fixing and Contributing a Bug Report (Using Gitorious)
PDF
The Next Generation Qt Item Views
PDF
Optimizing Performance in Qt-Based Applications
PDF
Qt Licensing Explained
KDE Plasma for Mobile Phones
Shipping Mobile Applications Using Qt for Symbian
The Future of Qt Widgets
Scripting Your Qt Application
Special Effects with Qt Graphics View
Developments in The Qt WebKit Integration
Qt Kwan-Do
Development with Qt for Windows CE
Qt Creator Bootcamp
Qt Widget In-Depth
Qt State Machine Framework
Mobile Development with Qt for Symbian
How to Make Your Qt App Look Native
Animation Framework: A Step Towards Modern UIs
Using Multi-Touch and Gestures with Qt
Debugging Qt, Fixing and Contributing a Bug Report (Using Gitorious)
The Next Generation Qt Item Views
Optimizing Performance in Qt-Based Applications
Qt Licensing Explained

Recently uploaded (20)

PPTX
Benefits of Physical activity for teenagers.pptx
PDF
Flame analysis and combustion estimation using large language and vision assi...
PDF
OpenACC and Open Hackathons Monthly Highlights July 2025
PDF
sustainability-14-14877-v2.pddhzftheheeeee
PDF
ENT215_Completing-a-large-scale-migration-and-modernization-with-AWS.pdf
PDF
CloudStack 4.21: First Look Webinar slides
PPTX
2018-HIPAA-Renewal-Training for executives
DOCX
search engine optimization ppt fir known well about this
PDF
Getting started with AI Agents and Multi-Agent Systems
PPT
What is a Computer? Input Devices /output devices
PDF
NewMind AI Weekly Chronicles – August ’25 Week III
PDF
Produktkatalog für HOBO Datenlogger, Wetterstationen, Sensoren, Software und ...
PPTX
Final SEM Unit 1 for mit wpu at pune .pptx
PDF
Zenith AI: Advanced Artificial Intelligence
PPTX
Configure Apache Mutual Authentication
PDF
STKI Israel Market Study 2025 version august
PDF
A comparative study of natural language inference in Swahili using monolingua...
PPT
Galois Field Theory of Risk: A Perspective, Protocol, and Mathematical Backgr...
PDF
How ambidextrous entrepreneurial leaders react to the artificial intelligence...
PDF
1 - Historical Antecedents, Social Consideration.pdf
Benefits of Physical activity for teenagers.pptx
Flame analysis and combustion estimation using large language and vision assi...
OpenACC and Open Hackathons Monthly Highlights July 2025
sustainability-14-14877-v2.pddhzftheheeeee
ENT215_Completing-a-large-scale-migration-and-modernization-with-AWS.pdf
CloudStack 4.21: First Look Webinar slides
2018-HIPAA-Renewal-Training for executives
search engine optimization ppt fir known well about this
Getting started with AI Agents and Multi-Agent Systems
What is a Computer? Input Devices /output devices
NewMind AI Weekly Chronicles – August ’25 Week III
Produktkatalog für HOBO Datenlogger, Wetterstationen, Sensoren, Software und ...
Final SEM Unit 1 for mit wpu at pune .pptx
Zenith AI: Advanced Artificial Intelligence
Configure Apache Mutual Authentication
STKI Israel Market Study 2025 version august
A comparative study of natural language inference in Swahili using monolingua...
Galois Field Theory of Risk: A Perspective, Protocol, and Mathematical Backgr...
How ambidextrous entrepreneurial leaders react to the artificial intelligence...
1 - Historical Antecedents, Social Consideration.pdf

The Mobility Project

  • 2. Purpose • Fuel your ideas for using the Qt APIs from the Mobility project 1
  • 3. Agenda • Background • Content Overview – Some examples • Questions 2
  • 8. Qt Mobility Details • The Mobility project is creating Qt APIs • APIs will have supported functional back-ends on all platforms where it makes sense • Some APIs on Qt labs now 7
  • 9. The Story of Bob the Developer • Wants to make a mobile application • Wants the application to be cross-platform • A Web feed reader… 8
  • 10. Bearer Management • Enables roaming between connections • Choose most appropriate connection • Manage connections 9
  • 13. Bearer Management Example class BearerCloud : public QGraphicsScene { // ... QNetworkConfigurationManager manager; }; 12
  • 14. Bearer Management Example connect(&manager, SIGNAL(configurationAdded(QNetworkConfiguration)), this, SLOT(configurationAdded(QNetworkConfiguration))); connect(&manager, SIGNAL(configurationUpdated(QNetworkConfiguration)), this, SLOT(configurationUpdated(QNetworkConfiguration))); 13
  • 15. Bearer Management Example void BearerCloud::configurationAdded( const QNetworkConfiguration& configuration) { const QNetworkConfiguration::StateFlags state = config.state(); // position in cloud based on state } 14
  • 16. Back to Bob • Efficient Internet connection • Web feed reader with contact interest information… 15
  • 17. Contacts • Work with contact data • Add custom data • Introspect contact data • Enumerate contact stores – Local and remote 16
  • 18. Contacts 17
  • 19. Contacts Example: Show Contacts // prepare fetch request QContactManager* manager = new QContactManager(); QContactFetchRequest* fetchRequest = new QContactFetchRequest; fetchRequest->setManager(manager); connect(fetchRequest, SIGNAL(progress(QContactFetchRequest*,bool)), this, SLOT(showContacts(QContactFetchRequest*,bool))); m_fetchRequest->start() 18
  • 20. Contacts Example: Show Contacts void Example::showContacts(QContactFetchRequest* request, bool appendOnly) { QList<QContact> results = request->contacts(); // handle append only case // access contacts for display for (int i = 0; i < results.size(); ++i) { QString display = results[i].displayLabel().label(); // ... 19
  • 21. Back to Bob • Efficient Internet connection • Access contact details – Add “interest” as custom data • Web feed reader that can send messages to contacts about relevant information.. 20
  • 22. Messaging • Send (Email, SMS, MMS) • Work with stored/remote messages • Access message accounts • New message notifications • Retrieve 21
  • 23. Messaging 22
  • 24. Messaging Example: Send Message // get to address QString to = contact.detail<QContactEmailAddress>().emailAddress(); // prepare message QMessage message; message.setType(QMessage::Email); message.setTo(QMessageAddress(to, QMessageAddress::Email)); message.setSubject(“Boating”); message.setBody(“Here is a link you might like...”); 23
  • 25. Messaging Example: Send Message // send QMessageServiceAction service; connect(&service, SIGNAL(stateChanged(QMessageServiceAction::State)), this, SLOT(stateChanged(QMessageServiceAction::State))); service.sendMessage(message); // check send result void MessageSender::stateChanged( QMessageServiceAction::State state) { if (state == QMessageServiceAction::Successful) // all good 24
  • 26. Back to Bob • Efficient Internet connection • Access contact details • Send messages to contacts • The “I am going to be late” application… 25
  • 27. Location • Where am I? – Stream location data • Be notified when within range of a location • Underlying location technology agnostic 26
  • 28. Location 27
  • 30. Location Example // create source source = new QNmeaPositionInfoSource( QNmeaPositionInfoSource::SimulationMode, this); // open NMEA data file and set as device for source source->setUpdateInterval(1500); connect(source, SIGNAL(positionUpdated(QGeoPositionInfo)), this, SLOT(positionUpdated(QGeoPositionInfo))); 29
  • 31. Location Example void MapWindow::positionUpdated(const QGeoPositionInfo& info) { if (info.hasProperty(QGeoPositionInfo::Heading)) // ... QString url = /* ... */ .arg(QString::number( info.coordinate().latitude())) // ... 30
  • 32. Back to Bob • Efficient use of network • Accessing contact details • Sending messages to contacts • Knows where user is 31
  • 33. Other APIs for Application Developers • Multimedia • System Information • Calendar (coming next year) • Sensors (coming next year) • More to come… 32
  • 34. System Developer APIs • Use case is focused more on development of a system rather than an application • Publish and subscribe • Service framework 33
  • 35. Publish and Subscribe • Unifies various sources of hierarchical data into a single consistent model • Uses QVariant /Device/Buttons = 3 /Device/Buttons/1/Name = Context /Device/Buttons/1/Usable = true /Device/Buttons/2/Name = Select 34
  • 36. Service Framework • Discover and work with services • Central service registry • XML definition • Out-of-process support coming next year 35
  • 38. Content Summary • Bearer Management, Contacts, Messaging, Location, Multimedia, System Information, Publish and Subscribe, Service Framework • … 37
  • 39. Summary • Rich cross-platform applications • Qt brilliant developer offering everywhere 38