qmlFrontend/qml/qmlFrontend/GameConfig.qml
author unc0rr
Sat, 25 Oct 2014 00:31:10 +0400
branchqmlfrontend
changeset 10444 47a6231f1fc1
parent 10442 c58db813240b
child 10448 4cb727e029fa
permissions -rw-r--r--
Teams widget now allows to add and remove teams (basic implementation, no checks performed, no colors, no hedgehogs)

import QtQuick 2.0
import Hedgewars.Engine 1.0


Rectangle {
    HWButton {
        id: btnPreview
        x: 50
        y: 16
        width: 256
        height: 128

        onClicked: HWEngine.getPreview()

        Connections {
            target: HWEngine
            onPreviewImageChanged: previewImage.source = "image://preview/" + HWEngine.currentSeed()
        }

        Image {
            id: previewImage
            x: 0
            y: 0
            width: 256
            height: 128
            cache: false
        }
    }

    Rectangle {
        x: 320
        y: 16
        width: 100
        height: 256
        color: "#15193a"
        radius: 8
        border.width: 4
        border.color: "#eaea00"
        Image {
            id: themeImage
            x: 0
            y: 0
            width: 64
            height: 64
            fillMode: Image.Pad
        }

        ListView {
            id: themesList
            x: 0
            y: 64
            width: 100
            height: 192
            highlight: Rectangle { color: "#eaea00"; radius: 4 }
            focus: true

            model: themesModel
            delegate: Rectangle {
                height: 25
                width: 100
                color: "transparent"
                Text {id: themeName; text: modelData }
                MouseArea {
                     z: 1
                     anchors.fill: parent
                     onClicked: {
                         themeImage.source = "image://theme/" + themeName.text
                         themesList.currentIndex = index
                     }
                }
            }
        }
    }

    ListView {
        id: playingTeamsList
        x: 440
        y: 16
        width: 100
        height: 192
        highlight: Rectangle { color: "#eaea00"; radius: 4 }
        focus: true
        clip: true

        model: ListModel {
            id: playingTeamsModel
        }

        delegate: Rectangle {
            id: teamDelegate
            height: 24
            width: parent.width
            radius: 8
            border.width: 2
            border.color: "#eaea00"

            Row {
                Text { text: name }
            }

            MouseArea {
                 z: 1
                 anchors.fill: parent
                 onClicked: HWEngine.tryRemoveTeam(name)
            }
        }

        Connections {
            target: HWEngine
            onPlayingTeamAdded: playingTeamsModel.append({"aiLevel": aiLevel, "name": teamName, "local": isLocal})
            onPlayingTeamRemoved: {
                var i = playingTeamsModel.count - 1;
                while ((i >= 0) && (playingTeamsModel.get(i).name !== teamName)) --i

                if(i >= 0) playingTeamsModel.remove(i, 1)
            }
        }
    }

    ListView {
        id: localTeamsList
        x: 440
        y: 224
        width: 100
        height: 192
        highlight: Rectangle { color: "#eaea00"; radius: 4 }
        focus: true
        clip: true

        model: ListModel {
            id: localTeamsModel
        }

        delegate: Rectangle {
            id: localTeamDelegate
            height: 24
            width: parent.width
            radius: 8
            border.width: 2
            border.color: "#eaea00"

            Row {
                Text { text: name }
            }

            MouseArea {
                 z: 1
                 anchors.fill: parent
                 onClicked: HWEngine.tryAddTeam(name)
            }
        }

        Connections {
            target: HWEngine
            onLocalTeamAdded: localTeamsModel.append({"aiLevel": aiLevel, "name": teamName})
            onLocalTeamRemoved: {
                var i = localTeamsModel.count - 1;
                while ((i >= 0) && (localTeamsModel.get(i).name !== teamName)) --i

                if(i >= 0) localTeamsModel.remove(i, 1)
            }
        }
    }

    Component.onCompleted: {
        HWEngine.getTeamsList()
        HWEngine.getPreview()
    }
}