Planet maemo: category "feed:437c40ecc45d4b0fa868e422ae16adb1"

Thomas Perl

Fast MeeGo Handset UX on a N900 (Video)

2010-10-05 09:20 UTC  by  Thomas Perl
0
0

I've had the chance to play around a bit more with the MeeGo Handset UX on the N900 yesterday (1.1.80.0.20101001.1). Carsten provided experimental graphics drivers, which still crash at a few points, but for the first time provide acceptable performance in the UI. I also decided to build the gPodder MeeGo Touch Prototype UI against libmeegotouch. Unfortunately, there's no SDK yet, so I had to use zypper on the device (via SSH) to install libmeegotouch-devel, make and gcc-c++ and then take a long coffee break after entering qmake ; make. As it's using plain Qt, the TRG binary built from the Fremantle SDK worked fine on the device.

If you don't see the embedded video, click here: MeeGo Handset UX on a N900 (w/ TRG, gPodder UI test, HW-accelerated).

Categories: dui
Thomas Perl

Qt: Write once, #ifdef everywhere?

2010-10-04 12:13 UTC  by  Thomas Perl
0
0

Despite what the title of this post might suggest, I really like Qt. But as a developer, I also know that "write once, run everywhere" isn't realistic without writing some special-cased platform-specific code. Qt does take care of many platform-specific things, and I think it's the closest you can get to "write once, run everywhere" right now.

Click to read 2070 more words
Categories: qgraphicsview
Thomas Perl

It's about time...

2010-09-28 16:16 UTC  by  Thomas Perl
0
0

...displayed inside gPodder. Not only the total time of a podcast episode, but (thanks to the MAFW integration that has been added in 2.8) also the position that you stopped listening to, so you know how much time is remaining. There are several possibilities how to display the progress: A circle sector image, a "position/total" text display and a "remaining" text display. Right now, I opted for the "position/total" display (with "total" in cases where you haven't started listening to an episode). Here's how it looks in the current development version of gPodder:

If I remember correctly, the idea for this came up during the Barcelona Long Weekend and was suggested by Tuomas while we were discussing gPodder's UX. Back then gPodder did not store any kind of time-based length information in its database - only the file size in bytes, which isn't that helpful for listening purposes. But since then the work on gpodder.net and the desire to synchronize episode status information between different devices has put everything in place that's needed to detect the duration of episodes (it's even provided as <itunes:duration> (spec) in some RSS feeds) and with the MAFW integration to detect the current playback position when playback is stopped.

If you are using gPodder 2.8 and the built-in Media Player, gPodder already collects this information, so when the next release comes out, you will immediately have some useful data there. This should also help you in deciding which episode to pick on your commute.

What do you think of this feature? Is the current representation the best one, or would something else be more useful to you?

Categories: mafw
Thomas Perl

It's time for another release round of some of my lesser-known apps. First up is something that will make all the proud N8x0 owners happy: Maemopad+ has seen its first new release in 7 months, fixing a crasher bug that happens when creating a new database. The new version, 0.37, is now available from the Extras repository. I also noticed that I forgot to promote the version from February to Extras (it was sitting in Extras-Devel all this time), so if you are running on Extras-only, you should now see the first Maemopad+ update since early October 2008 ;) In this case, you also get a new feature that you didn't have before: Full-text searching in the toolbar.

Next up is MaePad, Maemopad+'s Fremantle-ified descendant. Still fighting for its place in the Extras repository, MaePad has not entered Extras due to some unfortunate typo in the bugtracker link. Now that this one has been fixed, you will also get the aforementioned bugfix (from Maemopad+), an update to the Russian translation (by Serge Broslavsky) and two new translations: Simplified Chinese (by hyao) and Czech (by fri). If you are on Transifex, submit your translation for MaePad to be included in the next release! If you are into testing stuff, test MaePad 1.7 now!

Last but not least is Trophae (known in the app manager and app menu as "PS3 Trophy Viewer"), an app that simply shows your trophy progress for your PS3 games. There has been a change on the PS3 website recently, which broke the app, so this provided a nice opportunity to not only fix the bug, but also properly package it up for Extras-Testing - with a new icon, bugtracker link and all these things that lazy developers tend to forget in a hasty first release ;) Please also test Trophae in Extras-Testing if you have about 4 minutes to spare and a PSN ID to test.

Categories: maemopad+
Thomas Perl

Playing around with MeeGo Touch

2010-08-29 23:38 UTC  by  Thomas Perl
0
0

While the MeeGo Touch Python Bindings are still not packaged and released, I though I'd give the C++ library a try and have a look through the class hierarchy. After getting the basic "Hello World" app running, I decided to create an application that can load the list of subscriptions from gPodder's SQLite database:

This view uses MContentItem, which already provides an icon and two lines of text - correctly styled and ready to go. Menu and toolbar items are MAction objects that can either appear everywhere or only at specific places (e.g. only in the toolbar). The great thing is that this all works on your Desktop in a normal window, so testing applications on your computer will be much easier with MeeGo Touch than it is with Hildon (which does not really run without its own hildon-desktop session in Xephyr).

The screenshot above is from the prototype written in C++, and shows how a gPodder MeeGo UI could look like. The MeeGo Touch UI of gPodder will be implemented in Python once the bindings are ready - the framework seems to be fun to work with so far. If you would like to play around with it yourself: MeeGo Touch is available from the MeeGo PPA of Ville M. Vainio if you are on Ubuntu and don't want to build it yourself.

Categories: c++
Thomas Perl

It's been some time since the last gPodder release, and I've been busy adding some nifty features to make the best use of the on-board facilities of Maemo 5. As already mentioned in a previous post, this new version comes with built-in notification support. After installation, you might have to re-start hildon-home (or your device) for the changes to become effective. That's what you will get when new episodes are found:

The other and more "invisible" change is that gPodder now listens to MAFW and also talks to it at times. MAFW is the backend of the Media Player application, and you profit in two ways from this integration:

  • The last playback position and duration of an episode are displayed in gPodder and synchronized to gpodder.net
  • Playback can be resumed even with the Media Player application

This means that users of the normal Media Player application will benefit from all the goodies that were previously only available in combination with Panucci. Combined with the new notifications, this makes for yet another great release with even better integration into the Maemo 5 environment.

gPodder 2.8 is now available from Extras-Testing, so please test, review and vote on the package.

Categories: mafw
Thomas Perl

gPodder running in the MeeGo Handset UX for N900

2010-08-20 11:30 UTC  by  Thomas Perl
0
0

Three days ago, a new MeeGo Handset UX image has been released for the N900. I wanted to try out gPodder on it to see how far I could come without any coding...

It was quite easy to get things going: Download the image, dd it to a MicroSD card, boot the kernel (detailed instructions) and set up USB networking. After that, I could ssh into the environment (the root password is meego) and have a look around.

Instead of using apt-cache and apt-get to search for and install packages, I utilized yum to search for and install PyGTK. Then, I used rsync to copy my Git checkout of gPodder to the device. There are two additional dependencies for gPodder that aren't yet available in the MeeGo repositories, namely feedparser and mygpoclient, so I just copied the Python modules from my Laptop into the src/ folder of the gPodder checkout. Then, just switch to the MeeGo user (su - meego), make sure that the DISPLAY variable is set (export DISPLAY=:0) and start gPodder from the source folder (with bin/gpodder - it automatically loads the modules from the right path) - gPodder says hello MeeGo.

The basic functions work, it's just that the Desktop UI isn't suited for mobile devices (the MeeGo compositor/decorator also has several problems, but that seems to be a more general problem). Python bindings for Hildon aren't (yet ?) available, so I could not test the Maemo 4 or Maemo 5 UIs, but I would like to do a proper Qt/MeeGo Touch-based UI for gPodder, anyway. Let's hope the PyMaemo or PySide teams are quick to release bindings and make them available in the MeeGo repositories, so Python developers can create usable UIs for MeeGo handsets :) Oh, and two MeeGo-Python facts: It comes pre-installed in the N900 image, and the version shipped is 2.6.

In short: Apart from the UI framework, everything is already in place (and working) for Python on MeeGo. With the recent release of Qt Mobility for PySide, let's hope that MeeGo Touch bindings are not that far away.

Categories: pyside
Thomas Perl

Desktop notification support in gPodder

2010-08-16 21:31 UTC  by  Thomas Perl
0
0

Three days ago, Maemo bug 11130 was filed: It complains about gPodder stealing focus when it has finished checking for new episodes in the background. This is true, and I've been bitten by this annoyance several times already, so I decided to finally have a look into the SMS/IM/Phone-style notifications (the "yellow" bubble that merges into your task switcher after some time). Thankfully, Daniel Would (of Witter fame) has published his research results some months ago already, so getting up and running was easy from that point. Here are the results so far:

One problem that I still have not figured out how to fix (even after digging in the hildon-home source tree) is how to attach such a notification to the a given window (or application) instead of having it appear as separate "window" in the task switcher (see the second screenshot). Can somebody in the know give me a hint? On the other hand, the callback for clicking on the notification works fine already and opens the new episodes dialog.

A related change that also prevents gPodder from stealing focus was to replace the progress indicator dialog with a HildonBanner - it might not look so good without a progress bar, but it makes gPodder less intrusive when the user interacts with other applications.

Categories: fremantle
Thomas Perl

The beloved Headphone Daemon, who usually sleeps in the darker corners of your N900 and makes sure that you do not embarrass yourself in front of other passengers or pedestrians with whatever kind of experimental music you happen to listen to when the headphones are accidentally unplugged (also known as public transport situations) got a small facelift (also known as code change).

A few changes that have accumulated over the last few months have now been packed up into the shiny new 1.9 release:

  • Support for libplayback / whitelisting (by Faheem Pervez)
  • Support for pausing Martin Grimme's MediaBox
  • Detect headphoned disconnect during active calls and send pause command after the hangup

The last one in this list might be of special interest to some of you who have complained about headphoned not working when the headphones are unplugged during a call. This won't happen now, as headphoned now monitors the call status via D-Bus and keeps track of active calls. When the headphones are unplugged while a call is active, the pause signal will not only be sent right away, but also a second time when the call gets disconnected. This work for all types of voice calls, and should work for video calls as well (untested).

During the summer holidays, I have had less time to do more development and releases, but things are starting to move slowly again - expect new releases of packages like gPodder and MaePad in the upcoming weeks. I'd also love to port gPodder to Harmattan and add a fancy new MeeGo Touch UI on top of it (in March I said that Maemo 6/MeeGo is for later this year - which might be very soon now), so you can all enjoy your favourite podcatcher with the usual native UI support. Let's hope that the Harmattan SDK and/or Harmattan developer images get released for the N900 soon (and then the Python bindings soon afterwards - the PyMaemo team was very fast in previous release cycles), so the community developers have enough time preparing their apps for the next big release.

For now, please test and enjoy this new headphoned release, and don't forget to vote for and comment on the package once you have verified the new release from Extras-Testing.

Categories: meego
Thomas Perl

I've just uploaded Panucci 0.9-alpha0 to Maemo 5 Extras-Devel. This package is the first one based on the new codebase, which includes support for sending fine-grained playback status messages to gPodder and also receive metadata about episodes from gPodder. This makes listening to podcasts and managing your listening queue even more comfortable. The following screenshots are from development versions of gPodder, but you'll soon be able to enjoy these new features with the upcoming release. Until then: Please test Panucci 0.9-alpha0 in Extras-Devel (I won't be promoting this package to -Testing yet, but report bugs against it if you try it from -Devel), so we can fix any outstanding bugs until the first final release.

So, what's working so far? gPodder gained the display of the current position and total time in the episode actions dialog:

This position information is automatically sent from the newer Panucci version (so it depends on you using Panucci for playing podcasts). Another cool side-effect is that this information will be synchronized with gpodder.net if you are logged in and have enabled synchronization, so you can finally start playing back episodes on your computer, and then pick up where you left on your mobile phone on the go. You can also view a detailed overview of what parts of an episode are played on gpodder.net:

This is really an important feature milestone for gPodder (and Panucci), and it's nice to finally have playback status and episode duration information inside gPodder. Expect a new gPodder release soon, released together with the new version of Panucci (due to the branching history of Panucci, there are some feature regressions, like missing display orientation controls, but these will be re-added in the next few weeks as we move along).

Categories: maemo 5
Thomas Perl

Streaming video to the big screen

2010-06-01 21:43 UTC  by  Thomas Perl
0
0

This is a pretty obvious hack and nothing new at all, using plain command line tools that existed for ages. Still, it might come in handy, and maybe you did not even think about it yet:

Prerequisites are a computer with an installed SSH server and mplayer or a similar media player. On your N900 (this obviously works just as well for the N800 and N810), you just need the SSH client for the first variant, and Python for the second variant. No other tools or apps are necessary.

In my case, I downloaded a video onto my N900 using gPodder, but I didn't want to watch it on the small screen, and I don't have a TV to hook it up to. So I decided to just stream the video over the network to my computer (ideally initiating the stream from the N900).

What you need to do is find out the $DISPLAY variable in your X session on the computer (:0 usually works, but strangely I'm on :4.0 with Ubuntu 10.04 here). You can do this with echo $DISPLAY in a X Terminal on the computer. Remember that value. Now, let's go to the X Terminal on the N900, cd into the folder with the videos and note the file name. To stream the video fullscreen to the computer, use a command like this: ssh username@computerip 'DISPLAY=:4.0 mplayer -fs -' < filename.mp4.

If you don't have SSH access, an alternative is to use HTTP for streaming (e.g. with VLC, which is also available on Windows and Mac OS X). The easiest way to do is (if you have Python installed, which you most likely have) to cd into the directory that you want to share (the directory and all its subdirectories will be shared - be sure to have no sensitive data there!) and use the command python -m SimpleHTTPServer for some instant HTTP server goodness on port 8000. Use VLC or a web browser on your computer to access the share. You can use Ctrl+C to stop the server.

So, if you want to browse the downloaded podcasts of gPodder on your computer, use the following command sequence in X Terminal:

cd
cd MyDocs/Podcasts
python -m SimpleHTTPServer

Now, use the web browser on your computer (connected to the same network) and access http://n900ipaddress:8000/ to get a directory listing of all downloaded content. Copy the URLs into VLC and start streaming over the air.

Usually the limiting factor here is the wireless bandwidth and the reading speed of the eMMC. Apart from that, no restrictions apply - you can easily stream HD content, as the decoding is done on your computer, and the N900 just reads the data and sends it unmodified over the network without much processing (that's why everything said here also applies to the N800 and N810 and should work just as well).

Categories: streaming
Thomas Perl

gPodder 2.6 for Maemo 5: A visual tour

2010-05-23 20:20 UTC  by  Thomas Perl
0
0

gPodder 2.6 (an app for Maemo that can subscribe to and download podcasts, YouTube videos and tracks from Soundcloud) has been released today. The package is in Extras-Testing, so please test it and vote for it! A package for Diablo (Maemo 4, N8x0) is also available already, and includes some Diablo-specific fixes (the "New episodes available" selection was broken, but works correctly now).

I've prepared some screenshots to compare the UI of gPodder 2.5 for Fremantle with the UI of gPodder 2.6. Here are a few examples:


The episode actions dialog now has a dedicated "Delete" button for downloaded episodes


The settings dialog has proper "Save" semantics now (close the dialog to discard changes, click on "Save" to apply changes) - this has been suggested during UX-Week 1


The progress bar for the episode list has rounded corners (useless, but looks better)

Another feature that isn't visible at first: If you get "New episodes available", and you can't decide from the title of an episode if it's worth downloading, just long-tap the episode and choose "Shownotes" from the context menu to display the complete shownotes in a window.

This release includes improved gpodder.net support (easier configuration, restoring of subscriptions now works on first run), and will feature more fine-grained episode playback status synchronization with the (yet-to-be-released) new version of Panucci.

Categories: maemo 5