Warning, /education/marble/examples/cpp/marble-game/GamesView.qml is written in an unsupported language. File is not indexed.
0001 // SPDX-License-Identifier: LGPL-2.1-or-later
0002 //
0003 // SPDX-FileCopyrightText: 2014 Abhinav Gangwar <abhgang@gmail.com>
0004 //
0005
0006
0007 import QtQuick 2.0
0008 import QtQuick.Controls 1.2
0009 import QtQuick.Controls.Styles 1.2
0010
0011 Rectangle {
0012 id: gamesDisplayPanel
0013 objectName: "gamesDisplayPanel"
0014
0015 signal quitGame(int score)
0016 signal requestNextQuestion()
0017 signal requestAnswerDisplay()
0018
0019 property int gamesDisplayWidth: 200
0020 property int gamesDisplayHeight: 600
0021 property alias currentIndex: gameView.currentIndex
0022
0023 width: gamesDisplayWidth
0024 height: gamesDisplayHeight
0025
0026 /*
0027 * The Model contains data for
0028 * UI for different types of available
0029 * games. Whenever user opts for a
0030 * particular game we switch the view
0031 * to that game. View is controlled by
0032 * ListView element defined below
0033 */
0034 VisualItemModel {
0035 id: gamesModel
0036
0037 CountryByShape {
0038 id: countryByShapeGame
0039 panelWidth: gamesDisplayPanel.width
0040 panelHeight: gamesDisplayPanel.height
0041 onGameQuitRequested: {
0042 quitGame(score);
0043 }
0044 onNextQuestionRequested: {
0045 requestNextQuestion();
0046 }
0047 }
0048
0049 CountryByFlag {
0050 id: countryByFlagGame
0051 panelWidth: gamesDisplayPanel.width
0052 panelHeight: gamesDisplayPanel.height
0053 onGameQuitRequested: {
0054 quitGame(score);
0055 }
0056 onNextQuestionRequested: {
0057 requestNextQuestion();
0058 }
0059 }
0060
0061 ClickOnThat {
0062 id: clickOnThat
0063 panelWidth: gamesDisplayPanel.width
0064 panelHeight: gamesDisplayPanel.height
0065 onGameQuitRequested: {
0066 quitGame(score);
0067 }
0068 onNextQuestionRequested: {
0069 requestNextQuestion();
0070 }
0071 onAnswerDisplayRequested: {
0072 requestAnswerDisplay();
0073 }
0074 }
0075 }
0076
0077 /*
0078 * View to display game model
0079 */
0080 ListView {
0081 id: gameView
0082 objectName: "gameView"
0083 width: gamesDisplayPanel.width
0084 height: gamesDisplayPanel.height
0085 anchors.centerIn: parent
0086
0087 model: gamesModel
0088 highlightMoveDuration: 250
0089 highlightRangeMode: ListView.StrictlyEnforceRange
0090
0091 orientation: ListView.Vertical
0092 }
0093
0094 /*
0095 * These are functions which tell a
0096 * particular type of game to display
0097 * the question data
0098 */
0099 function postCountryShapeQuestion( answerOptions, correctAnswer ) {
0100 gameView.currentItem.setQuestion( answerOptions, correctAnswer );
0101 }
0102
0103 function postCountryFlagQuestion( answerOptions, imageSource, correctAnswer ) {
0104 gameView.currentItem.setQuestion( answerOptions, imageSource, correctAnswer );
0105 }
0106
0107 function postClickOnThatQuestion( countryName ) {
0108 gameView.currentItem.setQuestion( countryName );
0109 }
0110
0111 function initGame() {
0112 gameView.currentItem.initGame()
0113 }
0114
0115 function displayResult( result ) {
0116 gameView.currentItem.displayResult( result )
0117 }
0118
0119 function setMaximumQuestionsCounts( questionsCount ) {
0120 gameView.currentItem.setMaximumQuestions( questionsCount );
0121 }
0122 }