-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmainwindow.cpp
More file actions
117 lines (104 loc) · 2.66 KB
/
Copy pathmainwindow.cpp
File metadata and controls
117 lines (104 loc) · 2.66 KB
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
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QString>
#include <QUdpSocket>
#include <QDateTime>
//variables
QUdpSocket *socket;
QString name;
//methods
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
//amout of users in chat
//atbiginnig is 0
am = 0;
//new socket for recieving mails
socket = new QUdpSocket(this);
//bind at empty port
socket->bind(7777);
//connecting of recieving signalto read() slot
connect(socket, SIGNAL(readyRead()),
this, SLOT(read()));
}
void MainWindow::on_pushButton_clicked()
{
//sending message
QDateTime time = QDateTime::currentDateTime();
if (ui->textEdit->toPlainText() == "" || ui->textEdit->toPlainText() == NULL) return;
QString str = "[" + name + "][" + time.toString() + "]: " + ui->textEdit->toPlainText();
ui->textEdit->setText("");
QByteArray data;
data.append(str);
socket->writeDatagram(data.data(), data.size(),
QHostAddress::Broadcast, 7777);
}
void MainWindow::on_pushButton_2_clicked()
{
// changing name
name = ui->textEdit_2->toPlainText();
if (check_name())
{
QByteArray data;
data.append(name);
socket->writeDatagram(data.data(), data.size(),
QHostAddress::Broadcast, 7777);
ui->label_3->setText(name);
ui->textBrowser->append("Your name is " + name);
}
}
void MainWindow::on_pushButton_2_pressed() {}
bool MainWindow::check_name()
{
//check if name is empty
if (name == "" || name == NULL)
{
ui->textBrowser->append("Wrong name!");
return false;
}
return true;
}
void MainWindow::read()
{
//reading from socket
QByteArray data;
while (socket->hasPendingDatagrams())
{
//resize data
data.resize(socket->pendingDatagramSize());
socket->readDatagram(data.data(), data.size());
//getting message
QString msg = QString(data);
if (msg.at(0) != '[')
//for new users
adduser(msg);
else
//for simple message
ui->textBrowser->append(msg);
}
}
void MainWindow::adduser(QString name)
{
bool flag = true;
//chek if user with same name was in chat
for ( int i = 0; i < am; i++)
if (names.at(i) == name)
{
flag = false;
break;
}
//if not then add
if (flag)
{
names.push_back(name);
ui->textBrowser_2->append(name);
ui->textBrowser->append(name + " has joined");
am++;
}
}
MainWindow::~MainWindow()
{
delete ui;
}