Send active/inactive if we are focused on the tab or not. And send
"gone" when we close the tab
This commit is contained in:
parent
3084a9cff7
commit
1d94e80da7
1 changed files with 17 additions and 10 deletions
27
src/tabs.py
27
src/tabs.py
|
@ -260,6 +260,15 @@ class ChatTab(Tab):
|
||||||
txt = txt[1:]
|
txt = txt[1:]
|
||||||
self.command_say(txt)
|
self.command_say(txt)
|
||||||
|
|
||||||
|
def send_chat_state(self, state):
|
||||||
|
"""
|
||||||
|
Send an empty chatstate message
|
||||||
|
"""
|
||||||
|
msg = self.core.xmpp.make_message(self.get_name())
|
||||||
|
msg['type'] = 'chat'
|
||||||
|
msg['chat_state'] = state
|
||||||
|
msg.send()
|
||||||
|
|
||||||
def send_composing_chat_state(self, empty_before, empty_after):
|
def send_composing_chat_state(self, empty_before, empty_after):
|
||||||
"""
|
"""
|
||||||
Send the "active" or "composing" chatstate, depending
|
Send the "active" or "composing" chatstate, depending
|
||||||
|
@ -267,16 +276,9 @@ class ChatTab(Tab):
|
||||||
"""
|
"""
|
||||||
if config.get('send_chat_states', 'true') == 'true' and self.remote_wants_chatstates:
|
if config.get('send_chat_states', 'true') == 'true' and self.remote_wants_chatstates:
|
||||||
if not empty_before and empty_after:
|
if not empty_before and empty_after:
|
||||||
msg = self.core.xmpp.make_message(self.get_name())
|
self.send_chat_state("active")
|
||||||
msg['type'] = 'chat'
|
|
||||||
msg['chat_state'] = 'active'
|
|
||||||
msg.send()
|
|
||||||
elif empty_before and not empty_after:
|
elif empty_before and not empty_after:
|
||||||
msg = self.core.xmpp.make_message(self.get_name())
|
self.send_chat_state("composing")
|
||||||
msg['type'] = 'chat'
|
|
||||||
msg['chat_state'] = 'composing'
|
|
||||||
log.debug('MSG:%s\n' % msg)
|
|
||||||
msg.send()
|
|
||||||
|
|
||||||
def command_say(self, line):
|
def command_say(self, line):
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
|
@ -1193,10 +1195,14 @@ class ConversationTab(ChatTab, TabWithInfoWin):
|
||||||
self.set_color_state(theme.COLOR_TAB_NORMAL)
|
self.set_color_state(theme.COLOR_TAB_NORMAL)
|
||||||
self.text_win.remove_line_separator()
|
self.text_win.remove_line_separator()
|
||||||
self.text_win.add_line_separator()
|
self.text_win.add_line_separator()
|
||||||
|
if config.get('send_chat_states', 'true') == 'true':
|
||||||
|
self.send_chat_state('inactive')
|
||||||
|
|
||||||
def on_gain_focus(self):
|
def on_gain_focus(self):
|
||||||
self.set_color_state(theme.COLOR_TAB_CURRENT)
|
self.set_color_state(theme.COLOR_TAB_CURRENT)
|
||||||
curses.curs_set(1)
|
curses.curs_set(1)
|
||||||
|
if config.get('send_chat_states', 'true') == 'true':
|
||||||
|
self.send_chat_state('active')
|
||||||
|
|
||||||
def on_scroll_up(self):
|
def on_scroll_up(self):
|
||||||
self.text_win.scroll_up(self.text_win.height-1)
|
self.text_win.scroll_up(self.text_win.height-1)
|
||||||
|
@ -1221,7 +1227,8 @@ class ConversationTab(ChatTab, TabWithInfoWin):
|
||||||
return
|
return
|
||||||
|
|
||||||
def on_close(self):
|
def on_close(self):
|
||||||
return
|
if config.get('send_chat_states', 'true') == 'true':
|
||||||
|
self.send_chat_state('gone')
|
||||||
|
|
||||||
class MucListTab(Tab):
|
class MucListTab(Tab):
|
||||||
"""
|
"""
|
||||||
|
|
Loading…
Reference in a new issue