summaryrefslogtreecommitdiffstats
path: root/src/libcommuni/examples/quick/qml/main.qml
blob: 8c431adf8d8a5cbc51cb345b5d81bae6549bdfaf (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
/*
 * 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.Controls 1.0
import Communi 3.0

ApplicationWindow {
    id: window

    visible: true
    title: qsTr("Communi %1 QtQuick example").arg(irc.version())

    width: 800
    height: 480

    minimumWidth: connectPage.implicitWidth
    minimumHeight: connectPage.implicitHeight

    color: Qt.darker(palette.base, 1.06)

    SystemPalette { id: palette }

    Irc { id: irc }
    IrcCommand { id: cmd }

    ConnectPage {
        id: connectPage
        anchors.fill: parent
        visible: !connection.active
        onAccepted: {
            chatPage.currentBuffer = serverBuffer
            connection.sendCommand(cmd.createJoin(channel))
            connection.open()
        }
        onRejected: Qt.quit()
    }

    ChatPage {
        id: chatPage
        anchors.fill: parent
        visible: connection.active
        bufferModel: IrcBufferModel {
            id: bufferModel
            sortMethod: Irc.SortByTitle
            connection: IrcConnection {
                id: connection
                host: connectPage.host
                port: connectPage.port
                secure: connectPage.secure
                saslMechanism: connectPage.sasl ? supportedSaslMechanisms[0] : ""
                nickName: connectPage.nickName
                realName: connectPage.realName
                userName: connectPage.userName
                password: connectPage.password
            }
            onMessageIgnored: serverBuffer.receiveMessage(message)
            function quit() {
                bufferModel.clear()
                connection.quit(qsTr("Communi %1 QtQuick example").arg(irc.version()))
                connection.close()
            }
        }
        serverBuffer: IrcBuffer {
            id: serverBuffer
            sticky: true
            persistent: true
            name: connection.displayName
            Component.onCompleted: bufferModel.add(serverBuffer)
        }
    }

    Component.onDestruction: bufferModel.quit()
}