Re: [Evolution-hackers] Rethinking account management



Another status update:

After much consideration I decided to drop GSettings from the equation
and just access key files directly.  The key file part of the design is
working out well but I've been fighting with GSettings every step of the
way.  It's not that that GSettings is bad, but it's very much designed
for dconf and not key files.  Especially the way I'm using key files.

The straw that broke the camel's back was in trying to figure out how to
localize the display names of built-in top-level key files like "On This
Computer" and "On LDAP Servers".  The GSettings API has no equivalent to
g_key_file_get_locale_string() so I was falling back to a similar hacky
solution as e_source_list_ensure_group().  But with GSettings out of the
way we can have the built-in key files translated through intltool just
as we would for desktop files, and call g_key_file_get_locale_string()
to get the appropriate localized display name.

End result (this the 'system' key file):

        [Data Source]
        Parent=local
        DisplayName=Personal
        DisplayName[ar]=ﺶﺨﺼﻳ
        DisplayName[as]=ব্যক্তিগত
        DisplayName[ast]=Personal
        DisplayName[be]=Пэрсанальнае
        DisplayName[bg]=Лични
        DisplayName[bn]=ব্যক্তিগত
        DisplayName[bn_IN]=ব্যক্তিগত
        DisplayName[ca]=Personal
        DisplayName[ca valencia]=Personal
        DisplayName[cs]=Osobní
        DisplayName[cy]=Personol
        DisplayName[da]=Personligt
        DisplayName[de]=Persönlich
        DisplayName[dz]=རང་དོན།
        ...etc...

I don't have translations yet for the other key files (the translations
I need are all in Evolution, not E-D-S) but you get the idea.  Note the
key file syntax looks normal again and doesn't use GVariant quoting.

Changes to the API I posted earlier [1] are minimal since the GSettings
interaction was pretty well hidden.  Obviously e_source_get_settings()
is gone, as are the schema files.  The schema for a key file group is
instead derived from the GParamSpec structures of the corresponding
ESourceExtension subclass.  More about that later.


[1] http://mail.gnome.org/archives/evolution-hackers/2010-December/msg00030.html



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]