bool DomModel::setData(const QModelIndex &index, const QVariant &value, int role) { if (!index.isValid()) return false; DomItem *item = static_cast<DomItem*>(index.internalPointer()); switch (role) { case Qt::EditRole: item->setName(value.toString()); break; case Qt::UserRole: if (item->isFolder()) item->setName(value.toString()); else if (item->isSiteReference()) item->setUuid(value.toString()); break; default: return false; } emit dataChanged(index, index); return true; }
DomModel::ItemType DomModel::type(const QModelIndex &index) const { if (!index.isValid()) return Unknown; DomItem *item = static_cast<DomItem*>(index.internalPointer()); if (item->isFolder()) return Folder; else if (item->isSiteReference()) { QString uuid = data(index, Qt::UserRole).toString(); // get favor attributes QDomNodeList siteList = domDocument.elementsByTagName("site"); for (int i=0; i<siteList.count(); i++) { QDomElement element = siteList.item(i).toElement(); if (element.attribute("uuid") == uuid) if (element.attribute("favor") == "1") return Favorite; else return Site; } } return Unknown; }