20#include "cc_tools_qt/ToolsField.h"
22#include <QtCore/QString>
23#include <QtCore/QList>
35class CC_TOOLS_API ToolsVariantField :
public ToolsField
37 using Base = ToolsField;
39 using ActPtr = std::unique_ptr<ToolsVariantField>;
41 using MemberCreateCallbackFunc = std::function<ToolsFieldPtr ()>;
44 ToolsVariantField(
const ToolsVariantField&) =
delete;
45 ToolsVariantField& operator=(
const ToolsVariantField&) =
delete;
47 virtual ~ToolsVariantField() noexcept;
49 ToolsField* getCurrent();
51 const ToolsField* getCurrent() const;
53 void setCurrent(ToolsFieldPtr current);
57 QStringList membersNames() const;
59 int getCurrentIndex() const;
61 void setCurrentIndex(
int index);
63 int getMembersCount() const;
65 template <typename TFunc>
66 void setMemberCreateCallback(TFunc&& func)
68 m_createMemberCb = std::forward<TFunc>(func);
74 virtual QStringList membersNamesImpl()
const = 0;
75 virtual void dispatchImpl(ToolsFieldHandler& handler);
76 virtual int getCurrentIndexImpl()
const = 0;
77 virtual void setCurrentIndexImpl(
int index) = 0;
78 virtual int getMembersCountImpl()
const = 0;
81 MemberCreateCallbackFunc m_createMemberCb;
84using ToolsVariantFieldPtr = ToolsVariantField::ActPtr;