diff --git a/AicsKnowledgeBase/qml/component/FileList.qml b/AicsKnowledgeBase/qml/component/FileList.qml index 5e0fb06..ec72db6 100644 --- a/AicsKnowledgeBase/qml/component/FileList.qml +++ b/AicsKnowledgeBase/qml/component/FileList.qml @@ -35,42 +35,14 @@ Item { Component { id: fileListItemHeader - - RowLayout { - id: fileListItemHeaderItem - width: ListView.view.width - height: 48 - - // back to folder button - FluIconButton { - Layout.alignment: Qt.AlignVCenter - id: backButton - width: 24 - height: 24 - iconSource: FluentIcons.ForwardCall - onClicked: { - if (header.count() > 0) { - header.items = header.items.slice(0, header.count() - 1) - } - fileListItemHeaderItem.update() - } + ColumnLayout { + function add(folderName, uuid) { + console.log(header.items) + header.items = header.items.concat([{ + "title": folderName, + "uuid": uuid + }]) } - FluBreadcrumbBar { - id: header - //width: parent.width - height: parent.height - separator: ">" - items: [] - onClickItem: function (model) { - if (model.index + 1 !== count()) { - items = items.slice(0, model.index + 1) - } - } - onItemsChanged: { - fileListItemHeaderItem.update() - } - } - FluButton { Layout.alignment: Qt.AlignRight text: "上传" @@ -78,28 +50,25 @@ Item { console.log("click") fileDialog.open() } - FileDialog { id: fileDialog onAccepted: function () { const size = FileTransferManager.getFileSize( selectedFile) const md5 = FileTransferManager.getFileMd5(selectedFile) - if (size <= 0 || md5 === '') return - var body = { "name": "test2", "brief": "brief", "size": size, "md5": md5, "tags": [], - "parentId": null + "parentId": header.items.length + !== 0 ? header.items[header.items.length - 1].uuid : null } console.log("begin") console.log(JSON.stringify(body)) - Request.post("knowledge/file", JSON.stringify(body), function (res, data) { console.log(res) @@ -113,64 +82,112 @@ Item { } } } + RowLayout { + id: fileListItemHeaderItem + width: ListView.view.width + height: 48 - function add(folderName, uuid) { - console.log(header.items) - header.items = header.items.concat([{ - "title": folderName, - "uuid": uuid - }]) - } - - function getType(suffix) { - if (suffix === "ppt" || suffix === "pptx") - return "PPT" - else if (suffix === "doc" || suffix === "docx") - return "WORD" - } - - function update() { - var uuid = header.items.length - === 0 ? "null" : header.items[header.items.length - 1].uuid - Request.get(uuid, function (response) { - var data = JSON.parse(response) - console.log(data.knowledgeFileAttribute) - fileListModel.clear() - var files = data.children - for (var i = 0; i < files.length; i++) { - var file = files[i] - console.log(file.name) - var modelItem = { - "title": file.name, - "uuid": file.id, - "date": file.createTime + // back to folder button + FluIconButton { + Layout.alignment: Qt.AlignVCenter + id: backButton + width: 24 + height: 24 + iconSource: FluentIcons.ForwardCall + onClicked: { + if (header.count() > 0) { + header.items = header.items.slice( + 0, header.count() - 1) } - 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 - } - fileListModel.append(modelItem) + fileListItemHeaderItem.update() } - console.log(fileListModel) - listView.currentIndex = -1 - }) + } + FluBreadcrumbBar { + id: header + width: parent.width + height: parent.height + separator: ">" + items: [] + onClickItem: function (model) { + if (model.index + 1 !== count()) { + items = items.slice(0, model.index + 1) + } + } + onItemsChanged: { + fileListItemHeaderItem.update() + } + } + + 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" + } + + function update() { + var uuid = header.items.length + === 0 ? "null" : header.items[header.items.length - 1].uuid + Request.get("/knowledge/" + uuid, function (response) { + var data = JSON.parse(response) + console.log(data.knowledgeFileAttribute) + fileListModel.clear() + var files = data.children + for (var i = 0; i < files.length; i++) { + var file = files[i] + console.log(file.name) + var modelItem = { + "title": file.name, + "uuid": file.id, + "date"// cut time after 'T' + : file.createTime.substring(0, 10) + } + 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 + } + fileListModel.append(modelItem) + } + console.log(fileListModel) + listView.currentIndex = -1 + }) + } } } } @@ -206,6 +223,7 @@ Item { function doubleClicked() { listView.currentIndex = index if (model.isDir) { + console.log(listView.headerItem) listView.headerItem.add(model.title, model.uuid) } else { emit: SignalFileOperation.open(model.uuid) diff --git a/AicsKnowledgeBase/qml/component/FileListItem.qml b/AicsKnowledgeBase/qml/component/FileListItem.qml index 8b8d5e4..7516c72 100644 --- a/AicsKnowledgeBase/qml/component/FileListItem.qml +++ b/AicsKnowledgeBase/qml/component/FileListItem.qml @@ -39,11 +39,13 @@ FluArea { Image { id: icon source: type ? "qrc:/AicsKnowledgeBase/res/" + type + ".png" : "" - Layout.preferredHeight: 18 - Layout.preferredWidth: 18 + Layout.preferredHeight: 32 + Layout.preferredWidth: 32 } FluText { id: title + font.bold: true + font.pointSize: 15 text: fileItem.title } } @@ -52,17 +54,23 @@ FluArea { id: brief visible: !fileItem.isDir text: fileItem.brief + Layout.fillWidth: true + wrapMode: Text.WrapAnywhere + elide: Text.ElideRight + maximumLineCount: 2 } RowLayout { id: infoRow visible: !fileItem.isDir FluText { id: date + color: "#5F5F5F" text: fileItem.date } FluText { id: size // cast Byte size to right text size + color: "#5F5F5F" text: fileItem.size > 1024 * 1024 ? (fileItem.size / 1024 / 1024).toFixed( 2) + "MB" : (fileItem.size / 1024).toFixed( @@ -70,10 +78,12 @@ FluArea { } FluText { id: pageView + color: "#5F5F5F" text: fileItem.pageView + "浏览" } FluText { id: stars + color: "#5F5F5F" text: fileItem.stars + "收藏" } } diff --git a/AicsKnowledgeBase/res/AUDIO.png b/AicsKnowledgeBase/res/AUDIO.png new file mode 100644 index 0000000..1cc2039 Binary files /dev/null and b/AicsKnowledgeBase/res/AUDIO.png differ diff --git a/AicsKnowledgeBase/res/OTHER.png b/AicsKnowledgeBase/res/OTHER.png new file mode 100644 index 0000000..54a10d1 Binary files /dev/null and b/AicsKnowledgeBase/res/OTHER.png differ