Yann Leboulanger pushed to branch xep-0319 at gajim / gajim
Commits: 2eed7a63 by Yann Leboulanger at 2017-07-27T22:02:59+02:00 send idle info even when we manually set a non-online presence.
- - - - - 22903cac by Yann Leboulanger at 2017-07-27T23:17:43+02:00 use autoaway config option instead of send_idle_time to attache idle element to presence
- - - - -
3 changed files:
- gajim/common/connection.py - gajim/gui_interface.py - gajim/roster_window.py
Changes:
===================================== gajim/common/connection.py ===================================== --- a/gajim/common/connection.py +++ b/gajim/common/connection.py @@ -635,7 +635,7 @@ class CommonConnection: if auto: global HAS_IDLE if HAS_IDLE and gajim.config.get_per('accounts', self.name, - 'send_idle_time'): + 'autoaway'): idle_sec = int(self.sleeper.getIdleSec()) idle_time = time.strftime('%Y-%m-%dT%H:%M:%SZ', time.gmtime(time.time() - idle_sec)) gajim.nec.push_incoming_event(BeforeChangeShowEvent(None,
===================================== gajim/gui_interface.py ===================================== --- a/gajim/gui_interface.py +++ b/gajim/gui_interface.py @@ -2247,33 +2247,43 @@ class Interface: if account not in gajim.sleeper_state or \ not gajim.sleeper_state[account]: continue - if state == sleepy.STATE_AWAKE and \ - gajim.sleeper_state[account] in ('autoaway', 'autoxa'): - # we go online - self.roster.send_status(account, 'online', + if state == sleepy.STATE_AWAKE: + if gajim.sleeper_state[account] in ('autoaway', 'autoxa'): + # we go online + self.roster.send_status(account, 'online', gajim.status_before_autoaway[account]) - gajim.status_before_autoaway[account] = '' - gajim.sleeper_state[account] = 'online' - elif state == sleepy.STATE_AWAY and \ - gajim.sleeper_state[account] == 'online' and \ - gajim.config.get('autoaway'): + gajim.status_before_autoaway[account] = '' + gajim.sleeper_state[account] = 'online' + if gajim.sleeper_state[account] == 'idle': + # we go to the previous state + connected = gajim.connections[account].connected + self.roster.send_status(account, gajim.SHOW_LIST[connected], + gajim.status_before_autoaway[account]) + gajim.status_before_autoaway[account] = '' + gajim.sleeper_state[account] = 'off' + elif state == sleepy.STATE_AWAY and gajim.config.get('autoaway'): # we save out online status gajim.status_before_autoaway[account] = \ - gajim.connections[account].status - # we go away (no auto status) [we pass True to auto param] - auto_message = gajim.config.get('autoaway_message') - if not auto_message: - auto_message = gajim.connections[account].status - else: - auto_message = auto_message.replace('$S', '%(status)s') - auto_message = auto_message.replace('$T', '%(time)s') - auto_message = auto_message % { + gajim.connections[account].status + if gajim.sleeper_state[account] == 'online': + # we go away (no auto status) [we pass True to auto param] + auto_message = gajim.config.get('autoaway_message') + if not auto_message: + auto_message = gajim.connections[account].status + else: + auto_message = auto_message.replace('$S', '%(status)s') + auto_message = auto_message.replace('$T', '%(time)s') + auto_message = auto_message % { 'status': gajim.status_before_autoaway[account], 'time': gajim.config.get('autoawaytime') - } - self.roster.send_status(account, 'away', auto_message, - auto=True) - gajim.sleeper_state[account] = 'autoaway' + } + self.roster.send_status(account, 'away', auto_message, + auto=True) + if gajim.sleeper_state[account] == 'off': + connected = gajim.connections[account].connected + self.roster.send_status(account, gajim.SHOW_LIST[connected], + gajim.status_before_autoaway[account], auto=True) + gajim.sleeper_state[account] = 'idle' elif state == sleepy.STATE_XA and \ gajim.sleeper_state[account] in ('online', 'autoaway', 'autoaway-forced') and gajim.config.get('autoxa'):
===================================== gajim/roster_window.py ===================================== --- a/gajim/roster_window.py +++ b/gajim/roster_window.py @@ -2117,9 +2117,6 @@ class RosterWindow: def send_status(self, account, status, txt, auto=False, to=None): if status != 'offline': if to is None: - if status == gajim.connections[account].get_status() and \ - txt == gajim.connections[account].status: - return gajim.config.set_per('accounts', account, 'last_status', status) gajim.config.set_per('accounts', account, 'last_status_msg', helpers.to_one_line(txt))
View it on GitLab: https://dev.gajim.org/gajim/gajim/compare/1ce3dcbff4c6e8327f6fbc714782e19645...