Philipp Hörist pushed to branch mainwindow at gajim / gajim
Commits:
3bbd1a93 by lovetox at 2021-03-06T15:28:18+01:00
JSONEncoder/Decoder: handle set
- - - - -
7172b2a4 by lovetox at 2021-03-06T15:28:29+01:00
Roster: add group methods
- - - - -
400fe65b by lovetox at 2021-03-06T15:32:41+01:00
Make dnd functional
- - - - -
3 changed files:
- gajim/common/modules/roster.py
- gajim/common/storage/base.py
- gajim/gtk/roster.py
Changes:
=====================================
gajim/common/modules/roster.py
=====================================
@@ -134,6 +134,19 @@ def _process_roster_push(self, _con, _stanza, properties):
def get_item(self, jid):
return self._roster.get(jid)
+ def set_groups(self, jid, groups):
+ if groups is not None:
+ groups = set(groups)
+ item = self.get_item(jid)
+ self._nbxmpp('Roster').set_item(jid, item.name, groups)
+
+ def change_group(self, jid, old_group, new_group):
+ item = self.get_item(jid)
+ groups = set(item.groups)
+ groups.discard(old_group)
+ groups.add(new_group)
+ self._nbxmpp('Roster').set_item(jid, item.name, groups)
+
def iter(self):
for jid, data in self._roster.items():
yield jid, data
=====================================
gajim/common/storage/base.py
=====================================
@@ -80,6 +80,9 @@ def _adapt_disco_info(disco_info):
class Encoder(json.JSONEncoder):
def default(self, obj):
+ if isinstance(obj, set):
+ return list(obj)
+
if isinstance(obj, JID):
return {'__type': 'JID', 'value': str(obj)}
@@ -99,6 +102,7 @@ def json_decoder(dct):
return JID.from_string(dct['value'])
if type_ == 'RosterItem':
dct.pop('__type')
+ dct['groups'] = set(dct['groups'])
return RosterItem(**dct)
return dct
=====================================
gajim/gtk/roster.py
=====================================
@@ -193,12 +193,9 @@ def _on_drag_data_received(self, treeview, _drag_context,
x_coord,
return
source_group = model[iter_source_parent][Column.JID_OR_GROUP]
- delimiter = self._client.get_module('Delimiter').delimiter
- source_groups = source_group.split(delimiter)
- if DEFAULT_GROUP in source_groups:
- source_groups = []
+
jid = model[iter_source][Column.JID_OR_GROUP]
- name = model[iter_source][Column.TEXT]
+ # name = model[iter_source][Column.TEXT]
# Destination: the row receiving the drop
iter_dest = model.get_iter(path_dest)
@@ -209,25 +206,16 @@ def _on_drag_data_received(self, treeview, _drag_context,
x_coord,
else:
dest_group = model[iter_dest_parent][Column.JID_OR_GROUP]
- dest_groups = dest_group.split(delimiter)
- if DEFAULT_GROUP in dest_groups:
- # Dropped into DEFAULT_GROUP, remove all groups
- print('remoing all groups')
- # self._client.get_module('Roster').update_contact(jid, name, [])
+ if source_group == dest_group:
return
- print('source groups')
- print(source_groups)
- print('dest groups')
- print(dest_groups)
- if source_groups == dest_groups:
- # Dropped into source group
+ if DEFAULT_GROUP == dest_group:
+ self._client.get_module('Roster').set_groups(jid, None)
return
- groups = list(set(dest_groups) - set(source_groups))
- print('final groups')
- print(groups)
- print('setting new groups')
- # self._client.get_module('Roster').update_contact(jid, name, groups)
+
+ self._client.get_module('Roster').change_group(jid,
+ source_group,
+ dest_group)
def _on_show_offline(self, action, param):
action.set_state(param)
View it on GitLab:
https://dev.gajim.org/gajim/gajim/-/compare/ef13942716966b5f0f08fffef1b06fa557059901...400fe65b6decf49612d6668e29a9df7c5a67adc4
--
View it on GitLab:
https://dev.gajim.org/gajim/gajim/-/compare/ef13942716966b5f0f08fffef1b06fa557059901...400fe65b6decf49612d6668e29a9df7c5a67adc4
You're receiving this email because of your account on dev.gajim.org.
_______________________________________________
Commits mailing list
[email protected]
https://lists.gajim.org/cgi-bin/listinfo/commits