#3222 AppFwk : Improve robustness/maintainability

This commit is contained in:
Magne Sjaastad
2018-08-16 21:42:52 +02:00
parent 37369cb0fb
commit cd63332514
7 changed files with 313 additions and 132 deletions

View File

@@ -7,16 +7,43 @@
namespace caf namespace caf
{ {
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
PdmUiFieldHandle::PdmUiFieldHandle(PdmFieldHandle* owner, bool giveOwnership)
: m_isAutoAddingOptionFromValue(true)
{
m_owner = owner;
owner->addCapability(this, giveOwnership);
}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
PdmUiFieldHandle::PdmUiFieldHandle(PdmFieldHandle* owner, bool giveOwnership): PdmUiFieldHandle::~PdmUiFieldHandle() {}
m_isAutoAddingOptionFromValue(true)
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
caf::PdmFieldHandle* PdmUiFieldHandle::fieldHandle()
{ {
m_owner = owner; return m_owner;
owner->addCapability(this, giveOwnership); }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QVariant PdmUiFieldHandle::uiValue() const
{
return QVariant();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QList<caf::PdmOptionItemInfo> PdmUiFieldHandle::valueOptions(bool* useOptionsOnly) const
{
return QList<PdmOptionItemInfo>();
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@@ -45,6 +72,27 @@ void PdmUiFieldHandle::notifyFieldChanged(const QVariant& oldFieldValue, const Q
} }
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool PdmUiFieldHandle::isAutoAddingOptionFromValue() const
{
return m_isAutoAddingOptionFromValue;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void PdmUiFieldHandle::setAutoAddingOptionFromValue(bool isAddingValue)
{
m_isAutoAddingOptionFromValue = isAddingValue;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void PdmUiFieldHandle::setValueFromUiEditor(const QVariant& uiValue) {}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// Implementation of uiCapability() defined in cafPdmFieldHandle.h /// Implementation of uiCapability() defined in cafPdmFieldHandle.h
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------

View File

@@ -1,43 +1,40 @@
#pragma once #pragma once
#include "cafPdmUiItem.h"
#include "cafPdmFieldCapability.h" #include "cafPdmFieldCapability.h"
#include "cafPdmUiFieldHandleInterface.h" #include "cafPdmUiFieldHandleInterface.h"
#include "cafPdmUiItem.h"
namespace caf namespace caf
{ {
class PdmFieldHandle; class PdmFieldHandle;
class PdmUiFieldHandle : public PdmUiItem, public PdmFieldCapability, public PdmUiFieldHandleInterface class PdmUiFieldHandle : public PdmUiItem, public PdmFieldCapability, public PdmUiFieldHandleInterface
{ {
public: public:
PdmUiFieldHandle(PdmFieldHandle* owner, bool giveOwnership); PdmUiFieldHandle(PdmFieldHandle* owner, bool giveOwnership);
virtual ~PdmUiFieldHandle() { } virtual ~PdmUiFieldHandle();
PdmFieldHandle* fieldHandle() { return m_owner; } PdmFieldHandle* fieldHandle();
// Generalized access methods for User interface // Generalized access methods for User interface
// The QVariant encapsulates the real value, or an index into the valueOptions // The QVariant encapsulates the real value, or an index into the valueOptions
virtual QVariant uiValue() const { return QVariant(); } virtual QVariant uiValue() const;
virtual QList<PdmOptionItemInfo> virtual QList<PdmOptionItemInfo> valueOptions(bool* useOptionsOnly) const;
valueOptions(bool* useOptionsOnly) { return QList<PdmOptionItemInfo>(); }
virtual void notifyFieldChanged(const QVariant& oldUiBasedQVariant, const QVariant& newUiBasedQVariant); void notifyFieldChanged(const QVariant& oldUiBasedQVariant, const QVariant& newUiBasedQVariant) override;
bool isAutoAddingOptionFromValue() const { return m_isAutoAddingOptionFromValue; } bool isAutoAddingOptionFromValue() const;
void setAutoAddingOptionFromValue(bool isAddingValue) { m_isAutoAddingOptionFromValue = isAddingValue;} void setAutoAddingOptionFromValue(bool isAddingValue);
private: private:
friend class PdmUiCommandSystemProxy; friend class PdmUiCommandSystemProxy;
friend class CmdFieldChangeExec; friend class CmdFieldChangeExec;
virtual void setValueFromUiEditor(const QVariant& uiValue) { } virtual void setValueFromUiEditor(const QVariant& uiValue);
private: private:
PdmFieldHandle* m_owner; PdmFieldHandle* m_owner;
bool m_isAutoAddingOptionFromValue; bool m_isAutoAddingOptionFromValue;
}; };
} // End of namespace caf } // End of namespace caf

View File

@@ -54,7 +54,7 @@ public:
void setKeyword(const QString& keyword); void setKeyword(const QString& keyword);
QString keyword() const; QString keyword() const;
virtual bool isUiGroup(); bool isUiGroup() override;
/// Set this group to be collapsed by default. When the user expands the group, the default no longer has any effect. /// Set this group to be collapsed by default. When the user expands the group, the default no longer has any effect.
void setCollapsedByDefault(bool doCollapse); void setCollapsedByDefault(bool doCollapse);

View File

@@ -34,36 +34,39 @@
// //
//################################################################################################## //##################################################################################################
#include "cafPdmUiItem.h" #include "cafPdmUiItem.h"
#include "cafPdmUiEditorHandle.h"
#include "cafPdmPtrField.h" #include "cafPdmPtrField.h"
#include "cafPdmUiEditorHandle.h"
#include "cafPdmUiObjectEditorHandle.h" #include "cafPdmUiObjectEditorHandle.h"
namespace caf namespace caf
{ {
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
PdmOptionItemInfo::PdmOptionItemInfo(const QString& anOptionUiText, const QVariant& aValue, bool isReadOnly /* = false */, QIcon anIcon /* = QIcon()*/) PdmOptionItemInfo::PdmOptionItemInfo(const QString& anOptionUiText,
: m_optionUiText(anOptionUiText), const QVariant& aValue,
m_value(aValue), bool isReadOnly /* = false */,
m_isReadOnly(isReadOnly), QIcon anIcon /* = QIcon()*/)
m_icon(anIcon), : m_optionUiText(anOptionUiText)
m_level(0) , m_value(aValue)
, m_isReadOnly(isReadOnly)
, m_icon(anIcon)
, m_level(0)
{ {
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
PdmOptionItemInfo::PdmOptionItemInfo(const QString& anOptionUiText, caf::PdmObjectHandle* obj, bool isReadOnly /*= false*/, QIcon anIcon /*= QIcon()*/) PdmOptionItemInfo::PdmOptionItemInfo(const QString& anOptionUiText,
: m_optionUiText(anOptionUiText), caf::PdmObjectHandle* obj,
m_isReadOnly(isReadOnly), bool isReadOnly /*= false*/,
m_icon(anIcon), QIcon anIcon /*= QIcon()*/)
m_level(0) : m_optionUiText(anOptionUiText)
, m_isReadOnly(isReadOnly)
, m_icon(anIcon)
, m_level(0)
{ {
m_value = QVariant::fromValue(caf::PdmPointer<caf::PdmObjectHandle>(obj)); m_value = QVariant::fromValue(caf::PdmPointer<caf::PdmObjectHandle>(obj));
} }
@@ -71,7 +74,8 @@ PdmOptionItemInfo::PdmOptionItemInfo(const QString& anOptionUiText, caf::PdmObje
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
PdmOptionItemInfo PdmOptionItemInfo::createHeader(const QString& anOptionUiText, bool isReadOnly /*= false*/, QIcon anIcon /*= QIcon()*/) PdmOptionItemInfo
PdmOptionItemInfo::createHeader(const QString& anOptionUiText, bool isReadOnly /*= false*/, QIcon anIcon /*= QIcon()*/)
{ {
PdmOptionItemInfo header(anOptionUiText, QVariant(), isReadOnly, anIcon); PdmOptionItemInfo header(anOptionUiText, QVariant(), isReadOnly, anIcon);
@@ -141,7 +145,7 @@ QStringList PdmOptionItemInfo::extractUiTexts(const QList<PdmOptionItemInfo>& op
{ {
QStringList texts; QStringList texts;
for (auto option : optionList) for (const auto& option : optionList)
{ {
texts.push_back(option.optionUiText()); texts.push_back(option.optionUiText());
} }
@@ -149,7 +153,6 @@ QStringList PdmOptionItemInfo::extractUiTexts(const QList<PdmOptionItemInfo>& op
return texts; return texts;
} }
//================================================================================================== //==================================================================================================
/// PdmUiItem /// PdmUiItem
//================================================================================================== //==================================================================================================
@@ -159,7 +162,7 @@ bool PdmUiItem::sm_showExtraDebugText = false;
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
const QString PdmUiItem::uiName(QString uiConfigName) const const QString PdmUiItem::uiName(const QString& uiConfigName) const
{ {
const PdmUiItemInfo* conInfo = configInfo(uiConfigName); const PdmUiItemInfo* conInfo = configInfo(uiConfigName);
const PdmUiItemInfo* defInfo = defaultInfo(); const PdmUiItemInfo* defInfo = defaultInfo();
@@ -175,7 +178,15 @@ const QString PdmUiItem::uiName(QString uiConfigName) const
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
const QIcon PdmUiItem::uiIcon(QString uiConfigName) const void PdmUiItem::setUiName(const QString& uiName, const QString& uiConfigName /*= ""*/)
{
m_configItemInfos[uiConfigName].m_uiName = uiName;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
const QIcon PdmUiItem::uiIcon(const QString& uiConfigName) const
{ {
const PdmUiItemInfo* conInfo = configInfo(uiConfigName); const PdmUiItemInfo* conInfo = configInfo(uiConfigName);
const PdmUiItemInfo* defInfo = defaultInfo(); const PdmUiItemInfo* defInfo = defaultInfo();
@@ -191,7 +202,15 @@ const QIcon PdmUiItem::uiIcon(QString uiConfigName) const
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
const QString PdmUiItem::uiToolTip(QString uiConfigName) const void PdmUiItem::setUiIcon(const QIcon& uiIcon, const QString& uiConfigName /*= ""*/)
{
m_configItemInfos[uiConfigName].m_icon = uiIcon;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
const QString PdmUiItem::uiToolTip(const QString& uiConfigName) const
{ {
const PdmUiItemInfo* conInfo = configInfo(uiConfigName); const PdmUiItemInfo* conInfo = configInfo(uiConfigName);
const PdmUiItemInfo* defInfo = defaultInfo(); const PdmUiItemInfo* defInfo = defaultInfo();
@@ -232,7 +251,15 @@ const QString PdmUiItem::uiToolTip(QString uiConfigName) const
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
const QString PdmUiItem::uiWhatsThis(QString uiConfigName) const void PdmUiItem::setUiToolTip(const QString& uiToolTip, const QString& uiConfigName /*= ""*/)
{
m_configItemInfos[uiConfigName].m_toolTip = uiToolTip;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
const QString PdmUiItem::uiWhatsThis(const QString& uiConfigName) const
{ {
const PdmUiItemInfo* conInfo = configInfo(uiConfigName); const PdmUiItemInfo* conInfo = configInfo(uiConfigName);
const PdmUiItemInfo* defInfo = defaultInfo(); const PdmUiItemInfo* defInfo = defaultInfo();
@@ -248,7 +275,15 @@ const QString PdmUiItem::uiWhatsThis(QString uiConfigName) const
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
bool PdmUiItem::isUiHidden(QString uiConfigName) const void PdmUiItem::setUiWhatsThis(const QString& uiWhatsThis, const QString& uiConfigName /*= ""*/)
{
m_configItemInfos[uiConfigName].m_whatsThis = uiWhatsThis;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool PdmUiItem::isUiHidden(const QString& uiConfigName) const
{ {
const PdmUiItemInfo* conInfo = configInfo(uiConfigName); const PdmUiItemInfo* conInfo = configInfo(uiConfigName);
const PdmUiItemInfo* defInfo = defaultInfo(); const PdmUiItemInfo* defInfo = defaultInfo();
@@ -264,7 +299,15 @@ bool PdmUiItem::isUiHidden(QString uiConfigName) const
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
bool PdmUiItem::isUiTreeHidden(QString uiConfigName) const void PdmUiItem::setUiHidden(bool isHidden, const QString& uiConfigName /*= ""*/)
{
m_configItemInfos[uiConfigName].m_isHidden = isHidden;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool PdmUiItem::isUiTreeHidden(const QString& uiConfigName) const
{ {
// TODO: Must be separated from uiHidden when childField object embedding is implemented // TODO: Must be separated from uiHidden when childField object embedding is implemented
@@ -274,7 +317,15 @@ bool PdmUiItem::isUiTreeHidden(QString uiConfigName) const
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
bool PdmUiItem::isUiTreeChildrenHidden(QString uiConfigName) const void PdmUiItem::setUiTreeHidden(bool isHidden, const QString& uiConfigName /*= ""*/)
{
m_configItemInfos[uiConfigName].m_isHidden = isHidden;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool PdmUiItem::isUiTreeChildrenHidden(const QString& uiConfigName) const
{ {
const PdmUiItemInfo* conInfo = configInfo(uiConfigName); const PdmUiItemInfo* conInfo = configInfo(uiConfigName);
const PdmUiItemInfo* defInfo = defaultInfo(); const PdmUiItemInfo* defInfo = defaultInfo();
@@ -290,7 +341,15 @@ bool PdmUiItem::isUiTreeChildrenHidden(QString uiConfigName) const
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
bool PdmUiItem::isUiReadOnly(QString uiConfigName /*= ""*/) const void PdmUiItem::setUiTreeChildrenHidden(bool isTreeChildrenHidden, const QString& uiConfigName /*= ""*/)
{
m_configItemInfos[uiConfigName].m_isTreeChildrenHidden = isTreeChildrenHidden;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool PdmUiItem::isUiReadOnly(const QString& uiConfigName /*= ""*/) const
{ {
const PdmUiItemInfo* conInfo = configInfo(uiConfigName); const PdmUiItemInfo* conInfo = configInfo(uiConfigName);
const PdmUiItemInfo* defInfo = defaultInfo(); const PdmUiItemInfo* defInfo = defaultInfo();
@@ -303,6 +362,14 @@ bool PdmUiItem::isUiReadOnly(QString uiConfigName /*= ""*/) const
return false; return false;
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void PdmUiItem::setUiReadOnly(bool isReadOnly, const QString& uiConfigName /*= ""*/)
{
m_configItemInfos[uiConfigName].m_isReadOnly = isReadOnly;
}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@@ -322,7 +389,23 @@ QString PdmUiItem::uiEditorTypeName(const QString& uiConfigName) const
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
PdmUiItemInfo::LabelPosType PdmUiItem::uiLabelPosition(QString uiConfigName) const void PdmUiItem::setUiEditorTypeName(const QString& editorTypeName, const QString& uiConfigName /*= ""*/)
{
m_configItemInfos[uiConfigName].m_editorTypeName = editorTypeName;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool PdmUiItem::isUiGroup()
{
return false;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
PdmUiItemInfo::LabelPosType PdmUiItem::uiLabelPosition(const QString& uiConfigName) const
{ {
const PdmUiItemInfo* conInfo = configInfo(uiConfigName); const PdmUiItemInfo* conInfo = configInfo(uiConfigName);
const PdmUiItemInfo* defInfo = defaultInfo(); const PdmUiItemInfo* defInfo = defaultInfo();
@@ -338,7 +421,15 @@ PdmUiItemInfo::LabelPosType PdmUiItem::uiLabelPosition(QString uiConfigName) con
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
bool PdmUiItem::isCustomContextMenuEnabled(QString uiConfigName /*= ""*/) const void PdmUiItem::setUiLabelPosition(PdmUiItemInfo::LabelPosType alignment, const QString& uiConfigName /*= ""*/)
{
m_configItemInfos[uiConfigName].m_labelAlignment = alignment;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool PdmUiItem::isCustomContextMenuEnabled(const QString& uiConfigName /*= ""*/) const
{ {
const PdmUiItemInfo* conInfo = configInfo(uiConfigName); const PdmUiItemInfo* conInfo = configInfo(uiConfigName);
const PdmUiItemInfo* defInfo = defaultInfo(); const PdmUiItemInfo* defInfo = defaultInfo();
@@ -354,8 +445,16 @@ bool PdmUiItem::isCustomContextMenuEnabled(QString uiConfigName /*= ""*/) const
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void PdmUiItem::setCustomContextMenuEnabled(bool enableCustomContextMenu, const QString& uiConfigName /*= ""*/)
{
m_configItemInfos[uiConfigName].m_isCustomContextMenuEnabled = enableCustomContextMenu;
}
const PdmUiItemInfo* PdmUiItem::configInfo(QString uiConfigName) const //--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
const PdmUiItemInfo* PdmUiItem::configInfo(const QString& uiConfigName) const
{ {
if (uiConfigName == "" || uiConfigName.isNull()) return nullptr; if (uiConfigName == "" || uiConfigName.isNull()) return nullptr;
@@ -418,14 +517,28 @@ PdmUiItem::~PdmUiItem()
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void PdmUiItem::updateUiIconFromState(bool isActive, QString uiConfigName) PdmUiItem::PdmUiItem()
: m_staticItemInfo(nullptr)
{
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void PdmUiItem::updateUiIconFromState(bool isActive, const QString& uiConfigName)
{ {
static const QString iconStorageConfigNamePostfix = "_Internally_StoredNormalIcon"; static const QString iconStorageConfigNamePostfix = "_Internally_StoredNormalIcon";
const PdmUiItemInfo* conInfo = configInfo(uiConfigName + iconStorageConfigNamePostfix); const PdmUiItemInfo* conInfo = configInfo(uiConfigName + iconStorageConfigNamePostfix);
QIcon normalIcon; QIcon normalIcon;
if (conInfo) normalIcon = conInfo->m_icon; if (conInfo)
else normalIcon = this->uiIcon(uiConfigName); {
normalIcon = conInfo->m_icon;
}
else
{
normalIcon = this->uiIcon(uiConfigName);
}
this->setUiIcon(normalIcon, uiConfigName + iconStorageConfigNamePostfix); this->setUiIcon(normalIcon, uiConfigName + iconStorageConfigNamePostfix);
@@ -472,5 +585,28 @@ void PdmUiItem::enableExtraDebugText(bool enable)
sm_showExtraDebugText = enable; sm_showExtraDebugText = enable;
} }
} //End of namespace caf //--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void PdmUiItem::setUiItemInfo(PdmUiItemInfo* itemInfo)
{
m_staticItemInfo = itemInfo;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void PdmUiItem::removeFieldEditor(PdmUiEditorHandle* fieldView)
{
m_editors.erase(fieldView);
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void PdmUiItem::addFieldEditor(PdmUiEditorHandle* fieldView)
{
m_editors.insert(fieldView);
}
} // End of namespace caf

View File

@@ -192,47 +192,47 @@ bool PdmOptionItemInfo::findValues(const QList<PdmOptionItemInfo>& optionList, Q
class PdmUiItem class PdmUiItem
{ {
public: public:
PdmUiItem() : m_staticItemInfo(nullptr) { } PdmUiItem();
virtual ~PdmUiItem(); virtual ~PdmUiItem();
PdmUiItem(const PdmUiItem&) = delete; PdmUiItem(const PdmUiItem&) = delete;
PdmUiItem& operator=(const PdmUiItem&) = delete; PdmUiItem& operator=(const PdmUiItem&) = delete;
const QString uiName(QString uiConfigName = "") const; const QString uiName(const QString& uiConfigName = "") const;
void setUiName(const QString& uiName, QString uiConfigName = "") { m_configItemInfos[uiConfigName].m_uiName = uiName; } void setUiName(const QString& uiName, const QString& uiConfigName = "");
const QIcon uiIcon(QString uiConfigName = "") const; const QIcon uiIcon(const QString& uiConfigName = "") const;
void setUiIcon(const QIcon& uiIcon, QString uiConfigName = "") { m_configItemInfos[uiConfigName].m_icon = uiIcon; } void setUiIcon(const QIcon& uiIcon, const QString& uiConfigName = "");
const QString uiToolTip(QString uiConfigName = "") const; const QString uiToolTip(const QString& uiConfigName = "") const;
void setUiToolTip(const QString& uiToolTip, QString uiConfigName = "") { m_configItemInfos[uiConfigName].m_toolTip = uiToolTip; } void setUiToolTip(const QString& uiToolTip, const QString& uiConfigName = "");
const QString uiWhatsThis(QString uiConfigName = "") const; const QString uiWhatsThis(const QString& uiConfigName = "") const;
void setUiWhatsThis(const QString& uiWhatsThis, QString uiConfigName = "") { m_configItemInfos[uiConfigName].m_whatsThis = uiWhatsThis; } void setUiWhatsThis(const QString& uiWhatsThis, const QString& uiConfigName = "");
bool isUiHidden(QString uiConfigName = "") const; bool isUiHidden(const QString& uiConfigName = "") const;
void setUiHidden(bool isHidden, QString uiConfigName = "") { m_configItemInfos[uiConfigName].m_isHidden = isHidden; } void setUiHidden(bool isHidden, const QString& uiConfigName = "");
bool isUiTreeHidden(QString uiConfigName = "") const; bool isUiTreeHidden(const QString& uiConfigName = "") const;
void setUiTreeHidden(bool isHidden, QString uiConfigName = "") { m_configItemInfos[uiConfigName].m_isHidden = isHidden; } void setUiTreeHidden(bool isHidden, const QString& uiConfigName = "");
bool isUiTreeChildrenHidden(QString uiConfigName = "") const; bool isUiTreeChildrenHidden(const QString& uiConfigName = "") const;
void setUiTreeChildrenHidden(bool isTreeChildrenHidden, QString uiConfigName = "") { m_configItemInfos[uiConfigName].m_isTreeChildrenHidden = isTreeChildrenHidden; } void setUiTreeChildrenHidden(bool isTreeChildrenHidden, const QString& uiConfigName = "");
bool isUiReadOnly(QString uiConfigName = "") const; bool isUiReadOnly(const QString& uiConfigName = "") const;
void setUiReadOnly(bool isReadOnly, QString uiConfigName = "") { m_configItemInfos[uiConfigName].m_isReadOnly = isReadOnly; } void setUiReadOnly(bool isReadOnly, const QString& uiConfigName = "");
PdmUiItemInfo::LabelPosType PdmUiItemInfo::LabelPosType
uiLabelPosition(QString uiConfigName = "") const; uiLabelPosition(const QString& uiConfigName = "") const;
void setUiLabelPosition(PdmUiItemInfo::LabelPosType alignment, QString uiConfigName = "") { m_configItemInfos[uiConfigName].m_labelAlignment = alignment; } void setUiLabelPosition(PdmUiItemInfo::LabelPosType alignment, const QString& uiConfigName = "");
bool isCustomContextMenuEnabled(QString uiConfigName = "") const; bool isCustomContextMenuEnabled(const QString& uiConfigName = "") const;
void setCustomContextMenuEnabled(bool enableCustomContextMenu, QString uiConfigName = "") { m_configItemInfos[uiConfigName].m_isCustomContextMenuEnabled = enableCustomContextMenu; } void setCustomContextMenuEnabled(bool enableCustomContextMenu, const QString& uiConfigName = "");
QString uiEditorTypeName(const QString& uiConfigName) const; QString uiEditorTypeName(const QString& uiConfigName) const;
void setUiEditorTypeName(const QString& editorTypeName, QString uiConfigName = "") { m_configItemInfos[uiConfigName].m_editorTypeName = editorTypeName; } void setUiEditorTypeName(const QString& editorTypeName, const QString& uiConfigName = "");
virtual bool isUiGroup() { return false; } virtual bool isUiGroup();
/// Intended to be called when fields in an object has been changed /// Intended to be called when fields in an object has been changed
void updateConnectedEditors(); void updateConnectedEditors();
@@ -240,7 +240,7 @@ public:
/// Intended to be called when an object has been created or deleted /// Intended to be called when an object has been created or deleted
void updateAllRequiredEditors(); void updateAllRequiredEditors();
void updateUiIconFromState(bool isActive, QString uiConfigName = ""); void updateUiIconFromState(bool isActive, const QString& uiConfigName = "");
std::vector<PdmUiEditorHandle*> std::vector<PdmUiEditorHandle*>
connectedEditors() const; connectedEditors() const;
@@ -255,17 +255,17 @@ public: // Pdm-Private only
/// Consider as PRIVATE to the PdmSystem /// Consider as PRIVATE to the PdmSystem
//================================================================================================== //==================================================================================================
void setUiItemInfo(PdmUiItemInfo* itemInfo) { m_staticItemInfo = itemInfo; } void setUiItemInfo(PdmUiItemInfo* itemInfo);
void removeFieldEditor(PdmUiEditorHandle* fieldView) { m_editors.erase(fieldView); } void removeFieldEditor(PdmUiEditorHandle* fieldView);
void addFieldEditor(PdmUiEditorHandle* fieldView) { m_editors.insert(fieldView); } void addFieldEditor(PdmUiEditorHandle* fieldView);
protected: protected:
std::set<PdmUiEditorHandle*> m_editors; std::set<PdmUiEditorHandle*> m_editors;
private: private:
const PdmUiItemInfo* defaultInfo() const; const PdmUiItemInfo* defaultInfo() const;
const PdmUiItemInfo* configInfo(QString uiConfigName) const; const PdmUiItemInfo* configInfo(const QString& uiConfigName) const;
PdmUiItemInfo* m_staticItemInfo; PdmUiItemInfo* m_staticItemInfo;
std::map< QString, PdmUiItemInfo > m_configItemInfos; std::map< QString, PdmUiItemInfo > m_configItemInfos;

View File

@@ -35,7 +35,7 @@ PdmUiObjectHandle* uiObj(const PdmObjectHandle* obj)
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void PdmUiObjectHandle::uiOrdering(QString uiConfigName, PdmUiOrdering& uiOrdering) void PdmUiObjectHandle::uiOrdering(const QString& uiConfigName, PdmUiOrdering& uiOrdering)
{ {
// Restore state for includeRemainingFields, as this flag // Restore state for includeRemainingFields, as this flag
// can be changed in defineUiOrdering() // can be changed in defineUiOrdering()
@@ -66,7 +66,7 @@ void PdmUiObjectHandle::uiOrdering(QString uiConfigName, PdmUiOrdering& uiOrderi
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void PdmUiObjectHandle::editorAttribute(const PdmFieldHandle* field, QString uiConfigName, PdmUiEditorAttribute * attribute) void PdmUiObjectHandle::editorAttribute(const PdmFieldHandle* field, const QString& uiConfigName, PdmUiEditorAttribute * attribute)
{ {
this->defineEditorAttribute(field, uiConfigName, attribute); this->defineEditorAttribute(field, uiConfigName, attribute);
} }
@@ -74,7 +74,7 @@ void PdmUiObjectHandle::editorAttribute(const PdmFieldHandle* field, QString uiC
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void PdmUiObjectHandle::objectEditorAttribute(QString uiConfigName, PdmUiEditorAttribute* attribute) void PdmUiObjectHandle::objectEditorAttribute(const QString& uiConfigName, PdmUiEditorAttribute* attribute)
{ {
this->defineObjectEditorAttribute(uiConfigName, attribute); this->defineObjectEditorAttribute(uiConfigName, attribute);
} }
@@ -88,7 +88,7 @@ void PdmUiObjectHandle::objectEditorAttribute(QString uiConfigName, PdmUiEditorA
/// ///
/// The caller is responsible to delete the returned PdmUiTreeOrdering /// The caller is responsible to delete the returned PdmUiTreeOrdering
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
PdmUiTreeOrdering* PdmUiObjectHandle::uiTreeOrdering(QString uiConfigName /*= ""*/) PdmUiTreeOrdering* PdmUiObjectHandle::uiTreeOrdering(const QString& uiConfigName /*= ""*/) const
{ {
CAF_ASSERT(this); // This method actually is possible to call on a NULL ptr without getting a crash, so we assert instead. CAF_ASSERT(this); // This method actually is possible to call on a NULL ptr without getting a crash, so we assert instead.
@@ -168,7 +168,7 @@ void PdmUiObjectHandle::addDefaultUiTreeChildren(PdmUiTreeOrdering* uiTreeOrderi
/// Builds the sPdmUiTree for all the children of @param root recursively, and stores the result /// Builds the sPdmUiTree for all the children of @param root recursively, and stores the result
/// in root /// in root
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void PdmUiObjectHandle::expandUiTree(PdmUiTreeOrdering* root, QString uiConfigName /*= "" */) void PdmUiObjectHandle::expandUiTree(PdmUiTreeOrdering* root, const QString& uiConfigName /*= "" */)
{ {
#if 1 #if 1
if (!root || !root->isValid()) return; if (!root || !root->isValid()) return;

View File

@@ -27,20 +27,20 @@ public:
/// Method to be called from the Ui classes creating Auto Gui to get the group information /// Method to be called from the Ui classes creating Auto Gui to get the group information
/// supplied by the \sa defineUiOrdering method that can be reimplemented /// supplied by the \sa defineUiOrdering method that can be reimplemented
void uiOrdering(QString uiConfigName, PdmUiOrdering& uiOrdering) ; void uiOrdering(const QString& uiConfigName, PdmUiOrdering& uiOrdering);
/// Method to be called by Ui displaying a tree representation of the object hierarchy /// Method to be called by Ui displaying a tree representation of the object hierarchy
/// Caller must delete the returned object. /// Caller must delete the returned object.
PdmUiTreeOrdering* uiTreeOrdering(QString uiConfigName = ""); PdmUiTreeOrdering* uiTreeOrdering(const QString& uiConfigName = "") const;
/// Helper function to expand a pre-defined tree start /// Helper function to expand a pre-defined tree start
static void expandUiTree(PdmUiTreeOrdering* root, QString uiConfigName = ""); static void expandUiTree(PdmUiTreeOrdering* root, const QString& uiConfigName = "");
/// For a specific field, return editor specific parameters used to customize the editor behavior. /// For a specific field, return editor specific parameters used to customize the editor behavior.
void editorAttribute(const PdmFieldHandle* field, QString uiConfigName, PdmUiEditorAttribute* attribute); void editorAttribute(const PdmFieldHandle* field, const QString& uiConfigName, PdmUiEditorAttribute* attribute);
/// Return object editor specific parameters used to customize the editor behavior. /// Return object editor specific parameters used to customize the editor behavior.
void objectEditorAttribute(QString uiConfigName, PdmUiEditorAttribute* attribute); void objectEditorAttribute(const QString& uiConfigName, PdmUiEditorAttribute* attribute);
/// Field used to control if field change of and object should be covered by undo/redo framework /// Field used to control if field change of and object should be covered by undo/redo framework
virtual bool useUndoRedoForFieldChanged() { return true; } virtual bool useUndoRedoForFieldChanged() { return true; }