[Kde-finance-apps] Porting KLocale::formatMoney()/readMoney() to Qt5/KF5, best practise?

Friedrich W. H. Kossebau kossebau at kde.org
Wed Jan 6 18:14:26 GMT 2016


Hi Klaas,

Am Mittwoch, 6. Januar 2016, 10:06:48 schrieb Klaas Freitag:
> On 06.01.2016 08:12, Friedrich W. H. Kossebau wrote:
> > QUESTIONS
> > 
> > How have developers of e.g. Skrooge & KMyMoney approached the issue of
> > conversion of currency values to/from strings?
> 
> The outcome of the KDE finance group so far is a lib called alkimia
> which was set up by the KMyMoney people, which is awesome. There you
> find a very powerful class AlkValue for financial numbers. And this one
> has a constructor that parses a QString. Maybe that is already enough
> for parsing?!

Ah, interesting, thanks for the pointer.
Had a quick look, but seems the parsing does not handle any currency 
symbols/terms, so sadly not up for the requirements we have in Sheets and Plan 
(e.g. things like "15 EUR" and "€ 15.10" should be correctly parsed in German 
locale, perhaps even "DM" variants additionally. And bitcoin & co. and 
regional non-state currencies would be nice to see supported as well in some 
way).

> About formatting, yes, QLocale is really limited, found that out during
> my KF5 porting actions of Kraft as well. Not only for currency, but also
> for dates.

Calligra Plan I managed to port completely to QLocale's dates API, as using 
just the gregorian calendar was no regression.
Well, modulo a few locale-dependent bugs the unit tests are showing on CI, it 
is anything but an easy port from KDateTime::Spec & Co. to Qt::TimeSpec... :)
 
> > Do you know about any activities to improve QLocale here?
> > 
> > Seems that Calligra apps Plan & Sheets are the only KDE apps using
> > KLocale::readMoney() ?
> > https://lxr.kde.org/ident?v=stable-qt4&_i=readMoney&_remember=1
> > 
> > But KLocale::formatMoney() might be used by KMyMoney, Skrooge, Kraft &
> > others (did not check though if not custom code):
> > https://lxr.kde.org/ident?v=stable-qt4&_i=formatMoney&_remember=1
> 
> Yes, and I do not konw how to solve that yet. What you described above
> might be the best option, but, as said, doesn't that apply to dates as
> well?

Only needed for dates if one deals with non-gregorian calendars, from what I 
understood. Not an expert though, only diving into this now.

> On a site note, KDE4 Kraft can deal with two different Locales, the one
> it was started with, and one for the specific document. That way you can
> write a lets say dutch invoice on a german desktop. That is nice, but I
> almost decided to drop that feature for KF5. Would be great if I could
> keep it.

One can create multiple QLocale instances and specify the locale for each, so 
I see nothing preventing such a thing :)

Calligra apps do they same, the UI locale does not need to be the same as for 
the content. Whole documents can have a locale assigned, and then even 
subparts different ones again.

Cheers
Friedrich



More information about the calligra-devel mailing list