Yann Leboulanger pushed to branch xep-0319 at gajim / gajim

Commits:

3 changed files:

Changes:

  • gajim/common/connection.py
    ... ... @@ -635,7 +635,7 @@ class CommonConnection:
    635 635
                 if auto:
    
    636 636
                     global HAS_IDLE
    
    637 637
                     if HAS_IDLE and gajim.config.get_per('accounts', self.name,
    
    638
    -                'send_idle_time'):
    
    638
    +                'autoaway'):
    
    639 639
                         idle_sec = int(self.sleeper.getIdleSec())
    
    640 640
                         idle_time = time.strftime('%Y-%m-%dT%H:%M:%SZ', time.gmtime(time.time() - idle_sec))
    
    641 641
                 gajim.nec.push_incoming_event(BeforeChangeShowEvent(None,
    

  • gajim/gui_interface.py
    ... ... @@ -2247,33 +2247,43 @@ class Interface:
    2247 2247
                 if account not in gajim.sleeper_state or \
    
    2248 2248
                 not gajim.sleeper_state[account]:
    
    2249 2249
                     continue
    
    2250
    -            if state == sleepy.STATE_AWAKE and \
    
    2251
    -            gajim.sleeper_state[account] in ('autoaway', 'autoxa'):
    
    2252
    -                # we go online
    
    2253
    -                self.roster.send_status(account, 'online',
    
    2250
    +            if state == sleepy.STATE_AWAKE:
    
    2251
    +                if gajim.sleeper_state[account] in ('autoaway', 'autoxa'):
    
    2252
    +                    # we go online
    
    2253
    +                    self.roster.send_status(account, 'online',
    
    2254 2254
                             gajim.status_before_autoaway[account])
    
    2255
    -                gajim.status_before_autoaway[account] = ''
    
    2256
    -                gajim.sleeper_state[account] = 'online'
    
    2257
    -            elif state == sleepy.STATE_AWAY and \
    
    2258
    -            gajim.sleeper_state[account] == 'online' and \
    
    2259
    -            gajim.config.get('autoaway'):
    
    2255
    +                    gajim.status_before_autoaway[account] = ''
    
    2256
    +                    gajim.sleeper_state[account] = 'online'
    
    2257
    +                if gajim.sleeper_state[account] == 'idle':
    
    2258
    +                    # we go to the previous state
    
    2259
    +                    connected = gajim.connections[account].connected
    
    2260
    +                    self.roster.send_status(account, gajim.SHOW_LIST[connected],
    
    2261
    +                        gajim.status_before_autoaway[account])
    
    2262
    +                    gajim.status_before_autoaway[account] = ''
    
    2263
    +                    gajim.sleeper_state[account] = 'off'
    
    2264
    +            elif state == sleepy.STATE_AWAY and gajim.config.get('autoaway'):
    
    2260 2265
                     # we save out online status
    
    2261 2266
                     gajim.status_before_autoaway[account] = \
    
    2262
    -                        gajim.connections[account].status
    
    2263
    -                # we go away (no auto status) [we pass True to auto param]
    
    2264
    -                auto_message = gajim.config.get('autoaway_message')
    
    2265
    -                if not auto_message:
    
    2266
    -                    auto_message = gajim.connections[account].status
    
    2267
    -                else:
    
    2268
    -                    auto_message = auto_message.replace('$S', '%(status)s')
    
    2269
    -                    auto_message = auto_message.replace('$T', '%(time)s')
    
    2270
    -                    auto_message = auto_message % {
    
    2267
    +                    gajim.connections[account].status
    
    2268
    +                if gajim.sleeper_state[account] == 'online':
    
    2269
    +                    # we go away (no auto status) [we pass True to auto param]
    
    2270
    +                    auto_message = gajim.config.get('autoaway_message')
    
    2271
    +                    if not auto_message:
    
    2272
    +                        auto_message = gajim.connections[account].status
    
    2273
    +                    else:
    
    2274
    +                        auto_message = auto_message.replace('$S', '%(status)s')
    
    2275
    +                        auto_message = auto_message.replace('$T', '%(time)s')
    
    2276
    +                        auto_message = auto_message % {
    
    2271 2277
                                 'status': gajim.status_before_autoaway[account],
    
    2272 2278
                                 'time': gajim.config.get('autoawaytime')
    
    2273
    -                            }
    
    2274
    -                self.roster.send_status(account, 'away', auto_message,
    
    2275
    -                    auto=True)
    
    2276
    -                gajim.sleeper_state[account] = 'autoaway'
    
    2279
    +                        }
    
    2280
    +                    self.roster.send_status(account, 'away', auto_message,
    
    2281
    +                        auto=True)
    
    2282
    +                if gajim.sleeper_state[account] == 'off':
    
    2283
    +                    connected = gajim.connections[account].connected
    
    2284
    +                    self.roster.send_status(account, gajim.SHOW_LIST[connected],
    
    2285
    +                        gajim.status_before_autoaway[account], auto=True)
    
    2286
    +                gajim.sleeper_state[account] = 'idle'
    
    2277 2287
                 elif state == sleepy.STATE_XA and \
    
    2278 2288
                 gajim.sleeper_state[account] in ('online', 'autoaway',
    
    2279 2289
                 'autoaway-forced') and gajim.config.get('autoxa'):
    

  • gajim/roster_window.py
    ... ... @@ -2117,9 +2117,6 @@ class RosterWindow:
    2117 2117
         def send_status(self, account, status, txt, auto=False, to=None):
    
    2118 2118
             if status != 'offline':
    
    2119 2119
                 if to is None:
    
    2120
    -                if status == gajim.connections[account].get_status() and \
    
    2121
    -                txt == gajim.connections[account].status:
    
    2122
    -                    return
    
    2123 2120
                     gajim.config.set_per('accounts', account, 'last_status', status)
    
    2124 2121
                     gajim.config.set_per('accounts', account, 'last_status_msg',
    
    2125 2122
                             helpers.to_one_line(txt))