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/mGui/mGuiTree/TreeWx/TreeWxMain.h

182 lines
6.1 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 "TreeItemMain.h"
#include "TreeWxBase.h"
#include "TreeNodeDescBase.h"
class ZxDataObjectEx;
class ZxDataWell;
class ZxDataJobInfo;
class ZxRstJobUtils;
class ZxDataGaugeBase;
class M_GUI_TREE_EXPORT TreeWxMain : public TreeWxBase
{
Q_OBJECT
public:
TreeWxMain(QWidget* parent = 0);
~TreeWxMain();
// 全局项目指针
void setDataProject(ZxDataProject* p);
// 数据树与成果树需要相互关联+消息响应
void setBrother(TreeWxMain* p);
void setUnableSP(bool b);
// 根据某节点获取其父井节点的Code
virtual QString getParentWellCodeOf(TreeItemBase* p);
// 获取特定节点对应的井、Job信息
bool getObjCodeInfos(QTreeWidgetItem* p,
QString& sWell,
QString& sJob,
QString& sWndID);
// 当批量保存井基础数据后的刷新
// virtual void freshTreeEx();
// 刷新Brother
void freshBotherTreeWx();
// 根据井型油气水获取相应图标
static void getWellIcon(QString sType, QString& sIcon);
// 这是在SubWndData表格右键删除时触发然后借助树进行响应
// 不用tips进行确认在此之前已经确认
virtual bool forceDelByDataObjs(QStringList& listKeys, \
QString& sTable, \
QString& sError);
virtual bool collectItemsOfDataObjs(QList<TreeItemBase*>& list, \
QStringList& listKeys, \
QString& sTable, \
QString& sError);
bool collectItemsOfDataCodes(TreeItemBase* pItemP, \
bool bTopLevelOnly, \
QStringList& listKeys, \
QList<TreeItemBase*>& listTrItems);
// 遍历查找所有井一级的节点
virtual bool findAllWellNodes(TreeItemBase* pItemP, \
QList<TreeItemBase*>& listTrItems);
// 遍历查找数据对象所关联的节点
virtual TreeItemMain* findItemNodeOf(ZxDataObject* pObj, TreeItemBase* pItemP);
// 拖拽时,暂时移走
virtual void takeawayItemNode(TreeItemBase* pItem);
// 插入节点
virtual void insertItemNode(TreeItemBase* pItem, TreeItemBase* pItemP, int nIndex);
// 查找父级节点其中类型为oType
virtual TreeItemMain* findParentItemNodeOf(TreeItemBase* pItem, MainTreeNodeType oType);
// 是否父级节点
virtual bool isParentLevelsOf(TreeItemBase* pItem, TreeItemBase* pItemP);
// 改变当前选项状态
virtual void modifyCurrentItemStates(QString sItemName, bool bInit);
// 保存时确保树中的Node的存在
virtual TreeItemMain* makeureBlockNode(QString sBlockName);
virtual TreeItemMain* makeureWellNode(ZxDataWell* pWell);
protected:
// 填充
virtual void fillTree();
// 填写树
//virtual void initTopLevels();
virtual void initTopLevels();
virtual void initTopLevel_OneBlock(QString sBlockName, \
TreeItemMain*& pItem, \
ZxDataObjectList& vecObjs);
virtual void initTopLevel_OneWell(ZxDataObject* p, \
TreeItemMain*& pItem, \
TreeItemMain* pItemP, \
bool bExcusive = true);
virtual void initSubLevels(TreeItemMain* pItem);
// 填写时,该数据对象是否考虑,比如填写成果树时,如果井下面没有成果则不考虑
virtual bool isDataObjConsidered(ZxDataObject* pObj);
protected:
// 获取筛选后的区块名称(可能根据井进行适当筛选,比如没有成果的)
QStringList getFilteredBlocks(bool bAutoSort = true);
// 初始化节点信息,从INi获取
void loadCommonNodeDescs();
// 右键菜单功能_节点通用
virtual void initContextMenuCommonNode(QMenu* pMenu);
// 空节点通用
virtual void initContextMenuCommonAll(QMenu* pMenu);
// 右键节点级别的菜单
virtual void initContextMenuWell(QMenu* pMenu);
virtual void initContextMenuBlock(QMenu* pMenu);
// 右键的部分功能重载实现
virtual bool showOrEditNode(QTreeWidgetItem* pItem);
virtual bool delCurrentNodes(QList<TreeItemBase *> &listItems);
virtual bool delOneNode(TreeItemMain* pItem);
virtual bool renameCurrentNode(QString sNew);
virtual void doubleClickItem(QTreeWidgetItem* pItem);
virtual void enteredItem(QTreeWidgetItem* pItem);
// 当p的一孩子被删除后刷新p
// 此时,孩子已经被删除
virtual void updateParentWhenDel(QTreeWidgetItem* pParent);
// 拖拽相关的信号
virtual bool isDragAccepted(QDragEnterEvent* event);
virtual void dealwithDrop(QDropEvent* event);
ZxDataObjectEx* parseMimeData(const QMimeData* pMimeData, \
MainTreeNodeType& oType);
Q_SIGNALS:
// 当前井该变
void sigSetCurrentWell(const QString&, const QString&);
void sigConfirmChangingCurWell(bool& b);
protected:
// 更改节点属性
virtual void changeNodeAttrs(TreeItemMain*& p);
// 获取节点tips以\r\n换行
virtual QString getTipsOf(TreeItemMain*& p);
// 获取井的区块名称,如果为空,则返回“其他”
QString getBlockNameOf(ZxDataWell* pDataWell);
public slots:
// 右键响应
void slotSetCurrentWell(); //设为当前井
void slotScanData(); //浏览数据
void slotEditNodeObj(); //编辑Node
protected:
// 树节点特殊的节点标识
QString m_sAllDataTag;
QString m_sWellDataTag;
// 部分常用节点信息,从ini获取
vecTreeNodeDescPtr m_vecCommonNodeDescs;
// 数据对象载体
ZxDataProject* m_pDataProject;
// Brother
TreeWxMain* m_pBrother;
// 在其它brother刷新中不能触发信号
bool m_bUnableSP;
bool m_bEnableBlockOthers;//是否启用,区块没填写时,自动为其他
};