TreeWidgetBuilder< _ElementT > Struct Template Reference

A class to efficiently build and maintain sorted items of QTreeWidget or QTreeWidgetItem based on a sorted container matching the intended structure. More...

#include <RobotAPI/libraries/armem_gui/util/TreeWidgetBuilder.h>

Public Types

using CompareFn = std::function<int(const ElementT& element, QTreeWidgetItem* item)>
 Return < 0 if element < item, 0 if element == item, and > 0 if element > item.
 
using ElementT = _ElementT
 
using MakeItemFn = std::function<QTreeWidgetItem*(const ElementT& element)>
 
using NameFn = std::function<std::string(const ElementT& element)>
 
using UpdateItemFn = std::function<bool(const ElementT& element, QTreeWidgetItem* item)>
 

Public Member Functions

void setCompareFn (CompareFn compareFn)
 
void setExpand (bool expand)
 
void setMakeItemFn (MakeItemFn makeItemFn)
 
void setNameFn (NameFn nameFn, int nameColumn=0)
 
void setUpdateItemFn (UpdateItemFn updateItemFn)
 
 TreeWidgetBuilder ()=default
 
 TreeWidgetBuilder (CompareFn compareFn, MakeItemFn makeItemFn, UpdateItemFn updateItemFn=NoUpdate)
 
 TreeWidgetBuilder (const ElementT &)
 Constructor to automatically derive the template argument.
 
 TreeWidgetBuilder (NameFn nameFn, MakeItemFn makeItemFn, UpdateItemFn updateItemFn=NoUpdate, int nameColumn=0)
 
template<class ParentT, class ContainerT>
void updateTreeWithContainer (ParentT *parent, const ContainerT &elements)
 Update the tree with the iterable container.
 
template<class ParentT, class IteratorFn>
void updateTreeWithIterator (ParentT *parent, IteratorFn &&iteratorFn)
 Update the tree according to the elements iterated over by iteratorFn.
 

Static Public Member Functions

static CompareFn MakeCompareNameFn (NameFn nameFn, int nameColumn)
 Uses the name for comparison.
 
static bool NoUpdate (const ElementT &element, QTreeWidgetItem *item)
 No update function (default).
 

Detailed Description

template<class _ElementT>
struct armarx::TreeWidgetBuilder< _ElementT >

A class to efficiently build and maintain sorted items of QTreeWidget or QTreeWidgetItem based on a sorted container matching the intended structure.

Member Typedef Documentation

◆ CompareFn

template<class _ElementT>
using CompareFn = std::function<int(const ElementT& element, QTreeWidgetItem* item)>

Return < 0 if element < item, 0 if element == item, and > 0 if element > item.

◆ ElementT

template<class _ElementT>
using ElementT = _ElementT

◆ MakeItemFn

template<class _ElementT>
using MakeItemFn = std::function<QTreeWidgetItem*(const ElementT& element)>

◆ NameFn

template<class _ElementT>
using NameFn = std::function<std::string(const ElementT& element)>

◆ UpdateItemFn

template<class _ElementT>
using UpdateItemFn = std::function<bool(const ElementT& element, QTreeWidgetItem* item)>

Constructor & Destructor Documentation

◆ TreeWidgetBuilder() [1/4]

template<class _ElementT>
TreeWidgetBuilder ( )
default

◆ TreeWidgetBuilder() [2/4]

template<class _ElementT>
TreeWidgetBuilder ( const ElementT & )
inline

Constructor to automatically derive the template argument.

◆ TreeWidgetBuilder() [3/4]

template<class _ElementT>
TreeWidgetBuilder ( CompareFn compareFn,
MakeItemFn makeItemFn,
UpdateItemFn updateItemFn = NoUpdate )
inline

◆ TreeWidgetBuilder() [4/4]

template<class _ElementT>
TreeWidgetBuilder ( NameFn nameFn,
MakeItemFn makeItemFn,
UpdateItemFn updateItemFn = NoUpdate,
int nameColumn = 0 )
inline

Member Function Documentation

◆ MakeCompareNameFn()

template<class ElementT>
auto MakeCompareNameFn ( NameFn nameFn,
int nameColumn )
static

Uses the name for comparison.

◆ NoUpdate()

template<class _ElementT>
static bool NoUpdate ( const ElementT & element,
QTreeWidgetItem * item )
inlinestatic

No update function (default).

◆ setCompareFn()

template<class _ElementT>
void setCompareFn ( CompareFn compareFn)
inline

◆ setExpand()

template<class _ElementT>
void setExpand ( bool expand)
inline

◆ setMakeItemFn()

template<class _ElementT>
void setMakeItemFn ( MakeItemFn makeItemFn)
inline

◆ setNameFn()

template<class _ElementT>
void setNameFn ( NameFn nameFn,
int nameColumn = 0 )
inline

◆ setUpdateItemFn()

template<class _ElementT>
void setUpdateItemFn ( UpdateItemFn updateItemFn)
inline

◆ updateTreeWithContainer()

template<class ElementT>
template<class ParentT, class ContainerT>
void updateTreeWithContainer ( ParentT * parent,
const ContainerT & elements )

Update the tree with the iterable container.

Parameters
parentThe parent, i.e. the tree widget or a tree widget item.
iteratorFnFunction taking a function bool fn(const ElementT& element) and calling it for each element in the underlying container, i.e. like: void iteratorFn(bool (*elementFn)(const ElementT& element));

◆ updateTreeWithIterator()

template<class ElementT>
template<class ParentT, class IteratorFn>
void updateTreeWithIterator ( ParentT * parent,
IteratorFn && iteratorFn )

Update the tree according to the elements iterated over by iteratorFn.

Parameters
parentThe parent, i.e. the tree widget or a tree widget item.
iteratorFnFunction taking a function bool fn(const ElementT& element) and calling it for each element in the underlying container, i.e. like: void iteratorFn(bool (*elementFn)(const ElementT& element));

The documentation for this struct was generated from the following file: