Merge remote-tracking branch 'origin/main' into main
commit
3f30e4ed4d
|
@ -156,33 +156,33 @@ Item {
|
||||||
}
|
}
|
||||||
ListModel {
|
ListModel {
|
||||||
id: fileListModel
|
id: fileListModel
|
||||||
// ListElement {
|
ListElement {
|
||||||
// title: "File 1"
|
title: "File 1"
|
||||||
// isDir: true
|
isDir: true
|
||||||
// brief: "This is a test file"
|
brief: "This is a test file"
|
||||||
// type: "FOLDER"
|
type: "FOLDER"
|
||||||
// }
|
}
|
||||||
// ListElement {
|
ListElement {
|
||||||
// uid: "2"
|
uid: "2"
|
||||||
// title: "File 2"
|
title: "File 2"
|
||||||
// isDir: false
|
isDir: false
|
||||||
// brief: "This is a test file"
|
brief: "This is a test file"
|
||||||
// size: 500
|
size: 500
|
||||||
// type: "WORD"
|
type: "WORD"
|
||||||
// date: "2020-09-09"
|
date: "2020-09-09"
|
||||||
// pageView: 100
|
pageView: 100
|
||||||
// stars: 10
|
stars: 10
|
||||||
// }
|
}
|
||||||
// ListElement {
|
ListElement {
|
||||||
// uid: "3"
|
uid: "3"
|
||||||
// title: "File 3"
|
title: "File 3"
|
||||||
// isDir: false
|
isDir: false
|
||||||
// brief: "This is a test file"
|
brief: "This is a test file"
|
||||||
// type: "PPT"
|
type: "PPT"
|
||||||
// date: "2020-09-09"
|
date: "2020-09-09"
|
||||||
// pageView: 100
|
pageView: 100
|
||||||
// size: 10200000022
|
size: 10200000022
|
||||||
// stars: 10
|
stars: 10
|
||||||
// }
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,78 +0,0 @@
|
||||||
import QtQuick 2.15
|
|
||||||
import FluentUI
|
|
||||||
import QtQuick.Layouts
|
|
||||||
|
|
||||||
FluArea {
|
|
||||||
id: fileItem
|
|
||||||
property string uuid
|
|
||||||
property string title
|
|
||||||
property string brief
|
|
||||||
property string date
|
|
||||||
property int pageView
|
|
||||||
property var tags: []
|
|
||||||
property var notes: []
|
|
||||||
property int stars
|
|
||||||
property var colorList: ["blue", "green", "orange", "red", "yellow", "purple", "pink", "brown", "teal", "cyan", "gray", "darkgray"]
|
|
||||||
signal tagClicked(string tag)
|
|
||||||
|
|
||||||
ColumnLayout {
|
|
||||||
id: row
|
|
||||||
anchors.fill: parent
|
|
||||||
anchors.margins: 10
|
|
||||||
spacing: 10
|
|
||||||
|
|
||||||
ColumnLayout {
|
|
||||||
id: clickable
|
|
||||||
anchors.fill: parent
|
|
||||||
MouseArea {
|
|
||||||
anchors.fill: parent
|
|
||||||
onDoubleClicked: {
|
|
||||||
fileItem.parent.doubleClicked()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
FluText {
|
|
||||||
id: title
|
|
||||||
text: fileItem.title
|
|
||||||
font{
|
|
||||||
pointSize: 12
|
|
||||||
bold: true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
FluText {
|
|
||||||
id: brief
|
|
||||||
text: fileItem.brief
|
|
||||||
}
|
|
||||||
RowLayout {
|
|
||||||
id: infoRow
|
|
||||||
visible: !fileItem.isDir
|
|
||||||
FluText {
|
|
||||||
id: date
|
|
||||||
text: fileItem.date
|
|
||||||
}
|
|
||||||
FluText {
|
|
||||||
id: pageView
|
|
||||||
text: fileItem.pageView + "浏览"
|
|
||||||
}
|
|
||||||
FluText {
|
|
||||||
id: stars
|
|
||||||
text: fileItem.stars + "收藏"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
RowLayout {
|
|
||||||
visible: !fileItem.isDir
|
|
||||||
Repeater {
|
|
||||||
model: fileItem.tags
|
|
||||||
delegate: FluTextButton {
|
|
||||||
text: "#" + fileItem.tags[index]
|
|
||||||
normalColor: colorList[index % colorList.length]
|
|
||||||
font.pixelSize: 12
|
|
||||||
Layout.preferredWidth: 50
|
|
||||||
onClicked: {
|
|
||||||
emit: tagClicked(text)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -0,0 +1,78 @@
|
||||||
|
import QtQuick 2.15
|
||||||
|
import QtQuick.Layouts
|
||||||
|
import FluentUI
|
||||||
|
import "qrc:///AicsKnowledgeBase/qml/global"
|
||||||
|
|
||||||
|
Item {
|
||||||
|
anchors.fill: parent
|
||||||
|
signal open(string note)
|
||||||
|
ListView {
|
||||||
|
id: listView
|
||||||
|
anchors.fill: parent
|
||||||
|
spacing: 8
|
||||||
|
header: noteListItemHeader
|
||||||
|
model: noteListModel
|
||||||
|
delegate: noteListItemDelegate
|
||||||
|
}
|
||||||
|
Component {
|
||||||
|
id: noteListItemHeader
|
||||||
|
Item {
|
||||||
|
id: noteListItemHeaderItem
|
||||||
|
// width: ListView.view.width
|
||||||
|
// height: 48
|
||||||
|
// FluText {
|
||||||
|
// text: "笔记"
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Component {
|
||||||
|
id: noteListItemDelegate
|
||||||
|
Rectangle {
|
||||||
|
id: noteListItemRect
|
||||||
|
width: ListView.view.width
|
||||||
|
height: 150
|
||||||
|
MouseArea {
|
||||||
|
anchors.fill: parent
|
||||||
|
onClicked: {
|
||||||
|
open(model.uuid)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
NoteListItem {
|
||||||
|
id: noteListItem
|
||||||
|
uuid: model.uuid
|
||||||
|
width: parent.width
|
||||||
|
height: parent.height
|
||||||
|
title: model.title
|
||||||
|
date: model.date
|
||||||
|
brief: model.brief
|
||||||
|
pageView: model.pageView
|
||||||
|
author: model.author
|
||||||
|
stars: model.stars
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function setListModel(listModel) {
|
||||||
|
listView.model = listModel
|
||||||
|
}
|
||||||
|
ListModel {
|
||||||
|
id: noteListModel
|
||||||
|
ListElement {
|
||||||
|
uuid: "1"
|
||||||
|
title: "超级无敌报错"
|
||||||
|
brief: "file:///D:/academic/2023-qtBig/AicsKnowledgeBase_client/AicsKnowledgeBase/qml/component/NoteList.qml:41:21: Unable to assign [undefined] to QString"
|
||||||
|
author: "admin"
|
||||||
|
pageView: 123
|
||||||
|
stars: 27
|
||||||
|
date: "2022-02-02"
|
||||||
|
}
|
||||||
|
ListElement {
|
||||||
|
uuid: "2"
|
||||||
|
title: "Qt布局"
|
||||||
|
brief: "锚定(anchors)在确定父子组件之间,同级组件之间的相对位置时非常常用,若使用锚定方式确定子组件与父组件之间的位置关系,使用 top,bottom,left,right, topMargin,bottomMargin,leftMargin,rightMargin进行上下左右对齐,以及对齐后的留白距离。若要使子组件在父组件的水平,垂直居中,使用:"
|
||||||
|
author: "超级无敌长的账户名"
|
||||||
|
pageView: 123
|
||||||
|
stars: 27
|
||||||
|
date: "2022-02-02"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,61 @@
|
||||||
|
import QtQuick 2.15
|
||||||
|
import FluentUI
|
||||||
|
import QtQuick.Layouts
|
||||||
|
|
||||||
|
FluArea {
|
||||||
|
id: noteItem
|
||||||
|
property string uuid
|
||||||
|
property string title
|
||||||
|
property string brief
|
||||||
|
property string date
|
||||||
|
property int pageView
|
||||||
|
property int stars
|
||||||
|
property string author
|
||||||
|
|
||||||
|
ColumnLayout {
|
||||||
|
id: row
|
||||||
|
anchors.fill: parent
|
||||||
|
anchors.margins: 10
|
||||||
|
spacing: 10
|
||||||
|
RowLayout {
|
||||||
|
id: titleRow
|
||||||
|
Layout.preferredWidth: parent.width
|
||||||
|
FluText {
|
||||||
|
text: title
|
||||||
|
font.bold: true
|
||||||
|
font.pointSize: 15
|
||||||
|
Layout.alignment: Qt.AlignLeft
|
||||||
|
}
|
||||||
|
FluText {
|
||||||
|
text: author
|
||||||
|
Layout.alignment: Qt.AlignRight
|
||||||
|
}
|
||||||
|
}
|
||||||
|
FluText {
|
||||||
|
text: " " + brief
|
||||||
|
Layout.fillWidth: true
|
||||||
|
wrapMode: Text.WrapAnywhere
|
||||||
|
elide: Text.ElideRight
|
||||||
|
maximumLineCount: 3
|
||||||
|
}
|
||||||
|
RowLayout {
|
||||||
|
id: bottomRow
|
||||||
|
Layout.preferredWidth: parent.width
|
||||||
|
FluText {
|
||||||
|
text: date
|
||||||
|
color: "#5F5F5F"
|
||||||
|
Layout.alignment: Qt.AlignLeft
|
||||||
|
}
|
||||||
|
FluText {
|
||||||
|
text: pageView + " 浏览"
|
||||||
|
color: "#5F5F5F"
|
||||||
|
Layout.alignment: Qt.AlignRight
|
||||||
|
}
|
||||||
|
FluText {
|
||||||
|
text: stars + " 收藏"
|
||||||
|
color: "#5F5F5F"
|
||||||
|
Layout.alignment: Qt.AlignRight
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -4,6 +4,7 @@ import QtQuick.Window
|
||||||
import QtQuick.Controls
|
import QtQuick.Controls
|
||||||
import QtQuick.Controls.Basic
|
import QtQuick.Controls.Basic
|
||||||
import FluentUI
|
import FluentUI
|
||||||
|
import "qrc:///AicsKnowledgeBase/qml/component"
|
||||||
|
|
||||||
FluArea {
|
FluArea {
|
||||||
property string url: ''
|
property string url: ''
|
||||||
|
@ -13,8 +14,102 @@ FluArea {
|
||||||
Layout.topMargin: 20
|
Layout.topMargin: 20
|
||||||
paddings: 10
|
paddings: 10
|
||||||
|
|
||||||
FluText {
|
// FluText {
|
||||||
Layout.topMargin: 20
|
// Layout.topMargin: 20
|
||||||
text: "Search"
|
// text: "Search"
|
||||||
|
// }
|
||||||
|
/*
|
||||||
|
按标题,内容搜索
|
||||||
|
*/
|
||||||
|
ColumnLayout{
|
||||||
|
RowLayout{
|
||||||
|
width:parent.width
|
||||||
|
FluDropDownButton{
|
||||||
|
id:select_model
|
||||||
|
Layout.alignment: Qt.AlignLeft
|
||||||
|
text:"标题"
|
||||||
|
items:[
|
||||||
|
FluMenuItem{
|
||||||
|
text:"标题"
|
||||||
|
onClicked: {
|
||||||
|
select_model.text = text
|
||||||
|
}
|
||||||
|
},
|
||||||
|
FluMenuItem{
|
||||||
|
text:"内容"
|
||||||
|
onClicked: {
|
||||||
|
select_model.text = text
|
||||||
|
}
|
||||||
|
},
|
||||||
|
FluMenuItem{
|
||||||
|
text:"标签"
|
||||||
|
onClicked: {
|
||||||
|
select_model.text = text
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
FluTextBox{
|
||||||
|
//placeholderText:""
|
||||||
|
Layout.fillWidth: true
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
FluIconButton{
|
||||||
|
Layout.alignment: Qt.AlignRight
|
||||||
|
iconSource:FluentIcons.Search
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//按文件类型
|
||||||
|
RowLayout{
|
||||||
|
width:parent.width
|
||||||
|
FluText{
|
||||||
|
Layout.alignment: Qt.AlignLeft
|
||||||
|
text:"格式: "
|
||||||
|
}
|
||||||
|
FluCheckBox{
|
||||||
|
id:selectAllFormat
|
||||||
|
text:"all"
|
||||||
|
Component.onCompleted:{
|
||||||
|
clicked()
|
||||||
|
}
|
||||||
|
onClicked:{
|
||||||
|
selectPDFAndWord.checked=true
|
||||||
|
selectVideo.checked=true
|
||||||
|
selectPPT.checked=true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
FluCheckBox{
|
||||||
|
id:selectPDFAndWord
|
||||||
|
text:"pdf/word"
|
||||||
|
onClicked:{
|
||||||
|
selectAllFormat.checked = selectPDFAndWord.checked && selectPPT.checked && selectVideo.checked
|
||||||
|
}
|
||||||
|
}
|
||||||
|
FluCheckBox{
|
||||||
|
id:selectPPT
|
||||||
|
text:"ppt"
|
||||||
|
onClicked:{
|
||||||
|
selectAllFormat.checked = selectPDFAndWord.checked && selectPPT.checked && selectVideo.checked
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
FluCheckBox{
|
||||||
|
id:selectVideo
|
||||||
|
text:"video"
|
||||||
|
onClicked:{
|
||||||
|
selectAllFormat.checked = selectPDFAndWord.checked && selectPPT.checked && selectVideo.checked
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Rectangle{
|
||||||
|
FileList{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue