X-Git-Url: https://www.flypig.org.uk/git/?p=openvpnui.git;a=blobdiff_plain;f=qml%2Ffilebrowse%2Fpages%2FPermissionsDialog.qml;fp=qml%2Ffilebrowse%2Fpages%2FPermissionsDialog.qml;h=cdee48a89acc7e8a06a38233d7d2b9ec7148e538;hp=0000000000000000000000000000000000000000;hb=e24363e314aca32e7bee952f02f517a04a8dc5f2;hpb=ee3968ffa08d4e0fcbad87765efa3aeb32ff0554 diff --git a/qml/filebrowse/pages/PermissionsDialog.qml b/qml/filebrowse/pages/PermissionsDialog.qml new file mode 100644 index 0000000..cdee48a --- /dev/null +++ b/qml/filebrowse/pages/PermissionsDialog.qml @@ -0,0 +1,218 @@ +import QtQuick 2.0 +import Sailfish.Silica 1.0 +import harbour.file.browser.FileInfo 1.0 +import "../components" + +Dialog { + property string path: "" + + // return value + property string errorMessage: "" + + id: dialog + allowedOrientations: Orientation.All + + property int _executeWidth: executeLabel.width + + onAccepted: errorMessage = engine.chmod(path, + ownerRead.checked, ownerWrite.checked, ownerExecute.checked, + groupRead.checked, groupWrite.checked, groupExecute.checked, + othersRead.checked, othersWrite.checked, othersExecute.checked); + + FileInfo { + id: fileInfo + file: path + } + + // copy values to fields when page shows up + Component.onCompleted: { + ownerName.text = fileInfo.owner + groupName.text = fileInfo.group + var permissions = fileInfo.permissions + if (permissions.charAt(0) !== '-') ownerRead.checked = true; + if (permissions.charAt(1) !== '-') ownerWrite.checked = true; + if (permissions.charAt(2) !== '-') ownerExecute.checked = true; + if (permissions.charAt(3) !== '-') groupRead.checked = true; + if (permissions.charAt(4) !== '-') groupWrite.checked = true; + if (permissions.charAt(5) !== '-') groupExecute.checked = true; + if (permissions.charAt(6) !== '-') othersRead.checked = true; + if (permissions.charAt(7) !== '-') othersWrite.checked = true; + if (permissions.charAt(8) !== '-') othersExecute.checked = true; + } + + SilicaFlickable { + id: flickable + anchors.fill: parent + contentHeight: column.height + VerticalScrollDecorator { flickable: flickable } + + Column { + id: column + anchors.left: parent.left + anchors.right: parent.right + + DialogHeader { + id: dialogHeader + title: qsTr("Change Permissions") + acceptText: qsTr("Change") + } + + Label { + anchors.left: parent.left + anchors.right: parent.right + anchors.leftMargin: Theme.paddingLarge + anchors.rightMargin: Theme.paddingLarge + text: qsTr("Change permissions for\n%1").arg(path) + color: Theme.secondaryColor + wrapMode: Text.Wrap + } + + Spacer { + height: 40 + } + + // read, write, execute small labels + Row { + width: parent.width + Label { + width: parent.width/2 + text: " " + } + + Label { + id: readLabel + width: executeLabel.width + text: qsTr("Read") + font.pixelSize: Theme.fontSizeExtraSmall + color: Theme.secondaryColor + horizontalAlignment: Text.AlignHCenter + } + Label { + id: writeLabel + width: executeLabel.width + text: qsTr("Write") + font.pixelSize: Theme.fontSizeExtraSmall + color: Theme.secondaryColor + horizontalAlignment: Text.AlignHCenter + } + Label { + id: executeLabel + text: qsTr("Execute") + font.pixelSize: Theme.fontSizeExtraSmall + color: Theme.secondaryColor + horizontalAlignment: Text.AlignHCenter + } + } + + // owner + Row { + width: parent.width + Column { + width: parent.width/2 + Label { + id: ownerName + width: parent.width-20 + text: "" + color: Theme.highlightColor + horizontalAlignment: Text.AlignRight + } + Label { + width: parent.width-20 + text: qsTr("Owner") + font.pixelSize: Theme.fontSizeExtraSmall + color: Theme.secondaryColor + horizontalAlignment: Text.AlignRight + } + } + LetterSwitch { + id: ownerRead + width: _executeWidth + letter: 'r' + } + LetterSwitch { + id: ownerWrite + width: _executeWidth + letter: 'w' + } + LetterSwitch { + id: ownerExecute + width: _executeWidth + letter: 'x' + } + } + + // group + Row { + id: groupRow + width: parent.width + Column { + width: parent.width/2 + Label { + id: groupName + width: parent.width-20 + text: "" + color: Theme.highlightColor + horizontalAlignment: Text.AlignRight + } + Label { + width: parent.width-20 + text: qsTr("Group") + font.pixelSize: Theme.fontSizeExtraSmall + color: Theme.secondaryColor + horizontalAlignment: Text.AlignRight + } + } + LetterSwitch { + id: groupRead + width: _executeWidth + letter: 'r' + } + LetterSwitch { + id: groupWrite + width: _executeWidth + letter: 'w' + } + LetterSwitch { + id: groupExecute + width: _executeWidth + letter: 'x' + } + } + + // others + Row { + width: parent.width + height: groupRow.height + Item { + width: parent.width/2 + height: parent.height + Label { + width: parent.width-20 + height: parent.height + text: qsTr("Others") + color: Theme.highlightColor + horizontalAlignment: Text.AlignRight + verticalAlignment: Text.AlignVCenter + } + } + LetterSwitch { + id: othersRead + width: _executeWidth + letter: 'r' + } + LetterSwitch { + id: othersWrite + width: _executeWidth + letter: 'w' + } + LetterSwitch { + id: othersExecute + width: _executeWidth + letter: 'x' + } + } + } + } +} + +