mirror of
https://github.com/wwiinnddyy/LanMountainDesktop.git
synced 2026-06-20 23:54:26 +08:00
4.6 KiB
4.6 KiB
智教Hub组件实现总结
组件概述
智教Hub组件是一个图片展示组件,从两个GitHub仓库获取社区图片:
- ClassIsland Hub: https://github.com/ClassIsland/classisland-hub
- SECTL Hub: https://github.com/SECTL/SECTL-hub
功能特性
- ✅ 最小尺寸 2×2 cells
- ✅ 允许自由调整大小 (ResizeMode.Free)
- ✅ 支持两个数据源切换
- ✅ 自动刷新功能(可配置间隔)
- ✅ 图片左右导航
- ✅ 左下角显示图片名称
- ✅ 悬停显示导航按钮和指示器
文件清单
1. 数据模型和配置
LanMountainDesktop/Models/ComponentSettingsSnapshot.cs- 添加智教Hub配置字段
- 添加
ZhiJiaoHubSources常量类
2. 数据服务
-
LanMountainDesktop/Services/IRecommendationDataService.cs- 添加
ZhiJiaoHubQuery,ZhiJiaoHubImageItem,ZhiJiaoHubSnapshot类型 - 添加
GetZhiJiaoHubImagesAsync接口方法 - 添加 GitHub API URL 配置
- 添加
-
LanMountainDesktop/Services/RecommendationDataService.cs- 实现
GetZhiJiaoHubImagesAsync方法 - 实现 GitHub API 图片列表获取
- 实现缓存机制(1小时缓存)
- 实现
3. 组件实现
-
LanMountainDesktop/Views/Components/ZhiJiaoHubWidget.axaml- 组件UI布局(图片、渐变遮罩、名称、导航按钮、指示器)
-
LanMountainDesktop/Views/Components/ZhiJiaoHubWidget.axaml.cs- 组件逻辑实现
- 图片加载和显示
- 导航功能(上一张/下一张)
- 自动刷新
- 设置持久化
4. 设置编辑器
-
LanMountainDesktop/Views/ComponentEditors/ZhiJiaoHubComponentEditor.axaml- 设置界面布局
-
LanMountainDesktop/Views/ComponentEditors/ZhiJiaoHubComponentEditor.axaml.cs- 数据源选择
- 自动刷新开关
- 刷新间隔设置
5. 组件注册
-
LanMountainDesktop/ComponentSystem/BuiltInComponentIds.cs- 添加
DesktopZhiJiaoHub常量
- 添加
-
LanMountainDesktop/ComponentSystem/ComponentRegistry.cs- 注册组件定义(2×2最小尺寸,Free调整模式)
-
LanMountainDesktop/Views/Components/DesktopComponentRuntimeRegistry.cs- 注册组件运行时
-
LanMountainDesktop/Services/DesktopComponentEditorRegistryFactory.cs- 注册组件设置编辑器
-
LanMountainDesktop/Views/MainWindow.ComponentSystem.cs- 添加比例约束(允许自由调整大小)
技术实现细节
图片获取流程
1. 调用 GitHub API 获取仓库图片目录
- ClassIsland: /repos/ClassIsland/classisland-hub/contents/images
- SECTL: /repos/SECTL/SECTL-hub/contents/docs/.vuepress/public/images
2. 解析 JSON 响应,提取图片文件信息
- 文件名(解码URL编码)
- 下载URL
3. 过滤非图片文件(只保留 .png, .jpg, .jpeg, .gif, .webp)
4. 缓存图片列表(1小时)
5. 按需加载单个图片
数据源配置
public static class ZhiJiaoHubSources
{
public const string ClassIsland = "classisland";
public const string Sectl = "sectl";
}
组件配置项
public string ZhiJiaoHubSource { get; set; } = ZhiJiaoHubSources.ClassIsland;
public bool ZhiJiaoHubAutoRefreshEnabled { get; set; } = true;
public int ZhiJiaoHubAutoRefreshIntervalMinutes { get; set; } = 30;
public int ZhiJiaoHubCurrentImageIndex { get; set; } = 0;
使用说明
添加组件到桌面
- 进入桌面编辑模式
- 从组件库选择 "ZhiJiao Hub"
- 组件最小尺寸为 2×2,可以自由调整大小
切换数据源
- 选中组件,点击设置按钮
- 在设置面板中选择 "Image Source"
- 可选:ClassIsland Hub 或 SECTL Hub
配置自动刷新
- 在设置面板中开启/关闭 "Auto Refresh"
- 设置刷新间隔(5-1440分钟)
浏览图片
- 自动: 组件会自动轮播图片
- 手动: 鼠标悬停显示左右箭头,点击切换
- 指示器: 底部圆点显示当前位置
图片源信息
ClassIsland Hub
- 仓库: https://github.com/ClassIsland/classisland-hub
- 图片路径:
/images/ - 内容: ClassIsland交流群/频道的有趣内容
- 数量: 约70张图片
SECTL Hub
- 仓库: https://github.com/SECTL/SECTL-hub
- 图片路径:
/docs/.vuepress/public/images/ - 内容: SECTL交流群的趣图
- 数量: 约78张图片
后续优化建议
- 本地缓存: 将下载的图片缓存到本地,减少网络请求
- 缩略图: 生成缩略图提高加载速度
- 收藏功能: 允许用户收藏喜欢的图片
- 分享功能: 支持分享图片链接
- 更多源: 添加更多教育技术社区图片源
构建状态
✅ 构建成功,无错误