diff --git a/app/main.qml b/app/main.qml index 3b10acc..60b0f0f 100644 --- a/app/main.qml +++ b/app/main.qml @@ -1,165 +1,185 @@ import QtQuick 2.7 import QtQuick.Controls 2.0 import QtQuick.Layouts 1.3 import org.kde.kirigami 2.0 as Kirigami import org.kde.mauikit 1.0 as Maui import QtQuick.Window 2.0 import QtQuick.Controls.Material 2.1 import "widgets" import "widgets/views" import "widgets/sidebar" import "widgets_templates" import "Index.js" as INX Maui.ApplicationWindow { id: root title: browser.currentPath property int sidebarWidth: placesSidebar.isCollapsed ? placesSidebar.iconSize * 2: Kirigami.Units.gridUnit * 11 > Screen.width * 0.3 ? Screen.width : Kirigami.Units.gridUnit * 11 + about.appDescription: qsTr("Index is a file manager that works on desktops, Android and Plasma Mobile. Index lets you browse your system files and applications and preview your music, text, image and video files and share them with external applications.") + about.appIcon: "qrc:/assets/index.svg" pageStack.defaultColumnWidth: sidebarWidth pageStack.initialPage: [placesSidebar, browser] pageStack.interactive: isMobile pageStack.separatorVisible: pageStack.wideMode accentColor: altColor highlightColor: "#8682dd" altColor: "#43455a" altToolBars: false altColorText: "#ffffff" property color headBarColor: "#bdc8e5" // headBarBG.color: headBarColor headBar.middleContent: Maui.PathBar { id: pathBar // pathBarBG.color:Qt.lighter(headBarColor, 1.1) - height: iconSizes.big +// height: iconSizes.big width: headBar.middleLayout.width * 0.9 onPathChanged: browser.openFolder(path) onHomeClicked: { if(pageStack.currentIndex !== 0 && !pageStack.wideMode) pageStack.currentIndex = 0 browser.openFolder(inx.homePath()) } onPlaceClicked: browser.openFolder(path) } PlacesSidebar { id: placesSidebar onPlaceClicked: { if(item.type === "Tags") browser.populateTags(item.path) else browser.openFolder(item.path) } width: isCollapsed ? iconSize*2 : parent.width height: parent.height } Browser { id: browser anchors.fill: parent Component.onCompleted: { browser.openFolder(inx.homePath()) } } ItemMenu { id: itemMenu onBookmarkClicked: browser.bookmarkFolder(paths) onCopyClicked: { if(paths.length > 0) browser.selectionBar.animate("#6fff80") browser.copy(paths) } onCutClicked: { if(paths.length > 0) browser.selectionBar.animate("#fff44f") browser.cut(paths) } + onRenameClicked: + { + if(paths.length === 1) + renameDialog.open() + + } + // onSaveToClicked: // { // fmDialog.saveDialog = false // fmDialog.multipleSelection = true // fmDialog.onlyDirs= true // var myPath = path // var paths = browser.selectionBar.selectedPaths // fmDialog.show(function(paths) // { // inx.copy(myPath, paths) // }) // } onRemoveClicked: { if(paths.length > 0) { browser.selectionBar.clear() browser.selectionBar.animate("red") } browser.remove(paths) } onShareClicked: isAndroid ? Maui.Android.shareDialog(paths) : shareDialog.show(paths) } Maui.NewDialog { id: newFolderDialog - title: "New folder..." + title: "Create new folder" onFinished: inx.createDir(browser.currentPath, text) } Maui.NewDialog { id: newFileDialog - title: "New file..." + title: "Create new file" onFinished: inx.createFile(browser.currentPath, text) } + Maui.NewDialog + { + id: renameDialog + title: qsTr("Rename file") + textEntry.placeholderText: qsTr("New name...") + onFinished: inx.rename(itemMenu.paths[0], textEntry.text) + + acceptText: qsTr("Rename") + rejectText: qsTr("Cancel") + } + Maui.ShareDialog { id: shareDialog // parent: browser } onSearchButtonClicked: fmDialog.show() Maui.FileDialog { id:fmDialog } Connections { target: inx onOpenPath: browser.openFolder(paths[0]) } } diff --git a/app/widgets_templates/ItemMenu.qml b/app/widgets_templates/ItemMenu.qml index 9e390e2..f501cc6 100644 --- a/app/widgets_templates/ItemMenu.qml +++ b/app/widgets_templates/ItemMenu.qml @@ -1,151 +1,162 @@ import QtQuick 2.9 import QtQuick.Controls 2.3 import org.kde.mauikit 1.0 as Maui Menu { id: control x: parent.width / 2 - width / 2 y: parent.height / 2 - height / 2 modal: true focus: true parent: ApplicationWindow.overlay margins: 1 padding: 2 property var paths : [] property bool isDir : false signal bookmarkClicked(var paths) signal removeClicked(var paths) signal shareClicked(var paths) signal copyClicked(var paths) signal cutClicked(var paths) + signal renameClicked(var paths) signal tagsClicked(var paths) signal saveToClicked(var paths) MenuItem { text: qsTr("Bookmark") enabled: isDir onTriggered: { bookmarkClicked(paths) close() } } MenuItem { text: qsTr("Tags...") onTriggered: { tagsClicked(paths) close() } } MenuItem { text: qsTr("Share...") onTriggered: { shareClicked(paths) close() } } MenuItem { text: qsTr("Copy...") onTriggered: { copyClicked(paths) close() } } MenuItem { text: qsTr("Cut...") onTriggered: { cutClicked(paths) close() } } + MenuItem + { + text: qsTr("Rename...") + onTriggered: + { + renameClicked(paths) + close() + } + } + MenuItem { text: qsTr("Save to...") onTriggered: { saveToClicked(paths) close() } } MenuItem { text: qsTr("Remove...") onTriggered: { removeClicked(paths) close() } } MenuItem { text: qsTr("Info...") onTriggered: { browser.detailsDrawer.show(paths) close() } } MenuItem { text: qsTr("Select") onTriggered: browser.selectionBar.append(browser.grid.model.get(browser.grid.currentIndex)) } MenuSeparator {} MenuItem { width: parent.width height: iconSize ColorsBar { height: parent.height width: parent.width size: iconSize onColorPicked: { for(var i in control.paths) Maui.FM.setDirConf(control.paths[i]+"/.directory", "Desktop Entry", "Icon", color) browser.refresh() } } } function show(urls) { if(urls.length > 0 ) { paths = urls isDir = inx.isDir(paths[0]) if(isMobile) open() else popup() } } }