added file again
This commit is contained in:
parent
565ae69709
commit
b25812f555
15 changed files with 1222 additions and 0 deletions
BIN
android-sources/res/drawable-hdpi/icon.png
Normal file
BIN
android-sources/res/drawable-hdpi/icon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 9.7 KiB |
BIN
android-sources/res/drawable-ldpi/icon.png
Normal file
BIN
android-sources/res/drawable-ldpi/icon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 9.7 KiB |
BIN
android-sources/res/drawable-mdpi/icon.png
Normal file
BIN
android-sources/res/drawable-mdpi/icon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 9.7 KiB |
43
qml/StartPage.qml
Normal file
43
qml/StartPage.qml
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
import QtQuick 2.9
|
||||||
|
import QtQuick.Controls 2.4
|
||||||
|
import "./"
|
||||||
|
import "./components"
|
||||||
|
|
||||||
|
Page {
|
||||||
|
id: root
|
||||||
|
|
||||||
|
background: Rectangle {
|
||||||
|
color: settings.theme("PageBackgroundColor")
|
||||||
|
}
|
||||||
|
|
||||||
|
signal pageOpened()
|
||||||
|
GameButton {
|
||||||
|
id: calenderButton
|
||||||
|
text: "calender"
|
||||||
|
height: parent.width * 0.2
|
||||||
|
anchors {
|
||||||
|
left: parent.left
|
||||||
|
top: parent.top
|
||||||
|
leftMargin: parent.width * 0.5 - width * 0.5
|
||||||
|
topMargin: parent.height * 0.3 - height * 0.5
|
||||||
|
}
|
||||||
|
onClicked: {
|
||||||
|
game.calender()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
GameButton {
|
||||||
|
id: calculatorButton
|
||||||
|
text: "calculator"
|
||||||
|
height: parent.width * 0.2
|
||||||
|
anchors {
|
||||||
|
left: parent.left
|
||||||
|
top: parent.top
|
||||||
|
leftMargin: parent.width * 0.5 - width * 0.5
|
||||||
|
topMargin: parent.height * 0.7 - height * 0.5
|
||||||
|
}
|
||||||
|
onClicked: {
|
||||||
|
game.calculator()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
152
qml/calculator/Calculator.qml
Normal file
152
qml/calculator/Calculator.qml
Normal file
|
@ -0,0 +1,152 @@
|
||||||
|
import QtQuick 2.11
|
||||||
|
import QtQuick.Controls 2.4
|
||||||
|
import "./"
|
||||||
|
|
||||||
|
Item {
|
||||||
|
id: calculator
|
||||||
|
|
||||||
|
property int sum: 0
|
||||||
|
property int nextNum: 0
|
||||||
|
property int lastNum: 0
|
||||||
|
property int actualNumCount: 0
|
||||||
|
property int min: 1
|
||||||
|
property int max: 9
|
||||||
|
property int tickInterval: 1000
|
||||||
|
property int numCount: 10
|
||||||
|
property bool endPageVisibility: false
|
||||||
|
property string endPageLabelText: "You Lose!"
|
||||||
|
|
||||||
|
signal pageOpened()
|
||||||
|
|
||||||
|
onPageOpened: {
|
||||||
|
calculator.start()
|
||||||
|
}
|
||||||
|
|
||||||
|
states: [
|
||||||
|
State {
|
||||||
|
name: "starting"
|
||||||
|
PropertyChanges {
|
||||||
|
target: calculatorStack
|
||||||
|
currPage: calculatorStartPageComp
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
State {
|
||||||
|
name: "running"
|
||||||
|
PropertyChanges {
|
||||||
|
target: calculatorStack
|
||||||
|
currPage: calculatorRunningPageComp
|
||||||
|
}
|
||||||
|
},
|
||||||
|
State {
|
||||||
|
name: "gameOver"
|
||||||
|
PropertyChanges {
|
||||||
|
target: calculatorStack
|
||||||
|
currPage: calculatorGameOverPageComp
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
StackView {
|
||||||
|
id: calculatorStack
|
||||||
|
|
||||||
|
property var currPage;
|
||||||
|
|
||||||
|
anchors.fill: parent
|
||||||
|
|
||||||
|
onCurrPageChanged: {
|
||||||
|
calculatorStack.replace(currPage)
|
||||||
|
}
|
||||||
|
onCurrentItemChanged: {
|
||||||
|
calculatorStack.currentItem.pageOpened()
|
||||||
|
}
|
||||||
|
|
||||||
|
Component {
|
||||||
|
id: calculatorStartPageComp
|
||||||
|
CalculatorStartPage {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Component {
|
||||||
|
id: calculatorRunningPageComp
|
||||||
|
CalculatorRunningPage {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Component {
|
||||||
|
id: calculatorGameOverPageComp
|
||||||
|
CalculatorGameOverPage {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
replaceExit: Transition {
|
||||||
|
NumberAnimation {
|
||||||
|
from: 1
|
||||||
|
to: 0
|
||||||
|
property: "opacity"
|
||||||
|
duration: 200
|
||||||
|
easing.type: Easing.InOutQuad
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
replaceEnter: Transition {
|
||||||
|
NumberAnimation {
|
||||||
|
from: 0
|
||||||
|
to: 1
|
||||||
|
property: "opacity"
|
||||||
|
duration: 200
|
||||||
|
easing.type: Easing.InOutQuad
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*-------------------------
|
||||||
|
---------functions---------
|
||||||
|
-------------------------*/
|
||||||
|
|
||||||
|
function start() {
|
||||||
|
calculator.reset()
|
||||||
|
calculator.state = "starting"
|
||||||
|
}
|
||||||
|
|
||||||
|
function run() {
|
||||||
|
calculator.nextNumber()
|
||||||
|
calculator.state = "running"
|
||||||
|
}
|
||||||
|
|
||||||
|
function gameOver() {
|
||||||
|
calculator.state = "gameOver"
|
||||||
|
}
|
||||||
|
|
||||||
|
function reset() {
|
||||||
|
calculator.sum = 0
|
||||||
|
calculator.actualNumCount = 0
|
||||||
|
calculator.endPageLabelText = "You Lose!"
|
||||||
|
calculator.endPageVisibility = false
|
||||||
|
calculator.lastNum = 0
|
||||||
|
calculator.nextNum = 0
|
||||||
|
}
|
||||||
|
|
||||||
|
function nextNumber(){
|
||||||
|
var randNum = 0
|
||||||
|
var range = calculator.max - calculator.min
|
||||||
|
lastNum = nextNum
|
||||||
|
while(randNum===0 || randNum === lastNum){
|
||||||
|
randNum = Math.floor((Math.random()*(range+1))+min)
|
||||||
|
}
|
||||||
|
nextNum = randNum
|
||||||
|
calculator.sum += randNum
|
||||||
|
actualNumCount += 1
|
||||||
|
}
|
||||||
|
|
||||||
|
function checkSum(sumInputText) {
|
||||||
|
if (sumInputText !== "") {
|
||||||
|
if (calculator.sum === parseInt(sumInputText)) {
|
||||||
|
calculator.endPageLabelText = "You Won!"
|
||||||
|
}
|
||||||
|
calculator.endPageVisibility = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
99
qml/calculator/CalculatorGameOverPage.qml
Normal file
99
qml/calculator/CalculatorGameOverPage.qml
Normal file
|
@ -0,0 +1,99 @@
|
||||||
|
import QtQuick 2.11
|
||||||
|
import QtQuick.Controls 2.4
|
||||||
|
import "./"
|
||||||
|
import "../components"
|
||||||
|
|
||||||
|
Page {
|
||||||
|
id: root
|
||||||
|
|
||||||
|
signal pageOpened()
|
||||||
|
|
||||||
|
background: Rectangle {
|
||||||
|
color: settings.theme("PageBackgroundColor")
|
||||||
|
}
|
||||||
|
|
||||||
|
TextField {
|
||||||
|
id: sumInput
|
||||||
|
placeholderText: "sum"
|
||||||
|
visible: !endPageVisibility
|
||||||
|
validator: IntValidator {bottom: -1000000; top: 1000000;}
|
||||||
|
anchors {
|
||||||
|
horizontalCenter: parent.horizontalCenter
|
||||||
|
top: parent.top
|
||||||
|
topMargin: parent.height * 0.1
|
||||||
|
}
|
||||||
|
Keys.onReturnPressed: calculator.checkSum(sumInput.text)
|
||||||
|
}
|
||||||
|
|
||||||
|
GameButton {
|
||||||
|
id: checkButton
|
||||||
|
height: parent.width * 0.2
|
||||||
|
text: "check"
|
||||||
|
visible: !calculator.endPageVisibility
|
||||||
|
anchors {
|
||||||
|
horizontalCenter: parent.horizontalCenter
|
||||||
|
top: parent.top
|
||||||
|
topMargin: parent.height * 0.3
|
||||||
|
}
|
||||||
|
onClicked: {
|
||||||
|
calculator.checkSum(sumInput.text)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Label {
|
||||||
|
id: won
|
||||||
|
text: calculator.endPageLabelText
|
||||||
|
font.pixelSize: parent.width * 0.2
|
||||||
|
visible: calculator.endPageVisibility
|
||||||
|
color: settings.theme("PageTextColor")
|
||||||
|
anchors {
|
||||||
|
horizontalCenter: parent.horizontalCenter
|
||||||
|
top: parent.top
|
||||||
|
topMargin: parent.height * 0.05
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Label {
|
||||||
|
id: sum
|
||||||
|
text: "Sum: " + calculator.sum
|
||||||
|
font.pixelSize: parent.width * 0.1
|
||||||
|
visible: calculator.endPageVisibility ? ( won.text==="You Lose!" ? true:false):false
|
||||||
|
color: settings.theme("PageTextColor")
|
||||||
|
anchors {
|
||||||
|
horizontalCenter: parent.horizontalCenter
|
||||||
|
top: parent.top
|
||||||
|
topMargin: parent.height * 0.4
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Row {
|
||||||
|
id: buttonRow
|
||||||
|
anchors {
|
||||||
|
horizontalCenter: parent.horizontalCenter
|
||||||
|
bottom: parent.bottom
|
||||||
|
bottomMargin: parent.height * 0.15
|
||||||
|
}
|
||||||
|
height: childrenRect.height
|
||||||
|
width: childrenRect.width
|
||||||
|
spacing: parent.width * 0.1
|
||||||
|
visible: calculator.endPageVisibility ? true:false
|
||||||
|
|
||||||
|
GameButton {
|
||||||
|
id: homeButton
|
||||||
|
height: root.width * 0.2
|
||||||
|
text: "home"
|
||||||
|
onClicked: {
|
||||||
|
game.start()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
GameButton {
|
||||||
|
id: startButtons
|
||||||
|
height: root.width * 0.2
|
||||||
|
text: "start"
|
||||||
|
onClicked: {
|
||||||
|
calculator.start()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
116
qml/calculator/CalculatorRunningPage.qml
Normal file
116
qml/calculator/CalculatorRunningPage.qml
Normal file
|
@ -0,0 +1,116 @@
|
||||||
|
import QtQuick 2.9
|
||||||
|
import QtQuick.Controls 2.4
|
||||||
|
import "./"
|
||||||
|
|
||||||
|
Page {
|
||||||
|
id: root
|
||||||
|
|
||||||
|
signal pageOpened()
|
||||||
|
|
||||||
|
background: Rectangle {
|
||||||
|
color: settings.theme("PageBackgroundColor")
|
||||||
|
}
|
||||||
|
|
||||||
|
Label {
|
||||||
|
id: num
|
||||||
|
anchors.centerIn: parent
|
||||||
|
font.pixelSize: parent.height * 0.6
|
||||||
|
text: calculator.nextNum
|
||||||
|
color: settings.theme("PageTextColor")
|
||||||
|
}
|
||||||
|
|
||||||
|
Label {
|
||||||
|
id: gameProcess
|
||||||
|
text: calculator.actualNumCount + " of " + calculator.numCount
|
||||||
|
font.pixelSize: parent.width * 0.05
|
||||||
|
color: settings.theme("PageTextColor")
|
||||||
|
anchors {
|
||||||
|
right: parent.right
|
||||||
|
rightMargin: parent.width * 0.025
|
||||||
|
bottom: parent.bottom
|
||||||
|
bottomMargin: parent.height * 0.05
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
ProgressBar {
|
||||||
|
id: prog
|
||||||
|
property int progress: 0
|
||||||
|
property string color: "green"
|
||||||
|
value: progress/100
|
||||||
|
anchors {
|
||||||
|
bottom: parent.bottom
|
||||||
|
bottomMargin: parent.height * 0.02
|
||||||
|
left: parent.left
|
||||||
|
leftMargin: parent.width * 0.01
|
||||||
|
right: parent.right
|
||||||
|
rightMargin: parent.width * 0.01
|
||||||
|
}
|
||||||
|
|
||||||
|
contentItem: Item {
|
||||||
|
Rectangle {
|
||||||
|
width: prog.visualPosition * parent.width
|
||||||
|
height: parent.height
|
||||||
|
color: prog.color
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
NumberAnimation {
|
||||||
|
id: progNumAnim
|
||||||
|
target: prog
|
||||||
|
property: "progress"
|
||||||
|
from: 100
|
||||||
|
to: 0
|
||||||
|
duration: tick.interval
|
||||||
|
easing.type: Easing.Linear
|
||||||
|
}
|
||||||
|
|
||||||
|
SequentialAnimation {
|
||||||
|
id: progColAnim
|
||||||
|
loops: 1
|
||||||
|
ColorAnimation {
|
||||||
|
id: progColAnim1
|
||||||
|
target: prog
|
||||||
|
property: "color"
|
||||||
|
from: "green"
|
||||||
|
to: "goldenrod"
|
||||||
|
duration: tick.interval/2
|
||||||
|
easing.type: Easing.Linear
|
||||||
|
}
|
||||||
|
ColorAnimation {
|
||||||
|
id: progColAnim2
|
||||||
|
target: prog
|
||||||
|
property: "color"
|
||||||
|
from: "goldenrod"
|
||||||
|
to: "darkRed"
|
||||||
|
duration: tick.interval/2
|
||||||
|
easing.type: Easing.Linear
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
Timer {
|
||||||
|
id: tick
|
||||||
|
interval: calculator.tickInterval
|
||||||
|
repeat: false
|
||||||
|
running: calculator.state === "running"
|
||||||
|
|
||||||
|
onTriggered: {
|
||||||
|
if (calculator.actualNumCount < calculator.numCount) {
|
||||||
|
nextNumber()
|
||||||
|
tick.start()
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
calculator.state = "gameOver"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
onRunningChanged: {
|
||||||
|
if(running){
|
||||||
|
progNumAnim.start()
|
||||||
|
progColAnim.start()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
143
qml/calculator/CalculatorStartPage.qml
Normal file
143
qml/calculator/CalculatorStartPage.qml
Normal file
|
@ -0,0 +1,143 @@
|
||||||
|
import QtQuick 2.11
|
||||||
|
import QtQuick.Controls 2.4
|
||||||
|
import QtQuick.Layouts 1.3
|
||||||
|
import "./"
|
||||||
|
import "../components"
|
||||||
|
|
||||||
|
Page {
|
||||||
|
id: root
|
||||||
|
|
||||||
|
signal pageOpened()
|
||||||
|
|
||||||
|
background: Rectangle {
|
||||||
|
color: settings.theme("PageBackgroundColor")
|
||||||
|
}
|
||||||
|
|
||||||
|
ColumnLayout {
|
||||||
|
id: column
|
||||||
|
//spacing: height / 40
|
||||||
|
width: parent.width
|
||||||
|
anchors.fill: parent
|
||||||
|
anchors.topMargin: parent.height * 0.02
|
||||||
|
anchors.bottomMargin: parent.height * 0.02
|
||||||
|
|
||||||
|
Label {
|
||||||
|
id: heading
|
||||||
|
font.pixelSize: parent.width * 0.075
|
||||||
|
text: "Calculator"
|
||||||
|
color: settings.theme("PageTextColor")
|
||||||
|
Layout.fillWidth: true
|
||||||
|
Layout.leftMargin: parent.width * 0.5 - width * 0.5
|
||||||
|
Layout.rightMargin: parent.width * 0.5 - width * 0.5
|
||||||
|
}
|
||||||
|
|
||||||
|
Label {
|
||||||
|
id: tickIntervalInfo
|
||||||
|
text: "Interval:"
|
||||||
|
color: settings.theme("PageTextColor")
|
||||||
|
font.pixelSize: parent.height * 0.05
|
||||||
|
Layout.leftMargin: parent.width * 0.05
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
TextField {
|
||||||
|
id: tickInterval
|
||||||
|
text: calculator.tickInterval
|
||||||
|
placeholderText: "interval"
|
||||||
|
validator: IntValidator {bottom: 1; top: 100000;}
|
||||||
|
horizontalAlignment: Qt.AlignHCenter
|
||||||
|
Layout.fillWidth: true
|
||||||
|
Layout.leftMargin: parent.width * 0.05
|
||||||
|
Layout.rightMargin: parent.width * 0.05
|
||||||
|
Keys.onReturnPressed: root.start()
|
||||||
|
}
|
||||||
|
|
||||||
|
Label {
|
||||||
|
id: numCountInfo
|
||||||
|
text: "Summands:"
|
||||||
|
font.pixelSize: parent.height * 0.05
|
||||||
|
color: settings.theme("PageTextColor")
|
||||||
|
Layout.leftMargin: parent.width * 0.05
|
||||||
|
}
|
||||||
|
|
||||||
|
TextField {
|
||||||
|
id: numCount
|
||||||
|
text: calculator.numCount
|
||||||
|
placeholderText: "summands"
|
||||||
|
validator: IntValidator {bottom: 1; top: 100000;}
|
||||||
|
horizontalAlignment: Qt.AlignHCenter
|
||||||
|
Layout.fillWidth: true
|
||||||
|
Layout.leftMargin: parent.width * 0.05
|
||||||
|
Layout.rightMargin: parent.width * 0.05
|
||||||
|
Keys.onReturnPressed: root.start()
|
||||||
|
}
|
||||||
|
|
||||||
|
Label {
|
||||||
|
id: minInfo
|
||||||
|
text: "Minimum:"
|
||||||
|
font.pixelSize: parent.height * 0.05
|
||||||
|
color: settings.theme("PageTextColor")
|
||||||
|
Layout.leftMargin: parent.width * 0.05
|
||||||
|
}
|
||||||
|
|
||||||
|
TextField {
|
||||||
|
id: min
|
||||||
|
text: calculator.min
|
||||||
|
placeholderText: "minimum"
|
||||||
|
validator: IntValidator {bottom: -100000; top: 100000;}
|
||||||
|
horizontalAlignment: Qt.AlignHCenter
|
||||||
|
Layout.fillWidth: true
|
||||||
|
Layout.leftMargin: parent.width * 0.05
|
||||||
|
Layout.rightMargin: parent.width * 0.05
|
||||||
|
Keys.onReturnPressed: root.start()
|
||||||
|
}
|
||||||
|
|
||||||
|
Label {
|
||||||
|
id: maxInfo
|
||||||
|
text: "Maximum:"
|
||||||
|
font.pixelSize: parent.height * 0.05
|
||||||
|
color: settings.theme("PageTextColor")
|
||||||
|
Layout.leftMargin: parent.width * 0.05
|
||||||
|
}
|
||||||
|
|
||||||
|
TextField {
|
||||||
|
id: max
|
||||||
|
text: calculator.max
|
||||||
|
placeholderText: "maximum"
|
||||||
|
validator: IntValidator {bottom: -100000; top: 100000;}
|
||||||
|
horizontalAlignment: Qt.AlignHCenter
|
||||||
|
Layout.fillWidth: true
|
||||||
|
Layout.leftMargin: parent.width * 0.05
|
||||||
|
Layout.rightMargin: parent.width * 0.05
|
||||||
|
Keys.onReturnPressed: root.start()
|
||||||
|
}
|
||||||
|
|
||||||
|
RoundButton {
|
||||||
|
id: startButton
|
||||||
|
text: "start"
|
||||||
|
height: parent.width * 0.1
|
||||||
|
//width: height
|
||||||
|
//font.pixelSize: parent.width * 0.03
|
||||||
|
Layout.fillWidth: true
|
||||||
|
Layout.leftMargin: parent.width * 0.05
|
||||||
|
Layout.rightMargin: parent.width * 0.05
|
||||||
|
onClicked: {
|
||||||
|
root.start()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function start() {
|
||||||
|
if (tickInterval.text > 0 && numCount.text > 0 && max.text > min.text) {
|
||||||
|
root.updateVars()
|
||||||
|
calculator.run()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function updateVars() {
|
||||||
|
calculator.tickInterval = tickInterval.text
|
||||||
|
calculator.numCount = numCount.text
|
||||||
|
calculator.min = min.text
|
||||||
|
calculator.max = max.text
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
197
qml/calender/Calender.qml
Normal file
197
qml/calender/Calender.qml
Normal file
|
@ -0,0 +1,197 @@
|
||||||
|
import QtQuick 2.11
|
||||||
|
import QtQuick.Controls 2.4
|
||||||
|
import "./"
|
||||||
|
|
||||||
|
Item {
|
||||||
|
id: calender
|
||||||
|
|
||||||
|
property string nextDate: "31.12.1799"
|
||||||
|
property string lastDate: "30.12.1799"
|
||||||
|
property int actualDateCount: 0
|
||||||
|
property int min: 1800
|
||||||
|
property int max: 2199
|
||||||
|
property int tickInterval: 10000
|
||||||
|
property int dateCount: 10
|
||||||
|
property int correct: 0
|
||||||
|
property int wrong: 0
|
||||||
|
property int weekDay: 1
|
||||||
|
property bool runningPageState: true
|
||||||
|
|
||||||
|
signal pageOpened()
|
||||||
|
|
||||||
|
onPageOpened: {
|
||||||
|
calender.start()
|
||||||
|
}
|
||||||
|
|
||||||
|
states: [
|
||||||
|
State {
|
||||||
|
name: "starting"
|
||||||
|
PropertyChanges {
|
||||||
|
target: calenderStack
|
||||||
|
currPage: calenderStartPageComp
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
State {
|
||||||
|
name: "running"
|
||||||
|
PropertyChanges {
|
||||||
|
target: calenderStack
|
||||||
|
currPage: calenderRunningPageComp
|
||||||
|
}
|
||||||
|
},
|
||||||
|
State {
|
||||||
|
name: "gameOver"
|
||||||
|
PropertyChanges {
|
||||||
|
target: calenderStack
|
||||||
|
currPage: calenderGameOverPageComp
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
StackView {
|
||||||
|
id: calenderStack
|
||||||
|
|
||||||
|
property var currPage;
|
||||||
|
|
||||||
|
anchors.fill: parent
|
||||||
|
|
||||||
|
onCurrPageChanged: {
|
||||||
|
calenderStack.replace(currPage)
|
||||||
|
}
|
||||||
|
onCurrentItemChanged: {
|
||||||
|
calenderStack.currentItem.pageOpened()
|
||||||
|
}
|
||||||
|
|
||||||
|
Component {
|
||||||
|
id: calenderStartPageComp
|
||||||
|
CalenderStartPage {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Component {
|
||||||
|
id: calenderRunningPageComp
|
||||||
|
CalenderRunningPage {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Component {
|
||||||
|
id: calenderGameOverPageComp
|
||||||
|
CalenderGameOverPage {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
replaceExit: Transition {
|
||||||
|
NumberAnimation {
|
||||||
|
from: 1
|
||||||
|
to: 0
|
||||||
|
property: "opacity"
|
||||||
|
duration: 200
|
||||||
|
easing.type: Easing.InOutQuad
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
replaceEnter: Transition {
|
||||||
|
NumberAnimation {
|
||||||
|
from: 0
|
||||||
|
to: 1
|
||||||
|
property: "opacity"
|
||||||
|
duration: 200
|
||||||
|
easing.type: Easing.InOutQuad
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*-------------------------
|
||||||
|
---------functions---------
|
||||||
|
-------------------------*/
|
||||||
|
|
||||||
|
function start() {
|
||||||
|
calender.reset()
|
||||||
|
calender.state = "starting"
|
||||||
|
}
|
||||||
|
|
||||||
|
function run() {
|
||||||
|
calender.generateNextDate()
|
||||||
|
calender.state = "running"
|
||||||
|
}
|
||||||
|
|
||||||
|
function gameOver() {
|
||||||
|
calender.state = "gameOver"
|
||||||
|
}
|
||||||
|
|
||||||
|
function reset() {
|
||||||
|
calender.actualDateCount = 0
|
||||||
|
calender.lastDate = 0
|
||||||
|
calender.nextDate = 0
|
||||||
|
calender.correct = 0
|
||||||
|
calender.wrong = 0
|
||||||
|
}
|
||||||
|
|
||||||
|
function generateNextDate() {
|
||||||
|
var daysPerMonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
|
||||||
|
var monthCodes = [6, 2, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4]
|
||||||
|
var yearCode = 0
|
||||||
|
var randDate = calender.nextDate
|
||||||
|
var randDay = 31
|
||||||
|
var randMonth = 12
|
||||||
|
var randYear = 1799
|
||||||
|
var range = calender.max - calender.min
|
||||||
|
var century = 17
|
||||||
|
var weekDay = 1
|
||||||
|
calender.lastDate = calender.nextDate
|
||||||
|
while (randDate === calender.lastDate) {
|
||||||
|
//console.log("entered mainwhile " + "yearCode: " + yearCode + " randDate: " + randDate + " randDay: " + randDay + " randMonth: " + randMonth + " randYear: " + randYear + " Range: " + range + " century: " + century + " weekDay: " + weekDay)
|
||||||
|
randYear = Math.floor((Math.random()*(range+1))+calender.min)
|
||||||
|
//console.log("generated year " + "yearCode: " + yearCode + " randDate: " + randDate + " randDay: " + randDay + " randMonth: " + randMonth + " randYear: " + randYear + " Range: " + range + " century: " + century + " weekDay: " + weekDay)
|
||||||
|
century = Math.floor(randYear/100)
|
||||||
|
//console.log("calculated century " + "yearCode: " + yearCode + " randDate: " + randDate + " randDay: " + randDay + " randMonth: " + randMonth + " randYear: " + randYear + " Range: " + range + " century: " + century + " weekDay: " + weekDay)
|
||||||
|
yearCode = (randYear - century * 100) + Math.floor((randYear - century * 100)/4)
|
||||||
|
//console.log("generated yearCode " + "yearCode: " + yearCode + " randDate: " + randDate + " randDay: " + randDay + " randMonth: " + randMonth + " randYear: " + randYear + " Range: " + range + " century: " + century + " weekDay: " + weekDay)
|
||||||
|
while (century > 21) {
|
||||||
|
century -= 4
|
||||||
|
//console.log("down count century " + "yearCode: " + yearCode + " randDate: " + randDate + " randDay: " + randDay + " randMonth: " + randMonth + " randYear: " + randYear + " Range: " + range + " century: " + century + " weekDay: " + weekDay)
|
||||||
|
}
|
||||||
|
switch (century) {
|
||||||
|
case 18:
|
||||||
|
yearCode += 3
|
||||||
|
break
|
||||||
|
case 19:
|
||||||
|
yearCode += 1
|
||||||
|
break
|
||||||
|
case 21:
|
||||||
|
yearCode += 5
|
||||||
|
break
|
||||||
|
default:
|
||||||
|
//console.log("added century specified value to yearCode " + "yearCode: " + yearCode + " randDate: " + randDate + " randDay: " + randDay + " randMonth: " + randMonth + " randYear: " + randYear + " Range: " + range + " century: " + century + " weekDay: " + weekDay)
|
||||||
|
}
|
||||||
|
randMonth = Math.floor((Math.random()*(12))+1)
|
||||||
|
//console.log("generated month " + "yearCode: " + yearCode + " randDate: " + randDate + " randDay: " + randDay + " randMonth: " + randMonth + " randYear: " + randYear + " Range: " + range + " century: " + century + " weekDay: " + weekDay)
|
||||||
|
if (randYear % 4 === 0 && randMonth <= 2) {
|
||||||
|
yearCode += 6
|
||||||
|
//console.log("if leap-year " + "yearCode: " + yearCode + " randDate: " + randDate + " randDay: " + randDay + " randMonth: " + randMonth + " randYear: " + randYear + " Range: " + range + " century: " + century + " weekDay: " + weekDay)
|
||||||
|
}
|
||||||
|
while (yearCode >= 7) {
|
||||||
|
yearCode -= 7
|
||||||
|
//console.log("down count yearCode " + "yearCode: " + yearCode + " randDate: " + randDate + " randDay: " + randDay + " randMonth: " + randMonth + " randYear: " + randYear + " Range: " + range + " century: " + century + " weekDay: " + weekDay)
|
||||||
|
}
|
||||||
|
randDay = Math.floor((Math.random()*(daysPerMonth[randMonth-1]))+1)
|
||||||
|
//console.log("generated Day " + "yearCode: " + yearCode + " randDate: " + randDate + " randDay: " + randDay + " randMonth: " + randMonth + " randYear: " + randYear + " Range: " + range + " century: " + century + " weekDay: " + weekDay)
|
||||||
|
randDate = String(randDay) + "." + String(randMonth) + "." + String(randYear)
|
||||||
|
//console.log("generated randDate " + "yearCode: " + yearCode + " randDate: " + randDate + " randDay: " + randDay + " randMonth: " + randMonth + " randYear: " + randYear + " Range: " + range + " century: " + century + " weekDay: " + weekDay)
|
||||||
|
}
|
||||||
|
weekDay = (yearCode + monthCodes[randMonth-1] + randDay) // - 7*Math.floor((yearCode + monthCodes[randMonth-1] + randDay)/7)
|
||||||
|
//console.log("generated weekday " + "yearCode: " + yearCode + " randDate: " + randDate + " randDay: " + randDay + " randMonth: " + randMonth + " randYear: " + randYear + " Range: " + range + " century: " + century + " weekDay: " + weekDay)
|
||||||
|
//weekDay -= 7*Math.floor(weekDay/7)
|
||||||
|
while (weekDay >= 7) {
|
||||||
|
weekDay -= 7
|
||||||
|
//console.log("down count weekday " + "yearCode: " + yearCode + " randDate: " + randDate + /*" randDay: " + randDay + " randMonth: " + randMonth + " randYear: " + randYear + " Range: " + range + */ " century: " + century + " weekDay: " + weekDay)
|
||||||
|
}
|
||||||
|
console.log("randDate: " + randDate + " yearCode: " + yearCode + " century: " + century + " weekDay: " + weekDay)
|
||||||
|
calender.weekDay = weekDay
|
||||||
|
calender.nextDate = randDate
|
||||||
|
calender.actualDateCount += 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
57
qml/calender/CalenderGameOverPage.qml
Normal file
57
qml/calender/CalenderGameOverPage.qml
Normal file
|
@ -0,0 +1,57 @@
|
||||||
|
import QtQuick 2.11
|
||||||
|
import QtQuick.Controls 2.4
|
||||||
|
import "./"
|
||||||
|
|
||||||
|
Page {
|
||||||
|
id: root
|
||||||
|
|
||||||
|
signal pageOpened()
|
||||||
|
|
||||||
|
background: Rectangle {
|
||||||
|
color: settings.theme("PageBackgroundColor")
|
||||||
|
}
|
||||||
|
|
||||||
|
Label {
|
||||||
|
id: percent
|
||||||
|
text: "You had " + calender.dateCount/calender.correct*100 + "% right!"
|
||||||
|
font.pixelSize: parent.width * 0.05
|
||||||
|
color: settings.theme("PageTextColor")
|
||||||
|
anchors {
|
||||||
|
horizontalCenter: parent.horizontalCenter
|
||||||
|
top: parent.top
|
||||||
|
topMargin: parent.height * 0.2
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Row {
|
||||||
|
id: buttonRow
|
||||||
|
anchors {
|
||||||
|
horizontalCenter: parent.horizontalCenter
|
||||||
|
bottom: parent.bottom
|
||||||
|
bottomMargin: parent.height * 0.15
|
||||||
|
}
|
||||||
|
height: childrenRect.height
|
||||||
|
width: childrenRect.width
|
||||||
|
spacing: parent.width * 0.1
|
||||||
|
|
||||||
|
RoundButton {
|
||||||
|
id: homeButton
|
||||||
|
height: root.width * 0.2
|
||||||
|
width: height
|
||||||
|
text: "home"
|
||||||
|
onClicked: {
|
||||||
|
game.start()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
RoundButton {
|
||||||
|
id: startButtons
|
||||||
|
height: root.width * 0.2
|
||||||
|
width: height
|
||||||
|
text: "start"
|
||||||
|
onClicked: {
|
||||||
|
calender.start()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
144
qml/calender/CalenderRunningPage.qml
Normal file
144
qml/calender/CalenderRunningPage.qml
Normal file
|
@ -0,0 +1,144 @@
|
||||||
|
import QtQuick 2.9
|
||||||
|
import QtQuick.Controls 2.4
|
||||||
|
import "./"
|
||||||
|
|
||||||
|
Page {
|
||||||
|
id: root
|
||||||
|
|
||||||
|
signal pageOpened()
|
||||||
|
|
||||||
|
background: Rectangle {
|
||||||
|
color: settings.theme("PageBackgroundColor")
|
||||||
|
}
|
||||||
|
|
||||||
|
Label {
|
||||||
|
id: date
|
||||||
|
anchors.centerIn: parent
|
||||||
|
font.pixelSize: parent.height * 0.2
|
||||||
|
text: calender.nextDate
|
||||||
|
visible: calender.runningPageState ? true:false
|
||||||
|
color: settings.theme("PageTextColor")
|
||||||
|
}
|
||||||
|
|
||||||
|
Label {
|
||||||
|
id: gameProcess
|
||||||
|
text: calender.actualDateCount + " of " + calender.dateCount
|
||||||
|
font.pixelSize: parent.width * 0.05
|
||||||
|
color: settings.theme("PageTextColor")
|
||||||
|
anchors {
|
||||||
|
right: parent.right
|
||||||
|
rightMargin: parent.width * 0.025
|
||||||
|
bottom: parent.bottom
|
||||||
|
bottomMargin: parent.height * 0.05
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
ProgressBar {
|
||||||
|
id: prog
|
||||||
|
property int progress: 0
|
||||||
|
property string color: "green"
|
||||||
|
value: progress/100
|
||||||
|
anchors {
|
||||||
|
bottom: parent.bottom
|
||||||
|
bottomMargin: parent.height * 0.02
|
||||||
|
left: parent.left
|
||||||
|
leftMargin: parent.width * 0.01
|
||||||
|
right: parent.right
|
||||||
|
rightMargin: parent.width * 0.01
|
||||||
|
}
|
||||||
|
visible: calender.runningPageState ? true:false
|
||||||
|
contentItem: Item {
|
||||||
|
Rectangle {
|
||||||
|
width: prog.visualPosition * parent.width
|
||||||
|
height: parent.height
|
||||||
|
color: prog.color
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
NumberAnimation {
|
||||||
|
id: progNumAnim
|
||||||
|
target: prog
|
||||||
|
property: "progress"
|
||||||
|
from: 100
|
||||||
|
to: 0
|
||||||
|
duration: tick.interval
|
||||||
|
easing.type: Easing.Linear
|
||||||
|
}
|
||||||
|
|
||||||
|
SequentialAnimation {
|
||||||
|
id: progColAnim
|
||||||
|
loops: 1
|
||||||
|
ColorAnimation {
|
||||||
|
id: progColAnim1
|
||||||
|
target: prog
|
||||||
|
property: "color"
|
||||||
|
from: "green"
|
||||||
|
to: "goldenrod"
|
||||||
|
duration: tick.interval/2
|
||||||
|
easing.type: Easing.Linear
|
||||||
|
}
|
||||||
|
ColorAnimation {
|
||||||
|
id: progColAnim2
|
||||||
|
target: prog
|
||||||
|
property: "color"
|
||||||
|
from: "goldenrod"
|
||||||
|
to: "darkRed"
|
||||||
|
duration: tick.interval/2
|
||||||
|
easing.type: Easing.Linear
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ComboBox {
|
||||||
|
id: comboBox
|
||||||
|
model: ["None", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]
|
||||||
|
anchors.centerIn: parent
|
||||||
|
visible: calender.runningPageState ? false:true
|
||||||
|
onCurrentTextChanged: {
|
||||||
|
if (currentIndex !== 0) {
|
||||||
|
if (currentIndex === calender.weekDay) {
|
||||||
|
calender.correct += 1
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
calender.wrong += 1
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
Timer, {
|
||||||
|
id: pause
|
||||||
|
interval: 200
|
||||||
|
repeat: false
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (calender.actualDateCount < calender.dateCount) {
|
||||||
|
calender.generateNextDate()
|
||||||
|
tick.start()
|
||||||
|
calender.runningPageState = true
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
calender.state = "gameOver"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Timer {
|
||||||
|
id: tick
|
||||||
|
interval: calender.tickInterval
|
||||||
|
repeat: false
|
||||||
|
running: calender.state === "running"
|
||||||
|
|
||||||
|
onTriggered: {
|
||||||
|
calender.runningPageState = false
|
||||||
|
comboBox.currentIndex = 0
|
||||||
|
}
|
||||||
|
|
||||||
|
onRunningChanged: {
|
||||||
|
if(running){
|
||||||
|
progNumAnim.start()
|
||||||
|
progColAnim.start()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
142
qml/calender/CalenderStartPage.qml
Normal file
142
qml/calender/CalenderStartPage.qml
Normal file
|
@ -0,0 +1,142 @@
|
||||||
|
import QtQuick 2.11
|
||||||
|
import QtQuick.Controls 2.4
|
||||||
|
import QtQuick.Layouts 1.3
|
||||||
|
import "./"
|
||||||
|
|
||||||
|
Page {
|
||||||
|
id: root
|
||||||
|
|
||||||
|
signal pageOpened()
|
||||||
|
|
||||||
|
background: Rectangle {
|
||||||
|
color: settings.theme("PageBackgroundColor")
|
||||||
|
}
|
||||||
|
|
||||||
|
ColumnLayout {
|
||||||
|
id: column
|
||||||
|
//spacing: height / 40
|
||||||
|
width: parent.width
|
||||||
|
anchors.fill: parent
|
||||||
|
anchors.topMargin: parent.height * 0.02
|
||||||
|
anchors.bottomMargin: parent.height * 0.02
|
||||||
|
|
||||||
|
Label {
|
||||||
|
id: heading
|
||||||
|
font.pixelSize: parent.width * 0.075
|
||||||
|
text: "Calender"
|
||||||
|
color: settings.theme("PageTextColor")
|
||||||
|
Layout.fillWidth: true
|
||||||
|
Layout.leftMargin: parent.width * 0.5 - width * 0.5
|
||||||
|
Layout.rightMargin: parent.width * 0.5 - width * 0.5
|
||||||
|
}
|
||||||
|
|
||||||
|
Label {
|
||||||
|
id: tickIntervalInfo
|
||||||
|
text: "Interval:"
|
||||||
|
font.pixelSize: parent.height * 0.05
|
||||||
|
color: settings.theme("PageTextColor")
|
||||||
|
Layout.leftMargin: parent.width * 0.05
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
TextField {
|
||||||
|
id: tickInterval
|
||||||
|
text: calender.tickInterval
|
||||||
|
placeholderText: "interval"
|
||||||
|
validator: IntValidator {bottom: 1; top: 1000000;}
|
||||||
|
horizontalAlignment: Qt.AlignHCenter
|
||||||
|
Layout.fillWidth: true
|
||||||
|
Layout.leftMargin: parent.width * 0.05
|
||||||
|
Layout.rightMargin: parent.width * 0.05
|
||||||
|
Keys.onReturnPressed: root.start()
|
||||||
|
}
|
||||||
|
|
||||||
|
Label {
|
||||||
|
id: dateCountInfo
|
||||||
|
text: "Dates:"
|
||||||
|
font.pixelSize: parent.height * 0.05
|
||||||
|
color: settings.theme("PageTextColor")
|
||||||
|
Layout.leftMargin: parent.width * 0.05
|
||||||
|
}
|
||||||
|
|
||||||
|
TextField {
|
||||||
|
id: dateCount
|
||||||
|
text: calender.dateCount
|
||||||
|
placeholderText: "dates"
|
||||||
|
validator: IntValidator {bottom: 1; top: 100000;}
|
||||||
|
color: settings.theme("PageTextColor")
|
||||||
|
horizontalAlignment: Qt.AlignHCenter
|
||||||
|
Layout.fillWidth: true
|
||||||
|
Layout.leftMargin: parent.width * 0.05
|
||||||
|
Layout.rightMargin: parent.width * 0.05
|
||||||
|
Keys.onReturnPressed: root.start()
|
||||||
|
}
|
||||||
|
|
||||||
|
Label {
|
||||||
|
id: minInfo
|
||||||
|
text: "Minimum:"
|
||||||
|
font.pixelSize: parent.height * 0.05
|
||||||
|
color: settings.theme("PageTextColor")
|
||||||
|
Layout.leftMargin: parent.width * 0.05
|
||||||
|
}
|
||||||
|
|
||||||
|
TextField {
|
||||||
|
id: min
|
||||||
|
text: calender.min
|
||||||
|
placeholderText: "minimum"
|
||||||
|
validator: IntValidator {bottom: 1800; top: 10000;}
|
||||||
|
horizontalAlignment: Qt.AlignHCenter
|
||||||
|
Layout.fillWidth: true
|
||||||
|
Layout.leftMargin: parent.width * 0.05
|
||||||
|
Layout.rightMargin: parent.width * 0.05
|
||||||
|
Keys.onReturnPressed: root.start()
|
||||||
|
}
|
||||||
|
|
||||||
|
Label {
|
||||||
|
id: maxInfo
|
||||||
|
text: "Maximum:"
|
||||||
|
font.pixelSize: parent.height * 0.05
|
||||||
|
color: settings.theme("PageTextColor")
|
||||||
|
Layout.leftMargin: parent.width * 0.05
|
||||||
|
}
|
||||||
|
|
||||||
|
TextField {
|
||||||
|
id: max
|
||||||
|
text: calender.max
|
||||||
|
placeholderText: "maximum"
|
||||||
|
validator: IntValidator {bottom: 1800; top: 10000;}
|
||||||
|
horizontalAlignment: Qt.AlignHCenter
|
||||||
|
Layout.fillWidth: true
|
||||||
|
Layout.leftMargin: parent.width * 0.05
|
||||||
|
Layout.rightMargin: parent.width * 0.05
|
||||||
|
Keys.onReturnPressed: root.start()
|
||||||
|
}
|
||||||
|
|
||||||
|
RoundButton {
|
||||||
|
id: startButton
|
||||||
|
text: "start"
|
||||||
|
height: parent.width * 0.1
|
||||||
|
width: height
|
||||||
|
//font.pixelSize: parent.width * 0.03
|
||||||
|
Layout.fillWidth: true
|
||||||
|
Layout.leftMargin: parent.width * 0.05
|
||||||
|
Layout.rightMargin: parent.width * 0.05
|
||||||
|
onClicked: {
|
||||||
|
root.start()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function start() {
|
||||||
|
if (tickInterval.text > 0 && dateCount.text > 0 && min.text >= 1800 && max.text >= min.text) {
|
||||||
|
root.updateVars()
|
||||||
|
calender.run()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function updateVars() {
|
||||||
|
calender.tickInterval = tickInterval.text
|
||||||
|
calender.dateCount = dateCount.text
|
||||||
|
calender.min = min.text
|
||||||
|
calender.max = max.text
|
||||||
|
}
|
||||||
|
}
|
114
qml/main.qml
Normal file
114
qml/main.qml
Normal file
|
@ -0,0 +1,114 @@
|
||||||
|
import QtQuick 2.9
|
||||||
|
import QtQuick.Window 2.3
|
||||||
|
import QtQuick.Controls 2.4
|
||||||
|
import "./calender"
|
||||||
|
import "./calculator"
|
||||||
|
import com.max.mathtrainingstuff 1.0
|
||||||
|
|
||||||
|
|
||||||
|
Window {
|
||||||
|
visible: true
|
||||||
|
width: 540 * 0.6
|
||||||
|
height: 960 * 0.6
|
||||||
|
title: qsTr("Training")
|
||||||
|
|
||||||
|
color: settings.theme("PageBackgroundColor")
|
||||||
|
|
||||||
|
Item {
|
||||||
|
id: game
|
||||||
|
anchors.fill: parent
|
||||||
|
|
||||||
|
AppSettings {
|
||||||
|
id: settings
|
||||||
|
}
|
||||||
|
|
||||||
|
state: "starting"
|
||||||
|
|
||||||
|
states: [
|
||||||
|
State {
|
||||||
|
name: "starting"
|
||||||
|
PropertyChanges {
|
||||||
|
target: mainStack
|
||||||
|
currPage: startPageComp
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
State {
|
||||||
|
name: "calender"
|
||||||
|
PropertyChanges {
|
||||||
|
target: mainStack
|
||||||
|
currPage: calenderPageComp
|
||||||
|
}
|
||||||
|
},
|
||||||
|
State {
|
||||||
|
name: "calculator"
|
||||||
|
PropertyChanges {
|
||||||
|
target: mainStack
|
||||||
|
currPage: calculatorPageComp
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
StackView {
|
||||||
|
id: mainStack
|
||||||
|
|
||||||
|
property var currPage
|
||||||
|
|
||||||
|
anchors.fill: parent
|
||||||
|
|
||||||
|
onCurrPageChanged: {
|
||||||
|
mainStack.replace(currPage)
|
||||||
|
}
|
||||||
|
onCurrentItemChanged: {
|
||||||
|
mainStack.currentItem.pageOpened()
|
||||||
|
}
|
||||||
|
|
||||||
|
Component {
|
||||||
|
id: startPageComp
|
||||||
|
StartPage {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Component {
|
||||||
|
id: calenderPageComp
|
||||||
|
Calender {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Component {
|
||||||
|
id: calculatorPageComp
|
||||||
|
Calculator {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
replaceExit: Transition {
|
||||||
|
NumberAnimation {
|
||||||
|
from: 1
|
||||||
|
to: 0
|
||||||
|
property: "opacity"
|
||||||
|
duration: 200
|
||||||
|
easing.type: Easing.InOutQuad
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
replaceEnter: Transition {
|
||||||
|
NumberAnimation {
|
||||||
|
from: 0
|
||||||
|
to: 1
|
||||||
|
property: "opacity"
|
||||||
|
duration: 200
|
||||||
|
easing.type: Easing.InOutQuad
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function start() {
|
||||||
|
game.state = "starting"
|
||||||
|
}
|
||||||
|
function calender() {
|
||||||
|
game.state = "calender"
|
||||||
|
}
|
||||||
|
function calculator() {
|
||||||
|
game.state = "calculator"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
15
qml/qml.qrc
Normal file
15
qml/qml.qrc
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
<RCC>
|
||||||
|
<qresource prefix="/">
|
||||||
|
<file>main.qml</file>
|
||||||
|
<file>calender/Calender.qml</file>
|
||||||
|
<file>StartPage.qml</file>
|
||||||
|
<file>calculator/CalculatorRunningPage.qml</file>
|
||||||
|
<file>calculator/CalculatorStartPage.qml</file>
|
||||||
|
<file>calculator/CalculatorGameOverPage.qml</file>
|
||||||
|
<file>calculator/Calculator.qml</file>
|
||||||
|
<file>calender/CalenderStartPage.qml</file>
|
||||||
|
<file>calender/CalenderRunningPage.qml</file>
|
||||||
|
<file>calender/CalenderGameOverPage.qml</file>
|
||||||
|
<file>components/GameButton.qml</file>
|
||||||
|
</qresource>
|
||||||
|
</RCC>
|
BIN
shared/icons/math.png
Normal file
BIN
shared/icons/math.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 9.7 KiB |
Loading…
Reference in a new issue