New SeriesFinale Harmattan and Fremantle releases

That’s right, a couple of weeks ago new versions of SeriesFinale were released.
There was a long absence between these and the previous releases. The truth is that it has become more and more difficult for me to find the motivation (and time) to do work on an application for platforms I am not currently using. Still, I have had some emails from people showing their appreciation and Juan has also helped a lot (he is the reason there is also a new N900 release).

If you’re following the development of SeriesFinale, I have recently moved the repository over to GitHub (like I did for most of my projects). GitHub is so much faster than Gitorious and has nice features such as an issue tracker. Before you say it, although GitHub is not Open Source software, we’re talking about a hosted solution for Git repositories from a very cool company and I had no intentions of hosting Gitorious on my own anyway.

So what’s new in SeriesFinale? I need to differentiate between the platforms’ versions first.
Harmattan (N9) is on the 0.6.9 version and many bugs were solved like:
* Marking all episodes from the episodes’ list menu (nd#1)
* Episodes’ overview height (nd#9)
* Updating the shows season list
* Add a close button to show info dialog
* Add mark none action to the episodes’ list menu

There are still some issues when scrolling the lists which I’ve looked into and could not find any solution, I am convinced it actually has to do with the Python bindings of QML…

Fremantle (N900) is on version 0.6.10 and has less visible changes but the threads, languages and sorting functions were improved.

Adding the the new Harmattan version to the Nokia Store was also a challenge (it kept being rejected due to tiny details) but it eventually went through.

Be sure to test and vote for SF on Fremantle, or, in case you have an N9, get the new version from the Nokia Store:

Get SeriesFinale from Ovi Store

SeriesFinale for Harmattan (N9/N950)

As promised before, here is the first release of SeriesFinale for MeeGo Harmattan.

This summer Micke Prag, a fellow programmer from Sweden contacted me because he was starting a port of SF for Harmattan. By then I still didn’t have an N950 because of having missed the deadline for the first developers program. Later, when the second developers program was launched I managed to finally get one. At that point, even though I already had my Samsung Galaxy S (yes, with Android) I still wanted to have a port of SeriesFinale as I had received many emails asking for this port so I started from Micke’s code and finally here it is!

The Harmattan port

SF first version for MeeGo

Maybe it is something obvious but this version is not written in PyGTK/PyMaemo. It uses part of the “old” Python backend that was changed to play well with the new UI code written in QML.

This port’s code is a bit dirty by now and I’m sure there are bugs in this first version but at least it can be used and I didn’t want to make people wait much more. The support and feedback that SeriesFinale’s users have given me is amazing (some people even saying they still use the N900 only for SF!), thank you all for it.
My heart is still filled with GNOME/GTK+ love but QML is really impressive; there are some things I still need to spend some time with to figure out but I like how quick and flexible one can do stuff in QML.

The OVI Store

It was also the first time I published something on Nokia’s Ovi Store and the process took around 2 weeks before it finally got approved (it was rejected twice before due to weird stuff like “they” thinking bugs.maemo.org was not a good place to report issues or the fact that an application that says it works only with English US is eligible only for the USA, not for all the countries…).

The future

I really like the N9/N950. The user experience is something awesome and I believe this was the phone that could really compete with the iPhone and Android. Unfortunately someone at Nokia disagrees and the future of this incredible phone is doomed even though Nokia’s alternative is not better. Due to this mainly, I’m not using the N950 as my main phone. This and the fact that my personal time, in which I develop SF, is very limited, means that unless things change, I don’t know how much more releases I will do but I still wanted to add some cool features. It will probably depend again on the feedback and support.

Anyway here it is at an Ovi Store a few taps/swipes away and for free, as always (although I appreciate when someone buys me a beer 🙂 ):

Get SeriesFinale from Ovi Store

SeriesFinale 0.6.9

Yup, after some months, here is a new version of SeriesFinale.

This new version doesn’t have many new features but brings an important one related to my previous blog post: the context menu.
When long-pressing a show or a season, a dialog will be shown with some actions. On the show’s context menu (or context dialog?), the user can update it, delete it, view its info or, more importantly, mark the next episode to watch as watched. On the season’s context menu, it can be deleted or, as many users have requested, mark all episodes.

Here are a couple of screenshots:

SF Context Menus Screenshots

SF Context Menus Screenshots

Of course that by only seeing the screenshots you don’t get the same feeling has when you quickly open the dialog and mark the next episode to watch so give it a try.
It it already in Extras Testing and if it works well for you, please vote for it to get into Extras.

The Future

This summer I bought myself an Android phone. That’s right, because of pure curiosity and with the help of Nokia’s decisions regarding MeeGo, I bought a Samsung Galaxy S.
I’ve been using it ever since as my main phone but I didn’t want to leave SF unattended yet. There are a couple of things more that I want to do and I’ll keep an eye on the download statistics to try to guess how many people is still interested in this app.

I haven’t yet found a full replacement for it on Android. I’ve installed a few apps that either don’t work well, require login or are bloated with features making it harder to use so I don’t know if I’ll end up contributing to some FOSS one or developing an official port of SF. Do you think that developing an official version for Android makes sense?
Also, people have asked me for a Symbian and Blackberry versions of it but I just don’t own any phone with these systems.

As for SF on the N9/N950, a release could be out there soon so stay tuned.

Long press GTK+ TreeView on Maemo

Yesterday was a holiday so I got some time to hack a bit in SeriesFinale.
One of the things I wanted to do was to have a context menu for shows and seasons. Something to apply individual actions like deleting, updating, viewing information, etc when there is a long press on a tree view’s item.

In Maemo the way to do this is to use the TreeView’s tap_and_hold_setup method but the problem is that I hate how this context menu is implemented: I have accidentally deleted stuff because of this menu. Can you think of a less intuitive widget for a touch screen? One that shows below your thumbs, only while you’re touching the screen and triggers some action when you lift it.
Instead, I wanted to show a dialog with the different actions so users could easily know what their doing.
Also, the fact that the API only allows me to use this long-press action to trigger a menu widget doesn’t seem like the best design…

Because of this I decided to implement a TreeView’s subclass that makes it better!
In my opinion, the way to implement this in the TreeView is to treat it like any other functionality: emit a signal when it occurs.

Though it wasn’t difficult, I thought the job would be easier. I had already implemented the “long-press” signal emission but the “row-activated” signal kept being emitted as well. Contrary to what I thought, re-implementing do_row_activated didn’t do it so I had to take a look at the GTK+’s source and though the row_activated method is indeed the one that emits the signal, there is also a “hildon-row-tapped” signal being emitted from the button_release_event. I don’t know if this signal is related or if it is the Python bindings fault but I had to prevent the “row-activated” signal from the mouse_released_event method in a hackish way

Finally, when running the dialog, the application would freeze and not respond after this.
It was related to the emission being done from the timeout callback which, without having the time to look further, smelled like some race condition so I had to wrap the signal emission with the threads_enter/leave.
After this, everything worked well.

Like the “row-activated”, the “long-press” signal gives the tree path and the column that was pressed. It is emitted after pressing for 0.5 seconds and is cancelled if meanwhile the user moves the finger more than 25 pixels. These values are completely arbitrary and have just worked good enough for me. Of course you can easily change them.

And that’s it. I’ve called it EnhancedTreeView and if you want to use it in your Maemo application go ahead and copy/tweak the file (it has less than 60 lines).

SeriesFinale 0.6.8 and the revenge of the clones

Finally I could get a little time to finish SF 0.6.8 release.

In this release one thing I wanted to improve was the startup time. With the number of TV shows I have in my SF, it was taking around 25 seconds before showing me the list of shows. Part of this is due to the deserialization from the DB (no, it’s not using SQLite and I have no time to make the switch) which takes its time but also because it was attempting to sort the list of shows every time a show was added and it also took some time loading the shows’ covers from disk.
This fix was basically loading of the covers asynchronously and sorting the shows only after they are added to the tree view. It improved from 25 seconds to 12 seconds more or less.

While the shows’ covers are being loaded on startup or downloaded from the web, it displays something like shown on the following screenshot:

One of the features people like more is the display of the next episode’s air date. To improve this, I’ve added a small tweak to humanize the dates close to today so it displays “Yesterday” instead of “20 Jul”.

The covers retrieval was broken for a while and this is fixed too. What happened was that TheTVDB started redirecting images to a mirror and SF was not following redirected links… It should follow them now, so it is unlikely to happen again.
I’m also including the French translation kindly sent by David Landreau.

Other important improvements and fixes are:
* Fix deleting seasons;
* Add sorting options to the seasons view;
* Fix infinite loop when updating episodes (it happened when there were two shows with the same name);
* Consider next episode to watch only when it has an air date;

There are also some good news from other platforms’ ports. Nacho has created a branch where he is porting the GNOME version to GTK3/PyGI. A user named Micke Prag is porting it to QML which means it will be available on MeeGo one of these days. I wanted to apply for the developer’s N950 program (to port SF) but I was on honey-moon when it was announced and I ended up forgetting about it…

Revenge of the clones

When I first developed SF in 2009, I did it to scratch an itch and I couldn’t find such an app when I googled for it, I even wondered if anyone apart from me would be interested in such an app. Short after, my friend and colleague from the University, Paulo Cabido told me how much he liked the idea and created DroidSeries, a SF’s clone for Android. After a while I also found SeriesWatcher, a clone in Qt that also ran on the Linux desktop, Windows and Mac OSX.
What surprised me was that last week I was browsing the Android Market (out of curiosity, I don’t own an Android phone) and found out that there are:
* Series Droid (notice the name? If my friend Paulo was M$ or Apple, he would sue their asses 😀 )
* TV Show Favs
* TV Start
* Episode Calendar (this seems to be the only Open Source one in the list)

Although only DroidSeries and SeriesWatcher say they are based in SF, I like to think the others do as well (maybe indirectly like being based on another clone 🙂 ). Or maybe those were developed before SF and I didn’t notice… What I’m trying to say is that not only from mainstream platforms come nice end user apps. In the Maemo world, even though we have problems of other nature, we also have good ideas and good applications for end user.

Get SeriesFinale 0.6.8 soon from your N900’s updates or here.