QtEmbedded
-
Upload
adenilson-cavalcanti -
Category
Documents
-
view
618 -
download
0
description
Transcript of QtEmbedded
![Page 1: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/1.jpg)
Qt tales from the embeddedtrenchesCabledogs (savago, igolivei)2011
![Page 2: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/2.jpg)
About us
Adenilson Cavalcanti (Savago): KDE-pim, KDE-Plasma, IMTK, libgcal,amora
Igor Trindade Oliveira (igolive): KDE-pim, KDE-plasma, Gallium
![Page 3: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/3.jpg)
Structure
A problem is given
A solution is proposed
Discussion
![Page 4: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/4.jpg)
Topics
1 Kinectic scrolling pain
2 Meego UI without libmeegotouch?
3 Sliding Widgets
4 JSON parsing
5 D-BUS
6 Responsiveness
7 Symbian on Linux
![Page 5: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/5.jpg)
Kinetic Scrolling
![Page 6: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/6.jpg)
Kinetic example: iPhone 2007
![Page 7: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/7.jpg)
Prior art?Bill Buxton: Two-handed input in HCI, 1982Canola 2007
etc
![Page 8: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/8.jpg)
Prior art?Bill Buxton: Two-handed input in HCI, 1982Canola 2007
etc
![Page 9: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/9.jpg)
Prior art?Bill Buxton: Two-handed input in HCI, 1982Canola 2007
etc
![Page 10: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/10.jpg)
Prior art?Bill Buxton: Two-handed input in HCI, 1982Canola 2007
etc
![Page 11: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/11.jpg)
A personal favorite: Canola 2007
![Page 12: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/12.jpg)
What about Qt? flickable 2008
![Page 13: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/13.jpg)
How scrolling works?
![Page 14: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/14.jpg)
How kinetic scrolling works?
Displacement is defined in factor of:
attenuation given by Easing curve
time elapsed between the drag event
other factors (e.g. friction, etc)
optimizations: clipping, lazy loading, ring buffer, snapshots, etc
![Page 15: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/15.jpg)
Demo timeC++: toyflick
QML
Looking at the pros
![Page 16: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/16.jpg)
Currently known Qt-basedimplementations
Ariya’s Flickable 2008
toyflick 2009
Plasma ScrollWidget 2009
IMTK ImtkKinecticListView 2010
QML Flickable 2010
![Page 17: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/17.jpg)
Meego UI withoutlibmeegotouch?
![Page 18: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/18.jpg)
Meego app
Ok, somewhat old example...
![Page 19: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/19.jpg)
Can it run on Symbian?Short answer: NOT!Long answer: it could be ported...
You have 1 day!
Solution: cheat!
![Page 20: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/20.jpg)
Can it run on Symbian?Short answer: NOT!Long answer: it could be ported...
You have 1 day!
Solution: cheat!
![Page 21: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/21.jpg)
Can it run on Symbian?Short answer: NOT!Long answer: it could be ported...
You have 1 day!
Solution: cheat!
![Page 22: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/22.jpg)
Can it run on Symbian?Short answer: NOT!Long answer: it could be ported...
You have 1 day!
Solution: cheat!
![Page 23: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/23.jpg)
Can it run on Symbian?Short answer: NOT!Long answer: it could be ported...
You have 1 day!
Solution: cheat!
![Page 24: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/24.jpg)
UI elements
![Page 25: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/25.jpg)
UI elements
![Page 26: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/26.jpg)
UI elements
![Page 27: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/27.jpg)
UI elements
![Page 28: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/28.jpg)
UI elements
![Page 29: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/29.jpg)
Final result
![Page 30: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/30.jpg)
Pure blood Qt runs everywhere!
![Page 31: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/31.jpg)
’Minor’ details: 7 months ago
Forgot the Buttons...
Rescalable button backgrounds
Borders on background
Centered Icons
Layouts/sizeHints sometimes are tricky
![Page 32: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/32.jpg)
’Minor’ details: 7 months ago
Forgot the Buttons...
Rescalable button backgrounds
Borders on background
Centered Icons
Layouts/sizeHints sometimes are tricky
![Page 33: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/33.jpg)
’Minor’ details: 7 months ago
Forgot the Buttons...
Rescalable button backgrounds
Borders on background
Centered Icons
Layouts/sizeHints sometimes are tricky
![Page 34: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/34.jpg)
’Minor’ details: 7 months ago
Forgot the Buttons...
Rescalable button backgrounds
Borders on background
Centered Icons
Layouts/sizeHints sometimes are tricky
![Page 35: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/35.jpg)
’Minor’ details: 7 months ago
Forgot the Buttons...
Rescalable button backgrounds
Borders on background
Centered Icons
Layouts/sizeHints sometimes are tricky
![Page 36: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/36.jpg)
’Minor’ details: today
Rescalable button backgrounds: QML BorderImage
Borders: QML BorderImage
Centered Icons: maybe Qt components
Layouts/sizeHints: QML anchors
![Page 37: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/37.jpg)
’Minor’ details: today
Rescalable button backgrounds: QML BorderImage
Borders: QML BorderImage
Centered Icons: maybe Qt components
Layouts/sizeHints: QML anchors
![Page 38: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/38.jpg)
’Minor’ details: today
Rescalable button backgrounds: QML BorderImage
Borders: QML BorderImage
Centered Icons: maybe Qt components
Layouts/sizeHints: QML anchors
![Page 39: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/39.jpg)
’Minor’ details: today
Rescalable button backgrounds: QML BorderImage
Borders: QML BorderImage
Centered Icons: maybe Qt components
Layouts/sizeHints: QML anchors
![Page 40: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/40.jpg)
Demo timeC++: frame
Animated layout items
![Page 41: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/41.jpg)
Sliding widgets
![Page 42: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/42.jpg)
Example: iPhone contact list
![Page 43: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/43.jpg)
How to do it?
![Page 44: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/44.jpg)
step1: have a specialized layout
![Page 45: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/45.jpg)
step2: put widget side by side
![Page 46: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/46.jpg)
step3: make both visible...
![Page 47: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/47.jpg)
step4: animate!
![Page 48: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/48.jpg)
step5: hide the old widget
![Page 49: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/49.jpg)
Demo timeC++: slider
![Page 50: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/50.jpg)
’Minor’ details: 7 months ago
QGraphicsLayout is not a QObjectMultiple heritance is nasty!
Parenting issues of widgets
No documentation, of course...
![Page 51: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/51.jpg)
’Minor’ details: 7 months ago
QGraphicsLayout is not a QObjectMultiple heritance is nasty!
Parenting issues of widgets
No documentation, of course...
![Page 52: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/52.jpg)
’Minor’ details: 7 months ago
QGraphicsLayout is not a QObjectMultiple heritance is nasty!
Parenting issues of widgets
No documentation, of course...
![Page 53: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/53.jpg)
’Minor’ details: 7 months ago
QGraphicsLayout is not a QObjectMultiple heritance is nasty!
Parenting issues of widgets
No documentation, of course...
![Page 54: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/54.jpg)
’Minor’ details: today
Qt Components has PageStack
![Page 55: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/55.jpg)
JSON parsing
![Page 56: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/56.jpg)
Qt doesn’t parse JSON?
![Page 57: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/57.jpg)
Qt doesn’t parse JSON?
SAY WHAAAT!!?
![Page 58: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/58.jpg)
Solution: QJSON
Really easy to use
Tested on embedded platforms
License is LGPL
Use it. Really.
![Page 59: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/59.jpg)
Solution: QJSON
Really easy to use
Tested on embedded platforms
License is LGPL
Use it. Really.
![Page 60: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/60.jpg)
Solution: QJSON
Really easy to use
Tested on embedded platforms
License is LGPL
Use it. Really.
![Page 61: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/61.jpg)
Solution: QJSON
Really easy to use
Tested on embedded platforms
License is LGPL
Use it. Really.
![Page 62: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/62.jpg)
D-BUS
![Page 63: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/63.jpg)
The-BUS
![Page 64: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/64.jpg)
Rules of thumb
Small batches of items
Marshalling/de-marshall: operator<<
Your itemmust be a QObject
D-Feet is your friend
![Page 65: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/65.jpg)
Rules of thumb
Small batches of items
Marshalling/de-marshall: operator<<
Your itemmust be a QObject
D-Feet is your friend
![Page 66: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/66.jpg)
Rules of thumb
Small batches of items
Marshalling/de-marshall: operator<<
Your itemmust be a QObject
D-Feet is your friend
![Page 67: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/67.jpg)
Rules of thumb
Small batches of items
Marshalling/de-marshall: operator<<
Your itemmust be a QObject
D-Feet is your friend
![Page 68: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/68.jpg)
Responsiveness
![Page 69: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/69.jpg)
Responsiveness
![Page 70: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/70.jpg)
Simple! Threads!
![Page 71: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/71.jpg)
Why sometimes is a bad idea...
Hard to debug
Resource consumption
Embedded limitations
![Page 72: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/72.jpg)
Why sometimes is a bad idea...
Hard to debug
Resource consumption
Embedded limitations
![Page 73: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/73.jpg)
Why sometimes is a bad idea...
Hard to debug
Resource consumption
Embedded limitations
![Page 74: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/74.jpg)
"Are for people who can’t use statemachines."
Solution: Divide and conquer
![Page 75: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/75.jpg)
"Are for people who can’t use statemachines."
Solution: Divide and conquer
![Page 76: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/76.jpg)
Demo timeD-BUS server
JSON data
QML UI
![Page 77: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/77.jpg)
Symbian: Can Tux sing theBlues?
![Page 78: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/78.jpg)
Symbian?
![Page 79: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/79.jpg)
Yes!
![Page 80: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/80.jpg)
Demo timeCompiling a shared library
Compiling an app
![Page 81: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/81.jpg)
The end?
![Page 82: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/82.jpg)
Vacations, of course!
![Page 83: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/83.jpg)
Vacations
![Page 84: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/84.jpg)
Vacations
![Page 85: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/85.jpg)
Vacations
![Page 86: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/86.jpg)
Vacations
![Page 87: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/87.jpg)
By the way...
![Page 88: QtEmbedded](https://reader035.fdocuments.net/reader035/viewer/2022081519/555ada5fd8b42a62528b4cbc/html5/thumbnails/88.jpg)
Thanks!E-mail: [email protected]
Site: http://savago.wordpress.com
Site: http://www.openbossa.org.br