DataSourceItem.cpp
56 lines
| 1.4 KiB
| text/x-c
|
CppLexer
|
r35 | #include <DataSource/DataSourceItem.h> | ||
#include <QVector> | ||||
struct DataSourceItem::DataSourceItemPrivate { | ||||
|
r78 | explicit DataSourceItemPrivate(DataSourceItemType type, QVector<QVariant> data) | ||
: m_Parent{nullptr}, m_Children{}, m_Type{type}, m_Data{std::move(data)} | ||||
|
r35 | { | ||
} | ||||
DataSourceItem *m_Parent; | ||||
std::vector<std::unique_ptr<DataSourceItem> > m_Children; | ||||
|
r78 | DataSourceItemType m_Type; | ||
|
r35 | QVector<QVariant> m_Data; | ||
}; | ||||
|
r78 | DataSourceItem::DataSourceItem(DataSourceItemType type, QVector<QVariant> data) | ||
: impl{spimpl::make_unique_impl<DataSourceItemPrivate>(type, std::move(data))} | ||||
|
r35 | { | ||
} | ||||
void DataSourceItem::appendChild(std::unique_ptr<DataSourceItem> child) noexcept | ||||
{ | ||||
child->impl->m_Parent = this; | ||||
impl->m_Children.push_back(std::move(child)); | ||||
} | ||||
DataSourceItem *DataSourceItem::child(int childIndex) const noexcept | ||||
{ | ||||
if (childIndex < 0 || childIndex >= childCount()) { | ||||
return nullptr; | ||||
} | ||||
else { | ||||
return impl->m_Children.at(childIndex).get(); | ||||
} | ||||
} | ||||
int DataSourceItem::childCount() const noexcept | ||||
{ | ||||
return impl->m_Children.size(); | ||||
} | ||||
QVariant DataSourceItem::data(int dataIndex) const noexcept | ||||
{ | ||||
return impl->m_Data.value(dataIndex); | ||||
} | ||||
DataSourceItem *DataSourceItem::parentItem() const noexcept | ||||
{ | ||||
return impl->m_Parent; | ||||
} | ||||
|
r78 | |||
DataSourceItemType DataSourceItem::type() const noexcept | ||||
{ | ||||
return impl->m_Type; | ||||
} | ||||