Warning, /multimedia/kasts/src/qml/ConnectionCheckAction.qml is written in an unsupported language. File is not indexed.

0001 /**
0002  * SPDX-FileCopyrightText: 2021 Bart De Vries <bart@mogwai.be>
0003  *
0004  * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0005  */
0006 
0007 import QtQuick
0008 import QtQuick.Controls as Controls
0009 import QtQuick.Layouts
0010 
0011 import org.kde.kirigami as Kirigami
0012 import org.kde.kirigamiaddons.delegates as Delegates
0013 
0014 import org.kde.kasts
0015 import org.kde.kasts.settings
0016 
0017 Kirigami.Dialog {
0018     id: overlay
0019     parent: applicationWindow().overlay
0020     closePolicy: Kirigami.Dialog.CloseOnEscape | Kirigami.Dialog.CloseOnPressOutside
0021 
0022     property string headingText: i18nc("@info:status", "Podcast updates are currently not allowed on metered connections")
0023     property bool condition: NetworkConnectionManager.feedUpdatesAllowed
0024 
0025     // Function to be overloaded where this is instantiated with another purpose
0026     // than refreshing all feeds
0027     function action() {
0028         Fetcher.fetchAll();
0029     }
0030 
0031     // This function will be executed when "Don't allow" is chosen; can be overloaded
0032     function abortAction() { }
0033 
0034     // This function will be executed when the "Allow once" action is chosen; can be overloaded
0035     function allowOnceAction() {
0036         action()
0037     }
0038 
0039     // This function will be executed when the "Always allow" action is chosed; can be overloaded
0040     function alwaysAllowAction() {
0041         SettingsManager.allowMeteredFeedUpdates = true;
0042         SettingsManager.save();
0043         action()
0044     }
0045 
0046     // this is the function that should be called if the action should be
0047     // triggered conditionally (on the basis that the condition is passed)
0048     function run() {
0049         if (condition) {
0050             action();
0051         } else {
0052             overlay.open();
0053         }
0054     }
0055 
0056     title: NetworkConnectionManager.networkReachable ? i18nc("@title:window", "Select Option") : i18nc("@title:window", "Network not reachable")
0057 
0058     ColumnLayout {
0059         spacing: 0
0060 
0061         Controls.Label {
0062             Layout.topMargin: Kirigami.Units.largeSpacing
0063             Layout.bottomMargin: Kirigami.Units.largeSpacing
0064             Layout.leftMargin: Kirigami.Units.largeSpacing + Kirigami.Units.smallSpacing
0065             Layout.rightMargin: Kirigami.Units.largeSpacing + Kirigami.Units.smallSpacing
0066             Layout.fillWidth: true
0067             text: NetworkConnectionManager.networkReachable ? headingText : i18nc("@info:status", "It seems the network cannot be reached. If this is incorrect, this check can be disabled through: Settings > Network.")
0068             wrapMode: Text.Wrap
0069             color: NetworkConnectionManager.networkReachable ?Kirigami.Theme.disabledTextColor : Kirigami.Theme.textColor
0070         }
0071 
0072         Kirigami.Separator {
0073             visible: NetworkConnectionManager.networkReachable
0074             Layout.fillWidth: true
0075             opacity: 0.5
0076         }
0077 
0078         Delegates.RoundedItemDelegate {
0079             visible: NetworkConnectionManager.networkReachable
0080             Layout.fillWidth: true
0081             Layout.preferredHeight: Kirigami.Units.gridUnit * 2
0082             leftPadding: Kirigami.Units.largeSpacing + Kirigami.Units.smallSpacing
0083             rightPadding: Kirigami.Units.largeSpacing + Kirigami.Units.smallSpacing
0084 
0085             text: i18n("Don't Allow")
0086             onClicked: {
0087                 abortAction();
0088                 close();
0089             }
0090         }
0091 
0092         Delegates.RoundedItemDelegate {
0093             visible: NetworkConnectionManager.networkReachable
0094             Layout.fillWidth: true
0095             Layout.preferredHeight: Kirigami.Units.gridUnit * 2
0096             leftPadding: Kirigami.Units.largeSpacing + Kirigami.Units.smallSpacing
0097             rightPadding: Kirigami.Units.largeSpacing + Kirigami.Units.smallSpacing
0098 
0099             text: i18n("Allow Once")
0100             onClicked: {
0101                 allowOnceAction();
0102                 close();
0103             }
0104         }
0105 
0106         Delegates.RoundedItemDelegate {
0107             visible: NetworkConnectionManager.networkReachable
0108             Layout.fillWidth: true
0109             Layout.preferredHeight: Kirigami.Units.gridUnit * 2
0110             leftPadding: Kirigami.Units.largeSpacing + Kirigami.Units.smallSpacing
0111             rightPadding: Kirigami.Units.largeSpacing + Kirigami.Units.smallSpacing
0112 
0113             text: i18n("Always Allow")
0114             onClicked: {
0115                 alwaysAllowAction();
0116                 close();
0117             }
0118         }
0119     }
0120 }