49 lines
1.6 KiB
QML
49 lines
1.6 KiB
QML
|
|
// =============================================
|
|||
|
|
// =============== 异步文件加载器 ===============
|
|||
|
|
// =============================================
|
|||
|
|
// 用于全局任意模块加载大量文件
|
|||
|
|
|
|||
|
|
import QtQuick 2.15
|
|||
|
|
|
|||
|
|
Item {
|
|||
|
|
property string tips: qsTr("正在载入 %1 个文件:\n%2")
|
|||
|
|
property real updateTime: 0.2 // 刷新事件时间间隔
|
|||
|
|
property var callback_: undefined // 缓存最近一次回调函数
|
|||
|
|
|
|||
|
|
Component.onCompleted: {
|
|||
|
|
// 订阅事件
|
|||
|
|
qmlapp.pubSub.subscribeGroup("<<fileLoadComplete>>", this,
|
|||
|
|
"fileLoadComplete", "FilesLoader")
|
|||
|
|
qmlapp.pubSub.subscribeGroup("<<fileLoadUpdate>>", this,
|
|||
|
|
"fileLoadUpdate", "FilesLoader")
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
function run(
|
|||
|
|
urls, // 初始路径列表
|
|||
|
|
sufType, // 后缀类型,image / doc
|
|||
|
|
isRecurrence, // 若为True,则递归搜索
|
|||
|
|
callback // 加载完成后,向此回调函数传入路径列表
|
|||
|
|
) {
|
|||
|
|
callback_ = callback
|
|||
|
|
qmlapp.popup.showMask(tips.arg(1).arg(""), "LoadingFiles")
|
|||
|
|
qmlapp.utilsConnector.asynFindFiles(
|
|||
|
|
urls,
|
|||
|
|
sufType,
|
|||
|
|
isRecurrence,
|
|||
|
|
"<<fileLoadComplete>>",
|
|||
|
|
"<<fileLoadUpdate>>",
|
|||
|
|
updateTime
|
|||
|
|
)
|
|||
|
|
}
|
|||
|
|
// 文件扫描结束,获取合法文件列表
|
|||
|
|
function fileLoadComplete(paths) {
|
|||
|
|
qmlapp.popup.hideMask("LoadingFiles")
|
|||
|
|
callback_(paths)
|
|||
|
|
callback_ = undefined
|
|||
|
|
}
|
|||
|
|
// 文件扫描更新,刷新提示文本
|
|||
|
|
function fileLoadUpdate(filesCount, lastPath) {
|
|||
|
|
qmlapp.popup.showMask(tips.arg(filesCount).arg(lastPath),
|
|||
|
|
"LoadingFiles")
|
|||
|
|
}
|
|||
|
|
}
|