Warning, /maui/index-fm/src/widgets/views/FileMenu.qml is written in an unsupported language. File is not indexed.

0001 import QtQuick 2.15
0002 import QtQuick.Controls 2.15
0003 import QtQml 2.14
0004 
0005 import org.mauikit.controls 1.3 as Maui
0006 
0007 import org.mauikit.filebrowsing 1.3 as FB
0008 
0009 import ".."
0010 
0011 Maui.ContextualMenu
0012 {
0013     id: control
0014 
0015     /**
0016       *
0017       */
0018     property var item : ({})
0019 
0020     /**
0021       *
0022       */
0023     property int index : -1
0024 
0025     /**
0026       *
0027       */
0028     property bool isDir : false
0029 
0030     /**
0031       *
0032       */
0033     property bool isExec : false
0034 
0035     /**
0036       *
0037       */
0038     property bool isFav: false
0039 
0040     title: control.item.label
0041     subtitle: control.item.mime ? (control.item.mime === "inode/directory" ? (control.item.count ? control.item.count + i18n(" items") : "") : Maui.Handy.formatSize(control.item.size)) : ""
0042     titleImageSource: control.item.thumbnail
0043     titleIconSource: control.item.icon
0044 
0045     Maui.MenuItemActionRow
0046     {
0047         Action
0048         {
0049             enabled: !control.isExec
0050             text: i18n("Copy")
0051             icon.name: "edit-copy"
0052             onTriggered:
0053             {
0054                 _browser.copy(_browser.filterSelection(currentPath, control.item.path))
0055             }
0056         }
0057 
0058         Action
0059         {
0060             enabled: !control.isExec
0061             text: i18n("Cut")
0062             icon.name: "edit-cut"
0063             onTriggered:
0064             {
0065                 _browser.cut(_browser.filterSelection(currentPath, control.item.path))
0066             }
0067         }
0068 
0069         Action
0070         {
0071             enabled: !control.isExec
0072             text: i18n("Rename")
0073             icon.name: "edit-rename"
0074             onTriggered:
0075             {
0076                 _browser.renameItem()
0077             }
0078         }
0079 
0080         Action
0081         {
0082             text: i18n("Remove")
0083             Maui.Theme.textColor: Maui.Theme.negativeTextColor
0084             icon.name: "edit-delete"
0085             onTriggered:
0086             {
0087                 _browser.remove(_browser.filterSelection(currentPath, control.item.path))
0088 
0089             }
0090         }
0091     }
0092 
0093     MenuSeparator{}
0094 
0095     MenuItem
0096     {
0097         enabled: !control.isExec
0098         text: i18n("Select")
0099         icon.name: "edit-select"
0100         onTriggered:
0101         {
0102             _browser.addToSelection(control.item)
0103             if(Maui.Handy.isTouch)
0104                 _browser.selectionMode = true
0105         }
0106     }
0107 
0108     MenuItem
0109     {
0110         id: openWithMenuItem
0111         enabled: !control.isExec
0112         text: i18n("Open with")
0113         icon.name: "document-open"
0114         onTriggered:
0115         {
0116             openWith(_browser.filterSelection(currentPath, control.item.path))
0117         }
0118     }
0119 
0120     MenuItem
0121     {
0122         enabled: !control.isExec
0123         text: i18n("Preview and Info")
0124         icon.name: "view-preview"
0125         onTriggered:
0126         {
0127             openPreview(_browser.currentFMModel, _browser.currentIndex)
0128         }
0129     }
0130 
0131     MenuSeparator {}
0132 
0133     Maui.MenuItemActionRow
0134     {
0135         Action
0136         {
0137             text: control.isFav ? i18n("UnFav") : i18n("Fav")
0138             checked: control.isFav
0139             checkable: true
0140             icon.name: "love"
0141             onTriggered:
0142             {
0143                 if(FB.Tagging.toggleFav(item.path))
0144                 {
0145                     control.isFav = !control.isFav
0146                 }
0147             }
0148         }
0149 
0150         Action
0151         {
0152             enabled: !control.isExec
0153             text: i18n("Tags")
0154             icon.name: "tag"
0155             onTriggered:
0156             {
0157                 dialogLoader.sourceComponent = _tagsDialogComponent
0158                 dialog.composerList.urls = _browser.filterSelection(currentPath, control.item.path)
0159                 dialog.open()
0160             }
0161         }
0162 
0163         Action
0164         {
0165             enabled: !control.isExec
0166             text: i18n("Share")
0167             icon.name: "document-share"
0168             onTriggered:
0169             {
0170                 shareFiles(_browser.filterSelection(currentPath, control.item.path))
0171             }
0172         }
0173 
0174         Action
0175         {
0176             enabled: !control.isExec && control.isDir
0177             text: i18n("Bookmark")
0178             icon.name: "bookmark-new"
0179             onTriggered:
0180             {
0181                 _browser.bookmarkFolder([control.item.path])
0182             }
0183         }
0184     }
0185 
0186     MenuSeparator {}
0187 
0188     MenuItem
0189     {
0190         enabled: control.isDir
0191         text: i18n("Open in New Tab")
0192         icon.name: "tab-new"
0193         onTriggered: root.openTab(control.item.path)
0194     }
0195 
0196     MenuItem
0197     {
0198         enabled: control.isDir && Maui.Handy.isLinux
0199         text: i18n("Open in New Window")
0200         icon.name: "window-new"
0201         onTriggered: inx.openNewWindow(control.item.path)
0202     }
0203 
0204     MenuItem
0205     {
0206         enabled: control.isDir && root.currentTab.count === 1
0207         text: i18n("Open in Split View")
0208         icon.name: "view-split-left-right"
0209         onTriggered: root.currentTab.split(control.item.path, Qt.Horizontal)
0210     }
0211 
0212     MenuSeparator {}
0213 
0214     MenuItem
0215     {
0216         enabled: FB.FM.checkFileType(FB.FMList.COMPRESSED, control.item.mime)
0217         text: i18n("Extract")
0218         icon.name: "archive-extract"
0219         onTriggered:
0220         {
0221             _compressedFile.url = control.item.path
0222             dialogLoader.sourceComponent= _extractDialogComponent
0223             dialog.open()
0224         }
0225     }
0226 
0227     MenuItem
0228     {
0229         text: i18n("Compress")
0230         icon.name: "archive-insert"
0231         onTriggered:
0232         {
0233             dialogLoader.sourceComponent= _compressDialogComponent
0234             dialog.urls = _browser.filterSelection(currentPath, control.item.path)
0235             dialog.open()
0236         }
0237     }
0238 
0239     MenuSeparator {}
0240 
0241     ColorsBar
0242     {
0243         id: colorBar
0244         padding: control.padding
0245         width: parent.width
0246         enabled: control.isDir
0247 
0248         Binding on folderColor {
0249             value: control.item.icon
0250             restoreMode: Binding.RestoreBindingOrValue
0251         }
0252 
0253         onFolderColorPicked:
0254         {
0255             _browser.currentFMList.setDirIcon(control.index, color)
0256             control.close()
0257         }
0258     }
0259 
0260 
0261     onClosed:
0262     {
0263         control.index = -1
0264     }
0265 
0266     function showFor(index)
0267     {
0268         control.item = _browser.currentFMList.get(index)
0269         console.log("CURRENT ITEM" , item.name)
0270         if(item.path.startsWith("tags://") || item.path.startsWith("applications://"))
0271             return
0272 
0273         if(item)
0274         {
0275             console.log("GOT ITEM FILE", index, item.path)
0276             control.index = index
0277             control.isDir = item.isdir == true || item.isdir == "true"
0278             control.isExec = item.executable == true || item.executable == "true"
0279             control.isFav = FB.Tagging.isFav(item.path)
0280             control.show()
0281         }
0282     }
0283 }