USGS

Isis 3.0 Object Programmers' Reference

Home

TreeView.cpp
1 #include "IsisDebug.h"
2 
3 #include "TreeView.h"
4 
5 #include <QLabel>
6 #include <QVariant>
7 #include <QVBoxLayout>
8 
9 #include "TreeViewContent.h"
10 #include "TreeViewHeader.h"
11 #include "AbstractTreeModel.h"
12 
13 
14 namespace Isis {
15  namespace CnetViz {
16  TreeView::TreeView(QWidget *parent) : QWidget(parent) {
17  nullify();
18 
19  m_active = false;
20 
21  m_content = new TreeViewContent(this);
22  m_header = new TreeViewHeader(m_content, this);
23  connect(m_header, SIGNAL(activated()), this, SIGNAL(activated()));
24  connect(m_content, SIGNAL(treeSelectionChanged()),
25  this, SIGNAL(selectionChanged()));
26  // m_content->setContextMenuPolicy(Qt::CustomContextMenu);
27 
28  QVBoxLayout *layout = new QVBoxLayout;
29  layout->addWidget(m_header);
30  layout->addWidget(m_content);
31  layout->setContentsMargins(0, 0, 0, 0);
32  layout->setSpacing(0);
33 
34  setLayout(layout);
35  }
36 
37 
38  TreeView::~TreeView() {
39  }
40 
41 
42  QSize TreeView::sizeHint() {
43  if (parentWidget())
44  return QSize(parentWidget()->width() / 4, parentWidget()->height() / 2);
45 
46  return QSize();
47  }
48 
49 
50  QFont TreeView::getContentFont() const {
51  return m_content->font();
52  }
53 
54 
55  void TreeView::setModel(AbstractTreeModel *someModel) {
56  ASSERT(m_content);
57  m_content->setModel(someModel);
58 
59  connect(someModel, SIGNAL(filterProgressChanged(int)),
60  m_header, SLOT(updateFilterProgress(int)));
61  connect(someModel, SIGNAL(filterProgressRangeChanged(int, int)),
62  m_header, SLOT(updateFilterProgressRange(int, int)));
63  connect(someModel, SIGNAL(rebuildProgressChanged(int)),
64  m_header, SLOT(updateRebuildProgress(int)));
65  connect(someModel, SIGNAL(rebuildProgressRangeChanged(int, int)),
66  m_header, SLOT(updateRebuildProgressRange(int, int)));
67  connect(someModel, SIGNAL(filterCountsChanged(int, int)),
68  m_header, SLOT(handleFilterCountsChanged(int, int)));
69 
70  connect(someModel, SIGNAL(modelModified()),
71  this, SIGNAL(selectionChanged()));
72  }
73 
74 
75  AbstractTreeModel *TreeView::getModel() const {
76  return m_content->getModel();
77  }
78 
79 
80  bool TreeView::isActive() const {
81  return m_active;
82  }
83 
84 
85  QString TreeView::getTitle() const {
86  return m_header->getText();
87  }
88 
89 
90  void TreeView::setTitle(QString someTitle) {
91  m_header->setText(someTitle);
92  }
93 
94 
95  void TreeView::deactivate() {
96  m_active = false;
97 
98  ASSERT(m_header);
99  if (m_header)
100  m_header->setActive(false);
101  update();
102  }
103 
104 
105  void TreeView::activate() {
106  m_active = true;
107 
108  ASSERT(m_header);
109  if (m_header)
110  m_header->setActive(true);
111  update();
112  }
113 
114 
115  void TreeView::handleModelSelectionChanged() {
116  m_content->refresh();
117  }
118 
119 
120  void TreeView::nullify() {
121  m_header = NULL;
122  m_content = NULL;
123  }
124  }
125 }