One of the joys of open-source development is getting feedback and patches from users. One of such users sent me a very nice email about his having found Bookcase to be a useful app. This makes me happy. Said user is also Italian, and he sent a long an Italian translation. Now, http://i18n.kde.org has lots of information for translators, and lots of information for developers building translation files, but not much about how I integrate the po file into my app. Autoconf seems to pick it up automatically, but I’ve not figured out how to test it. I’ve tried:
% KDE_LANG=it bookcase
% LANG=it bookcase
% LC_MESSAGES=it bookcase
% LC_ALL=it bookcase
and nothing seems to work…hmmm…
My current area of play with Bookcase is changing the way the books are grouped. I’d like to show them grouped by author, and them change to genre, for example. I decided to cache a list of pointers to the book objects for each group. This became a bit tricky. My collection object holds a QDict, where the keys are the name of the attributes which may be used to group the books. The entry, though, is another QDict, where the keys are the values of the groups.
Now, I want to keep a list of pointers to the books which fall under this category, so I use a QPtrList of Books. So the variable becomes QDict<QDict<QPtrList<Book>>>. Typedefs made this look a bit clearer, but wow…
On top of that, since when a Book is modified or added, the QDict must be updated, I needed a way for the Book to know which lists it was in. The only implementation I could think of was the brute-force way of adding a QPtrList<QPtrList<Book>> to each Book. Then I go through and delete the Book from each QPtrList and so on…it feels monstrously inefficient, but it seems to work.
Bookcase is my little app for tracking my book collection. It’s a pretty simple program, but it keeps track of title, author, and 24 other properties for each book. I used an XML data file format, and printing uses an XSLT file for formatting, so I’m rather proud of all that. KDE makes all that pretty easy.
It has automatic ISBN validation, which I’m rather proud of as well. Multiple authors are supported, and automatic formatting of the author’s name is done.
What I still need to add is searching within the collection, and automatic lookup of book properties via the Internet though Amazon or isbn.nu.