parent
4588ac12a0
commit
e328fa5502
@ -1,87 +1,92 @@
|
||||
/*
|
||||
* Copyright 2016 Marco Martin <mart@kde.org>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Library General Public License as
|
||||
* published by the Free Software Foundation; either version 2, 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 Library General Public License for more details
|
||||
*
|
||||
* You should have received a copy of the GNU Library General Public
|
||||
* License along with this program; if not, write to the
|
||||
* Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
* Copyright (C) 2011 by Daker Fernandes Pinheiro <dakerfp@gmail.com>
|
||||
* Copyright (C) 2014 by Marco Martin <mart@kde.org>
|
||||
* Copyright (C) 2018 by Michail Vourlakos <mvourlakos@gmail.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Library General Public License as
|
||||
* published by the Free Software Foundation; either version 2, 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 Library General Public
|
||||
* License along with this program; if not, write to the
|
||||
* Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 2.010-1301, USA.
|
||||
*/
|
||||
|
||||
import QtQuick 2.7
|
||||
import QtQuick.Templates 2.0 as T
|
||||
import org.kde.plasma.core 2.0 as PlasmaCore
|
||||
import "private" as Private
|
||||
import QtQuick.Controls 1.6 as QtControls
|
||||
import QtQuick.Controls.Styles.Plasma 2.0 as Styles
|
||||
|
||||
T.Slider {
|
||||
id: control
|
||||
|
||||
implicitWidth: Math.max(background ? background.implicitWidth : 0,
|
||||
Math.max(handle ? handle.implicitWidth : 0,
|
||||
handle ? handle.implicitWidth : 0) + leftPadding + rightPadding)
|
||||
implicitHeight: Math.max(background ? background.implicitHeight : 0,
|
||||
Math.max(handle ? handle.implicitHeight : 0,
|
||||
handle ? handle.implicitHeight : 0) + topPadding + bottomPadding)
|
||||
/**
|
||||
* An interactive slider component with Plasma look and feel.
|
||||
*
|
||||
* @inherit QtQuick.Controls.Slider
|
||||
*/
|
||||
QtControls.Slider {
|
||||
id: slider
|
||||
|
||||
padding: units.gridUnit
|
||||
snapMode: T.Slider.SnapOnRelease
|
||||
/**
|
||||
* This property holds if a value indicator element will be shown while is
|
||||
* dragged or not.
|
||||
*
|
||||
* @warning The value indicator is not implemented in the Plasma Slider.
|
||||
*
|
||||
* The default value is false.
|
||||
*/
|
||||
property bool valueIndicatorVisible: false
|
||||
|
||||
PlasmaCore.Svg {
|
||||
id: grooveSvg
|
||||
imagePath: "widgets/slider"
|
||||
colorGroup: PlasmaCore.ColorScope.colorGroup
|
||||
/**
|
||||
* This property holds the text being displayed in the value indicator.
|
||||
*
|
||||
* @warning The value indicator is not implemented in the Plasma Slider.
|
||||
*/
|
||||
property string valueIndicatorText: value
|
||||
|
||||
}
|
||||
handle: Item {
|
||||
property bool horizontal: control.orientation === Qt.Horizontal
|
||||
x: control.leftPadding + (horizontal ? control.visualPosition * (control.availableWidth - width) : (control.availableWidth - width) / 2)
|
||||
y: control.topPadding + (horizontal ? (control.availableHeight - height) / 2 : control.visualPosition * (control.availableHeight - height))
|
||||
/**
|
||||
* type:bool
|
||||
* This property holds if the slider visualizations has an inverted
|
||||
* direction.
|
||||
*
|
||||
* @warning: deprecated and not supported, here for retrocompatibility
|
||||
*/
|
||||
property bool inverted: false
|
||||
|
||||
width: firstHandle.naturalSize.width
|
||||
height: firstHandle.naturalSize.height
|
||||
Private.RoundShadow {
|
||||
anchors.fill: parent
|
||||
imagePath: "widgets/slider"
|
||||
focusElement: parent.horizontal ? "horizontal-slider-focus" : "vertical-slider-focus"
|
||||
hoverElement: parent.horizontal ? "horizontal-slider-hover" : "vertical-slider-hover"
|
||||
shadowElement: parent.horizontal ? "horizontal-slider-shadow" : "vertical-slider-shadow"
|
||||
state: control.activeFocus ? "focus" : (control.hovered ? "hover" : "shadow")
|
||||
}
|
||||
PlasmaCore.SvgItem {
|
||||
id: firstHandle
|
||||
anchors.fill: parent
|
||||
svg: grooveSvg
|
||||
elementId: parent.horizontal ? "horizontal-slider-handle" : "vertical-slider-handle"
|
||||
}
|
||||
}
|
||||
width: slider.isVertical ? theme.mSize(theme.defaultFont).height*1.6 : 200
|
||||
height: slider.isVertical ? 200 : theme.mSize(theme.defaultFont).height*1.6
|
||||
// TODO: needs to define if there will be specific graphics for
|
||||
// disabled sliders
|
||||
opacity: enabled ? 1.0 : 0.5
|
||||
|
||||
activeFocusOnTab: true
|
||||
|
||||
background: PlasmaCore.FrameSvgItem {
|
||||
imagePath: "widgets/slider"
|
||||
prefix: "groove"
|
||||
readonly property bool horizontal: control.orientation === Qt.Horizontal
|
||||
implicitWidth: horizontal ? units.gridUnit * 8 : margins.left + margins.right
|
||||
implicitHeight: horizontal ? margins.top + margins.bottom : units.gridUnit * 8
|
||||
width: horizontal ? control.availableWidth : implicitWidth
|
||||
height: horizontal ? implicitHeight : control.availableHeight
|
||||
anchors.centerIn: parent
|
||||
scale: horizontal && control.mirrored ? -1 : 1
|
||||
//FIXME: remove those 2 functions once we can depend from 5.4*/
|
||||
function accessibleIncreaseAction() { increase() }
|
||||
function accessibleDecreaseAction() { decrease() }
|
||||
|
||||
PlasmaCore.FrameSvgItem {
|
||||
imagePath: "widgets/slider"
|
||||
prefix: "groove-highlight"
|
||||
x: parent.horizontal ? 0 : (parent.width - width) / 2
|
||||
y: parent.horizontal ? (parent.height - height) / 2 : control.visualPosition * parent.height
|
||||
width: parent.horizontal ? control.position * parent.width : parent.width
|
||||
height: parent.horizontal ? parent.height : control.position * parent.height
|
||||
}
|
||||
function increase() {
|
||||
if (!enabled)
|
||||
return;
|
||||
if (inverted)
|
||||
value += stepSize;
|
||||
else
|
||||
value -= stepSize;
|
||||
}
|
||||
function decrease() {
|
||||
if (!enabled)
|
||||
return;
|
||||
if (inverted)
|
||||
value -= stepSize;
|
||||
else
|
||||
value += stepSize;
|
||||
}
|
||||
|
||||
style: Styles.SliderStyle {}
|
||||
}
|
||||
|
@ -1,131 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2011 by Daker Fernandes Pinheiro <dakerfp@gmail.com>
|
||||
* Copyright (C) 2011 by Marco Martin <mart@kde.org>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Library General Public License as
|
||||
* published by the Free Software Foundation; either version 2, 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 Library General Public License for more details
|
||||
*
|
||||
* You should have received a copy of the GNU Library General Public
|
||||
* License along with this program; if not, write to the
|
||||
* Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 2.010-1301, USA.
|
||||
*/
|
||||
|
||||
/**Documented API
|
||||
Inherits:
|
||||
Item
|
||||
Imports:
|
||||
QtQuick 2.1
|
||||
org.kde.plasma.core
|
||||
Description:
|
||||
It is a simple Radio button which is using the plasma theme.
|
||||
TODO Do we need more info?
|
||||
Properties:
|
||||
TODO needs more info??
|
||||
**/
|
||||
|
||||
import QtQuick 2.1
|
||||
import org.kde.plasma.core 2.0 as PlasmaCore
|
||||
|
||||
Item {
|
||||
id: main
|
||||
state: parent.state
|
||||
property alias imagePath: shadowSvg.imagePath
|
||||
property string hoverElement: "hover"
|
||||
property string focusElement: "focus"
|
||||
property alias shadowElement: shadow.elementId
|
||||
|
||||
//used to tell apart this implementation with the touch components one
|
||||
property bool hasOverState: true
|
||||
|
||||
PlasmaCore.Svg {
|
||||
id: shadowSvg
|
||||
imagePath: "widgets/actionbutton"
|
||||
}
|
||||
|
||||
PlasmaCore.SvgItem {
|
||||
id: hover
|
||||
svg: shadowSvg
|
||||
elementId: "hover"
|
||||
|
||||
anchors.fill: parent
|
||||
|
||||
opacity: 0
|
||||
}
|
||||
|
||||
PlasmaCore.SvgItem {
|
||||
id: shadow
|
||||
svg: shadowSvg
|
||||
elementId: "shadow"
|
||||
|
||||
anchors.fill: parent
|
||||
}
|
||||
|
||||
states: [
|
||||
State {
|
||||
name: "shadow"
|
||||
PropertyChanges {
|
||||
target: shadow
|
||||
opacity: 1
|
||||
}
|
||||
PropertyChanges {
|
||||
target: hover
|
||||
opacity: 0
|
||||
elementId: hoverElement
|
||||
}
|
||||
},
|
||||
State {
|
||||
name: "hover"
|
||||
PropertyChanges {
|
||||
target: shadow
|
||||
opacity: 0
|
||||
}
|
||||
PropertyChanges {
|
||||
target: hover
|
||||
opacity: 1
|
||||
elementId: hoverElement
|
||||
}
|
||||
},
|
||||
State {
|
||||
name: "focus"
|
||||
PropertyChanges {
|
||||
target: shadow
|
||||
opacity: 0
|
||||
}
|
||||
PropertyChanges {
|
||||
target: hover
|
||||
opacity: 1
|
||||
elementId: focusElement
|
||||
}
|
||||
},
|
||||
State {
|
||||
name: "hidden"
|
||||
PropertyChanges {
|
||||
target: shadow
|
||||
opacity: 0
|
||||
}
|
||||
PropertyChanges {
|
||||
target: hover
|
||||
opacity: 0
|
||||
elementId: hoverElement
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
transitions: [
|
||||
Transition {
|
||||
PropertyAnimation {
|
||||
properties: "opacity"
|
||||
duration: units.longDuration
|
||||
easing.type: Easing.OutQuad
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
Loading…
Reference in New Issue