mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
(#467) Using subclassed treeview to notify the model about drag end
Using new class PdmUiTreeViewWidget instead of QTreeView in PdmUiTreeViewEditor. PdmUiTreeViewWidget handles drag leave events and calls endDrag() on the model.
This commit is contained in:
parent
b046ca0769
commit
f4bbbcb7a2
@ -57,6 +57,7 @@ public:
|
||||
virtual bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) = 0;
|
||||
virtual QMimeData* mimeData(const QModelIndexList &indexes) const = 0;
|
||||
virtual QStringList mimeTypes() const = 0;
|
||||
virtual void endDrag() = 0;
|
||||
};
|
||||
|
||||
inline PdmUiDragDropHandle::~PdmUiDragDropHandle() { }
|
||||
|
@ -86,7 +86,7 @@ QWidget* PdmUiTreeViewEditor::createWidget(QWidget* parent)
|
||||
m_mainWidget->setLayout(m_layout);
|
||||
|
||||
m_treeViewModel = new caf::PdmUiTreeViewModel(this);
|
||||
m_treeView = new QTreeView(m_mainWidget);
|
||||
m_treeView = new PdmUiTreeViewWidget(m_mainWidget);
|
||||
m_treeView->setModel(m_treeViewModel);
|
||||
m_treeView->installEventFilter(this);
|
||||
|
||||
|
@ -39,11 +39,13 @@
|
||||
|
||||
#include "cafPdmUiTreeEditorHandle.h"
|
||||
#include "cafPdmUiFieldEditorHandle.h"
|
||||
#include "cafPdmUiTreeViewModel.h"
|
||||
|
||||
#include <QAbstractItemModel>
|
||||
#include <QPointer>
|
||||
#include <QWidget>
|
||||
#include <QItemSelectionModel>
|
||||
#include <QTreeView>
|
||||
|
||||
|
||||
class MySortFilterProxyModel;
|
||||
@ -75,7 +77,29 @@ public:
|
||||
QStringList columnHeaders;
|
||||
};
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
class PdmUiTreeViewWidget : public QTreeView
|
||||
{
|
||||
public:
|
||||
PdmUiTreeViewWidget(QWidget* parent = 0) : QTreeView(parent) {};
|
||||
virtual ~PdmUiTreeViewWidget() {};
|
||||
|
||||
protected:
|
||||
virtual void dragLeaveEvent(QDragLeaveEvent* event)
|
||||
{
|
||||
caf::PdmUiTreeViewModel* treeViewModel = dynamic_cast<caf::PdmUiTreeViewModel*>(model());
|
||||
if (treeViewModel)
|
||||
{
|
||||
treeViewModel->endDrag();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
class PdmUiTreeViewEditor : public PdmUiTreeEditorHandle
|
||||
{
|
||||
Q_OBJECT
|
||||
@ -126,17 +150,17 @@ private:
|
||||
virtual bool eventFilter(QObject *obj, QEvent *event);
|
||||
|
||||
private:
|
||||
QPointer<QWidget> m_mainWidget;
|
||||
QVBoxLayout* m_layout;
|
||||
QPointer<QWidget> m_mainWidget;
|
||||
QVBoxLayout* m_layout;
|
||||
|
||||
QTreeView* m_treeView;
|
||||
PdmUiTreeViewModel* m_treeViewModel;
|
||||
PdmUiTreeViewWidget* m_treeView;
|
||||
PdmUiTreeViewModel* m_treeViewModel;
|
||||
|
||||
PdmUiTreeViewEditorAttribute m_editorAttributes;
|
||||
PdmUiTreeViewEditorAttribute m_editorAttributes;
|
||||
|
||||
bool m_useDefaultContextMenu;
|
||||
bool m_updateSelectionManager;
|
||||
bool m_appendClassNameToUiItemText;
|
||||
bool m_useDefaultContextMenu;
|
||||
bool m_updateSelectionManager;
|
||||
bool m_appendClassNameToUiItemText;
|
||||
};
|
||||
|
||||
|
||||
|
@ -794,6 +794,17 @@ void PdmUiTreeViewModel::setDragDropHandle(PdmUiDragDropHandle* dragDropHandle)
|
||||
m_dragDropHandle = dragDropHandle;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void PdmUiTreeViewModel::endDrag()
|
||||
{
|
||||
if (m_dragDropHandle)
|
||||
{
|
||||
m_dragDropHandle->endDrag();
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
@ -74,7 +74,8 @@ public:
|
||||
QModelIndex findModelIndex(const PdmUiItem* object) const;
|
||||
|
||||
void setDragDropHandle(PdmUiDragDropHandle* dragDropHandle);
|
||||
|
||||
void endDrag();
|
||||
|
||||
private:
|
||||
void updateSubTreeRecursive(const QModelIndex& uiSubTreeRootModelIdx, PdmUiTreeOrdering* uiModelSubTreeRoot, PdmUiTreeOrdering* updatedPdmSubTreeRoot);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user