AusweisApp2/resources/qml/Governikus/TutorialView/+mobile/TutorialReaderMethodSacDesk...

755 lines
21 KiB
QML

import QtQuick 2.10
import Governikus.Global 1.0
import Governikus.TitleBar 1.0
import Governikus.View 1.0
SectionPage {
id: baseItem
leftTitleBarAction: TitleBarAction { state: "back"; onClicked: firePop() }
headerTitleBarAction: TitleBarAction { text: qsTr("Tutorial: Smartphone as card reader") + settingsModel.translationTrigger; font.bold: true }
signal quitTutorialClicked()
Rectangle {
anchors.fill: parent
color: Constants.white
z: -1
}
content: Item {
width: baseItem.width
height: content.contentHeight
TutorialContent {
id: content
visible: true
width: Constants.is_tablet ? baseItem.width * 0.5 : baseItem.width
height: content.contentHeight
anchors.horizontalCenter: parent.horizontalCenter
Column {
width: parent.width
spacing: Constants.component_spacing
Text {
anchors.horizontalCenter: parent.horizontalCenter
width: parent.width * 0.9
text: qsTr("Smartphone as card reader") + settingsModel.translationTrigger
font.family: "Noto Serif"
font.pixelSize: Constants.tutorial_content_header_h2_font_size
font.bold: true
horizontalAlignment: Text.AlignHCenter
wrapMode: Text.WordWrap
}
Rectangle {
anchors.horizontalCenter: parent.horizontalCenter
height: radius * 2
width: radius * 2
radius: numberTwo.height
border.width: Utils.dp(3)
border.color: Constants.tutorial_blue
Text {
id: numberTwo
anchors.centerIn: parent
text: "2"
font.family: "Noto Serif"
font.pixelSize: Constants.tutorial_content_header_h2_font_size
font.bold: true
horizontalAlignment: Text.AlignHCenter
}
}
Item {
width: parent.width
height: sacStationaryImage.height
Rectangle {
anchors.horizontalCenter: parent.horizontalCenter
height: radius * 2
width: radius * 2
radius: parent.width * 0.06
border.width: Utils.dp(3)
border.color: Constants.tutorial_blue
y: (parent.height * 0.4) - (height / 2)
x: (parent.width * 0.5) - (width / 2)
TutorialImage {
source: "qrc:///images/tutorial/wifi.svg"
width: parent.width * 0.8
centerX: 0.5
centerY: 0.5
}
}
TutorialImage {
id: sacStationaryImage
source: "qrc:///images/tutorial/generated/how_method_sac_desktop.svg"
width: parent.width
centerX: 0.5
centerY: 0.5
}
Text {
width: parent.width * 0.4
text: qsTr("App on computer <b>without</b> NFC chip") + settingsModel.translationTrigger
horizontalAlignment: Text.AlignHCenter
wrapMode: Text.WordWrap
x: (parent.width * 0.25) - (width / 2)
y: (parent.height * 0.95) - (height / 2)
}
Text {
width: parent.width * 0.4
text: qsTr("Android smartphone <b>with</b> NFC chip as card reader") + settingsModel.translationTrigger
horizontalAlignment: Text.AlignHCenter
wrapMode: Text.WordWrap
x: (parent.width * 0.75) - (width / 2)
y: (parent.height * 0.95) - (height / 2)
}
}
}
Image {
source: "qrc:///images/tutorial/arrow_blue.svg"
anchors.horizontalCenter: parent.horizontalCenter
width: parent.width * 0.2
height: width * (sourceSize.height / sourceSize.width)
fillMode: Image.PreserveAspectFit
rotation: 90
}
Column {
width: parent.width
spacing: Constants.component_spacing
Text {
anchors.horizontalCenter: parent.horizontalCenter
width: parent.width * 0.9
text: qsTr("Install AusweisApp2 on both your computer <b>and</b> your android smartphone with NFC ability.") + settingsModel.translationTrigger
font.family: "Noto Serif"
font.pixelSize: Constants.tutorial_content_header_h1_font_size
horizontalAlignment: Text.AlignHCenter
wrapMode: Text.WordWrap
}
Image {
anchors.horizontalCenter: parent.horizontalCenter
width: parent.width * 0.8
height: width * (sourceSize.height / sourceSize.width)
fillMode: Image.PreserveAspectFit
source: "qrc:///images/tutorial/generated/reader_sac_aa2_ok.svg"
}
}
TutorialSeperator {
source: "qrc:///images/tutorial/section_seperator_how.svg"
}
Column {
width: parent.width
spacing: Constants.component_spacing
Image {
anchors.horizontalCenter: parent.horizontalCenter
width: parent.width * 0.3
height: width * (sourceSize.height / sourceSize.width)
fillMode: Image.PreserveAspectFit
source: "qrc:///images/tutorial/hint.svg"
}
Text {
anchors.horizontalCenter: parent.horizontalCenter
width: parent.width * 0.9
text: qsTr("Both devices have to be connected to the same wifi network") + settingsModel.translationTrigger
font.family: "Noto Serif"
font.pixelSize: Constants.tutorial_content_header_h1_font_size
font.bold: true
horizontalAlignment: Text.AlignHCenter
wrapMode: Text.WordWrap
}
Image {
anchors.horizontalCenter: parent.horizontalCenter
width: parent.width * 0.3
height: width * (sourceSize.height / sourceSize.width)
fillMode: Image.PreserveAspectFit
source: "qrc:///images/tutorial/wifi.svg"
}
}
TutorialSeperator {
source: "qrc:///images/tutorial/section_seperator_how.svg"
}
Column {
width: parent.width
spacing: Constants.component_spacing
Text {
anchors.horizontalCenter: parent.horizontalCenter
width: parent.width * 0.9
text: qsTr("Now enter \"Smartphone as card reader\" in the app on your android smartphone...") + settingsModel.translationTrigger
font.family: "Noto Serif"
font.pixelSize: Constants.tutorial_content_header_h1_font_size
horizontalAlignment: Text.AlignHCenter
wrapMode: Text.WordWrap
}
Image {
source: qsTr("qrc:///images/tutorial/generated/reader_sac_menu_en.svg") + settingsModel.translationTrigger
anchors.horizontalCenter: parent.horizontalCenter
width: parent.width * 0.9
height: width * (sourceSize.height / sourceSize.width)
fillMode: Image.PreserveAspectFit
}
}
TutorialSeperator {
source: "qrc:///images/tutorial/section_seperator_how.svg"
}
Column {
width: parent.width
spacing: Constants.component_spacing
Text {
anchors.horizontalCenter: parent.horizontalCenter
text: qsTr("Now") + settingsModel.translationTrigger
font.family: "Noto Serif"
font.pixelSize: Constants.tutorial_content_header_h1_font_size
horizontalAlignment: Text.AlignRight
wrapMode: Text.WordWrap
}
GButton {
id: remoteButton
buttonColor: "green"
anchors.horizontalCenter: parent.horizontalCenter
text: qsTr("Start remote service") + settingsModel.translationTrigger
animationsDisabled: true
}
Image {
source: "qrc:///images/tutorial/up_icon.svg"
anchors.horizontalCenter: parent.horizontalCenter
rotation: 180
width: parent.width * 0.1
height: width * (sourceSize.height / sourceSize.width)
fillMode: Image.PreserveAspectFit
}
Text {
anchors.horizontalCenter: parent.horizontalCenter
text: qsTr("Next") + settingsModel.translationTrigger
font.family: "Noto Serif"
font.pixelSize: Constants.tutorial_content_header_h1_font_size
horizontalAlignment: Text.AlignRight
wrapMode: Text.WordWrap
}
GButton {
id: pairingButton
anchors.horizontalCenter: parent.horizontalCenter
text: qsTr("Start pairing") + settingsModel.translationTrigger
animationsDisabled: true
}
Image {
anchors.horizontalCenter: parent.horizontalCenter
source: "qrc:///images/tutorial/up_icon.svg"
rotation: 180
width: parent.width * 0.1
height: width * (sourceSize.height / sourceSize.width)
fillMode: Image.PreserveAspectFit
}
Item {
anchors.horizontalCenter: parent.horizontalCenter
width: pairingCodeText.width
height: greyBackgroundRect.height
Rectangle {
id: greyBackgroundRect
anchors.horizontalCenter: parent.horizontalCenter
width: pairingCodeText.width - Utils.dp(40)
height: width
color: Constants.tutorial_very_light_grey
}
Text {
id: pairingCodeText
anchors.horizontalCenter: parent.horizontalCenter
anchors.top: greyBackgroundRect.top
topPadding: Utils.dp(30)
text: qsTr("Pairing code") + settingsModel.translationTrigger
font.family: "Noto Serif"
font.pixelSize: Constants.tutorial_content_header_h1_font_size
font.bold: true
horizontalAlignment: Text.AlignHCenter
wrapMode: Text.WordWrap
}
Text {
id: appearingText
anchors.bottom: greyBackgroundRect.bottom
bottomPadding: Utils.dp(30)
anchors.horizontalCenter: parent.horizontalCenter
text: qsTr("appears!") + settingsModel.translationTrigger
font.family: "Noto Serif"
font.pixelSize: Constants.tutorial_content_header_h1_font_size
horizontalAlignment: Text.AlignHCenter
wrapMode: Text.WordWrap
}
}
}
TutorialSeperator {
source: "qrc:///images/tutorial/section_seperator_how.svg"
}
Column {
width: parent.width
spacing: Constants.component_spacing
Image {
anchors.horizontalCenter: parent.horizontalCenter
source: "qrc:///images/tutorial/generated/reader_sac_npa_on_laptop.svg"
width: parent.width * 0.3
height: width * (sourceSize.height / sourceSize.width)
fillMode: Image.PreserveAspectFit
}
Text {
anchors.horizontalCenter: parent.horizontalCenter
width: parent.width * 0.8
text: qsTr("Start the App now on your computer and enter the settings.") + settingsModel.translationTrigger
font.family: "Noto Serif"
font.pixelSize: Constants.tutorial_content_header_h1_font_size
horizontalAlignment: Text.AlignHCenter
wrapMode: Text.WordWrap
}
Text {
anchors.horizontalCenter: parent.horizontalCenter
width: parent.width * 0.8
text: qsTr("Select the <b>Card Readers</b> tab.") + settingsModel.translationTrigger
font.family: "Noto Serif"
font.pixelSize: Constants.tutorial_content_header_h1_font_size
horizontalAlignment: Text.AlignHCenter
wrapMode: Text.WordWrap
}
}
TutorialSeperator {
source: "qrc:///images/tutorial/section_seperator_how.svg"
}
Column {
width: parent.width
spacing: Constants.component_spacing
Item {
width: parent.width
height: desktopPairing.height
TutorialImage {
id: desktopPairing
source: qsTr("qrc:///images/tutorial/screenshot_pairing_en.png") + settingsModel.translationTrigger
width: parent.width * 0.6
}
}
Text {
anchors.horizontalCenter: parent.horizontalCenter
width: parent.width * 0.8
text: qsTr("Select smartphone from list and click \"pair\"") + settingsModel.translationTrigger
font.family: "Noto Serif"
font.pixelSize: Constants.tutorial_content_header_h1_font_size
horizontalAlignment: Text.AlignHCenter
wrapMode: Text.WordWrap
}
Item {
width: parent.width
height: noticeImage3.height
TutorialImage {
id: noticeImage3
source: "qrc:///images/tutorial/hint.svg"
width: parent.width * 0.2
centerY: 0.5
centerX: 0.2
}
Text {
width: parent.width * 0.6
text: qsTr("Enter pairing code next.") + settingsModel.translationTrigger
font.family: "Noto Serif"
font.pixelSize: Constants.tutorial_content_font_size
font.bold: true
horizontalAlignment: Text.AlignLeft
wrapMode: Text.WordWrap
x: (parent.width * 0.65) - (width / 2)
y: (parent.height * 0.5) - (height / 2)
}
}
}
TutorialSeperator {
source: "qrc:///images/tutorial/section_seperator_how.svg"
}
Column {
width: parent.width
Image {
anchors.horizontalCenter: parent.horizontalCenter
source: "qrc:///images/tutorial/generated/reader_sac_provider_on_laptop.svg"
height: width * (sourceSize.height / sourceSize.width)
fillMode: Image.PreserveAspectFit
width: parent.width * 0.5
}
Text {
anchors.horizontalCenter: parent.horizontalCenter
width: parent.width * 0.6
text: qsTr("Click link on the website of the service provider.") + settingsModel.translationTrigger
horizontalAlignment: Text.AlignHCenter
font.pixelSize: Constants.tutorial_content_header_h2_font_size
font.family: "Noto Serif"
wrapMode: Text.WordWrap
}
}
TutorialSeperator {
source: "qrc:///images/tutorial/section_seperator_how.svg"
}
Item{
width: parent.width
height: userdataExample.height + textAccessWhoWhat.height + textOpenAutomatic.height + 3 * Constants.component_spacing
TutorialImage {
source: "qrc:///images/tutorial/generated/reader_sac_npa_on_laptop.svg"
width: parent.width * 0.3
centerX: 0.2
centerY: 0.2
}
TutorialImage {
id: userdataExample
source: qsTr("qrc:///images/tutorial/generated/reader_nfc_userdata_example_en.svg") + settingsModel.translationTrigger
width: parent.width * 0.8
centerX: 0.5
centerY: 0.75
}
Text {
id: textOpenAutomatic
width: parent.width * 0.6
text: qsTr("The App opens automatically.") + settingsModel.translationTrigger
horizontalAlignment: Text.AlignHCenter
font.pixelSize: Constants.tutorial_content_font_size
font.family: "Noto Serif"
wrapMode: Text.WordWrap
x: (parent.width * 0.7) - (width / 2)
y: (parent.height * 0) - (height / 2)
}
Text {
id: textAccessWhoWhat
width: parent.width * 0.6
text: qsTr("The AusweisApp2 will display who wants to access which data.") + settingsModel.translationTrigger
horizontalAlignment: Text.AlignHCenter
font.pixelSize: Constants.tutorial_content_header_h2_font_size
font.family: "Noto Serif"
wrapMode: Text.WordWrap
x: (parent.width * 0.7) - (width / 2)
y: (parent.height * 0.2) - (height / 2)
}
}
TutorialSeperator {
source: "qrc:///images/tutorial/section_seperator_how.svg"
}
Column {
width: parent.width
spacing: Constants.component_spacing
Text {
id: startProcessText
anchors.horizontalCenter: parent.horizontalCenter
font.family: "Noto Serif"
font.pixelSize: Constants.tutorial_content_header_h2_font_size
text: qsTr("Start the process with a click on:") + settingsModel.translationTrigger
}
Row {
anchors.horizontalCenter: parent.horizontalCenter
height: identifyArrow.height
spacing: Constants.component_spacing
Image {
id: identifyArrow
source: "qrc:///images/tutorial/arrow_blue.svg"
width: parent.width * 0.2
height: width * (sourceSize.height / sourceSize.width)
fillMode: Image.PreserveAspectFit
}
GButton {
id: identifyButton
iconSource: "qrc:///images/npa.svg"
text: qsTr("Identify now") + settingsModel.translationTrigger;
animationsDisabled: true
}
}
}
TutorialSeperator {
source: "qrc:///images/tutorial/section_seperator_how.svg"
}
Column {
width: parent.width
spacing: Constants.component_spacing
Image {
anchors.horizontalCenter: parent.horizontalCenter
source: qsTr( "qrc:///images/tutorial/generated/where_lay_down_id.svg") + settingsModel.translationTrigger
width: parent.width * 0.8
height: width * (sourceSize.height / sourceSize.width)
fillMode: Image.PreserveAspectFit
}
Text {
anchors.horizontalCenter: parent.horizontalCenter
width: parent.width * 0.9
text: qsTr("... and place the id card flat onto the NFC interface.") + settingsModel.translationTrigger
horizontalAlignment: Text.AlignHCenter
font.pixelSize: Constants.tutorial_content_header_h2_font_size
font.family: "Noto Serif"
wrapMode: Text.WordWrap
}
Item {
width: parent.width
height: noticeImage.height
TutorialImage {
id: noticeImage
source: "qrc:///images/tutorial/hint.svg"
width: parent.width * 0.2
centerY: 0.5
centerX: 0.2
}
Text {
width: parent.width * 0.6
text: qsTr("Do not move device or id card!") + settingsModel.translationTrigger
font.family: "Noto Serif"
font.pixelSize: Constants.tutorial_content_font_size
font.bold: true
horizontalAlignment: Text.AlignLeft
wrapMode: Text.WordWrap
x: (parent.width * 0.65) - (width / 2)
y: (parent.height * 0.5) - (height / 2)
}
}
}
TutorialSeperator {
source: "qrc:///images/tutorial/section_seperator_how.svg"
}
Item {
width: parent.width
height: nfcPosition.height + 2 * Constants.component_spacing
TutorialImage {
id: nfcPosition
source: "qrc:///images/tutorial/generated/reader_nfc_smartphone_nfc_position.svg"
width: parent.width * 0.7
centerY: 0.5
centerX: 0.35
}
Text {
width: parent.width * 0.5
text: qsTr("The correct position is specific for your device...") + settingsModel.translationTrigger
font.family: "Noto Serif"
font.pixelSize: Constants.tutorial_content_font_size
font.bold: true
horizontalAlignment: Text.AlignLeft
wrapMode: Text.WordWrap
x: (parent.width * 0.75) - (width / 2)
y: (parent.height * 0.4) - (height / 2)
}
Text {
width: parent.width * 0.5
text: "<a href=\"%1\">%2</a>".arg(qsTr("https://www.ausweisapp.bund.de/mobile-geraete/")).arg(qsTr("To mobile devices")) + settingsModel.translationTrigger
font.family: "Noto Serif"
font.pixelSize: Constants.tutorial_content_header_h2_font_size
font.bold: true
font.underline: true
horizontalAlignment: Text.AlignLeft
wrapMode: Text.WordWrap
onLinkActivated: Qt.openUrlExternally(link)
x: (parent.width * 0.75) - (width / 2)
y: (parent.height * 0.7) - (height / 2)
}
}
TutorialSeperator {
source: "qrc:///images/tutorial/section_seperator_how.svg"
}
Column {
width: parent.width
spacing: Constants.component_spacing
Item {
width: parent.width
height: pin6Image.height + Constants.component_spacing * 2
Text {
width: parent.width * 0.8
text: (settingsModel.language === "en" ? qsTr("Enter") : qsTr("Now")) + settingsModel.translationTrigger
font.family: "Noto Serif"
font.pixelSize: Constants.tutorial_content_header_h1_font_size
horizontalAlignment: Text.AlignHCenter
wrapMode: Text.WordWrap
x: (parent.width * 0.5) - (width / 2)
y: (parent.height * 0.05) - (height / 2)
}
TutorialImage {
id: pin6Image
source: "qrc:///images/tutorial/generated/reader_nfc_pin6.svg"
z: 1
width: parent.width * 0.8
centerY: 0.5
centerX: 0.5
}
Text {
width: parent.width
text: qsTr("6 digits long PIN") + settingsModel.translationTrigger
font.family: "Noto Serif"
font.bold: true
font.pixelSize: Constants.tutorial_content_header_h1_font_size
horizontalAlignment: Text.AlignHCenter
wrapMode: Text.WordWrap
z: 2
x: (parent.width * 0.5) - (width / 2)
y: (parent.height * 0.2) - (height / 2)
}
Text {
anchors.horizontalCenter: parent.horizontalCenter
width: parent.width * 0.8
text: (settingsModel.language === "en" ? qsTr("now!") : qsTr("enter!")) + settingsModel.translationTrigger
font.family: "Noto Serif"
font.pixelSize: Constants.tutorial_content_header_h1_font_size
horizontalAlignment: Text.AlignHCenter
wrapMode: Text.WordWrap
x: (parent.width * 0.5) - (width / 2)
y: (parent.height * 0.9) - (height / 2)
}
}
Item {
width: parent.width
height: Math.max(noticeImage2.height, noticeText2.height)
TutorialImage {
id: noticeImage2
source: "qrc:///images/tutorial/hint.svg"
width: parent.width * 0.2
centerY: 0.5
centerX: 0.2
}
Text {
id: noticeText2
width: parent.width * 0.6
text: qsTr("This is only possible if you have exchanged the 5 digits long transport PIN with a 6 digits long personal PIN beforehand.") + settingsModel.translationTrigger
font.family: "Noto Serif"
font.pixelSize: Constants.tutorial_content_font_size
font.bold: true
horizontalAlignment: Text.AlignLeft
wrapMode: Text.WordWrap
x: (parent.width * 0.65) - (width / 2)
y: (parent.height * 0.5) - (height / 2)
}
}
}
TutorialSeperator {
source: "qrc:///images/tutorial/section_seperator_how.svg"
}
MouseArea {
width: parent.width
height: finishedButton.height
Image {
id: finishedButton
source: "qrc:///images/tutorial/generated/reader_nfc_finished.svg"
anchors.horizontalCenter: parent.horizontalCenter
width: parent.width * 0.8
height: width * (sourceSize.height / sourceSize.width)
fillMode: Image.PreserveAspectFit
}
onClicked: firePop()
}
Item {
id: footerSpacer
width: parent.width
height: footer.height
}
}
}
TutorialReaderMethodFooter {
id: footer
width: baseItem.width
onMenuClicked: firePop()
onQuitTutorialClicked: {
firePop()
baseItem.quitTutorialClicked()
}
}
}