App Developer Week -- Qt Quick: Rapid Prototyping -- jryannel -- Thu, Apr 14th, 2011

   1 [18:02] <ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2011/04/14/%23ubuntu-classroom.html following the conclusion of the session.
   2 [18:10] <jryannel> Before I continue on rapid prototyping... some remarks to animations
   3 [18:10] <jryannel> There are several ways to use animtions:
   4 [18:10] <jryannel> * Animation on <property>
   5 [18:11] <jryannel> * Animation { } // standalone
   6 [18:11] <jryannel> * Animation during a state transition
   7 [18:12] <jryannel> * Behavior on <property> // when property changes than always with the specified animation
   8 [18:12] <jryannel> You can nest animations with ParallelAnimation and Sequential Animation.
   9 [18:13] <jryannel> There is also a PauseAnimation, which waits some time before continue with the next animation in a group
  10 [18:13] <jryannel> IMPORTANT!!: If an element is anchored for example on the left and right, x can't be animated!!
  11 [18:14] <jryannel> anchoring is stronger!!
  12 [18:14] <jryannel> if an element is anchored on left and right, sure y can be animated and also the height. but not the width and x
  13 [18:16] <jryannel> All of this is available as a 5 1/2 hour talk here: http://qt.nokia.com/developer/learning/online/training/training-day-at-developer-days-2010
  14 [18:16] <jryannel> Just make yourself a nice video evening instead of watching lord of the rings
  15 [18:16] <jryannel> Coming to "Qt Quick Prototyping"
  16 [18:17] <jryannel> Please have a look at: http://qt.nokia.com/developer/learning/online/talks/developerdays2010/tech-talks/qt-quick-rapid-user-interface-prototyping
  17 [18:18] <jryannel> Sorry I planned to have a screen sharing available. I hope at least some of you can watch the video
  18 [18:18] <jryannel> Anyway I will explain about the thoughts behind...
  19 [18:19] <jryannel> Qt Quick was designed to bridge the gap between "designers" and "developers"
  20 [18:20] <jryannel> In a normal design driven project you have
  21 [18:20] <jryannel> designers, which think about the user interaction, graphics and nowadays animation (e.g. motions)
  22 [18:21] <jryannel> Then they use tools like Flash or paper or PhotoShop to sketch the ui.
  23 [18:21] <jryannel> Present beautiful design to their bosses and then ...
  24 [18:21] <jryannel> They throw these design to the c++ developer and ask them to implement this.
  25 [18:22] <jryannel> Sure the result will be miles away from the the sketch. It's a different technology maybe even different HW on embedded
  26 [18:23] <jryannel> Qt Quick allows designers early on to work with the same technologies as all the other developers
  27 [18:23] <jryannel> Sure these kind of designers should now how to work e.g. with HTML/JavaScript of Flash/ActionScript. For them it's pretty easy to come to Qt Quick
  28 [18:24] <jryannel> The result is that at any time developers and designers work on the same code base and it's easy to sketch a first ui prototype ...
  29 [18:25] <jryannel> and then the prototype goes over nicely into production code
  30 [18:26] <jryannel> By this you can shorten the time to market but also ensure the that the UI is really that what someone asked for. Pixelperfect
  31 [18:27] <jryannel> Qt Quick is fast to code. So that you can create many different prototypes easily and then just ask you users, which one they like best
  32 [18:27] <jryannel> Another aspect id that the ui code is cleanly seprated from the c++ code.
  33 [18:28] <jryannel> This allows you to unit test your models and business logic and heavy lifting...
  34 [18:28] <jryannel> and push a simple and clean qml API towards the ui developers
  35 [18:29] <jryannel> Qt Creator contains a design mode, which allows you to drag-n-drop ui elements (and your custom components) on a surface to sketch your ui
  36 [18:30] <jryannel> When you are in a qml file hit the button on the left "Design"
  37 [18:30] <jryannel> in Qt Creator
  38 [18:31] <jryannel> Here you can create a first sketch. But finally you want to switch to your code (editor) to make the more complicated stuff
  39 [18:31] <jryannel> So an interaction designer creates "wireframes" e.g. like on http://balsamiq.com/
  40 [18:32] <jryannel> A graphics designer makes nice graphics to the wireframe, e.g. with photoshop, gimp, inkscape, ...
  41 [18:33] <jryannel> A motion designer thinks about how ui elements should be animated.
  42 [18:33] <jryannel> This is currently how I see designers. I'm not a designer I'm a programmer and I always wondered how they work
  43 === tubadaz is now known as tubadaz_away
  44 [18:35] <jryannel> We have material for designers ready at: http://qt.nokia.com/developer/learning/online/training/materials/qt-quick-for-designers
  45 [18:35] <jryannel> Especially module 6 talks about the different designer roles.
  46 [18:36] <jryannel> If you target a UI different from a standard desktop UI you want to have a design affine person in your team.
  47 [18:36] <jryannel> Especially with Qt Quick. This makes it really efficient.
  48 [18:37] <jryannel> If you target a standard desktop UI you want to create a set of standard UI elements or use/extend the elements produce by the Qt Components project
  49 [18:37] <jryannel> See https://qt.gitorious.org/qt-components
  50 [18:39] <jryannel> I posted this link already yesterday: http://labs.qt.nokia.com/2011/03/10/qml-components-for-desktop/
  51 [18:39] <jryannel> When I prototype a UI I always start with rectangles
  52 [18:40] <jryannel> I normally use black background and white borders.
  53 [18:40] <jryannel> Just make sure you get the dimensions right. Maybe add some text to label an element
  54 [18:40] <jryannel> Then concentrate on the application logic
  55 [18:41] <jryannel> E.g. when I press here what should be happen?
  56 [18:41] <jryannel> At then end you look into the animations.
  57 [18:41] <jryannel> When something changes, then how. Should it fade (animation on opacity), should it fly in (animation on x)
  58 === tubadaz_away is now known as tubadaz
  59 [18:42] <jryannel> Should it fly and fade (parallel animation on opacity and x)
  60 [18:43] <jryannel> You should extract components early on (e.g. mybutton, mytextedit, mycheckbox, etc...
  61 [18:43] <jryannel> Then you concentrate on the more details and bring in the graphics, colors, gradients, etc...
  62 [18:44] <jryannel> Make sure you get the structure right. give application wide used elements a good id.
  63 [18:45] <jryannel> Mark internal properties with '_<property-name>
  64 [18:46] <jryannel> Try to avoid to be to dependent on your c++ backend, I use a bool _debug property to guard sometimes those dependencies
  65 [18:46] <jryannel> Try not to create a reusable component which can be reused in all projects in the future.
  66 [18:47] <jryannel> Designers think more in reuse by copy. Just make the element work for your needs. Qt Quick can be fast adapted anyway
  67 [18:47] <jryannel> I guess that's it is for now. Any questions?
  68 [18:49] <jryannel> Take care and hope you enjoined this lengthy talk :)
  69 [18:49] <jryannel> Ohh, one link at the end
  70 [18:50] <jryannel> https://gitorious.org/qtmediahub, a XMBC (MediaCenter) clone in qt
  71 [18:50] <jryannel> And https://gitorious.org/qmlshowcase.
  72 [18:51] <jryannel> qmlshowcase was produced for a customer in one afternoon! Check it out

MeetingLogs/appdevweek1104/QtQuickRad (last edited 2011-04-15 08:51:20 by dpm)