马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
核心类
核心类操持逻辑
数据结构操持(data.h)
- 用户信息
- 用户ID
- 用户网名
- 用户个人署名
- 用户手机号码
- 用户头像
- 谈天会话信息
- 会话编号
- 会话名称(单聊则是对方网名,群聊则是群名)
- 最新消息
- 会话图标(单聊对方头像,群聊则群聊头像)
- 判断单聊还是群聊
- 消息信息
- 消息范例
- 消息的编号
- 消息所属文件的编号
- 消息的时间
- 发送者的信息
- 消息内容
- 文件的消息身份标识(除文本消息外,其他消息收效)
- 文件名称(只有文件消息的时间有效,由于文件消息是不必要及时表现)
工厂操持模式构建消息信息
- 目的:根据消息范例,返回一个对应的消息范例的信息
- 类中成员函数分析
- namespace model
- {
- //用户信息
- class UserInfo
- {
- public:
- QString userId = ""; // 用户编号
- QString nickname = ""; // 用户昵称
- QString description = ""; // 用户签名
- QString phone = ""; // 手机号码
- QIcon avatar; // 用户头像
- };
- //消息信息
- enum MessageType{
- TEXT_TYPE, // 文本消息
- IMAGE_TYPE, // 图片消息
- FILE_TYPE, // 文件消息
- SPEECH_TYPE // 语音消息
- };
- class Message{
- public:
- QString messageId = ""; // 消息编号
- QString chatSessionId = ""; // 消息所属会话编号
- QString time = ""; // 消息时间
- MessageType messageType = TEXT_TYPE;// 消息类型
- UserInfo sender; // 发送者的信息
- QByteArray content; // 消息的正文内容
- QString fileId = ""; // 文件的身份标识
- QString fileName = ""; // 文件名称
-
- //获取指定类型的消息信息
- static Message makeMessage(MessageType messageType,const QString&chatSessionId,const UserInfo&sender,
- const QByteArray&content,const QString&extraInfo)
- {
- if (messageType == TEXT_TYPE) {
- return makeTextMessage(chatSessionId, sender, content);
- } else if (messageType == IMAGE_TYPE) {
- return makeImageMessage(chatSessionId, sender, content);
- } else if (messageType == FILE_TYPE) {
- return makeFileMessage(chatSessionId, sender, content, extraInfo);
- } else if (messageType == SPEECH_TYPE) {
- return makeSpeechMessage(chatSessionId, sender, content);
- } else {
- // 触发了未知的消息类型
- return Message();
- }
- }
- };
- //会话消息
- class ChatSessionInfo{
- pu
复制代码 |