|
|
|
/* ============================================================
|
|
|
|
*
|
|
|
|
* This file is a part of kipi-plugins project
|
|
|
|
* http://www.kipi-plugins.org
|
|
|
|
*
|
|
|
|
* Date : 2006-10-12
|
|
|
|
* Description : IPTC status settings page.
|
|
|
|
*
|
|
|
|
* Copyright (C) 2006-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.
|
|
|
|
*
|
|
|
|
* ============================================================ */
|
|
|
|
|
|
|
|
// QT includes.
|
|
|
|
|
|
|
|
#include <tqlayout.h>
|
|
|
|
#include <tqcombobox.h>
|
|
|
|
#include <tqlabel.h>
|
|
|
|
#include <tqwhatsthis.h>
|
|
|
|
#include <tqvalidator.h>
|
|
|
|
|
|
|
|
// KDE includes.
|
|
|
|
|
|
|
|
#include <tdelocale.h>
|
|
|
|
#include <kdialog.h>
|
|
|
|
#include <klineedit.h>
|
|
|
|
#include <tdeapplication.h>
|
|
|
|
#include <tdeaboutdata.h>
|
|
|
|
#include <kactivelabel.h>
|
|
|
|
|
|
|
|
// LibKExiv2 includes.
|
|
|
|
|
|
|
|
#include <libkexiv2/kexiv2.h>
|
|
|
|
|
|
|
|
// Local includes.
|
|
|
|
|
|
|
|
#include "metadatacheckbox.h"
|
|
|
|
#include "pluginsversion.h"
|
|
|
|
#include "iptcstatus.h"
|
|
|
|
#include "iptcstatus.moc"
|
|
|
|
|
|
|
|
namespace KIPIMetadataEditPlugin
|
|
|
|
{
|
|
|
|
|
|
|
|
class IPTCStatusPriv
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
|
|
|
|
IPTCStatusPriv()
|
|
|
|
{
|
|
|
|
priorityCB = 0;
|
|
|
|
objectCycleCB = 0;
|
|
|
|
objectTypeCB = 0;
|
|
|
|
statusEdit = 0;
|
|
|
|
JobIDEdit = 0;
|
|
|
|
priorityCheck = 0;
|
|
|
|
objectCycleCheck = 0;
|
|
|
|
objectTypeCheck = 0;
|
|
|
|
statusCheck = 0;
|
|
|
|
JobIDCheck = 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
TQCheckBox *statusCheck;
|
|
|
|
TQCheckBox *JobIDCheck;
|
|
|
|
|
|
|
|
TQComboBox *priorityCB;
|
|
|
|
TQComboBox *objectCycleCB;
|
|
|
|
TQComboBox *objectTypeCB;
|
|
|
|
TQComboBox *objectAttributeCB;
|
|
|
|
|
|
|
|
KLineEdit *statusEdit;
|
|
|
|
KLineEdit *objectTypeDescEdit;
|
|
|
|
KLineEdit *objectAttributeDescEdit;
|
|
|
|
KLineEdit *JobIDEdit;
|
|
|
|
|
|
|
|
MetadataCheckBox *priorityCheck;
|
|
|
|
MetadataCheckBox *objectCycleCheck;
|
|
|
|
MetadataCheckBox *objectTypeCheck;
|
|
|
|
MetadataCheckBox *objectAttributeCheck;
|
|
|
|
};
|
|
|
|
|
|
|
|
IPTCStatus::IPTCStatus(TQWidget* parent)
|
|
|
|
: TQWidget(parent)
|
|
|
|
{
|
|
|
|
d = new IPTCStatusPriv;
|
|
|
|
|
|
|
|
TQGridLayout* grid = new TQGridLayout(parent, 11, 2, KDialog::spacingHint());
|
|
|
|
|
|
|
|
// IPTC only accept printable Ascii char.
|
|
|
|
TQRegExp asciiRx("[\x20-\x7F]+$");
|
|
|
|
TQValidator *asciiValidator = new TQRegExpValidator(asciiRx, this);
|
|
|
|
|
|
|
|
// --------------------------------------------------------
|
|
|
|
|
|
|
|
d->statusCheck = new TQCheckBox(i18n("Edit Status:"), parent);
|
|
|
|
d->statusEdit = new KLineEdit(parent);
|
|
|
|
d->statusEdit->setValidator(asciiValidator);
|
|
|
|
d->statusEdit->setMaxLength(64);
|
|
|
|
grid->addMultiCellWidget(d->statusCheck, 0, 0, 0, 2);
|
|
|
|
grid->addMultiCellWidget(d->statusEdit, 1, 1, 0, 2);
|
|
|
|
TQWhatsThis::add(d->statusEdit, i18n("<p>Set here the content status. This field is limited "
|
|
|
|
"to 64 ASCII characters."));
|
|
|
|
|
|
|
|
// --------------------------------------------------------
|
|
|
|
|
|
|
|
d->priorityCheck = new MetadataCheckBox(i18n("Priority:"), parent);
|
|
|
|
d->priorityCB = new TQComboBox(false, parent);
|
|
|
|
d->priorityCB->insertItem(i18n("0: None"), 0);
|
|
|
|
d->priorityCB->insertItem(i18n("1: High"), 1);
|
|
|
|
d->priorityCB->insertItem("2", 2);
|
|
|
|
d->priorityCB->insertItem("3", 3);
|
|
|
|
d->priorityCB->insertItem("4", 4);
|
|
|
|
d->priorityCB->insertItem(i18n("5: Normal"), 5);
|
|
|
|
d->priorityCB->insertItem("6", 6);
|
|
|
|
d->priorityCB->insertItem("7", 7);
|
|
|
|
d->priorityCB->insertItem(i18n("8: Low"), 8);
|
|
|
|
grid->addMultiCellWidget(d->priorityCheck, 2, 2, 0, 0);
|
|
|
|
grid->addMultiCellWidget(d->priorityCB, 2, 2, 1, 1);
|
|
|
|
TQWhatsThis::add(d->priorityCB, i18n("<p>Select here the editorial urgency of content."));
|
|
|
|
|
|
|
|
// --------------------------------------------------------
|
|
|
|
|
|
|
|
d->objectCycleCheck = new MetadataCheckBox(i18n("Object Cycle:"), parent);
|
|
|
|
d->objectCycleCB = new TQComboBox(false, parent);
|
|
|
|
d->objectCycleCB->insertItem(i18n("Morning"), 0);
|
|
|
|
d->objectCycleCB->insertItem(i18n("Afternoon"), 1);
|
|
|
|
d->objectCycleCB->insertItem(i18n("Evening"), 2);
|
|
|
|
grid->addMultiCellWidget(d->objectCycleCheck, 3, 3, 0, 0);
|
|
|
|
grid->addMultiCellWidget(d->objectCycleCB, 3, 3, 1, 1);
|
|
|
|
TQWhatsThis::add(d->objectCycleCB, i18n("<p>Select here the editorial cycle of content."));
|
|
|
|
|
|
|
|
// --------------------------------------------------------
|
|
|
|
|
|
|
|
d->objectTypeCheck = new MetadataCheckBox(i18n("Object Type:"), parent);
|
|
|
|
d->objectTypeCB = new TQComboBox(false, parent);
|
|
|
|
d->objectTypeDescEdit = new KLineEdit(parent);
|
|
|
|
d->objectTypeDescEdit->setValidator(asciiValidator);
|
|
|
|
d->objectTypeDescEdit->setMaxLength(64);
|
|
|
|
d->objectTypeCB->insertItem(i18n("News"), 0);
|
|
|
|
d->objectTypeCB->insertItem(i18n("Data"), 1);
|
|
|
|
d->objectTypeCB->insertItem(i18n("Advisory"), 2);
|
|
|
|
grid->addMultiCellWidget(d->objectTypeCheck, 4, 4, 0, 0);
|
|
|
|
grid->addMultiCellWidget(d->objectTypeCB, 4, 4, 1, 1);
|
|
|
|
grid->addMultiCellWidget(d->objectTypeDescEdit, 5, 5, 0, 2);
|
|
|
|
TQWhatsThis::add(d->objectTypeCB, i18n("<p>Select here the editorial type of content."));
|
|
|
|
TQWhatsThis::add(d->objectTypeDescEdit, i18n("<p>Set here the editorial type description of content. "
|
|
|
|
"This field is limited to 64 ASCII characters."));
|
|
|
|
|
|
|
|
// --------------------------------------------------------
|
|
|
|
|
|
|
|
d->objectAttributeCheck = new MetadataCheckBox(i18n("Object Attribute:"), parent);
|
|
|
|
d->objectAttributeCB = new TQComboBox(false, parent);
|
|
|
|
d->objectAttributeDescEdit = new KLineEdit(parent);
|
|
|
|
d->objectAttributeDescEdit->setValidator(asciiValidator);
|
|
|
|
d->objectAttributeDescEdit->setMaxLength(64);
|
|
|
|
d->objectAttributeCB->insertItem(i18n("Current"), 0);
|
|
|
|
d->objectAttributeCB->insertItem(i18n("Analysis"), 1);
|
|
|
|
d->objectAttributeCB->insertItem(i18n("Archive material"), 2);
|
|
|
|
d->objectAttributeCB->insertItem(i18n("Background"), 3);
|
|
|
|
d->objectAttributeCB->insertItem(i18n("Feature"), 4);
|
|
|
|
d->objectAttributeCB->insertItem(i18n("Forecast"), 5);
|
|
|
|
d->objectAttributeCB->insertItem(i18n("History"), 6);
|
|
|
|
d->objectAttributeCB->insertItem(i18n("Obituary"), 7);
|
|
|
|
d->objectAttributeCB->insertItem(i18n("Opinion"), 8);
|
|
|
|
d->objectAttributeCB->insertItem(i18n("Polls & Surveys"), 9);
|
|
|
|
d->objectAttributeCB->insertItem(i18n("Profile"), 10);
|
|
|
|
d->objectAttributeCB->insertItem(i18n("Results Listings & Table"), 11);
|
|
|
|
d->objectAttributeCB->insertItem(i18n("Side bar & Supporting information"), 12);
|
|
|
|
d->objectAttributeCB->insertItem(i18n("Summary"), 13);
|
|
|
|
d->objectAttributeCB->insertItem(i18n("Transcript & Verbatim"), 14);
|
|
|
|
d->objectAttributeCB->insertItem(i18n("Interview"), 15);
|
|
|
|
d->objectAttributeCB->insertItem(i18n("From the Scene"), 16);
|
|
|
|
d->objectAttributeCB->insertItem(i18n("Retrospective"), 17);
|
|
|
|
d->objectAttributeCB->insertItem(i18n("Statistics"), 18);
|
|
|
|
d->objectAttributeCB->insertItem(i18n("Update"), 19);
|
|
|
|
d->objectAttributeCB->insertItem(i18n("Wrap-up"), 20);
|
|
|
|
d->objectAttributeCB->insertItem(i18n("Press Release"), 21);
|
|
|
|
grid->addMultiCellWidget(d->objectAttributeCheck, 6, 6, 0, 0);
|
|
|
|
grid->addMultiCellWidget(d->objectAttributeCB, 6, 6, 1, 2);
|
|
|
|
grid->addMultiCellWidget(d->objectAttributeDescEdit, 7, 7, 0, 2);
|
|
|
|
TQWhatsThis::add(d->objectAttributeCB, i18n("<p>Select here the editorial attribute of content."));
|
|
|
|
TQWhatsThis::add(d->objectAttributeDescEdit, i18n("<p>Set here the editorial attribute description of "
|
|
|
|
"content. This field is limited to 64 ASCII characters."));
|
|
|
|
|
|
|
|
// --------------------------------------------------------
|
|
|
|
|
|
|
|
d->JobIDCheck = new TQCheckBox(i18n("Job Identification:"), parent);
|
|
|
|
d->JobIDEdit = new KLineEdit(parent);
|
|
|
|
d->JobIDEdit->setValidator(asciiValidator);
|
|
|
|
d->JobIDEdit->setMaxLength(32);
|
|
|
|
grid->addMultiCellWidget(d->JobIDCheck, 8, 8, 0, 2);
|
|
|
|
grid->addMultiCellWidget(d->JobIDEdit, 9, 9, 0, 2);
|
|
|
|
TQWhatsThis::add(d->JobIDEdit, i18n("<p>Set here the string that identifies content that recurs. "
|
|
|
|
"This field is limited to 32 ASCII characters."));
|
|
|
|
|
|
|
|
// --------------------------------------------------------
|
|
|
|
|
|
|
|
KActiveLabel *note = new KActiveLabel(i18n("<b>Note: "
|
|
|
|
"<b><a href='http://en.wikipedia.org/wiki/IPTC'>IPTC</a></b> "
|
|
|
|
"text tags only support the printable "
|
|
|
|
"<b><a href='http://en.wikipedia.org/wiki/Ascii'>ASCII</a></b> "
|
|
|
|
"characters set and limit strings size. "
|
|
|
|
"Use contextual help for details.</b>"), parent);
|
|
|
|
|
|
|
|
grid->addMultiCellWidget(note, 10, 10, 0, 2);
|
|
|
|
grid->setColStretch(2, 10);
|
|
|
|
grid->setRowStretch(11, 10);
|
|
|
|
|
|
|
|
// --------------------------------------------------------
|
|
|
|
|
|
|
|
connect(d->priorityCheck, TQ_SIGNAL(toggled(bool)),
|
|
|
|
d->priorityCB, TQ_SLOT(setEnabled(bool)));
|
|
|
|
|
|
|
|
connect(d->objectCycleCheck, TQ_SIGNAL(toggled(bool)),
|
|
|
|
d->objectCycleCB, TQ_SLOT(setEnabled(bool)));
|
|
|
|
|
|
|
|
connect(d->objectTypeCheck, TQ_SIGNAL(toggled(bool)),
|
|
|
|
d->objectTypeCB, TQ_SLOT(setEnabled(bool)));
|
|
|
|
|
|
|
|
connect(d->objectTypeCheck, TQ_SIGNAL(toggled(bool)),
|
|
|
|
d->objectTypeDescEdit, TQ_SLOT(setEnabled(bool)));
|
|
|
|
|
|
|
|
connect(d->objectAttributeCheck, TQ_SIGNAL(toggled(bool)),
|
|
|
|
d->objectAttributeCB, TQ_SLOT(setEnabled(bool)));
|
|
|
|
|
|
|
|
connect(d->objectAttributeCheck, TQ_SIGNAL(toggled(bool)),
|
|
|
|
d->objectAttributeDescEdit, TQ_SLOT(setEnabled(bool)));
|
|
|
|
|
|
|
|
connect(d->statusCheck, TQ_SIGNAL(toggled(bool)),
|
|
|
|
d->statusEdit, TQ_SLOT(setEnabled(bool)));
|
|
|
|
|
|
|
|
connect(d->JobIDCheck, TQ_SIGNAL(toggled(bool)),
|
|
|
|
d->JobIDEdit, TQ_SLOT(setEnabled(bool)));
|
|
|
|
|
|
|
|
// --------------------------------------------------------
|
|
|
|
|
|
|
|
connect(d->priorityCheck, TQ_SIGNAL(toggled(bool)),
|
|
|
|
this, TQ_SIGNAL(signalModified()));
|
|
|
|
|
|
|
|
connect(d->objectCycleCheck, TQ_SIGNAL(toggled(bool)),
|
|
|
|
this, TQ_SIGNAL(signalModified()));
|
|
|
|
|
|
|
|
connect(d->objectTypeCheck, TQ_SIGNAL(toggled(bool)),
|
|
|
|
this, TQ_SIGNAL(signalModified()));
|
|
|
|
|
|
|
|
connect(d->objectTypeCheck, TQ_SIGNAL(toggled(bool)),
|
|
|
|
this, TQ_SIGNAL(signalModified()));
|
|
|
|
|
|
|
|
connect(d->objectAttributeCheck, TQ_SIGNAL(toggled(bool)),
|
|
|
|
this, TQ_SIGNAL(signalModified()));
|
|
|
|
|
|
|
|
connect(d->objectAttributeCheck, TQ_SIGNAL(toggled(bool)),
|
|
|
|
this, TQ_SIGNAL(signalModified()));
|
|
|
|
|
|
|
|
connect(d->statusCheck, TQ_SIGNAL(toggled(bool)),
|
|
|
|
this, TQ_SIGNAL(signalModified()));
|
|
|
|
|
|
|
|
connect(d->JobIDCheck, TQ_SIGNAL(toggled(bool)),
|
|
|
|
this, TQ_SIGNAL(signalModified()));
|
|
|
|
|
|
|
|
// --------------------------------------------------------
|
|
|
|
|
|
|
|
connect(d->priorityCB, TQ_SIGNAL(activated(int)),
|
|
|
|
this, TQ_SIGNAL(signalModified()));
|
|
|
|
|
|
|
|
connect(d->objectCycleCB, TQ_SIGNAL(activated(int)),
|
|
|
|
this, TQ_SIGNAL(signalModified()));
|
|
|
|
|
|
|
|
connect(d->objectTypeCB, TQ_SIGNAL(activated(int)),
|
|
|
|
this, TQ_SIGNAL(signalModified()));
|
|
|
|
|
|
|
|
connect(d->objectAttributeCB, TQ_SIGNAL(activated(int)),
|
|
|
|
this, TQ_SIGNAL(signalModified()));
|
|
|
|
|
|
|
|
connect(d->statusEdit, TQ_SIGNAL(textChanged(const TQString &)),
|
|
|
|
this, TQ_SIGNAL(signalModified()));
|
|
|
|
|
|
|
|
connect(d->objectTypeDescEdit, TQ_SIGNAL(textChanged(const TQString &)),
|
|
|
|
this, TQ_SIGNAL(signalModified()));
|
|
|
|
|
|
|
|
connect(d->objectAttributeDescEdit, TQ_SIGNAL(textChanged(const TQString &)),
|
|
|
|
this, TQ_SIGNAL(signalModified()));
|
|
|
|
|
|
|
|
connect(d->JobIDEdit, TQ_SIGNAL(textChanged(const TQString &)),
|
|
|
|
this, TQ_SIGNAL(signalModified()));
|
|
|
|
}
|
|
|
|
|
|
|
|
IPTCStatus::~IPTCStatus()
|
|
|
|
{
|
|
|
|
delete d;
|
|
|
|
}
|
|
|
|
|
|
|
|
void IPTCStatus::readMetadata(TQByteArray& iptcData)
|
|
|
|
{
|
|
|
|
blockSignals(true);
|
|
|
|
KExiv2Iface::KExiv2 exiv2Iface;
|
|
|
|
exiv2Iface.setIptc(iptcData);
|
|
|
|
TQString data;
|
|
|
|
int val;
|
|
|
|
|
|
|
|
d->statusEdit->clear();
|
|
|
|
d->statusCheck->setChecked(false);
|
|
|
|
data = exiv2Iface.getIptcTagString("Iptc.Application2.EditStatus", false);
|
|
|
|
if (!data.isNull())
|
|
|
|
{
|
|
|
|
d->statusEdit->setText(data);
|
|
|
|
d->statusCheck->setChecked(true);
|
|
|
|
}
|
|
|
|
d->statusEdit->setEnabled(d->statusCheck->isChecked());
|
|
|
|
|
|
|
|
d->priorityCB->setCurrentItem(0);
|
|
|
|
d->priorityCheck->setChecked(false);
|
|
|
|
data = exiv2Iface.getIptcTagString("Iptc.Application2.Urgency", false);
|
|
|
|
if (!data.isNull())
|
|
|
|
{
|
|
|
|
val = data.toInt();
|
|
|
|
if (val >= 0 && val <= 8)
|
|
|
|
{
|
|
|
|
d->priorityCB->setCurrentItem(val);
|
|
|
|
d->priorityCheck->setChecked(true);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
d->priorityCheck->setValid(false);
|
|
|
|
}
|
|
|
|
d->priorityCB->setEnabled(d->priorityCheck->isChecked());
|
|
|
|
|
|
|
|
d->objectCycleCB->setCurrentItem(0);
|
|
|
|
d->objectCycleCheck->setChecked(false);
|
|
|
|
data = exiv2Iface.getIptcTagString("Iptc.Application2.ObjectCycle", false);
|
|
|
|
if (!data.isNull())
|
|
|
|
{
|
|
|
|
if (data == TQString("a"))
|
|
|
|
{
|
|
|
|
d->objectCycleCB->setCurrentItem(0);
|
|
|
|
d->objectCycleCheck->setChecked(true);
|
|
|
|
}
|
|
|
|
else if (data == TQString("b"))
|
|
|
|
{
|
|
|
|
d->objectCycleCB->setCurrentItem(1);
|
|
|
|
d->objectCycleCheck->setChecked(true);
|
|
|
|
}
|
|
|
|
else if (data == TQString("c"))
|
|
|
|
{
|
|
|
|
d->objectCycleCB->setCurrentItem(2);
|
|
|
|
d->objectCycleCheck->setChecked(true);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
d->objectCycleCheck->setValid(false);
|
|
|
|
}
|
|
|
|
d->objectCycleCB->setEnabled(d->objectCycleCheck->isChecked());
|
|
|
|
|
|
|
|
d->objectTypeCB->setCurrentItem(0);
|
|
|
|
d->objectTypeDescEdit->clear();
|
|
|
|
d->objectTypeCheck->setChecked(false);
|
|
|
|
data = exiv2Iface.getIptcTagString("Iptc.Application2.ObjectType", false);
|
|
|
|
if (!data.isNull())
|
|
|
|
{
|
|
|
|
TQString typeSec = data.section(":", 0, 0);
|
|
|
|
if (!typeSec.isEmpty())
|
|
|
|
{
|
|
|
|
int type = typeSec.toInt()-1;
|
|
|
|
if (type >= 0 && type < 3)
|
|
|
|
{
|
|
|
|
d->objectTypeCB->setCurrentItem(type);
|
|
|
|
d->objectTypeDescEdit->setText(data.section(":", -1));
|
|
|
|
d->objectTypeCheck->setChecked(true);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
d->objectTypeCheck->setValid(false);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
d->objectTypeCB->setEnabled(d->objectTypeCheck->isChecked());
|
|
|
|
d->objectTypeDescEdit->setEnabled(d->objectTypeCheck->isChecked());
|
|
|
|
|
|
|
|
d->objectAttributeCB->setCurrentItem(0);
|
|
|
|
d->objectAttributeDescEdit->clear();
|
|
|
|
d->objectAttributeCheck->setChecked(false);
|
|
|
|
data = exiv2Iface.getIptcTagString("Iptc.Application2.ObjectAttribute", false);
|
|
|
|
if (!data.isNull())
|
|
|
|
{
|
|
|
|
TQString attSec = data.section(":", 0, 0);
|
|
|
|
if (!attSec.isEmpty())
|
|
|
|
{
|
|
|
|
int att = attSec.toInt()-1;
|
|
|
|
if (att >= 0 && att < 21)
|
|
|
|
{
|
|
|
|
d->objectAttributeCB->setCurrentItem(att);
|
|
|
|
d->objectAttributeDescEdit->setText(data.section(":", -1));
|
|
|
|
d->objectAttributeCheck->setChecked(true);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
d->objectAttributeCheck->setValid(false);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
d->objectAttributeCB->setEnabled(d->objectAttributeCheck->isChecked());
|
|
|
|
d->objectAttributeDescEdit->setEnabled(d->objectAttributeCheck->isChecked());
|
|
|
|
|
|
|
|
d->JobIDEdit->clear();
|
|
|
|
d->JobIDCheck->setChecked(false);
|
|
|
|
data = exiv2Iface.getIptcTagString("Iptc.Application2.FixtureId", false);
|
|
|
|
if (!data.isNull())
|
|
|
|
{
|
|
|
|
d->JobIDEdit->setText(data);
|
|
|
|
d->JobIDCheck->setChecked(true);
|
|
|
|
}
|
|
|
|
d->JobIDEdit->setEnabled(d->JobIDCheck->isChecked());
|
|
|
|
|
|
|
|
blockSignals(false);
|
|
|
|
}
|
|
|
|
|
|
|
|
void IPTCStatus::applyMetadata(TQByteArray& iptcData)
|
|
|
|
{
|
|
|
|
KExiv2Iface::KExiv2 exiv2Iface;
|
|
|
|
exiv2Iface.setIptc(iptcData);
|
|
|
|
|
|
|
|
if (d->statusCheck->isChecked())
|
|
|
|
exiv2Iface.setIptcTagString("Iptc.Application2.EditStatus", d->statusEdit->text());
|
|
|
|
else
|
|
|
|
exiv2Iface.removeIptcTag("Iptc.Application2.EditStatus");
|
|
|
|
|
|
|
|
if (d->priorityCheck->isChecked())
|
|
|
|
exiv2Iface.setIptcTagString("Iptc.Application2.Urgency", TQString::number(d->priorityCB->currentItem()));
|
|
|
|
else if (d->priorityCheck->isValid())
|
|
|
|
exiv2Iface.removeIptcTag("Iptc.Application2.Urgency");
|
|
|
|
|
|
|
|
if (d->objectCycleCheck->isChecked())
|
|
|
|
{
|
|
|
|
switch (d->objectCycleCB->currentItem())
|
|
|
|
{
|
|
|
|
case(0):
|
|
|
|
exiv2Iface.setIptcTagString("Iptc.Application2.ObjectCycle", TQString("a"));
|
|
|
|
break;
|
|
|
|
|
|
|
|
case(1):
|
|
|
|
exiv2Iface.setIptcTagString("Iptc.Application2.ObjectCycle", TQString("b"));
|
|
|
|
break;
|
|
|
|
|
|
|
|
case(2):
|
|
|
|
exiv2Iface.setIptcTagString("Iptc.Application2.ObjectCycle", TQString("c"));
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (d->objectCycleCheck->isValid())
|
|
|
|
exiv2Iface.removeIptcTag("Iptc.Application2.ObjectCycle");
|
|
|
|
|
|
|
|
if (d->objectTypeCheck->isChecked())
|
|
|
|
{
|
|
|
|
TQString objectType;
|
|
|
|
objectType.sprintf("%2d", d->objectTypeCB->currentItem()+1);
|
|
|
|
objectType.append(TQString(":%1").arg(d->objectTypeDescEdit->text()));
|
|
|
|
exiv2Iface.setIptcTagString("Iptc.Application2.ObjectType", objectType);
|
|
|
|
}
|
|
|
|
else if (d->objectTypeCheck->isValid())
|
|
|
|
exiv2Iface.removeIptcTag("Iptc.Application2.ObjectType");
|
|
|
|
|
|
|
|
if (d->objectAttributeCheck->isChecked())
|
|
|
|
{
|
|
|
|
TQString objectAttribute;
|
|
|
|
objectAttribute.sprintf("%3d", d->objectAttributeCB->currentItem()+1);
|
|
|
|
objectAttribute.append(TQString(":%1").arg(d->objectAttributeDescEdit->text()));
|
|
|
|
exiv2Iface.setIptcTagString("Iptc.Application2.ObjectAttribute", objectAttribute);
|
|
|
|
}
|
|
|
|
else if (d->objectAttributeCheck->isValid())
|
|
|
|
exiv2Iface.removeIptcTag("Iptc.Application2.ObjectAttribute");
|
|
|
|
|
|
|
|
if (d->JobIDCheck->isChecked())
|
|
|
|
exiv2Iface.setIptcTagString("Iptc.Application2.FixtureId", d->JobIDEdit->text());
|
|
|
|
else
|
|
|
|
exiv2Iface.removeIptcTag("Iptc.Application2.FixtureId");
|
|
|
|
|
|
|
|
exiv2Iface.setImageProgramId(TQString("Kipi-plugins"), TQString(kipiplugins_version));
|
|
|
|
|
|
|
|
iptcData = exiv2Iface.getIptc();
|
|
|
|
}
|
|
|
|
|
|
|
|
} // namespace KIPIMetadataEditPlugin
|