From e328fa55026d39a9ebf7fe201a1d351cf1c861fe Mon Sep 17 00:00:00 2001 From: Michail Vourlakos Date: Mon, 9 Apr 2018 02:29:08 +0300 Subject: [PATCH] Revert "fix #972,fork PlasmaComponents3.Slider" This reverts commit 4588ac12a0080e2b99618c2042e51d4fb0b9dfcb. --- CMakeLists.txt | 1 - .../configuration/AppearanceConfig.qml | 61 ++++--- shell/package/contents/controls/Slider.qml | 151 +++++++++--------- .../contents/controls/private/RoundShadow.qml | 131 --------------- 4 files changed, 113 insertions(+), 231 deletions(-) delete mode 100644 shell/package/contents/controls/private/RoundShadow.qml diff --git a/CMakeLists.txt b/CMakeLists.txt index 5adca05b6..3ef801d2a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -48,7 +48,6 @@ 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) diff --git a/shell/package/contents/configuration/AppearanceConfig.qml b/shell/package/contents/configuration/AppearanceConfig.qml index 27a7f0431..cba63ae84 100644 --- a/shell/package/contents/configuration/AppearanceConfig.qml +++ b/shell/package/contents/configuration/AppearanceConfig.qml @@ -162,9 +162,9 @@ PlasmaComponents.Page { id: appletsSizeSlider Layout.fillWidth: true value: plasmoid.configuration.iconSize - from: 16 + minimumValue: 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) { - to = plasmoid.configuration.iconSize + 64 + maximumValue = plasmoid.configuration.iconSize + 64 } else { - to = 128 + maximumValue = 128 } } @@ -217,9 +217,12 @@ PlasmaComponents.Page { Layout.fillWidth: true id: zoomSlider + valueIndicatorText: i18n("Zoom Factor") + valueIndicatorVisible: true + value: Number(1 + plasmoid.configuration.zoomLevel / 20).toFixed(2) - from: 1 - to: 2 + minimumValue: 1 + maximumValue: 2 stepSize: 0.05 wheelEnabled: false @@ -267,8 +270,8 @@ PlasmaComponents.Page { id: proportionSizeSlider Layout.fillWidth: true value: plasmoid.configuration.proportionIconSize - from: 1.0 - to: 10 + minimumValue: 1.0 + maximumValue: 10 stepSize: 0.5 wheelEnabled: false property real realMinimum: minimumValue + 0.5 @@ -322,8 +325,8 @@ PlasmaComponents.Page { id: iconMarginSlider Layout.fillWidth: true value: plasmoid.configuration.iconMargin - from: 0 - to: 100 + minimumValue: 0 + maximumValue: 100 stepSize: 5 wheelEnabled: false @@ -387,8 +390,8 @@ PlasmaComponents.Page { enabled: showBackground.checked value: plasmoid.configuration.panelSize - from: 0 - to: 100 + minimumValue: 0 + maximumValue: 100 stepSize: 5 wheelEnabled: false @@ -438,8 +441,8 @@ PlasmaComponents.Page { enabled: showBackground.checked && !blockOpacityAdjustment value: plasmoid.configuration.panelTransparency - from: 0 - to: 100 + minimumValue: 0 + maximumValue: 100 stepSize: 5 wheelEnabled: false @@ -792,8 +795,8 @@ PlasmaComponents.Page { enabled: showGlowChk.checked value: plasmoid.configuration.glowOpacity - from: 0 - to: 100 + minimumValue: 0 + maximumValue: 100 stepSize: 5 wheelEnabled: false @@ -1021,8 +1024,8 @@ PlasmaComponents.Page { enabled: showAppletShadow.checked value: plasmoid.configuration.shadowOpacity - from: 0 - to: 100 + minimumValue: 0 + maximumValue: 100 stepSize: 5 wheelEnabled: false @@ -1071,8 +1074,8 @@ PlasmaComponents.Page { enabled: showAppletShadow.checked value: plasmoid.configuration.shadowSize - from: 0 - to: 100 + minimumValue: 0 + maximumValue: 100 stepSize: 5 wheelEnabled: false @@ -1131,9 +1134,12 @@ PlasmaComponents.Page { Layout.fillWidth: true id: maxLengthSlider + valueIndicatorText: i18n("Length") + valueIndicatorVisible: true + value: plasmoid.configuration.maxLength - from: 30 - to: 100 + minimumValue: 30 + maximumValue: 100 stepSize: 2 wheelEnabled: false @@ -1204,11 +1210,14 @@ PlasmaComponents.Page { Layout.fillWidth: true id: offsetSlider + valueIndicatorText: i18n("Offset") + valueIndicatorVisible: true + value: plasmoid.configuration.offset - 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 + 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 stepSize: 2 wheelEnabled: false diff --git a/shell/package/contents/controls/Slider.qml b/shell/package/contents/controls/Slider.qml index 6ec498cca..cfe743033 100644 --- a/shell/package/contents/controls/Slider.qml +++ b/shell/package/contents/controls/Slider.qml @@ -1,87 +1,92 @@ /* - * Copyright 2016 Marco Martin - * - * 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 +* Copyright (C) 2014 by Marco Martin +* Copyright (C) 2018 by Michail Vourlakos +* +* 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 {} } diff --git a/shell/package/contents/controls/private/RoundShadow.qml b/shell/package/contents/controls/private/RoundShadow.qml deleted file mode 100644 index a269ed040..000000000 --- a/shell/package/contents/controls/private/RoundShadow.qml +++ /dev/null @@ -1,131 +0,0 @@ -/* - * Copyright (C) 2011 by Daker Fernandes Pinheiro - * Copyright (C) 2011 by Marco Martin - * - * 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 - } - } - ] -}