Top Banner
1 Qt Mobile Sviluppo mobile con Python e Qt Framework 7 Maggio 2010 @ PyCon 4 Andrea Grandi
26

Qt mobile PySide bindings

Dec 05, 2014

Download

Technology

PyCon Italia

Andrea Grandi
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Qt mobile PySide bindings

1

Qt MobileSviluppo mobile con Python e Qt Framework

7 Maggio 2010 @ PyCon 4

Andrea Grandi

Page 2: Qt mobile PySide bindings

2

Agenda

• QtMobility

• MeeGo

• QtCreator 2

• PySide

• Generazione dei binding (Boost --> Shiboken)

• Stato del progetto

• Sviluppi futuri

• Come iniziare a sviluppare in Python e Qt per Maemo

• Esempi di codice con PySide

• Conclusioni

Page 3: Qt mobile PySide bindings

3

Qt Mobile

Page 4: Qt mobile PySide bindings

4

QtMobility

• Bearer Management

• Contacts

• Location

• Messaging

• Multimedia

• Publish and Subscribe

• Service Framework

• System Information

• Sensors

• Versit

Page 5: Qt mobile PySide bindings

5

QtMobility: Bearer Management

• Controlla lo stato di connettività del sistema

• Permette alle applicazioni di sapere quando una particolare connessione diventa disponibile e di redirezionare il traffico su di essa

• Restituisce informazioni dettagliate sulle connessioni configurate nel sistema e su quelle disponibili

• Consente alle applicazioni di scegliere la configurazione di rete piu' appropriata a seconda che ci si trovi ad utilizzare una rete pubblica o privata

Page 6: Qt mobile PySide bindings

6

QtMobility: Contacts

• Permette di accedere ai Contatti presenti sul dispositivo

• Supporto per i piu' diffusi formati di memorizzazione dei contatti

• Le applicazioni possono utilizzare questa API per memorizzare un particolare tipo di informazione personalizzata all'interno di un contatto: un'applicazione di instant messaging ad esempio potrebbe utilizzare questa API per memorizzare il nome utente dell'account (Skype, Gtalk, MSN ecc...)

• Supporto per operazioni asincrone quando si accede ai contatti, per facilitare le applicazioni di sincronizzazione remota

Page 7: Qt mobile PySide bindings

7

QtMobility: Location

• Ottenere la posizione geografica corrente (tramite GPS, celle GSM ecc...)

• Trasmissione dell'aggiornamento della posizione

• Possibilità di notifica se ci si trova all'interno di una certa area

• Possibilità di accedere alle informazioni dettagliate sul segnale dei satelliti

Page 8: Qt mobile PySide bindings

8

QtMobility: Messaging

• Lettura ed invio di diversi tipi di messaggi: SMS, MMS, email …

• Possibilità di filtrare i messaggi e recuperarli in base a determinati parametri

• Accesso alle informazioni sugli account configurati nel dispositivo

Page 9: Qt mobile PySide bindings

9

QtMobility: Multimedia

• Riproduzione e registrazione di audio / video

• Supporto per radio FM

• Possibilità di riprodurre un file da una posizione remota (streaming audio / video)

Page 10: Qt mobile PySide bindings

10

QtMobility: Publish / Subscribe

• Sistema gerarchico di rappresentazione dei dati che è possibile condividere fra le varie applicazioni

• Possibilità di ricevere una notifica quando un dato viene modificato da un'altra applicazione

Page 11: Qt mobile PySide bindings

11

QtMobility: Service Framework

• I client possono scoprire quali servizi sono disponibili ed interagire con essi

• Permette di creare applicazioni che separino il client dal servizio stesso che offrono

Page 12: Qt mobile PySide bindings

12

QtMobility: System Information

• Permette di accedere alle informazioni di sistema e di essere notificati se avviene qualche cambiamento (stato della batteria, connettività, ecc...)

• Si possono creare applicazioni che si comportino in maniera differente a seconda dello stato di sistema. Prevedere ad esempio una modalità di risparmio della potenza della CPU nel caso il dispositivo stia funzionando a batteria o sia alimentato a corrente

Page 13: Qt mobile PySide bindings

13

QtMobility: Sensors

• Accesso ai sensori hardware (accelerometro ad esempio)

• Notifica del cambio di orientamento del dispositivo (landscape / portrait)

• Permette di scrivere applicazioni che reagiscano in maniera differente a seconda della posizione in cui si trova il dispositivo

Page 14: Qt mobile PySide bindings

14

QtMobility: Versit

• Permette di leggere e scrivere documenti vCard

• Esporta/importa da e verso QContacts e vCard

Page 15: Qt mobile PySide bindings

15

MeeGo

•Maemo e Moblin si fondono

• Una nuova distribuzione Linux pensata per netbook, palmari e smartphone

• UI basata sulle librerie Qt

• Sistema di pacchetti RPM

• Completamente opensource

• Supporto per Intel/Atom e ARM

• Disponibile dal secondo quarto del 2010

Page 16: Qt mobile PySide bindings

16

MeeGo: architettura

Page 17: Qt mobile PySide bindings

17

QtCreator 2

• IDE per lo sviluppo Qt

• Multi piattaforma (Windows, Linux, OSX)

• Supporta lo sviluppo di applicazioni per palmari, smartphone (Maemo/MeeGo, Symbian)

• Emulatore Maemo e Symbian integrato

• Supporta al momento solo C++ (in futuro anche Python)

• Integrazione con QtQuick (Qt User Interface Creation Kit)

Page 18: Qt mobile PySide bindings

18

QtQuick

Page 19: Qt mobile PySide bindings

19

PySide

• Bindings ufficiali di Nokia per le librerie Qt

• Sviluppato e mantenuto da OpenBossa

• Licenza LGPL

• Pensato per Maemo (MeeGo) ma senza escludere le altre piattaforme (Windows, Linux, OSX).

Page 20: Qt mobile PySide bindings

20

Generazione dei bindings

• Inizialmente generati tramite Boost• Serviva un metodo veloce per iniziare

• I binding generati erano troppo grandi

• Prestazioni inferiori a PyQt

• Passaggio a Shiboken• Possibilità di generare binding per qualsiasi libreria C++

• Dimensione nettamente inferiore dei binding generati

• Maggiore flessibilità di utilizzo

• Gestire sia i binding PySide che il generatore stesso

Page 21: Qt mobile PySide bindings

21

Stato del progetto

• Moduli disponibili• QtCore

• QtGui

• QtNetwork

• QtSvg

• QtWebkit

• QtTest

• Phonon

• QtHelp

• QtScript

• Codice da ottimizzare (prestazioni e dimensioni)

• Completare il passaggio da Boost a Shiboken

Page 22: Qt mobile PySide bindings

22

Sviluppi futuri

• Ulteriore ottimizzazione per i dispositivi con meno risorse di calcolo (palmari, cellulari ecc...)

• Porting per OSX e Windows (ci sono volontari?)

• Integrazione con QtCreator

• Strumenti per iniziare a creare velocemente un binding (probabilmente un plugin per QtCreator)

Page 23: Qt mobile PySide bindings

23

Come iniziare

• Conoscenze di base• Python

• Qt

• Linee guida di Maemo (per la UI)

• Strumenti necessari• PC con Linux (per il momento)

• Maemo SDK

• PySide (non distribuito di default con l'SDK)

Page 24: Qt mobile PySide bindings

24

Domande Frequenti

• PySide supporta QtMobility?

• QtCreator avrà il supporto per Python e PySide?

• PySide è compatibile con PyQt a livello di API?

• QtUiTools è disponibile su PySide? In particolare è possibile disegnare la propria UI tramite QtDesigner ed utilizzarla da PySide?

• Perchè non si è scelto di utilizzare PyQt?

• PySide supporta solo Maemo o anche il nuovo Symbian?

Page 25: Qt mobile PySide bindings

25

Riferimenti

• Web• PySide: http://www.pyside.org

• Maemo: http://www.maemo.org

• MeeGo: http://www.meego.com

• Qt: http://qt.nokia.com

• IRC• #pyside @ FreeNode

• #maemo @ FreeNode

• #meego @ FreeNode

• Andrea Grandi • [email protected]

• http://www.andreagrandi.it

Page 26: Qt mobile PySide bindings

26

Grazie!