[Digikam-devel] branches/extragear/graphics/digikam/libs/imageproperties
Martin Klapetek
martin.klapetek at gmail.com
Mon Dec 6 15:38:19 GMT 2010
SVN commit 1204275 by mklapetek:
Add a button to tags sidebar, that will allow to assign the changes to all versions of a particular image. So far the button is enabled only when 1 image is selected. But I'm not too happy with the new button layout, does anyone have any better idea of how to place these?
CCMAIL:digikam-devel at kde.org
M +64 -5 imagedescedittab.cpp
M +1 -0 imagedescedittab.h
--- branches/extragear/graphics/digikam/libs/imageproperties/imagedescedittab.cpp #1204274:1204275
@@ -65,6 +65,8 @@
#include "statusprogressbar.h"
#include "tagmodificationhelper.h"
#include "template.h"
+#include "imageinfolist.h"
+#include "imageinfo.h"
namespace Digikam
{
@@ -94,6 +96,7 @@
assignedTagsBtn = 0;
applyBtn = 0;
revertBtn = 0;
+ applyToAllVersionsButton = 0;
recentTagsMapper = 0;
newTagEdit = 0;
lastSelectedWidget = 0;
@@ -118,6 +121,7 @@
QPushButton* applyBtn;
QPushButton* moreButton;
+ QPushButton* applyToAllVersionsButton;
QWidget* lastSelectedWidget;
@@ -225,6 +229,15 @@
// Buttons -----------------------------------------
+ KHBox* applyButtonBox = new KHBox(this);
+ applyButtonBox->setSpacing(KDialog::spacingHint());
+
+ d->applyBtn = new QPushButton(i18n("Apply"), applyButtonBox);
+ d->applyBtn->setIcon(SmallIcon("dialog-ok-apply"));
+ d->applyBtn->setEnabled(false);
+ d->applyBtn->setToolTip( i18n("Apply all changes to images"));
+ //buttonsBox->setStretchFactor(d->applyBtn, 10);
+
KHBox* buttonsBox = new KHBox(this);
buttonsBox->setSpacing(KDialog::spacingHint());
@@ -233,11 +246,10 @@
d->revertBtn->setToolTip( i18n("Revert all changes"));
d->revertBtn->setEnabled(false);
- d->applyBtn = new QPushButton(i18n("Apply"), buttonsBox);
- d->applyBtn->setIcon(SmallIcon("dialog-ok-apply"));
- d->applyBtn->setEnabled(false);
- d->applyBtn->setToolTip( i18n("Apply all changes to images"));
- buttonsBox->setStretchFactor(d->applyBtn, 10);
+ d->applyToAllVersionsButton = new QPushButton(i18n("Apply to all versions"), buttonsBox);
+ d->applyToAllVersionsButton->setIcon(SmallIcon("dialog-ok-apply"));
+ d->applyToAllVersionsButton->setEnabled(false);
+ d->applyToAllVersionsButton->setToolTip(i18n("Apply all changes to all versions of this image"));
d->moreButton = new QPushButton(i18n("More"), buttonsBox);
d->moreMenu = new KMenu(captionTagsArea);
@@ -309,6 +321,9 @@
connect(d->applyBtn, SIGNAL(clicked()),
this, SLOT(slotApplyAllChanges()));
+ connect(d->applyToAllVersionsButton, SIGNAL(clicked()),
+ this, SLOT(slotApplyChangesToAllVersions()));
+
connect(d->revertBtn, SIGNAL(clicked()),
this, SLOT(slotRevertAllChanges()));
@@ -530,6 +545,7 @@
d->hub.resetChanged();
d->applyBtn->setEnabled(false);
d->revertBtn->setEnabled(false);
+ d->applyToAllVersionsButton->setEnabled(false);
}
void ImageDescEditTab::slotRevertAllChanges()
@@ -755,7 +771,12 @@
d->modified = true;
d->applyBtn->setEnabled(true);
d->revertBtn->setEnabled(true);
+
+ if(d->currInfos.size() == 1)
+ {
+ d->applyToAllVersionsButton->setEnabled(true);
}
+}
void ImageDescEditTab::slotCreateNewTag()
{
@@ -1158,4 +1179,42 @@
d->lastSelectedWidget = 0;
}
+void ImageDescEditTab::slotApplyChangesToAllVersions()
+{
+ if (!d->modified)
+ {
+ return;
+ }
+
+ if (d->currInfos.isEmpty())
+ {
+ return;
+ }
+
+ QSet<qlonglong> tmpSet;
+ QList<QPair<qlonglong, qlonglong> > relations;
+
+ foreach(const ImageInfo& info, d->currInfos)
+ {
+ // Collect all ids in all image's relations
+ relations.append(info.relationCloud());
+ }
+
+ for(int i = 0; i < relations.size(); i++)
+ {
+ // Use QSet to prevent duplicates
+ tmpSet.insert(relations.at(i).first);
+ tmpSet.insert(relations.at(i).second);
+ }
+
+ MetadataManager::instance()->applyMetadata(ImageInfoList(tmpSet.toList()), d->hub);
+
+ d->modified = false;
+ d->hub.resetChanged();
+ d->applyBtn->setEnabled(false);
+ d->revertBtn->setEnabled(false);
+ d->applyToAllVersionsButton->setEnabled(false);
+}
+
+
} // namespace Digikam
--- branches/extragear/graphics/digikam/libs/imageproperties/imagedescedittab.h #1204274:1204275
@@ -99,6 +99,7 @@
private Q_SLOTS:
void slotApplyAllChanges();
+ void slotApplyChangesToAllVersions();
void slotRevertAllChanges();
void slotChangingItems();
void slotTagsSearchChanged(const SearchTextSettings& settings);
More information about the Digikam-devel
mailing list