DataSourceItemAction.cpp
42 lines
| 1.3 KiB
| text/x-c
|
CppLexer
Alexandre Leroux
|
r144 | #include <DataSource/DataSourceItemAction.h> | ||
Q_LOGGING_CATEGORY(LOG_DataSourceItemAction, "DataSourceItemAction") | ||||
struct DataSourceItemAction::DataSourceItemActionPrivate { | ||||
explicit DataSourceItemActionPrivate(const QString &name, | ||||
DataSourceItemAction::ExecuteFunction fun) | ||||
: m_Name{name}, m_Fun{std::move(fun)}, m_DataSourceItem{nullptr} | ||||
{ | ||||
} | ||||
QString m_Name; | ||||
DataSourceItemAction::ExecuteFunction m_Fun; | ||||
/// Item associated to the action (can be null, in which case the action will not be executed) | ||||
DataSourceItem *m_DataSourceItem; | ||||
}; | ||||
DataSourceItemAction::DataSourceItemAction(const QString &name, ExecuteFunction fun) | ||||
: impl{spimpl::make_unique_impl<DataSourceItemActionPrivate>(name, std::move(fun))} | ||||
{ | ||||
} | ||||
QString DataSourceItemAction::name() const noexcept | ||||
{ | ||||
return impl->m_Name; | ||||
} | ||||
void DataSourceItemAction::setDataSourceItem(DataSourceItem *dataSourceItem) noexcept | ||||
{ | ||||
impl->m_DataSourceItem = dataSourceItem; | ||||
} | ||||
void DataSourceItemAction::execute() | ||||
{ | ||||
if (impl->m_DataSourceItem) { | ||||
impl->m_Fun(*impl->m_DataSourceItem); | ||||
} | ||||
else { | ||||
qCDebug(LOG_DataSourceItemAction()) | ||||
<< tr("Can't execute action : no item has been associated"); | ||||
} | ||||
} | ||||