SVN commit 628885 by cgilles:
digikam from trunk : connect batch Album Icon View actions to progress bar (on status bar of Album GUI). Actions are listed below : - Assign Tags by drag and drop - Assign Tags by pop-up menu - Remove Tags by pop-up menu - Assign Rating by Pop-up menu or Shortcuts. - Fix Exif orientation tag. Marcel, MetadataHub connection still todo in AlbumIconView. i have tagged source code with TODO annotations where MetadataHub must be used. Can you take a look ? CCMAIL: [hidden email], [hidden email] M +94 -5 albumiconview.cpp M +3 -1 albumiconview.h M +6 -0 digikamview.cpp M +19 -3 iconview.cpp M +5 -2 iconview.h --- trunk/extragear/graphics/digikam/digikam/albumiconview.cpp #628884:628885 @@ -6,7 +6,7 @@ * Description : album icon view * * Copyright 2002-2005 by Renchi Raju and Gilles Caulier - * Copyright 2006 by Gilles Caulier and Marcel Wiesweg + * Copyright 2006-2007 by Gilles Caulier and Marcel Wiesweg * * This program is free software; you can redistribute it * and/or modify it under the terms of the GNU General @@ -116,6 +116,7 @@ #include "albumiconitem.h" #include "albumicongroupitem.h" #include "loadingcacheinterface.h" +#include "statusprogressbar.h" #include "albumiconview.h" #include "albumiconview.moc" @@ -1157,6 +1158,7 @@ { QByteArray ba = event->encodedData("digikam/tag-id"); QDataStream ds(ba, IO_ReadOnly); + int i = 0; int tagID; ds >> tagID; @@ -1197,40 +1199,62 @@ { case 10: // Selected and Dropped Items { + emit signalProgressBarMode(StatusProgressBar::ProgressBarMode, + i18n("Assign tag to pictures. Please wait...")); + + float cnt = (float)countSelected(); for (IconItem *it = firstItem(); it; it = it->nextItem()) { if (it->isSelected()) { AlbumIconItem *albumItem = static_cast<AlbumIconItem *>(it); albumItem->imageInfo()->setTag(tagID); + // TODO: add MetadataHub call here. + emit signalProgressValue((int)((i++/cnt)*100.0)); + kapp->processEvents(); } } AlbumIconItem *albumItem = findItem(event->pos()); if (albumItem) + { albumItem->imageInfo()->setTag(tagID); + // TODO: add MetadataHub call here. + } d->imageLister->refresh(); updateContents(); + emit signalProgressBarMode(StatusProgressBar::TextMode, QString::null); break; } case 11: // All Items { + emit signalProgressBarMode(StatusProgressBar::ProgressBarMode, + i18n("Assign tag to pictures. Please wait...")); + + float cnt = (float)count(); for (IconItem *it = firstItem(); it; it = it->nextItem()) { AlbumIconItem *albumItem = static_cast<AlbumIconItem *>(it); albumItem->imageInfo()->setTag(tagID); + // TODO: add MetadataHub call here. + emit signalProgressValue((int)((i++/cnt)*100.0)); + kapp->processEvents(); } d->imageLister->refresh(); updateContents(); + emit signalProgressBarMode(StatusProgressBar::TextMode, QString::null); break; } case 12: // Dropped Item only. { AlbumIconItem *albumItem = findItem(event->pos()); if (albumItem) + { albumItem->imageInfo()->setTag(tagID); + // TODO: add MetadataHub call here. + } d->imageLister->refresh(); updateContents(); @@ -1245,6 +1269,7 @@ { QByteArray ba = event->encodedData("digikam/taglist"); QDataStream ds(ba, IO_ReadOnly); + int i = 0; QValueList<int> tagIDs; ds >> tagIDs; @@ -1277,6 +1302,10 @@ { case 10: // Selected and Dropped Items { + emit signalProgressBarMode(StatusProgressBar::ProgressBarMode, + i18n("Assign tags to pictures. Please wait...")); + + float cnt = (float)countSelected(); for (IconItem *it = firstItem(); it; it = it->nextItem()) { if (it->isSelected()) @@ -1286,7 +1315,11 @@ it != tagIDs.end(); ++it) { albumItem->imageInfo()->setTag(*it); + // TODO: add MetadataHub call here. } + + emit signalProgressValue((int)((i++/cnt)*100.0)); + kapp->processEvents(); } } @@ -1297,15 +1330,21 @@ it != tagIDs.end(); ++it) { albumItem->imageInfo()->setTag(*it); + // TODO: add MetadataHub call here. } } - + + emit signalProgressBarMode(StatusProgressBar::TextMode, QString::null); d->imageLister->refresh(); updateContents(); break; } case 11: // All Items { + emit signalProgressBarMode(StatusProgressBar::ProgressBarMode, + i18n("Assign tags to pictures. Please wait...")); + + float cnt = (float)count(); for (IconItem *it = firstItem(); it; it = it->nextItem()) { AlbumIconItem *albumItem = static_cast<AlbumIconItem*>(it); @@ -1313,9 +1352,14 @@ it != tagIDs.end(); ++it) { albumItem->imageInfo()->setTag(*it); + // TODO: add MetadataHub call here. } + + emit signalProgressValue((int)((i++/cnt)*100.0)); + kapp->processEvents(); } - + + emit signalProgressBarMode(StatusProgressBar::TextMode, QString::null); d->imageLister->refresh(); updateContents(); break; @@ -1329,6 +1373,7 @@ it != tagIDs.end(); ++it) { albumItem->imageInfo()->setTag(*it); + // TODO: add MetadataHub call here. } } @@ -1471,6 +1516,7 @@ void AlbumIconView::slotSetExifOrientation( int orientation ) { KURL::List urlList; + int i = 0; for (IconItem *it = firstItem(); it; it=it->nextItem()) { @@ -1484,6 +1530,9 @@ if (urlList.count() <= 0) return; KURL::List::Iterator it; + float cnt = (float)urlList.count(); + emit signalProgressBarMode(StatusProgressBar::ProgressBarMode, + i18n("Fix Exif Orientation tag on pictures. Please wait...")); for( it = urlList.begin(); it != urlList.end(); ++it ) { @@ -1503,8 +1552,12 @@ { ImageAttributesWatch::instance()->fileMetadataChanged((*it)); } + + emit signalProgressValue((int)((i++/cnt)*100.0)); + kapp->processEvents(); } + emit signalProgressBarMode(StatusProgressBar::TextMode, QString::null); refreshItems(urlList); } @@ -1827,6 +1880,12 @@ void AlbumIconView::slotAssignTag(int tagID) { + emit signalProgressBarMode(StatusProgressBar::ProgressBarMode, + i18n("Assign tag to pictures. Please wait...")); + + int i = 0; + float cnt = (float)countSelected(); + for (IconItem *it = firstItem(); it; it = it->nextItem()) { if (it->isSelected()) @@ -1839,6 +1898,8 @@ info->setTag(tagID); + // TODO: fix this part to use MetadataHub instead. + // Store Image Tags like Iptc keywords tag. if (AlbumSettings::instance()) @@ -1855,14 +1916,24 @@ ImageAttributesWatch::instance()->fileMetadataChanged(info->kurl()); } } + + emit signalProgressValue((int)((i++/cnt)*100.0)); + kapp->processEvents(); } } + emit signalProgressBarMode(StatusProgressBar::TextMode, QString::null); updateContents(); } void AlbumIconView::slotRemoveTag(int tagID) { + emit signalProgressBarMode(StatusProgressBar::ProgressBarMode, + i18n("Remove tag from pictures. Please wait...")); + + int i = 0; + float cnt = (float)countSelected(); + for (IconItem *it = firstItem(); it; it = it->nextItem()) { if (it->isSelected()) @@ -1875,6 +1946,8 @@ info->removeTag(tagID); + // TODO: fix this part to use MetadataHub instead. + // Update Image Tags like Iptc keywords tags. if (AlbumSettings::instance()) @@ -1891,9 +1964,14 @@ ImageAttributesWatch::instance()->fileMetadataChanged(info->kurl()); } } + + emit signalProgressValue((int)((i++/cnt)*100.0)); + kapp->processEvents(); } } + emit signalProgressBarMode(StatusProgressBar::TextMode, QString::null); + if (d->currentAlbum && d->currentAlbum->type() == Album::TAG) { d->imageLister->refresh(); @@ -1903,16 +1981,23 @@ void AlbumIconView::slotAssignRating(int rating) { - rating = QMIN(5, QMAX(0, rating)); + emit signalProgressBarMode(StatusProgressBar::ProgressBarMode, + i18n("Assign rating to pictures. Please wait...")); + + int i = 0; + float cnt = (float)countSelected(); + rating = QMIN(5, QMAX(0, rating)); for (IconItem *it = firstItem() ; it ; it = it->nextItem()) { if (it->isSelected()) { AlbumIconItem *albumItem = static_cast<AlbumIconItem *>(it); - ImageInfo* info = albumItem->imageInfo(); + ImageInfo* info = albumItem->imageInfo(); info->setRating(rating); + // TODO: fix this part to use MetadataHub instead. + // Store Image rating as Iptc tag. if (AlbumSettings::instance()) @@ -1925,9 +2010,13 @@ ImageAttributesWatch::instance()->fileMetadataChanged(info->kurl()); } } + + emit signalProgressValue((int)((i++/cnt)*100.0)); + kapp->processEvents(); } } + emit signalProgressBarMode(StatusProgressBar::TextMode, QString::null); triggerUpdate(); } --- trunk/extragear/graphics/digikam/digikam/albumiconview.h #628884:628885 @@ -6,7 +6,7 @@ * Description : album icon view * * Copyright 2002-2005 by Renchi Raju and Gilles Caulier - * Copyright 2006 by Gilles Caulier and Marcel Wiesweg + * Copyright 2006-2007 by Gilles Caulier and Marcel Wiesweg * * This program is free software; you can redistribute it * and/or modify it under the terms of the GNU General @@ -120,6 +120,8 @@ void signalItemsAdded(); void signalItemDeleted(AlbumIconItem*); void signalCleared(); + void signalProgressBarMode(int, const QString&); + void signalProgressValue(int); public slots: --- trunk/extragear/graphics/digikam/digikam/digikamview.cpp #628884:628885 @@ -247,6 +247,12 @@ connect(d->folderView, SIGNAL(signalAlbumModified()), d->iconView, SLOT(slotAlbumModified())); + connect(d->iconView, SIGNAL(signalProgressBarMode(int, const QString&)), + d->parent, SLOT(slotProgressBarMode(int, const QString&))); + + connect(d->iconView, SIGNAL(signalProgressValue(int)), + d->parent, SLOT(slotProgressValue(int))); + // -- Sidebar Connections ------------------------------------- connect(d->leftSideBar, SIGNAL(signalChangedTab(QWidget*)), --- trunk/extragear/graphics/digikam/digikam/iconview.cpp #628884:628885 @@ -1,9 +1,11 @@ /* ============================================================ - * Author: Renchi Raju <[hidden email]> - * Date : 2005-04-24 + * Authors: Renchi Raju <[hidden email]> + * Caulier Gilles <caulier dot gilles at kdemail dot net> + * Date : 2005-04-24 * Description : - * + * * Copyright 2005 by Renchi Raju + * Copyright 2006-2007 by Gilles Caulier * * This program is free software; you can redistribute it * and/or modify it under the terms of the GNU General @@ -235,6 +237,20 @@ return c; } + +int IconView::countSelected() const +{ + int c = 0; + for (IconGroupItem* group = d->firstGroup; group; group = group->nextGroup()) + { + for (IconItem *it = group->firstItem(); it; it = it->nextItem()) + if (it->isSelected()) + c++; + } + + return c; +} + int IconView::groupCount() const { int c = 0; --- trunk/extragear/graphics/digikam/digikam/iconview.h #628884:628885 @@ -1,9 +1,11 @@ /* ============================================================ - * Author: Renchi Raju <[hidden email]> - * Date : 2005-04-24 + * Authors: Renchi Raju <[hidden email]> + * Caulier Gilles <caulier dot gilles at kdemail dot net> + * Date : 2005-04-24 * Description : * * Copyright 2005 by Renchi Raju + * Copyright 2006-2007 by Gilles Caulier * * This program is free software; you can redistribute it * and/or modify it under the terms of the GNU General @@ -58,6 +60,7 @@ void setCurrentItem(IconItem* item); int count() const; + int countSelected() const; int groupCount() const; virtual void clear(bool update=true); _______________________________________________ Digikam-devel mailing list [hidden email] https://mail.kde.org/mailman/listinfo/digikam-devel |
Free forum by Nabble | Edit this page |