285 QVariant v1 = *
d->value.variant;
286 QVariant v2 = *
v.d->value.variant;
287 Q_ASSERT(v2.canConvert(v1.type()));
290 warnMetaData <<
"KisMetaData: Merging metadata of type" << v1.type() <<
"is unsupported!";
293 *
d->value.variant = qMax(v1.toDate(), v2.toDate());
295 case QVariant::DateTime:
296 *
d->value.variant = qMax(v1.toDate(), v2.toDate());
298 case QVariant::Double:
299 *
d->value.variant = v1.toDouble() + v2.toDouble();
302 *
d->value.variant = v1.toInt() + v2.toInt();
305 *
d->value.variant = v1.toList() + v2.toList();
307 case QVariant::LongLong:
308 *
d->value.variant = v1.toLongLong() + v2.toLongLong();
310 case QVariant::Point:
311 *
d->value.variant = v1.toPoint() + v2.toPoint();
313 case QVariant::PointF:
314 *
d->value.variant = v1.toPointF() + v2.toPointF();
316 case QVariant::String:
317 *
d->value.variant = QVariant(v1.toString() + v2.toString());
319 case QVariant::StringList:
320 *
d->value.variant = v1.toStringList() + v2.toStringList();
322 case QVariant::Time: {
323 QTime t1 = v1.toTime();
324 QTime t2 = v2.toTime();
325 int h = t1.hour() + t2.hour();
326 int m = t1.minute() + t2.minute();
327 int s = t1.second() + t2.second();
328 int ms = t1.msec() + t2.msec();
341 *
d->value.variant = QTime(h, m, s, ms);
345 *
d->value.variant = v1.toUInt() + v2.toUInt();
347 case QVariant::ULongLong:
348 *
d->value.variant = v1.toULongLong() + v2.toULongLong();
358 *(
d->value.array) += *(
v.d->value.array);
360 d->value.array->append(
v);
374 d->value.rational->numerator =
375 (
d->value.rational->numerator
376 *
v.d->value.rational->denominator)
377 + (
v.d->value.rational->numerator
378 *
d->value.rational->denominator);
379 d->value.rational->denominator *=
v.d->value.rational->denominator;
389 QMap<QString, KisMetaData::Value> langArray;
391 Q_ASSERT(val.
d->propertyQualifiers.contains(
"xml:lang"));
394 QVariant valKeyVar = valKeyVal.
asVariant();
395 Q_ASSERT(valKeyVar.type() == QVariant::String);
396 langArray[valKeyVar.toString()] = val;
405 return i18n(
"Invalid value.");
407 return d->value.variant->toString();
413 QString r = QString(
"[%1]{ ").arg(
d->value.array->size());
414 for (
int i = 0; i <
d->value.array->size(); ++i) {
415 const Value& val =
d->value.array->at(i);
417 if (i !=
d->value.array->size() - 1) {
428 for (
int i = 0; i < fields.count(); ++i) {
429 const QString& field = fields[i];
430 const Value& val =
d->value.structure->value(field);
431 r += field +
" => " + val.
toString();
432 if (i !=
d->value.array->size() - 1) {
442 return QString(
"%1 / %2").arg(
d->value.rational->numerator).arg(
d->value.rational->denominator);
444 return i18n(
"Invalid value.");