summaryrefslogtreecommitdiffstats
path: root/libcommuni/examples/quick/qml/ConnectPage.qml
blob: 8a7c2962c824a596078f9e038a839d5e22a6005f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
/*
 * Copyright (C) 2008-2014 The Communi Project
 *
 * This example is free, and not covered by the BSD license. There is no
 * restriction applied to their modification, redistribution, using and so on.
 * You can study them, modify them, use them in your own program - either
 * completely or partially.
 */

import QtQuick 2.1
import QtQuick.Layouts 1.0
import QtQuick.Controls 1.0
import Qt.labs.settings 1.0
import Communi 3.0

Item {
    id: page

    property string host: hostField.text || hostField.placeholderText
    property int port: portField.value
    property bool secure: secureField.checked
    property bool sasl: saslField.checked
    property string nickName: nickNameField.text || nickNameField.placeholderText
    property string realName: realNameField.text || realNameField.placeholderText
    property string userName: userNameField.text || userNameField.placeholderText
    property string password: passwordField.text
    property string channel: channelField.text || channelField.placeholderText

    Settings {
        id: settings
        property alias host: hostField.text
        property alias port: portField.value
        property alias secure: secureField.checked
        property alias sasl: saslField.checked
        property alias nickName: nickNameField.text
        property alias realName: realNameField.text
        property alias userName: userNameField.text
        property alias password: passwordField.text
        property alias channel: channelField.text
    }

    signal accepted()
    signal rejected()

    implicitWidth: grid.implicitWidth + row.implicitWidth
    implicitHeight: grid.implicitHeight + row.implicitHeight + 48

    GridLayout {
        id: grid

        width: page.width * 2 / 3
        anchors.centerIn: parent
        anchors.verticalCenterOffset: -row.height + 12

        columns: 2
        rowSpacing: 12
        columnSpacing: 12

        Label { text: qsTr("Host:") }
        TextField {
            id: hostField
            focus: true
            Layout.fillWidth: true
            placeholderText: "irc.freenode.net"
        }

        Label { text: qsTr("Port:") }
        RowLayout {
            SpinBox {
                id: portField
                value: 6667
                minimumValue: 1024
                maximumValue: 65535
                Layout.fillWidth: true
            }
            CheckBox {
                id: secureField
                text: qsTr("SSL")
            }
            CheckBox {
                id: saslField
                text: qsTr("SASL")
            }
        }

        Label { text: qsTr("Nick name:") }
        TextField {
            id: nickNameField
            Layout.fillWidth: true
            placeholderText: "Quick" + Math.round(Math.random() * 9999)
        }

        Label { text: qsTr("Real name:") }
        TextField {
            id: realNameField
            Layout.fillWidth: true
            placeholderText: qsTr("Communi %1 QtQuick example").arg(irc.version())
        }

        Label { text: qsTr("User name:") }
        TextField {
            id: userNameField
            Layout.fillWidth: true
            placeholderText: "communi"
        }

        Label { text: qsTr("Password:") }
        TextField {
            id: passwordField
            echoMode: TextInput.Password
            Layout.fillWidth: true
        }

        Label { text: qsTr("Channel:") }
        TextField {
            id: channelField
            Layout.fillWidth: true
            placeholderText: "#communi"
        }
    }

    Keys.onReturnPressed: {
        if (okButton.enabled)
            page.accepted()
    }

    Keys.onEnterPressed: {
        if (okButton.enabled)
            page.accepted()
    }

    Keys.onEscapePressed: {
        if (cancelButton.enabled)
            page.rejected()
    }

    RowLayout {
        id: row

        anchors.margins: 12
        anchors.left: parent.left
        anchors.right: parent.right
        anchors.bottom: parent.bottom

        Item { Layout.fillWidth: true }

        Button {
            id: okButton
            text: qsTr("Ok")
            enabled: page.visible
            onClicked: page.accepted()
        }

        Button {
            id: cancelButton
            text: qsTr("Cancel")
            onClicked: page.rejected()
        }
    }
}