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++

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#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;
};