Пример #1
0
    def start_chat(self):
        self.sender = self.client.account_name
        self.receiver = self.client_view.lnContact.text()

        if self.receiver not in self.chats:

            if is_chat(self.receiver):
                self.client.outcoming_msg = JIMActionMessage.join_chat(
                    self.client.account_name, self.receiver).as_dict
                if not self.client_view.lstContacts.findItems(
                        self.receiver, Qt.MatchExactly):
                    self.add_contact_item(self.receiver)

            self.chat = ChatWindow(self, self.receiver, self.client_view)
            self.chat.setWindowTitle(
                CHAT_TITLE.format(self.sender, self.receiver))
            self.update_toolbar()
            self.chat.show()

            self.chats.update({self.receiver: self.chat})

            if self.message_queue.get(self.receiver):
                while self.message_queue.get(self.receiver):
                    self.update_chat(
                        self.message_queue.get(self.receiver).pop(0))
                self.client_view.lstContacts.findItems(
                    self.receiver,
                    Qt.MatchExactly)[0].setBackground(Qt.transparent)
Пример #2
0
    def get_connected(self):
        try:
            if self.client.start_session():

                self.incoming_message = IncomingMessageThread(self.client)
                self.incoming_message.get_incoming.connect(
                    self.get_incoming, Qt.QueuedConnection)
                self.incoming_message.start()

                self.client.outcoming_msg = JIMActionMessage.presence(
                    self.client.as_dict).as_dict

                self.client_view.btnConnect.setText(
                    'Connected as \'{}\'.'.format(self.client.account_name))
                self.client_view.statusMessage.clearMessage()
                self.client_view.btnAdd.setEnabled(True)
                self.client_view.btnDel.setEnabled(True)
                self.client_view.btnGetContacts.setEnabled(True)
                self.client_view.btnChat.setEnabled(True)
                self.client_view.lstContacts.setEnabled(True)
                self.client_view.lnContact.setEnabled(True)
                self.get_contacts()

        except ConnectionError:
            self.client_view.statusMessage.showMessage(
                'Server {}:{} is unavailable'.format(
                    self.client.server_address, self.client.server_port))
Пример #3
0
 def message_ready(self, chat):
     _chat = self.chats.get(chat)
     self.html_parser.feed(_chat.txtNewMessage.toHtml())
     _message = self.html_parser.tagged_message
     if _message:
         _chat.txtNewMessage.clear()
         self.client.outcoming_msg = JIMActionMessage.to_user(
             self.sender, chat, _message).as_dict
         self.update_chat(_chat, '<b>You:</b> {}'.format(_message))
Пример #4
0
 def del_contact(self):
     _name = self.client_view.lnContact.text()
     if _name:
         self.client.outcoming_msg = JIMActionMessage.del_contact(
             self.client.account_name, _name).as_dict
         self.client_view.lnContact.clear()
         self.del_contact_item()
         with ClientStore(self.store) as store:
             store.del_contact(_name)
Пример #5
0
 def add_contact(self):
     _name = self.client_view.lnContact.text()
     if _name and not self.client_view.lstContacts.findItems(
             _name, Qt.MatchExactly) and not is_chat(_name):
         self.client.outcoming_msg = JIMActionMessage.add_contact(
             self.client.account_name, _name).as_dict
         self.client_view.lnContact.clear()
         self.add_contact_item(_name)
     elif _name and not self.client_view.lstContacts.findItems(
             _name, Qt.MatchExactly) and is_chat(_name):
         # self.client_view.statusMessage.showMessage('To join the chat, please click \'Join\'.'.format(_name), 2000)
         self.chat_clicked()
     elif _name:
         self.client_view.statusMessage.showMessage(
             '\'{}\' already in contacts.'.format(_name), 2000)
Пример #6
0
 def get_disconnected(self):
     for chat in self.chats.values():
         chat.close()
     self.client.outcoming_msg = JIMActionMessage.quit().as_dict
     self.client.end_session()
     self.client_view.btnConnect.setText('Disconnected. Click to connect')
     self.client_view.btnAdd.setEnabled(False)
     self.client_view.btnDel.setEnabled(False)
     self.client_view.lnContact.setEnabled(False)
     self.client_view.btnGetContacts.setEnabled(False)
     self.client_view.btnChat.setText('Chat')
     self.client_view.btnChat.setEnabled(False)
     self.client_view.lstContacts.clear()
     self.client_view.lstContacts.setEnabled(False)
     if self.incoming_message.isRunning():
         self.incoming_message.exit()
Пример #7
0
    def get_contacts(*args):
        _message, _address, _connection = args
        _response = []
        with ServerStore() as store:
            _contacts = store.get_contacts(Client(_message.get(FIELD_USERID)))

        if _contacts:
            _response = [
                JIMResponseMessage({
                    FIELD_RESPONSE: CODE_ACCEPTED,
                    FIELD_QUANTITY: len(_contacts)
                })
            ]
            _response.extend(
                JIMActionMessage.contact_list(c) for c in _contacts)

        return _response
Пример #8
0
 def get_contacts(self):
     self.client_view.lstContacts.clear()
     with ClientStore(self.store) as store:
         store.clear_contacts()
     self.client.outcoming_msg = JIMActionMessage.get_contacts(
         self.client.account_name).as_dict
Пример #9
0
 def end_chat(self, chat):
     if is_chat(chat):
         self.client.outcoming_msg = JIMActionMessage.leave_chat(
             self.client.account_name, chat).as_dict
         self.client_view.btnChat.setText(ACT_JOIN.capitalize())
     self.chats = {k: v for k, v in self.chats.items() if k != chat}