/// <summary>Appends a qualifier to the qualifier list and sets respective options.</summary> /// <param name="qualNode">a qualifier node.</param> /// <exception cref="Com.Adobe.Xmp.XMPException"></exception> public virtual void AddQualifier(Com.Adobe.Xmp.Impl.XMPNode qualNode) { AssertQualifierNotExisting(qualNode.GetName()); qualNode.SetParent(this); qualNode.GetOptions().SetQualifier(true); GetOptions().SetHasQualifiers(true); // contraints if (qualNode.IsLanguageNode()) { // "xml:lang" is always first and the option "hasLanguage" is set options.SetHasLanguage(true); GetQualifier().Add(0, qualNode); } else { if (qualNode.IsTypeNode()) { // "rdf:type" must be first or second after "xml:lang" and the option "hasType" is set options.SetHasType(true); GetQualifier().Add(!options.GetHasLanguage() ? 0 : 1, qualNode); } else { // other qualifiers are appended GetQualifier().Add(qualNode); } } }
/// <summary>Removes one qualifier node and fixes the options.</summary> /// <param name="qualNode">qualifier to remove</param> public virtual void RemoveQualifier(Com.Adobe.Xmp.Impl.XMPNode qualNode) { PropertyOptions opts = GetOptions(); if (qualNode.IsLanguageNode()) { // if "xml:lang" is removed, remove hasLanguage-flag too opts.SetHasLanguage(false); } else { if (qualNode.IsTypeNode()) { // if "rdf:type" is removed, remove hasType-flag too opts.SetHasType(false); } } GetQualifier().Remove(qualNode); if (qualifier.IsEmpty()) { opts.SetHasQualifiers(false); qualifier = null; } }