/******************************************************************** Copyright (C) 2012 Nuno Pinheiro This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . *********************************************************************/ import QtQuick 1.0 Item { property variant list property int itemHeight: 1 id: verticalScroolbar width:19 height: parent.height-1 anchors.right: parent.right anchors.rightMargin: 2 clip:true Item { id: scroolerArea width: parent.width height: parent.height-uparrow.height*2 y:uparrow.height opacity: scroolerAreaOver.containsMouse? 1:list.moving?1:dragarea.containsMouse? 1:dragarea.pressed?1: 0.3 Behavior on opacity { NumberAnimation { duration: 600 } } MouseArea { id: scroolerAreaOver anchors.bottomMargin:-uparrow.height anchors.topMargin: -uparrow.height anchors.fill: parent hoverEnabled: true } BorderImage { id: scroller source: "images/scrool.png" width:parent.width height:Math.max (14,parent.height*list.height/list.contentHeight) y:parent.height*list.contentY/list.contentHeight border.left: 7; border.top: 7 border.right: 7; border.bottom: 8 opacity: 1 } BorderImage { id: scrolleractive source: "images/scroolactive.png" width:parent.width height:Math.max (14,parent.height*list.height/list.contentHeight) y:parent.height*list.contentY/list.contentHeight border.left: 7; border.top: 7 border.right: 7; border.bottom: 8 opacity:scroolerAreaOver.containsMouse? 1:dragarea.containsMouse?1:dragarea.pressed?1:0.01 Behavior on opacity { NumberAnimation { duration: 400 } } MouseArea{ id:dragarea anchors.fill:parent hoverEnabled: true drag.target: scrolleractive drag.axis: Drag.YAxis drag.minimumY: 0 drag.maximumY: scroolerArea.height-scrolleractive.height onPositionChanged: list.contentY=scrolleractive.y*list.contentHeight/(scroolerArea.height) } } } Item{ id:uparrow width:parent.width height: parent.width-4 Image{ anchors.horizontalCenter: parent.horizontalCenter anchors.verticalCenter: parent.verticalCenter source:"images/arrowup.png" opacity:uparrowOver.containsMouse? 0:1 Behavior on opacity { NumberAnimation { duration: 300 } } } Image{ anchors.horizontalCenter: parent.horizontalCenter anchors.verticalCenter: parent.verticalCenter source:"images/arrowupactive.png" opacity: uparrowOver.containsMouse? 1:0 Behavior on opacity { NumberAnimation { duration: 300 } } } MouseArea { id: uparrowOver anchors.fill: parent hoverEnabled: true onClicked: list.contentY -= itemHeight } } Item{ id:downarrow width:parent.width height: parent.width-4 anchors.bottom: parent.bottom anchors.bottomMargin: 0 Image{ rotation: 180 anchors.horizontalCenter: parent.horizontalCenter anchors.verticalCenter: parent.verticalCenter source:"images/arrowup.png" opacity:downarrowOver.containsMouse? 0:1 Behavior on opacity { NumberAnimation { duration: 300 } } } Image{ rotation: 180 anchors.horizontalCenter: parent.horizontalCenter anchors.verticalCenter: parent.verticalCenter source:"images/arrowupactive.png" opacity: downarrowOver.containsMouse? 1:0 Behavior on opacity { NumberAnimation { duration: 300 } } } MouseArea { id: downarrowOver anchors.fill: parent hoverEnabled: true onClicked: list.contentY += itemHeight } } }