fix #972,fork PlasmaComponents3.Slider

-as it appears the PlasmaComponents3.Slider
was adding too much visual distraction. I had
to fork it in order to use it dock settings
window. We needed the behavior of wheelEnabled
in order to disable it and the only slider
providing it from Qt 5.7 was the QtControls 2.0
Slider
pull/2/head
Michail Vourlakos 7 years ago
parent 6881d8fbbe
commit 4588ac12a0

@ -48,6 +48,7 @@ include(ECMQMLModules)
ecm_find_qmlmodule(QtQuick 2.7)
ecm_find_qmlmodule(QtQuick.Layouts 1.3)
ecm_find_qmlmodule(QtQuick.Controls 1.4)
ecm_find_qmlmodule(QtQuick.Controls 2.0)
ecm_find_qmlmodule(QtQuick.Controls.Styles.Plasma 2.0)
ecm_find_qmlmodule(QtGraphicalEffects 1.0)
ecm_find_qmlmodule(org.kde.kquickcontrolsaddons 2.0)

@ -162,9 +162,9 @@ PlasmaComponents.Page {
id: appletsSizeSlider
Layout.fillWidth: true
value: plasmoid.configuration.iconSize
minimumValue: 16
from: 16
stepSize: (!plasmoid.configuration.autoDecreaseIconSize
&& (plasmoid.configuration.advanced || (plasmoid.configuration.iconSize % 8 !== 0)))
&& (plasmoid.configuration.advanced || (plasmoid.configuration.iconSize % 8 !== 0)))
|| dialog.dockIsPanel ? 1 : 8
wheelEnabled: false
@ -183,9 +183,9 @@ PlasmaComponents.Page {
valueChanged.connect(updateIconSize);
if (plasmoid.configuration.iconSize>128) {
maximumValue = plasmoid.configuration.iconSize + 64
to = plasmoid.configuration.iconSize + 64
} else {
maximumValue = 128
to = 128
}
}
@ -217,12 +217,9 @@ PlasmaComponents.Page {
Layout.fillWidth: true
id: zoomSlider
valueIndicatorText: i18n("Zoom Factor")
valueIndicatorVisible: true
value: Number(1 + plasmoid.configuration.zoomLevel / 20).toFixed(2)
minimumValue: 1
maximumValue: 2
from: 1
to: 2
stepSize: 0.05
wheelEnabled: false
@ -270,8 +267,8 @@ PlasmaComponents.Page {
id: proportionSizeSlider
Layout.fillWidth: true
value: plasmoid.configuration.proportionIconSize
minimumValue: 1.0
maximumValue: 10
from: 1.0
to: 10
stepSize: 0.5
wheelEnabled: false
property real realMinimum: minimumValue + 0.5
@ -325,8 +322,8 @@ PlasmaComponents.Page {
id: iconMarginSlider
Layout.fillWidth: true
value: plasmoid.configuration.iconMargin
minimumValue: 0
maximumValue: 100
from: 0
to: 100
stepSize: 5
wheelEnabled: false
@ -390,8 +387,8 @@ PlasmaComponents.Page {
enabled: showBackground.checked
value: plasmoid.configuration.panelSize
minimumValue: 0
maximumValue: 100
from: 0
to: 100
stepSize: 5
wheelEnabled: false
@ -441,8 +438,8 @@ PlasmaComponents.Page {
enabled: showBackground.checked && !blockOpacityAdjustment
value: plasmoid.configuration.panelTransparency
minimumValue: 0
maximumValue: 100
from: 0
to: 100
stepSize: 5
wheelEnabled: false
@ -795,8 +792,8 @@ PlasmaComponents.Page {
enabled: showGlowChk.checked
value: plasmoid.configuration.glowOpacity
minimumValue: 0
maximumValue: 100
from: 0
to: 100
stepSize: 5
wheelEnabled: false
@ -1024,8 +1021,8 @@ PlasmaComponents.Page {
enabled: showAppletShadow.checked
value: plasmoid.configuration.shadowOpacity
minimumValue: 0
maximumValue: 100
from: 0
to: 100
stepSize: 5
wheelEnabled: false
@ -1074,8 +1071,8 @@ PlasmaComponents.Page {
enabled: showAppletShadow.checked
value: plasmoid.configuration.shadowSize
minimumValue: 0
maximumValue: 100
from: 0
to: 100
stepSize: 5
wheelEnabled: false
@ -1134,12 +1131,9 @@ PlasmaComponents.Page {
Layout.fillWidth: true
id: maxLengthSlider
valueIndicatorText: i18n("Length")
valueIndicatorVisible: true
value: plasmoid.configuration.maxLength
minimumValue: 30
maximumValue: 100
from: 30
to: 100
stepSize: 2
wheelEnabled: false
@ -1210,14 +1204,11 @@ PlasmaComponents.Page {
Layout.fillWidth: true
id: offsetSlider
valueIndicatorText: i18n("Offset")
valueIndicatorVisible: true
value: plasmoid.configuration.offset
minimumValue: ((plasmoid.configuration.panelPosition === Latte.Dock.Center)
|| (plasmoid.configuration.panelPosition === Latte.Dock.Justify)) ? -20 : 0
maximumValue: ((plasmoid.configuration.panelPosition === Latte.Dock.Center)
|| (plasmoid.configuration.panelPosition === Latte.Dock.Justify)) ? 20 : 40
from: ((plasmoid.configuration.panelPosition === Latte.Dock.Center)
|| (plasmoid.configuration.panelPosition === Latte.Dock.Justify)) ? -20 : 0
to: ((plasmoid.configuration.panelPosition === Latte.Dock.Center)
|| (plasmoid.configuration.panelPosition === Latte.Dock.Justify)) ? 20 : 40
stepSize: 2
wheelEnabled: false

@ -1,92 +1,87 @@
/*
* 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.
*/
* 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.
*/
import QtQuick 2.7
import QtQuick.Templates 2.0 as T
import org.kde.plasma.core 2.0 as PlasmaCore
import QtQuick.Controls 1.6 as QtControls
import QtQuick.Controls.Styles.Plasma 2.0 as Styles
import "private" as Private
T.Slider {
id: control
/**
* An interactive slider component with Plasma look and feel.
*
* @inherit QtQuick.Controls.Slider
*/
QtControls.Slider {
id: slider
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)
/**
* 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
padding: units.gridUnit
snapMode: T.Slider.SnapOnRelease
/**
* 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
PlasmaCore.Svg {
id: grooveSvg
imagePath: "widgets/slider"
colorGroup: PlasmaCore.ColorScope.colorGroup
/**
* 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: 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
}
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))
activeFocusOnTab: true
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"
}
}
//FIXME: remove those 2 functions once we can depend from 5.4*/
function accessibleIncreaseAction() { increase() }
function accessibleDecreaseAction() { decrease() }
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
function increase() {
if (!enabled)
return;
if (inverted)
value += stepSize;
else
value -= stepSize;
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 decrease() {
if (!enabled)
return;
if (inverted)
value -= stepSize;
else
value += stepSize;
}
style: Styles.SliderStyle {}
}

@ -0,0 +1,131 @@
/*
* 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…
Cancel
Save