20#ifndef LIBREPCB_EDITOR_DERIVEDUIOBJECTLISTVIEW_H
21#define LIBREPCB_EDITOR_DERIVEDUIOBJECTLISTVIEW_H
41template <
typename TList,
typename TDerived,
typename TDerivedUiData>
57 for (
auto obj : *
mList) {
58 if (
auto o = std::dynamic_pointer_cast<TDerived>(obj)) {
67 std::size_t
row_count() const noexcept
override {
return mList->row_count(); }
68 std::optional<TDerivedUiData>
row_data(std::size_t i)
const override {
69 if (
auto obj = std::dynamic_pointer_cast<TDerived>(
mList->value(i))) {
70 return obj->getDerivedUiData();
68 std::optional<TDerivedUiData>
row_data(std::size_t i)
const override {
…}
74 void set_row_data(
size_t i,
const TDerivedUiData& data)
noexcept override {
75 if (
auto obj = std::dynamic_pointer_cast<TDerived>(
mList->value(i))) {
76 obj->setDerivedUiData(data);
74 void set_row_data(
size_t i,
const TDerivedUiData& data)
noexcept override {
…}
85 const TList& list,
int index,
86 const std::shared_ptr<const typename TList::Element>& obj,
87 typename TList::Event event)
noexcept {
91 case TList::Event::ElementAdded: {
92 slint::Model<TDerivedUiData>::notify_row_added(index, 1);
93 if (
auto o = std::dynamic_pointer_cast<TDerived>(
mList->value(index))) {
99 case TList::Event::ElementRemoved: {
100 slint::Model<TDerivedUiData>::notify_row_removed(index, 1);
101 if (
auto o = std::dynamic_pointer_cast<TDerived>(
mList->value(index))) {
114 mList->indexOf(
static_cast<const typename TList::Element*
>(&obj))) {
115 slint::Model<TDerivedUiData>::notify_row_changed(*index);
The Slot class is used to receive signals from non-QObject derived classes.
Definition signalslot.h:170
The DerivedUiObjectList class.
Definition deriveduiobjectlistview.h:42
std::size_t row_count() const noexcept override
Definition deriveduiobjectlistview.h:67
std::optional< TDerivedUiData > row_data(std::size_t i) const override
Definition deriveduiobjectlistview.h:68
void set_row_data(size_t i, const TDerivedUiData &data) noexcept override
Definition deriveduiobjectlistview.h:74
DerivedUiObjectList & operator=(const DerivedUiObjectList &rhs)=delete
DerivedUiObjectList(const DerivedUiObjectList &other)=delete
void listEditedHandler(const TList &list, int index, const std::shared_ptr< const typename TList::Element > &obj, typename TList::Event event) noexcept
Definition deriveduiobjectlistview.h:84
void elementDerivedUiDataChangedHandler(const TDerived &obj) noexcept
Definition deriveduiobjectlistview.h:112
~DerivedUiObjectList() noexcept
Definition deriveduiobjectlistview.h:64
TList::OnEditedSlot mOnListEditedSlot
Definition deriveduiobjectlistview.h:120
std::shared_ptr< TList > mList
Definition deriveduiobjectlistview.h:119
Slot< TDerived > mOnDerivedUiDataChangedSlot
Definition deriveduiobjectlistview.h:121
DerivedUiObjectList(const std::shared_ptr< TList > &list) noexcept
Definition deriveduiobjectlistview.h:46
Definition occmodel.cpp:77