[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: extragear/graphics/digikam/libs/imageproperties
From: Marcel Wiesweg <marcel.wiesweg () gmx ! de>
Date: 2009-10-10 18:54:39
Message-ID: 1255200879.330468.16590.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 1033677 by mwiesweg:
Update signal connections, add logic for some corner cases, use QMap::value() instead
QMap::operator[] everywhere - the latter adds a value if it does not exist.
CCBUG: 209382
M +46 -17 captionedit.cpp
M +1 -1 captionedit.h
--- trunk/extragear/graphics/digikam/libs/imageproperties/captionedit.cpp #1033676:1033677
@@ -34,6 +34,7 @@
// Local includes
#include "altlangstredit.h"
+#include "debug.h"
namespace Digikam
{
@@ -53,6 +54,9 @@
AltLangStrEdit *altLangStrEdit;
CaptionsMap captionsValues;
+
+ QString lastDeletedLanguage;
+ CaptionValues lastDeletedValues;
};
CaptionEdit::CaptionEdit(QWidget* parent)
@@ -71,16 +75,16 @@
setMargin(0);
setSpacing(0);
- connect(d->altLangStrEdit, SIGNAL(signalModified()),
- this, SIGNAL(signalModified()));
+ connect(d->altLangStrEdit, SIGNAL(signalSelectionChanged(const QString&)),
+ this, SLOT(slotSelectionChanged(const QString&)));
-// connect(d->altLangStrEdit, SIGNAL(signalSelectionChanged(const QString&)),
-// this, SLOT(slotSelectionChanged(const QString&)));
+ connect(d->altLangStrEdit, SIGNAL(signalModified(const QString&, const QString&)),
+ this, SLOT(slotCaptionModified(const QString&, const QString&)));
- connect(d->altLangStrEdit, SIGNAL(signalAddValue(const QString&, const QString&)),
+ connect(d->altLangStrEdit, SIGNAL(signalValueAdded(const QString&, const QString&)),
this, SLOT(slotAddValue(const QString&, const QString&)));
- connect(d->altLangStrEdit, SIGNAL(signalDeleteValue(const QString&)),
+ connect(d->altLangStrEdit, SIGNAL(signalValueDeleted(const QString&)),
this, SLOT(slotDeleteValue(const QString&)));
connect(d->authorEdit, SIGNAL(textChanged(const QString&)),
@@ -95,7 +99,11 @@
void CaptionEdit::reset()
{
d->altLangStrEdit->reset();
+
+ d->authorEdit->blockSignals(true);
d->authorEdit->clear();
+ d->authorEdit->blockSignals(false);
+
d->captionsValues.clear();
}
@@ -105,24 +113,50 @@
val.caption = text;
val.author = d->authorEdit->text();
val.date = QDateTime::currentDateTime();
+
+ // The user may have removed the text and directly entered a new one. Do not drop author then.
+ if (val.author.isEmpty() && d->lastDeletedLanguage == lang)
+ {
+ val.author = d->lastDeletedValues.author;
+ d->authorEdit->blockSignals(true);
+ d->authorEdit->setText(val.author);
+ d->authorEdit->blockSignals(false);
+ }
+ d->lastDeletedLanguage = QString();
+
d->captionsValues.insert(lang, val);
emit signalModified();
}
+void CaptionEdit::slotCaptionModified(const QString& lang, const QString& text)
+{
+ slotAddValue(lang, text);
+}
+
void CaptionEdit::slotDeleteValue(const QString& lang)
{
+ d->lastDeletedLanguage = lang;
+ d->lastDeletedValues = d->captionsValues.value(lang);
+
d->captionsValues.remove(lang);
+ d->authorEdit->blockSignals(true);
+ d->authorEdit->clear();
+ d->authorEdit->blockSignals(false);
emit signalModified();
}
void CaptionEdit::slotSelectionChanged(const QString& lang)
{
- QString author = d->captionsValues[lang].author;
+ QString author = d->captionsValues.value(lang).author;
+ d->authorEdit->blockSignals(true);
d->authorEdit->setText(author);
+ d->authorEdit->blockSignals(false);
}
void CaptionEdit::setValues(const CaptionsMap& values)
{
+ d->lastDeletedLanguage = QString();
+
d->captionsValues = values;
d->altLangStrEdit->setValues(d->captionsValues.toAltLangMap());
slotSelectionChanged(d->altLangStrEdit->currentLanguageCode());
@@ -133,18 +167,13 @@
return d->captionsValues;
}
-void CaptionEdit::apply()
-{
- d->altLangStrEdit->apply();
-}
-
void CaptionEdit::slotAuthorChanged(const QString& text)
{
- bool dirty = (text != d->captionsValues[d->altLangStrEdit->currentLanguageCode()].author);
- d->altLangStrEdit->setDirty(dirty);
-
- if (dirty)
- emit signalModified();
+ CaptionValues captionValues = d->captionsValues.value(d->altLangStrEdit->currentLanguageCode());
+ if (text != captionValues.author)
+ {
+ d->altLangStrEdit->addCurrent();
+ }
}
} // namespace Digikam
--- trunk/extragear/graphics/digikam/libs/imageproperties/captionedit.h #1033676:1033677
@@ -56,7 +56,6 @@
CaptionsMap& values();
void reset();
- void apply();
Q_SIGNALS:
@@ -65,6 +64,7 @@
private Q_SLOTS:
void slotSelectionChanged(const QString&);
+ void slotCaptionModified(const QString&, const QString&);
void slotAddValue(const QString&, const QString&);
void slotDeleteValue(const QString&);
void slotAuthorChanged(const QString&);
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic