Warning, /multimedia/plasmatube/src/ui/components/SubscriptionButton.qml is written in an unsupported language. File is not indexed.

0001 // SPDX-FileCopyrightText: 2019 Linus Jahn <lnj@kaidan.im>
0002 // SPDX-FileCopyrightText: 2022 Devin Lin <devin@kde.org>
0003 // SPDX-License-Identifier: GPL-3.0-or-later
0004 
0005 import QtQuick
0006 import QtQuick.Layouts
0007 import QtQuick.Controls as QQC2
0008 
0009 import org.kde.kirigami as Kirigami
0010 
0011 import org.kde.plasmatube
0012 
0013 QQC2.Button {
0014     id: subscribeButton
0015     Layout.topMargin: Kirigami.Units.smallSpacing
0016 
0017     property alias channelId: subscriptionController.channelId
0018     property string subCountText
0019 
0020     SubscriptionController {
0021         id: subscriptionController
0022     }
0023 
0024     background: Rectangle {
0025         color: subscriptionController.isSubscribed ? "grey" : "red"
0026         radius: Kirigami.Units.smallSpacing
0027 
0028         Rectangle {
0029             anchors.fill: parent
0030             radius: Kirigami.Units.smallSpacing
0031             color: "black"
0032             opacity: subscribeButton.pressed ? 0.6 : subscribeButton.hovered ? 0.3 : 0
0033         }
0034     }
0035 
0036     leftPadding: Kirigami.Units.largeSpacing
0037     rightPadding: Kirigami.Units.largeSpacing
0038     bottomPadding: Kirigami.Units.largeSpacing
0039     topPadding: Kirigami.Units.largeSpacing
0040 
0041     contentItem: RowLayout {
0042         id: subscribeButtonContent
0043         spacing: 0
0044 
0045         QQC2.BusyIndicator {
0046             visible: subscriptionController.isLoading
0047             Layout.preferredHeight: Kirigami.Units.gridUnit * 2
0048             Layout.preferredWidth: Kirigami.Units.gridUnit * 2
0049         }
0050 
0051         QQC2.Label {
0052             color: "white"
0053             text: {
0054                 if (subscriptionController.isSubscribed) {
0055                     return i18n("Unsubscribe (%1)", subscribeButton.subCountText)
0056                 }
0057                 return i18n("Subscribe (%1)", subscribeButton.subCountText)
0058             }
0059         }
0060     }
0061 
0062     onClicked: {
0063         if (subscriptionController.canToggleSubscription()) {
0064             subscriptionController.toggleSubscription()
0065         } else if (!PlasmaTube.isLoggedIn) {
0066             root.requestClosePlayer();
0067             showPassiveNotification(i18n("Please log in to subscribe to channels."));
0068             pageStack.layers.push(Qt.createComponent("org.kde.plasmatube", "LoginPage"));
0069         }
0070     }
0071 }