mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
AppFwk: Change interface of uiOrder insertion to direct insert
Instead of find + insert
This commit is contained in:
parent
73a52c4929
commit
ad709d76a2
@ -86,15 +86,88 @@ caf::PdmUiGroup* PdmUiOrdering::addNewGroupWithKeyword(const QString& displayNam
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
caf::PdmUiGroup* PdmUiOrdering::insertNewGroup(size_t index, const QString& displayName)
|
bool PdmUiOrdering::insertBeforeGroup(const QString& groupId, const PdmFieldHandle* field)
|
||||||
{
|
{
|
||||||
PdmUiGroup* group = new PdmUiGroup;
|
PositionFound pos = findGroupPosition(groupId);
|
||||||
group->setUiName(displayName);
|
if (pos.parent)
|
||||||
|
{
|
||||||
|
pos.parent->insert(pos.indexInParent, field);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
m_createdGroups.push_back(group);
|
|
||||||
|
|
||||||
m_ordering.insert(m_ordering.begin() + index, group);
|
//--------------------------------------------------------------------------------------------------
|
||||||
return group;
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
bool PdmUiOrdering::insertBeforeItem(const PdmUiItem* item, const PdmFieldHandle* field)
|
||||||
|
{
|
||||||
|
PositionFound pos = findItemPosition(item);
|
||||||
|
if (pos.parent)
|
||||||
|
{
|
||||||
|
pos.parent->insert(pos.indexInParent, field);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
caf::PdmUiGroup* PdmUiOrdering::createGroupBeforeGroup(const QString& groupId, const QString& displayName)
|
||||||
|
{
|
||||||
|
return createGroupWithIdBeforeGroup(groupId, displayName, "");
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
caf::PdmUiGroup* PdmUiOrdering::createGroupBeforeItem(const PdmUiItem* item, const QString& displayName)
|
||||||
|
{
|
||||||
|
return createGroupWithIdBeforeItem(item, displayName, "");
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
caf::PdmUiGroup* PdmUiOrdering::createGroupWithIdBeforeGroup(const QString& groupId, const QString& displayName, const QString& newGroupId)
|
||||||
|
{
|
||||||
|
PositionFound pos = findGroupPosition(groupId);
|
||||||
|
if (pos.parent)
|
||||||
|
{
|
||||||
|
return pos.parent->insertNewGroupWithKeyword(pos.indexInParent, displayName, newGroupId);
|
||||||
|
}
|
||||||
|
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
caf::PdmUiGroup* PdmUiOrdering::createGroupWithIdBeforeItem(const PdmUiItem* item, const QString& displayName, const QString& newGroupId)
|
||||||
|
{
|
||||||
|
PositionFound pos = findItemPosition(item);
|
||||||
|
if (pos.parent)
|
||||||
|
{
|
||||||
|
return pos.parent->insertNewGroupWithKeyword(pos.indexInParent, displayName, newGroupId);
|
||||||
|
}
|
||||||
|
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
caf::PdmUiGroup* PdmUiOrdering::findGroup(const QString& groupId)
|
||||||
|
{
|
||||||
|
return findGroupPosition(groupId).group();
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@ -104,7 +177,13 @@ caf::PdmUiGroup* PdmUiOrdering::insertNewGroupWithKeyword(size_t index,
|
|||||||
const QString& displayName,
|
const QString& displayName,
|
||||||
const QString& groupKeyword)
|
const QString& groupKeyword)
|
||||||
{
|
{
|
||||||
PdmUiGroup* group = insertNewGroup(index, displayName);
|
PdmUiGroup* group = new PdmUiGroup;
|
||||||
|
group->setUiName(displayName);
|
||||||
|
|
||||||
|
m_createdGroups.push_back(group);
|
||||||
|
|
||||||
|
m_ordering.insert(m_ordering.begin() + index, group);
|
||||||
|
|
||||||
group->setKeyword(groupKeyword);
|
group->setKeyword(groupKeyword);
|
||||||
|
|
||||||
return group;
|
return group;
|
||||||
@ -115,20 +194,20 @@ caf::PdmUiGroup* PdmUiOrdering::insertNewGroupWithKeyword(size_t index,
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
bool PdmUiOrdering::contains(const PdmUiItem* item) const
|
bool PdmUiOrdering::contains(const PdmUiItem* item) const
|
||||||
{
|
{
|
||||||
return this->findItem(item).parent != nullptr;
|
return this->findItemPosition(item).parent != nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
caf::PdmUiOrdering::FindResult PdmUiOrdering::findItem(const PdmUiItem* item) const
|
caf::PdmUiOrdering::PositionFound PdmUiOrdering::findItemPosition(const PdmUiItem* item) const
|
||||||
{
|
{
|
||||||
for (size_t i = 0; i < m_ordering.size(); ++i)
|
for (size_t i = 0; i < m_ordering.size(); ++i)
|
||||||
{
|
{
|
||||||
if (m_ordering[i] == item) return { const_cast<PdmUiOrdering*>(this), i};
|
if (m_ordering[i] == item) return { const_cast<PdmUiOrdering*>(this), i};
|
||||||
if (m_ordering[i] && m_ordering[i]->isUiGroup())
|
if (m_ordering[i] && m_ordering[i]->isUiGroup())
|
||||||
{
|
{
|
||||||
FindResult result = static_cast<PdmUiGroup*>(m_ordering[i])->findItem(item);
|
PositionFound result = static_cast<PdmUiGroup*>(m_ordering[i])->findItemPosition(item);
|
||||||
if (result.parent ) return result;
|
if (result.parent ) return result;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -138,14 +217,14 @@ caf::PdmUiOrdering::FindResult PdmUiOrdering::findItem(const PdmUiItem* item) co
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
caf::PdmUiOrdering::FindResult PdmUiOrdering::findGroup(const QString& groupKeyword) const
|
caf::PdmUiOrdering::PositionFound PdmUiOrdering::findGroupPosition(const QString& groupKeyword) const
|
||||||
{
|
{
|
||||||
for (size_t i = 0; i < m_ordering.size(); ++i)
|
for (size_t i = 0; i < m_ordering.size(); ++i)
|
||||||
{
|
{
|
||||||
if (m_ordering[i] && m_ordering[i]->isUiGroup())
|
if (m_ordering[i] && m_ordering[i]->isUiGroup())
|
||||||
{
|
{
|
||||||
if (static_cast<PdmUiGroup*>(m_ordering[i])->keyword() == groupKeyword) return { const_cast<PdmUiOrdering*>(this), i};
|
if (static_cast<PdmUiGroup*>(m_ordering[i])->keyword() == groupKeyword) return { const_cast<PdmUiOrdering*>(this), i};
|
||||||
FindResult result = static_cast<PdmUiGroup*>(m_ordering[i])->findGroup(groupKeyword);
|
PositionFound result = static_cast<PdmUiGroup*>(m_ordering[i])->findGroupPosition(groupKeyword);
|
||||||
if (result.parent ) return result;
|
if (result.parent ) return result;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -217,7 +296,7 @@ const std::vector<PdmUiItem*>& PdmUiOrdering::uiItems() const
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
caf::PdmUiItem* PdmUiOrdering::FindResult::item()
|
caf::PdmUiItem* PdmUiOrdering::PositionFound::item()
|
||||||
{
|
{
|
||||||
if ( parent )
|
if ( parent )
|
||||||
{
|
{
|
||||||
@ -232,7 +311,7 @@ caf::PdmUiItem* PdmUiOrdering::FindResult::item()
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
caf::PdmUiGroup* PdmUiOrdering::FindResult::group()
|
caf::PdmUiGroup* PdmUiOrdering::PositionFound::group()
|
||||||
{
|
{
|
||||||
PdmUiItem* g = item();
|
PdmUiItem* g = item();
|
||||||
if ( g && g->isUiGroup() )
|
if ( g && g->isUiGroup() )
|
||||||
|
@ -62,24 +62,19 @@ public:
|
|||||||
PdmUiOrdering& operator=(const PdmUiOrdering&) = delete;
|
PdmUiOrdering& operator=(const PdmUiOrdering&) = delete;
|
||||||
|
|
||||||
void add(const PdmFieldHandle* field);
|
void add(const PdmFieldHandle* field);
|
||||||
void insert(size_t index, const PdmFieldHandle* field);
|
|
||||||
void add(const PdmObjectHandle* obj);
|
void add(const PdmObjectHandle* obj);
|
||||||
|
bool insertBeforeGroup(const QString& groupId, const PdmFieldHandle* fieldToInsert);
|
||||||
|
bool insertBeforeItem(const PdmUiItem* item, const PdmFieldHandle* fieldToInsert);
|
||||||
|
|
||||||
PdmUiGroup* addNewGroup(const QString& displayName);
|
PdmUiGroup* addNewGroup(const QString& displayName);
|
||||||
|
PdmUiGroup* createGroupBeforeGroup(const QString& groupId, const QString& displayName);
|
||||||
|
PdmUiGroup* createGroupBeforeItem(const PdmUiItem* item, const QString& displayName);
|
||||||
|
|
||||||
PdmUiGroup* addNewGroupWithKeyword(const QString& displayName, const QString& groupKeyword);
|
PdmUiGroup* addNewGroupWithKeyword(const QString& displayName, const QString& groupKeyword);
|
||||||
PdmUiGroup* insertNewGroup(size_t index, const QString& displayName);
|
PdmUiGroup* createGroupWithIdBeforeGroup(const QString& groupId, const QString& displayName, const QString& newGroupId);
|
||||||
PdmUiGroup* insertNewGroupWithKeyword(size_t index, const QString& displayName, const QString& groupKeyword);
|
PdmUiGroup* createGroupWithIdBeforeItem(const PdmUiItem* item, const QString& displayName, const QString& newGroupId);
|
||||||
|
|
||||||
struct FindResult
|
PdmUiGroup* findGroup(const QString& groupId);
|
||||||
{
|
|
||||||
PdmUiOrdering* parent;
|
|
||||||
size_t indexInParent;
|
|
||||||
PdmUiItem* item();
|
|
||||||
PdmUiGroup* group();
|
|
||||||
};
|
|
||||||
|
|
||||||
FindResult findGroup(const QString& groupKeyword) const;
|
|
||||||
FindResult findItem(const PdmUiItem* item) const;
|
|
||||||
|
|
||||||
void skipRemainingFields(bool doSkip = true);
|
void skipRemainingFields(bool doSkip = true);
|
||||||
|
|
||||||
@ -89,7 +84,23 @@ public:
|
|||||||
bool contains(const PdmUiItem* item) const;
|
bool contains(const PdmUiItem* item) const;
|
||||||
bool isIncludingRemainingFields() const;
|
bool isIncludingRemainingFields() const;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
|
||||||
|
struct PositionFound
|
||||||
|
{
|
||||||
|
PdmUiOrdering* parent;
|
||||||
|
size_t indexInParent;
|
||||||
|
PdmUiItem* item();
|
||||||
|
PdmUiGroup* group();
|
||||||
|
};
|
||||||
|
|
||||||
|
PositionFound findGroupPosition(const QString& groupKeyword) const;
|
||||||
|
PositionFound findItemPosition(const PdmUiItem* item) const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
void insert(size_t index, const PdmFieldHandle* field);
|
||||||
|
PdmUiGroup* insertNewGroupWithKeyword(size_t index, const QString& displayName, const QString& groupKeyword);
|
||||||
|
|
||||||
std::vector<PdmUiItem*> m_ordering; ///< The order of groups and fields
|
std::vector<PdmUiItem*> m_ordering; ///< The order of groups and fields
|
||||||
std::vector<PdmUiGroup*> m_createdGroups; ///< Owned PdmUiGroups, for memory management only
|
std::vector<PdmUiGroup*> m_createdGroups; ///< Owned PdmUiGroups, for memory management only
|
||||||
bool m_skipRemainingFields;
|
bool m_skipRemainingFields;
|
||||||
|
Loading…
Reference in New Issue
Block a user