#pragma once #include "iDlgBase.h" #include "iResCpSrcDesc.h" #include "mSubWndAna_global.h" namespace Ui { class iWxOptionResCompare; } class iGuiPlot; class iSubWndBaseAF; class iSubWndFitting; class iSubWnd; class iWxBase; class ZxDataWell; class ZxRstUtils; class ZxMdiSubWindow; class M_SUB_WND_ANA_EXPORT iWxOptionResCompare : public iDlgBase { Q_OBJECT public: explicit iWxOptionResCompare(QWidget *parent = 0); ~iWxOptionResCompare(); // 设置当前打开的Wnd void setAllMdiChildren(QVector& vec); // 设置默认选中的Code,如:从树右键触发 void setInitialCode(QStringList& list); // virtual void initUI(); private: // 初始化 void initCbxs(); void initWells(); void initOthers(); void initTreeWx(); void fillCbxWnds(QComboBox* p); // 填充 void fillCbxWells(); void fillCbxSegments(); //具体流动段 void fillCbxSeries(); // 数据 void freshTreeWx(); // 根据当前Option,获取sWellCode井的成果信息 VVecVariant collectRstInfos(QVector& vecRstSrcs, \ QString sWellCode); // 分为三类 0:已经加载 1:未保存 void _collectFromSubWnd(VVecVariant& vvecRstInfos, QVector& vecRstSrcs, ZxMdiSubWindow* pSubChild, iResCpSrcDesc::CpSrcType oMode, QString sSeries); // 分为三类 2:未加载 void _collectFromRstUtil(VVecVariant& vvecRstInfos, QVector& vecRstSrcs, ZxRstUtils* pRstUtils); // 暂时,从数据库ByteArray字段解析SegInfo中的部分信息 bool loadSerObjFromBa(QByteArray& v, \ IxSerDes*& pSerObj); // 内部函数,文字转换 QString getDescOfCST(iResCpSrcDesc::CpSrcType oMode); // 上下移动 void moveTreeWxItem(QTreeWidget* pTreeWx, bool bUpForward, bool bToFinal = false); // 4+4个按钮状态函数 void freshBtnStates(); // SelAll状态 void freshSelAllState(); // Apply void actionOnAutoApply(); bool runApply(); bool getWndSel(iSubWnd*& pSubWnd); QString getWndName(); protected: virtual void onSerialize(ZxSerializer* ser); virtual void onDeserialize(ZxSerializer* ser); signals: // 对比选项OK,触发对比视图刷新 void sigResCompOptionChanged(QVector&, QVector&, bool, iSubWnd*, bool, QString, bool); // 在刷新时,获取所有的窗体 void sigGetAllMdis(QVector&); private slots: // 井及井次 void on_cbxWellName_currentIndexChanged(const QString &arg1); // 模型系列 void on_cbxModelSeries_currentIndexChanged(const QString &arg1); // 流动段类型 void on_cbxSegType_currentIndexChanged(int index); // 流动段 void on_cbxSegments_currentIndexChanged(const QString &arg1); // 对比对象调整,主要为了刷新四个小按钮的状态 void on_treeWxWellRsts_currentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous); void on_treeWxWellRsts_itemChanged(QTreeWidgetItem *item, int column); // 右侧内容选项,统一 void slotCbxOptionClicked(int); // 四个小按钮 void on_btnTop_clicked(); void on_btnUp_clicked(); void on_btnDown_clicked(); void on_btnBtm_clicked(); // 操作、应用 void on_cbxAutoApply_clicked(); void on_btnApply_clicked(); void on_btnOK_clicked(); void on_btnCancel_clicked(); void on_horizontalSlider_valueChanged(int value); void on_cbxShowUnloaded_clicked(); void on_btnFresh_clicked(); void on_cbxSelAll_clicked(); void on_cmxWnds_currentIndexChanged(int index); private: private: Ui::iWxOptionResCompare *ui; // 控件,右侧一系列CheckBox QVector m_vecCbxOptions; // 所有井 QVector m_vecWells; /// @brief 对比来源包括三部分 /// 1.当前新建的 ZxMdiSubWindow,尚未保存 /// 2.当前加载的 ZxMdiSubWindow,原先保存 /// 3.原先已经保存、但是当前尚未加载 QVector m_vecMdiChildren; //所有Mdi // 这是成果来源载体, // 可以是 SubWndFitting 也可 ZxRstUtils, // 所以取了二者父类ISerializableEx QVector m_vecRstSrcs; // 这是所有Rst的描述,在treewx显示的具体内容 VVecVariant m_vvecRstInfos; // 这是默认选中的Code,如:从树右键触发 QStringList m_listInitialCodes; };