20#ifndef LIBREPCB_EDITOR_UIOBJECTLIST_H
21#define LIBREPCB_EDITOR_UIOBJECTLIST_H
46template <
typename TObj,
typename TUiData>
62 const std::shared_ptr<const TObj>&,
Event>
77 std::shared_ptr<TObj>
at(
int index)
noexcept {
return mObjects.at(index); }
78 std::shared_ptr<TObj>
value(
int index)
noexcept {
78 std::shared_ptr<TObj>
value(
int index)
noexcept {
…}
81 void append(
const std::shared_ptr<TObj>& obj)
noexcept {
81 void append(
const std::shared_ptr<TObj>& obj)
noexcept {
…}
84 void insert(
int index,
const std::shared_ptr<TObj>& obj)
noexcept {
86 index = qBound(0, index,
mObjects.count() + 1);
88 slint::Model<TUiData>::notify_row_added(index, 1);
84 void insert(
int index,
const std::shared_ptr<TObj>& obj)
noexcept {
…}
92 bool remove(
int index)
noexcept {
return takeAt(index) !=
nullptr; }
93 std::shared_ptr<TObj>
take(
const TObj* obj)
noexcept {
94 if (
auto index =
indexOf(obj)) {
93 std::shared_ptr<TObj>
take(
const TObj* obj)
noexcept {
…}
100 std::shared_ptr<TObj>
takeAt(
int index)
noexcept {
101 if (
auto obj =
mObjects.takeAt(index)) {
102 slint::Model<TUiData>::notify_row_removed(index, 1);
100 std::shared_ptr<TObj>
takeAt(
int index)
noexcept {
…}
110 std::optional<int>
indexOf(
const TObj* obj)
const noexcept {
111 for (
int i = 0; i <
mObjects.count(); ++i) {
110 std::optional<int>
indexOf(
const TObj* obj)
const noexcept {
…}
123 return static_cast<std::size_t
>(
mObjects.count());
125 std::optional<TUiData>
row_data(std::size_t i)
const override {
127 return obj->getUiData();
125 std::optional<TUiData>
row_data(std::size_t i)
const override {
…}
133 obj->setUiData(data);
142 if (
auto index =
indexOf(&obj)) {
143 slint::Model<TUiData>::notify_row_changed(*index);
The Signal class is used to emit signals on non-QObject derived classes.
Definition signalslot.h:65
The Slot class is used to receive signals from non-QObject derived classes.
Definition signalslot.h:170
The UiObjectList class.
Definition uiobjectlist.h:47
Slot< TObj > mOnUiDataChangedSlot
Definition uiobjectlist.h:149
Slot< UiObjectList< TObj, TUiData >, int, const std::shared_ptr< const TObj > &, Event > OnEditedSlot
Definition uiobjectlist.h:63
std::size_t row_count() const noexcept override
Definition uiobjectlist.h:122
int count() const noexcept
Definition uiobjectlist.h:75
QVector< std::shared_ptr< TObj > > mObjects
Definition uiobjectlist.h:148
std::optional< TUiData > row_data(std::size_t i) const override
Definition uiobjectlist.h:125
UiObjectList(const UiObjectList &other)=delete
TUiData UiData
Definition uiobjectlist.h:50
void append(const std::shared_ptr< TObj > &obj) noexcept
Definition uiobjectlist.h:81
Event
Definition uiobjectlist.h:53
std::shared_ptr< TObj > value(int index) noexcept
Definition uiobjectlist.h:78
std::shared_ptr< TObj > at(int index) noexcept
Definition uiobjectlist.h:77
auto begin() noexcept
Definition uiobjectlist.h:118
UiObjectList() noexcept
Definition uiobjectlist.h:66
std::shared_ptr< TObj > take(const TObj *obj) noexcept
Definition uiobjectlist.h:93
~UiObjectList() noexcept
Definition uiobjectlist.h:72
Signal< UiObjectList< TObj, TUiData >, int, const std::shared_ptr< const TObj > &, Event > onEdited
Definition uiobjectlist.h:60
void elementUiDataChangedHandler(const TObj &obj) noexcept
Definition uiobjectlist.h:141
UiObjectList & operator=(const UiObjectList &rhs)=delete
void insert(int index, const std::shared_ptr< TObj > &obj) noexcept
Definition uiobjectlist.h:84
bool remove(int index) noexcept
Definition uiobjectlist.h:92
auto end() noexcept
Definition uiobjectlist.h:119
void set_row_data(size_t i, const TUiData &data) noexcept override
Definition uiobjectlist.h:131
std::shared_ptr< TObj > takeAt(int index) noexcept
Definition uiobjectlist.h:100
bool isEmpty() const noexcept
Definition uiobjectlist.h:76
std::optional< int > indexOf(const TObj *obj) const noexcept
Definition uiobjectlist.h:110
TObj Element
Definition uiobjectlist.h:49
Definition occmodel.cpp:77