Files
work-secretfile-selfcheck/UmiOCR-data/qt_res/qml/TabPages/Navigation/Navigation.qml

135 lines
4.0 KiB
QML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// ================================================
// =============== 导航页(新标签页) ===============
// ================================================
import QtQuick 2.15
import QtQuick.Controls 2.15
import QtQuick.Layouts 1.15
import ".."
import "../.."
import "../../Widgets"
TabPage {
// =============== 逻辑 ===============
id: naviPage
// 页面信息存储
ListModel { id: pageModel }
// 动态变化的简介文本
property string introText: ""
// 初始简介(欢迎词)
property string welcomeText: `# `+qsTr("欢迎使用 Umi-OCR")+`
## 👈 `+qsTr("请选择功能页")+`
`+qsTr("当前版本")+` ${UmiAbout.version.string}
`+qsTr("项目链接")+` [`+qsTr("官方网站")+`](${UmiAbout.url.home}) [`+qsTr("插件拓展")+`](${UmiAbout.url.plugins}) [`+qsTr("问题反馈")+`](${UmiAbout.url.issue})
`
// 初始化数据
Component.onCompleted: initData()
function initData() {
introText = welcomeText
pageModel.clear()
const f = qmlapp.tab.infoList
// 遍历所有文件信息(排除第一项自己)
for(let i=1,c=f.length; i<c; i++){
pageModel.append({
"title": f[i].title,
"intro": f[i].intro,
"infoIndex": i,
})
}
}
// =============== 布局 ===============
DoubleRowLayout {
anchors.fill: parent
initSplitterX: size_.line * 15
// =============== 左侧,展示所有标签页名称 ===============
leftItem: Panel {
anchors.fill: parent
Item {
id: topLable
anchors.left: parent.left
anchors.right: parent.right
anchors.top: parent.top
anchors.margins: size_.spacing
height: size_.line * 2.5
Text_ {
anchors.centerIn: parent
text: qsTr("功能页")
color: theme.subTextColor
}
MouseAreaBackgroud {
onHoveredChanged: naviPage.introText = naviPage.welcomeText
}
}
ScrollView {
id: scrollView
anchors.left: parent.left
anchors.right: parent.right
anchors.bottom: parent.bottom
anchors.top: topLable.bottom
anchors.margins: size_.spacing
clip: true
Column {
anchors.fill: parent
spacing: size_.spacing * 0.5
Repeater {
model: pageModel
Button_ {
text_: title
width: scrollView.width
height: size_.line * 2.5
onHoveredChanged: {
naviPage.introText = intro
}
onClicked: {
let i = qmlapp.tab.getTabPageIndex(naviPage)
if(i < 0){
console.error("【Error】导航页"+text+"未找到下标!")
}
qmlapp.tab.changeTabPage(i, infoIndex)
}
}
}
}
}
}
// =============== 右侧,展示功能简介 ===============
rightItem: Panel{
anchors.fill: parent
MarkdownView {
id: introView
anchors.fill: parent
anchors.margins: size_.spacing * 2
text: introText
}
}
}
// 鼠标拖入文档
DropArea_ {
id: "addDocsDropArea"
anchors.fill: parent
tips: qsTr("请打开对应标签页如批量OCR、批量文档再拖入文件。")
}
}