~nik90/touch-irc/revamp-connect-page

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
/*
 * Copyright (C) 2008-2014 The Communi Project
 *
 * This example is free, and not covered by the LGPL 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.0
import Ubuntu.Components 0.1
import Communi 3.0


MainView{
    id: window
    objectName: "mainView"
    applicationName: "irc client"
    automaticOrientation: true
    anchorToKeyboard: true
    width: units.gu(40)
    height: units.gu(71)
    property bool isConnected: false
    PageStack{
        id: pageStack
        Component.onCompleted:  push(connectPage)
        Settings{
            id:settingsPage
            visible: false
        }
        ConnectPage {
            id: connectPage
            visible: false

            onAccepted: {
                chatPage.currentBuffer = serverBuffer
                connection.sendCommand(cmd.createJoin(channel))
                connection.open()
                pageStack.push(chatPage)
            }
            onRejected: Qt.quit()
        }

        ChatPage {
            id: chatPage
            visible: false
            title: isConnected ? currentBuffer.name : "Connecting"

            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("Irc Client"))
                    connection.close()
                    Qt.quit()
                }
            }
            serverBuffer: IrcBuffer {
                id: serverBuffer
                sticky: true
                persistent: true
                name: connection.displayName
                Component.onCompleted: bufferModel.add(serverBuffer)
            }
        }

    }//stack
    Irc { id: irc

    }
    IrcCommand { id: cmd }

    Component.onDestruction: bufferModel.quit()
}