Guest User

Untitled

a guest
Jul 21st, 2012
151
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.90 KB | None | 0 0
  1. #include "projecttreeitem.h"
  2.  
  3. #include <QPointF>
  4.  
  5. #include "projecttreemodel.h"
  6.  
  7. ProjectTreeItem::ProjectTreeItem(QDomNode &node, int row, ProjectTreeItem *parent)
  8. {
  9.     domNode = node;
  10.     rowNumber = row;
  11.     parentItem = parent;
  12. }
  13.  
  14. ProjectTreeItem::~ProjectTreeItem()
  15. {
  16.     qDeleteAll(childItems);
  17. }
  18.  
  19. ProjectTreeItem* ProjectTreeItem::parent()
  20. {
  21.     return parentItem;
  22. }
  23.  
  24. int ProjectTreeItem::row()
  25. {
  26.     return rowNumber;
  27. }
  28.  
  29. QDomNode ProjectTreeItem::node() const
  30. {
  31.     return domNode;
  32. }
  33.  
  34. ProjectTreeItem *ProjectTreeItem::child(int i)
  35. {
  36.     if (childItems.contains(i))
  37.         return childItems[i];
  38.     if (i >= 0 && i < domNode.childNodes().count()){
  39.         QDomNode childNode = domNode.childNodes().item(i);
  40.         ProjectTreeItem *childItem = new ProjectTreeItem(childNode, i, this);
  41.         childItems[i] = childItem;
  42.         return childItem;
  43.     }
  44.     return 0;
  45. }
  46.  
  47.  
  48. QVariant ProjectTreeItem::data(int role) const
  49. {
  50.     switch (role){
  51.     case Qt::DisplayRole:
  52.     case Qt::EditRole:
  53.         if ((domNode.nodeName() == "project") ||
  54.                 (domNode.nodeName() == "task") ||
  55.                 (domNode.nodeName() == "file") ||
  56.                 (domNode.nodeName() == "group")){
  57.             return domNode.attributes().namedItem("name").nodeValue();
  58.         }
  59.         if ((domNode.nodeName() == "input") ||
  60.                 (domNode.nodeName() == "output")){
  61.             return domNode.nodeName();
  62.         }
  63.         if (domNode.nodeName() == "tasks"){
  64.             return QObject::tr("Tasks");
  65.         }
  66.  
  67.         if (domNode.nodeName() == "data"){
  68.             return QObject::tr("Data");
  69.         }
  70.         break;
  71.     case ProjectTreeModel::IdRole:
  72.         if ((domNode.nodeName() == "task") ||
  73.                 (domNode.nodeName() == "group") ||
  74.                 (domNode.nodeName() == "input") ||
  75.                 (domNode.nodeName() == "output"))
  76.             return domNode.attributes().namedItem("id").nodeValue();
  77.         break;
  78.     case ProjectTreeModel::FileNameRole:{
  79.         QString fileName;
  80.         if (domNode.nodeName() == "file"){
  81.             fileName += "/src/"
  82.                     + domNode.parentNode().nodeValue()
  83.                     + domNode.parentNode().attributes().namedItem("name").nodeValue()+"/"
  84.                     + domNode.attributes().namedItem("name").nodeValue();
  85.             return fileName;
  86.         }
  87.         break;
  88.     }
  89.     case ProjectTreeModel::PositionRole:
  90.         if ((domNode.nodeName() == "task") ||
  91.                 (domNode.nodeName() == "group"))
  92.             return QPointF(domNode.attributes().namedItem("x").nodeValue().toFloat(),
  93.                            domNode.attributes().namedItem("y").nodeValue().toFloat());
  94.         break;
  95.     case ProjectTreeModel::TypeRole:
  96.         return domNode.nodeName();
  97.     }
  98.  
  99.     return QVariant();
  100. }
  101.  
  102. bool ProjectTreeItem::setData(const QVariant &value, int role)
  103. {
  104.     switch (role){
  105.     case Qt::EditRole:
  106.         if ((domNode.nodeName() == "project")
  107.                 || (domNode.nodeName() == "task")
  108.                 || (domNode.nodeName() == "file")
  109.                 || (domNode.nodeName() == "group")){
  110.             domNode.attributes().namedItem("name").setNodeValue(value.toString());
  111.             return true;
  112.         }
  113.         break;
  114.     case ProjectTreeModel::PositionRole:
  115.         if ((domNode.nodeName() == "task") ||
  116.                 (domNode.nodeName() == "group")){
  117.             domNode.attributes().namedItem("x").setNodeValue(QString::number(value.toPointF().x(), 'f', 0));
  118.             domNode.attributes().namedItem("y").setNodeValue(QString::number(value.toPointF().y(), 'f', 0));
  119.             return true;
  120.         }
  121.         break;
  122.     }
  123.     return false;
  124. }
  125.  
  126. int ProjectTreeItem::childCount()
  127. {
  128. //    if (domNode.nodeName() == "task")
  129. //        return domNode.toElement().elementsByTagName("file").count();
  130.  
  131.     return domNode.childNodes().count();
  132. }
Advertisement
Add Comment
Please, Sign In to add comment