Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "projecttreeitem.h"
- #include <QPointF>
- #include "projecttreemodel.h"
- ProjectTreeItem::ProjectTreeItem(QDomNode &node, int row, ProjectTreeItem *parent)
- {
- domNode = node;
- rowNumber = row;
- parentItem = parent;
- }
- ProjectTreeItem::~ProjectTreeItem()
- {
- qDeleteAll(childItems);
- }
- ProjectTreeItem* ProjectTreeItem::parent()
- {
- return parentItem;
- }
- int ProjectTreeItem::row()
- {
- return rowNumber;
- }
- QDomNode ProjectTreeItem::node() const
- {
- return domNode;
- }
- ProjectTreeItem *ProjectTreeItem::child(int i)
- {
- if (childItems.contains(i))
- return childItems[i];
- if (i >= 0 && i < domNode.childNodes().count()){
- QDomNode childNode = domNode.childNodes().item(i);
- ProjectTreeItem *childItem = new ProjectTreeItem(childNode, i, this);
- childItems[i] = childItem;
- return childItem;
- }
- return 0;
- }
- QVariant ProjectTreeItem::data(int role) const
- {
- switch (role){
- case Qt::DisplayRole:
- case Qt::EditRole:
- if ((domNode.nodeName() == "project") ||
- (domNode.nodeName() == "task") ||
- (domNode.nodeName() == "file") ||
- (domNode.nodeName() == "group")){
- return domNode.attributes().namedItem("name").nodeValue();
- }
- if ((domNode.nodeName() == "input") ||
- (domNode.nodeName() == "output")){
- return domNode.nodeName();
- }
- if (domNode.nodeName() == "tasks"){
- return QObject::tr("Tasks");
- }
- if (domNode.nodeName() == "data"){
- return QObject::tr("Data");
- }
- break;
- case ProjectTreeModel::IdRole:
- if ((domNode.nodeName() == "task") ||
- (domNode.nodeName() == "group") ||
- (domNode.nodeName() == "input") ||
- (domNode.nodeName() == "output"))
- return domNode.attributes().namedItem("id").nodeValue();
- break;
- case ProjectTreeModel::FileNameRole:{
- QString fileName;
- if (domNode.nodeName() == "file"){
- fileName += "/src/"
- + domNode.parentNode().nodeValue()
- + domNode.parentNode().attributes().namedItem("name").nodeValue()+"/"
- + domNode.attributes().namedItem("name").nodeValue();
- return fileName;
- }
- break;
- }
- case ProjectTreeModel::PositionRole:
- if ((domNode.nodeName() == "task") ||
- (domNode.nodeName() == "group"))
- return QPointF(domNode.attributes().namedItem("x").nodeValue().toFloat(),
- domNode.attributes().namedItem("y").nodeValue().toFloat());
- break;
- case ProjectTreeModel::TypeRole:
- return domNode.nodeName();
- }
- return QVariant();
- }
- bool ProjectTreeItem::setData(const QVariant &value, int role)
- {
- switch (role){
- case Qt::EditRole:
- if ((domNode.nodeName() == "project")
- || (domNode.nodeName() == "task")
- || (domNode.nodeName() == "file")
- || (domNode.nodeName() == "group")){
- domNode.attributes().namedItem("name").setNodeValue(value.toString());
- return true;
- }
- break;
- case ProjectTreeModel::PositionRole:
- if ((domNode.nodeName() == "task") ||
- (domNode.nodeName() == "group")){
- domNode.attributes().namedItem("x").setNodeValue(QString::number(value.toPointF().x(), 'f', 0));
- domNode.attributes().namedItem("y").setNodeValue(QString::number(value.toPointF().y(), 'f', 0));
- return true;
- }
- break;
- }
- return false;
- }
- int ProjectTreeItem::childCount()
- {
- // if (domNode.nodeName() == "task")
- // return domNode.toElement().elementsByTagName("file").count();
- return domNode.childNodes().count();
- }
Advertisement
Add Comment
Please, Sign In to add comment