现在只能添加直接添加的 待和server修改
已修改 请求包添加了几个函数 add修改 待完善 addfriendswindow 界面 添加好友后好友列表立马回显
This commit is contained in:
parent
65b659948a
commit
a67f301e79
@ -44,6 +44,14 @@ public:
|
|||||||
body->set_subcommand(subType);
|
body->set_subcommand(subType);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Body(mp::MP_SUB_TYPE subType, uint64_t target, uint64_t source) {
|
||||||
|
body = new mp::body();
|
||||||
|
|
||||||
|
body->set_target(target);
|
||||||
|
body->set_source(source);
|
||||||
|
body->set_subcommand(subType);
|
||||||
|
}
|
||||||
|
|
||||||
Body() {
|
Body() {
|
||||||
body = new mp::body();
|
body = new mp::body();
|
||||||
}
|
}
|
||||||
|
@ -16,6 +16,11 @@ Request::Request(mp::MP_TYPE type, mp::MP_SUB_TYPE subType, uint64_t target, uin
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Request::Request(mp::MP_TYPE type, mp::MP_SUB_TYPE subType, uint64_t target, uint64_t source) :
|
||||||
|
Mph(type), Body(subType, target, source), Cqi() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
Request::Request(mp::MP_TYPE type, mp::MP_SUB_TYPE subType,const std::string &account,
|
Request::Request(mp::MP_TYPE type, mp::MP_SUB_TYPE subType,const std::string &account,
|
||||||
const std::string &password,const std::string &data) :
|
const std::string &password,const std::string &data) :
|
||||||
Mph(type), Body(subType, account, password, data) {
|
Mph(type), Body(subType, account, password, data) {
|
||||||
@ -54,3 +59,5 @@ std::string Request::packet() {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -16,6 +16,7 @@ public:
|
|||||||
Request(mp::MP_TYPE type, mp::MP_SUB_TYPE subType, const std::string& account, const std::string& password);
|
Request(mp::MP_TYPE type, mp::MP_SUB_TYPE subType, const std::string& account, const std::string& password);
|
||||||
Request(mp::MP_TYPE type, mp::MP_SUB_TYPE subType, const std::string& account, const std::string& password, const std::string& data);
|
Request(mp::MP_TYPE type, mp::MP_SUB_TYPE subType, const std::string& account, const std::string& password, const std::string& data);
|
||||||
Request(mp::MP_TYPE type, mp::MP_SUB_TYPE subType, uint64_t target, uint64_t source, const std::string& data);
|
Request(mp::MP_TYPE type, mp::MP_SUB_TYPE subType, uint64_t target, uint64_t source, const std::string& data);
|
||||||
|
Request(mp::MP_TYPE type, mp::MP_SUB_TYPE subType, uint64_t target, uint64_t source);
|
||||||
Request(mp::MP_TYPE type, mp::MP_SUB_TYPE subType, const std::string& account);
|
Request(mp::MP_TYPE type, mp::MP_SUB_TYPE subType, const std::string& account);
|
||||||
|
|
||||||
~Request() override;
|
~Request() override;
|
||||||
|
@ -39,6 +39,13 @@ std::string UserOperation::packet_base(mp::MP_TYPE type, mp::MP_SUB_TYPE subType
|
|||||||
return temp;
|
return temp;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string UserOperation::packet_base(mp::MP_TYPE type, mp::MP_SUB_TYPE subType, uint64_t source, uint64_t target) {
|
||||||
|
auto request = new Request(type,subType, target, source);
|
||||||
|
std::string temp = request->packet();
|
||||||
|
delete request;
|
||||||
|
return temp;
|
||||||
|
}
|
||||||
|
//// packet end
|
||||||
|
|
||||||
|
|
||||||
//// login
|
//// login
|
||||||
@ -127,12 +134,15 @@ std::optional<agreement_response> UserOperation::fetch_friends(uint64_t account)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 查询用户
|
// 查询用户
|
||||||
std::optional<agreement_response> UserOperation::fetch_user(uint64_t account) {
|
std::optional<agreement_response> UserOperation::fetch_user(uint64_t user, uint64_t account) {
|
||||||
std::regex pattern_account("[1-9](\\d{5,11})");
|
std::regex pattern_account("[1-9](\\d{5,11})");
|
||||||
|
|
||||||
std::string packet;
|
std::string packet;
|
||||||
if (std::regex_match(std::to_string(account), pattern_account)) {
|
if (std::regex_match(std::to_string(user), pattern_account)
|
||||||
packet = packet_base(mp::MP_TYPE::MP_REQUEST_FRIENDS, mp::MP_SUB_TYPE::MP_SEARCH_FRIENDS_ACCOUNT, std::to_string(account));
|
&& std::regex_match(std::to_string(account), pattern_account)) {
|
||||||
|
|
||||||
|
packet = packet_base(mp::MP_TYPE::MP_REQUEST_FRIENDS, mp::MP_SUB_TYPE::MP_SEARCH_FRIENDS_ACCOUNT,
|
||||||
|
std::to_string(account), "", std::to_string(user));
|
||||||
} else {
|
} else {
|
||||||
return std::nullopt;
|
return std::nullopt;
|
||||||
}
|
}
|
||||||
@ -143,12 +153,14 @@ std::optional<agreement_response> UserOperation::fetch_user(uint64_t account) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 添加用户
|
// 添加用户
|
||||||
std::optional<agreement_response> UserOperation::add_user(uint64_t account) {
|
std::optional<agreement_response> UserOperation::add_user(uint64_t account, uint64_t user) {
|
||||||
std::regex pattern_account("[1-9](\\d{5,11})");
|
std::regex pattern_account("[1-9](\\d{5,11})");
|
||||||
|
|
||||||
std::string packet;
|
std::string packet;
|
||||||
if (std::regex_match(std::to_string(account), pattern_account)) {
|
if (std::regex_match(std::to_string(account), pattern_account) &&
|
||||||
packet = packet_base(mp::MP_TYPE::MP_REQUEST_FRIENDS, mp::MP_SUB_TYPE::MP_SEARCH_FRIENDS_ACCOUNT, std::to_string(account));
|
std::regex_match(std::to_string(user), pattern_account) ) {
|
||||||
|
packet = packet_base(mp::MP_TYPE::MP_REQUEST_FRIENDS, mp::MP_SUB_TYPE::MP_ADD_FRIENDS_ACCOUNT,
|
||||||
|
account, user);
|
||||||
} else {
|
} else {
|
||||||
return std::nullopt;
|
return std::nullopt;
|
||||||
}
|
}
|
||||||
@ -163,6 +175,7 @@ std::optional<agreement_response> UserOperation::add_user(uint64_t account) {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//// login
|
//// login
|
||||||
|
|
||||||
|
|
||||||
|
@ -36,16 +36,18 @@ public:
|
|||||||
std::optional<agreement_response> get_code(const std::string& account);
|
std::optional<agreement_response> get_code(const std::string& account);
|
||||||
// 查询账户好友
|
// 查询账户好友
|
||||||
std::optional<agreement_response> fetch_friends(uint64_t account);
|
std::optional<agreement_response> fetch_friends(uint64_t account);
|
||||||
// 查询用户
|
// 查询用户 并 查看是否已为好友
|
||||||
std::optional<agreement_response> fetch_user(uint64_t account);
|
std::optional<agreement_response> fetch_user(uint64_t user, uint64_t account);
|
||||||
// 添加用户
|
// 添加用户 account 本机账户 带添加账户
|
||||||
std::optional<agreement_response> add_user(uint64_t account);
|
std::optional<agreement_response> add_user(uint64_t account, uint64_t user);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// base 包
|
// base 包
|
||||||
std::string packet_base(mp::MP_TYPE, mp::MP_SUB_TYPE, const std::string &account, const std::string &password);
|
std::string packet_base(mp::MP_TYPE, mp::MP_SUB_TYPE, const std::string &account, const std::string &password);
|
||||||
std::string packet_base(mp::MP_TYPE, mp::MP_SUB_TYPE, const std::string &account, const std::string &password, const std::string &data);
|
std::string packet_base(mp::MP_TYPE, mp::MP_SUB_TYPE, const std::string &account, const std::string &password, const std::string &data);
|
||||||
std::string packet_base(mp::MP_TYPE type, mp::MP_SUB_TYPE subType, const std::string& account);
|
std::string packet_base(mp::MP_TYPE type, mp::MP_SUB_TYPE subType, const std::string& account);
|
||||||
|
std::string packet_base(mp::MP_TYPE type, mp::MP_SUB_TYPE subType, uint64_t source, uint64_t target);
|
||||||
|
|
||||||
|
|
||||||
// 操作报
|
// 操作报
|
||||||
std::string login_packet(mp::MP_SUB_TYPE subType, const std::string &account, const std::string &password);
|
std::string login_packet(mp::MP_SUB_TYPE subType, const std::string &account, const std::string &password);
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
</property>
|
</property>
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||||
<item>
|
<item>
|
||||||
<layout class="QVBoxLayout" name="verticalLayout" stretch="1,1,15">
|
<layout class="QVBoxLayout" name="verticalLayout" stretch="1,1,15,0,0,0">
|
||||||
<item>
|
<item>
|
||||||
<widget class="QLabel" name="title">
|
<widget class="QLabel" name="title">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
@ -33,6 +33,19 @@
|
|||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="label">
|
||||||
|
<property name="text">
|
||||||
|
<string>check:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPlainTextEdit" name="problemPlainTextEdit"/>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPlainTextEdit" name="AnswerPlainTextEdit"/>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
|
@ -34,11 +34,19 @@ private slots:
|
|||||||
// 打招呼
|
// 打招呼
|
||||||
void say_hello_action();
|
void say_hello_action();
|
||||||
|
|
||||||
|
private:
|
||||||
|
void add_ui_show(const std::string&);
|
||||||
|
void add_ui_hide();
|
||||||
|
|
||||||
|
public:
|
||||||
|
void setLocalUser(User* local);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Ui::addfrindwindow *ui;
|
Ui::addfrindwindow *ui;
|
||||||
UserOperation* userOperation = nullptr;
|
UserOperation* userOperation = nullptr;
|
||||||
bool user_show_info = false;
|
bool user_show_info = false;
|
||||||
User user;
|
User* user;
|
||||||
|
User* localUser;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -28,7 +28,7 @@ private slots:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
Ui::IMWindow *ui;
|
Ui::IMWindow *ui;
|
||||||
User user;
|
User* user;
|
||||||
QList<User*> friendList;
|
QList<User*> friendList;
|
||||||
UserOperation* userOperation;
|
UserOperation* userOperation;
|
||||||
};
|
};
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
|
|
||||||
#include <QStringListModel>
|
#include <QStringListModel>
|
||||||
#include <QMenuBar>
|
#include <QMenuBar>
|
||||||
|
#include <QMessageBox>
|
||||||
#include "ui_addfrindwindow.h"
|
#include "ui_addfrindwindow.h"
|
||||||
#include "addfrindwindow.h"
|
#include "addfrindwindow.h"
|
||||||
#include "ClientExample.h"
|
#include "ClientExample.h"
|
||||||
@ -15,31 +16,48 @@ addfrindwindow::addfrindwindow(QWidget *parent) :
|
|||||||
ui(new Ui::addfrindwindow),
|
ui(new Ui::addfrindwindow),
|
||||||
userOperation(new UserOperation(ClientExample::run())) {
|
userOperation(new UserOperation(ClientExample::run())) {
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
|
user = new User();
|
||||||
|
localUser = new User();
|
||||||
|
|
||||||
|
// 添加验证界面 暂时隐藏
|
||||||
|
add_ui_hide();
|
||||||
|
|
||||||
connect(ui->search, SIGNAL(returnPressed()), this, SLOT(get_search_input()));
|
connect(ui->search, SIGNAL(returnPressed()), this, SLOT(get_search_input()));
|
||||||
}
|
}
|
||||||
|
|
||||||
addfrindwindow::~addfrindwindow() {
|
addfrindwindow::~addfrindwindow() {
|
||||||
|
delete user;
|
||||||
|
delete localUser;
|
||||||
|
delete userOperation;
|
||||||
delete ui;
|
delete ui;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void addfrindwindow::setLocalUser(User * local) {
|
||||||
|
localUser = local;
|
||||||
|
}
|
||||||
|
|
||||||
// add 搜索框
|
// add 搜索框
|
||||||
void addfrindwindow::get_search_input() {
|
void addfrindwindow::get_search_input() {
|
||||||
// 取搜索框值
|
// 取搜索框值
|
||||||
QString search_value = ui->search->text();
|
QString search_value = ui->search->text();
|
||||||
// 开始搜索 暂时只显示
|
// 开始搜索 暂时只显示
|
||||||
|
|
||||||
auto ret = userOperation->fetch_user(strtol(search_value.toStdString().c_str(), nullptr, 0));
|
auto ret = userOperation->fetch_user(localUser->account, strtol(search_value.toStdString().c_str(), nullptr, 0));
|
||||||
|
// 用户输入数据 是否合法
|
||||||
if (ret.has_value()) {
|
if (ret.has_value()) {
|
||||||
|
// 判断返回结果
|
||||||
if (ret.value().m_sri.subcommand() == mp::MP_SUB_TYPE::MP_SEARCH_SUCCESS) {
|
if (ret.value().m_sri.subcommand() == mp::MP_SUB_TYPE::MP_SEARCH_SUCCESS) {
|
||||||
search_value.append(" ");
|
search_value.append(" ");
|
||||||
search_value.append(ret.value().m_sri.username().c_str());
|
search_value.append(ret.value().m_sri.username().c_str());
|
||||||
search_value.append(" ");
|
search_value.append(" ");
|
||||||
search_value.append(ret.value().m_sri.msg().c_str());
|
search_value.append(ret.value().m_sri.msg().c_str());
|
||||||
|
|
||||||
|
// 右键显示状态
|
||||||
user_show_info = true;
|
user_show_info = true;
|
||||||
user.account = ret.value().m_sri.account();
|
// 注册server来的user信息 以加载到
|
||||||
user.username = ret.value().m_sri.username();
|
user->account = ret.value().m_sri.account();
|
||||||
user.email = ret.value().m_sri.email();
|
user->username = ret.value().m_sri.username();
|
||||||
|
user->email = ret.value().m_sri.email();
|
||||||
} else {
|
} else {
|
||||||
search_value.append(" ");
|
search_value.append(" ");
|
||||||
search_value.append(ret.value().m_sri.msg().c_str());
|
search_value.append(ret.value().m_sri.msg().c_str());
|
||||||
@ -102,20 +120,50 @@ void addfrindwindow::contextMenuEvent(QContextMenuEvent *) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// add
|
||||||
void addfrindwindow::add_friends_action() {
|
void addfrindwindow::add_friends_action() {
|
||||||
// userOperation;
|
// 先获取添加类型或者server 验证后返回
|
||||||
|
auto ret = userOperation->add_user(localUser->account, user->account);
|
||||||
|
if (ret.value().m_sri.subcommand() == mp::MP_SUB_TYPE::MP_ADD_SUCCESS) {
|
||||||
|
add_ui_show(ret.value().m_sri.msg());
|
||||||
|
} else {
|
||||||
|
add_ui_show(ret.value().m_sri.msg());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// show user info
|
||||||
void addfrindwindow::user_home_action() {
|
void addfrindwindow::user_home_action() {
|
||||||
printf("222");
|
printf("222");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// temp im msg
|
||||||
void addfrindwindow::say_hello_action() {
|
void addfrindwindow::say_hello_action() {
|
||||||
printf("333");
|
printf("333");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//// ui show hide
|
||||||
|
void addfrindwindow::add_ui_show(const std::string& problem_value) {
|
||||||
|
ui->label->show();
|
||||||
|
ui->problemPlainTextEdit->setPlainText(problem_value.c_str());
|
||||||
|
ui->problemPlainTextEdit->show();
|
||||||
|
// setfocuspolicy(qt::nofocus/clickfocus)
|
||||||
|
ui->problemPlainTextEdit->setFocusPolicy(Qt::NoFocus);
|
||||||
|
ui->AnswerPlainTextEdit->show();
|
||||||
|
}
|
||||||
|
|
||||||
|
void addfrindwindow::add_ui_hide() {
|
||||||
|
ui->label->hide();
|
||||||
|
ui->problemPlainTextEdit->hide();
|
||||||
|
ui->AnswerPlainTextEdit->hide();
|
||||||
|
}
|
||||||
|
//// ui show hide
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -13,16 +13,19 @@ IMWindow::IMWindow(QWidget *parent) :
|
|||||||
ui(new Ui::IMWindow)
|
ui(new Ui::IMWindow)
|
||||||
{
|
{
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
|
user = new User();
|
||||||
}
|
}
|
||||||
|
|
||||||
IMWindow::~IMWindow()
|
IMWindow::~IMWindow()
|
||||||
{
|
{
|
||||||
|
delete user;
|
||||||
|
delete userOperation;
|
||||||
delete ui;
|
delete ui;
|
||||||
}
|
}
|
||||||
|
|
||||||
void IMWindow::setUser(uint64_t account, const std::string &username) {
|
void IMWindow::setUser(uint64_t account, const std::string &username) {
|
||||||
user.account = account;
|
user->account = account;
|
||||||
user.username = username;
|
user->username = username;
|
||||||
std::string temp = "在线:" + username;
|
std::string temp = "在线:" + username;
|
||||||
ui->userInfo->setText(temp.c_str());
|
ui->userInfo->setText(temp.c_str());
|
||||||
|
|
||||||
@ -32,7 +35,7 @@ void IMWindow::setUser(uint64_t account, const std::string &username) {
|
|||||||
void IMWindow::initFriendList() {
|
void IMWindow::initFriendList() {
|
||||||
// user.account;
|
// user.account;
|
||||||
// 创建数据显示列表
|
// 创建数据显示列表
|
||||||
auto friends = userOperation->fetch_friends(user.account).value().m_sri.data();
|
auto friends = userOperation->fetch_friends(user->account).value().m_sri.data();
|
||||||
rapidjson::Document document;
|
rapidjson::Document document;
|
||||||
document.Parse(friends.c_str());
|
document.Parse(friends.c_str());
|
||||||
|
|
||||||
@ -68,7 +71,9 @@ void IMWindow::on_friendListView_clicked(const QModelIndex& model) {
|
|||||||
ui->chatBoxInfo->append(("username:" + temp_user->username).c_str());
|
ui->chatBoxInfo->append(("username:" + temp_user->username).c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 显示 addfriendwindows 窗口
|
||||||
void IMWindow::on_addfriends_clicked() {
|
void IMWindow::on_addfriends_clicked() {
|
||||||
auto add_win = new addfrindwindow();
|
auto add_win = new addfrindwindow();
|
||||||
|
add_win->setLocalUser(user);
|
||||||
add_win->show();
|
add_win->show();
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user