app/resources/qml/Pages/StartPage.qml

176 lines
5.9 KiB
QML
Raw Normal View History

2019-05-11 15:21:43 +02:00
/*
blueROCK - for digital rock
Copyright (C) 2019 Dorian Zedler
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 3 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 <http://www.gnu.org/licenses/>.
*/
import QtQuick 2.9
import QtQuick.Controls 2.4
import QtQuick.Layouts 1.0
2021-06-08 19:23:55 +02:00
import QtQuick.Controls.Material 2.12
import "../Components"
Page {
id: root
title: "start"
signal headerComponentChanged()
BlueRockBadge {
id: headerBadge
anchors {
horizontalCenter: parent.horizontalCenter
top: parent.top
topMargin: root.height * 0.03
}
height: app.landscape() ? menuGr.buttonSize * 0.2:menuGr.buttonSize * 0.3
}
GridLayout {
id: menuGr
2021-06-17 15:08:34 +02:00
anchors.centerIn: parent
2021-06-17 15:08:34 +02:00
rows: app.landscape() ? 1:2
columns: app.landscape() ? 2:1
rowSpacing: app.landscape() ? parent.width * 0.1:headerBadge.anchors.topMargin
columnSpacing: rowSpacing
property int buttonSize: app.landscape() ? parent.width * 0.2:parent.height * 0.19
FancyButton {
id: davBt
Layout.preferredHeight: menuGr.buttonSize
Layout.preferredWidth: menuGr.buttonSize
Layout.alignment: Layout.Center
2021-06-08 19:23:55 +02:00
image: Material.theme === Material.Dark ? "qrc:/icons/dav-dark.png":"qrc:/icons/dav.png"
onClicked: {
app.openWidget({nation:"GER"})
}
}
FancyButton {
id: sacBt
Layout.preferredHeight: menuGr.buttonSize
Layout.preferredWidth: menuGr.buttonSize
Layout.alignment: Layout.Center
2021-06-08 19:23:55 +02:00
image: Material.theme === Material.Dark ? "qrc:/icons/sac-dark.png":"qrc:/icons/sac.png"
onClicked: {
app.openWidget({nation:"SUI"})
}
}
2021-06-17 15:08:34 +02:00
}
Grid {
2021-06-17 15:08:34 +02:00
id: footerMenu
2021-06-17 15:08:34 +02:00
anchors {
bottom: parent.bottom
margins: headerBadge.anchors.topMargin
horizontalCenter: parent.horizontalCenter
}
width: app.landscape() ? childrenRect.width : parent.width * 0.8
height: app.landscape() ? headerBadge.height : headerBadge.height * 2
columnSpacing: height * 0.1
2021-06-17 15:08:34 +02:00
columns: app.landscape() ? 4:2
rows: app.landscape() ? 1:2
Repeater {
id: buttonRepeater
property var buttons: [
["\uf059", "IFSC results", ifscDisclaimerDialog.open],
["\uf042", Material.theme === Material.Light ? "Dark mode":"Light mode", app.toggleDarkMode],
["\uf05a", "About blueROCK", aboutBluerockDisclaimerDialog.open],
["\uf029", "Scan QR code", qrCodeScanPopup.open],
2021-06-17 15:08:34 +02:00
]
2021-06-06 21:53:41 +02:00
2021-06-17 15:08:34 +02:00
model: buttons
2021-06-06 21:53:41 +02:00
2021-06-17 15:08:34 +02:00
delegate: Item {
2021-06-06 21:53:41 +02:00
width: app.landscape() ? footerMenuButton.implicitWidth : footerMenu.width * 0.5 - (footerMenu.columnSpacing / 2)
height: app.landscape() ? footerMenu.height : footerMenu.height * 0.5 - (footerMenu.rowSpacing / 2)
2021-06-17 15:08:34 +02:00
Button {
id: footerMenuButton
2021-06-17 15:08:34 +02:00
property bool isLeft: index % 2 === 0
anchors {
right: isLeft && !app.landscape() ? parent.right : undefined
left: isLeft && !app.landscape() ? undefined : parent.left
centerIn: app.landscape() ? parent : undefined
}
2021-06-06 21:53:41 +02:00
height: parent.height
flat: true
2021-06-06 21:53:41 +02:00
font.family: fa5solid.name
font.pixelSize: height * 0.4
font.capitalization: Font.MixedCase
2021-06-17 15:08:34 +02:00
//horizontalAlignment: isLeft ? Text.AlignRight : Text.AlignLeft
2021-06-06 21:53:41 +02:00
2021-06-17 15:08:34 +02:00
text: isLeft && !app.landscape() ? modelData[1] + " " + modelData[0] : modelData[0] + " " + modelData[1]
2021-06-17 15:08:34 +02:00
onClicked: buttonRepeater.buttons[index][2]()
}
}
}
}
2021-06-06 21:53:41 +02:00
DisclaimerDialog {
id: ifscDisclaimerDialog
2021-06-08 19:23:55 +02:00
Material.theme: root.Material.theme
title: "Where are the IFSC results?"
2021-06-06 21:53:41 +02:00
content: "Unfortunately, the IFSC has restricted the access to their data and <b>is not willing to share results with blueROCK anymore</b>. " +
"Because of this, blueROCK is no longer able to access and display IFSC results.<br><br>" +
"You can find current IFSC results <a href=\"https://ifsc.results.info\">over here</a> and on <a href=\"https://ifsc-climbing.org\">their website</a>."
}
2021-06-06 21:53:41 +02:00
DisclaimerDialog {
id: aboutBluerockDisclaimerDialog
2021-06-08 19:23:55 +02:00
Material.theme: root.Material.theme
2021-06-06 21:53:41 +02:00
title: "blueROCK v" + APP_VERSION + "<br>By <a href=\"https://itsblue.de\">Itsblue Development</a>"
content: "This app was built using the <a href='https://qt.io'>Qt Framework</a> " +
"licensed under the <a href='https://www.gnu.org/licenses/lgpl-3.0.en.html'>GNU lgplV3 license</a>.<br><br>"+
2021-06-06 21:53:41 +02:00
"This app is open source and licensed under the <a href='https://www.gnu.org/licenses/agpl-3.0.en.html'>GNU agplV3 license</a>," +
2021-06-17 15:08:34 +02:00
"the source code can be found <a href='https://itsblue.dev/dorian/blueROCK/'>here</a>.<br><br>" +
"Resultservice and rankings provided by <a href='http://www.digitalROCK.de'>digital ROCK</a>."
}
QrCodeScanPopup {
id: qrCodeScanPopup
Material.theme: root.Material.theme
}
}