Skip to content
Snippets Groups Projects
VPNButtonBase.qml 1.5 KiB
Newer Older
  • Learn to ignore specific revisions
  • Kali Kaneko's avatar
    Kali Kaneko committed
    
    
    /* This Source Code Form is subject to the terms of the Mozilla Public
     * License, v. 2.0. If a copy of the MPL was not distributed with this
     * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
    import QtQuick 2.0
    import QtQuick.Controls 2.5
    import QtQuick.Layouts 1.14
    import "../themes/themes.js" as Theme
    
    RoundButton {
        id: root
    
        property var visualStateItem: root
        property var uiState: Theme.uiState
        property var loaderVisible: false
        property var handleKeyClick: function () {
            clicked()
        }
    
        focusPolicy: Qt.StrongFocus
        Keys.onPressed: {
            if (loaderVisible) {
                return
            }
    
            if (event.key === Qt.Key_Return || event.key === Qt.Key_Space)
                visualStateItem.state = uiState.statePressed
        }
        Keys.onReleased: {
            if (loaderVisible) {
                return
            }
            if (event.key === Qt.Key_Return || event.key === Qt.Key_Space) {
                visualStateItem.state = uiState.stateDefault
            }
            if (event.key === Qt.Key_Return)
                handleKeyClick()
        }
    
        Accessible.role: Accessible.Button
        Accessible.onPressAction: handleKeyClick()
        Accessible.focusable: true
    
        onActiveFocusChanged: {
            if (!activeFocus)
                return visualStateItem.state = uiState.stateDefault
    
            if (vpnFlickable && typeof (vpnFlickable.ensureVisible) !== "undefined")
                return vpnFlickable.ensureVisible(visualStateItem)
        }
    
        background: Rectangle {
            color: "transparent"
        }
    }