[Digikam-devel] Re: Needing ideas for Rosedu's Open Source Development Course

Michael G. Hansen mike at mghansen.de
Wed Jan 5 12:02:24 GMT 2011


On 01/05/2011 12:36 PM, Gilles Caulier wrote:
> 2011/1/5 Gabriel Voicu<ping.gabi at gmail.com>
>
>> Hi Gilles,
>>
>> Thank you very much for this long answer! I will speak today with the
>> organisers and see what they have to say.
>>
>> Also, be sure that I was not thinking in starting a junior job project
>> inside digikam's core, because it's under heavy development for the 2.0
>> version. The ideal project would be modifying a GUI for a plugin(album or
>> KIPI, doesn't matter).
>> Do you have in mind a plugin that should need GUI refactoring? If yes,
>> please let me know, because I couldn't find any example on Bugzilla.
>>
>
> FIRST IDEA :
> ---------------
>
> yes, some plugins need factoring about image list widget:
>
> - DNG converter.
>
> http://websvn.kde.org/trunk/extragear/graphics/kipi-plugins/dngconverter/plugin/clistviewitem.h?revision=1194262&view=markup
>
> - Batch RAW Converter.
>
> http://websvn.kde.org/trunk/extragear/graphics/kipi-plugins/rawconverter/clistviewitem.h?revision=1040597&view=markup
>
> - IPodExport
>
> http://websvn.kde.org/trunk/extragear/graphics/kipi-plugins/ipodexport/IpodListItem.h?revision=1033800&view=markup
>
> All these tools use a dedicated list widget of items to process.
>
> The common widget is KipiPlugins::ImagesList :
>
> http://websvn.kde.org/trunk/extragear/graphics/kipi-plugins/common/libkipiplugins/widgets/imageslist.h?revision=1181681&view=markup
>
> It's already used here for ex :
>
> http://websvn.kde.org/trunk/extragear/graphics/kipi-plugins/sendimages/imagespage.cpp?revision=1058617&view=markup
>
> http://websvn.kde.org/trunk/extragear/graphics/kipi-plugins/picasawebexport/picasawebimglist.h?revision=1114544&view=markup
>
> http://websvn.kde.org/trunk/extragear/graphics/kipi-plugins/expoblending/importwizard/itemspage.cpp?revision=1069270&view=markup

I have already a model-view 'ported' version of KipiPlugins::ImageList 
that I used in gpssync. At first I kept it general, but then specialized 
it for gpssync, but of course one could de-specialize it easily and 
merge it into the other plugins. I think the only specialization is that 
kipiimageitem has not virtual functions any more.

http://websvn.kde.org/branches/extragear/graphics/digikam/extra/kipi-plugins/gpssync/kipiimagelist.cpp?view=log

Another more easy task:
In gpssync, we currently load only gpxfiles, and merge all the tracks. 
Here, one could easily extend the loading code to keep track of 
individual tracks, and also support kml files, as they are also XML. The 
code for this is currently supplied in only a few classes, and the task 
would include writing unit-tests (some already exist) to prove that the 
classes work as expected (time zones, different gps receivers, 
multitasking on one/many cores, etc). The next step would be to display 
the gpx/kml files and their tracks in a list in gpssync:

GPX-file-a
-- track 1
-- track 2
-- track 3
GPX-file-b
-- track-1
-- track-2

The user should be able to remove files or individual tracks from the 
list, or select some to be used for correlation. Later, we also want to 
display these tracks on the map, so a visible/invisible button would be 
nice, but display on the map would be outside of the scope of this project.

Since this should also be model-view based, the list can also be 
demonstrated to work in a simple test application, with a window 
containing only the list. If one wants to, all the loading/model code 
could be grouped to appear to the outside as coherent as a library, to 
be later moved into libkmap, as the code could be used inside digikam, 
too. For this task, one would learn about sax-style xml parsing and 
model/view programming in Qt.

http://websvn.kde.org/branches/extragear/graphics/digikam/extra/kipi-plugins/gpssync/gpsdataparser.cpp?view=log

Another idea would be to develop a unified export plugin. This, however, 
would be a much more advanced task. The idea would be that one dialog 
has all common configuration options for export, like resizing, deleting 
of personal information, etc., and that each export backend then 
supplies a dialog with special options, like login, visibility to other 
people, etc. For each export backend which is configured, the plugin 
could export an action to the menu. Then the user would only see menu 
entries for exports that he actually uses. Here, one group could code on 
the main dialog, with the other groups working on porting the individual 
export plugins to it. But of course, everything would depend on the 
'core' group.

Michael



More information about the Digikam-devel mailing list