summaryrefslogtreecommitdiffstats
path: root/examples/network/multistreamclient/chatconsumer.cpp
blob: d71fb107d83677c3da7284825aa874ea4f3a46b0 (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
// Copyright (C) 2016 Alex Trotsenko <alex1973tr@gmail.com>
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause

#include "chatconsumer.h"
#include <QWidget>
#include <QTextEdit>
#include <QLineEdit>
#include <QVBoxLayout>
#include <QString>

ChatConsumer::ChatConsumer(QObject *parent)
    : Consumer(parent)
{
    frameWidget = new QWidget;
    frameWidget->setFocusPolicy(Qt::TabFocus);

    textEdit = new QTextEdit;
    textEdit->setFocusPolicy(Qt::NoFocus);
    textEdit->setReadOnly(true);

    lineEdit = new QLineEdit;
    frameWidget->setFocusProxy(lineEdit);

    connect(lineEdit, &QLineEdit::returnPressed, this, &ChatConsumer::returnPressed);

    QVBoxLayout *layout = new QVBoxLayout(frameWidget);
    layout->setContentsMargins( 0, 0, 0, 0);
    layout->addWidget(textEdit);
    layout->addWidget(lineEdit);
}

QWidget *ChatConsumer::widget()
{
    return frameWidget;
}

void ChatConsumer::readDatagram(const QByteArray &ba)
{
    textEdit->append(QString::fromUtf8(ba));
}

void ChatConsumer::returnPressed()
{
    emit writeDatagram(lineEdit->text().toUtf8());
    lineEdit->clear();
}