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