DataSourceItemAction.h
54 lines
| 1.3 KiB
| text/x-c
|
CLexer
Alexandre Leroux
|
r144 | #ifndef SCIQLOP_DATASOURCEITEMACTION_H | ||
#define SCIQLOP_DATASOURCEITEMACTION_H | ||||
Alexandre Leroux
|
r461 | #include "CoreGlobal.h" | ||
Alexandre Leroux
|
r144 | #include <Common/spimpl.h> | ||
#include <QLoggingCategory> | ||||
#include <QObject> | ||||
r434 | #include <functional> | |||
Alexandre Leroux
|
r144 | Q_DECLARE_LOGGING_CATEGORY(LOG_DataSourceItemAction) | ||
class DataSourceItem; | ||||
/** | ||||
* @brief The DataSourceItemAction class represents an action on a data source item. | ||||
* | ||||
* An action is a function that will be executed when the slot execute() is called. | ||||
*/ | ||||
Alexandre Leroux
|
r461 | class SCIQLOP_CORE_EXPORT DataSourceItemAction : public QObject { | ||
Alexandre Leroux
|
r144 | |||
Q_OBJECT | ||||
public: | ||||
/// Signature of the function associated to the action | ||||
using ExecuteFunction = std::function<void(DataSourceItem &dataSourceItem)>; | ||||
/** | ||||
* Ctor | ||||
* @param name the name of the action | ||||
* @param fun the function that will be called when the action is executed | ||||
* @sa execute() | ||||
*/ | ||||
explicit DataSourceItemAction(const QString &name, ExecuteFunction fun); | ||||
Alexandre Leroux
|
r1033 | std::unique_ptr<DataSourceItemAction> clone() const; | ||
Alexandre Leroux
|
r144 | QString name() const noexcept; | ||
/// Sets the data source item concerned by the action | ||||
void setDataSourceItem(DataSourceItem *dataSourceItem) noexcept; | ||||
public slots: | ||||
/// Executes the action | ||||
void execute(); | ||||
private: | ||||
class DataSourceItemActionPrivate; | ||||
spimpl::unique_impl_ptr<DataSourceItemActionPrivate> impl; | ||||
}; | ||||
#endif // SCIQLOP_DATASOURCEITEMACTION_H | ||||