aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/qml/qmlcppcodegen/data/Panel.qml
blob: 7f589d23e8e6defa3c4765685f374cb0e5bacf37 (plain)
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
// Copyright (C) 2017 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only

import QtQuick 2.0

Item {
    property string name
    property var notes

    property real horizontalVelocity: 0

    id: page

    Image {
        fillMode: Image.PreserveAspectCrop
        clip: true
    }

    MouseArea {
        anchors.fill: parent
        onClicked: page.focus = false;
    }

    Item {
        property font font
        property color color
        property int style
        property color styleColor
        objectName: page.name; x: 15; y: 8; height: 40; width: 370
        font.pixelSize: 18; font.bold: true; color: "white"
        style: Text.Outline; styleColor: "black"
    }

    Repeater {
        model: page.notes
        Item {
            id: stickyPage
            required property string noteText

            property int randomX: Math.random() * (page.ListView.view.width-0.5*stickyImage.width) +100
            property int randomY: Math.random() * (page.ListView.view.height-0.5*stickyImage.height) +50

            x: randomX; y: randomY

            rotation: -page.horizontalVelocity / 100
            Behavior on rotation {
                SpringAnimation { spring: 2.0; damping: 0.15 }
            }

            Item {
                id: sticky
                scale: 0.7

                Image {
                    id: stickyImage
                    x: 8 + -width * 0.6 / 2; y: -20
                    source: "note-yellow.png"
                    scale: 0.6; transformOrigin: Item.TopLeft
                }

                Item {
                    property font font
                    property bool readOnly
                    property string text
                    id: myText
                    x: -104; y: 36; width: 215; height: 200
                    font.pixelSize: 24
                    readOnly: false
                    rotation: -8
                    text: stickyPage.noteText
                }

                Item {
                    x: stickyImage.x; y: -20
                    width: stickyImage.width * stickyImage.scale
                    height: stickyImage.height * stickyImage.scale

                    MouseArea {
                        id: mouse
                        anchors.fill: parent
                        drag.target: stickyPage
                        drag.minimumY: 0
                        drag.maximumY: page.height - 80
                        drag.minimumX: 100
                        drag.maximumX: page.width - 140
                        onClicked: myText.forceActiveFocus()
                    }
                }
            }

            Image {
                x: -width / 2; y: -height * 0.5 / 2
                source: "tack.png"
                scale: 0.7; transformOrigin: Item.TopLeft
            }

            states: State {
                name: "pressed"
                when: mouse.pressed
                PropertyChanges { target: sticky; rotation: 8; scale: 1 }
                PropertyChanges { target: page; z: 8 }
            }

            transitions: Transition {
                NumberAnimation { properties: "rotation,scale"; duration: 200 }
            }
        }
    }
}