1 /**************************************************************************
5 This file is part of Chess Clock software.
7 (This file) Copyright (c) Heli Hyvättinen 2011
9 Chess Clock is free software: you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation, either version 3 of the License, or
12 (at your option) any later version.
14 Chess Clock is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
20 **************************************************************************/
26 import com.nokia.extras 1.0
27 import ChessClocks 1.0
34 orientationLock: PageOrientation.LockLandscape
38 //QML does not allow properties to be declared as enums...
39 //Initializing to invalid value to make sure picking *any* time control will trigger OnTimeControlChanged
40 property int timeControl: 1000
43 property bool askAddition
44 property bool askTurnsPerAddition
55 equalTimesSwitch.checked = settings.isEqualTimes(timeControl)
57 var whiteInitial = settings.getInitialTime(timeControl,true)
58 whiteInitialTime.hours = Qt.formatTime(whiteInitial,"h")
59 whiteInitialTime.minutes = Qt.formatTime(whiteInitial,"m")
60 whiteInitialTime.seconds = Qt.formatTime(whiteInitial,"s")
62 var blackInitial = settings.getInitialTime(timeControl,false)
63 blackInitialTime.hours = Qt.formatTime(blackInitial,"h")
64 blackInitialTime.minutes = Qt.formatTime(blackInitial,"m")
65 blackInitialTime.seconds = Qt.formatTime(blackInitial,"s")
67 var whiteAdditional = settings.getAdditionalTime(timeControl,true)
68 whiteAdditionalTime.hours = Qt.formatTime(whiteAdditional,"h")
69 whiteAdditionalTime.minutes = Qt.formatTime(whiteAdditional,"m")
70 whiteAdditionalTime.seconds = Qt.formatTime(whiteAdditional,"s")
72 var blackAdditional = settings.getAdditionalTime(timeControl,false)
73 blackAdditionalTime.hours = Qt.formatTime(blackAdditional,"h")
74 blackAdditionalTime.minutes = Qt.formatTime(blackAdditional,"m")
75 blackAdditionalTime.seconds = Qt.formatTime(blackAdditional,"s")
78 whiteTurnsPerAddition.text = settings.getTurnsPerAddition(timeControl,true)
79 blackTurnsPerAddition.text = settings.getTurnsPerAddition(timeControl,false)
84 ToolIcon { iconId: "toolbar-back"; onClicked: pageStack.pop() }
93 anchors.horizontalCenter: parent.horizontalCenter
97 text: newGameDialogPage.name
105 anchors.top: title.bottom
109 // width: rowRow.width - rowRow.spacing - switchComponent.width - whiteSmall.width - blackSmall.width
110 // height: switchComponent.height
111 verticalAlignment: Text.AlignVCenter
124 whiteSmall.anchors.horizontalCenter = undefined
125 whiteSmall.anchors.right = whiteInitialTime.horizontalCenter
127 blackSmall.anchors.horizontalCenter = undefined
128 blackSmall.anchors.left = whiteInitialTime.horizontalCenter
136 whiteSmall.anchors.right = undefined
137 whiteSmall.anchors.horizontalCenter = whiteInitialTime.horizontalCenter
139 blackSmall.anchors.left = undefined
140 blackSmall.anchors.horizontalCenter = blackInitialTime.horizontalCenter
155 anchors.top: rowRow.bottom
157 source: ":/rc/pic/white_small.png"
159 Component.onCompleted:
161 if (equalTimesSwitch.checked)
162 anchors.right = whiteInitialTime.horizontalCenter
164 anchors.horizontalCenter = whiteInitialTime.horizontalCenter
173 anchors.top: rowRow.bottom
176 source: ":/rc/pic/black_small.png"
178 Component.onCompleted:
180 if (equalTimesSwitch.checked)
181 anchors.left = whiteInitialTime.horizontalCenter
183 anchors.horizontalCenter = blackInitialTime.horizontalCenter
193 anchors.verticalCenter: whiteInitialTime.verticalCenter
202 anchors.top: whiteSmall.bottom
203 anchors.left: whiteTurnsPerAddition.left
209 text: {hours + " h " + minutes + " min " + seconds + " s"}
217 timePicker.timeType = "initial"
218 timePicker.player = "white"
219 timePicker.hour = parent.hours
220 timePicker.minute = parent.minutes
221 timePicker.second = parent.seconds
232 visible: !equalTimesSwitch.checked
236 anchors.top: whiteSmall.bottom
237 anchors.left: blackTurnsPerAddition.left
243 text: hours + " h " + minutes + " min " + seconds + " s"
251 timePicker.timeType = "initial"
252 timePicker.player = "black"
253 timePicker.hour = parent.hours
254 timePicker.minute = parent.minutes
255 timePicker.second = parent.seconds
265 id: additionalTimeText
267 anchors.verticalCenter: whiteAdditionalTime.verticalCenter
269 text: "Additional time"
272 visible: newGameDialogPage.askAddition
273 // anchors.top: initialTimeText.bottom
274 // anchors.horizontalCenter: parent.horizontalCenter
281 id: whiteAdditionalTime
282 visible: newGameDialogPage.askAddition
285 anchors.top: whiteInitialTime.bottom
286 anchors.topMargin: 15
287 // anchors.left: additionalTimeText.right
288 anchors.left: whiteTurnsPerAddition.left
293 text: hours + " h " + minutes + " min " + seconds + " s"
301 timePicker.timeType = "additional"
302 timePicker.player = "white"
303 timePicker.hour = parent.hours
304 timePicker.minute = parent.minutes
305 timePicker.second = parent.seconds
313 id: blackAdditionalTime
314 visible: newGameDialogPage.askAddition && !equalTimesSwitch.checked
317 anchors.top: whiteAdditionalTime.top
318 anchors.left: blackTurnsPerAddition.left
324 text: hours + " h " + minutes + " min " + seconds + " s"
331 timePicker.timeType = "additional"
332 timePicker.player = "black"
333 timePicker.hour = parent.hours
334 timePicker.minute = parent.minutes
335 timePicker.second = parent.seconds
345 id: turnsPerAdditionText
346 text: "Turns per addition"
349 visible: newGameDialogPage.askTurnsPerAddition
350 anchors.verticalCenter: whiteTurnsPerAddition.verticalCenter
355 id: whiteTurnsPerAddition
356 visible: newGameDialogPage.askTurnsPerAddition
359 anchors.top: whiteAdditionalTime.bottom
360 anchors.topMargin: 15
361 anchors.left: turnsPerAdditionText.right
362 anchors.leftMargin: 25
369 turnsDialog.player = "white"
370 turnsColumn.selectedIndex = parent.text-1
379 id: blackTurnsPerAddition
380 visible: newGameDialogPage.askTurnsPerAddition && !equalTimesSwitch.checked
383 anchors.top: whiteTurnsPerAddition.top
384 anchors.left: whiteTurnsPerAddition.right
385 anchors.leftMargin: 25
392 turnsDialog.player = "black"
393 turnsColumn.selectedIndex = parent.text-1
406 anchors.top: whiteTurnsPerAddition.bottom
407 anchors.topMargin: 15
408 anchors.right: parent.right
414 clocksPage.timeControl = timeControl
417 clocksPage.whiteInitialTime = 60*60*1000*whiteInitialTime.hours+60*1000*whiteInitialTime.minutes+1000*whiteInitialTime.seconds
418 clocksPage.whiteAdditionalTime = 60*60*1000*whiteAdditionalTime.hours+60*1000*whiteAdditionalTime.minutes+1000*whiteAdditionalTime.seconds
419 clocksPage.whiteTurnsPerAddition = whiteTurnsPerAddition.text
423 //Save settings for white
424 settings.setInitialTime(timeControl,true,whiteInitialTime.hours,whiteInitialTime.minutes,whiteInitialTime.seconds)
425 settings.setAdditionalTime(timeControl,true,whiteAdditionalTime.hours,whiteAdditionalTime.minutes,whiteAdditionalTime.seconds)
426 settings.setTurnsPerAddition(timeControl,true,whiteTurnsPerAddition.text)
428 settings.setEqualTimes(timeControl,equalTimesSwitch.checked) //save equal times setting
430 if (equalTimesSwitch.checked)
432 //use same values for white and black
433 clocksPage.blackInitialTime = 60*60*1000*whiteInitialTime.hours+60*1000*whiteInitialTime.minutes+1000*whiteInitialTime.seconds
434 clocksPage.blackAdditionalTime = 60*60*1000*whiteAdditionalTime.hours+60*1000*whiteAdditionalTime.minutes+1000*whiteAdditionalTime.seconds
435 clocksPage.blackTurnsPerAddition = whiteTurnsPerAddition.text
437 //If black values in dialog are not used they are not saved to settings
441 clocksPage.blackInitialTime = 60*60*1000*blackInitialTime.hours+60*1000*blackInitialTime.minutes+1000*blackInitialTime.seconds
442 clocksPage.blackAdditionalTime = 60*60*1000*blackAdditionalTime.hours+60*1000*blackAdditionalTime.minutes+1000*blackAdditionalTime.seconds
443 clocksPage.blackTurnsPerAddition = blackTurnsPerAddition.text
445 //Save settings for black
446 settings.setInitialTime(timeControl,false,blackInitialTime.hours,blackInitialTime.minutes,blackInitialTime.seconds)
447 settings.setAdditionalTime(timeControl,false,blackAdditionalTime.hours,blackAdditionalTime.minutes,blackAdditionalTime.seconds)
448 settings.setTurnsPerAddition(timeControl,false,blackTurnsPerAddition.text)
454 pageStack.push(clocksPage)
467 property string timeType
468 property string player
470 titleText: "Choose " + timeType + " time for " + player
471 rejectButtonText: "Cancel"
472 acceptButtonText: "Ok"
473 hourMode: DateTime.TwentyFourHours
476 if (timeType == "initial")
478 if (player == "white")
480 whiteInitialTime.hours = hour
481 whiteInitialTime.minutes = minute
482 whiteInitialTime.seconds = second
486 blackInitialTime.hours = hour
487 blackInitialTime.minutes = minute
488 blackInitialTime.seconds = second
491 else if (player == "white")
493 whiteAdditionalTime.hours = hour
494 whiteAdditionalTime.minutes = minute
495 whiteAdditionalTime.seconds = second
499 blackAdditionalTime.hours = hour
500 blackAdditionalTime.minutes = minute
501 blackAdditionalTime.seconds = second
522 Component.onCompleted:
524 for (var turn = 1; turn <= 99; turn++)
526 turnsList.append({"value" : turn});
538 property string player
540 titleText: "Choose turns per addition for " + player
541 acceptButtonText: "Ok"
542 rejectButtonText: "Cancel"
544 columns: [turnsColumn]
548 if (player == "white")
549 whiteTurnsPerAddition.text = turnsColumn.selectedIndex+1
550 else if (player == "black")
551 blackTurnsPerAddition.text = turnsColumn.selectedIndex+1