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 string type property string suffix property bool isDir: false property int size 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() } } RowLayout { id: titleRow Image { id: icon source: type ? "qrc:/AicsKnowledgeBase/res/" + type + ".png" : "" Layout.preferredHeight: 24 Layout.preferredWidth: 24 } FluText { id: title font.bold: true font.pointSize: 12 text: fileItem.title } } FluText { 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( 2) + "KB" } FluText { id: pageView color: "#5F5F5F" text: fileItem.pageView + "浏览" } FluText { id: stars color: "#5F5F5F" 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) } } } } } }