docs: 添加涉密文件自检工具实施计划
This commit is contained in:
228
UmiOCR-data/qt_res/qml/TabPages/GlobalConfigsPage/FontPanel.qml
Normal file
228
UmiOCR-data/qt_res/qml/TabPages/GlobalConfigsPage/FontPanel.qml
Normal file
@@ -0,0 +1,228 @@
|
||||
// ===========================================
|
||||
// =============== 字体修改面板 ===============
|
||||
// ===========================================
|
||||
|
||||
import QtQuick 2.15
|
||||
import QtQuick.Controls 2.15
|
||||
|
||||
import "../../Widgets"
|
||||
|
||||
ModalLayer {
|
||||
id: fRoot
|
||||
property var fontsList: []
|
||||
|
||||
// 主要UI文字字体,内容可控,可以用裁切的ttf
|
||||
property string fontFamily: ""
|
||||
// 数据显示文字字体,内容不可控,用兼容性好的系统字体
|
||||
property string dataFontFamily: ""
|
||||
// 不可加载的字体
|
||||
property var illegalFonts: ["", "Terminal", "System", "Small Fonts", "Script", "Roman", "MS Serif", "MS Sans Serif", "Modern", "Fixedsys"]
|
||||
|
||||
function setFontFamily(f) {
|
||||
fontFamily = f
|
||||
qmlapp.globalConfigs.setValue("ui.fontFamily", f)
|
||||
}
|
||||
function setDataFontFamily(f) {
|
||||
dataFontFamily = f
|
||||
qmlapp.globalConfigs.setValue("ui.dataFontFamily", f)
|
||||
}
|
||||
|
||||
Component.onCompleted: {
|
||||
// 将此组件的引用传入全局设置
|
||||
qmlapp.globalConfigs.fontPanel = this
|
||||
fontFamily = qmlapp.globalConfigs.getValue("ui.fontFamily")
|
||||
dataFontFamily = qmlapp.globalConfigs.getValue("ui.dataFontFamily")
|
||||
}
|
||||
|
||||
contentItem: Item {
|
||||
id: content
|
||||
anchors.fill: parent
|
||||
}
|
||||
Loader {
|
||||
id: panelLoader
|
||||
asynchronous: true
|
||||
sourceComponent: com
|
||||
active: fRoot.visible
|
||||
}
|
||||
Component {
|
||||
id: com
|
||||
DoubleRowLayout {
|
||||
parent: content
|
||||
anchors.fill: parent
|
||||
initSplitterX: 0.5
|
||||
|
||||
Component.onCompleted: {
|
||||
// 获取字体列表,过滤出以中文字符开头的字体
|
||||
let fList = Qt.fontFamilies()
|
||||
let newList = fList.filter(function(str) {
|
||||
return /^[\u4e00-\u9fa5]/.test(str);
|
||||
})
|
||||
// 补充剩余字体
|
||||
for(let i in fList) {
|
||||
if(illegalFonts.includes(fList[i]))
|
||||
continue
|
||||
if(!newList.includes(fList[i]))
|
||||
newList.push(fList[i])
|
||||
}
|
||||
// 将当前选中的移到最前面
|
||||
const i1 = newList.indexOf(dataFontFamily)
|
||||
if (i1 > -1) {
|
||||
newList.splice(i1, 1)
|
||||
newList.unshift(dataFontFamily)
|
||||
}
|
||||
const i2 = newList.indexOf(fontFamily)
|
||||
if (i2 > -1 && i2 !== i1) {
|
||||
newList.splice(i2, 1)
|
||||
newList.unshift(fontFamily)
|
||||
}
|
||||
fRoot.fontsList = newList
|
||||
}
|
||||
|
||||
leftItem: Panel {
|
||||
anchors.fill: parent
|
||||
clip: true
|
||||
|
||||
Row {
|
||||
id: leftTop
|
||||
anchors.top: parent.top
|
||||
anchors.right: parent.right
|
||||
anchors.margins: size_.spacing
|
||||
anchors.topMargin: 0
|
||||
anchors.rightMargin: size_.spacing * 3
|
||||
spacing: size_.spacing
|
||||
height: size_.line * 2
|
||||
|
||||
// Text_ {
|
||||
// anchors.top: parent.top
|
||||
// anchors.bottom: parent.bottom
|
||||
// verticalAlignment: Text.AlignVCenter
|
||||
// text: qsTr("设置为:")
|
||||
// }
|
||||
Text_ {
|
||||
anchors.top: parent.top
|
||||
anchors.bottom: parent.bottom
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
width: size_.line * 3
|
||||
text: qsTr("界面")
|
||||
}
|
||||
Text_ {
|
||||
anchors.top: parent.top
|
||||
anchors.bottom: parent.bottom
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
width: size_.line * 3
|
||||
text: qsTr("内容")
|
||||
font.family: theme.dataFontFamily
|
||||
}
|
||||
}
|
||||
Panel {
|
||||
anchors.top: leftTop.bottom
|
||||
anchors.bottom: parent.bottom
|
||||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
anchors.margins: size_.spacing
|
||||
anchors.topMargin: 0
|
||||
color: theme.bgColor
|
||||
|
||||
TableView {
|
||||
id: leftTable
|
||||
anchors.fill: parent
|
||||
anchors.margins: size_.spacing
|
||||
clip: true
|
||||
model: fRoot.fontsList
|
||||
contentWidth: width // 内容宽度
|
||||
rowSpacing: size_.spacing // 行间隔
|
||||
flickableDirection: Flickable.VerticalFlick // 只允许垂直滚动
|
||||
columnWidthProvider: ()=>leftTable.width
|
||||
|
||||
delegate: Rectangle {
|
||||
height: size_.line * 2
|
||||
implicitWidth: 100
|
||||
implicitHeight: height
|
||||
width: leftTable.width
|
||||
color: fontMouseArea.containsMouse?theme.coverColor2:"#00000000"
|
||||
|
||||
Text_ {
|
||||
text: modelData
|
||||
anchors.fill: parent
|
||||
anchors.leftMargin: size_.spacing
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
font.family: modelData
|
||||
}
|
||||
MouseArea {
|
||||
id: fontMouseArea
|
||||
anchors.fill: parent
|
||||
hoverEnabled: true
|
||||
}
|
||||
// 右边,内容字体
|
||||
IconButton {
|
||||
id: btn2
|
||||
anchors.top: parent.top
|
||||
anchors.bottom: parent.bottom
|
||||
anchors.right: parent.right
|
||||
anchors.margins: size_.smallSpacing
|
||||
color: theme.yesColor
|
||||
bgColor_: theme.coverColor1
|
||||
width: size_.line * 3
|
||||
borderWidth: 1
|
||||
borderColor: theme.specialTextColor
|
||||
bgHoverColor_: theme.coverColor3
|
||||
icon_: dataFontFamily===modelData?"yes":""
|
||||
onClicked: setDataFontFamily(modelData)
|
||||
}
|
||||
// 左边,界面字体
|
||||
IconButton {
|
||||
id: btn1
|
||||
anchors.top: parent.top
|
||||
anchors.bottom: parent.bottom
|
||||
anchors.right: btn2.left
|
||||
anchors.margins: size_.smallSpacing
|
||||
anchors.rightMargin: size_.spacing
|
||||
color: theme.yesColor
|
||||
bgColor_: theme.coverColor1
|
||||
width: size_.line * 3
|
||||
borderWidth: 1
|
||||
borderColor: theme.specialTextColor
|
||||
bgHoverColor_: theme.coverColor3
|
||||
icon_: fontFamily===modelData?"yes":""
|
||||
onClicked: setFontFamily(modelData)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
rightItem: Panel {
|
||||
anchors.fill: parent
|
||||
|
||||
Item {
|
||||
anchors.fill: parent
|
||||
anchors.margins: size_.spacing * 3
|
||||
|
||||
Column {
|
||||
anchors.fill: parent
|
||||
spacing: size_.line
|
||||
|
||||
Text_ {
|
||||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
wrapMode: Text.Wrap
|
||||
font.family: fontFamily
|
||||
text: qsTr("界面字体:\n软件中大部分UI的字体。")
|
||||
}
|
||||
|
||||
Text_ {
|
||||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
wrapMode: Text.Wrap
|
||||
font.family: dataFontFamily
|
||||
text: qsTr("内容字体:\n识别结果内容的字体。")
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user