Dates

Dates is a small, lightweight calendar that shares data with GNOME Evolution. Dates features an innovative, unified, zooming view and is designed for use on hand-held devices, such as the Nokia 770 or the Sharp Zaurus series of PDAs.

Screenshots

Download

Dates source and pre-built packages are available for Debian, Ubuntu and the Nokia internet tablets. For links and further details, visit the official Dates project page.

Dates is also available from the public OpenedHand subversion repository. To downloaded the latest development code, type:

svn co http://svn.o-hand.com/repos/dates/trunk dates

on the command line. You can also browse the repository.

libjana fixed up for rapid application development

Just finished fixing up libjana-gtk to work nicely with glade-3. When compiled with --enable-glade, a glade-3 catalog file will be installed and some work-arounds will be enabled in the code that allow the widgets to be used nicely inside glade-3, allowing easy creation of GtkBuilder/libglade xml UI description files.

Also, thanks to Thomas Wood's GSOC student pointing out that they were broken, and Emmanuele Bassi showing me exactly what was broken about them, I've fixed the libjana{-ecal,-gtk} vala bindings. Unfortunately, I've not had the time to test them, but they look correct :)

The plan is to use vala and glade-3/GtkBuilder in Dates2, as I get the time to work on it. Hopefully some other people might start playing with it though, as I really think libjana* lowers the barrier of entry for using PIM data via evolution-data-server in GTK applications. Just look what's possible!:


Click to zoom

Time for a libjana-based gnome clock applet?

Just read Federico's post about how intlclock draws its map and calculates the sunlight time. That's a pretty incredible amount of overkill! Maybe they should look at the code in the JanaGtkWorldMap widget, that I personally think looks at least as nice :)

JanaGtkWorldMap draws directly with cairo calls, using data from sunclock (the format of which is derived from xearth, apparently) - one linear gradient for the sea, filled polygons for the land mass shadows, then an extra set of filled polygons on top of that. The sunlight curve is a simple curve equation, rather than ray-tracing (which probably isn't quite as accurate, no, but at this level it really doesn't matter), components of which are cached on initialisation. Drawing happens in a (interruptable) thread so the widget never blocks for any significant amount of time, and after drawing once, the result is stored to a back-buffer.

On top of this, as the widget changes size, it does adaptive LOD to reduce the amount of points being drawn. The widget has an option to render at a static size and scale that rendering instead of re-rendering when the size changes. It also has API to put custom markers on top of the map and widgets can be packed inside it. Drawing code could easily be replaced by gdk calls to boost speed (and I may well do this, cairo is slow :(). I'd like to think the API is easy to use too... Any takers?

Splitting up with libjana

Jana (libjana, libjana-ecal and libjana-gtk + tests and examples) are now in their own separate repository, away from openmoko-dates2. I doubt anyone has checked them out, but just in case, new repository URLs:

https://svn.o-hand.com/repos/jana/trunk
https://svn.o-hand.com/repos/dates/branches/openmoko2

It is also now configured and installed as a dynamic library. As multiple applications are using it (openmoko-dates, openmoko-today, openmoko-worldclock) and it gradually increases in size and functionality, it makes less sense to link it statically. I'll try and update my PPA on the weekend with some more of these OpenMoko applications, but no promises - my desktop computer is temporarily broken (:() and Metroid Prime 3 is out this Friday (:)).

I did take on some of the 'suggestions' made in my previous blog with the digital clock in libjana-gtk, but I'm going to refrain from posting a screenshot. If anyone's genuinely interested in helping (either with patches, or real criticism), they're more than welcome :) Thinking of patches, Iain wrote an excellent patch for JanaGtkWorldMap that I hope to integrate tomorrow and use in the world clock application...

Unfortunately, didn't get too much done today, just been one of those days... Think I might be coming down with something again, was a heck of a struggle to get out of bed this morning :/ Looking forward to a relaxing weekend. On the subject, last weekend I went back down to Southampton to visit a couple of friends, and got to complete Portal. Which is just about the best game I've played in years, definitely a reason to either own an Xbox 360 or a reasonable PC running Windows (seriously!) It just about off-sets the disappointment that is the Halo 3 single-player/cooperative campaign... And it was good to see uni friends again of course.

libjana knows when you sleep

New widget: JanaGtkWorldMap



A world-map widget that (optionally) shows the daylight hours for a given time/date. Like the clock (also featured in the corner), it's fully scalable and uses theme colours. Has functions to translate back and forth between latitude/longitude and x/y too, so I'm expecting a libjana-gtk/gypsy mash-up from a certain Mr. Burton (no pressure) :)

libjana knows what time it is

New widget: JanaGtkClock



Not quite finished, digital mode doesn't work yet. Will get it sorted later in the week.

Try out openmoko-dates

Ok, I realise that dev packages, even with doc packages, are pretty useless without examples... So I took a little time today and packaged up the tests and examples, libmokoui2 (with documentation) and openmoko-dates, and added them to my repository. So if you liked Dates before, perhaps you want to try out openmoko-dates, or check out the new back-end library. I'd like to think that libjana is the calendaring/time equivalent to libempathy; please don't make me cry that I'm wrong :)
Also, a friend pointed out that I got the source lines wrong yesterday (after I asked him to test it..), so here are the proper ones:

deb http://ppa.launchpad.net/cwiiis/ubuntu gutsy main restricted universe multiverse
deb-src http://ppa.launchpad.net/cwiiis/ubuntu gutsy main restricted universe multiverse

Feedback would really be appreciated!

libjana packages for Ubuntu gutsy

Thanks to Ubuntu's new Personal Package Archives, there are now libjana packages available for Ubuntu gutsy. I haven't packaged openmoko-dates/libmokoui yet as there's a critical bug in MokoFingerScroll I only noticed yesterday (I'd been developing on a dual-core laptop previously, which seems to mask the bug...) that stops it from being useful. I will add libmokoui, openmoko-dates and perhaps more openmoko bits when I get the time. I also haven't packaged the examples/tests yet as I just haven't had the time/inclination to sort it out, but I will in due course (meanwhile, check out the svn).
Anyway, if you want to try out any of the libjana bits, the development files and documentation are all packaged and ready to go. The libraries are compiled static (and the pkg-config files reflect this, so it's not something you need to worry about), as they're pretty small and not really ready to be used as a dll. The documentation is accessible through devhelp when installed. The /etc/apt/sources.list lines:

deb     http://ppa.launchpad.net/cwiiis/ubuntu main restricted universe multiverse
deb-src http://ppa.launchpad.net/cwiiis/ubuntu main restricted universe multiverse

Suggestions for new widgets to add, bugs, patches and so on are all gratefully accepted :) (oh, and recurrence support is in btw)

libjana documentation

Was going to get my hair dreaded today, but it ends up it's still a couple of inches too short :( So spent most of the day watching Bones and filling in the blanks for the documentation of libjana. 100% symbol docs coverage :) (libjana-ecal and libjana-gtk to follow in the near future) This means that all the info is there if you wanted to write a new back-end for libjana, say, for example, xmltv for TV listings, or GPE, or whatever KDE uses, etc. It also means you could write interface widgets for another toolkit, like Qt, EFL, or Clutter. No excuses for people not to be doing my work for me now, hop to it! In all seriousness though, libjana[-ecal|-gtk] may be something you want to consider if you're writing an application to interoperate with calendar data on the GNOME desktop and you've seen what using libecal is like. I'll try and write something a bit more substantial about it at some point.

[Update]: libjana-ecal documentation complete

OpenMoko Dates - Second shots!

Thomas already stole my thunder on this one, but a lot of progress has been made since that post. It still isn't done, but it's approaching usable (note: approaching, not reached quite yet imho). I just 'finished' colour-category support today, where unique (but determinate) colours are assigned to each category, automatically. Also, Marcin's post had some nasty comments on digg about the OpenMoko theme (which I mostly disagree with), so to show that it's all academic at this stage anyway, I've taken some screenshots in Clearlooks. Enjoy:

All-day events in day/week view

Bug #126, fixed in Dates jana branch, r571: