#3037 AppFwk : Inherit from FieldEditorHandle instead of EditorHandle

This commit is contained in:
Magne Sjaastad 2018-06-11 12:55:26 +02:00
parent e814272bea
commit 477d6cedd5
5 changed files with 41 additions and 47 deletions

View File

@ -792,7 +792,7 @@ MainWindow::~MainWindow()
m_pdmUiTreeView->setPdmItem(nullptr);
m_pdmUiTreeView2->setPdmItem(nullptr);
m_pdmUiPropertyView->showProperties(nullptr);
m_pdmUiTableView->setListField(nullptr);
m_pdmUiTableView->setUiFieldHandle(nullptr);
delete m_pdmUiTreeView;
delete m_pdmUiTreeView2;
@ -955,30 +955,33 @@ void MainWindow::slotShowTableView()
std::vector<caf::PdmUiItem*> selection;
m_pdmUiTreeView2->selectedUiItems(selection);
caf::PdmObjectHandle* obj = nullptr;
caf::PdmChildArrayFieldHandle* listField = nullptr;
caf::PdmUiFieldHandle* uiFieldHandle = nullptr;
caf::PdmChildArrayFieldHandle* childArrayFieldHandle = nullptr;
if (selection.size())
{
caf::PdmUiItem* pdmUiItem = selection[0];
caf::PdmUiFieldHandle* guiField = dynamic_cast<caf::PdmUiFieldHandle*>(pdmUiItem);
if (guiField) listField = dynamic_cast<caf::PdmChildArrayFieldHandle*>(guiField->fieldHandle());
if (listField)
uiFieldHandle = dynamic_cast<caf::PdmUiFieldHandle*>(pdmUiItem);
if (uiFieldHandle)
{
if (!listField->hasSameFieldCountForAllObjects())
childArrayFieldHandle = dynamic_cast<caf::PdmChildArrayFieldHandle*>(uiFieldHandle->fieldHandle());
}
if (childArrayFieldHandle)
{
if (!childArrayFieldHandle->hasSameFieldCountForAllObjects())
{
listField = nullptr;
uiFieldHandle = nullptr;
}
}
}
m_pdmUiTableView->setListField(listField);
m_pdmUiTableView->setUiFieldHandle(uiFieldHandle);
if (listField)
if (uiFieldHandle)
{
listField->uiCapability()->updateConnectedEditors();
uiFieldHandle->updateConnectedEditors();
}
}

View File

@ -76,11 +76,11 @@ PdmUiTableView::~PdmUiTableView()
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void PdmUiTableView::setListField(PdmChildArrayFieldHandle* listField)
void PdmUiTableView::setUiFieldHandle(PdmUiFieldHandle* uiFieldHandle)
{
CAF_ASSERT(m_listViewEditor);
m_listViewEditor->setListField(listField);
m_listViewEditor->setField(uiFieldHandle);
// SIG_CAF_HACK
m_listViewEditor->updateUi(m_uiConfigName);

View File

@ -84,7 +84,7 @@ public:
// SIG_CAF_HACK
void setUiConfigurationName(QString uiConfigName);
void setListField(PdmChildArrayFieldHandle* object);
void setUiFieldHandle(PdmUiFieldHandle* uiFieldHandle);
void enableDefaultContextMenu(bool enable);
void enableHeaderText(bool enable);

View File

@ -96,7 +96,6 @@ PdmUiTableViewEditor::PdmUiTableViewEditor()
m_tableHeading = nullptr;
m_tableModelPdm = nullptr;
m_tableHeadingIcon = nullptr;
m_pdmListField = nullptr;
m_delegate = nullptr;
m_useDefaultContextMenu = false;
@ -161,7 +160,8 @@ QWidget* PdmUiTableViewEditor::createWidget(QWidget* parent)
//--------------------------------------------------------------------------------------------------
void PdmUiTableViewEditor::configureAndUpdateUi(const QString& uiConfigName)
{
m_tableModelPdm->setPdmData(m_pdmListField, uiConfigName);
auto childArrayFH = childArrayFieldHandle();
m_tableModelPdm->setPdmData(childArrayFH, uiConfigName);
if (m_tableModelPdm->rowCount() > 0)
{
@ -178,11 +178,11 @@ void PdmUiTableViewEditor::configureAndUpdateUi(const QString& uiConfigName)
}
}
if (m_pdmListField && m_pdmListField->uiCapability())
if (childArrayFH && childArrayFH->uiCapability())
{
QString text = "";
m_tableHeadingIcon->setPixmap(m_pdmListField->uiCapability()->uiIcon(uiConfigName).pixmap(16, 16));
m_tableHeading->setText(m_pdmListField->uiCapability()->uiName(uiConfigName) + QString(" (%1)").arg(m_pdmListField->size()));
m_tableHeadingIcon->setPixmap(childArrayFH->uiCapability()->uiIcon(uiConfigName).pixmap(16, 16));
m_tableHeading->setText(childArrayFH->uiCapability()->uiName(uiConfigName) + QString(" (%1)").arg(childArrayFH->size()));
m_tableModelPdm->createPersistentPushButtonWidgets(m_tableView);
}
@ -193,29 +193,6 @@ void PdmUiTableViewEditor::configureAndUpdateUi(const QString& uiConfigName)
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void PdmUiTableViewEditor::setListField(PdmChildArrayFieldHandle* pdmListField)
{
m_pdmListField = pdmListField;
caf::PdmUiFieldHandle* uifield = nullptr;
if (m_pdmListField)
{
uifield = m_pdmListField->uiCapability();
}
this->bindToPdmItem(uifield);
if (!m_pdmListField)
{
m_tableModelPdm->setPdmData(nullptr, "");
m_tableHeading->setText("");
m_tableHeadingIcon->setPixmap(QPixmap());
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@ -240,7 +217,8 @@ void PdmUiTableViewEditor::customMenuRequested(QPoint pos)
{
// This is function is required to execute before populating the menu
// Several commands rely on the activeChildArrayFieldHandle in the selection manager
SelectionManager::instance()->setActiveChildArrayFieldHandle(m_pdmListField);
auto childArrayFH = childArrayFieldHandle();
SelectionManager::instance()->setActiveChildArrayFieldHandle(childArrayFH);
QMenu menu;
caf::PdmUiCommandSystemProxy::instance()->populateMenuWithDefaultCommands("PdmUiTreeViewEditor", &menu);
@ -433,6 +411,19 @@ void PdmUiTableViewEditor::updateSelectionManagerFromTableSelection()
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
caf::PdmChildArrayFieldHandle* PdmUiTableViewEditor::childArrayFieldHandle()
{
caf::PdmChildArrayFieldHandle* childArrayFieldHandle = nullptr;
if (this->field())
{
childArrayFieldHandle = dynamic_cast<PdmChildArrayFieldHandle*>(this->field()->fieldHandle());
}
return childArrayFieldHandle;
}
} // end namespace caf

View File

@ -65,7 +65,7 @@ class PdmUiTableViewQModel;
///
//--------------------------------------------------------------------------------------------------
class PdmUiTableViewEditor : public PdmUiEditorHandle
class PdmUiTableViewEditor : public PdmUiFieldEditorHandle
{
Q_OBJECT
@ -79,7 +79,6 @@ public:
PdmObjectHandle* pdmObjectFromModelIndex(const QModelIndex& mi);
void setListField(PdmChildArrayFieldHandle* pdmListField);
QWidget* createWidget(QWidget* parent);
QTableView* tableView();
@ -96,6 +95,8 @@ private:
void tableViewWidgetFocusChanged(QEvent* focusEvent);
void updateSelectionManagerFromTableSelection();
PdmChildArrayFieldHandle* childArrayFieldHandle();
private slots:
void customMenuRequested(QPoint pos);
void slotCurrentChanged(const QModelIndex & current, const QModelIndex & previous);
@ -112,7 +113,6 @@ private:
QTableView* m_tableView;
PdmUiTableViewQModel* m_tableModelPdm;
PdmChildArrayFieldHandle* m_pdmListField;
PdmUiTableViewDelegate* m_delegate;
PdmUiCheckBoxDelegate* m_checkboxDelegate;