You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
filemanager/qml/FolderContextMenu.qml

255 lines
9.9 KiB
QML

import QtQuick 2.12
import FishUI 1.0 as FishUI
FishUI.DesktopMenu {
id: control
property var folderModel: null
property bool hasSelection: folderModel ? folderModel.selectionCount > 0 : false
FishUI.MenuItem {
id: newFolderItem
property var modelAction: control.folderModel ? control.folderModel.action("newFolder") : null
text: modelAction ? modelAction.text : qsTr("New Folder")
visible: !control.hasSelection && modelAction && modelAction.visible
enabled: modelAction ? modelAction.enabled : false
onTriggered: modelAction.trigger()
}
FishUI.MenuItem {
id: newDocumentsItem
text: qsTr("New Documents")
visible: !control.hasSelection && newTextFileItem.visible
childMenu: FishUI.DesktopMenu {
id: newDocumentsMenu
FishUI.MenuItem {
id: newTextFileItem
property var modelAction: control.folderModel ? control.folderModel.action("newTextFile") : null
text: modelAction ? modelAction.text : qsTr("New Text")
visible: modelAction && modelAction.visible
enabled: modelAction ? modelAction.enabled : false
onTriggered: modelAction.trigger()
}
}
}
FishUI.MenuSeparator {
visible: !control.hasSelection &&
(newFolderItem.visible || newDocumentsItem.visible)
}
FishUI.MenuItem {
id: pasteItem
property var modelAction: control.folderModel ? control.folderModel.action("paste") : null
text: modelAction ? modelAction.text : qsTr("Paste")
visible: !control.hasSelection && modelAction && modelAction.visible
enabled: modelAction ? modelAction.enabled : false
onTriggered: modelAction.trigger()
}
FishUI.MenuItem {
id: selectAllItem
text: qsTr("Select All")
visible: !control.hasSelection
onTriggered: control.folderModel.selectAll()
}
FishUI.MenuSeparator {
visible: !control.hasSelection &&
(terminalItem.visible || changeBackgroundItem.visible)
}
FishUI.MenuItem {
id: terminalItem
property var modelAction: control.folderModel ? control.folderModel.action("terminal") : null
text: modelAction ? modelAction.text : qsTr("Open in Terminal")
visible: !control.hasSelection && modelAction && modelAction.visible
enabled: modelAction ? modelAction.enabled : false
onTriggered: modelAction.trigger()
}
FishUI.MenuItem {
id: changeBackgroundItem
property var modelAction: control.folderModel ? control.folderModel.action("changeBackground") : null
text: modelAction ? modelAction.text : qsTr("Change background")
visible: !control.hasSelection && control.folderModel && control.folderModel.isDesktop &&
modelAction && modelAction.visible
enabled: modelAction ? modelAction.enabled : false
onTriggered: modelAction.trigger()
}
FishUI.MenuSeparator {
visible: !control.hasSelection && showHiddenItem.visible
}
FishUI.MenuItem {
id: showHiddenItem
property var modelAction: control.folderModel ? control.folderModel.action("showHidden") : null
text: modelAction ? modelAction.text : qsTr("Show Hidden Files")
visible: !control.hasSelection && modelAction && modelAction.visible
enabled: modelAction ? modelAction.enabled : false
onTriggered: modelAction.trigger()
}
FishUI.MenuSeparator {
visible: !control.hasSelection && emptyTrashItem.visible
}
FishUI.MenuItem {
id: emptyTrashItem
property var modelAction: control.folderModel ? control.folderModel.action("emptyTrash") : null
text: modelAction ? modelAction.text : qsTr("Empty Trash")
visible: !control.hasSelection && modelAction && modelAction.visible
enabled: modelAction ? modelAction.enabled : false
onTriggered: modelAction.trigger()
}
FishUI.MenuItem {
id: restoreItem
property var modelAction: control.folderModel ? control.folderModel.action("restore") : null
text: modelAction ? modelAction.text : qsTr("Restore")
visible: control.hasSelection && modelAction && modelAction.visible
enabled: modelAction ? modelAction.enabled : false
onTriggered: modelAction.trigger()
}
FishUI.MenuItem {
id: openItem
property var modelAction: control.folderModel ? control.folderModel.action("open") : null
text: modelAction ? modelAction.text : qsTr("Open")
visible: control.hasSelection && modelAction && modelAction.visible
enabled: modelAction ? modelAction.enabled : false
onTriggered: modelAction.trigger()
}
FishUI.MenuItem {
id: openInNewWindowItem
property var modelAction: control.folderModel ? control.folderModel.action("openInNewWindow") : null
text: modelAction ? modelAction.text : qsTr("Open in new window")
visible: control.hasSelection && modelAction && modelAction.visible
enabled: modelAction ? modelAction.enabled : false
onTriggered: modelAction.trigger()
}
FishUI.MenuItem {
property var modelAction: control.folderModel ? control.folderModel.action("openInNewTab") : null
text: modelAction ? modelAction.text : qsTr("Open In New Tab")
visible: control.hasSelection && modelAction && modelAction.visible
enabled: modelAction ? modelAction.enabled : false
onTriggered: modelAction.trigger()
}
FishUI.MenuItem {
id: openWithItem
property var modelAction: control.folderModel ? control.folderModel.action("openWith") : null
text: modelAction ? modelAction.text : qsTr("Open with")
visible: control.hasSelection && modelAction && modelAction.visible
enabled: modelAction ? modelAction.enabled : false
onTriggered: modelAction.trigger()
}
FishUI.MenuItem {
id: compressItem
property var modelAction: control.folderModel ? control.folderModel.action("compress") : null
text: modelAction ? modelAction.text : qsTr("Compress")
visible: control.hasSelection && modelAction && modelAction.visible
enabled: modelAction ? modelAction.enabled : false
onTriggered: modelAction.trigger()
}
FishUI.MenuSeparator {
visible: control.hasSelection &&
(cutItem.visible || copyItem.visible || trashItem.visible ||
deleteItem.visible || renameItem.visible)
}
FishUI.MenuItem {
id: cutItem
property var modelAction: control.folderModel ? control.folderModel.action("cut") : null
text: modelAction ? modelAction.text : qsTr("Cut")
visible: control.hasSelection && modelAction && modelAction.visible
enabled: modelAction ? modelAction.enabled : false
onTriggered: modelAction.trigger()
}
FishUI.MenuItem {
id: copyItem
property var modelAction: control.folderModel ? control.folderModel.action("copy") : null
text: modelAction ? modelAction.text : qsTr("Copy")
visible: control.hasSelection && modelAction && modelAction.visible
enabled: modelAction ? modelAction.enabled : false
onTriggered: modelAction.trigger()
}
FishUI.MenuItem {
id: trashItem
property var modelAction: control.folderModel ? control.folderModel.action("trash") : null
text: modelAction ? modelAction.text : qsTr("Move To Trash")
visible: control.hasSelection && modelAction && modelAction.visible
enabled: modelAction ? modelAction.enabled : false
onTriggered: modelAction.trigger()
}
FishUI.MenuItem {
id: deleteItem
property var modelAction: control.folderModel ? control.folderModel.action("del") : null
text: modelAction ? modelAction.text : qsTr("Delete")
visible: control.hasSelection && modelAction && modelAction.visible
enabled: modelAction ? modelAction.enabled : false
onTriggered: modelAction.trigger()
}
FishUI.MenuItem {
id: renameItem
property var modelAction: control.folderModel ? control.folderModel.action("rename") : null
text: modelAction ? modelAction.text : qsTr("Rename")
visible: control.hasSelection && modelAction && modelAction.visible
enabled: modelAction ? modelAction.enabled : false
onTriggered: modelAction.trigger()
}
FishUI.MenuSeparator {
visible: control.hasSelection &&
(terminalSelectedItem.visible || wallpaperItem.visible)
}
FishUI.MenuItem {
id: terminalSelectedItem
property var modelAction: control.folderModel ? control.folderModel.action("terminal") : null
text: modelAction ? modelAction.text : qsTr("Open in Terminal")
visible: control.hasSelection && modelAction && modelAction.visible
enabled: modelAction ? modelAction.enabled : false
onTriggered: modelAction.trigger()
}
FishUI.MenuItem {
id: wallpaperItem
property var modelAction: control.folderModel ? control.folderModel.action("wallpaper") : null
text: modelAction ? modelAction.text : qsTr("Set as Wallpaper")
visible: control.hasSelection && modelAction && modelAction.visible
enabled: modelAction ? modelAction.enabled : false
onTriggered: modelAction.trigger()
}
FishUI.MenuSeparator {
visible: propertiesItem.visible
}
FishUI.MenuItem {
id: propertiesItem
property var modelAction: control.folderModel ? control.folderModel.action("properties") : null
text: modelAction ? modelAction.text : qsTr("Properties")
visible: modelAction && modelAction.visible
enabled: modelAction ? modelAction.enabled : false
onTriggered: modelAction.trigger()
}
onVisibleChanged: {
if (visible && folderModel)
folderModel.prepareContextMenu()
}
}