docs: 添加涉密文件自检工具实施计划
This commit is contained in:
271
UmiOCR-data/qt_res/qml/Popup_/MessageBoxWin.qml
Normal file
271
UmiOCR-data/qt_res/qml/Popup_/MessageBoxWin.qml
Normal file
@@ -0,0 +1,271 @@
|
||||
// ==================================================
|
||||
// =============== 外部通知弹窗 ===============
|
||||
// ==================================================
|
||||
|
||||
import QtQuick 2.15
|
||||
import QtQuick.Controls 2.15
|
||||
import QtQuick.Window 2.15
|
||||
|
||||
import "../Widgets"
|
||||
|
||||
Item {
|
||||
id: messageRoot
|
||||
// ========================= 【对外接口】 =========================
|
||||
|
||||
// 显示一个消息
|
||||
function showMessage(title, msg, type) {
|
||||
const argd = {
|
||||
title:title, msg:msg, type:type
|
||||
}
|
||||
createWin(winMsg, argd)
|
||||
}
|
||||
|
||||
// 带“不再提示”的消息
|
||||
// mid: 唯一标识一个提示
|
||||
function showMessageMemory(mid, title, msg, type) {
|
||||
// 检查全局设置记忆列表中,是否已记录mid
|
||||
const midList = qmlapp.globalConfigs.getValue("window.messageMemory")
|
||||
if(midList.includes(mid)) // 已记录则不再弹出
|
||||
return
|
||||
const argd = {
|
||||
mid: mid, title:title, msg:msg, type:type
|
||||
}
|
||||
createWin(winMsgMemory, argd)
|
||||
}
|
||||
|
||||
// 显示一个双选项对话窗
|
||||
function showDialog(title, msg, callback, yesText, noText, type) {
|
||||
const argd = {
|
||||
title:title, msg:msg, callback:callback, yesText:yesText, noText:noText, type:type
|
||||
}
|
||||
createWin(winDialog, argd)
|
||||
}
|
||||
|
||||
// 显示一个双选项带倒计时对话窗
|
||||
function showDialogCountdown(title, msg, callback, yesText, noText, type, time) {
|
||||
const argd = {
|
||||
title:title, msg:msg, callback:callback, yesText:yesText, noText:noText, type:type, time:time
|
||||
}
|
||||
createWin(winDialogCountdown, argd)
|
||||
}
|
||||
|
||||
|
||||
// ========================= 【弹窗】 =========================
|
||||
|
||||
// 主按钮颜色
|
||||
function getYesColor(type) {
|
||||
switch(type) {
|
||||
case "warning":
|
||||
case "error":
|
||||
return theme.noColor
|
||||
default:
|
||||
return theme.specialTextColor
|
||||
}
|
||||
}
|
||||
|
||||
property var winDict: {}
|
||||
// 生成一个弹窗,返回生成ID
|
||||
function createWin(winComponent, argd) {
|
||||
// 初始化字典
|
||||
if(winDict===undefined) winDict={}
|
||||
// 生成一个id
|
||||
const winId = (Date.now()+Math.random()).toString()
|
||||
argd.winId = winId // 添加id
|
||||
// 生成组件,计入字典
|
||||
const obj = winComponent.createObject(this, argd)
|
||||
winDict[winId] = obj
|
||||
// 显示遮罩层
|
||||
qmlapp.popup.showMask("", winId)
|
||||
}
|
||||
// 关闭一个弹窗,传入生成ID
|
||||
function close(winId) {
|
||||
if(winDict.hasOwnProperty(winId)) {
|
||||
winDict[winId].destroy()
|
||||
}
|
||||
// 隐藏遮罩层
|
||||
qmlapp.popup.hideMask(winId)
|
||||
}
|
||||
|
||||
// 只有单个确认键的普通消息
|
||||
Component {
|
||||
id: winMsg
|
||||
|
||||
FramelessWindow {
|
||||
id: win
|
||||
property string title: ""
|
||||
property string msg: ""
|
||||
property string type: ""
|
||||
property string winId: ""
|
||||
|
||||
visible: true
|
||||
width: msgComp.width+msgComp.shadowWidth
|
||||
height: msgComp.height+msgComp.shadowWidth
|
||||
color: "#00000000"
|
||||
|
||||
// 消息盒组件
|
||||
MessageBox {
|
||||
id: msgComp
|
||||
anchors.centerIn: parent
|
||||
title: win.title // 标题
|
||||
msg: win.msg // 内容
|
||||
type: win.type // 类型
|
||||
btnsList: [ // 按钮列表
|
||||
{"text": qsTr("确定"), "textColor": theme.specialTextColor, "bgColor": theme.specialBgColor},
|
||||
]
|
||||
onClosed: win.close // 关闭函数
|
||||
}
|
||||
|
||||
function close() {
|
||||
messageRoot.close(winId)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 带“不再提示”的记忆消息
|
||||
Component {
|
||||
id: winMsgMemory
|
||||
|
||||
FramelessWindow {
|
||||
id: win
|
||||
property string title: ""
|
||||
property string msg: ""
|
||||
property string type: ""
|
||||
property string winId: ""
|
||||
property string mid: ""
|
||||
|
||||
visible: true
|
||||
width: msgComp.width+msgComp.shadowWidth
|
||||
height: msgComp.height+msgComp.shadowWidth
|
||||
color: "#00000000"
|
||||
|
||||
// 消息盒组件
|
||||
MessageBox {
|
||||
id: msgComp
|
||||
anchors.centerIn: parent
|
||||
title: win.title // 标题
|
||||
msg: win.msg // 内容
|
||||
type: win.type // 类型
|
||||
btnsList: [ // 按钮列表
|
||||
{"text": qsTr("不再提示"), "value": true, "textColor": theme.specialTextColor, "bgColor": theme.specialBgColor},
|
||||
{"text": qsTr("知道了"), "value": false, "textColor": theme.subTextColor, "bgColor": theme.bgColor},
|
||||
]
|
||||
onClosed: (value)=>{
|
||||
if(value) {
|
||||
// 将mid添加到全局设置记忆列表中
|
||||
let midList = qmlapp.globalConfigs.getValue("window.messageMemory")
|
||||
midList.push(mid)
|
||||
qmlapp.globalConfigs.setValue("window.messageMemory", midList)
|
||||
}
|
||||
messageRoot.close(winId) // 关闭窗口
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 有两个键(确认/取消)的对话框
|
||||
Component {
|
||||
id: winDialog
|
||||
|
||||
FramelessWindow {
|
||||
id: win
|
||||
property string title: ""
|
||||
property string msg: ""
|
||||
property string type: ""
|
||||
property string winId: ""
|
||||
property string yesText: ""
|
||||
property string noText: ""
|
||||
property var callback // 回调函数
|
||||
|
||||
visible: true
|
||||
width: msgComp.width+msgComp.shadowWidth
|
||||
height: msgComp.height+msgComp.shadowWidth
|
||||
color: "#00000000"
|
||||
|
||||
MessageBox {
|
||||
id: msgComp
|
||||
anchors.centerIn: parent
|
||||
title: win.title // 标题
|
||||
msg: win.msg // 内容
|
||||
type: win.type // 类型
|
||||
btnsList: [ // 按钮列表
|
||||
// 确认
|
||||
{"text": yesText, "value": true, "textColor": messageRoot.getYesColor(win.type), "bgColor": theme.specialBgColor},
|
||||
// 取消
|
||||
{"text": noText, "value": false, "textColor": theme.subTextColor, "bgColor": theme.bgColor},
|
||||
]
|
||||
onClosed: (value)=>{
|
||||
callback(value)
|
||||
messageRoot.close(winId) // 关闭窗口
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 带倒计时的双键对话框
|
||||
Component {
|
||||
id: winDialogCountdown
|
||||
|
||||
FramelessWindow {
|
||||
id: win
|
||||
property string title: ""
|
||||
property string msg: ""
|
||||
property string type: ""
|
||||
property string winId: ""
|
||||
property string yesText: ""
|
||||
property string yesTextTime: "" // 带倒计时的确定文本
|
||||
property string noText: ""
|
||||
property int time: 10000
|
||||
property int nowTime: 0
|
||||
property int interval: 1000
|
||||
property var callback // 回调函数
|
||||
|
||||
visible: true
|
||||
width: msgComp.width+msgComp.shadowWidth
|
||||
height: msgComp.height+msgComp.shadowWidth
|
||||
color: "#00000000"
|
||||
|
||||
|
||||
Component.onCompleted: {
|
||||
win.yesTextTime = win.yesText+` (${win.time*0.001})`
|
||||
win.nowTime = win.time
|
||||
timer.running = true
|
||||
}
|
||||
|
||||
Timer {
|
||||
id: timer
|
||||
interval: win.interval // 间隔
|
||||
running: false
|
||||
repeat: true // 重复执行
|
||||
onTriggered: {
|
||||
win.nowTime -= win.interval
|
||||
win.yesTextTime = win.yesText+` (${win.nowTime*0.001})`
|
||||
if(win.nowTime<=0) {
|
||||
timer.stop() // 停止计时器
|
||||
callback(true) // 回调
|
||||
messageRoot.close(winId) // 关闭窗口
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
MessageBox {
|
||||
id: msgComp
|
||||
anchors.centerIn: parent
|
||||
title: win.title // 标题
|
||||
msg: win.msg // 内容
|
||||
type: win.type // 类型
|
||||
btnsList: [ // 按钮列表
|
||||
// 确认
|
||||
{"text": yesTextTime, "value": true, "textColor": messageRoot.getYesColor(win.type), "bgColor": theme.specialBgColor},
|
||||
// 取消
|
||||
{"text": noText, "value": false, "textColor": theme.subTextColor, "bgColor": theme.bgColor},
|
||||
]
|
||||
onClosed: (value)=>{
|
||||
timer.running = false // 停止计时器
|
||||
callback(value)
|
||||
messageRoot.close(winId) // 关闭窗口
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user