~nskaggs/ubuntu-calendar-app/test-print-tree

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
110
111
112
import QtQuick 2.0
import Ubuntu.Components 0.1

import "dateExt.js" as DateExt

Item{
    id: root
    objectName: "DayView"

    property var currentDay: new Date()

    Column {
        id: column
        anchors.top: parent.top
        anchors.topMargin: units.gu(1.5)
        width: parent.width; height: parent.height
        spacing: units.gu(1)

        anchors.fill: parent

        ViewHeader{
            id: viewHeader
            date: currentDay
        }

        TimeLineHeader{
            id: dayHeader
            type: typeDay
            date: currentDay
            preferredHighlightBegin: 0.5
            preferredHighlightEnd: 0.5
            path: Path {
                startX: -(dayHeader.width/7); startY: dayHeader.height/2
                PathLine { x: (dayHeader.width/7) * 8  ; relativeY: 0;  }
            }
        }

        PathViewBase{
            id: dayViewPath
            objectName: "DayViewPathBase"

            property var startDay: currentDay
            //This is used to scroll all view together when currentItem scrolls
            property var childContentY;

            preferredHighlightBegin: 0.5
            preferredHighlightEnd: 0.5

            width: parent.width
            height: column.height - dayViewPath.y

            path: Path {
                startX: -(dayViewPath.width/1.75); startY: dayViewPath.height/2
                PathLine { x: (dayViewPath.width/7) * 11  ; relativeY: 0;  }
            }

            onNextItemHighlighted: {
                //next day
                currentDay = currentDay.addDays(1);
                dayHeader.incrementCurrentIndex()
            }

            onPreviousItemHighlighted: {
                //previous day
                currentDay = currentDay.addDays(-1);
                dayHeader.decrementCurrentIndex()
            }

            delegate: TimeLineBaseComponent {
                id: timeLineView
                objectName: "DayComponent-"+index

                type: typeDay

                width: parent.width/7 * 5
                height: parent.height
                z: index == dayViewPath.currentIndex ? 2 : 1

                //get contentY value from PathView, if its not current Item
                Binding{
                    target: timeLineView
                    property: "contentY"
                    value: dayViewPath.childContentY;
                    when: !timeLineView.PathView.isCurrentItem
                }

                //set PathView's contentY property, if its current item
                Binding{
                    target: dayViewPath
                    property: "childContentY"
                    value: contentY
                    when: timeLineView.PathView.isCurrentItem
                }

                contentInteractive: timeLineView.PathView.isCurrentItem

                startDay: getStartDay()

                function getStartDay() {
                    switch( dayViewPath.indexType(index)) {
                    case 0:
                        return dayViewPath.startDay;
                    case -1:
                        return dayViewPath.startDay.addDays(-1);
                    case 1:
                        return dayViewPath.startDay.addDays(1);
                    }
                }
            }
        }
    }
}