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 }