#pragma once #include "iDlgBase.h" #include "mModuleDefines.h" #include "mGuiSysManager_global.h" class QListWidgetItem; class ZxDataProject; class iRibbonXmlGroup; namespace Ui { class iWxWelcome; } // 选择并打开项目对话框 class M_GUI_SYSMANAGER_EXPORT iWxWelcome : public iDlgBase { Q_OBJECT public: enum ButtonMode { BM_Active = 0, //当前选择的状态 BM_LastActive, //上次选用的状态 BM_Inactive, //未选择 BM_Others, //比如More按钮 BM_Unknown }; explicit iWxWelcome(MainWindowOption o, QWidget *parent = 0); ~iWxWelcome(); // 初始化 virtual void initUI(); // 获取项目路径相关 QString getProjectName(); //项目名称 QString getProjDir(QString sProjName = ""); //项目路径 QString getProjParentDir(); //项目所在的上一级路径 QString getProjFullPath(QString sProjName = ""); //全 // 按钮的状态 void refrsheButtonStates(); // 调用模式 void runProjNew(); bool runProjOpen(); bool _runProjOpen(QString sProjName); void runProjSketch(); void runProjSaveAs(); void runProjDel(QString sProjName = ""); bool redirectAndOpen(QString sDir, QString sProjName, bool bDbMode); // 默认工作路径 static QString getLastPrjWorkDir(); // 左侧按钮相关 void setXmlFileGroup(iRibbonXmlGroup* p); void changeLeft2Mode(bool bReorgUi = true); signals: // 判断是否enable void sigBtnEnabled(QString sName, int nID, bool& bEnabled); // 选定后即将打开 void sigProjSelected(QString sDir, QString sProj, bool& bOk); // 获取当前打开的Project的全路径 void sigGetCurProjFullpath(QString& s); // 删除工区后的最近打开项目的刷新 void sigProjDeleted(QString sPath); // 获取当前的Project void sigGetCurProject(ZxDataProject*&); // 切换视窗 void sigChange2Main(); // 命令传递 void sigAction2Main(QString sAction, bool& bExecuted); protected: // 初始化一些配置参数 void initSbCtrls(); // 设置左侧按钮 void initLayoutLeft(); // 设置最近项目Groupbox void initGbxCurrentProjs(); void changeProjBtnMode(QPushButton* pBtn, ButtonMode bm); void activeProjBtn(QPushButton* pBtn); // 获取井数 int getWellNumOfProj(QString& sUrl); // 默认工作路径 QStringList getRecentDirs(); void changeRecentDirs(QString sDir); // 刷新相应列表 void refreshCurrentProjs(); //当前目录下所有项目 void refreshRecentProjs(); //最近打开的项目 void refreshRecentDirs(); //最近打开的目录 QStringList getProjBaseNames(QString sDir); QString getProjTips(QString sBaseName); bool removeFromRecentProjects(QString sUrl); bool removeFromRecentDirs(QString sDir); // 重新布局当前目录的所有的项目 void relayoutCurrentProjs(); // 更新系统配置 void copySysConfigs(QString& sUrl); private slots: // 左侧按钮统一响应 void slotLeftBtnTriggered(); // 当前目录下的工区响应 void slotProjBtnTriggered(); // 右键菜单(比如删除) void slotPromptContextMenu(const QPoint &pos); // 右键菜单响应 void slotMenuActionTriggered(); // 路径 void on_btnBrowseDir_clicked(); // 刷新 void on_btnRefreshCurProjects_clicked(); void on_btnRefreshProjects_clicked(); void on_btnRefreshDirs_clicked(); // 路径Chaged void on_tbxDir_textChanged(const QString &arg1); // 当前项目切换 void on_listWxRecentProjs_itemDoubleClicked(QListWidgetItem *item); void on_listWxRecentDirs_itemDoubleClicked(QListWidgetItem *item); // Home void on_btnHome_clicked(); // 最近个数控制 void on_cbxRecentNum_clicked(); void on_sbRecentNum_valueChanged(int arg1); // 布局个数 void on_sbMaxRow_valueChanged(int arg1); void on_sbMaxCol_valueChanged(int arg1); void on_cbxSortBy_currentIndexChanged(int index); private: Ui::iWxWelcome *ui; QGridLayout* m_pGridLayout; QMenu* m_pMenu; QStringList m_listRencentDirs; // 左侧按钮相关 MainWindowOption m_oMwo; iRibbonXmlGroup* m_pXmlFileGroup; QVector m_vecLeftBtns; QVector m_vecLeftLines; QPushButton* m_pBtnCurProj; QMap m_mapBtnLbls; };