Professional Photo Management with the Power of Open Source

digiKam digest - 2009-05-31

by Anonymous


  • roadmap to next release, finally 1.0!
  • usability fixes
  • attempt to speed up loading of thumbnails by compromise on quality,
  • after tests idea was mostly rejected; implemented “cheat scaling” for
  • generation of thumbnails
  • instead beginning of thumbnails cache separate from .thumbnails standard:
    • should give faster loading
    • thumbnails for off-line storage

  • new statistics tool
  • new tool for logs of camera operations
  • many bug and regression fixes in new Qt4 list view model
  • usability and interface fixes in Batch Queue Manager
  • preparation for overlays in Albums GUI
  • fixed auto-crop issues in Free Rotation plugin



Bug/wish count

Opened bugsOpened last weekClosed last weekChangeOpened wishesOpened last weekClosed last weekChange

Full tables:


SVN commit 972588 by aclemens:

Add example to the tooltip, too, to make it more clear how to use the
‘#’ character for example.

M +9 -7 manualrenameinput.cpp


SVN commit 972480 by cgilles:

optimize QImage scaled 2nd pass to use fast transform instead smooth
transform. Quality still here. [MM: later reverted]
BUG: 193967

M +7 -8 thumbnailcreator.cpp
M +3 -0 thumbnailcreator_p.h


SVN commit 972580 by cgilles:

Fix important bug in Camera gui:

- Race condition: Only show delete camera item dialog when all items are
really downloaded, to ask confirmation
- Factorize items deletion code to common method to avoid redondant
- Only delete items which have been downloaded and not only current
selection used to perform download.
- If items are skipped during download, take a care about and do not
process deletion of.

BUG: 171950

M +65 -81 cameraui.cpp
M +3 -0 cameraui.h
M +2 -0 cameraui_p.h


SVN commit 973443 by cgilles:

new generic history view widget

AM dhistoryview.cpp [License: GPL (v2+)]
AM dhistoryview.h [License: GPL (v2+)]


SVN commit 973434 by cgilles:

as Camera GUI, pop-up windows over taskbar bar when Batch Queue Manager
is complete

M +3 -0 queuemgrwindow.cpp


SVN commit 973428 by cgilles:

added history time column.
added pop-up menu to copy and paste history contents to clipboard

M +46 -4 logview.cpp
M +2 -0 logview.h


SVN commit 973326 by mwiesweg:

Add support for an incremental refresh.
When the album remains the same but some images are added or removed we
shall not reset the model. Instead changes are registered and proper
rowsInserted() / rowsRemoved() signals are emitted.

M +135 -5 imagemodel.cpp
M +5 -0 imagemodel.h


SVN commit 973119 by cgilles:

pop-up passive windows under taskbar to bring user when all downloading
operations are done.
BUGS: 193894

M +10 -1 cameraui.cpp


SVN commit 973071 by cgilles:

change cursor over history item if link to camera icon view is valid

M +15 -0 logview.cpp
M +4 -0 logview.h


SVN commit 973039 by cgilles:

register folder and file info from controller to history view
click on history entry move focus to right item from camera icon view

M +16 -16 cameracontroller.cpp
M +4 -4 cameracontroller.h
M +16 -8 cameraui.cpp
M +3 -2 cameraui.h


SVN commit 973032 by cgilles:

Camera Gui : new download history log view to simplify camera operations
TODO : click on history entry must move camera icon view to right item.
BUG: 158374

M +37 -7 cameraui.cpp
M +2 -0 cameraui.h
M +2 -1 cameraui.rc
M +5 -0 cameraui_p.h
AM logview.cpp [License: GPL (v2+)]
AM logview.h [License: GPL (v2+)]


SVN commit 972967 by cgilles:

Batch Queue Manager : improve busy state notification on all view

M +9 -2 assignedlist.cpp
M +1 -0 assignedlist.h
M +2 -0 queuelist.cpp
M +6 -5 queuemgrwindow.cpp
M +9 -0 queuepool.cpp
M +2 -0 queuepool.h
M +6 -0 queuesettingsview.cpp
M +2 -0 queuesettingsview.h
M +6 -0 toolsettingsview.cpp
M +2 -0 toolsettingsview.h
M +2 -1 toolslistview.cpp
M +9 -0 toolsview.cpp
M +2 -0 toolsview.h


SVN commit 973809 by mwiesweg:

Move functionality from ItemViewHoverButton’s virtual methods to
AbstractWidgetDelegateOverlay, which uses an event filter to be able to
use non-subclassed widgets.
Rename HoverWidgetDelegateOverlay to HoverButtonDelegateOverlay, it
takes a button.

M +62 -8 digikam/imagedelegateoverlay.cpp
M +6 -2 digikam/imagedelegateoverlay.h
M +3 -49 libs/widgets/common/itemviewhoverbutton.cpp
M +0 -4 libs/widgets/common/itemviewhoverbutton.h


SVN commit 973812 by mwiesweg:

Bringing back the rate-on-hover widget in icon view.
Currently still disabled, because some bits are missing

M +1 -0 CMakeLists.txt
A digikam/imageratingoverlay.cpp [License: GPL (v2+)]
A digikam/imageratingoverlay.h [License: GPL (v2+)]


SVN commit 973688 by mwiesweg:

Split the base class for showing buttons as overlay on the icon view to
have a more generic base class not confined to buttons (in preparation
for bringing the live rating widget back)

M +62 -26 imagedelegateoverlay.cpp
M +35 -8 imagedelegateoverlay.h
M +7 -7 imageselectionoverlay.cpp


SVN commit 973689 by mwiesweg:

Add a method to retrieve statistics about image formats in db.
Returns a map format -> count.
“Format” is as specified in the DB schema docs. Example:

QMap((“JPG”, 25184)(“MOV”, 2)(“MPEG”, 2)(“PNG”, 95)(“PPM”, 2)(“RAW-ARW”,
2) (“RAW-CR2”, 7)(“RAW-CRW”,7)(“RAW-DCR”, 1)(“RAW-DNG”, 2)(“RAW-MRW”,
8)(“RAW-NEF”, 6) (“RAW-ORF”, 1)(“RAW-PEF”, 2)(“RAW-RAF”, 4)(“RAW-RW2”,
2)(“RAW-X3F”, 1)(“TIFF”, 26))

M +18 -0 albumdb.cpp
M +6 -0 albumdb.h


SVN commit 973571 by cgilles:

separate progress bar and count of tasks/items

M +10 -3 queuemgrwindow.cpp
M +3 -0 queuemgrwindow_p.h


SVN commit 973496 by cgilles:

when user click on Batch Queue Manager History entry, Queue list and
processed item relevant are selected.

M +4 -4 queuelist.cpp
M +2 -1 queuelist.h
M +21 -0 queuemgrwindow.cpp
M +1 -0 queuemgrwindow.h
M +14 -0 toolsview.cpp
M +5 -0 toolsview.h


SVN commit 973486 by cgilles:

Add history view to Batch Queue Manager

M +32 -3 queuemgrwindow.cpp
M +2 -0 queuemgrwindow.h
M +10 -4 queuepool.cpp
M +2 -0 queuepool.h
M +4 -3 queuesettingsview.cpp
M +32 -3 toolsview.cpp
M +7 -0 toolsview.h


SVN commit 973464 by cgilles:

when BQM is busy, as we use current selected tab from Queue pool to
identify which queue is processed, we need to disable tab to prevent
problem if user clik on tab item.

M +6 -0 queuepool.cpp


SVN commit 973975 by aclemens:

Add a spreadsheet document to have a better overview of the modelview
porting process. It contains all the issues reported on the mailinglist.

Please update the list if issues are fixed that I might have forgotten.
I would suggest to add all newly found problems in here, too.

The mailinglist become too unreadable.



A porting2ModelView.ods


SVN commit 973970 by cgilles:

try cheat scale. It’s really faster now ???
CCBUGS: 193967

M +8 -2 thumbnailcreator.cpp


SVN commit 973959 by aclemens:

New general info list dialog. This class will be used as a base class
for ComponentsInfoDlg and DBStatsDlg.

M +1 -0 CMakeLists.txt
A libs/dialogs/infodlg.cpp [License: GPL (v2+)]
A libs/dialogs/infodlg.h [License: GPL (v2+)]


SVN commit 973947 by gateau:

Check if there is an album at startup and also init m_urlList.

Makes plugin work with Gwenview.

M +13 -0 plugin_advancedslideshow.cpp


SVN commit 973987 by cgilles:

bump digiKam version to 1.0.0-beta1
CCMAIL: digikam-devel@kde.org

M +4 -4 CMakeLists.txt
M +1 -1 NEWS
M +1 -1 digikam.lsm.cmake


SVN commit 973908 by cgilles:

New Database statistic dialog to show count of items by type mime.
screenshot : http://farm4.static.flickr.com/3615/3572850378_535a270800_o.png
BUG: 191634

M +1 -0 CMakeLists.txt
M +7 -0 digikam/componentsinfo.h
M +12 -0 digikam/digikamapp.cpp
M +1 -0 digikam/digikamapp.h
M +2 -0 digikam/digikamapp_p.h
M +2 -1 digikam/digikamui.rc
AM libs/database/dbstatdlg.cpp [License: GPL (v2+)]
AM libs/database/dbstatdlg.h [License: GPL (v2+)]


SVN commit 973904 by aclemens:

When a new album is created, don’t enter it immediately.


M +0 -1 albumfolderview.cpp


SVN commit 974006 by aclemens:

Add a link to the Qt documentation for date format settings.
There are too much variables that the can be listed here, and they might
change as well in the future.
Adding this link is a good solution I guess.

M +5 -1 manualrenameinput.cpp


SVN commit 974005 by aclemens:

Don’t hide the tooltip for the manualrename widget when it is clicked,
this was just some workaround in the past because the label was not
hidden when the window lost focus.

I will add a clickable link to the tooltip so closing it will prevent
the link from getting called.

M +0 -6 dcursortracker.cpp
M +0 -8 dcursortracker.h


SVN commit 974389 by mwiesweg:

Initial revisions for an sqlite based thumbnail database.
Not functional as of yet.

M +9 -6 CMakeLists.txt
M +15 -0 libs/database/databasebackend.cpp
M +2 -0 libs/database/databasebackend.h
A libs/database/thumbnaildatabaseaccess.cpp [License: GPL (v2+)]
A libs/database/thumbnaildatabaseaccess.h [License: GPL (v2+)]
A libs/database/thumbnaildb.cpp [License: GPL (v2+)]
A libs/database/thumbnaildb.h [License: GPL (v2+)]
A libs/database/thumbnailschemaupdater.cpp [License: GPL (v2+)]
A libs/database/thumbnailschemaupdater.h [License: GPL (v2+)]


SVN commit 974453 by aclemens:

Add more debugging info when the database could not be found. Normally
digiKam should not work correctly if this script fails, so the user
should be already aware of that.

MM +10 -5 cleanup_digikamdb


SVN commit 974368 by mwiesweg:

Crash: ThumbBarView::removeItem will delete the given item, so we must not
access it afterwards to get its ImageInfo

M +13 -11 lighttablebar.cpp
M +1 -1 lighttablebar.h


SVN commit 974475 by cgilles:

add libpgf 5.0.0 code. Not yet used. todo : make a QImage <=> pgf
interface using memory stream to pass image data

M +9 -0 CMakeLists.txt
M +7 -0 digikam/CMakeLists.txt
A libs/database/libpgf (directory)
AM libs/database/libpgf/BitStream.h [License: BSD]
AM libs/database/libpgf/Decoder.cpp [License: BSD]
AM libs/database/libpgf/Decoder.h [License: BSD]
AM libs/database/libpgf/Encoder.cpp [License: BSD]
AM libs/database/libpgf/Encoder.h [License: BSD]
AM libs/database/libpgf/PGFimage.cpp [License: BSD]
AM libs/database/libpgf/PGFimage.h [License: BSD]
AM libs/database/libpgf/PGFplatform.h [License: BSD]
AM libs/database/libpgf/PGFtypes.h [License: BSD]
AM libs/database/libpgf/Stream.cpp [License: BSD]
AM libs/database/libpgf/Stream.h [License: BSD]
AM libs/database/libpgf/Subband.cpp [License: BSD]
AM libs/database/libpgf/Subband.h [License: BSD]
AM libs/database/libpgf/WaveletTransform.cpp [License: BSD]
AM libs/database/libpgf/WaveletTransform.h [License: BSD]


SVN commit 974491 by mwiesweg:

In DigikamView, emit signalSelectionChanged(), now with the number of selected indexes,
directly, not after compressing with a timer.
This means actions can be enabled directly the correct context menu be shown.

M +17 -19 digikam/digikamapp.cpp
M +1 -0 digikam/digikamapp.h
M +1 -2 digikam/digikamview.cpp
M +1 -1 digikam/digikamview.h
M +5 -0 digikam/imagecategorizedview.cpp
M +1 -0 digikam/imagecategorizedview.h
M +4 -4 utilities/kipiiface/kipiinterface.cpp
M +1 -1 utilities/kipiiface/kipiinterface.h


SVN commit 974513 by mwiesweg:

Clear hashes here to re-count when filter changed

M +2 -0 imagefiltermodel.cpp


SVN commit 974519 by cgilles:

Added 2 methods to read/write PGF image from to QImage using QByteArray as data stream
Marcel, code is untested. Take a care…
CCMAIL: marcel.wiesweg@gmx.de

M +83 -0 thumbnaildb.cpp
M +5 -0 thumbnaildb.h


SVN commit 974514 by mwiesweg:

Call databaseForThread before touching the transaction count.
If the very first thing that a thread did in its life was creating a transaction,
the database connection would be opened just after incrementTransactionCount(),
and open() would reset the transaction counter from 1 to 0, so that all subsequent
transaction would not be committed.
(This was the case first time with the MetadataManager worker threads assigning rating,
which seemed to work because the ImageInfo was updated, but not the database)

M +3 -1 databasebackend.cpp


SVN commit 975402 by cgilles:

move qt pgf code in a dedicated class

M +1 -16 test/CMakeLists.txt
M +7 -83 test/qtpgftest.cpp
M +0 -83 thumbnaildb.cpp
M +1 -6 thumbnaildb.h
AM thumbnailpgf.cpp [License: GPL (v2+)]
AM thumbnailpgf.h [License: GPL (v2+)]


SVN commit 975405 by cgilles:

more test code. save pgf file to disk

M +20 -1 qtpgftest.cpp


SVN commit 975398 by cgilles:

new test program to check Qt PGF interface

M +2 -3 CMakeLists.txt
A test (directory)
AM test/CMakeLists.txt
AM test/qtpgftest.cpp [License: GPL (v2+)]
M +4 -5 thumbnaildb.cpp
M +2 -2 thumbnaildb.h


SVN commit 975636 by cgilles:

quality 3 sound like the best compression ratio to have the same quality than JPEG

M +1 -1 qtpgftest.cpp


SVN commit 975580 by aclemens:

First attempt to fix auto-crop: I played around with the algorithm a
little and it seems to work quite well.
Can you confirm this?



M +50 -28 freerotation.cpp


SVN commit 975533 by mwiesweg:

Be more paranoid about using m_index (only guaranteed to be valid if
widget is currently shown)

M +2 -2 imageratingoverlay.cpp


SVN commit 975618 by cgilles:

PGF Encoding work. Decoding still with Red and Blue inverted

M +14 -7 thumbnailpgf.cpp


SVN commit 975625 by cgilles:

now all work fine : PGF interface is ready to use

M +3 -3 test/qtpgftest.cpp
M +5 -7 thumbnailpgf.cpp


SVN commit 975519 by mwiesweg:

Add method to clean cached thumbnails

M +7 -0 loadingcacheinterface.cpp
M +6 -0 loadingcacheinterface.h


SVN commit 975515 by mwiesweg:

Hover rating in icon view is back!
Add the necessary connection to delegate (to not draw rating starts
beneath transparent rating box widget) and to MetadataManager via
Structure code in ImageRatingOverlay. Listen to dataChanged() for the
case that rating changes while hovering.

M +12 -0 digikamimageview.cpp
M +2 -0 digikamimageview.h
M +60 -12 imageratingoverlay.cpp
M +13 -3 imageratingoverlay.h


SVN commit 975733 by mwiesweg:

Retrieve category count from view. This is more reliable than from model
and should work in all cases now.

M +10 -6 imagecategorydrawer.cpp
M +2 -1 imagecategorydrawer.h
M +3 -2 imagedelegate.cpp
M +1 -2 imagedelegate.h


SVN commit 976018 by aclemens:

do not try to crop when angle is 0.00°

M +6 -0 freerotation.cpp



Congratulations! Will 1.0 have image versioning, a feature that was suggested by the team to be one of the criteria for bumping the version number past 1.0?

Features list isn't frozen.

Features list isn't frozen.

I’ll be coming back to read

I’ll be coming back to read any of your future articles..
Thank you for this

PPA testing repository for Ubuntu

I wonder if there is a possibility to push the new test builds of DigiKam to a PPA repository on Launchpad for all Ubuntu based distros users?

PPA repositories on Launchpad are very popular hence IMHO your program could be better tested in various environments before the final release.

You could create Your own PPA repo and push daily or weekly snapshots on it, or use one of the existing PPA.

Today I made a search on Launchpad for DigiKam packages:

And found the DigiKam Experimental repo:

What do You think?

Ubuntu repository

In my humble opinion is that I believe to strict upstream-downstream development. It is distributors job to compile packages for their distribution so their users get easier install. If distributors do not have time or man power to compile packages, then there is volunteers among it's users who can do it for others.

And I do not like much about Ubuntu's launchpad because someway it just seems to disturb upstream development because of Ubuntu fans. But that is too just my personal opinion.

I believe that there is one digiKam developer who use Ubuntu so if the "official" deb packages are needed, then I suggest to turn to Canonical side.

dngconverter plugin

I'm using the dngconverter plugin, when opening the resulting dng files with ufraw it tells me there is no camera whitebalance and it's using fallback to auto. Is this a restriction of the dng format or a feature not yet implemented in the converter? I'm converting from canon cr2 raw format using the standalone plugin, no jpeg thumbnail and lossless compression enabled. Starting the plugin from within digikam I get the same results. I'd like to use dng for all my photos as the space savings are quite significant if you sum it up. I use openSUSE 11.1 64bit and packages from KDE:KDE4:Factory:Desktop repository, kipi-plugins version is 0.3-14.4