Isis 3 Programmer Reference
AbstractParentItem.cpp
1 #include "IsisDebug.h"
2 
3 #include "AbstractParentItem.h"
4 
5 #include <QList>
6 
7 #include "RootItem.h"
8 
9 
10 namespace Isis {
11  AbstractParentItem::AbstractParentItem(AbstractTreeItem *parent) :
12  AbstractTreeItem(parent) {
13  m_children = NULL;
14  m_firstVisibleChild = NULL;
15  m_lastVisibleChild = NULL;
16  m_children = new QList< AbstractTreeItem * >;
17  }
18 
19 
20  AbstractParentItem::~AbstractParentItem() {
21  if (m_children) {
22  for (int i = 0; i < m_children->size(); i++) {
23  delete(*m_children)[i];
24  (*m_children)[i] = NULL;
25  }
26  delete m_children;
27  m_children = NULL;
28  }
29 
30  if (m_firstVisibleChild) {
31  m_firstVisibleChild = NULL;
32  }
33 
34  if (m_lastVisibleChild) {
35  m_lastVisibleChild = NULL;
36  }
37  }
38 
39 
40  AbstractTreeItem *AbstractParentItem::childAt(int row) const {
41  ASSERT(m_children);
42  ASSERT(row >= 0 && row < m_children->size());
43  return m_children->value(row);
44  }
45 
46 
47  QList< AbstractTreeItem * > AbstractParentItem::getChildren() const {
48  ASSERT(m_children);
49  return *m_children;
50  }
51 
52 
53  AbstractTreeItem *AbstractParentItem::getFirstVisibleChild() const {
54  return m_firstVisibleChild;
55  }
56 
57 
58  AbstractTreeItem *AbstractParentItem::getLastVisibleChild() const {
59  return m_lastVisibleChild;
60  }
61 
62 
63  int AbstractParentItem::indexOf(AbstractTreeItem *child) const {
64  ASSERT(child);
65  ASSERT(m_children);
66  return m_children->indexOf(child);
67  }
68 
69 
70  int AbstractParentItem::childCount() const {
71  ASSERT(m_children);
72  return m_children->size();
73  }
74 
75 
76  void AbstractParentItem::addChild(AbstractTreeItem *child) {
77  ASSERT(child);
78  ASSERT(m_children);
79  ASSERT(!dynamic_cast< RootItem * >(child));
80 
81  // if (!m_firstVisibleChild && child->isVisible())
82  // {
83  // m_firstVisibleChild = child;
84  // m_lastVisibleChild = child;
85  // }
86  //
87  // AbstractTreeItem * childWithNewNext = NULL;
88  // if (m_lastVisibleChild && m_firstVisibleChild != child)
89  // {
90  // childWithNewNext = m_lastVisibleChild;
91  // }
92 
93  m_children->append(child);
94  child->setParent(this);
95 
96  // if (childWithNewNext && child->isVisible())
97  // {
98  // childWithNewNext->setNextVisiblePeer(child);
99  // m_lastVisibleChild = child;
100  // }
101  }
102 
103 
104  void AbstractParentItem::setFirstVisibleChild(AbstractTreeItem *child) {
105  m_firstVisibleChild = child;
106  }
107 
108 
109  void AbstractParentItem::setLastVisibleChild(AbstractTreeItem *child) {
110  m_lastVisibleChild = child;
111  }
112 }
113 
Namespace for ISIS/Bullet specific routines.
Definition: Apollo.h:31