Back to the roots

Categories: KDE, Maemo, Marble
Tags: No Tags
Comments: 1 Comment
Published on: September 3, 2013

Nokia used to produce some excellent smartphone hardware. If you’re happy to own a N900, there’s an upgrade to Marble 1.5 on its way that brings some fresh life to good old Maemo. It’s in extras-testing now and should appear in extras soon. Kudos to Bernhard who took over maintainership of the Maemo version and worked hard to make this release possible.

marble-maemo-1.5.5

 

 

New stable release Marble 1.6!

Categories: KDE, Marble
Tags: No Tags
Comments: 11 Comments
Published on: August 15, 2013

Together with the 4.11 Release of KDE Applications a new stable Marble version 1.6 has been released. It surely is the greatest Marble release to date. Arguably each new release of a software should be the greatest so far, yet Marble 1.6 introduces an extraordinary amount of awesomeness. Below is a teaser image highlighting some of the new features. Make sure to check out our visual changelog which mentions even more new stuff and embeds some nice videos. Enjoy :-)

New features in Marble 1.6

 

 

QML Layers in Marble

Categories: KDE, Marble
Tags: No Tags
Comments: Comments Off
Published on: May 27, 2012

KDE 4.9 Beta 1 is about to be tagged soon and so is Marble 1.4 Beta 1. Judging from the current bug reports and my own tests it is pretty stable already; I’m not aware of any major bugs. Still we’re not running short of things to do: There’s Marble Touch for Harmattan (Nokia N9), the to-arrive Marble Touch for Plasma Active as well as the usual development work currently centered around our four students and their projects (Google Summer of Code and Season of KDE).

One of Marble’s strength has always been that the vast majority of all functionality is contained in its library and shared by the two (with Marble Touch now three) applications that are shipped with the project as well as all other applications that embed the library. Given that Marble Touch is based on QML/Qt Components, this implies to expose parts of the API to QML.

The content presented by Marble consists of several layers stacked on top of each other. Usually this is a base map (based on several texture and vector layers), intermediate layers like search results, a route, postal codes, clouds and finally information boxes. Most of them can be configured: The base map is setup by .dgml files and brings it’s own properties that can further be tweaked through e.g. Marble’s interactive legend. Search and routing have their own control fields. Additionally these layers can be managed via the C++ API (and most parts also from QML).

What about postal codes? They’re part of the so-called online services, plugins that download a certain type of data for the currently visible map region and display them. Besides postal codes these can be Wikipedia articles, photos (from flickr), weather status and forecast, recent earthquakes and more. Each of these services provides limited interactivity in the Desktop version, but the QML interface was missing so far. Yet it is quite interesting to access the online service data from QML for those activities that are tightly coupled to them: Weather, Friends and the currently emerging “Around Me” that provides information about nearby places and events.

Today I extended the existing online service framework to be able to provide a QML delegate — pretty similar to a delegate e.g. in a QML ListView. Once the delegate is set it deactivates the QWidget based rendering for the given service. Instead the provided  QDeclarativeComponent is used as a factory to build and destroy QML item instances as needed as well as updating their screen positions automatically. The C++ data model item retrieved by the online service is set as the context object in the QML context of the QML item such that it can easily access its properties by their name. This approach has several advantages: Item culling, filtering and positioning can be done in the C++ part, which is faster, easier and reuses existing code. At the same time the layout can be done in QML, which usually results in less code and easily allows to add animations. And finally QML is great to allow interaction with the content.

For a proof-of-concept I took the existing Weather activity and replaced its C++ rendering with a QML delegate as you can see in the short screencast below (Youtube, direct .webm here). As expected the QML part is short, just 50 lines for the legend on the left and 60 lines for the delegate that renders the weather status icon and temperatures. Adding interactivity (showing details on selection of a weather station, marking stations as favorite) will be similarly easy.

Not everything works great though. The old z-value problem naturally comes up again with the QML weather items overlapping the information boxes (except for the QML rendered legend). This happens because of the different, independent rendering that does not allow to control the paint order. Unless I find a way around this I’ll probably go for replacing the remaining upper layers (information boxes mainly) with QML equivalents as well. That’d mean that the lower part of the layers was rendered by C++, the upper part by QML. On the one hand this sounds sane given that the lower layers need little interactivity, but are performance critical, while the upper ones are the reverse. On the other hand this would break the fine grained z-value control we currently have.

tl;dr

The QWidget based rendering of online service layers in Marble can now be replaced by custom QML delegates (sok-2012-plasma-active branch).

 

 

Approaching the World of Tablets

Categories: KDE, Marble
Tags: No Tags
Comments: 4 Comments
Published on: May 6, 2012

 

Last week I packaged Marble Touch 1.3.3 for the Nokia N9/N950 and submitted it to the Ovi store. It’ll appear there in the next days. Compared to 1.3.2 there are the usual bugfixes and smaller improvements, but also new features — most prominently support for bookmarks.

In retrospect, I’m pretty satisfied with the choice to base its development on Qt Components. While I still have a lot of ideas for improving and extending it, the plan for world domination now wants me to shift attention towards a different, yet similar topic: Bringing Marble Touch to Plasma Active. Fortunately the Plasma guys were clever enough to develop the Plasma Components with a very similar API, so the initial port was an easy task for this rainy weekend. Marble Touch in master now supports both Qt Components and Plasma Components. It’s not polished yet, font and icon sizes need to be adjusted and most dialogs don’t play well yet, but the core functionality is all there and works happily. I even tested it on Kubuntu Active in a virtual machine.

One of the reasons I worked on this now is to set a solid base for Utku (you may remember him as the author of Marble’s earthquake and opendesktop plugins as well as the map creation wizard) to join me in his Season of KDE project. Great news! I’m sure we’ll have a nicely polished, end-user ready Marble Touch for Plasma Active at the end of the summer :-)

With the technical and organizational stuff mostly covered it’s back to brainstorming: What use cases do we want to cover on tablets? Routing and navigation are fundamental ones on smartphones. They’re also important on tablets, yet their larger screen and different usage patterns (couch mode, second screen) enable further use cases. So the second part of our motto — “find your way and explore the world” — becomes more important. I’m thinking of showing more details about places (photos, weather, user content) arranged in a convenient way. Furthermore owncloud integration would be lovely to easily share/synchronize your bookmarks, routes and photos across devices. What would you like to see?

 

page 1 of 1
Welcome , today is Wednesday, April 16, 2014