annotate sat_frontends/quick_frontend/quick_list_manager.py @ 2582:2e6864b1d577

quick frontend (contact list): don't store "nick" for group contacts: plugin XEP-0054 may associate a "nick" with a bare jid, which in case of MUC can cause trouble (Primitivus for instance will use the nick instead of the name of the room). This hack avoid this issue for now.
author Goffi <goffi@goffi.org>
date Fri, 11 May 2018 17:13:58 +0200
parents 26edcf3a30eb
children 56f94936df1e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1934
2daf7b4c6756 use of /usr/bin/env instead of /usr/bin/python in shebang
Goffi <goffi@goffi.org>
parents: 1766
diff changeset
1 #!/usr/bin/env python2
1625
8b8b1af5905f quick_frontend: add quick_list_manager.py and the QuickTagList class
souliane <souliane@mailoo.org>
parents:
diff changeset
2 # -*- coding: utf-8 -*-
8b8b1af5905f quick_frontend: add quick_list_manager.py and the QuickTagList class
souliane <souliane@mailoo.org>
parents:
diff changeset
3
8b8b1af5905f quick_frontend: add quick_list_manager.py and the QuickTagList class
souliane <souliane@mailoo.org>
parents:
diff changeset
4 # Libervia: a Salut à Toi frontend
1766
d17772b0fe22 copyright update
Goffi <goffi@goffi.org>
parents: 1625
diff changeset
5 # Copyright (C) 2013-2016 Adrien Cossa <souliane@mailoo.org>
1625
8b8b1af5905f quick_frontend: add quick_list_manager.py and the QuickTagList class
souliane <souliane@mailoo.org>
parents:
diff changeset
6
8b8b1af5905f quick_frontend: add quick_list_manager.py and the QuickTagList class
souliane <souliane@mailoo.org>
parents:
diff changeset
7 # This program is free software: you can redistribute it and/or modify
8b8b1af5905f quick_frontend: add quick_list_manager.py and the QuickTagList class
souliane <souliane@mailoo.org>
parents:
diff changeset
8 # it under the terms of the GNU Affero General Public License as published by
8b8b1af5905f quick_frontend: add quick_list_manager.py and the QuickTagList class
souliane <souliane@mailoo.org>
parents:
diff changeset
9 # the Free Software Foundation, either version 3 of the License, or
8b8b1af5905f quick_frontend: add quick_list_manager.py and the QuickTagList class
souliane <souliane@mailoo.org>
parents:
diff changeset
10 # (at your option) any later version.
8b8b1af5905f quick_frontend: add quick_list_manager.py and the QuickTagList class
souliane <souliane@mailoo.org>
parents:
diff changeset
11
8b8b1af5905f quick_frontend: add quick_list_manager.py and the QuickTagList class
souliane <souliane@mailoo.org>
parents:
diff changeset
12 # This program is distributed in the hope that it will be useful,
8b8b1af5905f quick_frontend: add quick_list_manager.py and the QuickTagList class
souliane <souliane@mailoo.org>
parents:
diff changeset
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
8b8b1af5905f quick_frontend: add quick_list_manager.py and the QuickTagList class
souliane <souliane@mailoo.org>
parents:
diff changeset
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
8b8b1af5905f quick_frontend: add quick_list_manager.py and the QuickTagList class
souliane <souliane@mailoo.org>
parents:
diff changeset
15 # GNU Affero General Public License for more details.
8b8b1af5905f quick_frontend: add quick_list_manager.py and the QuickTagList class
souliane <souliane@mailoo.org>
parents:
diff changeset
16
8b8b1af5905f quick_frontend: add quick_list_manager.py and the QuickTagList class
souliane <souliane@mailoo.org>
parents:
diff changeset
17 # You should have received a copy of the GNU Affero General Public License
8b8b1af5905f quick_frontend: add quick_list_manager.py and the QuickTagList class
souliane <souliane@mailoo.org>
parents:
diff changeset
18 # along with this program. If not, see <http://www.gnu.org/licenses/>.
8b8b1af5905f quick_frontend: add quick_list_manager.py and the QuickTagList class
souliane <souliane@mailoo.org>
parents:
diff changeset
19
8b8b1af5905f quick_frontend: add quick_list_manager.py and the QuickTagList class
souliane <souliane@mailoo.org>
parents:
diff changeset
20
8b8b1af5905f quick_frontend: add quick_list_manager.py and the QuickTagList class
souliane <souliane@mailoo.org>
parents:
diff changeset
21 class QuickTagList(object):
8b8b1af5905f quick_frontend: add quick_list_manager.py and the QuickTagList class
souliane <souliane@mailoo.org>
parents:
diff changeset
22 """This class manages a sorted list of tagged items, and a complementary sorted list of suggested but non tagged items."""
8b8b1af5905f quick_frontend: add quick_list_manager.py and the QuickTagList class
souliane <souliane@mailoo.org>
parents:
diff changeset
23
8b8b1af5905f quick_frontend: add quick_list_manager.py and the QuickTagList class
souliane <souliane@mailoo.org>
parents:
diff changeset
24 def __init__(self, items=None):
8b8b1af5905f quick_frontend: add quick_list_manager.py and the QuickTagList class
souliane <souliane@mailoo.org>
parents:
diff changeset
25 """
8b8b1af5905f quick_frontend: add quick_list_manager.py and the QuickTagList class
souliane <souliane@mailoo.org>
parents:
diff changeset
26
8b8b1af5905f quick_frontend: add quick_list_manager.py and the QuickTagList class
souliane <souliane@mailoo.org>
parents:
diff changeset
27 @param items (list): the suggested list of non tagged items
8b8b1af5905f quick_frontend: add quick_list_manager.py and the QuickTagList class
souliane <souliane@mailoo.org>
parents:
diff changeset
28 """
8b8b1af5905f quick_frontend: add quick_list_manager.py and the QuickTagList class
souliane <souliane@mailoo.org>
parents:
diff changeset
29 self.tagged = []
8b8b1af5905f quick_frontend: add quick_list_manager.py and the QuickTagList class
souliane <souliane@mailoo.org>
parents:
diff changeset
30 self.original = items[:] if items else [] # XXX: copy the list! It will be modified
8b8b1af5905f quick_frontend: add quick_list_manager.py and the QuickTagList class
souliane <souliane@mailoo.org>
parents:
diff changeset
31 self.untagged = items[:] if items else [] # XXX: copy the list! It will be modified
8b8b1af5905f quick_frontend: add quick_list_manager.py and the QuickTagList class
souliane <souliane@mailoo.org>
parents:
diff changeset
32 self.untagged.sort()
8b8b1af5905f quick_frontend: add quick_list_manager.py and the QuickTagList class
souliane <souliane@mailoo.org>
parents:
diff changeset
33
8b8b1af5905f quick_frontend: add quick_list_manager.py and the QuickTagList class
souliane <souliane@mailoo.org>
parents:
diff changeset
34 @property
8b8b1af5905f quick_frontend: add quick_list_manager.py and the QuickTagList class
souliane <souliane@mailoo.org>
parents:
diff changeset
35 def items(self):
8b8b1af5905f quick_frontend: add quick_list_manager.py and the QuickTagList class
souliane <souliane@mailoo.org>
parents:
diff changeset
36 """Return a sorted list of all items, tagged or untagged.
8b8b1af5905f quick_frontend: add quick_list_manager.py and the QuickTagList class
souliane <souliane@mailoo.org>
parents:
diff changeset
37
8b8b1af5905f quick_frontend: add quick_list_manager.py and the QuickTagList class
souliane <souliane@mailoo.org>
parents:
diff changeset
38 @return list
8b8b1af5905f quick_frontend: add quick_list_manager.py and the QuickTagList class
souliane <souliane@mailoo.org>
parents:
diff changeset
39 """
8b8b1af5905f quick_frontend: add quick_list_manager.py and the QuickTagList class
souliane <souliane@mailoo.org>
parents:
diff changeset
40 res = list(set(self.tagged).union(self.untagged))
8b8b1af5905f quick_frontend: add quick_list_manager.py and the QuickTagList class
souliane <souliane@mailoo.org>
parents:
diff changeset
41 res.sort()
8b8b1af5905f quick_frontend: add quick_list_manager.py and the QuickTagList class
souliane <souliane@mailoo.org>
parents:
diff changeset
42 return res
8b8b1af5905f quick_frontend: add quick_list_manager.py and the QuickTagList class
souliane <souliane@mailoo.org>
parents:
diff changeset
43
8b8b1af5905f quick_frontend: add quick_list_manager.py and the QuickTagList class
souliane <souliane@mailoo.org>
parents:
diff changeset
44 def tag(self, items):
8b8b1af5905f quick_frontend: add quick_list_manager.py and the QuickTagList class
souliane <souliane@mailoo.org>
parents:
diff changeset
45 """Tag some items.
8b8b1af5905f quick_frontend: add quick_list_manager.py and the QuickTagList class
souliane <souliane@mailoo.org>
parents:
diff changeset
46
8b8b1af5905f quick_frontend: add quick_list_manager.py and the QuickTagList class
souliane <souliane@mailoo.org>
parents:
diff changeset
47 @param items (list): items to be tagged
8b8b1af5905f quick_frontend: add quick_list_manager.py and the QuickTagList class
souliane <souliane@mailoo.org>
parents:
diff changeset
48 """
8b8b1af5905f quick_frontend: add quick_list_manager.py and the QuickTagList class
souliane <souliane@mailoo.org>
parents:
diff changeset
49 for item in items:
8b8b1af5905f quick_frontend: add quick_list_manager.py and the QuickTagList class
souliane <souliane@mailoo.org>
parents:
diff changeset
50 if item not in self.tagged:
8b8b1af5905f quick_frontend: add quick_list_manager.py and the QuickTagList class
souliane <souliane@mailoo.org>
parents:
diff changeset
51 self.tagged.append(item)
8b8b1af5905f quick_frontend: add quick_list_manager.py and the QuickTagList class
souliane <souliane@mailoo.org>
parents:
diff changeset
52 if item in self.untagged:
8b8b1af5905f quick_frontend: add quick_list_manager.py and the QuickTagList class
souliane <souliane@mailoo.org>
parents:
diff changeset
53 self.untagged.remove(item)
8b8b1af5905f quick_frontend: add quick_list_manager.py and the QuickTagList class
souliane <souliane@mailoo.org>
parents:
diff changeset
54 self.tagged.sort()
8b8b1af5905f quick_frontend: add quick_list_manager.py and the QuickTagList class
souliane <souliane@mailoo.org>
parents:
diff changeset
55 self.untagged.sort()
8b8b1af5905f quick_frontend: add quick_list_manager.py and the QuickTagList class
souliane <souliane@mailoo.org>
parents:
diff changeset
56
8b8b1af5905f quick_frontend: add quick_list_manager.py and the QuickTagList class
souliane <souliane@mailoo.org>
parents:
diff changeset
57 def untag(self, items):
8b8b1af5905f quick_frontend: add quick_list_manager.py and the QuickTagList class
souliane <souliane@mailoo.org>
parents:
diff changeset
58 """Untag some items.
8b8b1af5905f quick_frontend: add quick_list_manager.py and the QuickTagList class
souliane <souliane@mailoo.org>
parents:
diff changeset
59
8b8b1af5905f quick_frontend: add quick_list_manager.py and the QuickTagList class
souliane <souliane@mailoo.org>
parents:
diff changeset
60 @param items (list): items to be untagged
8b8b1af5905f quick_frontend: add quick_list_manager.py and the QuickTagList class
souliane <souliane@mailoo.org>
parents:
diff changeset
61 """
8b8b1af5905f quick_frontend: add quick_list_manager.py and the QuickTagList class
souliane <souliane@mailoo.org>
parents:
diff changeset
62 for item in items:
8b8b1af5905f quick_frontend: add quick_list_manager.py and the QuickTagList class
souliane <souliane@mailoo.org>
parents:
diff changeset
63 if item not in self.untagged and item in self.original:
8b8b1af5905f quick_frontend: add quick_list_manager.py and the QuickTagList class
souliane <souliane@mailoo.org>
parents:
diff changeset
64 self.untagged.append(item)
8b8b1af5905f quick_frontend: add quick_list_manager.py and the QuickTagList class
souliane <souliane@mailoo.org>
parents:
diff changeset
65 if item in self.tagged:
8b8b1af5905f quick_frontend: add quick_list_manager.py and the QuickTagList class
souliane <souliane@mailoo.org>
parents:
diff changeset
66 self.tagged.remove(item)
8b8b1af5905f quick_frontend: add quick_list_manager.py and the QuickTagList class
souliane <souliane@mailoo.org>
parents:
diff changeset
67 self.tagged.sort()
8b8b1af5905f quick_frontend: add quick_list_manager.py and the QuickTagList class
souliane <souliane@mailoo.org>
parents:
diff changeset
68 self.untagged.sort()