21#include "cc_tools_qt/ToolsField.h"
23#include <QtCore/QString>
24#include <QtCore/QList>
36class CC_TOOLS_API ToolsVariantField :
public ToolsField
38 using Base = ToolsField;
40 using ActPtr = std::unique_ptr<ToolsVariantField>;
42 using MemberCreateCallbackFunc = std::function<ToolsFieldPtr ()>;
45 ToolsVariantField(
const ToolsVariantField&) =
delete;
46 ToolsVariantField& operator=(
const ToolsVariantField&) =
delete;
48 virtual ~ToolsVariantField() noexcept;
50 ToolsField* getCurrent();
52 const ToolsField* getCurrent() const;
54 void setCurrent(ToolsFieldPtr current);
58 QStringList membersNames() const;
60 int getCurrentIndex() const;
62 void setCurrentIndex(
int index);
64 int getMembersCount() const;
66 template <typename TFunc>
67 void setMemberCreateCallback(TFunc&& func)
69 m_createMemberCb = std::forward<TFunc>(func);
75 virtual QStringList membersNamesImpl()
const = 0;
76 virtual void dispatchImpl(ToolsFieldHandler& handler);
77 virtual int getCurrentIndexImpl()
const = 0;
78 virtual void setCurrentIndexImpl(
int index) = 0;
79 virtual int getMembersCountImpl()
const = 0;
82 MemberCreateCallbackFunc m_createMemberCb;
85using ToolsVariantFieldPtr = ToolsVariantField::ActPtr;