From 746a0bf98e07c402352b9e128ad5cb32160f8924 Mon Sep 17 00:00:00 2001 From: Yann Leboulanger Date: Sun, 10 Sep 2006 10:22:16 +0000 Subject: [PATCH] show connection lost error in popups instead of error dialogs. Fixes #2138 --- data/pixmaps/events/connection_lost.png | Bin 0 -> 3207 bytes src/common/connection.py | 21 +++++++++++---------- src/gajim.py | 9 +++++++++ src/notify.py | 2 ++ 4 files changed, 22 insertions(+), 10 deletions(-) create mode 100644 data/pixmaps/events/connection_lost.png diff --git a/data/pixmaps/events/connection_lost.png b/data/pixmaps/events/connection_lost.png new file mode 100644 index 0000000000000000000000000000000000000000..671efdb72290a6deedd52d7008334ffe1e4b962c GIT binary patch literal 3207 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 literal 0 HcmV?d00001 diff --git a/src/common/connection.py b/src/common/connection.py index 9a0cfebdd..f270cceef 100644 --- a/src/common/connection.py +++ b/src/common/connection.py @@ -137,22 +137,21 @@ class Connection(ConnectionHandlers): if not self.on_purpose: self.disconnect() if gajim.config.get_per('accounts', self.name, 'autoreconnect') \ - and self.retrycount <= 10: + and self.retrycount <= 10: self.connected = 1 self.dispatch('STATUS', 'connecting') - self.time_to_reconnect = 10 # this check has moved from _reconnect method if self.retrycount > 5: self.time_to_reconnect = 20 else: self.time_to_reconnect = 10 - gajim.idlequeue.set_alarm(self._reconnect_alarm, - self.time_to_reconnect) + gajim.idlequeue.set_alarm(self._reconnect_alarm, + self.time_to_reconnect) elif self.on_connect_failure: self.on_connect_failure() self.on_connect_failure = None else: - # show error dialog + # show error dialog self._connection_lost() else: self.disconnect() @@ -162,9 +161,9 @@ class Connection(ConnectionHandlers): def _connection_lost(self): self.disconnect(on_purpose = False) self.dispatch('STATUS', 'offline') - self.dispatch('ERROR', - (_('Connection with account "%s" has been lost') % self.name, - _('To continue sending and receiving messages, you will need to reconnect.'))) + self.dispatch('CONNECTION_LOST', + (_('Connection with account "%s" has been lost') % self.name, + _('To continue sending and receiving messages, you will need to reconnect.'))) def _event_dispatcher(self, realm, event, data): if realm == common.xmpp.NS_REGISTER: @@ -388,7 +387,8 @@ class Connection(ConnectionHandlers): if not self.retrycount and self.connected != 0: self.disconnect(on_purpose = True) self.dispatch('STATUS', 'offline') - self.dispatch('ERROR', (_('Could not connect to "%s"') % self._hostname, + self.dispatch('CONNECTION_LOST', + (_('Could not connect to "%s"') % self._hostname, _('Check your connection or try again later.'))) def _connect_success(self, con, con_type): @@ -424,7 +424,8 @@ class Connection(ConnectionHandlers): if not con: self.disconnect(on_purpose = True) self.dispatch('STATUS', 'offline') - self.dispatch('ERROR', (_('Could not connect to "%s"') % self._hostname, + self.dispatch('CONNECTION_LOST', + (_('Could not connect to "%s"') % self._hostname, _('Check your connection or try again later'))) if self.on_connect_auth: self.on_connect_auth(None) diff --git a/src/gajim.py b/src/gajim.py index 4459293a4..8fa3d1c76 100755 --- a/src/gajim.py +++ b/src/gajim.py @@ -309,6 +309,14 @@ class Interface: gajim.con_types[account] = con_type self.roster.draw_account(account) + def handle_event_connection_lost(self, account, array): + # ('CONNECTION_LOST', account, [title, text]) + path = os.path.join(gajim.DATA_DIR, 'pixmaps', 'events', + 'connection_lost.png') + path = gtkgui_helpers.get_path_to_generic_or_avatar(path) + notify.popup(_('Connection Failed'), account, account, + 'connection_failed', path, array[0], array[1]) + def unblock_signed_in_notifications(self, account): gajim.block_signed_in_notifications[account] = False @@ -1676,6 +1684,7 @@ class Interface: 'ROSTER_INFO': self.handle_event_roster_info, 'BOOKMARKS': self.handle_event_bookmarks, 'CON_TYPE': self.handle_event_con_type, + 'CONNECTION_LOST': self.handle_event_connection_lost, 'FILE_REQUEST': self.handle_event_file_request, 'GMAIL_NOTIFY': self.handle_event_gmail_notify, 'FILE_REQUEST_ERROR': self.handle_event_file_request_error, diff --git a/src/notify.py b/src/notify.py index a99479864..908ff25d9 100644 --- a/src/notify.py +++ b/src/notify.py @@ -382,6 +382,8 @@ class DesktopNotification: ntype = 'im.invitation' elif event_type == _('Contact Changed Status'): ntype = 'presence.status' + elif event_type == _('Connection Failed'): + ntype = 'connection.failed' else: # default failsafe values self.path_to_image = os.path.abspath(