FileListDemo
parent
f100a14c2e
commit
3404a17990
|
@ -0,0 +1,129 @@
|
||||||
|
import QtQuick 2.15
|
||||||
|
import QtQuick.Layouts
|
||||||
|
import FluentUI
|
||||||
|
|
||||||
|
Window {
|
||||||
|
id: fileListTestWindow
|
||||||
|
visible: true
|
||||||
|
width: 800
|
||||||
|
height: 600
|
||||||
|
title: "File List Test1"
|
||||||
|
Item {
|
||||||
|
|
||||||
|
anchors.fill: parent
|
||||||
|
ListView {
|
||||||
|
id: listView
|
||||||
|
anchors.fill: parent
|
||||||
|
spacing: 10
|
||||||
|
header: fileListItemHeader
|
||||||
|
model: fileListModel
|
||||||
|
delegate: fileListItemDelegate
|
||||||
|
}
|
||||||
|
Component {
|
||||||
|
id: fileListItemHeader
|
||||||
|
Item {
|
||||||
|
id: fileListItemHeaderItem
|
||||||
|
width: ListView.view.width
|
||||||
|
height: 48
|
||||||
|
FluBreadcrumbBar {
|
||||||
|
id: header
|
||||||
|
width: parent.width
|
||||||
|
height: parent.height
|
||||||
|
separator: ">"
|
||||||
|
items: [{
|
||||||
|
"title": "Home"
|
||||||
|
}, {
|
||||||
|
"title": "Documents"
|
||||||
|
}, {
|
||||||
|
"title": "File List"
|
||||||
|
}]
|
||||||
|
onClickItem: function (model) {
|
||||||
|
if (model.index + 1 !== count()) {
|
||||||
|
items = items.slice(0, model.index + 1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
onItemsChanged: {
|
||||||
|
fileListItemHeaderItem.update()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function add(folderName) {
|
||||||
|
listView.headerItem.children[0].items
|
||||||
|
= listView.headerItem.children[0].items.concat([{
|
||||||
|
"title": folderName
|
||||||
|
}])
|
||||||
|
}
|
||||||
|
function update() {
|
||||||
|
// combine all header items to a path
|
||||||
|
var path = ""
|
||||||
|
for (var i = 0; i < listView.headerItem.children[0].items.length; i++) {
|
||||||
|
path += listView.headerItem.children[0].items[i].title + "/"
|
||||||
|
}
|
||||||
|
console.log(path)
|
||||||
|
var newListModel = []
|
||||||
|
// http request for new list data
|
||||||
|
// fileListModel.clear()
|
||||||
|
// fileListModel.append(newListModel)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Component {
|
||||||
|
id: fileListItemDelegate
|
||||||
|
Rectangle {
|
||||||
|
id: fileListItemRect
|
||||||
|
width: ListView.view.width
|
||||||
|
height: 100
|
||||||
|
color: !ListView.isCurrentItem ? "lightgray" : "red"
|
||||||
|
FileListItem {
|
||||||
|
width: parent.width
|
||||||
|
height: parent.height
|
||||||
|
title: model.title
|
||||||
|
isDir: model.isDir
|
||||||
|
brief: model.brief
|
||||||
|
size: model.size
|
||||||
|
type: model.type
|
||||||
|
date: model.date
|
||||||
|
pageView: model.pageView
|
||||||
|
stars: model.stars
|
||||||
|
}
|
||||||
|
MouseArea {
|
||||||
|
anchors.fill: parent
|
||||||
|
onClicked: {
|
||||||
|
listView.currentIndex = index
|
||||||
|
if (model.isDir) {
|
||||||
|
listView.headerItem.add(model.title)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ListModel {
|
||||||
|
id: fileListModel
|
||||||
|
ListElement {
|
||||||
|
title: "File 1"
|
||||||
|
isDir: true
|
||||||
|
brief: "This is a test file"
|
||||||
|
type: "FOLDER"
|
||||||
|
}
|
||||||
|
ListElement {
|
||||||
|
title: "File 2"
|
||||||
|
isDir: false
|
||||||
|
brief: "This is a test file"
|
||||||
|
size: 500
|
||||||
|
type: "WORD"
|
||||||
|
date: "2020-09-09"
|
||||||
|
pageView: 100
|
||||||
|
stars: 10
|
||||||
|
}
|
||||||
|
ListElement {
|
||||||
|
title: "File 3"
|
||||||
|
isDir: false
|
||||||
|
brief: "This is a test file"
|
||||||
|
type: "PPT"
|
||||||
|
date: "2020-09-09"
|
||||||
|
pageView: 100
|
||||||
|
size: 10200000022
|
||||||
|
stars: 10
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,69 @@
|
||||||
|
import QtQuick 2.15
|
||||||
|
import FluentUI
|
||||||
|
import QtQuick.Layouts
|
||||||
|
|
||||||
|
Item {
|
||||||
|
id: fileItem
|
||||||
|
property string id
|
||||||
|
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
|
||||||
|
|
||||||
|
ColumnLayout {
|
||||||
|
id: row
|
||||||
|
anchors.fill: parent
|
||||||
|
anchors.margins: 10
|
||||||
|
spacing: 10
|
||||||
|
|
||||||
|
RowLayout {
|
||||||
|
Image {
|
||||||
|
id: icon
|
||||||
|
source: type ?
|
||||||
|
"qrc:/AicsKnowledgeBase/res/" + type + ".png" : ""
|
||||||
|
Layout.preferredHeight: 18
|
||||||
|
Layout.preferredWidth: 18
|
||||||
|
}
|
||||||
|
FluText {
|
||||||
|
id: title
|
||||||
|
text: fileItem.title
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
FluText {
|
||||||
|
id: brief
|
||||||
|
visible: !fileItem.isDir
|
||||||
|
text: fileItem.brief
|
||||||
|
}
|
||||||
|
RowLayout {
|
||||||
|
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 + "收藏"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,23 @@
|
||||||
|
import QtQuick
|
||||||
|
import Qt.labs.settings
|
||||||
|
import QtQuick.Controls
|
||||||
|
|
||||||
|
QtObject {
|
||||||
|
id: settings
|
||||||
|
Settings {
|
||||||
|
id: registry
|
||||||
|
property string rememberedCookie
|
||||||
|
}
|
||||||
|
|
||||||
|
property string cookie
|
||||||
|
property int userId
|
||||||
|
property string userName
|
||||||
|
property int userLevel
|
||||||
|
|
||||||
|
Component.onDestruction: {
|
||||||
|
cookie = registry.rememberedCookie
|
||||||
|
}
|
||||||
|
function rememberCookie() {
|
||||||
|
registry.rememberedCookie = cookie
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue