BornAgain  1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
ItemTreeView.cpp
Go to the documentation of this file.
1 // ************************************************************************************************
2 //
3 // BornAgain: simulate and fit reflection and scattering
4 //
5 //! @file GUI/coregui/Views/SampleDesigner/ItemTreeView.cpp
6 //! @brief Implements class ItemTreeView
7 //!
8 //! @homepage http://www.bornagainproject.org
9 //! @license GNU General Public License v3 or higher (see COPYING)
10 //! @copyright Forschungszentrum Jülich GmbH 2018
11 //! @authors Scientific Computing Group at MLZ (see CITATION, AUTHORS)
12 //
13 // ************************************************************************************************
14 
17 #include <QDragMoveEvent>
18 #include <QMimeData>
19 #include <QtCore/QXmlStreamWriter>
20 
21 ItemTreeView::ItemTreeView(QWidget* parent) : QTreeView(parent)
22 {
23 
24  setAllColumnsShowFocus(true);
25  setWindowTitle("Sample Tree View");
26  setObjectName("ObjectTree");
27  setContextMenuPolicy(Qt::CustomContextMenu);
28  setDragDropMode(QAbstractItemView::InternalMove);
29 }
30 
31 ItemTreeView::~ItemTreeView() = default;
32 
33 void ItemTreeView::dragMoveEvent(QDragMoveEvent* event)
34 {
35  QTreeView::dragMoveEvent(event);
36  SessionModel* model = static_cast<SessionModel*>(this->model());
37  model->setDraggedItemType(QString());
38  QByteArray xml_data = qUncompress(event->mimeData()->data(SessionXML::ItemMimeType));
39  QXmlStreamReader reader(xml_data);
40  while (!reader.atEnd()) {
41  reader.readNext();
42  if (reader.isStartElement()) {
43  if (reader.name() == SessionXML::ItemTag) {
44  const QString model_type =
45  reader.attributes().value(SessionXML::ModelTypeAttribute).toString();
47  break;
48  }
49  }
50  }
51 }
Defines class ItemTreeView.
Defines class SessionModel.
virtual ~ItemTreeView()
ItemTreeView(QWidget *parent=0)
virtual void dragMoveEvent(QDragMoveEvent *event)
void setDraggedItemType(const QString &type)
Definition: SessionModel.h:201
std::string model_type
Definition: types.h:23
const QString ModelTypeAttribute("ModelType")
const QString ItemTag("Item")
const QString ItemMimeType
Definition: SessionXML.h:26