Simon
WebKit
Posted by Simon
 in WebKit
 on Friday, March 19, 2010 @ 15:19

In this week the main focus has been on cleaning up Bugzilla. We formally spend Tuesday and Wednesday on triaging bugs, but even the days before and afterwards the cleanup continued. We started out on Tuesday morning with about 180 bugs and now we’re down to 10-20. Check out our bugs wiki page with links to filters, instructions on bug reporting and triaging:

http://trac.webkit.org/wiki/QtWebKitBugs

In addition we kept the Subversion server busy with a fair amount of fixes. I extracted the following highlights:

  • Several fixes in the DRT testing tool, among others by Chang (36139) and Laszlo (36139). The currently skipped layout tests remain a place with low hanging fruits and are a great way to get started with contributions.
  • Chang also fixed some bugs in the Qt part of the Canvas and Gradient implementations (36059, 36060).
  • Kim and Noam fixed bugs in the accelerated compositing code path (36034, 36158, 36219).
  • Antti landed the tiled backing store, which allows changing the rendering of QGraphicsWebView to cache the contents of the rendered page in tiles that are updated dynamically (35146, 36121, 36102).
  • Yael has started implementing the HTML 5 progress element, mapped to appearance of QProgressBar through QStyle (35937, 36113).
  • Robert fixed a crash inQWebView::setPage (36137).
  • Jakub fixed a crash in the Qt Multimedia media element backend (36142).
  • Kenneth fixed a bug with the media type not being restored when printing (35308).
  • Tor Arne fixed a bug with text not being clipped correctly (29477).
  • Diego added a viewport update debug feature to QtLaunchner (36175).
  • Luiz is working on support for popups with multiple selections (36177).
  • Antonio has been fixing bugs in the spatial navigation (36020).

There is no weekly build yet, but it’ll show up in the usual location in the coming days.

mbm
Qt
Kinetic
Declarative UI
Embedded
Posted by mbm
 in Qt, Kinetic, Declarative UI, Embedded
 on Tuesday, March 16, 2010 @ 19:26

Meeting

Last week Espen already reported that a group of trolls were attending the Bossa’10 Conference in Manaus. It was a great conference with lots of great people attending and interesting presentations.
What is especially good about this conference is that the focus is on networking. It is always good when you get to meet people you have only been talking to and working with on-line (A shout out to Bruno Abinader, who has been working with me on itemviews-ng; it was great to finally meet you in real life!).

by ThiagoMartins on flickr
by ThiagoMartins on flickr

Working

Even though it is great to meet new people and hang out by the pool (don’t tell my boss), I was really in Manaus to present my ideas for The Future Of Qt Widgets. I talked about the direction in which the Qt widgets are being developed. It’s all about making life easy for both designers and programmers, using the Qt Declarative UI technology.

The Future Of Qt Widgets - Bossa’10
mbm working

Having Fun

The conference is over, but I am not ready to leave Brazil just yet. I will be spending the week in Recife with the guys at INdT. It is a blast working with them; they’re a smart bunch of developers and great fun to be around! And then there’s the beach… It’s tough being a Troll in Brazil, I tell you! ;) Did I mention we’re hiring?

Butterflies On The Beach
Pontal de Maracaípe

Martin Jones
Qt
Declarative UI
Posted by Martin Jones
 in Qt, Declarative UI
 on Tuesday, March 16, 2010 @ 08:18

As QML progresses towards its first official release we are again reviewing the APIs. This has resulted in a number of changes to the QML and C++ API in the Qt 4.7 alpha release, and a few more to come in the beta. Unfortunately this will result in some small adjustments for the early adopters, but I’m sure we all agree that its better to get the API right before release.

The QML API changes made in the Qt 4.7 alpha and also the changes coming in the beta are outlined below. If you find that your QML does not run after upgrading to a newer version of Qt be sure to check src/declarative/QmlChanges.txt first.

If you are getting started with QML and need a little help getting over a hurdle, or coaxing yourself into a declarative state of mind, join the #qt-qml channel on Freenode. Don’t forget to show off your QML creations! We’ve also set up a dedicated mailing-list for QML-specific discussion: qt-qml@trolltech.com.

Changes in the alpha:

The “viewport” properties in Flickable were not well named. The properties actually refer to the content that is flicked rather than the viewport that you “look through”.

  • viewportWidth -> contentWidth
  • viewportHeight -> contentHeight
  • viewportX -> contentX
  • viewportY -> contentY

We also removed the Flickable.reportedVelocitySmoothing property, which we’re confident no one will miss.

In a later release we’d like to have a “TouchArea”, so in order to have consistent naming in the future MouseRegion has been renamed MouseArea.

Connection syntax has been changed to allow connections to multiple signals of an object. Its name therefore changes to the plural. So the old form:
Connection { sender: a; signal: foo(); script: xxx }
Connection { sender: a; signal: bar(); script: yyy }

becomes:
Connections { target: a; onFoo: xxx; onBar: yyy }

ListView.sectionExpression has been replaced by section.property and section.criteria

ListModel is now strictly type-checked (previously, everything was a string)

  • foo: “bar” continues to work as before
  • foo: bar is now invalid, use foo: “bar”
  • foo: true is now a bool (not string “true”)
  • foo: false is now a bool (not string “false” == true!)

PropertyAnimation::matchProperties and matchTargets have been renamed back to properties and targets. The semantics are explained in the PropertyAnimation::properties documentation and the animation overview documentation.

Easing curves and their parameters are now specified via dot properties:

  • easing.type : enum
  • easing.amplitude : real
  • easing.overshoot : real
  • easing.period : real

For example:
PropertyAnimation { properties: "y"; easing.type: "InOutElastic"; easing.amplitude: 2.0; easing.period: 1.5 }

C++ API:

C++ classes have been renamed QDeclarative… rather than Qml…

QML_DEFINE_… definition macros, previously global macros, are replaced by qmlRegisterType registration functions, which must be called explicitly, e.g.:

qmlRegisterType<minehuntgame>(”MinehuntCore”, 0, 1, “Game”);

C++ API users should also consider using the QDeclarativeExtensionPlugin (previously named QmlModulePlugin) as a cleaner mechanism for publishing libraries of QML types.

The API of QmlView has been narrowed and its role as a convenience class reinforced. It has also been renamed QDeclarativeView:

  • remove addItem()
  • remove clearItems() - use ‘delete root()’
  • remove reset()
  • resizeContent -> enum ResizeMode { SizeViewToRootObject, SizeRootObjectToView }
  • remove setQml(), qml()
  • rename setUrl(), ur() to setSource(), source()
  • root() -> rootObject(), returns QGraphicsObject rather than QDeclarativeGraphicsItem
  • remove quit() signal -> use quit() signal of engine()
  • initialSize() signal removed
  • Added status() to determine status of the internal QDeclarativeComponent
  • removed execute() - setSource() will also execute the QML.

Upcoming changes in the Beta:

These changes will soon be available from the qt/4.7 git repository, and will be included in the Qt 4.7 beta release.

  • PathView: offset property now uses range 0-1.0 rather than 0-100
  • ListView, GridView::positionViewAtIndex() gained a ‘mode’ parameter to allow more fine grained control of where the view moves to.
  • Removed Qt.playSound (replaced by SoundEffect element in the mulitmedia module)
  • Removed Qt.closestAngle (use RotationAnimation instead)
  • Removed NumberFormatter
  • Removed DateTimeFormatter (use Qt.formatDateTime() instead)
  • Using WebView now requires “import org.webkit 1.0″
  • Using Particles now requires “import Qt.labs.particles 1.0″
  • AnchorAnimation must now be used to animate anchor changes (and not NumberAnimation)

Behavior and Animation syntax has been changed to differentiate from property assignments. Previously animations and behaviors could be “assigned” to properties like this:
Item { x: Behavior {}; y: NumberAnimation {} }
To make it more obvious that these are not regular value assignments a new “on” syntax has been introduced:
Item { Behavior on x {}; NumberAnimation on y {} }
Only the syntax has changed, the behavior is identical.

C++ API:
QDeclarativeContext::addDefaultObject() has been replaced withQDeclarativeContext::setContextObject()

alexis.menard
KDE
Graphics View
Declarative UI
Posted by alexis.menard
 in KDE, Graphics View, Declarative UI
 on Tuesday, March 16, 2010 @ 03:51

I was lucky enough to attend the Bossa conference ‘10 in Manaus where i was presenting Plasma-Mobile. I did a previous post about it so this one will be short, it just to show that the work is progressing well, look at it running on the N900 with decent performance :

Plasma Mobile is based on Qt, KDE technologies and QML.

Simon
WebKit
Posted by Simon
 in WebKit
 on Saturday, March 13, 2010 @ 16:02

This week’s heaviest contributions were Antonio’s directional navigation and Benjamin’s scrolling optimization for pages with fixed positioned elements.

  • Antonio landed his work for spatial navigation, making it possible to navigate through links and widgets with the cursor keys. The long list of patches also includes layout test coverage, DRT support and a flag in QWebSettings for toggling the feature (18662).
  • Holger fixed a bug where non-animated gifs were animated (35955).
  • Robert added support for running caret browsing layout tests in the Qt DRT (35593).
  • Chang fixed a bug with parsing CSS colors (22150).
  • The network state notifier JS API is now enabled when compiling the trunk against Qt 4.7 (35983).
  • Support for accelerated compositing is now enabled by default, when using QGraphicsWebView (35866).
  • Benjamin implemented an optimization to avoid full frame renderings when scrolling pages with fixed positioned elements. If there are only a few of these elements present, then most of the pixels are still blitted (33150).
  • Jesus added a fullscreen mode to QtLauncher (35755).
  • Zoltan continues to spread the use of FastMallocBase to increase the coverage of custom allocators (35857, 35855).
  • Jedrzej fixed two QtScript issues (35577, 35577).
  • Diego fixed a bunch of failing layout tests with access key modifiers (35993).
  • Props to Chang and the Szeged developers for keeping up with layout test updates :)

Note that I’m only listing changes here that actually landed in the trunk. There’s quite a bit more work going on behind the scenes and in bugzilla.

All these changes are also included in this week’s experimental build, for Linux, Mac, Windows, Symbian and Maemo5.

Daniel Teske
Qt
QtCreator
Declarative UI
Posted by Daniel Teske
 in Qt, QtCreator, Declarative UI
 on Thursday, March 11, 2010 @ 13:21

Just over a year ago we released Qt Creator 1.0. Today we are releasing the alpha for Qt Creator 2.0. And the 2.0 release is shaping up really nicely. I’m feeling as excited about the 2.0 release as for the 1.0. We have something awesome and hopefully I can convince you to try the alpha and see for yourself!

But before I do that, some boring numbers, the 2.0.0-alpha differs from the 1.3.1 version by ~2500 commits from 51 people. (Though 28 of those had less than 10 commits.) Of those commits 88 come from Martin Aumüller, who keeps on improving the FakeVim plugin. Edit: Martin is an external contributer. Thanks for everyone who has created a merge request.

So what makes this release 2.0 and not 1.4? Do we number our releases after the years and have a strange myopic year 0? Nah not really.

We are adding two major features.

  • Qt Quick Integration
  • Symbian and Maemo development

Qt Quick Integration
You might have read the announcement about the Bauhaus alpha a few weeks ago. Where the Bauhaus project lead Kai said about QML:”[..] this one will fundamentally change the way slick Qt UIs are designed and look like!” Or you might have read the blog by Andreas a few days ago about a paradigm shift. So let me be yet another one to say: Qt Quick is bloody awesome. Try it NOW! Don’t wait for the Qt 4.7 release. :)

Symbian and Maemo development
We had experimental Symbian support in 1.3. Now with 2.0 we want to make development for Symbian and Maemo as easy as for the Desktop.
Seeing is believing:

Please provide feedback through the mailing list or the irc channel #qt-creator on FreeNode.

Finally here is the download link for binaries.

Have fun.

espenr
Qt
KDE
WebKit
S60
Symbian
Posted by espenr
 in Qt, KDE, WebKit, S60, Symbian
 on Monday, March 08, 2010 @ 18:30

Several of the Trolls are right now in Manaus (Brasil) at the Bossa Conference 2010 and we’re having a great time. The conference is hosted by INDt here in Brasil, and the topics covering Qt directly are:

  • QML
  • QtWebkit
  • Next generation widgets, and
  • Shipping Qt apps on Symbian

but there are also talks about KDE, Ubuntu, Maemo etc.


Hi from Bossa (Espen underwater)

In my talk I’m explaining how to go from nothing to having your own Qt app on the Ovi Store. So for that purpose I created a little app wich is a “mobilized” touch version of our old Tetrix example. See image below. It’s not fantastic in any way, but I thought it might be interesting for some to install it on their phone and try it out.

BossaTetrix

There are two ways of getting this app on your phone:

Method 1: (recommended)

  1. Install Qt 4.6.2 (Symbian)
  2. Install BossaTetrix (normal version)

Method 2: (experimental)

  1. Install BossaTetrix (Smart Installer version)

Note: Version 2 is not stable and I’ve had limited success with it. The Nokia Smart Installer is still in beta! - so if you just want something that works, go for Method 1.

My current highscore is Score: 529 Level: 2. Post your score as a comment :D

Oh and btw, my app is not in the OVI store yet- As I said, the Nokia Smart Installer is still in beta and the OVI site still needs some changes before Qt apps can be uploaded, but we’re one step closer, and I now basically know the whole complete process involved.

Twitter feed about the conference here.

Simon
WebKit
Posted by Simon
 in WebKit
 on Friday, March 05, 2010 @ 16:03

It’s been a more quiet week. Here are the highlights:

  • Robert implemented support for private browsing in PluginViewQt (33180).
  • Jedrzej continued upstreaming QtScript API and bug fixing in it (34843, 34850, 35387).
  • Andreas hooked up QNetworkReplyHandler to Qt 4.7’s support for the HTTP OPTION verb (34647).
  • Jarkko, Nicholas, Kim and Noam fixed various bugs in the MediaElement backend, the accelerated compositing support and WebGL to Qt mapping.
  • Diego continued improving layout test coverave with the Qt DRT (35694, 35255).
  • Holger tweaked performance by avoiding unnecessary calls to QFont::detach (35569).
  • Jocelyn and Tor Arne fixes various issues with the build system (forwarding headers, shadow builds without build-webkit but only qmake)

In addtion we have now a weekly build and we’ve started another round of API review.

Simon
Qt
WebKit
Posted by Simon
 in Qt, WebKit
 on Wednesday, March 03, 2010 @ 10:22

QtWebKit is a part of Qt and we’ve always released them together. With a rapidly growing development community we’d like to decouple QtWebKit from Qt’s releases. It is a project on its own, it’s developed as part of the WebKit project and therefore deserves its own release. We’re going to call the first standalone release simply QtWebKit 2.0.


baloon.png

What does a standalone release mean?

We want to make QtWebKit release available to anyone using Qt, as a source package to install into your existing Qt installation. QtWebKit 2.0 is going to work with Qt 4.6 and 4.7. We will continue to ship QtWebKit in the src/3rdparty/webkit directory in Qt releases, too. It will simply contain the latest stable release. Inside of Qt this will be covered by commercial support.

In the near future we are going to create the release branch and aim for a final 2.0 release in May. I’m going to post future updates about the releasing and branching to our development mailing list webkit-qt@lists.webkit.org.

alexis.menard
KDE
Graphics View
Declarative UI
Posted by alexis.menard
 in KDE, Graphics View, Declarative UI
 on Sunday, February 28, 2010 @ 15:51

This week i was attending Tokamak 4 in Germany, the KDE Plasma meeting. I’m a Plasma contributor in my spare time so it’s always nice to meet face to face the people I’m working with. The event was hosted by Novell in the Suse office. It was very well organized and I even met some people behind this distribution. I was there to present QML and also gather the usual feedback from KDE/Plasma. I was also exiting to work on the new “project” launched couple of weeks ago : the Plasma-mobile project. The scope of this project is to bring Plasma and by extension KDE technologies on mobile phones. Plasma has already a dedicated user interface for desktop and netbook (The netbook shell) but a new baby will join the family.

After a lot of discussion, the idea was basically to have something that would work on almost all mobile devices and designers would be
able to provide a custom interface for each kind of device, without changing one line of code! How we can achieve that ? The idea is
actually very simple :) So, while we started working on it, another group started thinking about kdelibs and how we could get rid of “not so necessary” dependencies for the mobile world and decrease the memory footprint of it. Sometimes this kind of work doesn’t get into the user’s face but is really necessary for the overall user experience. These guys rocks, at the end of the meeting they had a very nice plan : basically a KDE for Desktop, Tablet, and Mobile. Check out the details here : http://mail.kde.org/pipermail/kde-maemo/2010-February/000059.html

Thanks to Qt and KDE infrastructure we are able to deploy our applications everywhere. Thanks to Plasma we are able to provide great organic interfaces and services everywhere. And thanks to vendors we are actually able to deploy all of this stuff on real devices ;)

Technically speaking we decided that we would code all the “backend” for the mobile shells in a way that they would have a “view API” that would be used by designers to create different interfaces for different devices (as it’s well known that there is no such thing as an interface that works well for all kinds of devices). To create the interfaces we used QML (the new Qt declarative language to design rich UIs).

It was a really good experience! In the first day we almost didn’t code a line and just discussed a lot what would be a good interface for Intel’s device Compal Jax10. Meanwhile we wanted to create a concept that would be easily adapted to the Nokia N900 too. After long hours of brainstorm and discussions on the white board we came with an idea and Nuno (one of the Oxygen designer) started to do a mockup and some icons so we would be able to play with it.

Mockup Nuno

After we had the basic images, Artur (MoRpHeUz) and me started prototyping the basic stuff only in QML so it was really easy to tweak the transitions and states and Nuno was constantly giving feedback. This experience was really nice for all of us: sometimes we just did it wrong but then gave some ideas to Nuno and sometimes it was just like what he thought! With half a day we already had a prototype using QML so we knew exactly how the shell would behave.

Having the whole idea our minds we just went to the white board and started discussing the C++ bits of the backend, in order to achieve a
good architecture that would really fit inside the “Plasma way of thinking” (TM). Basically Marco, Artur, Aaron and me discussed in the
board and tried to figure out what were the missing bits for our solution and what needed to be done on libplasma and how the backend
would be coded to achieve a good result.

Last night, on one hand after hours of hacking/thinking/bug fixing and on the other hand in just one day ;) Artur and me finished the first
draft of the mobile shell! It was really nice and I think that it’s just going to blow minds when it’s finished. Right now we have a full
shell using Plasmoids all around and all important concepts implemented. Of course we need to improve the code that is a little
bit ugly right now and polish it like doing the notification bar (for battery, wifi signal), decide how we are going to deal with
notifications (it’s already in our mind) and of course deal with remote widgets that just depend on the notification thing as libplasma
is already taking care of the difficult stuff behind the scenes. There is still a lot of work to make this user interface ready to production but I’m quite confident that we’ll make it really quickly.

Watch out the screenshots and videos below to know more about Plasma running on mobile devices. And if you’re interested about the decisions behind the concept, check out this other post about it (http://blog.morpheuz.cc/28/02/2010/the-mobile-concept/ and http://www.notmart.org/index.php/Software/A_mobile_Tokamak)

KDE has nice people, nice technologies that can run on other things than a regular desktop computer. The future looks promising…



© 2008 Nokia Corporation and/or its subsidiaries. Nokia, Qt and their respective logos are trademarks of Nokia Corporation in Finland and/or other countries worldwide.
All other trademarks are property of their respective owners.