You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
nmWATI/Include/iBase/iProperty/ZxPtyItem.h

151 lines
3.9 KiB
C

#pragma once
#include <QVector>
#include <QWidget>
#include "IxPtyPano.h"
#include "iProperty_global.h"
class ZxXpfNode;
class ZxPtyPano;
class ZxPtyAttributeFile;
class IxPtyItemEditor;
// 属性项
class I_PROPERTY_EXPORT ZxPtyItem
: virtual public IxPtyItem
{
public:
ZxPtyItem(ZxPtyPano* pSheet);
~ZxPtyItem();
public:
// 创建具体的组件
IxPtyItemEditor* tryCreateEditor(const QString& sPtyTag);
// 配置设定
void setConfig(ZxXpfNode* p, bool isInit);
void loadInitConfig();
ZxXpfNode* getItemNodeBy(ZxXpfNode* config, \
QString sItemTag, \
bool bCaseInsensitive = true) const;
QString getItemAttributeBy(ZxXpfNode* config, \
QString sItemTag, \
bool bCaseInsensitive = true) const;
// 对应文件
ZxPtyAttributeFile* getAttributeFile() const;
// 载体
virtual IxPtyPano* getPtyPano() const;
// 父级属性项
virtual IxPtyItem* getParent() const;
// 父级属性项:名称
QString getParentConfigName(ZxXpfNode* config) const;
QString macrosExpanded(const QString& s) const; //宏模式处理
// 是否分组
virtual bool isGroup() const;
// 取值范围
virtual void setLimit(int nMin, int nMax);
virtual void setLimit(double fMin, double fMax);
// 对于下拉类型的设定
virtual void setOptions(const QStringList& listName, const QList<QVariant>& listValue);
virtual void setOptions(const QStringList& listName, const QStringList& listValue);
virtual void setOptions(const QStringList& listName, const QList<int>& listValue);
// 当前标识
QString getLabel();
// 当前值
virtual QVariant getValue() const;
virtual void setValue(const QVariant& v, IxInterface* pSetBy = NULL);
void onValueChanged(const QVariant& v);
// 键值
const QString& getKey() const;
QString getFullKey() const;
QString getParam(int index) const;
// 排序
static bool displayOrder(const ZxPtyItem* a, const ZxPtyItem* b);
// 系列属性
// 可见
virtual bool isVisible() const;
virtual void setVisible(bool bVisible);
int getVisibleRows();
bool isHideByCollapse();
bool isVirtualVisible();
// 只读
virtual bool isReadOnly() const;
virtual void setReadOnly(bool bReadOnly);
// 展开
virtual void setExpand(bool bExpand);
// 激活条目
virtual void activate();
// 高度
virtual void setHeight(int height);
virtual int getHeight() const;
// 该行 底及高度
int getRowBottom() const;
int getRowHeight() const;
// 双击响应
void onDoubleCliked(int n);
// 窗体
QWidget* getOwnerWidget();
QWidget* getItemWidget();
public:
int m_nIndexReal; //实际的行号
int m_nIndexVirtual; //显示在第几行, 有条目展开/折叠时, 这个值可能会变
int m_nOrder; //显示顺序
int m_nOffsetY; //当前显示位置, Y坐标
int m_nCurCellHeight; //当前条目的高度
int m_nItemIndent; //缩进
bool m_bExpanded; //是否展开对于group而言
bool m_bHidden; //是否隐藏
bool m_bActive; //是否激活
bool m_bReadonly; //是否只读
bool m_bHasMacros; //宏定义模式
QString m_sItemLabel; //显示的标签
QString m_sItemTips;
QVariant m_oItemValue; //当前值
ZxPtyPano* sheet; //所属的属性表
IxPtyItemEditor* m_pPtyItemEditor; //所属的属性控件
QStringList m_listParams; //key is at front, ie m_listParams[0]
QList<ZX_PROPERTY_CHANGED_CALLBACK_EX> handlers; //回调, 往对象回传新值
ZxPtyItem* parent; //父条目
QVector<ZxPtyItem*> children; //子条目
// 其它常量
int m_nCELL_HEIGHT;
int m_nCellSpacing;
};