import io.calamares.core 1.0 import io.calamares.ui 1.0 import QtQuick 2.15 import QtQuick.Controls 2.15 import QtQuick.Layouts 1.15 import "RaveOS" import "supporters.js" as Supporters Rectangle { id: kesz color: Stilus.hatter readonly property int nevekOldalankent: 18 readonly property var kiemeltek: Supporters.highlighted || [] readonly property var tobbiek: Supporters.names.filter(function(n) { return kiemeltek.indexOf(n) === -1 }) readonly property int oldalakSzama: Math.max(1, Math.ceil(tobbiek.length / nevekOldalankent)) property int oldal: 0 readonly property bool hibas: config.failed function onActivate() { oldal = 0 } function onLeave() { } Image { anchors.fill: parent source: "images/raveos-finish.png" fillMode: Image.PreserveAspectCrop horizontalAlignment: Image.AlignLeft verticalAlignment: Image.AlignBottom smooth: true mipmap: true asynchronous: true } component Jelolo: CheckBox { id: jelolo Layout.fillWidth: true implicitHeight: 40 spacing: 10 indicator: Rectangle { x: jelolo.leftPadding y: (jelolo.height - height) / 2 width: 18 height: 18 color: jelolo.checked ? Stilus.zold : Stilus.felulet border.width: 1 border.color: jelolo.checked ? Stilus.zold : Stilus.keretErosebb Canvas { anchors.fill: parent visible: jelolo.checked onVisibleChanged: if (visible) requestPaint() onPaint: { var c = getContext("2d") c.reset() c.strokeStyle = Stilus.zoldonSzoveg c.lineWidth = 2 c.beginPath() c.moveTo(4, 9) c.lineTo(8, 13) c.lineTo(14, 5) c.stroke() } } } contentItem: Text { leftPadding: jelolo.indicator.width + jelolo.spacing text: jelolo.text color: Stilus.szoveg font.family: Stilus.font font.pixelSize: 14 verticalAlignment: Text.AlignVCenter } } ColumnLayout { id: panelek x: (kesz.width - width) / 2 y: Math.max(32, (kesz.height - implicitHeight) / 2 - 40) width: Math.min(560, kesz.width - 64) spacing: 16 Rectangle { Layout.fillWidth: true implicitHeight: panel.implicitHeight + 48 color: Qt.rgba(26 / 255, 27 / 255, 29 / 255, 0.9) border.width: 1 border.color: Stilus.keret ColumnLayout { id: panel x: 26 y: 24 width: parent.width - 52 spacing: 14 RowLayout { Layout.alignment: Qt.AlignHCenter spacing: 12 Rectangle { width: 32 height: 32 color: kesz.hibas ? Stilus.sarga : Stilus.zold Canvas { id: ikon anchors.fill: parent Connections { target: kesz function onHibasChanged() { ikon.requestPaint() } } onPaint: { var c = getContext("2d") c.reset() c.strokeStyle = Stilus.zoldonSzoveg c.lineWidth = 3 c.beginPath() if (kesz.hibas) { c.moveTo(10, 10) c.lineTo(22, 22) c.moveTo(22, 10) c.lineTo(10, 22) } else { c.moveTo(9, 16.5) c.lineTo(13.5, 21) c.lineTo(23, 11.5) } c.stroke() } } } Text { text: (ViewManager.currentStepIndex < 10 ? "0" : "") + ViewManager.currentStepIndex + " ยท " + (kesz.hibas ? qsTr("ERROR") : qsTr("DONE")) color: kesz.hibas ? Stilus.sarga : Stilus.zold font.family: Stilus.mono font.pixelSize: 12 font.letterSpacing: 2 } } Text { Layout.fillWidth: true horizontalAlignment: Text.AlignHCenter text: kesz.hibas ? qsTr("THE INSTALLATION FAILED") : qsTr("RAVEOS IS INSTALLED") wrapMode: Text.WordWrap color: Stilus.szoveg font.family: Stilus.cim font.weight: Font.Bold font.pixelSize: 36 lineHeight: 0.95 } Text { Layout.fillWidth: true horizontalAlignment: Text.AlignHCenter text: kesz.hibas ? config.failureMessage : qsTr("Restart the computer and remove the installer USB drive.") wrapMode: Text.WordWrap color: Stilus.szovegMasodlagos font.family: Stilus.font font.pixelSize: 14 lineHeight: 1.2 } ColumnLayout { Layout.alignment: Qt.AlignHCenter spacing: 0 Jelolo { Layout.fillWidth: false Layout.alignment: Qt.AlignHCenter visible: !kesz.hibas && (config.restartNowMode === 1 || config.restartNowMode === 2) text: qsTr("Restart now") checked: config.restartNowWanted onToggled: config.restartNowWanted = checked } } Text { Layout.fillWidth: true horizontalAlignment: Text.AlignHCenter visible: !kesz.hibas text: qsTr("The installation log is saved on the new system: %1").arg("/var/log/Calamares.log") wrapMode: Text.WordWrap color: Stilus.szovegHalvany font.family: Stilus.font font.pixelSize: 12 } } } Rectangle { visible: Supporters.names.length > 0 Layout.fillWidth: true implicitHeight: tamogatok.implicitHeight + 36 color: Qt.rgba(26 / 255, 27 / 255, 29 / 255, 0.9) border.width: 1 border.color: Stilus.keret ColumnLayout { id: tamogatok x: 26 y: 18 width: parent.width - 52 spacing: 8 Text { Layout.alignment: Qt.AlignHCenter text: qsTr("RAVEOS SUPPORTERS") color: Stilus.szovegHalvany font.family: Stilus.font font.pixelSize: 12 font.weight: Font.Medium font.letterSpacing: 1 } Text { Layout.fillWidth: true horizontalAlignment: Text.AlignHCenter visible: kesz.kiemeltek.length > 0 text: kesz.kiemeltek.join(" ") wrapMode: Text.WordWrap color: Stilus.zold font.family: Stilus.font font.pixelSize: 15 font.weight: Font.DemiBold } Text { id: nevek Layout.fillWidth: true horizontalAlignment: Text.AlignHCenter text: kesz.tobbiek.slice(kesz.oldal * kesz.nevekOldalankent, (kesz.oldal + 1) * kesz.nevekOldalankent).join(" ") wrapMode: Text.WordWrap color: Stilus.szoveg font.family: Stilus.font font.pixelSize: 14 lineHeight: 1.3 Behavior on opacity { NumberAnimation { duration: 250 } } } Text { Layout.alignment: Qt.AlignHCenter visible: kesz.oldalakSzama > 1 text: (kesz.oldal + 1) + " / " + kesz.oldalakSzama color: Stilus.szovegHalvany font.family: Stilus.mono font.pixelSize: 12 } Text { Layout.fillWidth: true horizontalAlignment: Text.AlignHCenter text: qsTr("Thank you for your support, from every member of the team!") wrapMode: Text.WordWrap color: Stilus.szovegMasodlagos font.family: Stilus.font font.pixelSize: 12 } } } } Timer { interval: 4000 repeat: true running: kesz.oldalakSzama > 1 onTriggered: { nevek.opacity = 0 lapozas.start() } } Timer { id: lapozas interval: 260 onTriggered: { kesz.oldal = (kesz.oldal + 1) % kesz.oldalakSzama nevek.opacity = 1 } } }