Q To-Do is my to-do list application. In this post I show some screenshots of the current state of Q To-Do on Sailfish OS.
Porting an existing QML application to Sailfish is actually very straight forward. Very much of the Q To-Do UI already works as expected. The reason why I didn’t make even more progress is simply that I couldn’t invest that much time as I was very busy with other things. In this post just gives a brief preview of the work in progress.
I like the look and feel of the Sailfish UI very much. So far, there is just the SDK and the Emulator but I think the current state already looks very promising. I am very much looking forward to test Q To-Do and my other applications on a real device.
Due to an embarrassing error in test2junit I had to quickly release another version. The current version 1.0.1 fixes the problem and is available from clojars.org. The readme at github had been updated as well.
I like test-driven development very much. Over time the number of test cases grows and grows. As one consequence, it may become difficult to keep the overview of the results.
As a simple mean to get an overview of my test results I use the HTML pages as generated by the junitreport Ant task. This is IDE independent and works very well for Java projects. However, for Clojure, I didn’t find anything comparable yet, at least not for the standard Clojure unit testing framework in clojure.test.
With clojure.test, there is the option to emit output in some sort of JUnit format. Yet, I found that it cannot be used with junitreport as-is and it lacks some, in my opinion important, information (like timestamps or the duration of tests). Furthermore, I wanted to have some automatism for comfortably generating the HTML formated test results.
After some digging around, I eventually decided to write my first Leiningen plug-in: test2junit. test2junit automatically generates test results in an “improved” (as compared to standard clojure.test.junit way) JUnit XML format without the need to modify the existing test cases. It optionally executes Ant in order to create the final HTML report.
test2junit is hosted at github: https://github.com/ruedigergad/test2junit You can also get the current version from clojars.org. An exemplary output of an HTML test report generated from XML files emitted by test2junit can be seen here: http://ruedigergad.github.com/clj-assorted-utils/test-results/html/
PS: Great thanks to technomancy in #leiningen @freenode who helped me a lot by pointing me into the right direction for solving some “advanced” Leiningen plug-in challenges.
With the latest Plasma Active rootfs tarball for Nexus 7 there is also working Jabber/XMPP. I didn’t notice this at first as the system time was set two years in the past and due to this the certificate for the Jabber server was silently failing.
Essentially, instant messaging functionality is provided via telepathy. This way different IM protocols (like Jabber/XMPP or ICQ) can be used. Right now there is “just” support for Jabber/XMPP working in the current Plasma Active version.
The tools/apps used for getting everything to work are the apps from Nemomobile: accounts-ui and qmlmessages (“Messages” in apps view). Both come pre-installed with the latest Plasma Active Nexus 7 rootfs tarball.
I set up Jabber/XMPP as follows:
- Open the “accounts-ui” app.
- Add a new XMPP account (first field is email@example.com, second field is the password).
- Click the newly created account.
- In the menu chose first “Enable” and afterwards “Request Online”.
- Refresh. You should see your presence (in the field “Current:”) change to “available”.
Make sure that your system time is set properly and that your jabber-server has a valid SSL certificate. Self-signed certificates (e.g., as is the case for jabber.org) won’t work. Also note that you won’t get feedback if something with the certificate is wrong. It will simply appear to be stuck in changing your presence.
To chat open the qmlmessages (“Messages” in apps view) app and start a chat with someone. The “To:” name is firstname.lastname@example.org.
I uploaded a new rootfs tarball of Plasma Active for Nexus 7. You can get it from here: http://files.kde.org/plasma/active/3.0/images/nexus7/ The latest version is “plasma-active-nexus7-testing-mer-latest-2013-03-12.tar.gz“. There you can also get the according .ks files.
Some changes are:
- Integrated nemo-compatibility (You can directly install Nemo apps via zypper and run those.). Please note that for some Nemo apps the icons are not shown correctly.
- Some pre-installed Nemo apps like: Twimgo (Twitter client), Kasvopus (Facebook client), Q ToDo (todo list app), MeePasswords (password manager).
- Firmware Installer for Bluetooth (You need to install the “nexus7-fw-installer” package and run “/usr/sbin/nexus7-fw-install” and follow the instructions.)
- Fix for the Rendering Issue in the App Switcher
- Use the touch version of Marble.
Below are the steps I used for installing and testing this new rootfs tarball. Please note that you are doing everything on your own risk and responsibility and that you will loose the warranty for your Nexus 7 by doing this.
# Prerequisite is that you downloaded and extrated the Nexus 7 MOSLO and changed to the directory in which the MOSLO zImage and initrd are located.
# Start the Nexus 7 with the volume down button pressed.
# When "Start" is shown, attach the Nexus 7 to your computer via USB.
fastboot -c "console=tty1" boot zImage-moslo initrd-moslo
# Wait until the MOSLO has booted and the userdata partition was exported.
# You can check the dmesg output on your computer to see if a new USB device showed up.
# Change /dev/sdX as required.
# I assume that you already have a directory /mnt/foo.
mount /dev/sdb /mnt/foo/
tar xf /plasma-active-nexus7-testing-mer-latest-2013-03-12.tar.gz -C /mnt/foo/
cp /mnt/foo/boot/zImage /tmp/
# Reboot to the loader with the "Start" screen by keeping the powerbutton and volume down button pressed.
fastboot -c "ro console=tty1 rootwait rootfstype=ext4 root=/dev/mmcblk0p9" flash:raw boot /tmp/zImage
# For the 3G model change /dev/mmcblk0p9 to /dev/mmcblk0p10
# Detach USB and start.
On Sunday, I uploaded a new version of clj-assorted-utils to github. This version features an improved counter and a convenience function for processing input line-by-line.
Another great news, imho, is that now there is autogenerated API documentation. You can get the documentation either by cloning the project from github or use it online at: http://ruedigergad.github.com/clj-assorted-utils/
Also, great thanks to Dominic who showed how to publish a subdirectory as gh-pages. http://happygiraffe.net/blog/2009/07/04/publishing-a-subdirectory-to-github-pages/
Just a short note to myself: I found the following snippets useful when debugging telepathy.
# When debugging via SSH prepend with: DISPLAY=:0
# All run as user.
# First step: see what's going on on dbus.
# Debug gabble (jabber/XMPP).
# GABBLE_LOGFILE should be optional.
GABBLE_LOGFILE=/tmp/gabble.log GABBLE_PERSIST=1 GABBLE_DEBUG=all G_MESSAGES_DEBUG=all /usr/libexec/telepathy-gabble
# Debug mission control.
G_MESSAGES_DEBUG=all MC_DEBUG=1 MC_TP_DEBUG=all /usr/libexec/mission-control-5