diff options
Diffstat (limited to 'src/utilities/setup/setupmetadata.cpp')
-rw-r--r-- | src/utilities/setup/setupmetadata.cpp | 238 |
1 files changed, 238 insertions, 0 deletions
diff --git a/src/utilities/setup/setupmetadata.cpp b/src/utilities/setup/setupmetadata.cpp new file mode 100644 index 00000000..e4f74ede --- /dev/null +++ b/src/utilities/setup/setupmetadata.cpp @@ -0,0 +1,238 @@ +/* ============================================================ + * + * This file is a part of digiKam project + * http://www.digikam.org + * + * Date : 2003-08-03 + * Description : setup Metadata tab. + * + * Copyright (C) 2003-2004 by Ralf Holzer <ralf at well.com> + * Copyright (C) 2003-2007 by Gilles Caulier <caulier dot gilles at gmail dot com> + * + * This program is free software; you can redistribute it + * and/or modify it under the terms of the GNU General + * Public License as published by the Free Software Foundation; + * either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * ============================================================ */ + +// TQt includes. + +#include <tqlayout.h> +#include <tqvbuttongroup.h> +#include <tqvgroupbox.h> +#include <tqhgroupbox.h> +#include <tqgroupbox.h> +#include <tqcheckbox.h> +#include <tqlabel.h> +#include <tqwhatsthis.h> +#include <tqtooltip.h> +#include <tqhbox.h> + +// KDE includes. + +#include <tdelocale.h> +#include <kactivelabel.h> +#include <kdialog.h> +#include <kurllabel.h> +#include <kiconloader.h> +#include <tdeglobalsettings.h> +#include <kstandarddirs.h> +#include <tdeapplication.h> + +// Local includes. + +#include "albumsettings.h" +#include "setupmetadata.h" +#include "setupmetadata.moc" + +namespace Digikam +{ + +class SetupMetadataPriv +{ +public: + + SetupMetadataPriv() + { + ExifAutoRotateAsChanged = false; + saveCommentsBox = 0; + ExifRotateBox = 0; + ExifSetOrientationBox = 0; + saveRatingBox = 0; + saveTagsIptcBox = 0; + saveDateTimeBox = 0; + savePhotographerIdIptcBox = 0; + saveCreditsIptcBox = 0; + } + + bool ExifAutoRotateAsChanged; + bool ExifAutoRotateOrg; + + TQCheckBox *saveCommentsBox; + TQCheckBox *ExifRotateBox; + TQCheckBox *ExifSetOrientationBox; + TQCheckBox *saveRatingBox; + TQCheckBox *saveTagsIptcBox; + TQCheckBox *saveDateTimeBox; + TQCheckBox *savePhotographerIdIptcBox; + TQCheckBox *saveCreditsIptcBox; +}; + +SetupMetadata::SetupMetadata(TQWidget* parent ) + : TQWidget(parent) +{ + d = new SetupMetadataPriv; + TQVBoxLayout *mainLayout = new TQVBoxLayout(parent, 0, KDialog::spacingHint()); + + // -------------------------------------------------------- + + TQGroupBox *ExifGroup = new TQGroupBox(1, TQt::Horizontal, i18n("EXIF Actions"), parent); + + d->ExifRotateBox = new TQCheckBox(ExifGroup); + d->ExifRotateBox->setText(i18n("Show images/thumbs &rotated according to orientation tag")); + + d->ExifSetOrientationBox = new TQCheckBox(ExifGroup); + d->ExifSetOrientationBox->setText(i18n("Set orientation tag to normal after rotate/flip")); + + // -------------------------------------------------------- + + TQGroupBox *IptcGroup = new TQGroupBox(1, TQt::Horizontal, i18n("IPTC Actions"), parent); + + d->saveTagsIptcBox = new TQCheckBox(IptcGroup); + d->saveTagsIptcBox->setText(i18n("&Save image tags as \"Keywords\" tag")); + TQWhatsThis::add( d->saveTagsIptcBox, i18n("<p>Turn this option on to store the image tags " + "in the IPTC <i>Keywords</i> tag.")); + + d->savePhotographerIdIptcBox = new TQCheckBox(IptcGroup); + d->savePhotographerIdIptcBox->setText(i18n("&Save default photographer identity as tags")); + TQWhatsThis::add( d->savePhotographerIdIptcBox, i18n("<p>Turn this option on to store the default " + "photographer identity in the IPTC tags. You can set this " + "value in the Identity setup page.")); + + d->saveCreditsIptcBox = new TQCheckBox(IptcGroup); + d->saveCreditsIptcBox->setText(i18n("&Save default credit and copyright identity as tags")); + TQWhatsThis::add( d->saveCreditsIptcBox, i18n("<p>Turn this option on to store the default " + "credit and copyright identity in the IPTC tags. " + "You can set this value in the Identity setup page.")); + + // -------------------------------------------------------- + + TQGroupBox *commonGroup = new TQGroupBox(1, TQt::Horizontal, i18n("Common Metadata Actions"), parent); + + d->saveCommentsBox = new TQCheckBox(commonGroup); + d->saveCommentsBox->setText(i18n("&Save image captions as embedded text")); + TQWhatsThis::add( d->saveCommentsBox, i18n("<p>Turn this option on to store image captions " + "in the JFIF section, EXIF tag, and IPTC tag.")); + + d->saveDateTimeBox = new TQCheckBox(commonGroup); + d->saveDateTimeBox->setText(i18n("&Save image timestamps as tags")); + TQWhatsThis::add( d->saveDateTimeBox, i18n("<p>Turn this option on to store the image date and time " + "in the EXIF and IPTC tags.")); + + d->saveRatingBox = new TQCheckBox(commonGroup); + d->saveRatingBox->setText(i18n("&Save image rating as tags")); + TQWhatsThis::add( d->saveRatingBox, i18n("<p>Turn this option on to store the image rating " + "in the EXIF tag and IPTC <i>Urgency</i> tag.")); + + // -------------------------------------------------------- + + TQHBox *hbox = new TQHBox(parent); + + KURLLabel *exiv2LogoLabel = new KURLLabel(hbox); + exiv2LogoLabel->setText(TQString()); + exiv2LogoLabel->setURL("http://www.exiv2.org"); + TDEGlobal::dirs()->addResourceType("logo-exiv2", TDEGlobal::dirs()->kde_default("data") + "digikam/data"); + TQString directory = TDEGlobal::dirs()->findResourceDir("logo-exiv2", "logo-exiv2.png"); + exiv2LogoLabel->setPixmap( TQPixmap( directory + "logo-exiv2.png" ) ); + TQToolTip::add(exiv2LogoLabel, i18n("Visit Exiv2 project website")); + + KActiveLabel* explanation = new KActiveLabel(hbox); + explanation->setText(i18n("<p><b><a href='http://en.wikipedia.org/wiki/Exif'>EXIF</a></b> is " + "a standard used by most digital cameras today to store technical " + "informations about photograph.</p>" + "<p><b><a href='http://en.wikipedia.org/wiki/IPTC'>IPTC</a></b> is " + "an standard used in digital photography to store " + "photographer informations in pictures.</p>")); + + mainLayout->addWidget(ExifGroup); + mainLayout->addWidget(IptcGroup); + mainLayout->addWidget(commonGroup); + mainLayout->addSpacing(KDialog::spacingHint()); + mainLayout->addWidget(hbox); + mainLayout->addStretch(); + + readSettings(); + + // -------------------------------------------------------- + + connect(exiv2LogoLabel, TQ_SIGNAL(leftClickedURL(const TQString&)), + this, TQ_SLOT(processExiv2URL(const TQString&))); + + connect(d->ExifRotateBox, TQ_SIGNAL(toggled(bool)), + this, TQ_SLOT(slotExifAutoRotateToggled(bool))); +} + +SetupMetadata::~SetupMetadata() +{ + delete d; +} + +void SetupMetadata::processExiv2URL(const TQString& url) +{ + TDEApplication::kApplication()->invokeBrowser(url); +} + +void SetupMetadata::applySettings() +{ + AlbumSettings* settings = AlbumSettings::instance(); + if (!settings) return; + + settings->setExifRotate(d->ExifRotateBox->isChecked()); + settings->setExifSetOrientation(d->ExifSetOrientationBox->isChecked()); + settings->setSaveComments(d->saveCommentsBox->isChecked()); + settings->setSaveDateTime(d->saveDateTimeBox->isChecked()); + settings->setSaveRating(d->saveRatingBox->isChecked()); + settings->setSaveIptcTags(d->saveTagsIptcBox->isChecked()); + settings->setSaveIptcPhotographerId(d->savePhotographerIdIptcBox->isChecked()); + settings->setSaveIptcCredits(d->saveCreditsIptcBox->isChecked()); + + settings->saveSettings(); +} + +void SetupMetadata::readSettings() +{ + AlbumSettings* settings = AlbumSettings::instance(); + if (!settings) return; + + d->ExifAutoRotateOrg = settings->getExifRotate(); + d->ExifRotateBox->setChecked(d->ExifAutoRotateOrg); + d->ExifSetOrientationBox->setChecked(settings->getExifSetOrientation()); + d->saveCommentsBox->setChecked(settings->getSaveComments()); + d->saveDateTimeBox->setChecked(settings->getSaveDateTime()); + d->saveRatingBox->setChecked(settings->getSaveRating()); + d->saveTagsIptcBox->setChecked(settings->getSaveIptcTags()); + d->savePhotographerIdIptcBox->setChecked(settings->getSaveIptcPhotographerId()); + d->saveCreditsIptcBox->setChecked(settings->getSaveIptcCredits()); +} + +bool SetupMetadata::exifAutoRotateAsChanged() +{ + return d->ExifAutoRotateAsChanged; +} + +void SetupMetadata::slotExifAutoRotateToggled(bool b) +{ + if ( b != d->ExifAutoRotateOrg) + d->ExifAutoRotateAsChanged = true; + else + d->ExifAutoRotateAsChanged = false; +} + +} // namespace Digikam |