karlis 2023-07-07 04:22:36 +08:00
parent 2ceb74b862
commit d70e2266e2
3 changed files with 189 additions and 44 deletions

View File

@ -84,40 +84,43 @@ FluArea {
} }
} }
MouseArea {
anchors.fill: row
acceptedButtons: Qt.LeftButton | Qt.RightButton
onDoubleClicked: {
fileItem.parent.doubleClicked()
}
onClicked: {
if (mouse.button === Qt.RightButton) {
menu.popup()
}
}
}
ColumnLayout { ColumnLayout {
id: clickable id: row
anchors.fill: row anchors.fill: parent
anchors.margins: 10
RowLayout { spacing: 10
id: titleRow ColumnLayout {
Image { id: clickable
id: icon anchors.fill: row
source: type ? "qrc:/AicsKnowledgeBase/res/" + type + ".png" : "" MouseArea {
Layout.preferredHeight: 24 anchors.fill: parent
Layout.preferredWidth: 24 acceptedButtons: Qt.LeftButton | Qt.RightButton
fillMode: Image.PreserveAspectFit onDoubleClicked: {
fileItem.parent.doubleClicked()
}
onClicked: {
if (mouse.button === Qt.RightButton) {
menu.popup()
}
}
} }
FluText { RowLayout {
id: title id: titleRow
font.bold: true Image {
font.pointSize: 12 id: icon
text: fileItem.title source: type ? "qrc:/AicsKnowledgeBase/res/" + type + ".png" : ""
textFormat: Text.RichText Layout.preferredHeight: 24
Layout.preferredWidth: 24
fillMode: Image.PreserveAspectFit
}
FluText {
id: title
font.bold: true
font.pointSize: 12
text: fileItem.title
textFormat: Text.RichText
}
} }
}
FluText { FluText {
id: brief id: brief
@ -159,18 +162,18 @@ FluArea {
} }
} }
} }
RowLayout { }
visible: !fileItem.isDir RowLayout {
Repeater { visible: !fileItem.isDir
model: fileItem.tags Repeater {
delegate: FluTextButton { model: fileItem.tags
text: "#" + fileItem.tags[index] delegate: FluTextButton {
normalColor: colorList[index % colorList.length] text: "#" + fileItem.tags[index]
font.pixelSize: 12 normalColor: colorList[index % colorList.length]
Layout.preferredWidth: 50 font.pixelSize: 12
onClicked: { Layout.preferredWidth: 50
emit: tagClicked(text) onClicked: {
} emit: tagClicked(text)
} }
} }
} }

View File

@ -4,6 +4,8 @@ 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"
import "qrc:///AicsKnowledgeBase/qml/global"
FluArea { FluArea {
property string url: '' property string url: ''
@ -14,7 +16,72 @@ FluArea {
Layout.topMargin: 20 Layout.topMargin: 20
FluText { FluText {
id: title
Layout.topMargin: 20 Layout.topMargin: 20
text: "Favorite" text: "Favourite"
}
FileList {
anchors.top: title.bottom
disableHeader: true
width: parent.width
dataModel: listModel
}
ListModel {
id: listModel
}
Component.onCompleted: {
Request.get("/user", response => {
var files = JSON.parse(response).starredKnowledge
listModel.clear()
for (var i = 0; i < files.length; i++) {
var file = files[i]
console.log(file.name)
var modelItem = {
"title": file.knowledge.name,
"uuid": file.knowledge.id,
"date"// cut time after 'T'
: file.knowledge.createTime.substring(0, 10),
"fuuid": "0"
}
modelItem.isDir = false
modelItem.type = getType(file.suffix)
modelItem.size = file.size
modelItem.brief = file.brief
modelItem.pageView = file.pageView
modelItem.stars = 0
var tagString = ""
for (var j = 0; j < file.tags.length; j++) {
if (j != 0)
tagString = tagString + ","
tagString = tagString + file.tags[j].name
}
modelItem.tags = tagString
listModel.append(modelItem)
}
})
}
function getType(suffix) {
if (suffix === "ppt" || suffix === "pptx")
return "PPT"
else if (suffix === "doc" || suffix === "docx")
return "WORD"
else if (suffix === "pdf")
return "PDF"
else if (suffix === "txt")
return "TXT"
else if (suffix === "xls" || suffix === "xlsx")
return "EXCEL"
else if (suffix === "zip" || suffix === "rar")
return "ZIP"
else if (suffix === "png" || suffix === "jpg" || suffix === "jpeg"
|| suffix === "gif")
return "IMAGE"
else if (suffix === "mp3" || suffix === "wav")
return "AUDIO"
else if (suffix === "mp4" || suffix === "avi" || suffix === "rmvb"
|| suffix === "rm" || suffix === "wmv" || suffix === "mkv")
return "VIDEO"
else
return "OTHER"
} }
} }

View File

@ -4,6 +4,8 @@ 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"
import "qrc:///AicsKnowledgeBase/qml/global"
FluArea { FluArea {
property string url: '' property string url: ''
@ -17,4 +19,77 @@ FluArea {
Layout.topMargin: 20 Layout.topMargin: 20
text: "Local" text: "Local"
} }
FileList {
anchors.top: title.bottom
disableHeader: true
width: parent.width
dataModel: listModel
}
ListModel {
id: listModel
}
Component.onCompleted: {
var history = UserData.downloadedFiles
console.log(history)
listModel.clear()
for (var i = 0; i < history.length; i++) {
Request.get("/knowledge/" + history[i] + "/detailed", response => {
var file = JSON.parse(response)
var modelItem = {
"title": file.name,
"uuid": file.id,
"date"// cut time after 'T'
: file.createTime.substring(0, 10),
"fuuid": ""
}
if (file.knowledgeFileAttribute === null) {
modelItem.type = "folder"
modelItem.isDir = true
modelItem.size = 0
} else {
modelItem.isDir = false
modelItem.type = getType(
file.knowledgeFileAttribute.suffix)
modelItem.size = file.knowledgeFileAttribute.size
modelItem.brief = file.knowledgeFileAttribute.brief
modelItem.pageView = file.knowledgeFileAttribute.pageView
modelItem.stars = 0
// merge file.knowledgeFileAttribute.tags array to a string
var tagString = ""
for (var j = 0; j < file.knowledgeFileAttribute.tags.length; j++) {
if (j != 0)
tagString = tagString + ","
tagString = tagString + file.knowledgeFileAttribute.tags[j].name
}
modelItem.tags = tagString
}
listModel.append(modelItem)
})
}
}
function getType(suffix) {
if (suffix === "ppt" || suffix === "pptx")
return "PPT"
else if (suffix === "doc" || suffix === "docx")
return "WORD"
else if (suffix === "pdf")
return "PDF"
else if (suffix === "txt")
return "TXT"
else if (suffix === "xls" || suffix === "xlsx")
return "EXCEL"
else if (suffix === "zip" || suffix === "rar")
return "ZIP"
else if (suffix === "png" || suffix === "jpg" || suffix === "jpeg"
|| suffix === "gif")
return "IMAGE"
else if (suffix === "mp3" || suffix === "wav")
return "AUDIO"
else if (suffix === "mp4" || suffix === "avi" || suffix === "rmvb"
|| suffix === "rm" || suffix === "wmv" || suffix === "mkv")
return "VIDEO"
else
return "OTHER"
}
} }