Medical Imaging Interaction Toolkit  2018.4.99-389bf124
Medical Imaging Interaction Toolkit
QmitkDataNodeSelectionProvider.cpp
Go to the documentation of this file.
1 /*============================================================================
2 
3 The Medical Imaging Interaction Toolkit (MITK)
4 
5 Copyright (c) German Cancer Research Center (DKFZ)
6 All rights reserved.
7 
8 Use of this source code is governed by a 3-clause BSD license that can be
9 found in the LICENSE file.
10 
11 ============================================================================*/
12 
14 
15 #include "QmitkCustomVariants.h"
16 #include "QmitkEnums.h"
17 
18 #include "internal/QmitkDataNodeSelection.h"
19 
21  : berry::QtSelectionProvider()
22 {
23 
24 }
25 
27 {
28  return this->GetDataNodeSelection();
29 }
30 
32  QItemSelectionModel::SelectionFlags flags)
33 {
34  if (!qSelectionModel) return;
35 
36  mitk::DataNodeSelection::ConstPointer dataNodeSelection = selection.Cast<const mitk::DataNodeSelection>();
37  if (dataNodeSelection)
38  {
39  const QAbstractItemModel* model = qSelectionModel->model();
40 
41  QItemSelection newSelection;
42  const std::list<mitk::DataNode::Pointer> selectedNodes = dataNodeSelection->GetSelectedDataNodes();
43  for (auto i = selectedNodes.begin();
44  i != selectedNodes.end(); ++i)
45  {
46  QModelIndexList matched = model->match(model->index(0, 0), QmitkDataNodeRawPointerRole,
47  QVariant::fromValue<mitk::DataNode*>(i->GetPointer()), 1, Qt::MatchRecursive);
48  if (!matched.empty())
49  {
50  newSelection.select(matched.front(), matched.front());
51  }
52  }
53  qSelectionModel->select(newSelection, flags);
54  }
55  else
56  {
57  QtSelectionProvider::SetSelection(selection, flags);
58  }
59 }
60 
63 {
64  if (qSelectionModel)
65  {
66  mitk::DataNodeSelection::ConstPointer sel(new QmitkDataNodeSelection(
67  qSelectionModel->selection()));
68  return sel;
69  }
70 
72 }
73 
75  const QItemSelection& /*selected*/, const QItemSelection& /*deselected*/)
76 {
81 }
berry::SmartPointer< const Self > ConstPointer
Definition: berryObject.h:83
QItemSelectionModel * qSelectionModel
SmartPointer< Other > Cast() const
berry::ISelection::ConstPointer GetSelection() const override
ISelectionChangedListener::Events selectionEvents
void FireSelectionChanged(const QItemSelection &selected, const QItemSelection &deselected) override
void SetSelection(const berry::ISelection::ConstPointer &selection, QItemSelectionModel::SelectionFlags flags) override
mitk::DataNodeSelection::ConstPointer GetDataNodeSelection() const
Message1< const SelectionChangedEvent::Pointer & > selectionChanged