changeset 58423f293e42 in /home/hg/repos/gajim
details:http://hg.gajim.org/gajim?cmd=changeset;node=58423f293e42
description: * in order to permit roster loading at gajim startup we need to save all roster pushs (even if it's not for versioning)
X-Hg-Repo: gajim
Subject: gajim: * In order to allow the viewing of the roster when we are offline (and some other cool stuffs), with and without roster versioning, now we load roster when RosterWindow is created (at gajim startup). Fixes #3190
From: Anaël Verrier <elghinn(a)free.fr>
changeset ce797a2b9b5d in /home/hg/repos/gajim
details:http://hg.gajim.org/gajim?cmd=changeset;node=ce797a2b9b5d
description: * In order to allow the viewing of the roster when we are offline (and some other cool stuffs), with and without roster versioning, now we load roster when RosterWindow is created (at gajim startup). Fixes #3190
X-Hg-Repo: gajim
Subject: gajim: * now there is no more sparkling when we update the RosterWindow with the roster received from the server (when server does not handle roster versioning or when it resends the whole roster)
From: Anaël Verrier <elghinn(a)free.fr>
changeset 32f971500155 in /home/hg/repos/gajim
details:http://hg.gajim.org/gajim?cmd=changeset;node=32f971500155
description: * now there is no more sparkling when we update the RosterWindow with the roster received from the server (when server does not handle roster versioning or when it resends the whole roster)
diffstat:
src/common/connection_handlers.py | 19 ++++++++++++++-----
src/common/xmpp/roster_nb.py | 2 ++
src/gajim.py | 1 +
src/roster_window.py | 5 +++++
4 files changed, 22 insertions(+), 5 deletions(-)
diffs (90 lines):
diff -r 6771b91032cd -r 32f971500155 src/common/connection_handlers.py
--- a/src/common/connection_handlers.py Sun Jun 28 20:43:18 2009 +0200
+++ b/src/common/connection_handlers.py Tue Jun 30 17:06:17 2009 +0200
@@ -1562,10 +1562,10 @@
for group in item.getTags('group'):
groups.append(group.getData())
self.dispatch('ROSTER_INFO', (jid, name, sub, ask, groups))
+ account_jid = gajim.get_jid_from_account(self.name)
+ gajim.logger.add_or_update_contact(account_jid, jid, name, sub, ask,
+ groups)
if version:
- account_jid = gajim.get_jid_from_account(self.name)
- gajim.logger.add_or_update_contact(account_jid, jid, name, sub,
- ask, groups)
gajim.config.set_per('accounts', self.name, 'roster_version',
version)
if not self.connection or self.connected < 2:
@@ -2452,6 +2452,7 @@
def _on_roster_set(self, roster):
roster_version = roster.version
+ received_from_server = roster.received_from_server
raw_roster = roster.getRaw()
roster = {}
our_jid = helpers.parse_jid(gajim.get_jid_from_account(self.name))
@@ -2490,9 +2491,17 @@
# we can't determine which iconset to use
self.discoverInfo(jid)
- self.dispatch('ROSTER', roster)
gajim.logger.replace_roster(self.name, roster_version, roster)
- print raw_roster
+ if received_from_server:
+ for contact in gajim.contacts.iter_contacts(self.name):
+ if contact.jid not in roster:
+ self.dispatch('ROSTER_INFO', (self.name,
+ (contact.jid, None, None, None, ())))
+ for jid in roster:
+ self.dispatch('ROSTER_INFO', (jid, roster[jid]['name'],
+ roster[jid]['subscription'], roster[jid]['ask'],
+ roster[jid]['groups']))
+ #self.dispatch('ROSTER', roster)
def _send_first_presence(self, signed = ''):
show = self.continue_connect_info[0]
diff -r 6771b91032cd -r 32f971500155 src/common/xmpp/roster_nb.py
--- a/src/common/xmpp/roster_nb.py Sun Jun 28 20:43:18 2009 +0200
+++ b/src/common/xmpp/roster_nb.py Tue Jun 30 17:06:17 2009 +0200
@@ -43,6 +43,7 @@
self._data = {}
self.set=None
self._exported_methods=[self.getRoster]
+ self.received_from_server = False
def Request(self,force=0):
''' Request roster from server if it were not yet requested
@@ -67,6 +68,7 @@
return
query = stanza.getTag('query')
if query:
+ self.received_from_server = True
self.version = stanza.getTagAttr('query', 'ver')
if self.version is None:
self.version = ''
diff -r 6771b91032cd -r 32f971500155 src/gajim.py
--- a/src/gajim.py Sun Jun 28 20:43:18 2009 +0200
+++ b/src/gajim.py Tue Jun 30 17:06:17 2009 +0200
@@ -3423,6 +3423,7 @@
gtk.window_set_default_icon(pix)
self.roster = roster_window.RosterWindow()
+ self.roster.init_roster()
self.init_emoticons()
self.make_regexps()
diff -r 6771b91032cd -r 32f971500155 src/roster_window.py
--- a/src/roster_window.py Sun Jun 28 20:43:18 2009 +0200
+++ b/src/roster_window.py Tue Jun 30 17:06:17 2009 +0200
@@ -6176,6 +6176,11 @@
# #self.xml.get_widget('menubar').hide()
# return
+ def init_roster(self):
+ for account in gajim.connections:
+ roster = gajim.logger.get_roster(gajim.get_jid_from_account(account))
+ gajim.handlers['ROSTER'](account, roster)
+
################################################################################
###
################################################################################
changeset 4be0d97473e1 in /home/hg/repos/gajim
details:http://hg.gajim.org/gajim?cmd=changeset;node=4be0d97473e1
description: Fixed bug when national character (non-ASCII) was entered which search string in ACE (comparison with descriptions, which are unicode, was not possible). It seems that this was Win32 specific (tested on Vista64).
diffstat:
src/advanced.py | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diffs (12 lines):
diff -r f04d5e7ebfb1 -r 4be0d97473e1 src/advanced.py
--- a/src/advanced.py Sun Jun 28 16:01:43 2009 +0200
+++ b/src/advanced.py Mon Jun 29 06:31:36 2009 +0200
@@ -267,7 +267,7 @@
self.model.append(parent, [name, value, type_])
def visible_func(self, model, treeiter):
- search_string = self.entry.get_text().lower()
+ search_string = self.entry.get_text().decode('utf-8').lower()
for it in tree_model_pre_order(model,treeiter):
if model[it][C_TYPE] != '':
opt_path = self.get_option_path(model, it)