filemanager/qml/BrowserView.qml

108 lines
2.7 KiB
QML
Raw Normal View History

2021-03-16 00:02:20 -07:00
import QtQuick 2.12
import QtQuick.Controls 2.12
import QtQuick.Layouts 1.12
import QtGraphicalEffects 1.0
import MeuiKit 1.0 as Meui
import Cutefish.FileManager 1.0 as FM
Item {
id: control
property alias model: dirModel
property alias url: dirModel.url
property alias currentView: viewLoader.item
signal openPathBar
FM.FolderModel {
id: dirModel
sortDirsFirst: true
parseDesktopFiles: true
url: dirModel.homePath()
previews: true
previewPlugins: []
}
FM.Positioner {
id: positioner
folderModel: dirModel
enabled: true
}
Rectangle {
anchors.fill: parent
anchors.topMargin: 0
anchors.leftMargin: Meui.Theme.smallRadius / 2
anchors.rightMargin: Meui.Theme.smallRadius
anchors.bottomMargin: Meui.Theme.smallRadius
radius: Meui.Theme.smallRadius
color: Meui.Theme.backgroundColor
Label {
anchors.centerIn: parent
text: qsTr("No Files")
font.pointSize: 20
visible: dirModel.status === FM.FolderModel.Ready && currentView.count === 0
}
}
Loader {
id: viewLoader
anchors.fill: parent
anchors.bottomMargin: Meui.Units.largeSpacing
sourceComponent: switch (settings.viewMethod) {
case 0: return listViewBrowser
case 1: return gridViewBrowser
}
}
Component {
id: listViewBrowser
FolderListView {
id: _listViewBrowser
anchors.fill: parent
model: dirModel
leftMargin: Meui.Units.largeSpacing + Meui.Units.smallSpacing
rightMargin: Meui.Units.largeSpacing + Meui.Units.smallSpacing
topMargin: Meui.Units.smallSpacing
bottomMargin: Meui.Units.largeSpacing * 2
delegate: FolderListDelegate {
id: listDelegate
width: ListView.view.width - ListView.view.leftMargin - ListView.view.rightMargin
height: 48
}
}
}
Component {
id: gridViewBrowser
FolderIconView {
id: _gridViewBrowser
anchors.fill: parent
model: dirModel
leftMargin: Meui.Units.largeSpacing
rightMargin: Meui.Units.largeSpacing
delegate: FolderIconDelegate {
id: iconDelegate
height: _gridViewBrowser.cellHeight
width: _gridViewBrowser.cellWidth
}
}
}
Component.onCompleted: {
control.currentView.forceActiveFocus()
}
function openFolder(url) {
dirModel.url = url
}
}