diff options
-rw-r--r-- | data/default_config.cfg | 8 | ||||
-rw-r--r-- | src/tabs.py | 32 |
2 files changed, 28 insertions, 12 deletions
diff --git a/data/default_config.cfg b/data/default_config.cfg index 02103571..42b27cb6 100644 --- a/data/default_config.cfg +++ b/data/default_config.cfg @@ -126,6 +126,14 @@ themes_dir = # theme will be used instead theme = poezio +# if true, chat states will be sent to the people you are talking to. +# Chat states are, for example, messages informing that you are composing +# a message or that you closed the tab, etc +# Set to false if you don't want people to know these information +# Note that you won’t receive the chat states of your contacts +# if you don't send yours. +send_chat_states = true + # if true, information about the software (name and version) # will be sent if requested by anyone # Set to false if you don't want people to know these information diff --git a/src/tabs.py b/src/tabs.py index 4bc2ed99..284696ab 100644 --- a/src/tabs.py +++ b/src/tabs.py @@ -260,6 +260,24 @@ class ChatTab(Tab): txt = txt[1:] self.command_say(txt) + def send_composing_chat_state(self, empty_before, empty_after): + """ + Send the "active" or "composing" chatstate, depending + on the the current status of the input + """ + if config.get('send_chat_states', 'true') == 'true' and self.remote_wants_chatstates: + if not empty_before and empty_after: + msg = self.core.xmpp.make_message(self.get_name()) + msg['type'] = 'chat' + msg['chat_state'] = 'active' + msg.send() + elif empty_before and not empty_after: + msg = self.core.xmpp.make_message(self.get_name()) + msg['type'] = 'chat' + msg['chat_state'] = 'composing' + log.debug('MSG:%s\n' % msg) + msg.send() + def command_say(self, line): raise NotImplementedError @@ -1114,7 +1132,7 @@ class ConversationTab(ChatTab, TabWithInfoWin): msg = self.core.xmpp.make_message(self.get_name()) msg['type'] = 'chat' msg['body'] = line - if self.remote_wants_chatstates is not False: + if config.get('send_chat_states', 'true') == 'true' and self.remote_wants_chatstates is not False: msg['chat_state'] = 'active' msg.send() self.core.add_message_to_text_buffer(self.get_room(), line, None, self.core.own_nick) @@ -1168,17 +1186,7 @@ class ConversationTab(ChatTab, TabWithInfoWin): empty_before = self.input.get_text() == '' or self.input.get_text().startswith('/') self.input.do_command(key) empty_after = self.input.get_text() == '' or self.input.get_text().startswith('/') - if not empty_before and empty_after: - msg = self.core.xmpp.make_message(self.get_name()) - msg['type'] = 'chat' - msg['chat_state'] = 'active' - msg.send() - elif empty_before and not empty_after: - msg = self.core.xmpp.make_message(self.get_name()) - msg['type'] = 'chat' - msg['chat_state'] = 'composing' - log.debug('MSG:%s\n' % msg) - msg.send() + self.send_composing_chat_state(empty_before, empty_after) return False def on_lose_focus(self): |