def new_friend_msg(self, msg): '''有新对话''' this = self.mw uin = msg['from_uin'] content = msg['content'] font = content[0][1] content = content[1:] msg = self.analyze_msg(content, uin) if not msg: return nick = self.coco.friend_cache[uin]['nick'] # 添加到会话列表中 exists = False lw = this.session_list_widget for i in range(lw.count()): item = lw.item(i) if item.uin == uin: exists = True break if not exists: from PyQt4.QtGui import QListWidgetItem as Lwi item = Lwi(nick, lw) item.uin = uin # 如果当前正在和这个好友聊天,那么更新聊天窗口的历史记录 # FIXME: 这会使得页面滚动到底部,如果用户正在查看上面的历史信息,会强制 # 他到底部来,需要在click事件中做处理 ci = lw.currentItem() _signal = SIGNAL('click_list_item(PyQt_PyObject, PyQt_PyObject)') if ci is None: # 如果用户一个会话都还没有 this.emit(SIGNAL('set current session list item'), item) this.emit(_signal, uin, False) elif ci.uin == uin: # 如果是当前正在聊天的好友的消息,那么更新聊天历史显示区域 this.emit(_signal, uin, True) # 显示会话tab this.tab_widget.setCurrentIndex(2) data = {'font': font} data['msg'] = msg content = json.dumps(data) from_qq = self.coco.uin2qq(uin) self.save_history(from_qq, self.coco.qq, content, nick) # 不能直接调用js的函数,因为poll是在多线程中 this.emit(SIGNAL('play sound'), 'msg') self.show_main_panel(uin) # 桌面通知 notify_msg = u''.join(map(lambda x: x.get('unicode', ''), msg)) self.notify(notify_msg, nick)
def new_friend_msg(self, msg): """有新对话""" this = self.mw uin = msg["from_uin"] content = msg["content"] font = content[0][1] content = content[1:] msg = self.analyze_msg(content, uin) if not msg: return nick = self.coco.friend_cache[uin]["nick"] # 添加到会话列表中 exists = False lw = this.session_list_widget for i in range(lw.count()): item = lw.item(i) if item.uin == uin: exists = True break if not exists: from PyQt4.QtGui import QListWidgetItem as Lwi item = Lwi(nick, lw) item.uin = uin # 如果当前正在和这个好友聊天,那么更新聊天窗口的历史记录 # FIXME: 这会使得页面滚动到底部,如果用户正在查看上面的历史信息,会强制 # 他到底部来,需要在click事件中做处理 ci = lw.currentItem() _signal = SIGNAL("click_list_item(PyQt_PyObject, PyQt_PyObject)") if ci is None: # 如果用户一个会话都还没有 this.emit(SIGNAL("set current session list item"), item) this.emit(_signal, uin, False) elif ci.uin == uin: # 如果是当前正在聊天的好友的消息,那么更新聊天历史显示区域 this.emit(_signal, uin, True) # 显示会话tab this.tab_widget.setCurrentIndex(2) data = {"font": font} data["msg"] = msg content = json.dumps(data) from_qq = self.coco.uin2qq(uin) self.save_history(from_qq, self.coco.qq, content, nick) # 不能直接调用js的函数,因为poll是在多线程中 this.emit(SIGNAL("play sound"), "msg") self.show_main_panel(uin)