Warning, /network/angelfish/src/contents/ui/SettingsAdblock.qml is written in an unsupported language. File is not indexed.

0001 // SPDX-FileCopyrightText: 2020 Jonah BrĂ¼chert <jbb@kaidan.im>
0002 //
0003 // SPDX-License-Identifier: GPL-2.0-or-later
0004 
0005 import QtQuick 2.7
0006 import QtQuick.Layouts 1.0
0007 import QtQuick.Controls 2.5 as Controls
0008 import org.kde.kirigami 2.12 as Kirigami
0009 import org.kde.kirigamiaddons.formcard 1.0 as FormCard
0010 
0011 import org.kde.angelfish 1.0
0012 
0013 Kirigami.ScrollablePage {
0014     id: adblockSettings
0015 
0016     leftPadding: 0
0017     rightPadding: 0
0018     topPadding: Kirigami.Units.gridUnit
0019     bottomPadding: Kirigami.Units.gridUnit
0020 
0021     title: i18n("Adblock settings")
0022 
0023     Kirigami.Theme.colorSet: Kirigami.Settings.isMobile ? Kirigami.Theme.View : Kirigami.Theme.Window
0024 
0025     actions: [
0026         Kirigami.Action {
0027             icon.name: "list-add"
0028             onTriggered: addSheet.open()
0029             enabled: AdblockUrlInterceptor.adblockSupported
0030         },
0031         Kirigami.Action {
0032             text: i18n("Update lists")
0033             icon.name: "view-refresh"
0034             enabled: AdblockUrlInterceptor.adblockSupported
0035             onTriggered: {
0036                 adblockSettings.refreshing = true
0037                 filterlistModel.refreshLists()
0038             }
0039         }
0040     ]
0041 
0042     supportsRefreshing: true
0043     onRefreshingChanged: {
0044         if (refreshing) {
0045             filterlistModel.refreshLists();
0046         }
0047     }
0048 
0049     Kirigami.PlaceholderMessage {
0050         anchors.centerIn: parent
0051         visible: !AdblockUrlInterceptor.adblockSupported
0052         width: parent.width - (Kirigami.Units.largeSpacing * 4)
0053 
0054         text: i18n("The adblock functionality isn't included in this build.")
0055     }
0056 
0057     Kirigami.OverlaySheet {
0058         id: addSheet
0059 
0060         header: Kirigami.Heading { text: i18n("Add filterlist") }
0061         contentItem: ColumnLayout {
0062             Layout.preferredWidth: adblockSettings.width
0063             Controls.Label {
0064                 Layout.fillWidth: true
0065                 text: i18n("Name")
0066             }
0067             Controls.TextField {
0068                 id: nameInput
0069                 Layout.fillWidth: true
0070             }
0071 
0072             Controls.Label {
0073                 Layout.fillWidth: true
0074                 text: i18n("Url")
0075             }
0076             Controls.TextField {
0077                 id: urlInput
0078                 Layout.fillWidth: true
0079                 inputMethodHints: Qt.ImhUrlCharactersOnly
0080             }
0081 
0082             Controls.Button {
0083                 Layout.alignment: Qt.AlignRight
0084                 text: i18n("Add")
0085                 onClicked: {
0086                     filterlistModel.addFilterList(nameInput.text, urlInput.text)
0087                     adblockSettings.refreshing = true
0088                     filterlistModel.refreshLists()
0089                     addSheet.close()
0090                 }
0091             }
0092         }
0093     }
0094     ColumnLayout {
0095         spacing: 0
0096 
0097         FormCard.FormHeader {
0098             title: adblockSettings.title
0099         }
0100 
0101         FormCard.FormCard {
0102             id: card
0103             visible: AdblockUrlInterceptor.adblockSupported
0104             Layout.fillWidth: true
0105 
0106             Repeater {
0107                 id: listView
0108                 model: AdblockFilterListsModel {
0109                     id: filterlistModel
0110                     onRefreshFinished: adblockSettings.refreshing = false
0111                 }
0112 
0113                 delegate: FormCard.AbstractFormDelegate {
0114                     required property string displayName
0115                     required property url url
0116                     required property int index
0117 
0118                     implicitHeight: layout.implicitHeight
0119                     implicitWidth: card.implicitWidth
0120 
0121                     RowLayout {
0122                         id: layout
0123                         anchors.fill: parent
0124                         spacing: Kirigami.Units.largeSpacing
0125 
0126                         ColumnLayout {
0127                             Layout.leftMargin: 20
0128                             Layout.margins: 10
0129 
0130                             Controls.Label {
0131                                 Layout.fillWidth: true
0132                                 text: displayName
0133                                 elide: Text.ElideRight
0134                             }
0135                             Controls.Label {
0136                                 Layout.fillWidth: true
0137                                 text: url
0138                                 elide: Text.ElideRight
0139                                 color: Kirigami.Theme.disabledTextColor
0140                             }
0141                         }
0142 
0143                         Controls.ToolButton {
0144                             Layout.margins: 10
0145                             icon.name: "list-remove"
0146                             display: Controls.AbstractButton.IconOnly
0147                             onClicked:  filterlistModel.removeFilterList(index)
0148                             text: i18n("Remove this filter list")
0149 
0150                         }
0151                     }
0152                 }
0153             }
0154 
0155             FormCard.FormDelegateSeparator { above: addSource}
0156 
0157             FormCard.FormButtonDelegate {
0158                 id: addSource
0159                 text: i18n("add Filterlist")
0160                 leading: Kirigami.Icon{
0161                     source: "list-add"
0162                     implicitHeight: Kirigami.Units.gridUnit
0163                 }
0164                 onClicked: addSheet.open()
0165             }
0166         }
0167     }
0168 }