Пример #1
0
    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)
Пример #2
0
    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)
Пример #3
0
    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)