diff --git a/lookandfeel/contents/components/WallpaperFader.qml b/lookandfeel/contents/components/WallpaperFader.qml index 31dfe007b..304263f9d 100644 --- a/lookandfeel/contents/components/WallpaperFader.qml +++ b/lookandfeel/contents/components/WallpaperFader.qml @@ -1,182 +1,176 @@ /******************************************************************** This file is part of the KDE project. Copyright (C) 2014 Aleix Pol Gonzalez 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 2.6 import QtQuick.Controls 1.1 import QtQuick.Layouts 1.1 import QtGraphicalEffects 1.0 import org.kde.plasma.core 2.0 as PlasmaCore import org.kde.plasma.components 2.0 as PlasmaComponents import org.kde.plasma.private.sessions 2.0 import "../components" Item { id: wallpaperFader property Item clock property Item mainStack property Item footer property alias source: wallpaperBlur.source state: lockScreenRoot.uiVisible ? "on" : "off" property real factor: 0 readonly property bool lightBackground: Math.max(PlasmaCore.ColorScope.backgroundColor.r, PlasmaCore.ColorScope.backgroundColor.g, PlasmaCore.ColorScope.backgroundColor.b) > 0.5 + property bool alwaysShowClock: typeof config === "undefined" || config.alwaysShowClock === true + Behavior on factor { NumberAnimation { target: wallpaperFader property: "factor" duration: 1000 easing.type: Easing.InOutQuad } } FastBlur { id: wallpaperBlur anchors.fill: parent radius: 50 * wallpaperFader.factor } ShaderEffect { id: wallpaperShader anchors.fill: parent supportsAtlasTextures: true property var source: ShaderEffectSource { sourceItem: wallpaperBlur live: true hideSource: true textureMirroring: ShaderEffectSource.NoMirroring } readonly property real contrast: 0.65 * wallpaperFader.factor + (1 - wallpaperFader.factor) readonly property real saturation: 1.6 * wallpaperFader.factor + (1 - wallpaperFader.factor) readonly property real intensity: (wallpaperFader.lightBackground ? 1.7 : 0.6) * wallpaperFader.factor + (1 - wallpaperFader.factor) readonly property real transl: (1.0 - contrast) / 2.0; readonly property real rval: (1.0 - saturation) * 0.2126; readonly property real gval: (1.0 - saturation) * 0.7152; readonly property real bval: (1.0 - saturation) * 0.0722; property var colorMatrix: Qt.matrix4x4( contrast, 0, 0, 0.0, 0, contrast, 0, 0.0, 0, 0, contrast, 0.0, transl, transl, transl, 1.0).times(Qt.matrix4x4( rval + saturation, rval, rval, 0.0, gval, gval + saturation, gval, 0.0, bval, bval, bval + saturation, 0.0, 0, 0, 0, 1.0)).times(Qt.matrix4x4( intensity, 0, 0, 0, 0, intensity, 0, 0, 0, 0, intensity, 0, 0, 0, 0, 1 )); fragmentShader: " uniform mediump mat4 colorMatrix; uniform mediump sampler2D source; varying mediump vec2 qt_TexCoord0; uniform lowp float qt_Opacity; void main(void) { mediump vec4 tex = texture2D(source, qt_TexCoord0); gl_FragColor = tex * colorMatrix * qt_Opacity; }" } states: [ State { name: "on" PropertyChanges { target: mainStack opacity: 1 } PropertyChanges { target: footer opacity: 1 } PropertyChanges { target: wallpaperFader factor: 1 } PropertyChanges { target: clock.shadow opacity: 0 } + PropertyChanges { + target: clock + opacity: 1 + } }, State { name: "off" PropertyChanges { target: mainStack opacity: 0 } PropertyChanges { target: footer opacity: 0 } PropertyChanges { target: wallpaperFader factor: 0 } PropertyChanges { target: clock.shadow - opacity: 1 + opacity: wallpaperFader.alwaysShowClock ? 1 : 0 + } + PropertyChanges { + target: clock + opacity: wallpaperFader.alwaysShowClock ? 1 : 0 } } ] transitions: [ Transition { from: "off" to: "on" //Note: can't use animators as they don't play well with parallelanimations - ParallelAnimation { - NumberAnimation { - target: mainStack - property: "opacity" - duration: units.longDuration - easing.type: Easing.InOutQuad - } - NumberAnimation { - target: footer - property: "opacity" - duration: units.longDuration - easing.type: Easing.InOutQuad - } + NumberAnimation { + targets: [mainStack, footer, clock] + property: "opacity" + duration: units.longDuration + easing.type: Easing.InOutQuad } }, Transition { from: "on" to: "off" - ParallelAnimation { - NumberAnimation { - target: mainStack - property: "opacity" - duration: 500 - easing.type: Easing.InOutQuad - } - NumberAnimation { - target: footer - property: "opacity" - duration: 500 - easing.type: Easing.InOutQuad - } + NumberAnimation { + targets: [mainStack, footer, clock] + property: "opacity" + duration: 500 + easing.type: Easing.InOutQuad } } ] } diff --git a/lookandfeel/contents/lockscreen/config.qml b/lookandfeel/contents/lockscreen/config.qml index 0687e8d8f..921a03859 100644 --- a/lookandfeel/contents/lockscreen/config.qml +++ b/lookandfeel/contents/lockscreen/config.qml @@ -1,22 +1,44 @@ import QtQuick 2.5 import QtQuick.Controls 2.5 as QQC2 import QtQuick.Layouts 1.1 -RowLayout { +ColumnLayout { + property alias cfg_alwaysShowClock: alwaysClock.checked property alias cfg_showMediaControls: showMediaControls.checked - spacing: units.largeSpacing / 2 + spacing: 0 - QQC2.Label { - Layout.minimumWidth: formAlignment - units.largeSpacing //to match wallpaper config... - horizontalAlignment: Text.AlignRight - text: i18nd("plasma_lookandfeel_org.kde.lookandfeel", "Media controls:") - } - QQC2.CheckBox { - id: showMediaControls - text: i18ndc("plasma_lookandfeel_org.kde.lookandfeel", "verb, to show something", "Show") + RowLayout { + spacing: units.largeSpacing / 2 + + QQC2.Label { + Layout.minimumWidth: formAlignment - units.largeSpacing //to match wallpaper config... + horizontalAlignment: Text.AlignRight + text: i18nd("plasma_lookandfeel_org.kde.lookandfeel", "Clock:") + } + QQC2.CheckBox { + id: alwaysClock + text: i18ndc("plasma_lookandfeel_org.kde.lookandfeel", "verb, to show something", "Always show") + } + Item { + Layout.fillWidth: true + } } - Item { - Layout.fillWidth: true + + RowLayout { + spacing: units.largeSpacing / 2 + + QQC2.Label { + Layout.minimumWidth: formAlignment - units.largeSpacing //to match wallpaper config... + horizontalAlignment: Text.AlignRight + text: i18nd("plasma_lookandfeel_org.kde.lookandfeel", "Media controls:") + } + QQC2.CheckBox { + id: showMediaControls + text: i18ndc("plasma_lookandfeel_org.kde.lookandfeel", "verb, to show something", "Show") + } + Item { + Layout.fillWidth: true + } } } diff --git a/lookandfeel/contents/lockscreen/config.xml b/lookandfeel/contents/lockscreen/config.xml index 62683aba6..436a67ea1 100644 --- a/lookandfeel/contents/lockscreen/config.xml +++ b/lookandfeel/contents/lockscreen/config.xml @@ -1,15 +1,19 @@ + + + true + true