Mercurial > libervia-web
annotate src/browser/sat_browser/contact_list.py @ 962:c7fba7709d05
Pages: various improvments:
- automatic confirmation message on data post can now be avoided by using the C.POST_NO_CONFIRM flag
- new tailing_slash page variable can be used to force a trailing slash at the end of the URL (by redirecting if necessary)
- LiberviaPage now has a url attribute with the its relative path
- new redirection methods:
- getPageRedirectURL: generate and URL which will redirect to current page (or somewhere else), mainly useful for login
- HTTPRedirect: stop workflow and do a HTTP redirection
- redirectOrContinue: redirect a page if redirect arguments is present (usually redirect_url), else continue workflow
- profile access now redirect to login page if registration is allowed.
author | Goffi <goffi@goffi.org> |
---|---|
date | Fri, 27 Oct 2017 18:43:16 +0200 |
parents | 1ced5b522ae2 |
children | fd4eae654182 |
rev | line source |
---|---|
2
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
1 #!/usr/bin/python |
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
2 # -*- coding: utf-8 -*- |
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
3 |
339
2067d6241927
fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents:
323
diff
changeset
|
4 # Libervia: a Salut à Toi frontend |
818 | 5 # Copyright (C) 2011-2016 Jérôme Poisson <goffi@goffi.org> |
2
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
6 |
339
2067d6241927
fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents:
323
diff
changeset
|
7 # This program is free software: you can redistribute it and/or modify |
2067d6241927
fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents:
323
diff
changeset
|
8 # it under the terms of the GNU Affero General Public License as published by |
2067d6241927
fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents:
323
diff
changeset
|
9 # the Free Software Foundation, either version 3 of the License, or |
2067d6241927
fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents:
323
diff
changeset
|
10 # (at your option) any later version. |
2
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
11 |
339
2067d6241927
fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents:
323
diff
changeset
|
12 # This program is distributed in the hope that it will be useful, |
2067d6241927
fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents:
323
diff
changeset
|
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of |
2067d6241927
fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents:
323
diff
changeset
|
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
2067d6241927
fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents:
323
diff
changeset
|
15 # GNU Affero General Public License for more details. |
2
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
16 |
339
2067d6241927
fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents:
323
diff
changeset
|
17 # You should have received a copy of the GNU Affero General Public License |
2067d6241927
fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents:
323
diff
changeset
|
18 # along with this program. If not, see <http://www.gnu.org/licenses/>. |
2
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
19 |
226
744426c2b699
browser_side, misc: better PEP8 compliance
souliane <souliane@mailoo.org>
parents:
200
diff
changeset
|
20 import pyjd # this is dummy in pyjs |
439
d52f529a6d42
browser side: use of new log system (first draft):
Goffi <goffi@goffi.org>
parents:
413
diff
changeset
|
21 from sat.core.log import getLogger |
d52f529a6d42
browser side: use of new log system (first draft):
Goffi <goffi@goffi.org>
parents:
413
diff
changeset
|
22 log = getLogger(__name__) |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
23 from sat_frontends.quick_frontend.quick_contact_list import QuickContactList |
2
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
24 from pyjamas.ui.SimplePanel import SimplePanel |
187
d0503f8f15ef
browser side: scroller added to contacts panel
Goffi <goffi@goffi.org>
parents:
165
diff
changeset
|
25 from pyjamas.ui.ScrollPanel import ScrollPanel |
2
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
26 from pyjamas.ui.VerticalPanel import VerticalPanel |
200
0f5c2f799913
browser side: clicking on the contacts list (contact item, group or the "contacts" main title) open a discussion or microblog
Goffi <goffi@goffi.org>
parents:
196
diff
changeset
|
27 from pyjamas.ui.ClickListener import ClickHandler |
2
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
28 from pyjamas.ui.Label import Label |
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
29 from pyjamas import Window |
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
30 from pyjamas import DOM |
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
31 |
480
50b286866739
browser side: display avatars in the contact panel
souliane <souliane@mailoo.org>
parents:
479
diff
changeset
|
32 from constants import Const as C |
733
66beef5b943d
browser_side: add functions JIDSet and JIDDict
souliane <souliane@mailoo.org>
parents:
716
diff
changeset
|
33 from sat_frontends.tools import jid |
648
6d3142b782c3
browser_side: classes reorganisation:
Goffi <goffi@goffi.org>
parents:
647
diff
changeset
|
34 import libervia_widget |
6d3142b782c3
browser_side: classes reorganisation:
Goffi <goffi@goffi.org>
parents:
647
diff
changeset
|
35 import contact_panel |
647
e0021d571eef
browser side: moved ContactBox, ContactsPanel, ContactLabeland ContactMenuBar to base_widget/base_panels so they can be reused outside of contact_list module
Goffi <goffi@goffi.org>
parents:
641
diff
changeset
|
36 import blog |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
37 import chat |
242
a25aa882e09a
browser_side: add context menu for contact:
souliane <souliane@mailoo.org>
parents:
230
diff
changeset
|
38 |
614
14bdf5394ae9
browser side: fixed jid's public blog menu
Goffi <goffi@goffi.org>
parents:
608
diff
changeset
|
39 unicode = str # XXX: pyjama doesn't manage unicode |
14bdf5394ae9
browser side: fixed jid's public blog menu
Goffi <goffi@goffi.org>
parents:
608
diff
changeset
|
40 |
14bdf5394ae9
browser side: fixed jid's public blog menu
Goffi <goffi@goffi.org>
parents:
608
diff
changeset
|
41 |
648
6d3142b782c3
browser_side: classes reorganisation:
Goffi <goffi@goffi.org>
parents:
647
diff
changeset
|
42 class GroupLabel(libervia_widget.DragLabel, Label, ClickHandler): |
200
0f5c2f799913
browser side: clicking on the contacts list (contact item, group or the "contacts" main title) open a discussion or microblog
Goffi <goffi@goffi.org>
parents:
196
diff
changeset
|
43 def __init__(self, host, group): |
617
5baca9d46c34
browser_side: add/improve some docstrings
souliane <souliane@mailoo.org>
parents:
616
diff
changeset
|
44 """ |
5baca9d46c34
browser_side: add/improve some docstrings
souliane <souliane@mailoo.org>
parents:
616
diff
changeset
|
45 |
5baca9d46c34
browser_side: add/improve some docstrings
souliane <souliane@mailoo.org>
parents:
616
diff
changeset
|
46 @param host (SatWebFrontend) |
5baca9d46c34
browser_side: add/improve some docstrings
souliane <souliane@mailoo.org>
parents:
616
diff
changeset
|
47 @param group (unicode): group name |
5baca9d46c34
browser_side: add/improve some docstrings
souliane <souliane@mailoo.org>
parents:
616
diff
changeset
|
48 """ |
16
099c05a0dcab
browser side: microblog panel improvments
Goffi <goffi@goffi.org>
parents:
13
diff
changeset
|
49 self.group = group |
451 | 50 Label.__init__(self, group) # , Element=DOM.createElement('div') |
16
099c05a0dcab
browser side: microblog panel improvments
Goffi <goffi@goffi.org>
parents:
13
diff
changeset
|
51 self.setStyleName('group') |
648
6d3142b782c3
browser_side: classes reorganisation:
Goffi <goffi@goffi.org>
parents:
647
diff
changeset
|
52 libervia_widget.DragLabel.__init__(self, group, "GROUP", host) |
200
0f5c2f799913
browser side: clicking on the contacts list (contact item, group or the "contacts" main title) open a discussion or microblog
Goffi <goffi@goffi.org>
parents:
196
diff
changeset
|
53 ClickHandler.__init__(self) |
0f5c2f799913
browser side: clicking on the contacts list (contact item, group or the "contacts" main title) open a discussion or microblog
Goffi <goffi@goffi.org>
parents:
196
diff
changeset
|
54 self.addClickListener(self) |
0f5c2f799913
browser side: clicking on the contacts list (contact item, group or the "contacts" main title) open a discussion or microblog
Goffi <goffi@goffi.org>
parents:
196
diff
changeset
|
55 |
0f5c2f799913
browser side: clicking on the contacts list (contact item, group or the "contacts" main title) open a discussion or microblog
Goffi <goffi@goffi.org>
parents:
196
diff
changeset
|
56 def onClick(self, sender): |
748
0d5889b9313c
browser side: fixed group panel drop and contact_list click on GroupLabel
Goffi <goffi@goffi.org>
parents:
733
diff
changeset
|
57 self.host.displayWidget(blog.Blog, (self.group,)) |
230
266e9678eec0
browser_side: added the flag REUSE_EXISTING_LIBERVIA_WIDGETS
souliane <souliane@mailoo.org>
parents:
226
diff
changeset
|
58 |
16
099c05a0dcab
browser side: microblog panel improvments
Goffi <goffi@goffi.org>
parents:
13
diff
changeset
|
59 |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
60 class GroupPanel(VerticalPanel): |
2
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
61 |
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
62 def __init__(self, parent): |
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
63 VerticalPanel.__init__(self) |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
64 self.setStyleName('groupPanel') |
2
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
65 self._parent = parent |
911
997cf25e785c
browser side (contact list): fixed groups displaying
Goffi <goffi@goffi.org>
parents:
909
diff
changeset
|
66 self._groups = set() |
2
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
67 |
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
68 def add(self, group): |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
69 if group in self._groups: |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
70 log.warning("trying to add an already existing group") |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
71 return |
200
0f5c2f799913
browser side: clicking on the contacts list (contact item, group or the "contacts" main title) open a discussion or microblog
Goffi <goffi@goffi.org>
parents:
196
diff
changeset
|
72 _item = GroupLabel(self._parent.host, group) |
2
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
73 _item.addMouseListener(self._parent) |
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
74 DOM.setStyleAttribute(_item.getElement(), "cursor", "pointer") |
255
da0487f0a2e7
browser_side: small changes to prepare the contact group manager:
souliane <souliane@mailoo.org>
parents:
252
diff
changeset
|
75 index = 0 |
459
36f27d1e64b2
browser_side: avoid warning "list comprehension redefines 'group' from line XXX"
souliane <souliane@mailoo.org>
parents:
455
diff
changeset
|
76 for group_ in [child.group for child in self.getChildren()]: |
255
da0487f0a2e7
browser_side: small changes to prepare the contact group manager:
souliane <souliane@mailoo.org>
parents:
252
diff
changeset
|
77 if group_ > group: |
da0487f0a2e7
browser_side: small changes to prepare the contact group manager:
souliane <souliane@mailoo.org>
parents:
252
diff
changeset
|
78 break |
da0487f0a2e7
browser_side: small changes to prepare the contact group manager:
souliane <souliane@mailoo.org>
parents:
252
diff
changeset
|
79 index += 1 |
da0487f0a2e7
browser_side: small changes to prepare the contact group manager:
souliane <souliane@mailoo.org>
parents:
252
diff
changeset
|
80 VerticalPanel.insert(self, _item, index) |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
81 self._groups.add(group) |
55
d5266c41ca24
Roster list update, contact deletion + some refactoring
Goffi <goffi@goffi.org>
parents:
54
diff
changeset
|
82 |
d5266c41ca24
Roster list update, contact deletion + some refactoring
Goffi <goffi@goffi.org>
parents:
54
diff
changeset
|
83 def remove(self, group): |
d5266c41ca24
Roster list update, contact deletion + some refactoring
Goffi <goffi@goffi.org>
parents:
54
diff
changeset
|
84 for wid in self: |
d5266c41ca24
Roster list update, contact deletion + some refactoring
Goffi <goffi@goffi.org>
parents:
54
diff
changeset
|
85 if isinstance(wid, GroupLabel) and wid.group == group: |
d5266c41ca24
Roster list update, contact deletion + some refactoring
Goffi <goffi@goffi.org>
parents:
54
diff
changeset
|
86 VerticalPanel.remove(self, wid) |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
87 self._groups.remove(group) |
567
ee9c7bd266ad
browser_side: implements "Show offline contacts" and "Show empty groups" parameters
souliane <souliane@mailoo.org>
parents:
518
diff
changeset
|
88 return |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
89 log.warning("Trying to remove a non existent group") |
567
ee9c7bd266ad
browser_side: implements "Show offline contacts" and "Show empty groups" parameters
souliane <souliane@mailoo.org>
parents:
518
diff
changeset
|
90 |
ee9c7bd266ad
browser_side: implements "Show offline contacts" and "Show empty groups" parameters
souliane <souliane@mailoo.org>
parents:
518
diff
changeset
|
91 def getGroupBox(self, group): |
ee9c7bd266ad
browser_side: implements "Show offline contacts" and "Show empty groups" parameters
souliane <souliane@mailoo.org>
parents:
518
diff
changeset
|
92 """get the widget of a group |
ee9c7bd266ad
browser_side: implements "Show offline contacts" and "Show empty groups" parameters
souliane <souliane@mailoo.org>
parents:
518
diff
changeset
|
93 |
617
5baca9d46c34
browser_side: add/improve some docstrings
souliane <souliane@mailoo.org>
parents:
616
diff
changeset
|
94 @param group (unicode): the group |
567
ee9c7bd266ad
browser_side: implements "Show offline contacts" and "Show empty groups" parameters
souliane <souliane@mailoo.org>
parents:
518
diff
changeset
|
95 @return: GroupLabel instance if present, else None""" |
ee9c7bd266ad
browser_side: implements "Show offline contacts" and "Show empty groups" parameters
souliane <souliane@mailoo.org>
parents:
518
diff
changeset
|
96 for wid in self: |
ee9c7bd266ad
browser_side: implements "Show offline contacts" and "Show empty groups" parameters
souliane <souliane@mailoo.org>
parents:
518
diff
changeset
|
97 if isinstance(wid, GroupLabel) and wid.group == group: |
ee9c7bd266ad
browser_side: implements "Show offline contacts" and "Show empty groups" parameters
souliane <souliane@mailoo.org>
parents:
518
diff
changeset
|
98 return wid |
ee9c7bd266ad
browser_side: implements "Show offline contacts" and "Show empty groups" parameters
souliane <souliane@mailoo.org>
parents:
518
diff
changeset
|
99 return None |
226
744426c2b699
browser_side, misc: better PEP8 compliance
souliane <souliane@mailoo.org>
parents:
200
diff
changeset
|
100 |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
101 def getGroups(self): |
911
997cf25e785c
browser side (contact list): fixed groups displaying
Goffi <goffi@goffi.org>
parents:
909
diff
changeset
|
102 return self._groups |
242
a25aa882e09a
browser_side: add context menu for contact:
souliane <souliane@mailoo.org>
parents:
230
diff
changeset
|
103 |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
104 |
648
6d3142b782c3
browser_side: classes reorganisation:
Goffi <goffi@goffi.org>
parents:
647
diff
changeset
|
105 class ContactTitleLabel(libervia_widget.DragLabel, Label, ClickHandler): |
634
16a5da120b7f
browser side (contact list): Contact list improvments:
Goffi <goffi@goffi.org>
parents:
633
diff
changeset
|
106 |
200
0f5c2f799913
browser side: clicking on the contacts list (contact item, group or the "contacts" main title) open a discussion or microblog
Goffi <goffi@goffi.org>
parents:
196
diff
changeset
|
107 def __init__(self, host, text): |
451 | 108 Label.__init__(self, text) # , Element=DOM.createElement('div') |
16
099c05a0dcab
browser side: microblog panel improvments
Goffi <goffi@goffi.org>
parents:
13
diff
changeset
|
109 self.setStyleName('contactTitle') |
648
6d3142b782c3
browser_side: classes reorganisation:
Goffi <goffi@goffi.org>
parents:
647
diff
changeset
|
110 libervia_widget.DragLabel.__init__(self, text, "CONTACT_TITLE", host) |
200
0f5c2f799913
browser side: clicking on the contacts list (contact item, group or the "contacts" main title) open a discussion or microblog
Goffi <goffi@goffi.org>
parents:
196
diff
changeset
|
111 ClickHandler.__init__(self) |
0f5c2f799913
browser side: clicking on the contacts list (contact item, group or the "contacts" main title) open a discussion or microblog
Goffi <goffi@goffi.org>
parents:
196
diff
changeset
|
112 self.addClickListener(self) |
0f5c2f799913
browser side: clicking on the contacts list (contact item, group or the "contacts" main title) open a discussion or microblog
Goffi <goffi@goffi.org>
parents:
196
diff
changeset
|
113 |
0f5c2f799913
browser side: clicking on the contacts list (contact item, group or the "contacts" main title) open a discussion or microblog
Goffi <goffi@goffi.org>
parents:
196
diff
changeset
|
114 def onClick(self, sender): |
766
dd70db1c48dc
browser_side (contact_list): fixes click on the "Contacts" button above the roster
souliane <souliane@mailoo.org>
parents:
754
diff
changeset
|
115 self.host.displayWidget(blog.Blog, ()) |
230
266e9678eec0
browser_side: added the flag REUSE_EXISTING_LIBERVIA_WIDGETS
souliane <souliane@mailoo.org>
parents:
226
diff
changeset
|
116 |
16
099c05a0dcab
browser side: microblog panel improvments
Goffi <goffi@goffi.org>
parents:
13
diff
changeset
|
117 |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
118 class ContactList(SimplePanel, QuickContactList): |
2
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
119 """Manage the contacts and groups""" |
226
744426c2b699
browser_side, misc: better PEP8 compliance
souliane <souliane@mailoo.org>
parents:
200
diff
changeset
|
120 |
909
e8b133b77aa4
browser, server: update to get compatibility with 0.7-dev (not finished):
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
121 def __init__(self, host, target, on_click=None, on_change=None, user_data=None, profiles=None): |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
122 QuickContactList.__init__(self, host, C.PROF_KEY_NONE) |
909
e8b133b77aa4
browser, server: update to get compatibility with 0.7-dev (not finished):
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
123 self.contact_list = self.host.contact_list |
2
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
124 SimplePanel.__init__(self) |
634
16a5da120b7f
browser side (contact list): Contact list improvments:
Goffi <goffi@goffi.org>
parents:
633
diff
changeset
|
125 self.host = host |
187
d0503f8f15ef
browser side: scroller added to contacts panel
Goffi <goffi@goffi.org>
parents:
165
diff
changeset
|
126 self.scroll_panel = ScrollPanel() |
779
fc941d0d97f8
browser_side: fixed ContactsPanel scrolling
souliane <souliane@mailoo.org>
parents:
766
diff
changeset
|
127 self.scroll_panel.addStyleName("gwt-ScrollPanel") # XXX: no class is set by Pyjamas |
2
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
128 self.vPanel = VerticalPanel() |
200
0f5c2f799913
browser side: clicking on the contacts list (contact item, group or the "contacts" main title) open a discussion or microblog
Goffi <goffi@goffi.org>
parents:
196
diff
changeset
|
129 _title = ContactTitleLabel(host, 'Contacts') |
16
099c05a0dcab
browser side: microblog panel improvments
Goffi <goffi@goffi.org>
parents:
13
diff
changeset
|
130 DOM.setStyleAttribute(_title.getElement(), "cursor", "pointer") |
684
e876f493dccc
browser_side: follow changes made on quick_frontend for chat states and MUC symbols + minor fixes following the refactorisation:
souliane <souliane@mailoo.org>
parents:
679
diff
changeset
|
131 |
e876f493dccc
browser_side: follow changes made on quick_frontend for chat states and MUC symbols + minor fixes following the refactorisation:
souliane <souliane@mailoo.org>
parents:
679
diff
changeset
|
132 def on_click(contact_jid): |
e876f493dccc
browser_side: follow changes made on quick_frontend for chat states and MUC symbols + minor fixes following the refactorisation:
souliane <souliane@mailoo.org>
parents:
679
diff
changeset
|
133 self.host.displayWidget(chat.Chat, contact_jid, type_=C.CHAT_ONE2ONE) |
754
d3fa1e8904cf
browser_side: display the number of alerts for each contact and not only a symbol (*) + favicon displays the total number of waiting messages
souliane <souliane@mailoo.org>
parents:
748
diff
changeset
|
134 self.removeAlerts(contact_jid, True) |
684
e876f493dccc
browser_side: follow changes made on quick_frontend for chat states and MUC symbols + minor fixes following the refactorisation:
souliane <souliane@mailoo.org>
parents:
679
diff
changeset
|
135 |
e876f493dccc
browser_side: follow changes made on quick_frontend for chat states and MUC symbols + minor fixes following the refactorisation:
souliane <souliane@mailoo.org>
parents:
679
diff
changeset
|
136 self._contacts_panel = contact_panel.ContactsPanel(host, contacts_click=on_click, contacts_menus=(C.MENU_JID_CONTEXT, C.MENU_ROSTER_JID_CONTEXT)) |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
137 self._group_panel = GroupPanel(self) |
226
744426c2b699
browser_side, misc: better PEP8 compliance
souliane <souliane@mailoo.org>
parents:
200
diff
changeset
|
138 |
2
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
139 self.vPanel.add(_title) |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
140 self.vPanel.add(self._group_panel) |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
141 self.vPanel.add(self._contacts_panel) |
187
d0503f8f15ef
browser side: scroller added to contacts panel
Goffi <goffi@goffi.org>
parents:
165
diff
changeset
|
142 self.scroll_panel.add(self.vPanel) |
d0503f8f15ef
browser side: scroller added to contacts panel
Goffi <goffi@goffi.org>
parents:
165
diff
changeset
|
143 self.add(self.scroll_panel) |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
144 self.setStyleName('contactList') |
187
d0503f8f15ef
browser side: scroller added to contacts panel
Goffi <goffi@goffi.org>
parents:
165
diff
changeset
|
145 Window.addWindowResizeListener(self) |
624
9092e624bb27
browser_side: fixes various issues
souliane <souliane@mailoo.org>
parents:
622
diff
changeset
|
146 |
9092e624bb27
browser_side: fixes various issues
souliane <souliane@mailoo.org>
parents:
622
diff
changeset
|
147 # FIXME: workaround for a pyjamas issue: calling hash on a class method always return a different value if that method is defined directly within the class (with the "def" keyword) |
9092e624bb27
browser_side: fixes various issues
souliane <souliane@mailoo.org>
parents:
622
diff
changeset
|
148 self.avatarListener = self.onAvatarUpdate |
9092e624bb27
browser_side: fixes various issues
souliane <souliane@mailoo.org>
parents:
622
diff
changeset
|
149 host.addListener('avatar', self.avatarListener, [C.PROF_KEY_NONE]) |
909
e8b133b77aa4
browser, server: update to get compatibility with 0.7-dev (not finished):
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
150 self.postInit() |
187
d0503f8f15ef
browser side: scroller added to contacts panel
Goffi <goffi@goffi.org>
parents:
165
diff
changeset
|
151 |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
152 @property |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
153 def profile(self): |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
154 return C.PROF_KEY_NONE |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
155 |
607
537649f6a2d0
browser side (blog, contact list): use of new listener mechanism to update avatar
Goffi <goffi@goffi.org>
parents:
606
diff
changeset
|
156 def onDelete(self): |
537649f6a2d0
browser side (blog, contact list): use of new listener mechanism to update avatar
Goffi <goffi@goffi.org>
parents:
606
diff
changeset
|
157 QuickContactList.onDelete(self) |
624
9092e624bb27
browser_side: fixes various issues
souliane <souliane@mailoo.org>
parents:
622
diff
changeset
|
158 self.host.removeListener('avatar', self.avatarListener) |
607
537649f6a2d0
browser side (blog, contact list): use of new listener mechanism to update avatar
Goffi <goffi@goffi.org>
parents:
606
diff
changeset
|
159 |
909
e8b133b77aa4
browser, server: update to get compatibility with 0.7-dev (not finished):
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
160 def update(self, entities=None, type_=None, profile=None): |
716
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
697
diff
changeset
|
161 # XXX: as update is slow, we avoid many updates on profile plugs |
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
697
diff
changeset
|
162 # and do them all at once at the end |
909
e8b133b77aa4
browser, server: update to get compatibility with 0.7-dev (not finished):
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
163 if not self.host._profile_plugged: # FIXME: should not be necessary anymore (done in QuickFrontend) |
716
3b91225b457a
server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents:
697
diff
changeset
|
164 return |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
165 ### GROUPS ### |
909
e8b133b77aa4
browser, server: update to get compatibility with 0.7-dev (not finished):
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
166 _keys = self.contact_list._groups.keys() |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
167 try: |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
168 # XXX: Pyjamas doesn't do the set casting if None is present |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
169 _keys.remove(None) |
592
c66f7227848e
browser side: fixed an error catch in contact_list module (raised error depend on pyama's compilation options)
Goffi <goffi@goffi.org>
parents:
589
diff
changeset
|
170 except (KeyError, ValueError): # XXX: error raised depend on pyjama's compilation options |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
171 pass |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
172 current_groups = set(_keys) |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
173 shown_groups = self._group_panel.getGroups() |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
174 new_groups = current_groups.difference(shown_groups) |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
175 removed_groups = shown_groups.difference(current_groups) |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
176 for group in new_groups: |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
177 self._group_panel.add(group) |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
178 for group in removed_groups: |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
179 self._group_panel.remove(group) |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
180 |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
181 ### JIDS ### |
909
e8b133b77aa4
browser, server: update to get compatibility with 0.7-dev (not finished):
Goffi <goffi@goffi.org>
parents:
818
diff
changeset
|
182 to_show = [jid_ for jid_ in self.contact_list.roster if self.contact_list.entityToShow(jid_) and jid_ != self.contact_list.whoami.bare] |
630 | 183 to_show.sort() |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
184 |
660
267761bf7f08
browser side (contact list): ContactPanels is used instead of OccupantsList in MUC:
Goffi <goffi@goffi.org>
parents:
658
diff
changeset
|
185 self._contacts_panel.setList(to_show) |
630 | 186 |
187
d0503f8f15ef
browser side: scroller added to contacts panel
Goffi <goffi@goffi.org>
parents:
165
diff
changeset
|
187 def onWindowResized(self, width, height): |
654
40c72f3b7638
browser_side: MainPanel is now based on a DockPanel, which allows to use less tables and also to remove some "window resized" listeners
souliane <souliane@mailoo.org>
parents:
651
diff
changeset
|
188 ideal_height = height - DOM.getAbsoluteTop(self.getElement()) - 5 |
658
476d8d9973d3
browser_side: the contact list's height needs a window resize after it's been added or when the tab bar display is changed
souliane <souliane@mailoo.org>
parents:
654
diff
changeset
|
189 tab_panel = self.host.panel.tab_panel |
476d8d9973d3
browser_side: the contact list's height needs a window resize after it's been added or when the tab bar display is changed
souliane <souliane@mailoo.org>
parents:
654
diff
changeset
|
190 if tab_panel.getWidgetCount() > 1: |
476d8d9973d3
browser_side: the contact list's height needs a window resize after it's been added or when the tab bar display is changed
souliane <souliane@mailoo.org>
parents:
654
diff
changeset
|
191 ideal_height -= tab_panel.getTabBar().getOffsetHeight() |
290
3216c8d5432b
browser_side: set the ideal height for the contact panel size when displayed in the unibox panel
souliane <souliane@mailoo.org>
parents:
279
diff
changeset
|
192 self.scroll_panel.setHeight("%s%s" % (ideal_height, "px")) |
226
744426c2b699
browser_side, misc: better PEP8 compliance
souliane <souliane@mailoo.org>
parents:
200
diff
changeset
|
193 |
54
f25c4077f6b9
addind contact + subscription management + misc
Goffi <goffi@goffi.org>
parents:
51
diff
changeset
|
194 def isContactInRoster(self, contact_jid): |
f25c4077f6b9
addind contact + subscription management + misc
Goffi <goffi@goffi.org>
parents:
51
diff
changeset
|
195 """Test if the contact is in our roster list""" |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
196 for contact_box in self._contacts_panel: |
480
50b286866739
browser side: display avatars in the contact panel
souliane <souliane@mailoo.org>
parents:
479
diff
changeset
|
197 if contact_jid == contact_box.jid: |
54
f25c4077f6b9
addind contact + subscription management + misc
Goffi <goffi@goffi.org>
parents:
51
diff
changeset
|
198 return True |
f25c4077f6b9
addind contact + subscription management + misc
Goffi <goffi@goffi.org>
parents:
51
diff
changeset
|
199 return False |
f25c4077f6b9
addind contact + subscription management + misc
Goffi <goffi@goffi.org>
parents:
51
diff
changeset
|
200 |
21
77c2e48efa29
browser side: a warning message now show who will receive the message entered in UniBox, with a color depending on how many people will be able to see it
Goffi <goffi@goffi.org>
parents:
19
diff
changeset
|
201 def getGroups(self): |
911
997cf25e785c
browser side (contact list): fixed groups displaying
Goffi <goffi@goffi.org>
parents:
909
diff
changeset
|
202 return set([g for g in self._groups if g is not None]) |
21
77c2e48efa29
browser side: a warning message now show who will receive the message entered in UniBox, with a color depending on how many people will be able to see it
Goffi <goffi@goffi.org>
parents:
19
diff
changeset
|
203 |
2
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
204 def onMouseMove(self, sender, x, y): |
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
205 pass |
226
744426c2b699
browser_side, misc: better PEP8 compliance
souliane <souliane@mailoo.org>
parents:
200
diff
changeset
|
206 |
2
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
207 def onMouseDown(self, sender, x, y): |
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
208 pass |
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
209 |
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
210 def onMouseUp(self, sender, x, y): |
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
211 pass |
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
212 |
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
213 def onMouseEnter(self, sender): |
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
214 if isinstance(sender, GroupLabel): |
912
1ced5b522ae2
browser side(contact list): fixed calls to getGroupData
Goffi <goffi@goffi.org>
parents:
911
diff
changeset
|
215 jids = self.contact_list.getGroupData(sender.group, "jids") |
787
b2a75a103aac
browser side (contact list): fixed a traceback on mouse enter/leave + bad attribute name
Goffi <goffi@goffi.org>
parents:
779
diff
changeset
|
216 for contact in self._contacts_panel.getBoxes(): |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
217 if contact.jid in jids: |
480
50b286866739
browser side: display avatars in the contact panel
souliane <souliane@mailoo.org>
parents:
479
diff
changeset
|
218 contact.label.addStyleName("selected") |
226
744426c2b699
browser_side, misc: better PEP8 compliance
souliane <souliane@mailoo.org>
parents:
200
diff
changeset
|
219 |
2
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
220 def onMouseLeave(self, sender): |
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
221 if isinstance(sender, GroupLabel): |
912
1ced5b522ae2
browser side(contact list): fixed calls to getGroupData
Goffi <goffi@goffi.org>
parents:
911
diff
changeset
|
222 jids = self.contact_list.getGroupData(sender.group, "jids") |
787
b2a75a103aac
browser side (contact list): fixed a traceback on mouse enter/leave + bad attribute name
Goffi <goffi@goffi.org>
parents:
779
diff
changeset
|
223 for contact in self._contacts_panel.getBoxes(): |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
224 if contact.jid in jids: |
480
50b286866739
browser side: display avatars in the contact panel
souliane <souliane@mailoo.org>
parents:
479
diff
changeset
|
225 contact.label.removeStyleName("selected") |
50b286866739
browser side: display avatars in the contact panel
souliane <souliane@mailoo.org>
parents:
479
diff
changeset
|
226 |
638
63697f082e8a
browser side: fixed use of profile for listeners
Goffi <goffi@goffi.org>
parents:
637
diff
changeset
|
227 def onAvatarUpdate(self, jid_, hash_, profile): |
607
537649f6a2d0
browser side (blog, contact list): use of new listener mechanism to update avatar
Goffi <goffi@goffi.org>
parents:
606
diff
changeset
|
228 """Called on avatar update events |
537649f6a2d0
browser side (blog, contact list): use of new listener mechanism to update avatar
Goffi <goffi@goffi.org>
parents:
606
diff
changeset
|
229 |
537649f6a2d0
browser side (blog, contact list): use of new listener mechanism to update avatar
Goffi <goffi@goffi.org>
parents:
606
diff
changeset
|
230 @param jid_: jid of the entity with updated avatar |
537649f6a2d0
browser side (blog, contact list): use of new listener mechanism to update avatar
Goffi <goffi@goffi.org>
parents:
606
diff
changeset
|
231 @param hash_: hash of the avatar |
638
63697f082e8a
browser side: fixed use of profile for listeners
Goffi <goffi@goffi.org>
parents:
637
diff
changeset
|
232 @param profile: %(doc_profile)s |
607
537649f6a2d0
browser side (blog, contact list): use of new listener mechanism to update avatar
Goffi <goffi@goffi.org>
parents:
606
diff
changeset
|
233 """ |
687
3845a086f0b3
browser_side: update ContactList, Chat, ContactsPanel, ContactBox, ContactLabel to update the display using listeners as it is done in quick_frontend:
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
234 box = self._contacts_panel.getContactBox(jid_) |
3845a086f0b3
browser_side: update ContactList, Chat, ContactsPanel, ContactBox, ContactLabel to update the display using listeners as it is done in quick_frontend:
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
235 if box: |
3845a086f0b3
browser_side: update ContactList, Chat, ContactsPanel, ContactBox, ContactLabel to update the display using listeners as it is done in quick_frontend:
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
236 box.update() |
607
537649f6a2d0
browser side (blog, contact list): use of new listener mechanism to update avatar
Goffi <goffi@goffi.org>
parents:
606
diff
changeset
|
237 |
640
75715f5c95e3
browser side(contact list): added nick listener
Goffi <goffi@goffi.org>
parents:
639
diff
changeset
|
238 def onNickUpdate(self, jid_, new_nick, profile): |
687
3845a086f0b3
browser_side: update ContactList, Chat, ContactsPanel, ContactBox, ContactLabel to update the display using listeners as it is done in quick_frontend:
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
239 box = self._contacts_panel.getContactBox(jid_) |
3845a086f0b3
browser_side: update ContactList, Chat, ContactsPanel, ContactBox, ContactLabel to update the display using listeners as it is done in quick_frontend:
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
240 if box: |
3845a086f0b3
browser_side: update ContactList, Chat, ContactsPanel, ContactBox, ContactLabel to update the display using listeners as it is done in quick_frontend:
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
241 box.update() |
640
75715f5c95e3
browser side(contact list): added nick listener
Goffi <goffi@goffi.org>
parents:
639
diff
changeset
|
242 |
567
ee9c7bd266ad
browser_side: implements "Show offline contacts" and "Show empty groups" parameters
souliane <souliane@mailoo.org>
parents:
518
diff
changeset
|
243 def offlineContactsToShow(self): |
ee9c7bd266ad
browser_side: implements "Show offline contacts" and "Show empty groups" parameters
souliane <souliane@mailoo.org>
parents:
518
diff
changeset
|
244 """Tell if offline contacts should be visible according to the user settings |
ee9c7bd266ad
browser_side: implements "Show offline contacts" and "Show empty groups" parameters
souliane <souliane@mailoo.org>
parents:
518
diff
changeset
|
245 |
ee9c7bd266ad
browser_side: implements "Show offline contacts" and "Show empty groups" parameters
souliane <souliane@mailoo.org>
parents:
518
diff
changeset
|
246 @return: boolean |
ee9c7bd266ad
browser_side: implements "Show offline contacts" and "Show empty groups" parameters
souliane <souliane@mailoo.org>
parents:
518
diff
changeset
|
247 """ |
633
617f7a5c5312
browser side (contact list): use of c.bool for parameter conversion
Goffi <goffi@goffi.org>
parents:
630
diff
changeset
|
248 return C.bool(self.host.getCachedParam('General', C.SHOW_OFFLINE_CONTACTS)) |
567
ee9c7bd266ad
browser_side: implements "Show offline contacts" and "Show empty groups" parameters
souliane <souliane@mailoo.org>
parents:
518
diff
changeset
|
249 |
ee9c7bd266ad
browser_side: implements "Show offline contacts" and "Show empty groups" parameters
souliane <souliane@mailoo.org>
parents:
518
diff
changeset
|
250 def emtyGroupsToShow(self): |
ee9c7bd266ad
browser_side: implements "Show offline contacts" and "Show empty groups" parameters
souliane <souliane@mailoo.org>
parents:
518
diff
changeset
|
251 """Tell if empty groups should be visible according to the user settings |
ee9c7bd266ad
browser_side: implements "Show offline contacts" and "Show empty groups" parameters
souliane <souliane@mailoo.org>
parents:
518
diff
changeset
|
252 |
ee9c7bd266ad
browser_side: implements "Show offline contacts" and "Show empty groups" parameters
souliane <souliane@mailoo.org>
parents:
518
diff
changeset
|
253 @return: boolean |
ee9c7bd266ad
browser_side: implements "Show offline contacts" and "Show empty groups" parameters
souliane <souliane@mailoo.org>
parents:
518
diff
changeset
|
254 """ |
633
617f7a5c5312
browser side (contact list): use of c.bool for parameter conversion
Goffi <goffi@goffi.org>
parents:
630
diff
changeset
|
255 return C.bool(self.host.getCachedParam('General', C.SHOW_EMPTY_GROUPS)) |
567
ee9c7bd266ad
browser_side: implements "Show offline contacts" and "Show empty groups" parameters
souliane <souliane@mailoo.org>
parents:
518
diff
changeset
|
256 |
639
8da4735a3c81
browser side (contact list): fixed forgotten profile argument in presence listener
Goffi <goffi@goffi.org>
parents:
638
diff
changeset
|
257 def onPresenceUpdate(self, entity, show, priority, statuses, profile): |
8da4735a3c81
browser side (contact list): fixed forgotten profile argument in presence listener
Goffi <goffi@goffi.org>
parents:
638
diff
changeset
|
258 QuickContactList.onPresenceUpdate(self, entity, show, priority, statuses, profile) |
687
3845a086f0b3
browser_side: update ContactList, Chat, ContactsPanel, ContactBox, ContactLabel to update the display using listeners as it is done in quick_frontend:
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
259 box = self._contacts_panel.getContactBox(entity) |
3845a086f0b3
browser_side: update ContactList, Chat, ContactsPanel, ContactBox, ContactLabel to update the display using listeners as it is done in quick_frontend:
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
260 if box: # box doesn't exist for MUC bare entity, don't create it |
3845a086f0b3
browser_side: update ContactList, Chat, ContactsPanel, ContactBox, ContactLabel to update the display using listeners as it is done in quick_frontend:
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
261 box.update() |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
262 |
600
32dbbc941123
browser_side: fixes the contact group manager
souliane <souliane@mailoo.org>
parents:
594
diff
changeset
|
263 |
601
49ccfc22116c
browser_side: fixes class JIDList, remove JIDSet and JIDDict which are actually not needed
souliane <souliane@mailoo.org>
parents:
600
diff
changeset
|
264 class JIDList(list): |
49ccfc22116c
browser_side: fixes class JIDList, remove JIDSet and JIDDict which are actually not needed
souliane <souliane@mailoo.org>
parents:
600
diff
changeset
|
265 """JID-friendly list implementation for Pyjamas""" |
600
32dbbc941123
browser_side: fixes the contact group manager
souliane <souliane@mailoo.org>
parents:
594
diff
changeset
|
266 |
32dbbc941123
browser_side: fixes the contact group manager
souliane <souliane@mailoo.org>
parents:
594
diff
changeset
|
267 def __contains__(self, item): |
601
49ccfc22116c
browser_side: fixes class JIDList, remove JIDSet and JIDDict which are actually not needed
souliane <souliane@mailoo.org>
parents:
600
diff
changeset
|
268 """Tells if the list contains the given item. |
600
32dbbc941123
browser_side: fixes the contact group manager
souliane <souliane@mailoo.org>
parents:
594
diff
changeset
|
269 |
601
49ccfc22116c
browser_side: fixes class JIDList, remove JIDSet and JIDDict which are actually not needed
souliane <souliane@mailoo.org>
parents:
600
diff
changeset
|
270 @param item (object): element to check |
49ccfc22116c
browser_side: fixes class JIDList, remove JIDSet and JIDDict which are actually not needed
souliane <souliane@mailoo.org>
parents:
600
diff
changeset
|
271 @return: bool |
49ccfc22116c
browser_side: fixes class JIDList, remove JIDSet and JIDDict which are actually not needed
souliane <souliane@mailoo.org>
parents:
600
diff
changeset
|
272 """ |
49ccfc22116c
browser_side: fixes class JIDList, remove JIDSet and JIDDict which are actually not needed
souliane <souliane@mailoo.org>
parents:
600
diff
changeset
|
273 # Since our JID doesn't inherit from str/unicode, without this method |
49ccfc22116c
browser_side: fixes class JIDList, remove JIDSet and JIDDict which are actually not needed
souliane <souliane@mailoo.org>
parents:
600
diff
changeset
|
274 # the test would return True only when the objects references are the |
49ccfc22116c
browser_side: fixes class JIDList, remove JIDSet and JIDDict which are actually not needed
souliane <souliane@mailoo.org>
parents:
600
diff
changeset
|
275 # same. Tests have shown that the other iterable "set" and "dict" don't |
49ccfc22116c
browser_side: fixes class JIDList, remove JIDSet and JIDDict which are actually not needed
souliane <souliane@mailoo.org>
parents:
600
diff
changeset
|
276 # need this hack to reproduce the Twisted's behavior. |
49ccfc22116c
browser_side: fixes class JIDList, remove JIDSet and JIDDict which are actually not needed
souliane <souliane@mailoo.org>
parents:
600
diff
changeset
|
277 for other in self: |
49ccfc22116c
browser_side: fixes class JIDList, remove JIDSet and JIDDict which are actually not needed
souliane <souliane@mailoo.org>
parents:
600
diff
changeset
|
278 if other == item: |
49ccfc22116c
browser_side: fixes class JIDList, remove JIDSet and JIDDict which are actually not needed
souliane <souliane@mailoo.org>
parents:
600
diff
changeset
|
279 return True |
49ccfc22116c
browser_side: fixes class JIDList, remove JIDSet and JIDDict which are actually not needed
souliane <souliane@mailoo.org>
parents:
600
diff
changeset
|
280 return False |
748
0d5889b9313c
browser side: fixed group panel drop and contact_list click on GroupLabel
Goffi <goffi@goffi.org>
parents:
733
diff
changeset
|
281 |
733
66beef5b943d
browser_side: add functions JIDSet and JIDDict
souliane <souliane@mailoo.org>
parents:
716
diff
changeset
|
282 def index(self, item): |
66beef5b943d
browser_side: add functions JIDSet and JIDDict
souliane <souliane@mailoo.org>
parents:
716
diff
changeset
|
283 i = 0 |
66beef5b943d
browser_side: add functions JIDSet and JIDDict
souliane <souliane@mailoo.org>
parents:
716
diff
changeset
|
284 for other in self: |
66beef5b943d
browser_side: add functions JIDSet and JIDDict
souliane <souliane@mailoo.org>
parents:
716
diff
changeset
|
285 if other == item: |
66beef5b943d
browser_side: add functions JIDSet and JIDDict
souliane <souliane@mailoo.org>
parents:
716
diff
changeset
|
286 return i |
66beef5b943d
browser_side: add functions JIDSet and JIDDict
souliane <souliane@mailoo.org>
parents:
716
diff
changeset
|
287 i += 1 |
66beef5b943d
browser_side: add functions JIDSet and JIDDict
souliane <souliane@mailoo.org>
parents:
716
diff
changeset
|
288 raise ValueError("JIDList.index(%(item)s): %(item)s not in list" % {"item": item}) |
66beef5b943d
browser_side: add functions JIDSet and JIDDict
souliane <souliane@mailoo.org>
parents:
716
diff
changeset
|
289 |
66beef5b943d
browser_side: add functions JIDSet and JIDDict
souliane <souliane@mailoo.org>
parents:
716
diff
changeset
|
290 class JIDSet(set): |
66beef5b943d
browser_side: add functions JIDSet and JIDDict
souliane <souliane@mailoo.org>
parents:
716
diff
changeset
|
291 """JID set implementation for Pyjamas""" |
66beef5b943d
browser_side: add functions JIDSet and JIDDict
souliane <souliane@mailoo.org>
parents:
716
diff
changeset
|
292 |
66beef5b943d
browser_side: add functions JIDSet and JIDDict
souliane <souliane@mailoo.org>
parents:
716
diff
changeset
|
293 def __contains__(self, item): |
66beef5b943d
browser_side: add functions JIDSet and JIDDict
souliane <souliane@mailoo.org>
parents:
716
diff
changeset
|
294 return __containsJID(self, item) |
66beef5b943d
browser_side: add functions JIDSet and JIDDict
souliane <souliane@mailoo.org>
parents:
716
diff
changeset
|
295 |
66beef5b943d
browser_side: add functions JIDSet and JIDDict
souliane <souliane@mailoo.org>
parents:
716
diff
changeset
|
296 |
66beef5b943d
browser_side: add functions JIDSet and JIDDict
souliane <souliane@mailoo.org>
parents:
716
diff
changeset
|
297 class JIDDict(dict): |
66beef5b943d
browser_side: add functions JIDSet and JIDDict
souliane <souliane@mailoo.org>
parents:
716
diff
changeset
|
298 """JID dict implementation for Pyjamas (a dict with JID keys)""" |
66beef5b943d
browser_side: add functions JIDSet and JIDDict
souliane <souliane@mailoo.org>
parents:
716
diff
changeset
|
299 |
66beef5b943d
browser_side: add functions JIDSet and JIDDict
souliane <souliane@mailoo.org>
parents:
716
diff
changeset
|
300 def __contains__(self, item): |
66beef5b943d
browser_side: add functions JIDSet and JIDDict
souliane <souliane@mailoo.org>
parents:
716
diff
changeset
|
301 return __containsJID(self, item) |
66beef5b943d
browser_side: add functions JIDSet and JIDDict
souliane <souliane@mailoo.org>
parents:
716
diff
changeset
|
302 |
66beef5b943d
browser_side: add functions JIDSet and JIDDict
souliane <souliane@mailoo.org>
parents:
716
diff
changeset
|
303 def keys(self): |
66beef5b943d
browser_side: add functions JIDSet and JIDDict
souliane <souliane@mailoo.org>
parents:
716
diff
changeset
|
304 return JIDSet(dict.keys(self)) |
66beef5b943d
browser_side: add functions JIDSet and JIDDict
souliane <souliane@mailoo.org>
parents:
716
diff
changeset
|
305 |
66beef5b943d
browser_side: add functions JIDSet and JIDDict
souliane <souliane@mailoo.org>
parents:
716
diff
changeset
|
306 |
66beef5b943d
browser_side: add functions JIDSet and JIDDict
souliane <souliane@mailoo.org>
parents:
716
diff
changeset
|
307 def __containsJID(iterable, item): |
66beef5b943d
browser_side: add functions JIDSet and JIDDict
souliane <souliane@mailoo.org>
parents:
716
diff
changeset
|
308 """Tells if the given item is in the iterable, works with JID. |
66beef5b943d
browser_side: add functions JIDSet and JIDDict
souliane <souliane@mailoo.org>
parents:
716
diff
changeset
|
309 |
66beef5b943d
browser_side: add functions JIDSet and JIDDict
souliane <souliane@mailoo.org>
parents:
716
diff
changeset
|
310 @param iterable(object): list, set or another iterable object |
66beef5b943d
browser_side: add functions JIDSet and JIDDict
souliane <souliane@mailoo.org>
parents:
716
diff
changeset
|
311 @param item (object): element |
66beef5b943d
browser_side: add functions JIDSet and JIDDict
souliane <souliane@mailoo.org>
parents:
716
diff
changeset
|
312 @return: bool |
66beef5b943d
browser_side: add functions JIDSet and JIDDict
souliane <souliane@mailoo.org>
parents:
716
diff
changeset
|
313 """ |
66beef5b943d
browser_side: add functions JIDSet and JIDDict
souliane <souliane@mailoo.org>
parents:
716
diff
changeset
|
314 # Pyjamas JID-friendly implementation of the "in" operator. Since our JID |
66beef5b943d
browser_side: add functions JIDSet and JIDDict
souliane <souliane@mailoo.org>
parents:
716
diff
changeset
|
315 # doesn't inherit from str, without this method the test would return True |
66beef5b943d
browser_side: add functions JIDSet and JIDDict
souliane <souliane@mailoo.org>
parents:
716
diff
changeset
|
316 # only when the objects references are the same. |
66beef5b943d
browser_side: add functions JIDSet and JIDDict
souliane <souliane@mailoo.org>
parents:
716
diff
changeset
|
317 if isinstance(item, jid.JID): |
66beef5b943d
browser_side: add functions JIDSet and JIDDict
souliane <souliane@mailoo.org>
parents:
716
diff
changeset
|
318 return hash(item) in [hash(other) for other in iterable if isinstance(other, jid.JID)] |
66beef5b943d
browser_side: add functions JIDSet and JIDDict
souliane <souliane@mailoo.org>
parents:
716
diff
changeset
|
319 return super(type(iterable), iterable).__contains__(iterable, item) |