QtEmbedded

934 views

Published on

Qt embedded presentation in FOSDEM2011.

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
934
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
12
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

QtEmbedded

  1. 1. Qt tales from the embeddedtrenchesCabledogs (savago, igolivei)2011
  2. 2. About us Adenilson Cavalcanti (Savago): KDE-pim, KDE-Plasma, IMTK, libgcal, amora Igor Trindade Oliveira (igolive): KDE-pim, KDE-plasma, Gallium
  3. 3. Structure A problem is given A solution is proposed Discussion
  4. 4. Topics1 Kinectic scrolling pain2 Meego UI without libmeegotouch?3 Sliding Widgets4 JSON parsing5 D-BUS6 Responsiveness7 Symbian on Linux
  5. 5. Kinetic Scrolling
  6. 6. Kinetic example: iPhone 2007
  7. 7. Prior art?Bill Buxton: Two-handed input in HCI, 1982Canola 2007etc
  8. 8. Prior art?Bill Buxton: Two-handed input in HCI, 1982Canola 2007etc
  9. 9. Prior art?Bill Buxton: Two-handed input in HCI, 1982Canola 2007etc
  10. 10. Prior art?Bill Buxton: Two-handed input in HCI, 1982Canola 2007etc
  11. 11. A personal favorite: Canola 2007
  12. 12. What about Qt? flickable 2008
  13. 13. How scrolling works?
  14. 14. 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
  15. 15. Demo timeC++: toyflickQMLLooking at the pros
  16. 16. Currently known Qt-basedimplementations Ariya’s Flickable 2008 toyflick 2009 Plasma ScrollWidget 2009 IMTK ImtkKinecticListView 2010 QML Flickable 2010
  17. 17. Meego UI withoutlibmeegotouch?
  18. 18. Meego appOk, somewhat old example...
  19. 19. Can it run on Symbian?Short answer: NOT!Long answer: it could be ported...You have 1 day!Solution: cheat!
  20. 20. Can it run on Symbian?Short answer: NOT!Long answer: it could be ported...You have 1 day!Solution: cheat!
  21. 21. Can it run on Symbian?Short answer: NOT!Long answer: it could be ported...You have 1 day!Solution: cheat!
  22. 22. Can it run on Symbian?Short answer: NOT!Long answer: it could be ported...You have 1 day!Solution: cheat!
  23. 23. Can it run on Symbian?Short answer: NOT!Long answer: it could be ported...You have 1 day!Solution: cheat!
  24. 24. UI elements
  25. 25. UI elements
  26. 26. UI elements
  27. 27. UI elements
  28. 28. UI elements
  29. 29. Final result
  30. 30. Pure blood Qt runs everywhere!
  31. 31. ’Minor’ details: 7 months ago Forgot the Buttons... Rescalable button backgrounds Borders on background Centered Icons Layouts/sizeHints sometimes are tricky
  32. 32. ’Minor’ details: 7 months ago Forgot the Buttons... Rescalable button backgrounds Borders on background Centered Icons Layouts/sizeHints sometimes are tricky
  33. 33. ’Minor’ details: 7 months ago Forgot the Buttons... Rescalable button backgrounds Borders on background Centered Icons Layouts/sizeHints sometimes are tricky
  34. 34. ’Minor’ details: 7 months ago Forgot the Buttons... Rescalable button backgrounds Borders on background Centered Icons Layouts/sizeHints sometimes are tricky
  35. 35. ’Minor’ details: 7 months ago Forgot the Buttons... Rescalable button backgrounds Borders on background Centered Icons Layouts/sizeHints sometimes are tricky
  36. 36. ’Minor’ details: today Rescalable button backgrounds: QML BorderImage Borders: QML BorderImage Centered Icons: maybe Qt components Layouts/sizeHints: QML anchors
  37. 37. ’Minor’ details: today Rescalable button backgrounds: QML BorderImage Borders: QML BorderImage Centered Icons: maybe Qt components Layouts/sizeHints: QML anchors
  38. 38. ’Minor’ details: today Rescalable button backgrounds: QML BorderImage Borders: QML BorderImage Centered Icons: maybe Qt components Layouts/sizeHints: QML anchors
  39. 39. ’Minor’ details: today Rescalable button backgrounds: QML BorderImage Borders: QML BorderImage Centered Icons: maybe Qt components Layouts/sizeHints: QML anchors
  40. 40. Demo timeC++: frameAnimated layout items
  41. 41. Sliding widgets
  42. 42. Example: iPhone contact list
  43. 43. How to do it?
  44. 44. step1: have a specialized layout
  45. 45. step2: put widget side by side
  46. 46. step3: make both visible...
  47. 47. step4: animate!
  48. 48. step5: hide the old widget
  49. 49. Demo timeC++: slider
  50. 50. ’Minor’ details: 7 months ago QGraphicsLayout is not a QObject Multiple heritance is nasty! Parenting issues of widgets No documentation, of course...
  51. 51. ’Minor’ details: 7 months ago QGraphicsLayout is not a QObject Multiple heritance is nasty! Parenting issues of widgets No documentation, of course...
  52. 52. ’Minor’ details: 7 months ago QGraphicsLayout is not a QObject Multiple heritance is nasty! Parenting issues of widgets No documentation, of course...
  53. 53. ’Minor’ details: 7 months ago QGraphicsLayout is not a QObject Multiple heritance is nasty! Parenting issues of widgets No documentation, of course...
  54. 54. ’Minor’ details: today Qt Components has PageStack
  55. 55. JSON parsing
  56. 56. Qt doesn’t parse JSON?
  57. 57. Qt doesn’t parse JSON? SAY WHAAAT!!?
  58. 58. Solution: QJSON Really easy to use Tested on embedded platforms License is LGPL Use it. Really.
  59. 59. Solution: QJSON Really easy to use Tested on embedded platforms License is LGPL Use it. Really.
  60. 60. Solution: QJSON Really easy to use Tested on embedded platforms License is LGPL Use it. Really.
  61. 61. Solution: QJSON Really easy to use Tested on embedded platforms License is LGPL Use it. Really.
  62. 62. D-BUS
  63. 63. The-BUS
  64. 64. Rules of thumb Small batches of items Marshalling/de-marshall: operator<< Your item must be a QObject D-Feet is your friend
  65. 65. Rules of thumb Small batches of items Marshalling/de-marshall: operator<< Your item must be a QObject D-Feet is your friend
  66. 66. Rules of thumb Small batches of items Marshalling/de-marshall: operator<< Your item must be a QObject D-Feet is your friend
  67. 67. Rules of thumb Small batches of items Marshalling/de-marshall: operator<< Your item must be a QObject D-Feet is your friend
  68. 68. Responsiveness
  69. 69. Responsiveness
  70. 70. Simple! Threads!
  71. 71. Why sometimes is a bad idea... Hard to debug Resource consumption Embedded limitations
  72. 72. Why sometimes is a bad idea... Hard to debug Resource consumption Embedded limitations
  73. 73. Why sometimes is a bad idea... Hard to debug Resource consumption Embedded limitations
  74. 74. "Are for people who can’t use statemachines." Solution: Divide and conquer
  75. 75. "Are for people who can’t use statemachines." Solution: Divide and conquer
  76. 76. Demo timeD-BUS serverJSON dataQML UI
  77. 77. Symbian: Can Tux sing the Blues?
  78. 78. Symbian?
  79. 79. Yes!
  80. 80. Demo timeCompiling a shared libraryCompiling an app
  81. 81. The end?
  82. 82. Vacations, of course!
  83. 83. Vacations
  84. 84. Vacations
  85. 85. Vacations
  86. 86. Vacations
  87. 87. By the way...
  88. 88. Thanks!E-mail: adenilson.silva@openbossa.orgSite: http://savago.wordpress.comSite: http://www.openbossa.org.br

×