31#include <tqstringlist.h>
35class TagSet::TagSetPrivate
38 TQMap<TQString,Tag> map;
41TagSet::TagSet(TQObject* parent) : TQObject(parent), d(new TagSetPrivate)
47 TQValueList<Tag> tags = d->map.values();
48 for (TQValueList<Tag>::Iterator it = tags.begin(); it != tags.end(); ++it)
49 (*it).removedFromTagSet( this);
55void TagSet::insert( const Tag& tag)
57 if (!d->map.contains(tag.id()))
59 d->map.insert(tag.id(), tag);
60 tag.addedToTagSet( this);
61 emit signalTagAdded(tag);
65void TagSet::remove( const Tag& tag)
67 if (d->map.contains(tag.id()))
69 d->map.remove(tag.id());
70 tag.removedFromTagSet( this);
71 emit signalTagRemoved(tag);
75bool TagSet::containsID( const TQString& id) const
77 return d->map.contains( id);
80bool TagSet::contains( const Tag& tag) const
82 return d->map.contains(tag.id());
85Tag TagSet::findByID( const TQString& id) const
87 return d->map.contains( id) ? d->map[id] : Tag();
90TQMap<TQString,Tag> TagSet::toMap() const
95void TagSet::readFromXML( const TQDomDocument& doc)
97 TQDomElement root = doc.documentElement();
102 TQDomNodeList list = root.elementsByTagName(TQString::fromLatin1( "tag"));
104 for (uint i = 0; i < list.length(); ++i)
106 TQDomElement e = list.item(i).toElement();
109 if (e.hasAttribute(TQString::fromLatin1( "id")))
111 TQString id = e.attribute(TQString::fromLatin1( "id"));
112 TQString name = e.text();
113 TQString scheme = e.attribute(TQString::fromLatin1( "scheme"));
114 Tag tag( id, name, scheme);
116 TQString icon = e.attribute(TQString::fromLatin1( "icon"));
127void TagSet::tagUpdated( const Tag& tag)
129 emit signalTagUpdated(tag);
132TQDomDocument TagSet::toXML() const
135 doc.appendChild( doc.createProcessingInstruction( "xml", "version=\"1.0\" encoding=\"UTF-8\"" ) );
137 TQDomElement root = doc.createElement( "tagSet");
138 root.setAttribute( "version", "0.1" );
139 doc.appendChild(root);
141 TQValueList<Tag> list = d->map.values();
142 for (TQValueList<Tag>::ConstIterator it = list.begin(); it != list.end(); ++it)
145 TQDomElement tn = doc.createElement( "tag");
147 TQDomText text = doc.createTextNode((*it).name());
148 tn.setAttribute(TQString::fromLatin1( "id"),(*it).id());
149 if (!(*it).scheme().isEmpty())
150 tn.setAttribute(TQString::fromLatin1( "scheme"),(*it).scheme());
151 if (!(*it).icon().isEmpty())
152 tn.setAttribute(TQString::fromLatin1( "icon"),(*it).icon());
153 tn.appendChild(text);
154 root.appendChild(tn);
|