From 9a62cb43b1cd27288215a02ffd98dcfbbe3bb124 Mon Sep 17 00:00:00 2001 From: guo-qingju <897751420@qq.com> Date: Tue, 31 Aug 2021 17:51:22 +0800 Subject: [PATCH 1/9] add friend --- Client/clientmain.cpp | 21 +++++++++++++++++++++ Client/clientmain.h | 4 +++- Client/kuang.cpp | 18 +++++++++++++++++- Client/kuang.h | 5 ++++- Client/mainwindow.cpp | 23 +++++++++++++++++++++++ Client/mainwindow.h | 6 ++++++ Client/mainwindow.ui | 16 ++++++++-------- 7 files changed, 82 insertions(+), 11 deletions(-) diff --git a/Client/clientmain.cpp b/Client/clientmain.cpp index 11e62cf..0b48cef 100644 --- a/Client/clientmain.cpp +++ b/Client/clientmain.cpp @@ -35,6 +35,18 @@ void ClientMain::createmainwindow(QJsonObject data){ //send按钮点击后发送该消息到服务器 connect(main,&MainWindow::SendMessageToServer,this,&ClientMain::MessageFromMainwindow); + + //搜索按钮点击后发送消息到server + connect(main,&MainWindow::SendSearchInfo,this,&ClientMain::SendSearchInfoToSever); + connect(this,&ClientMain::SearchInfoReceived,main,&MainWindow::dealsearchinfo); + connect(main,&MainWindow::SendNewFriendInfo,this,&ClientMain::SendNewFriendInfoToSever); +} + +void ClientMain::SendNewFriendInfoToSever(QString name){ + QJsonObject data = {{"MsgType","NewFriend"}}; + QJsonObject temp = {{"Username",name},{"Username",main->username}}; + data["Members"] = temp; + send(data); } void ClientMain::MessageFromMainwindow(const QString &sendername,const QString &text){ @@ -97,6 +109,15 @@ void ClientMain::processMethod(QJsonObject data) { if(data["MsgType"].toString()=="SessionData"){ emit AddSessionToDatabase(data); } + if(data["MsgType"].toString()=="SearchInfo"){ + emit SearchInfoReceived(data); + } +} + +void ClientMain::SendSearchInfoToSever(QString msg){ + QJsonObject data = {{"MsgType","Search"}}; + data["SearchInfo"] = msg; + send(data); } void ClientMain::receiveMessage() diff --git a/Client/clientmain.h b/Client/clientmain.h index e686d04..8d9a41c 100644 --- a/Client/clientmain.h +++ b/Client/clientmain.h @@ -30,8 +30,9 @@ public: bool isConnected() { return is_connected; } void createmainwindow(QJsonObject data); void MessageFromMainwindow(const QString & sendername, const QString &text); - void receiveJsonObject(QJsonObject); + void SendSearchInfoToSever(QString msg); + void SendNewFriendInfoToSever(QString name); signals: void serverConnected(); @@ -41,6 +42,7 @@ signals: void SessionMessageReceived(QJsonObject data); void RegistConfirmReceived(QJsonObject data); void AddSessionToDatabase(QJsonObject data); + void SearchInfoReceived(QJsonObject data); private: ClientMain(QString IPAddress, int portOpen, QObject *parent = nullptr); diff --git a/Client/kuang.cpp b/Client/kuang.cpp index 0733e6f..2d0a3e3 100644 --- a/Client/kuang.cpp +++ b/Client/kuang.cpp @@ -37,17 +37,33 @@ Kuang::Kuang(QJsonObject data,QWidget *parent): SessionID = data["SessionID"].toInt(); ui->name->setText(data["Profile"].toObject()["SessionName"].toString()); } + +Kuang::Kuang(QString UserName,QString NikeName,QWidget *parent): + QWidget(parent), + ui(new Ui::Kuang){ + ui->setupUi(this); + SessionID = 0; + USERNAME = UserName; + UserName = "UserName:" + UserName + "\n" + "NikeName" + NikeName; + ui->name->setText(UserName); +} + Kuang* Kuang::KuangChosenNow = nullptr; void Kuang::mousePressEvent(QMouseEvent *ev){ qDebug() << "Mouse Pressed" << ClientDataCenter::Singleton().getSession(SessionID).getLatestMessageID(); if(ev->button()==Qt::LeftButton){ if(!KuangChosenNow || KuangChosenNow != this){ KuangChosenNow = this; - emit KuangChosenChanged(); + emit KuangChosenChanged(USERNAME); } } } +Kuang::Kuang(const Kuang& temp){ + SessionID = temp.SessionID; + USERNAME = temp.USERNAME; +} + Kuang::~Kuang() { delete ui; diff --git a/Client/kuang.h b/Client/kuang.h index 2b7fb12..06f3124 100644 --- a/Client/kuang.h +++ b/Client/kuang.h @@ -19,13 +19,16 @@ public: explicit Kuang(QWidget *parent = nullptr); Kuang(const QString &username,QJsonObject data,QWidget *parent = nullptr); Kuang(QJsonObject data,QWidget *parent = nullptr); + Kuang(QString UserName,QString NikeName,QWidget *parent = nullptr); + Kuang(const Kuang& temp); virtual void mousePressEvent(QMouseEvent *ev); ~Kuang(); int SessionID; + QString USERNAME; static Kuang *KuangChosenNow; signals: - void KuangChosenChanged(); + void KuangChosenChanged(QString USERNAME); private: Ui::Kuang *ui; }; diff --git a/Client/mainwindow.cpp b/Client/mainwindow.cpp index 5cc42ec..c7aba63 100644 --- a/Client/mainwindow.cpp +++ b/Client/mainwindow.cpp @@ -109,6 +109,7 @@ MainWindow::MainWindow(QJsonObject data,QWidget *parent): ui->tabWidget->setAttribute(Qt::WA_StyledBackground); friendlayout = new QVBoxLayout(ui->frd); grouplayout = new QVBoxLayout(ui->group); + searchlayout = new QVBoxLayout(ui->toolBox); setup(data); } @@ -126,6 +127,28 @@ void MainWindow::setup(QJsonObject data) { QWidgetAction* action = new QWidgetAction(ui->search); action->setDefaultWidget(btnSearch); ui->search->addAction(action, QLineEdit::TrailingPosition); + connect(btnSearch,&QToolButton::clicked,[=](){ + QString msg = ui->search->text(); + emit SendSearchInfo(msg); + }); +} + +void MainWindow::dealsearchinfo(QJsonObject data){ + QJsonArray arr = data["SearchInfo"].toArray(); + QString UserName,NickName; + int n = kuangstore.size(),i; + for(i=0;iremoveWidget(&kuangstore[i]); + } + kuangstore = {}; + n = arr.size(); + for(i=0;iaddWidget(&kuangstore[i]); + } } void MainWindow::FriendSessionAdd(QJsonObject data){ diff --git a/Client/mainwindow.h b/Client/mainwindow.h index 34780b1..0a316c2 100644 --- a/Client/mainwindow.h +++ b/Client/mainwindow.h @@ -29,7 +29,9 @@ public: void GroupSessionAdd(QJsonObject data); QVBoxLayout *friendlayout; QVBoxLayout *grouplayout; + QVBoxLayout *searchlayout; QString username; + QVectorkuangstore; //处理信息 void dealMessage(Message *messageW, QListWidgetItem *item, QString text, QString time, Message::UserType type); //处理搜索框好友显示 @@ -38,10 +40,14 @@ public: void dealMessageTime(QString curMsgTime); void AddMessagetoListview(QJsonObject data); void clearlistview(); + void dealsearchinfo(QJsonObject data); signals: void updatelistview(); void SendMessageToServer(const QString &sendername,const QString &text); bool eventFilter(QObject *watched, QEvent *event); + void SendSearchInfo(QString msg); + void SendNewFriendInfo(QString name); + private slots: void on_btnSend_clicked(); diff --git a/Client/mainwindow.ui b/Client/mainwindow.ui index 9e1370e..85ecfe0 100644 --- a/Client/mainwindow.ui +++ b/Client/mainwindow.ui @@ -78,7 +78,7 @@ QTabBar::tab:hover QTabWidget::Rounded - 1 + 2 @@ -574,8 +574,8 @@ QToolBox::tab::hover{ 0 0 - 253 - 540 + 100 + 30 @@ -594,7 +594,7 @@ QToolBox::tab::hover{ 0 0 253 - 540 + 542 @@ -606,8 +606,8 @@ QToolBox::tab::hover{ 0 0 - 253 - 540 + 100 + 30 @@ -960,8 +960,8 @@ QLineEdit::focus - 10 - 80 + 0 + 70 301 611 -- Gitee From d04f431674a01d11572ee6c1f4735ed8a4978f6c Mon Sep 17 00:00:00 2001 From: guo-qingju <897751420@qq.com> Date: Tue, 31 Aug 2021 19:06:16 +0800 Subject: [PATCH 2/9] group --- Client/clientmain.cpp | 5 +++-- Client/clientmain.h | 2 +- Client/kuang.cpp | 15 +++++++++++---- Client/kuang.h | 3 ++- Client/mainwindow.cpp | 35 ++++++++++++++++++++++++++++++++++- Client/mainwindow.h | 11 +++++++++-- Client/mainwindow.ui | 6 +++--- 7 files changed, 63 insertions(+), 14 deletions(-) diff --git a/Client/clientmain.cpp b/Client/clientmain.cpp index 0b48cef..4126640 100644 --- a/Client/clientmain.cpp +++ b/Client/clientmain.cpp @@ -40,11 +40,12 @@ void ClientMain::createmainwindow(QJsonObject data){ connect(main,&MainWindow::SendSearchInfo,this,&ClientMain::SendSearchInfoToSever); connect(this,&ClientMain::SearchInfoReceived,main,&MainWindow::dealsearchinfo); connect(main,&MainWindow::SendNewFriendInfo,this,&ClientMain::SendNewFriendInfoToSever); + connect(main,&MainWindow::sendnewgroup,this,&ClientMain::send); } -void ClientMain::SendNewFriendInfoToSever(QString name){ +void ClientMain::SendNewFriendInfoToSever(Kuang *This){ QJsonObject data = {{"MsgType","NewFriend"}}; - QJsonObject temp = {{"Username",name},{"Username",main->username}}; + QJsonObject temp = {{"Username",This->USERNAME},{"Username",main->username}}; data["Members"] = temp; send(data); } diff --git a/Client/clientmain.h b/Client/clientmain.h index 8d9a41c..f5b9126 100644 --- a/Client/clientmain.h +++ b/Client/clientmain.h @@ -32,7 +32,7 @@ public: void MessageFromMainwindow(const QString & sendername, const QString &text); void receiveJsonObject(QJsonObject); void SendSearchInfoToSever(QString msg); - void SendNewFriendInfoToSever(QString name); + void SendNewFriendInfoToSever(Kuang* This); signals: void serverConnected(); diff --git a/Client/kuang.cpp b/Client/kuang.cpp index 2d0a3e3..45c4f19 100644 --- a/Client/kuang.cpp +++ b/Client/kuang.cpp @@ -21,11 +21,14 @@ Kuang::Kuang(const QString &username,QJsonObject data,QWidget *parent): QJsonArray temp = data["Members"].toArray(); SessionID = data["SessionID"].toInt(); if(temp[0].toObject()["Username"].toString()==username){ - ui->name->setText(temp[1].toObject()["Username"].toString()); + USERNAME = temp[1].toObject()["Username"].toString(); + ui->name->setText(USERNAME); } else { - ui->name->setText(temp[0].toObject()["Username"].toString()); + USERNAME = temp[0].toObject()["Username"].toString(); + ui->name->setText(USERNAME); } + IsChosen = false; ui->name->setPixmap(QPixmap(":/img/system/img/LittleRed.svg")); } @@ -35,7 +38,9 @@ Kuang::Kuang(QJsonObject data,QWidget *parent): ui(new Ui::Kuang){ ui->setupUi(this); SessionID = data["SessionID"].toInt(); - ui->name->setText(data["Profile"].toObject()["SessionName"].toString()); + IsChosen = false; + USERNAME = data["Profile"].toObject()["SessionName"].toString(); + ui->name->setText(USERNAME); } Kuang::Kuang(QString UserName,QString NikeName,QWidget *parent): @@ -44,6 +49,7 @@ Kuang::Kuang(QString UserName,QString NikeName,QWidget *parent): ui->setupUi(this); SessionID = 0; USERNAME = UserName; + IsChosen = false; UserName = "UserName:" + UserName + "\n" + "NikeName" + NikeName; ui->name->setText(UserName); } @@ -54,7 +60,7 @@ void Kuang::mousePressEvent(QMouseEvent *ev){ if(ev->button()==Qt::LeftButton){ if(!KuangChosenNow || KuangChosenNow != this){ KuangChosenNow = this; - emit KuangChosenChanged(USERNAME); + emit KuangChosenChanged(this); } } } @@ -62,6 +68,7 @@ void Kuang::mousePressEvent(QMouseEvent *ev){ Kuang::Kuang(const Kuang& temp){ SessionID = temp.SessionID; USERNAME = temp.USERNAME; + IsChosen = temp.IsChosen; } Kuang::~Kuang() diff --git a/Client/kuang.h b/Client/kuang.h index 06f3124..89eb6fd 100644 --- a/Client/kuang.h +++ b/Client/kuang.h @@ -24,11 +24,12 @@ public: virtual void mousePressEvent(QMouseEvent *ev); ~Kuang(); int SessionID; + bool IsChosen = false; QString USERNAME; static Kuang *KuangChosenNow; signals: - void KuangChosenChanged(QString USERNAME); + void KuangChosenChanged(Kuang *This); private: Ui::Kuang *ui; }; diff --git a/Client/mainwindow.cpp b/Client/mainwindow.cpp index c7aba63..a124db5 100644 --- a/Client/mainwindow.cpp +++ b/Client/mainwindow.cpp @@ -110,6 +110,8 @@ MainWindow::MainWindow(QJsonObject data,QWidget *parent): friendlayout = new QVBoxLayout(ui->frd); grouplayout = new QVBoxLayout(ui->group); searchlayout = new QVBoxLayout(ui->toolBox); + newgrouplayout = new QVBoxLayout(ui->newgroup); + newgroupviewlayout = new QVBoxLayout(ui->newgroupview); setup(data); } @@ -152,10 +154,26 @@ void MainWindow::dealsearchinfo(QJsonObject data){ } void MainWindow::FriendSessionAdd(QJsonObject data){ - Kuang *k = new Kuang(username,data,this); friendlayout->addWidget(k); connect(k,&Kuang::KuangChosenChanged,this,&MainWindow::clearlistview); + kuanggroupstore.append(Kuang(username,data,this)); + Kuang *temp = kuanggroupstore.end(); + connect(temp,&Kuang::KuangChosenChanged,this,&MainWindow::groupchanged); + newgrouplayout->addWidget(temp); +} + +void MainWindow::groupchanged(Kuang *This){ + if(This->IsChosen){ + newgrouplayout->addWidget(This); + newgroupviewlayout->removeWidget(This); + This->IsChosen = false; + } + else{ + newgrouplayout->removeWidget(This); + newgroupviewlayout->addWidget(This); + This->IsChosen = true; + } } void MainWindow::GroupSessionAdd(QJsonObject data){ @@ -184,3 +202,18 @@ void MainWindow::AddMessagetoListview(QJsonObject data){ } } } + +void MainWindow::on_pushButton_clicked() +{ + QJsonObject temp; + int i, n = kuanggroupstore.size(); + for(i=0;ilineEdit->text(); + QJsonObject data = {{"MsgType","NewGroup"},{"SessionName",msg}}; + data["Members"] = temp; + emit sendnewgroup(data); +} diff --git a/Client/mainwindow.h b/Client/mainwindow.h index 0a316c2..35eee2b 100644 --- a/Client/mainwindow.h +++ b/Client/mainwindow.h @@ -30,8 +30,10 @@ public: QVBoxLayout *friendlayout; QVBoxLayout *grouplayout; QVBoxLayout *searchlayout; + QVBoxLayout *newgrouplayout; + QVBoxLayout *newgroupviewlayout; QString username; - QVectorkuangstore; + QVectorkuangstore,kuanggroupstore; //处理信息 void dealMessage(Message *messageW, QListWidgetItem *item, QString text, QString time, Message::UserType type); //处理搜索框好友显示 @@ -41,16 +43,21 @@ public: void AddMessagetoListview(QJsonObject data); void clearlistview(); void dealsearchinfo(QJsonObject data); + void groupchanged(Kuang *This); + signals: void updatelistview(); void SendMessageToServer(const QString &sendername,const QString &text); bool eventFilter(QObject *watched, QEvent *event); void SendSearchInfo(QString msg); - void SendNewFriendInfo(QString name); + void SendNewFriendInfo(Kuang *This); + void sendnewgroup(QJsonObject data); private slots: void on_btnSend_clicked(); + void on_pushButton_clicked(); + protected: //重生事件 调整聊天框大小 void resizeEvent(QResizeEvent *event); diff --git a/Client/mainwindow.ui b/Client/mainwindow.ui index 85ecfe0..ad09a5a 100644 --- a/Client/mainwindow.ui +++ b/Client/mainwindow.ui @@ -78,7 +78,7 @@ QTabBar::tab:hover QTabWidget::Rounded - 2 + 3 @@ -957,7 +957,7 @@ QLineEdit::focus 创建群聊 - + 0 @@ -983,7 +983,7 @@ QLineEdit::focus - + 380 -- Gitee From 81f85764d3f6323b2ca2ab71f81ca65c58c92018 Mon Sep 17 00:00:00 2001 From: wuzirui Date: Wed, 1 Sep 2021 01:00:11 +0800 Subject: [PATCH 3/9] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=A5=BD=E5=8F=8B?= =?UTF-8?q?=E8=AF=B7=E6=B1=82=E3=80=81=E6=90=9C=E7=B4=A2=EF=BC=8C=E6=90=9C?= =?UTF-8?q?=E7=B4=A2=E6=B5=8B=E8=AF=95=E5=AE=8C=E6=88=90=E5=B7=B2=E7=BB=8F?= =?UTF-8?q?ok=EF=BC=8C=E5=8A=A0=E5=A5=BD=E5=8F=8B=E8=BF=98=E6=9C=89?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Client/main.cpp | 2 +- README.md | 9 ++++++- Server/Session/abstractsession.h | 1 + Server/Session/onlinesession.h | 1 + Server/databaseoperation.cpp | 23 ++++++++++++++++ Server/databaseoperation.h | 1 + Server/operations.cpp | 45 +++++++++++++++++++++++++++++--- Server/operations.h | 3 ++- Server/sever.cpp | 8 +++++- Server/sever.h | 1 + Server/widget.cpp | 21 +++------------ Server/widget.ui | 2 +- 12 files changed, 92 insertions(+), 25 deletions(-) diff --git a/Client/main.cpp b/Client/main.cpp index 1a1c577..ffb7f15 100644 --- a/Client/main.cpp +++ b/Client/main.cpp @@ -36,7 +36,7 @@ int main(int argc, char *argv[]) QString ip = settings.contains("Server IP") ? settings["Server IP"].toString() : "127.0.0.1"; int port = settings.contains("Port") ? settings["Port"].toInt() : 8888; #else - QString ip = "10.194.52.201"; + QString ip = "10.195.2.2"; int port = 8888; #endif qDebug() << "IP = " << ip << ", port = " << port; diff --git a/README.md b/README.md index 73f5ad5..b9b0ee0 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,14 @@ BIT ICQ, a Realtime Communicating Solution using C++ Qt framework } ``` - +### 加好友 +```json +{ + "MsgType": "AddFriendRequest", + "FromUsername": "...", + "ToUsername": "..." +} +``` ### 注册信息 diff --git a/Server/Session/abstractsession.h b/Server/Session/abstractsession.h index 6decd30..e2d4672 100644 --- a/Server/Session/abstractsession.h +++ b/Server/Session/abstractsession.h @@ -21,6 +21,7 @@ public: } int getMemberCount() const { return members.size(); } + const UserContainer & getMembers() { return members; } protected: UserContainer members; diff --git a/Server/Session/onlinesession.h b/Server/Session/onlinesession.h index 877e081..c091639 100644 --- a/Server/Session/onlinesession.h +++ b/Server/Session/onlinesession.h @@ -20,6 +20,7 @@ public: int & getLatestMessageID() { return latest; } const QJsonObject& getProfile() const { return Profile; } QJsonObject generateJsonFromData() const; + void addMember(OnlineUserModel * user) { members.append(user->getUsername()); } private: int id, latest; diff --git a/Server/databaseoperation.cpp b/Server/databaseoperation.cpp index eca5f3a..b6c4315 100644 --- a/Server/databaseoperation.cpp +++ b/Server/databaseoperation.cpp @@ -188,6 +188,11 @@ int DatabaseOperation::insertSessionBasicInfo(const char* SessionType, const cha qDebug() << query.lastError(); return -1; } + QJsonObject json = str2json(profile); + QString sessionName = json.contains("SessionName") ? json["SessionName"].toString() : "None"; + OnlineSession * session = new OnlineSession(sessionId, sessionName, json, QList()); + auto & dcenter = ServerDataCenter::Singleton(); + dcenter.registerSession(session); return sessionId; } @@ -201,6 +206,8 @@ bool DatabaseOperation::insertMember(int sessionID, const char * user){ qDebug()<<"query error: "< DatabaseOperation::findFriend(QString name){ + QSqlQuery query; + QList result; + QString sql = "SELECT Username FROM User WHERE Username LIKE '%"+name+"%' or Nickname LIKE '%"+name+"%'"; + query.prepare(sql); + if (!query.exec()){ + qDebug() << query.lastError(); + } + else{ + while(query.next()){ + result.append(query.value(0).toString()); + } + } + return result; +} diff --git a/Server/databaseoperation.h b/Server/databaseoperation.h index 9b90e3e..cd88da5 100644 --- a/Server/databaseoperation.h +++ b/Server/databaseoperation.h @@ -47,6 +47,7 @@ public: OnlineMessage * findMessage(int sessionId, int MessageId); OnlineSession * findSession(int sessionID); OnlineUserModel * findUser(QString username); + QList findFriend(QString name); bool attemptLogIn(QString username, QString password) const; diff --git a/Server/operations.cpp b/Server/operations.cpp index 48d16fb..9bcccaf 100644 --- a/Server/operations.cpp +++ b/Server/operations.cpp @@ -2,8 +2,7 @@ #include "serverdatacenter.h" #include "databaseoperation.h" -Operations::Operations(QObject *parent) : QObject(parent) -{ +Operations::Operations(QObject *parent) : QObject(parent) { } @@ -39,7 +38,6 @@ resp Operations::loginResponse(QJsonObject json) { ret.append(curuser.generateUserModelJson()); } ret.append(dcenter.getSession(sessionlist.at(i)).generateJsonFromData()); -// auto messageList = } return ret; } @@ -78,3 +76,44 @@ resp Operations::newMessageResponse(QJsonObject json) { return resp(); } + +resp Operations::addFriendResponse(QJsonObject json) { + DatabaseOperation & db = DatabaseOperation::Singleton(); + QString from = json["FromUsername"].toString(), to = json["ToUsername"].toString(); + OnlineUserModel & fromUser = dcenter.getUser(from), &toUser = dcenter.getUser(to); + + auto sessionlist = db.querySessionsByMember(from.toUtf8().data()); + for (int i = 0; i < sessionlist.size(); i++) { + auto & members = dcenter.getSession(sessionlist[i]).getMembers(); + for (int j = 0; j < members.size(); j++) { + if (members[j] == to) + return resp(); + } + } + + int id = db.insertSessionBasicInfo("FRIEND", "{\"LatestMessageID\": 0}"); + db.insertMember(id, fromUser); + db.insertMember(id, toUser); + + auto response = dcenter.getSession(id).generateJsonFromData(); + + emit newMessage(id, response); + return resp(); +} + +resp Operations::searchResponse(QJsonObject json) { + DatabaseOperation & db = DatabaseOperation::Singleton(); + ServerDataCenter & dcenter = ServerDataCenter::Singleton(); + QString queryStr = json["SearchInfo"].toString(); + + QList result = db.findFriend(queryStr); + QJsonObject response = {{ "MsgType", "SearchInfo" }}; + QJsonArray array; + for (int i = 0; i < result.size(); i++) { + array.append(QJsonObject({{"Username", result[i]}, + {"Nickname", dcenter.getUser(result[i]).getNickname()}})); + } + response["SearchInfo"] = array; + return {response}; +} + diff --git a/Server/operations.h b/Server/operations.h index 86c206d..bf1f226 100644 --- a/Server/operations.h +++ b/Server/operations.h @@ -29,7 +29,8 @@ public: QList registerResponse(QJsonObject json); QList loginResponse(QJsonObject json); QList newMessageResponse(QJsonObject json); - + QList addFriendResponse(QJsonObject json); + QList searchResponse(QJsonObject json); }; #endif // OPERATIONS_H diff --git a/Server/sever.cpp b/Server/sever.cpp index 942eccd..7c66260 100644 --- a/Server/sever.cpp +++ b/Server/sever.cpp @@ -73,7 +73,6 @@ void Sever::receiveMessage(int handle) auto returnList = QList(); auto &op = Operations::Singleton (); - QString messageSender = ""; //标记消息来源用户名称 if(method == "login") { //首次收到登陆信息 @@ -115,6 +114,13 @@ void Sever::receiveMessage(int handle) op.newMessageResponse (recejson); //同时触发信号,到widget } + else if (method == "search") { + returnList = op.searchResponse(recejson); + emit sendMsg(returnList, messageSender); + } + else if (method == "addfriendrequest") { + op.addFriendResponse(recejson); + } diff --git a/Server/sever.h b/Server/sever.h index 48baf1a..1df5eec 100644 --- a/Server/sever.h +++ b/Server/sever.h @@ -22,6 +22,7 @@ private: QTcpSocket *sock; void incomingConnection(qintptr handle); void receiveMessage(qintptr); + QString messageSender = ""; public slots: void setIP(QString); diff --git a/Server/widget.cpp b/Server/widget.cpp index a329a29..47a41d8 100644 --- a/Server/widget.cpp +++ b/Server/widget.cpp @@ -135,31 +135,18 @@ void Widget::getMessageTargetandContent(int sessionID, QJsonObject msg) auto& db = DatabaseOperation::Singleton(); QList sessionList = db.queryMembersBySession (sessionID); - - qDebug() <>::iterator it1 = sever.userToHandle.begin();it1!=sever.userToHandle.end ();it1++) - { - qDebug() <>::iterator it1 = sever.userToHandle.begin();it1!=sever.userToHandle.end ();it1++) { + if(it1.key ()==sessionList[i]) { qDebug()<< "找到相同user名"; if(it1.value ().size ()==0) break;//当前成员没有终端登陆 - qDebug()<write (send2.data ()); } diff --git a/Server/widget.ui b/Server/widget.ui index c9d3bec..a3870c7 100644 --- a/Server/widget.ui +++ b/Server/widget.ui @@ -169,7 +169,7 @@ p, li { white-space: pre-wrap; } 770 640 401 - 251 + 221 -- Gitee From 0a36ce180d2d9235ea59dbac65f1665a887f194d Mon Sep 17 00:00:00 2001 From: Jason Liu <88589030+LydJason@users.noreply.github.com> Date: Wed, 1 Sep 2021 09:50:46 +0800 Subject: [PATCH 4/9] =?UTF-8?q?=E9=92=88=E5=AF=B9=E6=9F=90=E4=BA=9B?= =?UTF-8?q?=E8=AF=B7=E6=B1=82=EF=BC=8C=E6=9C=8D=E5=8A=A1=E7=AB=AF=E5=8F=AA?= =?UTF-8?q?=E5=8F=91=E5=9B=9E=E7=BB=99=E5=8D=95=E4=B8=AAsocket?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Server/sever.cpp | 6 +++--- Server/sever.h | 2 +- Server/widget.cpp | 49 ++++++++++++++++++++++------------------------- Server/widget.h | 2 +- 4 files changed, 28 insertions(+), 31 deletions(-) diff --git a/Server/sever.cpp b/Server/sever.cpp index 7c66260..851241f 100644 --- a/Server/sever.cpp +++ b/Server/sever.cpp @@ -99,11 +99,11 @@ void Sever::receiveMessage(int handle) emit linkMsg (messageSender+" 1 "+"登陆了!"); } returnList = op.loginResponse (recejson); - emit sendMsg (returnList, messageSender); + emit sendMsg (returnList, handle); } else if (method == "regist") { returnList = op.registerResponse(recejson); - emit sendMsg (returnList, messageSender); + emit sendMsg (returnList, handle); } else if (method == "info") { @@ -116,7 +116,7 @@ void Sever::receiveMessage(int handle) } else if (method == "search") { returnList = op.searchResponse(recejson); - emit sendMsg(returnList, messageSender); + emit sendMsg(returnList, handle); } else if (method == "addfriendrequest") { op.addFriendResponse(recejson); diff --git a/Server/sever.h b/Server/sever.h index 1df5eec..bde4efd 100644 --- a/Server/sever.h +++ b/Server/sever.h @@ -30,7 +30,7 @@ public slots: signals: void linkMsg(QString); - void sendMsg(QList, QString);//将tcp_server收到的信息作为信号发送给 MainWindow + void sendMsg(QList, int);//将tcp_server收到的信息作为信号发送给 MainWindow void ready_Read(qintptr); void sendChannel(int); void offLine(int); diff --git a/Server/widget.cpp b/Server/widget.cpp index 47a41d8..4d6ba3d 100644 --- a/Server/widget.cpp +++ b/Server/widget.cpp @@ -41,9 +41,9 @@ void Widget::printLink(QString str) ui->listWidget_2->setCurrentRow (ui->listWidget_2->count ()-1); } -void Widget::printMsg(QList list, QString messageSender) +void Widget::printMsg(QList list, int handle) { - //回发客户端功能,实现同用户多设备回发 + //针对于regist、login、search请求仅回发单个socket qDebug() << "in printMsg!"; QJsonObject Package = {{ "MsgType", "JsonArray" }}; QJsonArray array; @@ -52,36 +52,33 @@ void Widget::printMsg(QList list, QString messageSender) array.append(list[i]); } Package["MsgList"] = array; + QJsonDocument send1 = QJsonDocument(Package); QByteArray send2 = send1.toJson (); - int clientLength = sever.userToHandle[messageSender].size (); - for(int i=0;iwrite(send2.data ()); - } + sever.clientMap[handle]->write(send2.data ()); -} -void Widget::on_btnSend_clicked() -{ - //发送功能实现,点对点 - int channelName = ui->comboBox->currentText ().toUInt (); - QByteArray sendText = ui->teSend->toPlainText ().toUtf8 (); - //通过handle键取到值 - sever.clientMap[channelName]->write (sendText); } -void Widget::on_btnRadio_clicked() -{ - //广播功能实现,点对多点 - QMap::iterator it; - for ( it = sever.clientMap.begin(); it != sever.clientMap.end(); ++it ) - { - it.value ()->write (ui->teSend->toPlainText ().toUtf8 ()); - } -} +//void Widget::on_btnSend_clicked() +//{ +// //发送功能实现,点对点 +// int channelName = ui->comboBox->currentText ().toUInt (); +// QByteArray sendText = ui->teSend->toPlainText ().toUtf8 (); +// //通过handle键取到值 +// sever.clientMap[channelName]->write (sendText); +//} + +//void Widget::on_btnRadio_clicked() +//{ +// //广播功能实现,点对多点 +// QMap::iterator it; +// for ( it = sever.clientMap.begin(); it != sever.clientMap.end(); ++it ) +// { +// it.value ()->write (ui->teSend->toPlainText ().toUtf8 ()); +// } +//} void Widget::setChannel(int channel) { @@ -112,7 +109,7 @@ void Widget::setOffline(int handle) ui->listWidget_2->setCurrentRow (ui->listWidget_2->count ()-1); sever.clientMap.remove (handle); - //没有删除usertohandle的表格 + //删除usertohandle的表格 for(QMap >::iterator it1 = sever.userToHandle.begin();it1!=sever.userToHandle.end ();it1++) { it1.value ().removeAll (handle); diff --git a/Server/widget.h b/Server/widget.h index 7d368bc..8cb6b52 100644 --- a/Server/widget.h +++ b/Server/widget.h @@ -20,7 +20,7 @@ private slots: // void on_pushButton_3_clicked() {} void printLink(QString); //收到由server发来窗口的信号,并且打印到文本框 - void printMsg(QList, QString); + void printMsg(QList, int); void on_btnSend_clicked(); -- Gitee From 356e9cba19d57c823fa939a1bf76067529f53c57 Mon Sep 17 00:00:00 2001 From: wuzirui Date: Wed, 1 Sep 2021 09:56:42 +0800 Subject: [PATCH 5/9] =?UTF-8?q?bug=20fix=20=E6=B3=A8=E5=86=8C=E4=B8=8D?= =?UTF-8?q?=E6=88=90=E5=8A=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Server/operations.cpp | 3 ++- Server/sever.cpp | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/Server/operations.cpp b/Server/operations.cpp index 9bcccaf..fead4a2 100644 --- a/Server/operations.cpp +++ b/Server/operations.cpp @@ -50,12 +50,13 @@ resp Operations::registerResponse(QJsonObject json) { {"IsLegal", false}}; if (dcenter.hasUser(json["Username"].toString())) return {head}; char * username = json["Username"].toString().toUtf8().data(); - Q_ASSERT(username == json["Username"].toString()); + qDebug() << "Registering User into DB, username = " << username; char * nickname = json["Nickname"].toString().toUtf8().data(); char * password = json["Password"].toString().toUtf8().data(); if (!db.insertUser(username, nickname, password, "{ \"signiture\": \"None\"}")) return {head}; + qDebug() << "Register: Success"; head["IsLegal"] = true; return {head}; } diff --git a/Server/sever.cpp b/Server/sever.cpp index 7c66260..a91c352 100644 --- a/Server/sever.cpp +++ b/Server/sever.cpp @@ -62,6 +62,7 @@ void Sever::receiveMessage(int handle) QByteArray receiveMes = it.value ()->readAll (); QJsonDocument receJson = QJsonDocument::fromJson (receiveMes); QJsonObject recejson = receJson.object (); + qDebug() << "Received Message from " << handle << ": " << recejson; if(!recejson.contains ("MsgType")) { qDebug()<<"receive message is not json!"; -- Gitee From 69e064040ee5bcbd433e90c98cb57514a78e5983 Mon Sep 17 00:00:00 2001 From: wuzirui Date: Wed, 1 Sep 2021 10:27:50 +0800 Subject: [PATCH 6/9] merge conflict --- Server/databaseoperation.cpp | 9 +-------- Server/widget.cpp | 14 ++++++++------ 2 files changed, 9 insertions(+), 14 deletions(-) diff --git a/Server/databaseoperation.cpp b/Server/databaseoperation.cpp index b6c4315..9890318 100644 --- a/Server/databaseoperation.cpp +++ b/Server/databaseoperation.cpp @@ -136,16 +136,9 @@ QList DatabaseOperation::findAllMessages() { //往User表中插入数据 bool DatabaseOperation::insertUser(const char* username, const char* nickname, const char* password, const char* profile){ QSqlQuery query; -// QString insert_sql = "insert into User(Username, Nickname, Password, Profile) values (?, ?, ?, ?)"; QString insert_sql = QString("INSERT INTO User(Username, Nickname, Password, Profile) VALUES ('%1', '%2', '%3', '%4')") .arg(username).arg(nickname).arg(password).arg(profile); - qDebug() << insert_sql; -// query.prepare(insert_sql); -// query.addBindValue(username); -// query.addBindValue(nickname); -// query.addBindValue(password); -// query.addBindValue(profile); - if (! query.exec(insert_sql) ) { + qDebug() << insert_sql; if (! query.exec(insert_sql) ) { qDebug() << query.lastError(); return false; } diff --git a/Server/widget.cpp b/Server/widget.cpp index 4d6ba3d..dcd63af 100644 --- a/Server/widget.cpp +++ b/Server/widget.cpp @@ -61,24 +61,26 @@ void Widget::printMsg(QList list, int handle) } -//void Widget::on_btnSend_clicked() -//{ +void Widget::on_btnSend_clicked() +{ + qDebug() << "not implemented Widget::on_btnSend_clicked"; // //发送功能实现,点对点 // int channelName = ui->comboBox->currentText ().toUInt (); // QByteArray sendText = ui->teSend->toPlainText ().toUtf8 (); // //通过handle键取到值 // sever.clientMap[channelName]->write (sendText); -//} +} -//void Widget::on_btnRadio_clicked() -//{ +void Widget::on_btnRadio_clicked() +{ + qDebug() << "not implemented Widget::on_btnRadio_clicked"; // //广播功能实现,点对多点 // QMap::iterator it; // for ( it = sever.clientMap.begin(); it != sever.clientMap.end(); ++it ) // { // it.value ()->write (ui->teSend->toPlainText ().toUtf8 ()); // } -//} +} void Widget::setChannel(int channel) { -- Gitee From dcf4451ea622a0aa2bf8e64ca9550b577c65871f Mon Sep 17 00:00:00 2001 From: guo-qingju <897751420@qq.com> Date: Wed, 1 Sep 2021 11:38:28 +0800 Subject: [PATCH 7/9] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dbug=EF=BC=8C=20=E5=A5=BD?= =?UTF-8?q?=E5=8F=8B=E7=94=B3=E8=AF=B7=EF=BC=8C=E7=BE=A4=E7=BB=84=E7=94=B3?= =?UTF-8?q?=E8=AF=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Client/Client.pro | 1 - Client/clientdatacenter.cpp | 2 +- Client/clientmain.cpp | 3 ++- Client/kuang.cpp | 15 ++++------- Client/kuang.h | 1 - Client/main.cpp | 2 +- Client/mainwindow.cpp | 38 +++++++++++++++------------- Client/mainwindow.h | 5 ++-- Client/mainwindow.ui | 50 ++++++++++++++++++------------------- Client/widget.cpp | 2 +- 10 files changed, 58 insertions(+), 61 deletions(-) diff --git a/Client/Client.pro b/Client/Client.pro index 8b498b3..8ab7774 100644 --- a/Client/Client.pro +++ b/Client/Client.pro @@ -40,7 +40,6 @@ HEADERS += \ clientdatacenter.h \ clientmain.h \ databaseoperation.h \ - userregister.cpp \ highlighter.h \ kuang.h \ ltest.h \ diff --git a/Client/clientdatacenter.cpp b/Client/clientdatacenter.cpp index ee3147e..b2a08e1 100644 --- a/Client/clientdatacenter.cpp +++ b/Client/clientdatacenter.cpp @@ -53,7 +53,7 @@ void ClientDataCenter::RegisterSession(QJsonObject data){ OnlineSession *temp = new OnlineSession(data); registerSession(temp); - qDebug() << data["SessionType"].toString() << "\n"; +// qDebug() << data["SessionType"].toString() << "\n"; if(data["SessionType"].toString()=="FRIEND"){ emit FriendSessionDataReceived(data); diff --git a/Client/clientmain.cpp b/Client/clientmain.cpp index 4126640..889a4bd 100644 --- a/Client/clientmain.cpp +++ b/Client/clientmain.cpp @@ -44,8 +44,9 @@ void ClientMain::createmainwindow(QJsonObject data){ } void ClientMain::SendNewFriendInfoToSever(Kuang *This){ + Kuang::KuangChosenNow = nullptr; QJsonObject data = {{"MsgType","NewFriend"}}; - QJsonObject temp = {{"Username",This->USERNAME},{"Username",main->username}}; + QJsonObject temp = {{"ToUsername",This->USERNAME},{"FromUsername",main->username}}; data["Members"] = temp; send(data); } diff --git a/Client/kuang.cpp b/Client/kuang.cpp index 45c4f19..7920c35 100644 --- a/Client/kuang.cpp +++ b/Client/kuang.cpp @@ -48,15 +48,16 @@ Kuang::Kuang(QString UserName,QString NikeName,QWidget *parent): ui(new Ui::Kuang){ ui->setupUi(this); SessionID = 0; - USERNAME = UserName; IsChosen = false; - UserName = "UserName:" + UserName + "\n" + "NikeName" + NikeName; - ui->name->setText(UserName); + USERNAME = "UserName:" + UserName + "\n" + "NikeName:" + NikeName; + ui->name->setText(USERNAME); + USERNAME = UserName; } Kuang* Kuang::KuangChosenNow = nullptr; + void Kuang::mousePressEvent(QMouseEvent *ev){ - qDebug() << "Mouse Pressed" << ClientDataCenter::Singleton().getSession(SessionID).getLatestMessageID(); +// qDebug() << "Mouse Pressed" << ClientDataCenter::Singleton().getSession(SessionID).getLatestMessageID(); if(ev->button()==Qt::LeftButton){ if(!KuangChosenNow || KuangChosenNow != this){ KuangChosenNow = this; @@ -65,12 +66,6 @@ void Kuang::mousePressEvent(QMouseEvent *ev){ } } -Kuang::Kuang(const Kuang& temp){ - SessionID = temp.SessionID; - USERNAME = temp.USERNAME; - IsChosen = temp.IsChosen; -} - Kuang::~Kuang() { delete ui; diff --git a/Client/kuang.h b/Client/kuang.h index 89eb6fd..8a6ff3b 100644 --- a/Client/kuang.h +++ b/Client/kuang.h @@ -20,7 +20,6 @@ public: Kuang(const QString &username,QJsonObject data,QWidget *parent = nullptr); Kuang(QJsonObject data,QWidget *parent = nullptr); Kuang(QString UserName,QString NikeName,QWidget *parent = nullptr); - Kuang(const Kuang& temp); virtual void mousePressEvent(QMouseEvent *ev); ~Kuang(); int SessionID; diff --git a/Client/main.cpp b/Client/main.cpp index 1a1c577..4c19eae 100644 --- a/Client/main.cpp +++ b/Client/main.cpp @@ -36,7 +36,7 @@ int main(int argc, char *argv[]) QString ip = settings.contains("Server IP") ? settings["Server IP"].toString() : "127.0.0.1"; int port = settings.contains("Port") ? settings["Port"].toInt() : 8888; #else - QString ip = "10.194.52.201"; + QString ip = "10.194.185.232"; int port = 8888; #endif qDebug() << "IP = " << ip << ", port = " << port; diff --git a/Client/mainwindow.cpp b/Client/mainwindow.cpp index a124db5..1611c16 100644 --- a/Client/mainwindow.cpp +++ b/Client/mainwindow.cpp @@ -109,7 +109,7 @@ MainWindow::MainWindow(QJsonObject data,QWidget *parent): ui->tabWidget->setAttribute(Qt::WA_StyledBackground); friendlayout = new QVBoxLayout(ui->frd); grouplayout = new QVBoxLayout(ui->group); - searchlayout = new QVBoxLayout(ui->toolBox); + searchlayout = new QVBoxLayout(ui->searchkuang); newgrouplayout = new QVBoxLayout(ui->newgroup); newgroupviewlayout = new QVBoxLayout(ui->newgroupview); setup(data); @@ -140,16 +140,18 @@ void MainWindow::dealsearchinfo(QJsonObject data){ QString UserName,NickName; int n = kuangstore.size(),i; for(i=0;iremoveWidget(&kuangstore[i]); + searchlayout->removeWidget(kuangstore[i]); + delete kuangstore[i]; } kuangstore = {}; n = arr.size(); for(i=0;iaddWidget(&kuangstore[i]); + UserName = arr[i].toObject()["Username"].toString(); + NickName = arr[i].toObject()["Nickname"].toString(); + Kuang *k = new Kuang(UserName,NickName); + kuangstore.append(k); + connect(k,&Kuang::KuangChosenChanged,this,&MainWindow::SendNewFriendInfo); + searchlayout->addWidget(k); } } @@ -157,16 +159,17 @@ void MainWindow::FriendSessionAdd(QJsonObject data){ Kuang *k = new Kuang(username,data,this); friendlayout->addWidget(k); connect(k,&Kuang::KuangChosenChanged,this,&MainWindow::clearlistview); - kuanggroupstore.append(Kuang(username,data,this)); - Kuang *temp = kuanggroupstore.end(); - connect(temp,&Kuang::KuangChosenChanged,this,&MainWindow::groupchanged); - newgrouplayout->addWidget(temp); + Kuang *t = new Kuang(username,data,this); + newgrouplayout->addWidget(t); + kuanggroupstore.append(t); + connect(t,&Kuang::KuangChosenChanged,this,&MainWindow::groupchanged); } void MainWindow::groupchanged(Kuang *This){ - if(This->IsChosen){ - newgrouplayout->addWidget(This); + Kuang::KuangChosenNow = nullptr; + if(This->IsChosen == true){ newgroupviewlayout->removeWidget(This); + newgrouplayout->addWidget(This); This->IsChosen = false; } else{ @@ -203,15 +206,16 @@ void MainWindow::AddMessagetoListview(QJsonObject data){ } } -void MainWindow::on_pushButton_clicked() +void MainWindow::on_sendgroup_clicked() { - QJsonObject temp; + QJsonArray temp; int i, n = kuanggroupstore.size(); for(i=0;iIsChosen){ + temp.append(QJsonObject({{"username", kuanggroupstore[i]->USERNAME}})); } } + temp.append(QJsonObject({{"username", username}})); QString msg = ui->lineEdit->text(); QJsonObject data = {{"MsgType","NewGroup"},{"SessionName",msg}}; data["Members"] = temp; diff --git a/Client/mainwindow.h b/Client/mainwindow.h index 35eee2b..a6da8b3 100644 --- a/Client/mainwindow.h +++ b/Client/mainwindow.h @@ -33,7 +33,7 @@ public: QVBoxLayout *newgrouplayout; QVBoxLayout *newgroupviewlayout; QString username; - QVectorkuangstore,kuanggroupstore; + QVectorkuangstore,kuanggroupstore; //处理信息 void dealMessage(Message *messageW, QListWidgetItem *item, QString text, QString time, Message::UserType type); //处理搜索框好友显示 @@ -55,8 +55,7 @@ signals: private slots: void on_btnSend_clicked(); - - void on_pushButton_clicked(); + void on_sendgroup_clicked(); protected: //重生事件 调整聊天框大小 diff --git a/Client/mainwindow.ui b/Client/mainwindow.ui index ad09a5a..7dc2f5a 100644 --- a/Client/mainwindow.ui +++ b/Client/mainwindow.ui @@ -78,7 +78,7 @@ QTabBar::tab:hover QTabWidget::Rounded - 3 + 2 @@ -564,7 +564,7 @@ QToolBox::tab::hover{ } - 1 + 0 1 @@ -574,8 +574,8 @@ QToolBox::tab::hover{ 0 0 - 100 - 30 + 253 + 542 @@ -593,8 +593,8 @@ QToolBox::tab::hover{ 0 0 - 253 - 542 + 100 + 30 @@ -856,7 +856,7 @@ QToolBox::tab 0 - + 0 @@ -957,24 +957,24 @@ QLineEdit::focus 创建群聊 - + 0 70 - 301 + 361 611 0 - + 0 0 - 301 + 361 582 @@ -983,7 +983,7 @@ QLineEdit::focus - + 380 @@ -995,7 +995,7 @@ QLineEdit::focus 0 - + 0 @@ -1009,30 +1009,30 @@ QLineEdit::focus - + - 510 - 10 - 93 - 28 + 150 + 0 + 113 + 21 - PushButton + - + - 150 - 0 - 113 - 21 + 540 + 30 + 84 + 24 - + PushButton diff --git a/Client/widget.cpp b/Client/widget.cpp index 58453cd..90563a4 100644 --- a/Client/widget.cpp +++ b/Client/widget.cpp @@ -39,7 +39,7 @@ void Widget::on_pushButton_clicked() { QJsonArray array = arrayValue.toArray(); length = array.size (); - for(int i=0;i Date: Wed, 1 Sep 2021 11:41:08 +0800 Subject: [PATCH 8/9] ip config --- Client/main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Client/main.cpp b/Client/main.cpp index ffb7f15..025e70f 100644 --- a/Client/main.cpp +++ b/Client/main.cpp @@ -36,7 +36,7 @@ int main(int argc, char *argv[]) QString ip = settings.contains("Server IP") ? settings["Server IP"].toString() : "127.0.0.1"; int port = settings.contains("Port") ? settings["Port"].toInt() : 8888; #else - QString ip = "10.195.2.2"; + QString ip = "127.0.0.1"; int port = 8888; #endif qDebug() << "IP = " << ip << ", port = " << port; -- Gitee From e78c1e0f23415991bad3fd4586d0e990818e9bb5 Mon Sep 17 00:00:00 2001 From: guo-qingju <897751420@qq.com> Date: Wed, 1 Sep 2021 12:15:14 +0800 Subject: [PATCH 9/9] add friend complete --- Client/clientmain.cpp | 10 +++++++--- Client/kuang.cpp | 3 +-- Client/main.cpp | 2 +- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/Client/clientmain.cpp b/Client/clientmain.cpp index 889a4bd..056f5f2 100644 --- a/Client/clientmain.cpp +++ b/Client/clientmain.cpp @@ -45,9 +45,13 @@ void ClientMain::createmainwindow(QJsonObject data){ void ClientMain::SendNewFriendInfoToSever(Kuang *This){ Kuang::KuangChosenNow = nullptr; - QJsonObject data = {{"MsgType","NewFriend"}}; - QJsonObject temp = {{"ToUsername",This->USERNAME},{"FromUsername",main->username}}; - data["Members"] = temp; + int i,n = main->kuangstore.size(); + for(i=0;isearchlayout->removeWidget(main->kuangstore[i]); + delete main->kuangstore[i]; + } + main->kuangstore = {}; + QJsonObject data = {{"MsgType","AddFriendRequest"}, {"FromUsername", main->username}, {"ToUsername", This->USERNAME}}; send(data); } diff --git a/Client/kuang.cpp b/Client/kuang.cpp index 7920c35..9737c3e 100644 --- a/Client/kuang.cpp +++ b/Client/kuang.cpp @@ -49,9 +49,8 @@ Kuang::Kuang(QString UserName,QString NikeName,QWidget *parent): ui->setupUi(this); SessionID = 0; IsChosen = false; - USERNAME = "UserName:" + UserName + "\n" + "NikeName:" + NikeName; - ui->name->setText(USERNAME); USERNAME = UserName; + ui->name->setText("UserName:" + UserName + "\n" + "NikeName:" + NikeName); } Kuang* Kuang::KuangChosenNow = nullptr; diff --git a/Client/main.cpp b/Client/main.cpp index 025e70f..1c6c484 100644 --- a/Client/main.cpp +++ b/Client/main.cpp @@ -36,7 +36,7 @@ int main(int argc, char *argv[]) QString ip = settings.contains("Server IP") ? settings["Server IP"].toString() : "127.0.0.1"; int port = settings.contains("Port") ? settings["Port"].toInt() : 8888; #else - QString ip = "127.0.0.1"; + QString ip = "192.168.200.171"; int port = 8888; #endif qDebug() << "IP = " << ip << ", port = " << port; -- Gitee