-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathaddfriendpage.cpp
82 lines (69 loc) · 2.33 KB
/
addfriendpage.cpp
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
#include "addfriendpage.h"
#include "ui_addfriendpage.h"
#include "protocol.h"
#include "QDebug"
#include "QTreeWidgetItem"
#include "showresultpage.h"
AddFriendPage::AddFriendPage(QWidget *parent) :
QDialog(parent),
ui(new Ui::AddFriendPage)
{
ui->setupUi(this);
socket = new QUdpSocket();
socket->bind(0);
connect(socket, SIGNAL(readyRead()), this, SLOT(readAddFriendData()));
}
void AddFriendPage::readAddFriendData()
{
struct addfrd_st rcvbuf;
QTreeWidgetItem *item;
ShowResultPage *resultPage;
resultPage = new ShowResultPage();
resultPage->setAttribute(Qt::WA_DeleteOnClose);
qDebug() << "debug"<<endl;
socket->readDatagram((char *)&rcvbuf, sizeof(rcvbuf));
qDebug() << rcvbuf.status << endl;
switch(rcvbuf.status) {
case ADD_STATUS_OK:
item = new QTreeWidgetItem(friendWidget);
item->setIcon(0, QIcon("/var/ftp/pub/apue/qq/imgs/men.png"));
item->setText(0, QString(rcvbuf.dst_count));
close();
break;
case ADD_STATUS_ERROR:
resultPage->setResultLineEdit(QString("很遗憾!添加失败"));
resultPage->setCommitPushButton(QString("重新添加"));
resultPage->setCancelPushButton(QString("还是算了吧"));
resultPage->show();
break;
case ADD_STATUS_EXISTS:
resultPage->setResultLineEdit(QString("已经是您的好友"));
resultPage->setCommitPushButton(QString("重新添加"));
resultPage->setCancelPushButton(QString("开始畅聊"));
resultPage->show();
break;
default:
break;
}
}
AddFriendPage::~AddFriendPage()
{
delete ui;
}
void AddFriendPage::on_pushButton_clicked()
{
struct addfrd_st sndbuf;
//将待添加好友的帐号发送给服务器
QByteArray ba1 = myCount.toAscii();
const char *src = ba1.data();
qsnprintf(sndbuf.src_count, COUNT_SIZE, "%s", src);
QString destStr = ui->cntLineEdit->text();
QByteArray ba2 = destStr.toAscii();
const char *dest = ba2.data();
qsnprintf(sndbuf.dst_count, COUNT_SIZE, "%s", dest);
qDebug() << sndbuf.src_count << sndbuf.dst_count << endl;
QHostAddress *address = new QHostAddress(\
QString(ADDFRIEND_SERVER_IP));
socket->writeDatagram((const char *)&sndbuf, sizeof(sndbuf), \
*address, ADDFRIEND_SERVER_PORT);
}