import QtQuick 2.15 import FluentUI import QtQuick.Layouts Item { 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.toUpperCase( ) + ".png" : "" Layout.preferredHeight: 18 Layout.preferredWidth: 18 } FluText { id: title text: fileItem.title } } FluText { id: brief visible: !fileItem.isDir text: fileItem.brief } RowLayout { id: infoRow visible: !fileItem.isDir FluText { id: date text: fileItem.date } FluText { id: size // cast Byte size to right text size text: fileItem.size > 1024 * 1024 ? (fileItem.size / 1024 / 1024).toFixed( 2) + "MB" : (fileItem.size / 1024).toFixed( 2) + "KB" } 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) } } } } } }