|
| EXmlItem (QString tagName, EXmlItem *parent=0) |
|
virtual | ~EXmlItem () |
|
virtual bool | load (const QDomElement element, QMap< QString, EXmlParserItem * > parser)=0 |
|
virtual bool | save (QDomElement &useElem) |
|
int | rowCount () const |
|
virtual QVariant | data (int column, int role=Qt::DisplayRole) const =0 |
| used by EXmlModel::data() to retrieve the role data of this item. More...
|
|
virtual bool | setData (int column, QVariant value, int role=Qt::EditRole) |
| Called by EXmlModel::setData() to set the role data for this item to value . More...
|
|
virtual void | setParent (EXmlItem *parent) |
| Do not forget to call the base class implementation, when reimplementing this function. More...
|
|
EXmlItem * | parent () const |
|
virtual bool | addChild (int row, EXmlItem *item, bool emitInsertRows=true) |
| Adds item as a child to this item at position row . More...
|
|
virtual bool | removeChild (int row, bool emitRemoveRows=true) |
| Removes and deletes the child at row . More...
|
|
EXmlItem * | child (int row) const |
|
int | row (EXmlItem *child) const |
| Returns the row of the child . More...
|
|
void | setTagName (QString tagName) |
|
QString | tagName () const |
| Return the tag name (in lowercase), which is handled by this EXmlItem. More...
|
|
virtual EXmlItem * | copy () const =0 |
| Returns a pointer to a new element, copied from this one. More...
|
|
An EXmlItem is used to handle XML tags and it's atrributes and or child tags.
It must be registered to the model with help of EXmlModel::registerParser(), so that the model knows, which tagname can be parsed by which EXmlItem. The function used as a callback must be a static public function and must return a pointer to an EXmlItem. The function shown below should do it in nearly all cases:
The pointer to the currently used EXmlModel is provided, by the EXmlParserItem created by EXmlModel::registerParser() automatically. Therefore you may use this pointer within your item or creation method to access the model.
- See also
- EDependencyItem as an example implementation
bool EXmlItem::addChild |
( |
int |
row, |
|
|
EXmlItem * |
item, |
|
|
bool |
emitInsertRows = true |
|
) |
| |
|
virtual |
Adds item
as a child to this item at position row
.
It also sets the parent of item
to this object.
Per default, also the signals layoutAboutToBeChanged() and layoutChanged() are emitted. To avoid those signals beeing emited, set emitLayoutChanges
to false. It is useful to set it to false, if you want to insert a large amount of items. Therefore the changes shoudl not be emited within the load() function.
virtual EXmlItem* EXmlItem::copy |
( |
| ) |
const |
|
pure virtual |
Returns a pointer to a new element, copied from this one.
To copy all standard stuff, use the copyBase(EXmlItem*) function. So implement this function in all base classes like this:
YourClass *myCopy = new YourClass();
myCopy->setCustomValue(customValue());
return myCopy;
Remember, that copyBase() does copy recursivly. That means, it adds copies of all children to the copy.
Implemented in EXmlStandardRootItem, and EDependencyItem.
void EXmlItem::copyBase |
( |
EXmlItem * |
target | ) |
const |
|
protectedvirtual |
Copies all the standard stuff into target
.
Call this function from copy(). Remember that this function copies recursivly. That means, it adds copies of all children to target
.
When subclassing, it can be useful to reimplement this function, to allow copy & paste code from copy() help at the subclasses of your subclasses. In this case, you should remamber to call the base implementation at the appropriate place:
virtual bool EXmlItem::load |
( |
const QDomElement |
element, |
|
|
QMap< QString, EXmlParserItem * > |
parser |
|
) |
| |
|
pure virtual |
Is called from the Model or the parent item, to load the content of element
. Therefore this function must also create child EXmlItem's, if child tags are found, which can not be handled by it's own. For this purpose the mapping parser
is given. The key of this map is the tagName which belongs to the parser item. If the found tag is not in the list, return false. If it is found, call the EXmlParseritem::load(QDomElement, EXmlItem *, QMap<QString, EXmlParserItem*>) function to process underlaying data. But create a new QDomElement as a child.
- Note
- If adding childs with addChild(), set emitLayoutChanges to false, to avoid emitting not needed layout changed signals.
- See also
- EDependencyItem::load() as an implementation example
Implemented in EXmlStandardRootItem, and EDependencyItem.