Warning, /plasma/aura-browser/app/qml/FeatureRequest.qml is written in an unsupported language. File is not indexed.
0001 /*
0002 SPDX-FileCopyrightText: 2022 Aditya Mehra <aix.m@outlook.com>
0003
0004 SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006
0007 import QtQuick 2.12
0008 import QtQuick.Controls 2.12
0009 import QtWebEngine 1.7
0010 import QtWebChannel 1.0
0011 import QtQuick.Layouts 1.12
0012 import org.kde.kirigami as Kirigami
0013
0014 Item {
0015 property var requestedFeature;
0016 property url securityOrigin;
0017
0018 width: parent.width
0019 height: parent.height
0020
0021 onRequestedFeatureChanged: {
0022 message.text = securityOrigin + " has requested access to your "
0023 + message.textForFeature(requestedFeature);
0024 }
0025
0026 RowLayout {
0027 anchors.fill: parent
0028
0029 Label {
0030 id: message
0031 Layout.fillWidth: true
0032 Layout.leftMargin: Kirigami.Units.largeSpacing
0033 color: Kirigami.Theme.textColor
0034
0035 function textForFeature(feature) {
0036 if (feature === WebEngineView.MediaAudioCapture)
0037 return "microphone"
0038 if (feature === WebEngineView.MediaVideoCapture)
0039 return "camera"
0040 if (feature === WebEngineView.MediaAudioVideoCapture)
0041 return "camera and microphone"
0042 if (feature === WebEngineView.Geolocation)
0043 return "location"
0044 }
0045 }
0046
0047 Button {
0048 id: acceptButton
0049 text: i18n("Accept")
0050 palette.buttonText: Kirigami.Theme.textColor
0051 Layout.alignment: Qt.AlignRight
0052 Layout.preferredWidth: Kirigami.Units.iconSizes.large
0053
0054 background: Rectangle {
0055 color: acceptButton.activeFocus ? Kirigami.Theme.highlightColor : Qt.lighter(Kirigami.Theme.backgroundColor, 1.2)
0056 border.color: Kirigami.Theme.disabledTextColor
0057 radius: 20
0058 }
0059
0060 onClicked: (mouse)=> {
0061 webView.grantFeaturePermission(securityOrigin,
0062 requestedFeature, true);
0063 interactionBar.isRequested = false;
0064 }
0065 }
0066
0067 Button {
0068 id: denyButton
0069 text: i18n("Deny")
0070 Layout.alignment: Qt.AlignRight
0071 Layout.preferredWidth: Kirigami.Units.iconSizes.large
0072 palette.buttonText: Kirigami.Theme.textColor
0073
0074 background: Rectangle {
0075 color: denyButton.activeFocus ? Kirigami.Theme.highlightColor : Qt.lighter(Kirigami.Theme.backgroundColor, 1.2)
0076 border.color: Kirigami.Theme.disabledTextColor
0077 radius: 20
0078 }
0079
0080 onClicked: (mouse)=> {
0081 webView.grantFeaturePermission(securityOrigin,
0082 requestedFeature, false);
0083 interactionBar.isRequested = false
0084 }
0085 }
0086
0087 Button {
0088 id: closeButton
0089 Layout.alignment: Qt.AlignRight
0090 Layout.preferredWidth: Kirigami.Units.iconSizes.large - (Kirigami.Units.largeSpacing + Kirigami.Units.smallSpacing)
0091 Layout.preferredHeight: Kirigami.Units.iconSizes.large - (Kirigami.Units.largeSpacing + Kirigami.Units.smallSpacing)
0092 Layout.leftMargin: Kirigami.Units.largeSpacing
0093 palette.buttonText: Kirigami.Theme.textColor
0094
0095 background: Rectangle {
0096 color: denyButton.activeFocus ? Kirigami.Theme.highlightColor : Qt.lighter(Kirigami.Theme.backgroundColor, 1.2)
0097 border.color: Kirigami.Theme.disabledTextColor
0098 radius: 200
0099 }
0100
0101 Kirigami.Icon {
0102 anchors.centerIn: parent
0103 width: Kirigami.Units.iconSizes.medium
0104 height: Kirigami.Units.iconSizes.medium
0105 source: "window-close"
0106 }
0107
0108 onClicked: (mouse)=> {
0109 interactionBar.isRequested = false
0110 }
0111 }
0112 }
0113 }