summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--data/default_config.cfg8
-rw-r--r--src/tabs.py32
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):