1
0
Fork 0
mirror of https://git.jami.net/savoirfairelinux/jami-client-qt.git synced 2025-08-10 09:45:40 +02:00
jami-client-qt/src/commoncomponents/JamiScrollBar.qml
Amin Bandali db0fd56763 misc: update (and fix) copyright years to 2022
Change-Id: I8eb66c1c3cddb3bf73b6784a9876dd9dc9c12481
2022-01-06 11:24:13 -05:00

84 lines
2.6 KiB
QML

/*
* Copyright (C) 2020-2022 Savoir-faire Linux Inc.
* Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
*
* 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 3 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 <https://www.gnu.org/licenses/>.
*/
import QtQuick
import QtQuick.Controls
import net.jami.Constants 1.1
// Assumed to be attached to Flickable
ScrollBar {
id: root
property bool attachedFlickableMoving: false
property alias handleColor: scrollBarRect.color
active: {
if (root.orientation === Qt.Horizontal)
return visible
else
return hovered || pressed || attachedFlickableMoving
}
hoverEnabled: true
orientation: Qt.Vertical
topPadding: root.orientation === Qt.Vertical ? 2 : 0
leftPadding: root.orientation === Qt.Horizontal ? 2 : 0
bottomPadding: 2
rightPadding: 2
contentItem: Rectangle {
id: scrollBarRect
implicitHeight: JamiTheme.scrollBarHandleSize
implicitWidth: JamiTheme.scrollBarHandleSize
radius: width / 2
color: pressed ? Qt.darker(JamiTheme.scrollBarHandleColor, 2.0) :
JamiTheme.scrollBarHandleColor
opacity: 0
states: State {
name: "active"
when: root.policy === ScrollBar.AlwaysOn ||
(root.active && root.size < 1.0)
PropertyChanges {
target: root.contentItem
opacity: 1
}
}
transitions: Transition {
from: "active"
SequentialAnimation {
PauseAnimation { duration: JamiTheme.longFadeDuration }
NumberAnimation { target: root.contentItem
duration: JamiTheme.shortFadeDuration
property: "opacity"
to: 0.0
}
}
}
}
background: Rectangle {
implicitHeight: scrollBarRect.implicitHeight
implicitWidth: scrollBarRect.implicitWidth
color: JamiTheme.transparentColor
radius: width / 2
}
}