#ifndef CONSTANTS_H #define CONSTANTS_H #include #include // ============================================================================ // 项目公共常量 — 所有 URL、路径、文件名等配置集中于此,修改只需改一处 // ============================================================================ namespace Constants { // --------------------------------------------------------------------------- // 应用版本号(发版时只需修改此处) // --------------------------------------------------------------------------- namespace App { constexpr char Version[] = "1.4.0"; } // --------------------------------------------------------------------------- // URL 常量 // --------------------------------------------------------------------------- namespace Urls { constexpr char Base[] = "http://10.20.163.105:6045"; inline QString updateInfo() { return QString::fromLatin1(Base) + "/download/uft3changecode/update_info.json"; } inline QString downloadPage(){ return QString::fromLatin1(Base) + "/uft3changecode/下载.html"; } inline QString helpPage() { return QString::fromLatin1(Base) + "/uft3changecode"; } } // --------------------------------------------------------------------------- // 目录 / 文件路径常量(相对于 exe 目录的子路径名称) // --------------------------------------------------------------------------- namespace Paths { inline const QString ToolDir = "uf2touft3"; // 工具主目录 inline const QString LogDir = "logs"; // 日志目录 inline const QString CacheDir = "cache"; // 缓存目录 inline const QString ChangeCodeDir = "change_code"; // 代码检索根目录(toolDir 下) inline const QString FunctionOutput = "function_output"; // 调用链/文件导出目录 } // --------------------------------------------------------------------------- // ToolDir 下的文件名 // --------------------------------------------------------------------------- namespace ToolFiles { inline const QString Exe = "uf2touft3.exe"; inline const QString ConfigIni = "config.ini"; inline const QString Uf2Json = "uf2.json"; inline const QString Uft3Json = "uft3.json"; inline const QString Uft3Trans = "uft3Trans.json"; inline const QString CustJson = "cust.json"; } // --------------------------------------------------------------------------- // Cache 相关 // --------------------------------------------------------------------------- namespace Cache { inline const QString DbFile = "config_cache.db"; } // --------------------------------------------------------------------------- // 元数据文件相对子路径(相对于业务工程目录 dirPath 拼接) // --------------------------------------------------------------------------- namespace MetaPaths { // UFT3 inline const QString Uft3StdField = "/metadata/stdfield.stdfield"; // UFT3 标准字段文件 inline const QString Uft3DataType = "/metadata/datatype.datatype"; // UFT3 数据类型文件 inline const QString Uft3StructDir = "/uftstructure"; // UFT3 表结构目录 // UF2 inline const QString Uf2StdField = "/公共资源/stdfields.xml"; // UF2 标准字段文件 inline const QString Uf2DataType = "/公共资源/datatypes.xml"; // UF2 数据类型文件 inline const QString Uf2ErrNumber = "/公共资源/errNumbers.xml"; // UF2 错误号文件 // 文件扩展名 inline const QString Uft3StructExt = ".uftstructure"; // UFT3 表结构文件扩展名 } // --------------------------------------------------------------------------- // 运行时路径辅助函数(基于 applicationDirPath 拼接) // --------------------------------------------------------------------------- inline QString toolDir() { return QCoreApplication::applicationDirPath() + "/" + Paths::ToolDir; } inline QString toolExe() { return toolDir() + "/" + ToolFiles::Exe; } inline QString configIni() { return toolDir() + "/" + ToolFiles::ConfigIni; } inline QString custJson() { return toolDir() + "/" + ToolFiles::CustJson; } inline QString logDir() { return QCoreApplication::applicationDirPath() + "/" + Paths::LogDir; } inline QString cacheDir() { return QCoreApplication::applicationDirPath() + "/" + Paths::CacheDir; } inline QString cacheDb() { return cacheDir() + "/" + Cache::DbFile; } // --------------------------------------------------------------------------- // 代码检索(CodeSearch)相关常量与路径 // --------------------------------------------------------------------------- namespace CodeSearch { constexpr char ChangeCodeIni[] = "change_code.ini"; // 路径持久化配置文件名 constexpr char ConvertPathKey[] = "codeSearch/convertPath"; // QSettings 键:转码业务路径 constexpr char SearchPathKey[] = "codeSearch/searchPath"; // QSettings 键:非转码业务路径 } inline QString changeCodeDir() { return toolDir() + "/" + Paths::ChangeCodeDir; } // 默认代码检索根目录 inline QString changeCodeIni() { return toolDir() + "/" + QString::fromLatin1(CodeSearch::ChangeCodeIni); } inline QString functionOutput() { return Paths::FunctionOutput; } // 调用链/文件导出目录名 } // namespace Constants // ============================================================================ // 路径与规则相关的公共工具(原 pathutils.h 合并至此) // - 反斜杠标准化(replace('\\','/')) // - “转码接口”路径判定规则(原在 uft3interface/uf2interface 多处硬编码) // 仅依赖 ,不引入额外耦合 // ============================================================================ namespace PathUtils { // 将 Windows 反斜杠统一为斜杠,返回标准化后的副本(不修改入参) inline QString normPath(const QString& path) { QString p = path; p.replace('\\', '/'); return p; } // 判断路径是否属于“转码”接口:位于 cbptrans / mgrcbptrans / converttrans / ses // 目录下,但排除 cbptrans/cbptranspub 公共转码目录。内部先做路径标准化, // 因此即使传入含反斜杠的原始路径也能正确判定。 inline bool isTransCodePath(const QString& filePath) { const QString p = normPath(filePath); return (p.contains("/cbptrans/") || p.contains("/mgrcbptrans/") || p.contains("/converttrans/") || p.contains("/ses/")) && !p.contains("/cbptrans/cbptranspub/"); } } // namespace PathUtils #endif // CONSTANTS_H