import QtQuick 2.0 import Sailfish.Silica 1.0 import harbour.pedalo.graph 1.0 import "../components" Page { id: statsPage // The effective value will be restricted by ApplicationWindow.allowedOrientations allowedOrientations: Orientation.All property int showingindex: 0 SilicaFlickable { id: statsView anchors.fill: parent contentHeight: statsColumn.implicitHeight + headerItem.height VerticalScrollDecorator {} PageHeader { id: headerItem title: qsTr("Stats") } Column { id: statsColumn spacing: Theme.paddingLarge width: isPortrait ? parent.width : parent.width * 0.5 y: headerItem.height InfoRow { label: qsTr("Journeys:") value: currentStatus.getJourneyCount() midlineRatio: 0.7 midlineMin: Theme.fontSizeSmall * 10 midlineMax: Theme.fontSizeSmall * 20 pixelSize: Theme.fontSizeMedium labelTextBold: true horizontalAlignment: Text.AlignRight } InfoRow { label: qsTr("Time spent cycling:") value: currentStatus.getFormattedTime(currentStatus.getTimeSpentCycling(), 0, 5) midlineRatio: 0.5 midlineMin: Theme.fontSizeSmall * 10 midlineMax: Theme.fontSizeSmall * 20 pixelSize: Theme.fontSizeMedium labelTextBold: true horizontalAlignment: Text.AlignRight } InfoRow { label: qsTr("Average journey duration:") value: currentStatus.getFormattedTime(currentStatus.getAverageDuration(), 1, 5) midlineRatio: 0.6 midlineMin: Theme.fontSizeSmall * 10 midlineMax: Theme.fontSizeSmall * 20 pixelSize: Theme.fontSizeMedium labelTextBold: true horizontalAlignment: Text.AlignRight } InfoRow { label: qsTr("Speed percentile:") value: Math.round(100.0 - currentStatus.getSpeedPercentile() * 100) + "%" midlineRatio: 0.7 midlineMin: Theme.fontSizeSmall * 10 midlineMax: Theme.fontSizeSmall * 20 pixelSize: Theme.fontSizeMedium labelTextBold: true horizontalAlignment: Text.AlignRight } } SlideshowView { id: graphsView width: isPortrait ? parent.width : parent.width * 0.5 height: (isPortrait ? statsPage.height / 2.0 : statsPage.height) - Theme.paddingLarge itemWidth: width clip: true anchors.left: isPortrait ? statsColumn.left : statsColumn.right anchors.leftMargin: 0 y: (isPortrait ? (statsPage.height / 2.0) : statsColumn.y) onModelChanged: { console.log("Model changed"); model.updateAll(); } model: statsmodel delegate: Item { id: delegateItem width: graphsView.itemWidth height: graphsView.height SectionHeader { id: sectionHeaderItem text: title } Graph { id: graph width: parent.width - Theme.horizontalPageMargin anchors.top: sectionHeaderItem.bottom height: (isPortrait ? (statsPage.height / 2.0) - Theme.paddingLarge : statsPage.height - Theme.paddingLarge - headerItem.height) - sectionHeaderItem.height anchors.left: parent.left bardata: barvalues //linedata: barvalues labelsx: labels //labelsy: ["0%", "10%", "20%", "30%", "40%", "50%", "60%", "70%", "80%", "90%", "100%"] unitsy: units primary: Theme.primaryColor secondary: Theme.highlightColor highlight: Theme.secondaryColor miny: minval maxy: maxval stepy: step gap: 0.1 fontsize: Theme.fontSizeExtraSmall animate: (graphsView.currentItem === delegateItem) ? 1.0 : 0.0 Behavior on animate { NumberAnimation { easing.type: Easing.OutExpo duration: 2000 } } } } } } }