/* * Copyright 2023 Valeria Fadeeva * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License version 3, * or (at your option) any later version, as published by the Free * Software Foundation * * 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 Affero General Public License for more details * * You should have received a copy of the GNU Affero 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.11 import QtQuick.Layouts 1.11 import QtQuick.Controls 2.4 import Qt5Compat.GraphicalEffects Image { id: root source: "images/background.png" property int stage onStageChanged: { if (stage == 1) { introAnimation.running = true } } Item { id: content anchors.fill: parent opacity: 0 TextMetrics { id: units text: "M" property int gridUnit: boundingRect.height property int largeSpacing: units.gridUnit property int smallSpacing: Math.max(2, gridUnit/4) } Image { id: logo //match SDDM/lockscreen avatar positioning property real size: units.gridUnit * 8 anchors.centerIn: parent source: "images/logo.svg" } Rectangle { id: bottomRect radius: 3 color: "#100040" anchors { bottom: logo.bottom bottomMargin: 50 horizontalCenter: parent.horizontalCenter } height: 6 width: height*36 Rectangle { radius: 3 anchors { left: parent.left top: parent.top bottom: parent.bottom } width: (parent.width / 6) * (stage - 1) color: "#96C5F5" Behavior on width { PropertyAnimation { duration: 250 easing.type: Easing.InOutQuad } } } } } SequentialAnimation { id: introAnimation running: false ParallelAnimation { OpacityAnimator { target: content from: 0 to: 1 duration: 1000 easing.type: Easing.InOutQuad } PropertyAnimation { property: "y" target: bottomRect from: root.height / 3 to: 2 * (root.height / 3) - bottomRect.height duration: 1000 easing.type: Easing.InOutBack easing.overshoot: 1.0 } } } }