Isis 3 Programmer Reference
ProjectItemTreeView.cpp
Go to the documentation of this file.
1 
23 #include "ProjectItemTreeView.h"
24 
25 #include <QAbstractItemView>
26 #include <QDesktopWidget>
27 #include <QEvent>
28 #include <QObject>
29 #include <QRect>
30 #include <QTreeView>
31 #include <QVBoxLayout>
32 #include <QWidget>
33 
34 #include "ProjectItem.h"
35 #include "ProjectItemModel.h"
36 
37 namespace Isis {
44 
45  m_treeView = new QTreeView(this);
46  m_treeView->installEventFilter(this);
47 
49  // 2017-04-12 TSucharski Turn off for now, since not accepting drops, not point in allowing
50  // drags
51 // m_treeView->setDragEnabled(true);
52  m_treeView->setDragEnabled(false);
53  m_treeView->setAcceptDrops(false);
54  m_treeView->setHeaderHidden(true);
55 
56  // Simply doing this creates scrollbar when the dock widget within the main window is made too
57  // small- looks like QMainWindow and/or QDockWidget handles the scrollbars for us.
58  setCentralWidget(m_treeView);
59 
60  //This works so that it cannot be shrunk in width, only grown
61  setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Expanding);
62 
63  // Currently set all items on view to un-editable
64  //m_treeView->setEditTriggers(QAbstractItemView::NoEditTriggers);
65 
66 // setAcceptDrops(true);
67  }
68 
69 
76  QDesktopWidget deskTop;
77  QRect availableSpace = deskTop.availableGeometry(deskTop.primaryScreen());
78  return QSize(.15 * availableSpace.width(), .5 * availableSpace.height());
79  }
80 
81 
86 
87 
94  return m_treeView;
95  }
96 
97 
105  disconnect(internalModel(), 0, this, 0);
106 
108 
109  m_treeView->reset();
110  m_treeView->setModel(model);
111  m_treeView->setSelectionModel( model->selectionModel() );
112  m_treeView->setSelectionMode(QAbstractItemView::ExtendedSelection);
113 
114  connect( model, SIGNAL( itemAdded(ProjectItem *) ),
115  this, SLOT( onItemAdded(ProjectItem *) ) );
116 
117  }
118 
119 
126  ProjectItem *parent = item->parent();
127  if (!parent) {
128  return;
129  }
130  if ( !parent->isImageList() && !parent->isControlList() ) {
131  m_treeView->expand( parent->index() );
132  }
133  }
134 
135 
145  bool ProjectItemTreeView::eventFilter(QObject *watched, QEvent *event) {
146  if (event->type() == QEvent::DragEnter) {
147  return true;
148  }
149  else if (event->type() == QEvent::Drop) {
150  return true;
151  }
152 
153  return AbstractProjectItemView::eventFilter(watched, event);
154  }
155 
156 }
bool isImageList() const
Returns true if an ImageList is stored in the data of the item.
void onItemAdded(ProjectItem *item)
Expands the parent project item in the tree view to show the added item.
$Date$ $Revision$
QTreeView * treeView()
Returns the tree view.
~ProjectItemTreeView()
Default destructor.
virtual void setInternalModel(ProjectItemModel *model)
Sets the internal model of the view.
virtual QSize sizeHint() const
Returns the suggested size.
ProjectItem * parent() const
Returns the parent item of this item.
QTreeView * m_treeView
The tree view (widget)
AbstractProjectItemView is a base class for views of a ProjectItemModel in Qt&#39;s model-view framework...
Provides access to data stored in a Project through Qt&#39;s model-view framework.
virtual ProjectItemModel * internalModel()
Returns the internal model of the view.
QItemSelectionModel * selectionModel()
Returns the internal selection model.
bool eventFilter(QObject *watched, QEvent *event)
Filters out drag and drop events so that they are handled by the ProjectItemTreeView.
ProjectItemTreeView(QWidget *parent=0)
Constructs a ProjectItemTreeView.
Unless noted otherwise, the portions of Isis written by the USGS are public domain.
bool isControlList() const
Returns true if a ControlList is stored in the data of the item.
Represents an item of a ProjectItemModel in Qt&#39;s model-view framework.
Definition: ProjectItem.h:146
Namespace for ISIS/Bullet specific routines.
Definition: Apollo.h:31
virtual void setInternalModel(ProjectItemModel *model)
Sets the model so that the internal proxy model exactly matches the source model. ...
$Date$ $Revision$
virtual ProjectItemModel * model()
Returns the model used by the view.