DataTreeBuilderBase.cpp
Go to the documentation of this file.
1 #include "DataTreeBuilderBase.h"
2 
3 #include <QTreeWidgetItem>
4 
6 // #include <ArmarXCore/core/logging/Logging.h>
7 
11 
13 {
14 
15  const int keyIndexRole = Qt::UserRole + 10;
16 
18  {
19  }
20 
22  {
23  }
24 
25  void
26  DataTreeBuilderBase::setColumns(int key, int value, int type)
27  {
28  this->columnKey = key;
29  this->columnType = type;
30  this->columnValue = value;
31  }
32 
33  QTreeWidgetItem*
34  DataTreeBuilderBase::makeItem(const std::string& key) const
35  {
36  return new QTreeWidgetItem(QStringList{QString::fromStdString(key)});
37  }
38 
39  QTreeWidgetItem*
41  {
42  QTreeWidgetItem* item = new QTreeWidgetItem();
43  item->setData(0, keyIndexRole, static_cast<int>(key));
44  return item;
45  }
46 
47  void
48  DataTreeBuilderBase::setRowTexts(QTreeWidgetItem* item,
49  const std::string& key,
50  const std::string& value,
51  const std::string& typeName) const
52  {
53  item->setText(columnKey, QString::fromStdString(key));
54  item->setText(columnValue, QString::fromStdString(value));
55  item->setText(columnType, QString::fromStdString(typeName));
56  }
57 
58  void
59  DataTreeBuilderBase::setRowTexts(QTreeWidgetItem* item,
60  const std::string& key,
62  {
63  if (!data)
64  {
65  return;
66  }
68  setRowTexts(item, key, value, sanitizeTypeName(data->getFullName()));
69  }
70 
73  {
74  DictBuilder builder;
75  builder.setCompareFn([](const std::string& key, QTreeWidgetItem* item)
76  { return armarx::detail::compare(key, item->text(0).toStdString()); });
77  builder.setMakeItemFn([this](const std::string& key) { return this->makeItem(key); });
78  return builder;
79  }
80 
83  {
84  ListBuilder builder;
85  builder.setCompareFn(
86  [](size_t key, QTreeWidgetItem* item)
87  {
88  QVariant itemKey = item->data(0, keyIndexRole);
89  ARMARX_CHECK_EQUAL(itemKey.type(), QVariant::Type::Int);
90  // << VAROUT(key) << " | " << VAROUT(item->text(0).toStdString()) << itemKey.typeName();
91 
92  return armarx::detail::compare(static_cast<int>(key), itemKey.toInt());
93  });
94  builder.setMakeItemFn([this](size_t key) { return this->makeItem(key); });
95  return builder;
96  }
97 
98  std::vector<size_t>
99  DataTreeBuilderBase::getIndex(size_t size) const
100  {
101  std::vector<size_t> index;
102  index.reserve(size);
103  for (size_t i = 0; i < size; ++i)
104  {
105  index.push_back(i);
106  }
107  return index;
108  }
109 
110 } // namespace armarx::armem::gui::instance
sanitize_typename.h
armarx::armem::gui::instance::sanitizeTypeName
std::string sanitizeTypeName(const std::string &typeName)
Definition: sanitize_typename.cpp:31
armarx::armem::gui::instance::DataTreeBuilderBase::setRowTexts
void setRowTexts(QTreeWidgetItem *item, const std::string &key, const std::string &value, const std::string &typeName="") const
Definition: DataTreeBuilderBase.cpp:48
index
uint8_t index
Definition: EtherCATFrame.h:59
armarx::armem::gui::instance::DataTreeBuilderBase::getListBuilder
ListBuilder getListBuilder() const
Definition: DataTreeBuilderBase.cpp:82
armarx::armem::gui::instance::DataTreeBuilderBase::~DataTreeBuilderBase
virtual ~DataTreeBuilderBase()
Definition: DataTreeBuilderBase.cpp:21
armarx::armem::gui::instance::DataTreeBuilderBase::columnType
int columnType
Definition: DataTreeBuilderBase.h:51
armarx::armem::gui::instance::DataTreeBuilderBase::setColumns
void setColumns(int key, int value, int type)
Definition: DataTreeBuilderBase.cpp:26
TreeWidgetBuilder.h
armarx::armem::gui::instance::keyIndexRole
const int keyIndexRole
Definition: DataTreeBuilderBase.cpp:15
armarx::armem::gui::instance::DataTreeBuilderBase::columnValue
int columnValue
Definition: DataTreeBuilderBase.h:50
armarx::aron::data::VariantPtr
std::shared_ptr< Variant > VariantPtr
Definition: forward_declarations.h:11
armarx::armem::gui::instance::DataTreeBuilderBase::columnKey
int columnKey
Definition: DataTreeBuilderBase.h:49
cxxopts::value
std::shared_ptr< Value > value()
Definition: cxxopts.hpp:855
armarx::armem::gui::instance
Definition: AronDataView.cpp:3
data
uint8_t data[1]
Definition: EtherCATFrame.h:68
armarx::TreeWidgetBuilder
A class to efficiently build and maintain sorted items of QTreeWidget or QTreeWidgetItem based on a s...
Definition: DataTreeBuilderBase.h:10
armarx::TreeWidgetBuilder::setMakeItemFn
void setMakeItemFn(MakeItemFn makeItemFn)
Definition: TreeWidgetBuilder.h:67
armarx::armem::gui::instance::DataTreeBuilderBase::getDictBuilder
DictBuilder getDictBuilder() const
Definition: DataTreeBuilderBase.cpp:72
armarx::aron::DataDisplayVisitor::getValue
static std::string getValue(const data::VariantPtr &n)
Definition: DataDisplayVisitor.cpp:9
armarx::detail::compare
int compare(const T &lhs, const T &rhs)
Definition: TreeWidgetBuilder.h:321
ExpressionException.h
DataTreeBuilderBase.h
armarx::VariantType::Int
const VariantTypeId Int
Definition: Variant.h:917
armarx::armem::gui::instance::DataTreeBuilderBase::DataTreeBuilderBase
DataTreeBuilderBase()
Definition: DataTreeBuilderBase.cpp:17
armarx::armem::gui::instance::DataTreeBuilderBase::makeItem
QTreeWidgetItem * makeItem(const std::string &key) const
Definition: DataTreeBuilderBase.cpp:34
ARMARX_CHECK_EQUAL
#define ARMARX_CHECK_EQUAL(lhs, rhs)
This macro evaluates whether lhs is equal (==) rhs and if it turns out to be false it will throw an E...
Definition: ExpressionException.h:130
armarx::TreeWidgetBuilder::setCompareFn
void setCompareFn(CompareFn compareFn)
Definition: TreeWidgetBuilder.h:55
armarx::armem::gui::instance::DataTreeBuilderBase::getIndex
std::vector< size_t > getIndex(size_t size) const
Definition: DataTreeBuilderBase.cpp:99
DataDisplayVisitor.h