summary refs log tree commit diff
path: root/resources/qml/components/FlatButton.qml
blob: 2c9ea06115de46c57fd647af9c1f3d02d705dd45 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
// SPDX-FileCopyrightText: 2021 Nheko Contributors
// SPDX-FileCopyrightText: 2022 Nheko Contributors
//
// SPDX-License-Identifier: GPL-3.0-or-later

import QtGraphicalEffects 1.12
import QtQuick 2.9
import QtQuick.Controls 2.5
import QtQuick.Layouts 1.2
import im.nheko 1.0

// FIXME(Nico): Don't use hardcoded colors.
Button {
    id: control

    implicitHeight: Math.ceil(control.contentItem.implicitHeight * 1.70)
    implicitWidth: Math.ceil(control.contentItem.implicitWidth + control.contentItem.implicitHeight)
    hoverEnabled: true

    property string iconImage: ""

    DropShadow {
        anchors.fill: control.background
        horizontalOffset: 3
        verticalOffset: 3
        radius: 8
        samples: 17
        cached: true
        color: "#80000000"
        source: control.background
    }

    contentItem: RowLayout {
        spacing: 0
        anchors.centerIn: parent
        Image {
            Layout.leftMargin: Nheko.paddingMedium
            Layout.alignment: Qt.AlignVCenter | Qt.AlignHCenter
            Layout.preferredHeight: fontMetrics.font.pixelSize * 1.5
            Layout.preferredWidth:  fontMetrics.font.pixelSize * 1.5
            visible: !!iconImage
            source: iconImage
        }

        Text {
            Layout.alignment: Qt.AlignHCenter
            text: control.text
            //font: control.font
            font.capitalization: Font.AllUppercase
            font.pointSize: Math.ceil(fontMetrics.font.pointSize * 1.5)
            //font.capitalization: Font.AllUppercase
            color: Nheko.colors.light
            horizontalAlignment: Text.AlignHCenter
            verticalAlignment: Text.AlignVCenter
            elide: Text.ElideRight
        }
    }

    background: Rectangle {
        //height: control.contentItem.implicitHeight * 2
        //width: control.contentItem.implicitWidth * 2
        radius: height / 8
        color: Qt.lighter(Nheko.colors.dark, control.down ? 1.4 : (control.hovered ? 1.2 : 1))
    }

}