2024-11-30 18:23:45 +00:00
|
|
|
import QtQuick
|
2024-11-30 19:56:20 +00:00
|
|
|
import QtQuick.Controls
|
|
|
|
import QtQuick.Layouts
|
2024-11-30 18:23:45 +00:00
|
|
|
|
2024-11-30 19:56:20 +00:00
|
|
|
ApplicationWindow {
|
2024-12-02 18:00:15 +00:00
|
|
|
width: 750
|
|
|
|
height: 650
|
2024-11-30 18:23:45 +00:00
|
|
|
visible: true
|
2024-12-02 18:00:15 +00:00
|
|
|
title: qsTr("Solitare")
|
2024-12-03 19:19:13 +00:00
|
|
|
color: "green"
|
2024-11-30 19:56:20 +00:00
|
|
|
|
|
|
|
ScoreBar {
|
|
|
|
id: scoreBar
|
|
|
|
height: 50
|
2024-12-02 14:35:37 +00:00
|
|
|
anchors.top: parent.top
|
|
|
|
anchors.left: parent.left
|
|
|
|
anchors.right: parent.right
|
2024-11-30 19:56:20 +00:00
|
|
|
}
|
2024-12-01 00:01:37 +00:00
|
|
|
|
2024-12-02 14:35:37 +00:00
|
|
|
// Show the foundation piles, throwaway pile & the draw stack on the first row
|
|
|
|
Item {
|
2024-12-02 18:00:15 +00:00
|
|
|
id: firstRow
|
2024-12-02 14:35:37 +00:00
|
|
|
height: 120
|
|
|
|
anchors.top: scoreBar.bottom
|
|
|
|
anchors.left: parent.left
|
|
|
|
anchors.right: parent.right
|
|
|
|
|
2024-12-03 14:48:52 +00:00
|
|
|
Item {
|
2024-12-02 14:35:37 +00:00
|
|
|
anchors.fill: parent
|
|
|
|
anchors.margins: 10
|
|
|
|
|
|
|
|
// Left row (with the foundation piles)
|
|
|
|
Row {
|
|
|
|
spacing: 15
|
|
|
|
anchors.left: parent.left
|
|
|
|
|
|
|
|
Repeater {
|
|
|
|
model: 4 // Each of the 4 suits
|
|
|
|
CardModel {
|
|
|
|
required property int index; // passed from repeater
|
2024-12-03 14:32:30 +00:00
|
|
|
card: GameState.foundation[index].length > 0 ? GameState.foundation[index][0] : null
|
2024-12-02 14:35:37 +00:00
|
|
|
isFaceDown: false
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// Spacer to push the second row to the right
|
|
|
|
Item {
|
|
|
|
Layout.fillWidth: true
|
|
|
|
}
|
|
|
|
|
|
|
|
// Right row (with throwaway and draw piles)
|
|
|
|
Row {
|
|
|
|
spacing: 20
|
|
|
|
anchors.right: parent.right
|
|
|
|
|
2024-12-04 18:20:06 +00:00
|
|
|
ThrowawayPile {}
|
2024-12-02 14:35:37 +00:00
|
|
|
|
|
|
|
// Draw pile (only the top card is shown)
|
|
|
|
CardModel {
|
2024-12-03 14:32:30 +00:00
|
|
|
card: GameState.drawPile.length > 0 ? GameState.drawPile[GameState.drawPile.length - 1] : null
|
2024-12-04 18:15:27 +00:00
|
|
|
isFaceDown: GameState.drawPile.length > 0 ? true : false
|
2024-12-03 23:05:29 +00:00
|
|
|
onClicked: {
|
|
|
|
GameState.drawNextCard()
|
|
|
|
}
|
2024-12-02 14:35:37 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2024-12-01 00:01:37 +00:00
|
|
|
}
|
2024-12-02 18:00:15 +00:00
|
|
|
|
2024-12-04 18:15:50 +00:00
|
|
|
Tableau {
|
2024-12-02 18:00:15 +00:00
|
|
|
anchors.top: firstRow.bottom
|
|
|
|
anchors.horizontalCenter: parent.horizontalCenter
|
|
|
|
anchors.topMargin: 50
|
|
|
|
}
|
2024-11-30 18:23:45 +00:00
|
|
|
}
|