Philipp Hörist pushed to branch mainwindow at gajim / gajim
Commits:
-
3bbd1a93
by lovetox at 2021-03-06T15:28:18+01:00
-
7172b2a4
by lovetox at 2021-03-06T15:28:29+01:00
-
400fe65b
by lovetox at 2021-03-06T15:32:41+01:00
3 changed files:
Changes:
| ... | ... | @@ -134,6 +134,19 @@ def _process_roster_push(self, _con, _stanza, properties): |
| 134 | 134 |
def get_item(self, jid):
|
| 135 | 135 |
return self._roster.get(jid)
|
| 136 | 136 |
|
| 137 |
+ def set_groups(self, jid, groups):
|
|
| 138 |
+ if groups is not None:
|
|
| 139 |
+ groups = set(groups)
|
|
| 140 |
+ item = self.get_item(jid)
|
|
| 141 |
+ self._nbxmpp('Roster').set_item(jid, item.name, groups)
|
|
| 142 |
+ |
|
| 143 |
+ def change_group(self, jid, old_group, new_group):
|
|
| 144 |
+ item = self.get_item(jid)
|
|
| 145 |
+ groups = set(item.groups)
|
|
| 146 |
+ groups.discard(old_group)
|
|
| 147 |
+ groups.add(new_group)
|
|
| 148 |
+ self._nbxmpp('Roster').set_item(jid, item.name, groups)
|
|
| 149 |
+ |
|
| 137 | 150 |
def iter(self):
|
| 138 | 151 |
for jid, data in self._roster.items():
|
| 139 | 152 |
yield jid, data
|
| ... | ... | @@ -80,6 +80,9 @@ def _adapt_disco_info(disco_info): |
| 80 | 80 |
|
| 81 | 81 |
class Encoder(json.JSONEncoder):
|
| 82 | 82 |
def default(self, obj):
|
| 83 |
+ if isinstance(obj, set):
|
|
| 84 |
+ return list(obj)
|
|
| 85 |
+ |
|
| 83 | 86 |
if isinstance(obj, JID):
|
| 84 | 87 |
return {'__type': 'JID', 'value': str(obj)}
|
| 85 | 88 |
|
| ... | ... | @@ -99,6 +102,7 @@ def json_decoder(dct): |
| 99 | 102 |
return JID.from_string(dct['value'])
|
| 100 | 103 |
if type_ == 'RosterItem':
|
| 101 | 104 |
dct.pop('__type')
|
| 105 |
+ dct['groups'] = set(dct['groups'])
|
|
| 102 | 106 |
return RosterItem(**dct)
|
| 103 | 107 |
return dct
|
| 104 | 108 |
|
| ... | ... | @@ -193,12 +193,9 @@ def _on_drag_data_received(self, treeview, _drag_context, x_coord, |
| 193 | 193 |
return
|
| 194 | 194 |
|
| 195 | 195 |
source_group = model[iter_source_parent][Column.JID_OR_GROUP]
|
| 196 |
- delimiter = self._client.get_module('Delimiter').delimiter
|
|
| 197 |
- source_groups = source_group.split(delimiter)
|
|
| 198 |
- if DEFAULT_GROUP in source_groups:
|
|
| 199 |
- source_groups = []
|
|
| 196 |
+ |
|
| 200 | 197 |
jid = model[iter_source][Column.JID_OR_GROUP]
|
| 201 |
- name = model[iter_source][Column.TEXT]
|
|
| 198 |
+ # name = model[iter_source][Column.TEXT]
|
|
| 202 | 199 |
|
| 203 | 200 |
# Destination: the row receiving the drop
|
| 204 | 201 |
iter_dest = model.get_iter(path_dest)
|
| ... | ... | @@ -209,25 +206,16 @@ def _on_drag_data_received(self, treeview, _drag_context, x_coord, |
| 209 | 206 |
else:
|
| 210 | 207 |
dest_group = model[iter_dest_parent][Column.JID_OR_GROUP]
|
| 211 | 208 |
|
| 212 |
- dest_groups = dest_group.split(delimiter)
|
|
| 213 |
- if DEFAULT_GROUP in dest_groups:
|
|
| 214 |
- # Dropped into DEFAULT_GROUP, remove all groups
|
|
| 215 |
- print('remoing all groups')
|
|
| 216 |
- # self._client.get_module('Roster').update_contact(jid, name, [])
|
|
| 209 |
+ if source_group == dest_group:
|
|
| 217 | 210 |
return
|
| 218 | 211 |
|
| 219 |
- print('source groups')
|
|
| 220 |
- print(source_groups)
|
|
| 221 |
- print('dest groups')
|
|
| 222 |
- print(dest_groups)
|
|
| 223 |
- if source_groups == dest_groups:
|
|
| 224 |
- # Dropped into source group
|
|
| 212 |
+ if DEFAULT_GROUP == dest_group:
|
|
| 213 |
+ self._client.get_module('Roster').set_groups(jid, None)
|
|
| 225 | 214 |
return
|
| 226 |
- groups = list(set(dest_groups) - set(source_groups))
|
|
| 227 |
- print('final groups')
|
|
| 228 |
- print(groups)
|
|
| 229 |
- print('setting new groups')
|
|
| 230 |
- # self._client.get_module('Roster').update_contact(jid, name, groups)
|
|
| 215 |
+ |
|
| 216 |
+ self._client.get_module('Roster').change_group(jid,
|
|
| 217 |
+ source_group,
|
|
| 218 |
+ dest_group)
|
|
| 231 | 219 |
|
| 232 | 220 |
def _on_show_offline(self, action, param):
|
| 233 | 221 |
action.set_state(param)
|