Warning, /network/angelfish/lib/contents/ui/ListWebView.qml is written in an unsupported language. File is not indexed.
0001 // SPDX-FileCopyrightText: 2014-2015 Sebastian Kügler <sebas@kde.org> 0002 // 0003 // SPDX-License-Identifier: GPL-2.0-or-later 0004 0005 import QtQuick 2.15 0006 import QtQuick.Controls 2.15 as QQC2 0007 import QtQml.Models 2.15 0008 import QtWebEngine 1.10 0009 0010 import org.kde.kirigami 2.19 as Kirigami 0011 0012 import org.kde.angelfish 1.0 0013 0014 Repeater { 0015 id: tabs 0016 0017 property bool activeTabs: false 0018 property bool privateTabsMode: false 0019 0020 property alias currentIndex: tabsModel.currentTab 0021 property WebView currentItem 0022 0023 property alias tabsModel: tabsModel 0024 0025 property WebEngineProfile profile: AngelfishWebProfile { 0026 httpUserAgent: tabs.currentItem.userAgent.userAgent 0027 offTheRecord: tabs.privateTabsMode 0028 storageName: tabs.privateTabsMode ? "Private" : Settings.profile 0029 0030 questionLoader: rootPage.questionLoader 0031 urlInterceptor: typeof AdblockUrlInterceptor !== "undefined" && AdblockUrlInterceptor 0032 } 0033 0034 model: TabsModel { 0035 id: tabsModel 0036 isMobileDefault: Kirigami.Settings.isMobile 0037 privateMode: privateTabsMode 0038 } 0039 0040 delegate: QQC2.SplitView { 0041 id: tabDelegate 0042 0043 required property bool isMobile 0044 required property url pageurl 0045 required property bool isDeveloperToolsOpen 0046 0047 required property int index 0048 0049 anchors.fill: parent 0050 orientation: width < height ? Qt.Vertical : Qt.Horizontal 0051 0052 property bool readyForSnapshot: false 0053 property bool showView: index === tabs.currentIndex 0054 property bool isVisible: (showView || readyForSnapshot || pageWebView.loadingActive) && tabs.activeTabs 0055 property alias title: pageWebView.title 0056 property alias icon: pageWebView.icon 0057 property alias readerMode: pageWebView.readerMode 0058 property alias readerTitle: pageWebView.readerTitle 0059 0060 onShowViewChanged: { 0061 if (showView) { 0062 tabs.currentItem = pageWebView 0063 } 0064 } 0065 x: showView && tabs.activeTabs ? 0 : -width 0066 z: showView && tabs.activeTabs ? 0 : -1 0067 visible: isVisible 0068 0069 Item { 0070 QQC2.SplitView.minimumWidth: 25 0071 QQC2.SplitView.minimumHeight: 25 0072 QQC2.SplitView.fillWidth: true 0073 QQC2.SplitView.fillHeight: true 0074 0075 WebView { 0076 id: pageWebView 0077 anchors.fill: parent 0078 visible: isVisible 0079 0080 privateMode: tabs.privateTabsMode 0081 userAgent.isMobile: tabDelegate.isMobile 0082 width: tabs.width 0083 0084 profile: tabs.profile 0085 0086 Component.onCompleted: { 0087 url = tabDelegate.pageurl 0088 } 0089 0090 onRequestedUrlChanged: tabsModel.setUrl(index, requestedUrl) 0091 0092 Connections { 0093 target: pageWebView.userAgent 0094 function onUserAgentChanged() { 0095 tabsModel.setIsMobile(index, pageWebView.userAgent.isMobile); 0096 } 0097 } 0098 } 0099 } 0100 0101 Item { 0102 QQC2.SplitView.minimumWidth: 75 0103 QQC2.SplitView.minimumHeight: 27 // height of the developer tools menu 0104 QQC2.SplitView.preferredWidth: 500 0105 QQC2.SplitView.preferredHeight: 200 0106 visible: tabDelegate.isDeveloperToolsOpen 0107 0108 // Prevent other tab content from showing through while loading 0109 Rectangle { anchors.fill: parent; color: Kirigami.Theme.backgroundColor } 0110 0111 Loader { 0112 id: developerToolsLoader 0113 anchors.fill: parent 0114 active: showView || viewed 0115 0116 property bool viewed: false 0117 0118 onLoaded: { 0119 viewed = true 0120 item.inspectedView = pageWebView; 0121 } 0122 0123 Connections { 0124 target: developerToolsLoader.item 0125 0126 function onWindowCloseRequested() { 0127 tabsModel.toggleDeveloperTools(tabDelegate.index) 0128 } 0129 } 0130 0131 Connections { 0132 target: tabsModel 0133 function onDataChanged(left, right, roles) { 0134 if (tabsModel.isDeveloperToolsOpen(tabDelegate.index)) { 0135 developerToolsLoader.setSource("WebDeveloperTools.qml"); 0136 } else { 0137 developerToolsLoader.setSource("") 0138 } 0139 } 0140 } 0141 } 0142 } 0143 } 0144 }