通过 Peony 插件机制,实现预览界面。并区别处理不同类型的文件。
文本高亮:KSyntaxHighlighting
office:libreoffice
pdf:QtPDF 或 pdf.js
更详细的方案以及未采用的方案请查看:
https://zany-yoke-295.notion.site/c5566771b0484da3a653f6d46463907b
大致介绍:
components 目录下,保存一些小组件,icon-button: peony不能直接调用的图标窗口。slider:音视频播放器用的进度条,修改了鼠标单击的逻辑
并分辨,存放image.cpp, pdf.cpp,audio.cpp 等,看名字就可以明白是干什么的。
如果想支持新类型,在此建立一个派生自 BasePreviewPage 的类即可,如果想用 pandoc 等进行转换预览,参考 to-pdf.cpp 的实现。
third_party 目录,https://github.com/Archie3d/qpdf, 支撑pdf.js
PreviewFileType, PreviewType 定义文件类型,主要函数 getPreviewType 分辨文件类型