22#include "cc_tools_qt/ToolsField.h"
24#include <QtCore/QString>
25#include <QtCore/QList>
37class CC_TOOLS_API ToolsVariantField :
public ToolsField
39 using Base = ToolsField;
41 using ActPtr = std::unique_ptr<ToolsVariantField>;
43 using MemberCreateCallbackFunc = std::function<ToolsFieldPtr ()>;
46 ToolsVariantField(
const ToolsVariantField&) =
delete;
47 ToolsVariantField& operator=(
const ToolsVariantField&) =
delete;
49 virtual ~ToolsVariantField() noexcept;
51 ToolsField* getCurrent();
53 const ToolsField* getCurrent() const;
55 void setCurrent(ToolsFieldPtr current);
59 QStringList membersNames() const;
61 int getCurrentIndex() const;
63 void setCurrentIndex(
int index);
65 int getMembersCount() const;
67 template <typename TFunc>
68 void setMemberCreateCallback(TFunc&& func)
70 m_createMemberCb = std::forward<TFunc>(func);
76 virtual QStringList membersNamesImpl()
const = 0;
77 virtual void dispatchImpl(ToolsFieldHandler& handler);
78 virtual int getCurrentIndexImpl()
const = 0;
79 virtual void setCurrentIndexImpl(
int index) = 0;
80 virtual int getMembersCountImpl()
const = 0;
83 MemberCreateCallbackFunc m_createMemberCb;
86using ToolsVariantFieldPtr = ToolsVariantField::ActPtr;