Commit Graph

363 Commits

Author SHA1 Message Date
gaozheng 3aa4e1bfe2 feat(ela): 视图/详情工具条 → ElaToolButton 行(替 QToolBar+QAction)
- 视图工具条(二维地图/三维视图): QToolBar+QActionGroup → QWidget+QHBoxLayout+ElaToolButton+QButtonGroup(互斥)
- 详情工具条(原数据/网格数据 互斥 + 显示异常/电极/等值线 开关): 同上 + QFrame 分隔
- 连接: QAction::triggered→QAbstractButton::clicked, QAction::toggled→QAbstractButton::toggled;
  视图模式/详情模式/叠加显隐 行为保持
- 注: 工具条交互(2D/3D 切换/详情模式/三个显隐开关)为活逻辑, 需运行验证
2026-06-10 10:27:33 +08:00
gaozheng b6e0142d06 feat(ela): TopBar 图标/切换器 + PanelHeader 页签/操作按钮 全 Ela 化(头像除外)
- TopBar: help/bell/gear → ElaIconButton(Fluent 图标字体, 自动主题);
  工作空间/项目切换器 → ElaToolButton; 去掉 #wsSwitcher/#iconBtn QSS(Ela 自绘);
  头像保留自定义圆形(白字用 white 关键字恒白)
- PanelHeader: 数据/文件等页签 → ElaToolButton(选中态走 Ela checked 高亮);
  表头操作按钮 → ElaIconButton; headerQss 去掉 tabBtn/panelAction 规则
2026-06-10 10:23:09 +08:00
gaozheng 8e7563c0f5 feat(ela): 数据集/文件/异常列表 → ElaListView + QStandardItemModel
- DatasetListPanel/AnomalyListPanel: populate 签名 QListWidget*→QStandardItemModel*,
  QListWidgetItem→QStandardItem(setData(value,role)/setCheckable/setIcon/setForeground)
- main.cpp: 3 列表 → ElaListView + QStandardItemModel; removeLoadMore/addLoadMore 改 model
  (rowCount/item/removeRow/appendRow); itemClicked→clicked(QModelIndex);
  anomaly itemChanged→model itemChanged; 加载更多/勾选显隐/点击 行为保持
- 注: 列表交互(异常显隐/加载更多/数据集点击)为活逻辑, 需运行验证
2026-06-10 09:48:24 +08:00
gaozheng 389a2da744 feat(ela): 表格→ElaTableWidget(直替) + 对象树→ElaTreeView+QStandardItemModel
- ProjectListDialog: QTableWidget → ElaTableWidget(item 版直接继承 QTableWidget, 1 行)
- ObjectTreePanel: QTreeWidget → ElaTreeView + Qt 自带 QStandardItemModel(非手写 model);
  QTreeWidgetItem→QStandardItem, 勾选/点击逻辑改按 QModelIndex/itemChanged; ElaTreeView 自绘
  展开折叠指示(去掉自定义 chevron QSS); 行为(TM 勾选/点击发 tmClicked/tmCheckToggled)保持
2026-06-10 09:40:28 +08:00
gaozheng 68d832c57b fix(ela): 登录窗主题化 + VTK 背景稳健随主题 + 扫清所有硬编码浅色 QSS 遗漏
- 登录窗: setStyleSheet → applyThemedStyleSheet(整窗随主题, 品牌带文字用 white 关键字恒白);
  refreshBtn/errorLabel 也随主题。修暗系统下浅窗+暗 Ela 控件割裂、占位文字看不清
- VTK: 改为主题切换时重跑 rebuildCentral/rebuildDetail(走完整渲染必重绘, 兼顾 syncSystemTheme
  异步切暗时序); rebuildDetail 也按 vtkBackground 设背景
- 主动扫描修掉遗漏: dockManager 分隔条、数据集/文件列表、对象树枝/hint、空状态标题/提示 全走主题
- themed() 公共助手(给需拼接 ADS 样式的 dockManager)
2026-06-10 09:32:22 +08:00
gaozheng f5eff9e185 feat(ela): C VTK 视口背景随主题 + A 浮层勾选框 Ela 化
- vtkBackground(): 取 ElaTheme 窗口底色; CentralScene/详情渲染器初始用它; 切主题时中央+详情重设+刷新
- 浮层图层勾选(帘面/体素/切片/地形) → ElaCheckBox
- 说明: 自定义 chrome(工作空间/项目切换器/图标按钮/PanelHeader tab/工具条)保留并随主题(强换 Ela 会丢设计); 状态栏由 QSS 随主题
2026-06-10 09:17:45 +08:00
gaozheng 57c452e2d3 feat(ela): 菜单全换 ElaMenu/ElaMenuBar(根治圆角露直角) + 登出功能
- TopBar: 4 主菜单/子菜单/切换器菜单 → ElaMenu, 菜单栏 → ElaMenuBar(自绘透明圆角弹窗+随主题);
  去掉 #appMenuBar 内联 QSS; Theme.cpp 删除 QMenuBar/QMenu QSS(否则 border-radius 仍露直角)
- 登出: 头像改可点击 QToolButton + ElaMenu「退出登录」→ logoutRequested 信号;
  main 接信号 → forgetSession() 清凭证 + QProcess 重启回登录页(撤销之前的 GEOPRO_FORCE_LOGIN 补丁)
2026-06-10 09:12:05 +08:00
gaozheng 4a785ede88 fix(ela): 内联 chrome 也跟随主题 — 修暗色下切换器文字看不清等
截图问题根因: TopBar/PanelHeader/3D浮层 用每控件内联 setStyleSheet(硬编码浅色 hex),
未走全局 ElaTheme 替换 → 暗色下保持浅色令牌(深字落深底→看不清; 白底面板表头等)。
新增 applyThemedStyleSheet(widget,设计稿QSS): 按 ElaTheme 角色着色 + 随明暗自动重着色。
TopBar/PanelHeader/layerPanel/layerTitle 内联样式全改走它; 补 #EEF1F5/#E6EAF1/#EAEEF5 角色。
2026-06-10 08:59:59 +08:00
gaozheng 8a82029553 fix(ela): 工作台配色改为取自 ElaTheme(里外一致) — 修明暗都不对
根因: 我那套自挑的浅/暗配色与 ElaWindow 外壳的 Fluent 配色不一致, 里外两种色, 明暗都割裂。
改法: kRoleMap 把设计稿色令牌按语义角色映射到 ElaTheme 颜色角色, styleSheetForMode/
buildPalette 用 eTheme->getThemeColor(当前模式,角色) 取真实颜色, 与外壳同源。
(已知: #FFFFFF 兼作面板底与按钮文字, 全局替换后暗色下默认按钮文字对比度略弱, 影响很小)
2026-06-10 08:53:00 +08:00
gaozheng 9091d8c929 fix(ela): 启动主题跟随 ElaTheme 初始模式(review M2)
避免系统暗色启动时登录窗(标准控件)与 Ela 控件明暗错配。
2026-06-10 07:57:41 +08:00
gaozheng ef278ac335 feat(ela): P3-b 项目列表弹窗 Ela 化 — 输入/下拉/按钮→Ela*
nameEdit_→ElaLineEdit, typeCombo_→ElaComboBox, 搜索/重置/上一页/下一页→ElaPushButton;
表格(QTableWidget)保留并靠 P2 暗色 QSS 联动
2026-06-10 07:51:12 +08:00
gaozheng c8812aa8a6 feat(ela): P3-a 登录窗 Ela 化 + eApp->init 无条件化
- main.cpp: eApp->init() 提到登录前无条件调用(Ela 控件在登录窗/各面板都要用,登录在选壳前)
- LoginWindow: 输入框→ElaLineEdit, 记住登录→ElaCheckBox, 登录按钮→ElaPushButton;
  去掉它们的自定义 QSS 让 Ela 自绘 Fluent+自动明暗; 品牌头/字段标签/验证码/刷新链接保留
- Ela 控件均继承对应 Qt 基类, 故成员仍用 Qt 指针(多态), 不改 .hpp; 现有方法调用照常
2026-06-10 07:49:15 +08:00
gaozheng 26404cee2f feat(ela): P2 暗色主题桥 — ElaTheme 明/暗 → 全局 QSS+调色板联动
- Theme.cpp: kDarkMap 浅→暗 hex 映射, 复用 kStyleSheet 结构生成暗色 QSS(含 ads--*);
  buildPalette(dark) 暗色调色板; applyThemeMode(app,dark); applyTheme=浅色快捷入口
- main.cpp(ela 分支): 连 ElaTheme::themeModeChanged → applyThemeMode 同步非 Ela 面;
  初始对齐(解 review C2); Ctrl+Shift+T 切换(正式按钮待 P3 TopBar Ela 化)
- VTK 视口背景暗色联动记入 P4(渲染器在 buildWorkbench 内, 需另接)
2026-06-10 07:43:46 +08:00
gaozheng af0012fd70 fix(ela): P1 底部状态栏贴底边 — setCentralCustomWidget 改 addPageNode
ElaCentralStackedWidget::setCustomWidget 用 insertWidget(0,...) 把控件插到页栈容器之上,
被禁用的空导航页栈仍占底部空间,状态栏不贴底边。改用 addPageNode 把工作台作为唯一页面
放进中心页栈,填满到底边。
2026-06-10 07:38:41 +08:00
gaozheng 8d938dd848 fix(ela): P1 code review 修复
- H1: ElaWidgetTools GIT_TAG 钉到 b80eadc(可复现)
- H3: 内层 QMainWindow 以 ElaWindow 为父构造(避免无父期调色板/DPI 抖动)
- M4: spike 改 option(GEOPRO_BUILD_ELA_SPIKE) 守卫,默认不编
- 备注: ctest 53/53 通过; C2(applyTheme 顺序)为 P1 有意共存,P2 主题桥统一; H2/M1 记入 P4
2026-06-09 21:39:47 +08:00
gaozheng fc282824b9 feat(ela): P1 换壳 — ElaWindow 包裹工作台(GEOPRO_UI_SHELL=ela 开关)
- src/app/CMakeLists: 链接 ElaWidgetTools + 部署 Qt 插件(platforms/imageformats/iconengines/styles)到 exe 旁
- main.cpp: GEOPRO_UI_SHELL=ela 时用 ElaWindow.setCentralCustomWidget 包裹内层 QMainWindow 承载工作台;
  经典壳为默认且行为不变(仅改堆分配); buildWorkbench 零改动; 全程可回退
- build.bat: 还原(撤销上次破坏脚本解析的中文 TEMP 注释); 构建临时目录改由调用方 TEMP->D: 设置
2026-06-09 21:34:27 +08:00
gaozheng c4d76f57b6 新增claude.md(karpathy) 2026-06-09 21:24:28 +08:00
gaozheng 6df2c4832c chore(ela): ElaWidgetTools 评估 spike + 全面迁移计划 + 构建 TEMP 兜底
- spike/ela: 隔离 demo 验证 ElaWindow + ADS 内嵌 + QVTK + 明暗切换(Qt6.11.1/MSVC 构建通过)
- CMakeLists: FetchContent 引入 ElaWidgetTools(fork,SOURCE_SUBDIR 仅编库) + 挂 spike
- build.bat: TEMP/TMP 重定向到 D: 构建目录,规避 C: 盘满导致的 LNK1108
- docs: 全面 Ela 化迁移计划(P0-P4 + 控件映射表 + 风险登记)
2026-06-09 21:23:14 +08:00
gaozheng 1a9fb72cf0 feat(ui): impeccable 设计令牌体系 + 空状态/语义色/动效 + dock 标题修复
- typeset: Theme.hpp 新增排版令牌(type::),统一各处散落字号/字重
- layout: 间距/圆角令牌(space::/radius::),圆角 6 档→2 档,手调奇数余白对称化
- delight: 中央空状态引导浮层、上下文化加载文案、登录错误淡入
- colorize: 语义色令牌(semantic::),项目状态着色、状态栏错误染色、异常徽标警示色(休眠)
- overdrive(休眠): 详情视图相机补间+actor淡入(animateReveal),待 dd 详情渲染接通后激活
- fix(dock): restoreState 后重新隐藏 ADS 子窗口标题栏,修复已保存布局下标题栏复现
2026-06-09 20:26:00 +08:00
gaozheng caf6f9ebd0 docs(build): 新增 build.bat 一键构建脚本 + README 补充构建与运行说明 2026-06-09 19:07:14 +08:00
gaozheng 045bb3cc1f Merge pull request 'feat/real-api-navigation' (#2) from feat/real-api-navigation into main
Reviewed-on: https://gitea.geomative.cn/gaozheng/geopro/pulls/2
2026-06-09 18:58:34 +08:00
gaozheng 0af33f1952 merge: 合并 feat/m1-finishing(dock持久化+记住登录QtKeychain+纵向夸张统一)到 feat/real-api-navigation
冲突解决:
- main.cpp:保留导航分支的解耦版 rebuildCentral(调 CentralScene),采纳 m1 的 dock 持久化/记住登录/setOrganizationName,常量统一为 kVerticalExaggeration
- spec 文档:保留当前扩展版(m1 初版为其子集)
- CMakeLists/app:QtKeychain + Credential 与 controller/ProjectListDialog 等自动合并共存
2026-06-09 18:57:33 +08:00
gaozheng 890a3b95d9 Merge pull request 'feat(m1): dock 布局持久化 + 记住登录(QtKeychain) + 纵向夸张统一' (#1) from feat/m1-finishing into main
Reviewed-on: https://gitea.geomative.cn/gaozheng/geopro/pulls/1
2026-06-09 18:48:02 +08:00
gaozheng 475af464d9 docs(spec): 补齐项目列表弹窗/ds加载更多分页/创建时间显示/分页条数(10·5)/状态映射(1未开始2进行中) 2026-06-09 18:45:25 +08:00
gaozheng a37596f0d3 tune(nav): 下拉项目首页10、ds数据/文件每页5(触发全部项目/加载更多更易达) 2026-06-09 18:37:00 +08:00
gaozheng b4824a6e4e feat(nav): 项目列表弹窗(名称/类型过滤+分页+8列,点项目名切换)+ 下拉全部项目入口 2026-06-09 18:17:23 +08:00
gaozheng ee8342f4bf feat(nav): ds数据/文件页签创建时间显示 + 加载更多分页(loadTmRows分页+total) 2026-06-09 15:29:42 +08:00
gaozheng 7cdc7b8077 docs(spec): 对齐数据/文件页签接 data-page/file-page + DsRow/loadTmRows/filesLoaded 2026-06-09 14:58:55 +08:00
gaozheng 839e5c3487 feat(nav): 数据/文件页签接 data-page/file-page(按TM+classifyType拉取,文件页签展示名/大小) 2026-06-09 14:54:32 +08:00
gaozheng 5b18dc44ae style(app): 数据集列表去隔行变色,改为细分割线+hover/选中反馈 2026-06-09 14:31:25 +08:00
gaozheng 60d46cf1db fix(nav): 实测整改——项目用my/profile/queryProject、切换空间重注入token、结构按type建树(过滤DS)、下拉互斥、去重复项目根 2026-06-09 13:58:59 +08:00
gaozheng 1f1cf5cd3c docs(spec): 对齐实现(buildStructTree/StructTreeNode + structureLoaded 扁平节点 + 防重入/URL编码) 2026-06-09 12:17:11 +08:00
gaozheng 601706d120 fix: 代码评审整改(控制器防重入 + URL 百分号编码 + 测试/注释完善) 2026-06-09 12:15:04 +08:00
gaozheng 405fb2ae4f feat(app): 工作台接入真实导航(空间/项目/对象树/DS),中央渲染占位 2026-06-09 12:01:30 +08:00
gaozheng 6241eb3a7e feat(app): CentralScene 数据驱动 helper(解耦中央三维编排,下一轮接真实DS复用) 2026-06-09 11:54:48 +08:00
gaozheng c78022a6b6 feat(app): ObjectTreePanel 被动对象树(项目→GS→TM) 2026-06-09 11:52:31 +08:00
gaozheng 6e78e50b0b feat(app): TopBar 升级为数据驱动类(工作空间/项目切换信号) 2026-06-09 11:48:40 +08:00
gaozheng f4ca9bcd38 feat(controller): WorkbenchNavController 导航状态机 2026-06-09 11:44:31 +08:00
gaozheng fa4bbf08b3 feat(data): ApiProjectRepository 实现 5 个导航接口 2026-06-09 11:40:40 +08:00
gaozheng 695aa8c310 fix(data): buildStructTree 用 visited 集防环(不可信结构数据避免无限递归) 2026-06-09 11:38:02 +08:00
gaozheng 2bc22a55d6 feat(data): buildStructTree 扁平→树(叶子=TM,含直挂/孤儿/空表) 2026-06-09 11:33:14 +08:00
gaozheng a32bd763da feat(data): NavDto parseProjects/parseStructNodes/parseDatasets 2026-06-09 11:16:36 +08:00
gaozheng bf67c01ac9 feat(data): NavDto 脚手架 + parseWorkspaces(含测试接入) 2026-06-09 11:00:39 +08:00
gaozheng fc458ec702 feat(data): 导航模型(Workspace/ProjectSummary/StructNode) + IProjectRepository 接口 2026-06-09 10:56:51 +08:00
gaozheng 1fd8bb4d63 docs: 保留并解耦中央三维编排(CentralScene helper) + 补充下一轮对接真实DS步骤 2026-06-09 10:49:31 +08:00
gaozheng 46358f2964 docs: 接入真实导航 实现计划(plan) 2026-06-09 10:28:16 +08:00
gaozheng 3992a49c8f docs: 接入真实导航(工作空间/项目/对象树) 设计文档 2026-06-09 10:18:34 +08:00
gaozheng 3be4cdbdde docs: 接入真实导航(工作空间/项目/对象树) 设计文档 2026-06-09 10:13:46 +08:00
gaozheng 462cfaac9d feat(m1): dock 布局持久化 + 记住登录(QtKeychain) + 纵向夸张统一
- 3 dock 布局/窗口几何 QSettings 持久化(退出保存、启动恢复;ADS 按标题作键)
- 4 记住登录:FetchContent QtKeychain v0.14.0(Qt6,静态) + Credential 同步存取;登录窗加「记住登录(30天)」复选框;启动有有效 token 则免登录
- 5 Z 基准统一:kCurtainZScale(3)/kDetailYScale(1.5) 合并为单一 kVerticalExaggeration(2.0),帘面/体素/切片/剖面/地形一致
2026-06-09 09:42:27 +08:00
gaozheng 5633427335 chore: 排除 ScreenShot/.claude 并移除冗余参考文档
- .gitignore 增加 ScreenShot/、.claude/
- 从版本库移除:ScreenShot 截图、Geopro3.0 菜单.xlsx、banner.png、数据格式说明.docx、需求调研-20260608.md
- 保留 docs/剖面网格数据的色阶数据2等文件/(app 运行时示例数据,待真实实现后再移除)
2026-06-08 21:33:21 +08:00