SlideShare una empresa de Scribd logo
1 de 62
Descargar para leer sin conexión
Mobile Application
Development
with Qt for Symbian
Visit:

bit.ly/qtsymbian
               ...get Qt for your phone




   Qt for Symbian:  bit.ly/qtsymbian
About Me


Jason Barron




   Started              Began in                   Switched to
  July, 2005            Support                    Development




               Qt for Symbian:  bit.ly/qtsymbian                 3
About Me


Alessandro Portale




  09/02 – 01/07        02/07 – 03/08                     04/08 – today
Color management          Qt tools                     Qt port to Symbian




                   Qt for Symbian:  bit.ly/qtsymbian
Goal


• Why use Qt for Symbian?

• Learn what you need to get started.

• Learn how to make great apps on Symbian.




                 Qt for Symbian:  bit.ly/qtsymbian
Agenda


• Getting Started

• Application Development

• UI Types

• New “Mobile-esque” Features in 4.6

• Advanced integration


                    Qt for Symbian:  bit.ly/qtsymbian
Why use Qt for Symbian?



1. Symbian is a relevant mobile platform.

2. Qt is an easy way to access Symbian.

    3. Many of you already know Qt!




            Qt for Symbian:  bit.ly/qtsymbian
The Symbian Landscape

                                  Today



S60 3.1, 3.2          S60 5.0




                      Symbian^1             S^2        S^3   S^4




                   Qt for Symbian:  bit.ly/qtsymbian
The Developer’s Shopping List


              SDK

              IDE

              Open C plugin (POSIX)

              Qt



       Qt for Symbian:  bit.ly/qtsymbian
Free      Available From          Binaries         Can be used to compile



                                                               Qt           Apps



WINSCW      Yes        Carbide.c++             Win32*          Yes           Yes



GCC-E       Yes          S60 SDK                ARM            No**          Yes
                      (CodeSourcery)



RVCT         No          ARM Ltd.               ARM            Yes           Yes


* Win32 binaries run in the Symbian Emulator

** Technically can compile Qt, but libraries containing WSD will not run

                                 Compilers
                           Qt for Symbian:  bit.ly/qtsymbian
Agenda


• Getting Started

• Application Development

• UI types

• New “Mobile-esque” Features in 4.6

• Advanced integration


                    Qt for Symbian:  bit.ly/qtsymbian
Demo




Qt for Symbian:  bit.ly/qtsymbian
Application Development – From Scratch


•   Carbide's Qt project wizard
•   Editing the Ui Form
•   show(), showMaximized() or
    showFullScreen()?
•   Running the application in the emulator
•   Running the application on the phone




                 Qt for Symbian:  bit.ly/qtsymbian
Demonstration




Qt for Symbian:  bit.ly/qtsymbian
Carbide's Qt project wizard




     Qt for Symbian:  bit.ly/qtsymbian
Carbide's Qt project wizard




     Qt for Symbian:  bit.ly/qtsymbian
Carbide's Qt project wizard




     Qt for Symbian:  bit.ly/qtsymbian
Carbide's Qt project wizard




     Qt for Symbian:  bit.ly/qtsymbian
Carbide's Qt project wizard




     Qt for Symbian:  bit.ly/qtsymbian
Carbide's Qt project wizard




     Qt for Symbian:  bit.ly/qtsymbian
Editing the Ui Form




  Qt for Symbian:  bit.ly/qtsymbian
Editing the Ui Form




  Qt for Symbian:  bit.ly/qtsymbian
Editing the Ui Form




  Qt for Symbian:  bit.ly/qtsymbian
Editing the Ui Form




  Qt for Symbian:  bit.ly/qtsymbian
Editing the Ui Form




  Qt for Symbian:  bit.ly/qtsymbian
Editing the Ui Form




  Qt for Symbian:  bit.ly/qtsymbian
Adjusting the show() call




    Qt for Symbian:  bit.ly/qtsymbian
Adjusting the show() call




    Qt for Symbian:  bit.ly/qtsymbian
Running the application in the emulator




           Qt for Symbian:  bit.ly/qtsymbian
Running the application in the emulator




           Qt for Symbian:  bit.ly/qtsymbian
Running the application in the emulator




           Qt for Symbian:  bit.ly/qtsymbian
Running the application in the emulator




           Qt for Symbian:  bit.ly/qtsymbian
Building and deploying for the device




          Qt for Symbian:  bit.ly/qtsymbian
Command Line


C:qt...analogclock> qmake

C:qt...analogclock> make debug-winscw
C:qt...analogclock> make release-gcce
C:qt...analogclock> make release-armv5

C:qt...analogclock> make sis



                  Qt for Symbian:  bit.ly/qtsymbian
Port an existing application


•   Original application on the Desktop

•   Carbide's Qt .pro file import
•   Running the application in the emulator
•   Desktop Ui vs. Mobile Ui




                 Qt for Symbian:  bit.ly/qtsymbian
Carbide's Qt .pro file import




      Qt for Symbian:  bit.ly/qtsymbian
Carbide's Qt .pro file import




      Qt for Symbian:  bit.ly/qtsymbian
Carbide's Qt .pro file import




      Qt for Symbian:  bit.ly/qtsymbian
Running the application in the emulator




           Qt for Symbian:  bit.ly/qtsymbian
Running the application in the emulator




           Qt for Symbian:  bit.ly/qtsymbian
Desktop Ui vs. Mobile Ui




                                        Successful port?


    Qt for Symbian:  bit.ly/qtsymbian
Desktop Ui vs. Mobile Ui




                                        Mobile friendly Ui


    Qt for Symbian:  bit.ly/qtsymbian
Desktop Ui vs. Mobile Ui




   Including different Ui headers




    Qt for Symbian:  bit.ly/qtsymbian
Desktop Ui vs. Mobile Ui




Instantiating and showing different Uis



      Qt for Symbian:  bit.ly/qtsymbian
Desktop Ui vs. Mobile Ui




 AppController knows the view as QObject
 that emits colorChanged()

      Qt for Symbian:  bit.ly/qtsymbian
Desktop Ui vs. Mobile Ui




 Both Uis emit a colorChanged() signal



      Qt for Symbian:  bit.ly/qtsymbian
Agenda


• Getting Started

• Application Development

• UI Types

• New “Mobile-esque” Features in 4.6

• Advanced integration


                    Qt for Symbian:  bit.ly/qtsymbian
UI Types




Qt for Symbian:  bit.ly/qtsymbian
Agenda

• Getting Started

• Application Development

• UI Types

• New “Mobile-esque” Features in 4.6

• Advanced integration


                    Qt for Symbian:  bit.ly/qtsymbian
qmake Keywords


• MMP_RULES                           • DEPLOYMENT
• BLD_INF_RULES                       • ICON

• TARGET                              • QMAKE_CXXFLAGS
  – .UID3                                    – .ARMCC
  – .EPOCHEAPSIZE                            – .WINSCW
  – .CAPABILITY




                    Qt for Symbian:  bit.ly/qtsymbian
Input Method Hints




… QWidget::inputMethodHints() const;

void QWidget::setInputMethodHints(…);



                 Qt for Symbian:  bit.ly/qtsymbian
Input Method Hints


• Change Behavior:                  • Restrict Input:
  –   Qt::ImhHiddenText                   –   Qt::ImhDigitsOnly
  –   Qt::ImhNoAutoUppercase              –   Qt::ImhFormattedNumbersOnly
  –   Qt::ImhPreferNumbers                –   Qt::ImhUppercaseOnly
  –   Qt::ImhPreferUppercase              –   Qt::ImhLowercaseOnly
  –   Qt::ImhPreferLowercase              –   Qt::ImhDialableCharactersOnly
  –   Qt::ImhNoPredictiveText             –   Qt::ImhEmailCharactersOnly


                                    • Masks:
                                          – Qt::ImhExclusiveInputMask




                      Qt for Symbian:  bit.ly/qtsymbian
Soft keys

QAction::setSoftKeyRole(…);
…QAction::softKeyRole() const;


enum SoftKeyRole {
QAction::NoSoftKey, //(default)
QAction::PositiveSoftKey,
QAction::NegativeSoftKey,
QAction::SelectSoftKey,
}



                      Qt for Symbian:  bit.ly/qtsymbian
Navigation Modes

void QApplication::setNavigationMode(...);
... QApplication::navigationMode();

enum NavigationMode {
    NavigationModeNone,
    NavigationModeKeypadTabOrder,
    NavigationModeKeypadDirectional,
    NavigationModeCursorAuto,
    NavigationModeCursorForceVisible
 };




                      Qt for Symbian:  bit.ly/qtsymbian
Exceptions

    What happens if ‘new’ on line 4 throws std::bad_alloc?

MyWidget::MyWidget(QWidget *parent) : QDialog(parent),
    label(new QLabel("Name?", this)),
    edit(new QLineEdit(this)),
    button(new QPushButton("Ok"))
{
     setLayout(new QVBoxLayout);
     layout()->addWidget(label);
     layout()->addWidget(edit);
     layout()->addWidget(button);
}




                       Qt for Symbian:  bit.ly/qtsymbian
QScopedPointer

  Deletes it’s object when the scope terminates.
class MyWidget: public QDialog
{
    Q_OBJECT

public:
    MyWidget(QWidget *parent = 0);
private:
#ifdef USE_SCOPED_POINTER
    QScopedPointer<QLabel> label;
    QScopedPointer<QLineEdit> edit;
    QScopedPointer<QPushButton> button;
#else
    QLabel *label;
    QLineEdit *edit;
    QPushButton *button;
#endif
};



                        Qt for Symbian:  bit.ly/qtsymbian
Agenda


• Getting Started

• Application Development

• UI Types

• New “Mobile-esque” Features in 4.6

• Advanced integration


                    Qt for Symbian:  bit.ly/qtsymbian
Event Dispatcher – Active Scheduler


• Active objects can be used as normal


                 ActiveScheduler



                            Qt




                 Qt for Symbian:  bit.ly/qtsymbian
Handling Symbian Leaves


• QT_TRAP_THROWING
  – Converts leaves to exceptions
• QT_TRYCATCH_ERROR
  – Converts exceptions to errors
• QT_TRYCATCH_LEAVING
  – Converts exceptions to leaves




                   Qt for Symbian:  bit.ly/qtsymbian
RWindow, CCoeControl and QWidget


• QWidget::winId() – Returns a CCoeControl

• Always window owning:

CCoeControl *c = widget->effectiveWinId();
RWindow *rw =
  static_cast<RWindow*>(c->DrawableWindow());




                  Qt for Symbian:  bit.ly/qtsymbian
Thank You!
    Questions?




Qt for Symbian:  bit.ly/qtsymbian
Reference



• Download an SDK from:
   – Forum Nokia (http://forum.nokia.com)

   – Samsung Mobile Innovator (http://innovator.samsungmobile.com)

   – Symbian Foundation (http://developer.symbian.com)




                        Qt for Symbian:  bit.ly/qtsymbian            62

Más contenido relacionado

Destacado

My Valentine Gift - YOU Decide
My Valentine Gift - YOU DecideMy Valentine Gift - YOU Decide
My Valentine Gift - YOU Decide
SizzlynRose
 
Sample of instructions
Sample of instructionsSample of instructions
Sample of instructions
David Sommer
 
My trans kit checklist gw1 ds1_gw3
My trans kit checklist gw1 ds1_gw3My trans kit checklist gw1 ds1_gw3
My trans kit checklist gw1 ds1_gw3
David Sommer
 
Sample email submission
Sample email submissionSample email submission
Sample email submission
David Sommer
 
2008 Fourth Quarter Real Estate Commentary
2008 Fourth Quarter Real Estate Commentary2008 Fourth Quarter Real Estate Commentary
2008 Fourth Quarter Real Estate Commentary
alghanim
 
Stc 2014 unraveling the mysteries of localization kits
Stc 2014 unraveling the mysteries of localization kitsStc 2014 unraveling the mysteries of localization kits
Stc 2014 unraveling the mysteries of localization kits
David Sommer
 

Destacado (19)

Designing for Multiple Mobile Platforms
Designing for Multiple Mobile PlatformsDesigning for Multiple Mobile Platforms
Designing for Multiple Mobile Platforms
 
My Valentine Gift - YOU Decide
My Valentine Gift - YOU DecideMy Valentine Gift - YOU Decide
My Valentine Gift - YOU Decide
 
Sample of instructions
Sample of instructionsSample of instructions
Sample of instructions
 
Putting Out Fires with Content Strategy (STC Academic SIG)
Putting Out Fires with Content Strategy (STC Academic SIG)Putting Out Fires with Content Strategy (STC Academic SIG)
Putting Out Fires with Content Strategy (STC Academic SIG)
 
Shrunken Head
 Shrunken Head  Shrunken Head
Shrunken Head
 
Open Software Platforms for Mobile Digital Broadcasting
Open Software Platforms for Mobile Digital BroadcastingOpen Software Platforms for Mobile Digital Broadcasting
Open Software Platforms for Mobile Digital Broadcasting
 
Glossary
GlossaryGlossary
Glossary
 
My trans kit checklist gw1 ds1_gw3
My trans kit checklist gw1 ds1_gw3My trans kit checklist gw1 ds1_gw3
My trans kit checklist gw1 ds1_gw3
 
The ruby on rails i18n core api-Neeraj Kumar
The ruby on rails i18n core api-Neeraj KumarThe ruby on rails i18n core api-Neeraj Kumar
The ruby on rails i18n core api-Neeraj Kumar
 
Silmeyiniz
SilmeyinizSilmeyiniz
Silmeyiniz
 
Sample email submission
Sample email submissionSample email submission
Sample email submission
 
2008 Fourth Quarter Real Estate Commentary
2008 Fourth Quarter Real Estate Commentary2008 Fourth Quarter Real Estate Commentary
2008 Fourth Quarter Real Estate Commentary
 
Putting Out Fires with Content Strategy (InfoDevDC meetup)
Putting Out Fires with Content Strategy (InfoDevDC meetup)Putting Out Fires with Content Strategy (InfoDevDC meetup)
Putting Out Fires with Content Strategy (InfoDevDC meetup)
 
Stc 2014 unraveling the mysteries of localization kits
Stc 2014 unraveling the mysteries of localization kitsStc 2014 unraveling the mysteries of localization kits
Stc 2014 unraveling the mysteries of localization kits
 
Linguistic Potluck: Crowdsourcing localization with Rails
Linguistic Potluck: Crowdsourcing localization with RailsLinguistic Potluck: Crowdsourcing localization with Rails
Linguistic Potluck: Crowdsourcing localization with Rails
 
Strategies for Friendly English and Successful Localization (InfoDevWorld 2014)
Strategies for Friendly English and Successful Localization (InfoDevWorld 2014)Strategies for Friendly English and Successful Localization (InfoDevWorld 2014)
Strategies for Friendly English and Successful Localization (InfoDevWorld 2014)
 
Pycon 2012 Apache Cassandra
Pycon 2012 Apache CassandraPycon 2012 Apache Cassandra
Pycon 2012 Apache Cassandra
 
Building a Localization Kit
Building a Localization KitBuilding a Localization Kit
Building a Localization Kit
 
Tricks & challenges developing a large Django application
Tricks & challenges developing a large Django applicationTricks & challenges developing a large Django application
Tricks & challenges developing a large Django application
 

Similar a Mobile Development with Qt for Symbian

Necessitas - Qt on Android - from FSCONS 2011
Necessitas - Qt on Android - from FSCONS 2011Necessitas - Qt on Android - from FSCONS 2011
Necessitas - Qt on Android - from FSCONS 2011
Johan Thelin
 

Similar a Mobile Development with Qt for Symbian (20)

Qt in depth - presentation for Symbian expo 2009
Qt in depth - presentation for Symbian expo 2009Qt in depth - presentation for Symbian expo 2009
Qt in depth - presentation for Symbian expo 2009
 
Cutest technology of them all - Forum Nokia Qt Webinar December 2009
Cutest technology of them all - Forum Nokia Qt Webinar December 2009Cutest technology of them all - Forum Nokia Qt Webinar December 2009
Cutest technology of them all - Forum Nokia Qt Webinar December 2009
 
Qt on symbian_3_v4
Qt on symbian_3_v4Qt on symbian_3_v4
Qt on symbian_3_v4
 
Shipping Mobile Applications Using Qt for Symbian
Shipping Mobile Applications Using Qt for SymbianShipping Mobile Applications Using Qt for Symbian
Shipping Mobile Applications Using Qt for Symbian
 
Nokia Qt SDK in action - Qt developer days 2010
Nokia Qt SDK in action - Qt developer days 2010Nokia Qt SDK in action - Qt developer days 2010
Nokia Qt SDK in action - Qt developer days 2010
 
Architecting Qt Mobile Applications: Frameworks, Code Generators and Beyond
Architecting Qt Mobile Applications: Frameworks, Code Generators and BeyondArchitecting Qt Mobile Applications: Frameworks, Code Generators and Beyond
Architecting Qt Mobile Applications: Frameworks, Code Generators and Beyond
 
Symbian OS
Symbian OSSymbian OS
Symbian OS
 
Building Event-Driven Workflows with Knative and Tekton
Building Event-Driven Workflows with Knative and TektonBuilding Event-Driven Workflows with Knative and Tekton
Building Event-Driven Workflows with Knative and Tekton
 
Qt quick (qml)
Qt quick (qml)Qt quick (qml)
Qt quick (qml)
 
Developments in the Qt WebKit Integration
Developments in the Qt WebKit IntegrationDevelopments in the Qt WebKit Integration
Developments in the Qt WebKit Integration
 
Vancouver mulesoft meetup_september_2020
Vancouver mulesoft meetup_september_2020Vancouver mulesoft meetup_september_2020
Vancouver mulesoft meetup_september_2020
 
Targeting Android with Qt
Targeting Android with QtTargeting Android with Qt
Targeting Android with Qt
 
用 IBDesignable 作 UI
用 IBDesignable 作 UI用 IBDesignable 作 UI
用 IBDesignable 作 UI
 
Qt for Python
Qt for PythonQt for Python
Qt for Python
 
Developing for Industrial IoT with Linux OS on DragonBoard™ 410c: Session 3
Developing for Industrial IoT with Linux OS on DragonBoard™ 410c: Session 3Developing for Industrial IoT with Linux OS on DragonBoard™ 410c: Session 3
Developing for Industrial IoT with Linux OS on DragonBoard™ 410c: Session 3
 
Advanced Visualization with OpenGL in Oil & Gas
Advanced Visualization with OpenGL in Oil & GasAdvanced Visualization with OpenGL in Oil & Gas
Advanced Visualization with OpenGL in Oil & Gas
 
Qt Automotive Suite - under the hood // Qt World Summit 2017
Qt Automotive Suite - under the hood // Qt World Summit 2017Qt Automotive Suite - under the hood // Qt World Summit 2017
Qt Automotive Suite - under the hood // Qt World Summit 2017
 
What's Rio
What's RioWhat's Rio
What's Rio
 
Necessitas - Qt on Android - from FSCONS 2011
Necessitas - Qt on Android - from FSCONS 2011Necessitas - Qt on Android - from FSCONS 2011
Necessitas - Qt on Android - from FSCONS 2011
 
Next Generation Hybrid Applications with Qt - presentation for SEE 2009
Next Generation Hybrid Applications with Qt - presentation for SEE 2009Next Generation Hybrid Applications with Qt - presentation for SEE 2009
Next Generation Hybrid Applications with Qt - presentation for SEE 2009
 

Más de account inactive

Más de account inactive (20)

Meet Qt
Meet QtMeet Qt
Meet Qt
 
KDE Plasma for Mobile Phones
KDE Plasma for Mobile PhonesKDE Plasma for Mobile Phones
KDE Plasma for Mobile Phones
 
The Future of Qt Widgets
The Future of Qt WidgetsThe Future of Qt Widgets
The Future of Qt Widgets
 
Scripting Your Qt Application
Scripting Your Qt ApplicationScripting Your Qt Application
Scripting Your Qt Application
 
Special Effects with Qt Graphics View
Special Effects with Qt Graphics ViewSpecial Effects with Qt Graphics View
Special Effects with Qt Graphics View
 
Developments in The Qt WebKit Integration
Developments in The Qt WebKit IntegrationDevelopments in The Qt WebKit Integration
Developments in The Qt WebKit Integration
 
Qt Kwan-Do
Qt Kwan-DoQt Kwan-Do
Qt Kwan-Do
 
Qt on Real Time Operating Systems
Qt on Real Time Operating SystemsQt on Real Time Operating Systems
Qt on Real Time Operating Systems
 
Development with Qt for Windows CE
Development with Qt for Windows CEDevelopment with Qt for Windows CE
Development with Qt for Windows CE
 
Translating Qt Applications
Translating Qt ApplicationsTranslating Qt Applications
Translating Qt Applications
 
Qt Creator Bootcamp
Qt Creator BootcampQt Creator Bootcamp
Qt Creator Bootcamp
 
Qt Widget In-Depth
Qt Widget In-DepthQt Widget In-Depth
Qt Widget In-Depth
 
Qt State Machine Framework
Qt State Machine FrameworkQt State Machine Framework
Qt State Machine Framework
 
How to Make Your Qt App Look Native
How to Make Your Qt App Look NativeHow to Make Your Qt App Look Native
How to Make Your Qt App Look Native
 
Animation Framework: A Step Towards Modern UIs
Animation Framework: A Step Towards Modern UIsAnimation Framework: A Step Towards Modern UIs
Animation Framework: A Step Towards Modern UIs
 
Using Multi-Touch and Gestures with Qt
Using Multi-Touch and Gestures with QtUsing Multi-Touch and Gestures with Qt
Using Multi-Touch and Gestures with Qt
 
Debugging Qt, Fixing and Contributing a Bug Report (Using Gitorious)
Debugging Qt, Fixing and Contributing a Bug Report (Using Gitorious)Debugging Qt, Fixing and Contributing a Bug Report (Using Gitorious)
Debugging Qt, Fixing and Contributing a Bug Report (Using Gitorious)
 
The Mobility Project
The Mobility ProjectThe Mobility Project
The Mobility Project
 
Copy Your Favourite Nokia App with Qt
Copy Your Favourite Nokia App with QtCopy Your Favourite Nokia App with Qt
Copy Your Favourite Nokia App with Qt
 
The Next Generation Qt Item Views
The Next Generation Qt Item ViewsThe Next Generation Qt Item Views
The Next Generation Qt Item Views
 

Último

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 

Último (20)

Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 

Mobile Development with Qt for Symbian

  • 2. Visit: bit.ly/qtsymbian ...get Qt for your phone Qt for Symbian:  bit.ly/qtsymbian
  • 3. About Me Jason Barron Started Began in Switched to July, 2005 Support Development Qt for Symbian:  bit.ly/qtsymbian 3
  • 4. About Me Alessandro Portale 09/02 – 01/07 02/07 – 03/08 04/08 – today Color management Qt tools Qt port to Symbian Qt for Symbian:  bit.ly/qtsymbian
  • 5. Goal • Why use Qt for Symbian? • Learn what you need to get started. • Learn how to make great apps on Symbian. Qt for Symbian:  bit.ly/qtsymbian
  • 6. Agenda • Getting Started • Application Development • UI Types • New “Mobile-esque” Features in 4.6 • Advanced integration Qt for Symbian:  bit.ly/qtsymbian
  • 7. Why use Qt for Symbian? 1. Symbian is a relevant mobile platform. 2. Qt is an easy way to access Symbian. 3. Many of you already know Qt! Qt for Symbian:  bit.ly/qtsymbian
  • 8. The Symbian Landscape Today S60 3.1, 3.2 S60 5.0 Symbian^1 S^2 S^3 S^4 Qt for Symbian:  bit.ly/qtsymbian
  • 9. The Developer’s Shopping List SDK IDE Open C plugin (POSIX) Qt Qt for Symbian:  bit.ly/qtsymbian
  • 10. Free Available From Binaries Can be used to compile Qt Apps WINSCW Yes Carbide.c++ Win32* Yes Yes GCC-E Yes S60 SDK ARM No** Yes (CodeSourcery) RVCT No ARM Ltd. ARM Yes Yes * Win32 binaries run in the Symbian Emulator ** Technically can compile Qt, but libraries containing WSD will not run Compilers Qt for Symbian:  bit.ly/qtsymbian
  • 11. Agenda • Getting Started • Application Development • UI types • New “Mobile-esque” Features in 4.6 • Advanced integration Qt for Symbian:  bit.ly/qtsymbian
  • 13. Application Development – From Scratch • Carbide's Qt project wizard • Editing the Ui Form • show(), showMaximized() or showFullScreen()? • Running the application in the emulator • Running the application on the phone Qt for Symbian:  bit.ly/qtsymbian
  • 15. Carbide's Qt project wizard Qt for Symbian:  bit.ly/qtsymbian
  • 16. Carbide's Qt project wizard Qt for Symbian:  bit.ly/qtsymbian
  • 17. Carbide's Qt project wizard Qt for Symbian:  bit.ly/qtsymbian
  • 18. Carbide's Qt project wizard Qt for Symbian:  bit.ly/qtsymbian
  • 19. Carbide's Qt project wizard Qt for Symbian:  bit.ly/qtsymbian
  • 20. Carbide's Qt project wizard Qt for Symbian:  bit.ly/qtsymbian
  • 21. Editing the Ui Form Qt for Symbian:  bit.ly/qtsymbian
  • 22. Editing the Ui Form Qt for Symbian:  bit.ly/qtsymbian
  • 23. Editing the Ui Form Qt for Symbian:  bit.ly/qtsymbian
  • 24. Editing the Ui Form Qt for Symbian:  bit.ly/qtsymbian
  • 25. Editing the Ui Form Qt for Symbian:  bit.ly/qtsymbian
  • 26. Editing the Ui Form Qt for Symbian:  bit.ly/qtsymbian
  • 27. Adjusting the show() call Qt for Symbian:  bit.ly/qtsymbian
  • 28. Adjusting the show() call Qt for Symbian:  bit.ly/qtsymbian
  • 29. Running the application in the emulator Qt for Symbian:  bit.ly/qtsymbian
  • 30. Running the application in the emulator Qt for Symbian:  bit.ly/qtsymbian
  • 31. Running the application in the emulator Qt for Symbian:  bit.ly/qtsymbian
  • 32. Running the application in the emulator Qt for Symbian:  bit.ly/qtsymbian
  • 33. Building and deploying for the device Qt for Symbian:  bit.ly/qtsymbian
  • 34. Command Line C:qt...analogclock> qmake C:qt...analogclock> make debug-winscw C:qt...analogclock> make release-gcce C:qt...analogclock> make release-armv5 C:qt...analogclock> make sis Qt for Symbian:  bit.ly/qtsymbian
  • 35. Port an existing application • Original application on the Desktop • Carbide's Qt .pro file import • Running the application in the emulator • Desktop Ui vs. Mobile Ui Qt for Symbian:  bit.ly/qtsymbian
  • 36. Carbide's Qt .pro file import Qt for Symbian:  bit.ly/qtsymbian
  • 37. Carbide's Qt .pro file import Qt for Symbian:  bit.ly/qtsymbian
  • 38. Carbide's Qt .pro file import Qt for Symbian:  bit.ly/qtsymbian
  • 39. Running the application in the emulator Qt for Symbian:  bit.ly/qtsymbian
  • 40. Running the application in the emulator Qt for Symbian:  bit.ly/qtsymbian
  • 41. Desktop Ui vs. Mobile Ui Successful port? Qt for Symbian:  bit.ly/qtsymbian
  • 42. Desktop Ui vs. Mobile Ui Mobile friendly Ui Qt for Symbian:  bit.ly/qtsymbian
  • 43. Desktop Ui vs. Mobile Ui Including different Ui headers Qt for Symbian:  bit.ly/qtsymbian
  • 44. Desktop Ui vs. Mobile Ui Instantiating and showing different Uis Qt for Symbian:  bit.ly/qtsymbian
  • 45. Desktop Ui vs. Mobile Ui AppController knows the view as QObject that emits colorChanged() Qt for Symbian:  bit.ly/qtsymbian
  • 46. Desktop Ui vs. Mobile Ui Both Uis emit a colorChanged() signal Qt for Symbian:  bit.ly/qtsymbian
  • 47. Agenda • Getting Started • Application Development • UI Types • New “Mobile-esque” Features in 4.6 • Advanced integration Qt for Symbian:  bit.ly/qtsymbian
  • 49. Agenda • Getting Started • Application Development • UI Types • New “Mobile-esque” Features in 4.6 • Advanced integration Qt for Symbian:  bit.ly/qtsymbian
  • 50. qmake Keywords • MMP_RULES • DEPLOYMENT • BLD_INF_RULES • ICON • TARGET • QMAKE_CXXFLAGS – .UID3 – .ARMCC – .EPOCHEAPSIZE – .WINSCW – .CAPABILITY Qt for Symbian:  bit.ly/qtsymbian
  • 51. Input Method Hints … QWidget::inputMethodHints() const; void QWidget::setInputMethodHints(…); Qt for Symbian:  bit.ly/qtsymbian
  • 52. Input Method Hints • Change Behavior: • Restrict Input: – Qt::ImhHiddenText – Qt::ImhDigitsOnly – Qt::ImhNoAutoUppercase – Qt::ImhFormattedNumbersOnly – Qt::ImhPreferNumbers – Qt::ImhUppercaseOnly – Qt::ImhPreferUppercase – Qt::ImhLowercaseOnly – Qt::ImhPreferLowercase – Qt::ImhDialableCharactersOnly – Qt::ImhNoPredictiveText – Qt::ImhEmailCharactersOnly • Masks: – Qt::ImhExclusiveInputMask Qt for Symbian:  bit.ly/qtsymbian
  • 53. Soft keys QAction::setSoftKeyRole(…); …QAction::softKeyRole() const; enum SoftKeyRole { QAction::NoSoftKey, //(default) QAction::PositiveSoftKey, QAction::NegativeSoftKey, QAction::SelectSoftKey, } Qt for Symbian:  bit.ly/qtsymbian
  • 54. Navigation Modes void QApplication::setNavigationMode(...); ... QApplication::navigationMode(); enum NavigationMode { NavigationModeNone, NavigationModeKeypadTabOrder, NavigationModeKeypadDirectional, NavigationModeCursorAuto, NavigationModeCursorForceVisible }; Qt for Symbian:  bit.ly/qtsymbian
  • 55. Exceptions What happens if ‘new’ on line 4 throws std::bad_alloc? MyWidget::MyWidget(QWidget *parent) : QDialog(parent), label(new QLabel("Name?", this)), edit(new QLineEdit(this)), button(new QPushButton("Ok")) { setLayout(new QVBoxLayout); layout()->addWidget(label); layout()->addWidget(edit); layout()->addWidget(button); } Qt for Symbian:  bit.ly/qtsymbian
  • 56. QScopedPointer Deletes it’s object when the scope terminates. class MyWidget: public QDialog { Q_OBJECT public: MyWidget(QWidget *parent = 0); private: #ifdef USE_SCOPED_POINTER QScopedPointer<QLabel> label; QScopedPointer<QLineEdit> edit; QScopedPointer<QPushButton> button; #else QLabel *label; QLineEdit *edit; QPushButton *button; #endif }; Qt for Symbian:  bit.ly/qtsymbian
  • 57. Agenda • Getting Started • Application Development • UI Types • New “Mobile-esque” Features in 4.6 • Advanced integration Qt for Symbian:  bit.ly/qtsymbian
  • 58. Event Dispatcher – Active Scheduler • Active objects can be used as normal ActiveScheduler Qt Qt for Symbian:  bit.ly/qtsymbian
  • 59. Handling Symbian Leaves • QT_TRAP_THROWING – Converts leaves to exceptions • QT_TRYCATCH_ERROR – Converts exceptions to errors • QT_TRYCATCH_LEAVING – Converts exceptions to leaves Qt for Symbian:  bit.ly/qtsymbian
  • 60. RWindow, CCoeControl and QWidget • QWidget::winId() – Returns a CCoeControl • Always window owning: CCoeControl *c = widget->effectiveWinId(); RWindow *rw = static_cast<RWindow*>(c->DrawableWindow()); Qt for Symbian:  bit.ly/qtsymbian
  • 61. Thank You! Questions? Qt for Symbian:  bit.ly/qtsymbian
  • 62. Reference • Download an SDK from: – Forum Nokia (http://forum.nokia.com) – Samsung Mobile Innovator (http://innovator.samsungmobile.com) – Symbian Foundation (http://developer.symbian.com) Qt for Symbian:  bit.ly/qtsymbian 62