Mercurial > libervia-web
annotate src/browser/sat_browser/contact_list.py @ 645:122b4483dac4 frontends_multi_profiles
browser side: restored infoDialog for headline messages from server
author | Goffi <goffi@goffi.org> |
---|---|
date | Wed, 25 Feb 2015 19:40:23 +0100 |
parents | f5145881723a |
children | e0021d571eef |
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 |
340 | 5 # Copyright (C) 2011, 2012, 2013, 2014 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 |
62 | 29 from pyjamas.ui.HTML import HTML |
480
50b286866739
browser side: display avatars in the contact panel
souliane <souliane@mailoo.org>
parents:
479
diff
changeset
|
30 from pyjamas.ui.Image import Image |
2
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
31 from pyjamas import Window |
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
32 from pyjamas import DOM |
449
981ed669d3b3
/!\ reorganize all the file hierarchy, move the code and launching script to src:
souliane <souliane@mailoo.org>
parents:
439
diff
changeset
|
33 from __pyjamas__ import doc |
2
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
34 |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
35 from sat_frontends.tools import jid |
480
50b286866739
browser side: display avatars in the contact panel
souliane <souliane@mailoo.org>
parents:
479
diff
changeset
|
36 from constants import Const as C |
467 | 37 import base_widget |
38 import html_tools | |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
39 import chat |
616
1c0d5a87c554
browser_side: add and use method displayWidget to harmonize widget's management in Libervia (not completely done, there are some issues)
souliane <souliane@mailoo.org>
parents:
614
diff
changeset
|
40 import blog |
2
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
41 |
242
a25aa882e09a
browser_side: add context menu for contact:
souliane <souliane@mailoo.org>
parents:
230
diff
changeset
|
42 |
614
14bdf5394ae9
browser side: fixed jid's public blog menu
Goffi <goffi@goffi.org>
parents:
608
diff
changeset
|
43 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
|
44 |
14bdf5394ae9
browser side: fixed jid's public blog menu
Goffi <goffi@goffi.org>
parents:
608
diff
changeset
|
45 |
510
db3436c85fb1
browser_side: the status menu is now based on GenericMenuBar instead of PopupMenuPanel
souliane <souliane@mailoo.org>
parents:
498
diff
changeset
|
46 def buildPresenceStyle(presence, base_style=None): |
db3436c85fb1
browser_side: the status menu is now based on GenericMenuBar instead of PopupMenuPanel
souliane <souliane@mailoo.org>
parents:
498
diff
changeset
|
47 """Return the CSS classname to be used for displaying the given presence information. |
617
5baca9d46c34
browser_side: add/improve some docstrings
souliane <souliane@mailoo.org>
parents:
616
diff
changeset
|
48 |
5baca9d46c34
browser_side: add/improve some docstrings
souliane <souliane@mailoo.org>
parents:
616
diff
changeset
|
49 @param presence (unicode): presence is a value in ('', 'chat', 'away', 'dnd', 'xa') |
5baca9d46c34
browser_side: add/improve some docstrings
souliane <souliane@mailoo.org>
parents:
616
diff
changeset
|
50 @param base_style (unicode): base classname |
5baca9d46c34
browser_side: add/improve some docstrings
souliane <souliane@mailoo.org>
parents:
616
diff
changeset
|
51 @return: unicode |
510
db3436c85fb1
browser_side: the status menu is now based on GenericMenuBar instead of PopupMenuPanel
souliane <souliane@mailoo.org>
parents:
498
diff
changeset
|
52 """ |
db3436c85fb1
browser_side: the status menu is now based on GenericMenuBar instead of PopupMenuPanel
souliane <souliane@mailoo.org>
parents:
498
diff
changeset
|
53 if not base_style: |
db3436c85fb1
browser_side: the status menu is now based on GenericMenuBar instead of PopupMenuPanel
souliane <souliane@mailoo.org>
parents:
498
diff
changeset
|
54 base_style = "contactLabel" |
db3436c85fb1
browser_side: the status menu is now based on GenericMenuBar instead of PopupMenuPanel
souliane <souliane@mailoo.org>
parents:
498
diff
changeset
|
55 return '%s-%s' % (base_style, presence or 'connected') |
db3436c85fb1
browser_side: the status menu is now based on GenericMenuBar instead of PopupMenuPanel
souliane <souliane@mailoo.org>
parents:
498
diff
changeset
|
56 |
db3436c85fb1
browser_side: the status menu is now based on GenericMenuBar instead of PopupMenuPanel
souliane <souliane@mailoo.org>
parents:
498
diff
changeset
|
57 |
db3436c85fb1
browser_side: the status menu is now based on GenericMenuBar instead of PopupMenuPanel
souliane <souliane@mailoo.org>
parents:
498
diff
changeset
|
58 def setPresenceStyle(widget, presence, base_style=None): |
370
30d03d9f07e4
browser_side: refactorization of the file tools.py:
souliane <souliane@mailoo.org>
parents:
340
diff
changeset
|
59 """ |
30d03d9f07e4
browser_side: refactorization of the file tools.py:
souliane <souliane@mailoo.org>
parents:
340
diff
changeset
|
60 Set the CSS style of a contact's element according to its presence. |
479
c21ea1fe3593
browser side: small refactoring to prepare displaying avatars in the contact panel
souliane <souliane@mailoo.org>
parents:
467
diff
changeset
|
61 |
c21ea1fe3593
browser side: small refactoring to prepare displaying avatars in the contact panel
souliane <souliane@mailoo.org>
parents:
467
diff
changeset
|
62 @param widget (Widget): the UI element of the contact |
617
5baca9d46c34
browser_side: add/improve some docstrings
souliane <souliane@mailoo.org>
parents:
616
diff
changeset
|
63 @param presence (unicode): a value in ("", "chat", "away", "dnd", "xa"). |
5baca9d46c34
browser_side: add/improve some docstrings
souliane <souliane@mailoo.org>
parents:
616
diff
changeset
|
64 @param base_style (unicode): the base name of the style to apply |
370
30d03d9f07e4
browser_side: refactorization of the file tools.py:
souliane <souliane@mailoo.org>
parents:
340
diff
changeset
|
65 """ |
479
c21ea1fe3593
browser side: small refactoring to prepare displaying avatars in the contact panel
souliane <souliane@mailoo.org>
parents:
467
diff
changeset
|
66 if not hasattr(widget, 'presence_style'): |
c21ea1fe3593
browser side: small refactoring to prepare displaying avatars in the contact panel
souliane <souliane@mailoo.org>
parents:
467
diff
changeset
|
67 widget.presence_style = None |
510
db3436c85fb1
browser_side: the status menu is now based on GenericMenuBar instead of PopupMenuPanel
souliane <souliane@mailoo.org>
parents:
498
diff
changeset
|
68 style = buildPresenceStyle(presence, base_style) |
479
c21ea1fe3593
browser side: small refactoring to prepare displaying avatars in the contact panel
souliane <souliane@mailoo.org>
parents:
467
diff
changeset
|
69 if style == widget.presence_style: |
370
30d03d9f07e4
browser_side: refactorization of the file tools.py:
souliane <souliane@mailoo.org>
parents:
340
diff
changeset
|
70 return |
479
c21ea1fe3593
browser side: small refactoring to prepare displaying avatars in the contact panel
souliane <souliane@mailoo.org>
parents:
467
diff
changeset
|
71 if widget.presence_style is not None: |
c21ea1fe3593
browser side: small refactoring to prepare displaying avatars in the contact panel
souliane <souliane@mailoo.org>
parents:
467
diff
changeset
|
72 widget.removeStyleName(widget.presence_style) |
c21ea1fe3593
browser side: small refactoring to prepare displaying avatars in the contact panel
souliane <souliane@mailoo.org>
parents:
467
diff
changeset
|
73 widget.addStyleName(style) |
c21ea1fe3593
browser side: small refactoring to prepare displaying avatars in the contact panel
souliane <souliane@mailoo.org>
parents:
467
diff
changeset
|
74 widget.presence_style = style |
370
30d03d9f07e4
browser_side: refactorization of the file tools.py:
souliane <souliane@mailoo.org>
parents:
340
diff
changeset
|
75 |
30d03d9f07e4
browser_side: refactorization of the file tools.py:
souliane <souliane@mailoo.org>
parents:
340
diff
changeset
|
76 |
467 | 77 class GroupLabel(base_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
|
78 def __init__(self, host, group): |
617
5baca9d46c34
browser_side: add/improve some docstrings
souliane <souliane@mailoo.org>
parents:
616
diff
changeset
|
79 """ |
5baca9d46c34
browser_side: add/improve some docstrings
souliane <souliane@mailoo.org>
parents:
616
diff
changeset
|
80 |
5baca9d46c34
browser_side: add/improve some docstrings
souliane <souliane@mailoo.org>
parents:
616
diff
changeset
|
81 @param host (SatWebFrontend) |
5baca9d46c34
browser_side: add/improve some docstrings
souliane <souliane@mailoo.org>
parents:
616
diff
changeset
|
82 @param group (unicode): group name |
5baca9d46c34
browser_side: add/improve some docstrings
souliane <souliane@mailoo.org>
parents:
616
diff
changeset
|
83 """ |
16
099c05a0dcab
browser side: microblog panel improvments
Goffi <goffi@goffi.org>
parents:
13
diff
changeset
|
84 self.group = group |
451 | 85 Label.__init__(self, group) # , Element=DOM.createElement('div') |
16
099c05a0dcab
browser side: microblog panel improvments
Goffi <goffi@goffi.org>
parents:
13
diff
changeset
|
86 self.setStyleName('group') |
594
a099990f77a6
browser side: border widgets are now visible on drag start + they float right or left in the cell
Goffi <goffi@goffi.org>
parents:
592
diff
changeset
|
87 base_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
|
88 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
|
89 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
|
90 |
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
|
91 def onClick(self, sender): |
616
1c0d5a87c554
browser_side: add and use method displayWidget to harmonize widget's management in Libervia (not completely done, there are some issues)
souliane <souliane@mailoo.org>
parents:
614
diff
changeset
|
92 self.host.displayWidget(blog.MicroblogPanel, self.group) |
230
266e9678eec0
browser_side: added the flag REUSE_EXISTING_LIBERVIA_WIDGETS
souliane <souliane@mailoo.org>
parents:
226
diff
changeset
|
93 |
16
099c05a0dcab
browser side: microblog panel improvments
Goffi <goffi@goffi.org>
parents:
13
diff
changeset
|
94 |
485
5911f71acc80
browser side: move contacts list's avatar from right to top
souliane <souliane@mailoo.org>
parents:
480
diff
changeset
|
95 class ContactLabel(HTML): |
634
16a5da120b7f
browser side (contact list): Contact list improvments:
Goffi <goffi@goffi.org>
parents:
633
diff
changeset
|
96 """Display a contact in HTML, selecting best display (jid/nick/etc)""" |
16a5da120b7f
browser side (contact list): Contact list improvments:
Goffi <goffi@goffi.org>
parents:
633
diff
changeset
|
97 |
16a5da120b7f
browser side (contact list): Contact list improvments:
Goffi <goffi@goffi.org>
parents:
633
diff
changeset
|
98 def __init__(self, host, jid_): |
16a5da120b7f
browser side (contact list): Contact list improvments:
Goffi <goffi@goffi.org>
parents:
633
diff
changeset
|
99 # TODO: add a listener for nick changes |
62 | 100 HTML.__init__(self) |
634
16a5da120b7f
browser side (contact list): Contact list improvments:
Goffi <goffi@goffi.org>
parents:
633
diff
changeset
|
101 self.host = host |
16a5da120b7f
browser side (contact list): Contact list improvments:
Goffi <goffi@goffi.org>
parents:
633
diff
changeset
|
102 self.jid = jid_.bare |
16a5da120b7f
browser side (contact list): Contact list improvments:
Goffi <goffi@goffi.org>
parents:
633
diff
changeset
|
103 self.nick = self.host.contact_lists[C.PROF_KEY_NONE].getCache(self.jid, "nick") |
16a5da120b7f
browser side (contact list): Contact list improvments:
Goffi <goffi@goffi.org>
parents:
633
diff
changeset
|
104 self.alert = False |
479
c21ea1fe3593
browser side: small refactoring to prepare displaying avatars in the contact panel
souliane <souliane@mailoo.org>
parents:
467
diff
changeset
|
105 self.refresh() |
c21ea1fe3593
browser side: small refactoring to prepare displaying avatars in the contact panel
souliane <souliane@mailoo.org>
parents:
467
diff
changeset
|
106 self.setStyleName('contactLabel') |
2
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
107 |
479
c21ea1fe3593
browser side: small refactoring to prepare displaying avatars in the contact panel
souliane <souliane@mailoo.org>
parents:
467
diff
changeset
|
108 def refresh(self): |
634
16a5da120b7f
browser side (contact list): Contact list improvments:
Goffi <goffi@goffi.org>
parents:
633
diff
changeset
|
109 alert_html = "<strong>(*)</strong> " if self.alert else "" |
16a5da120b7f
browser side (contact list): Contact list improvments:
Goffi <goffi@goffi.org>
parents:
633
diff
changeset
|
110 contact_html = html_tools.html_sanitize(self.nick or unicode(self.jid)) |
16a5da120b7f
browser side (contact list): Contact list improvments:
Goffi <goffi@goffi.org>
parents:
633
diff
changeset
|
111 html = "%(alert)s%(contact)s" % {'alert': alert_html, |
16a5da120b7f
browser side (contact list): Contact list improvments:
Goffi <goffi@goffi.org>
parents:
633
diff
changeset
|
112 'contact': contact_html} |
16a5da120b7f
browser side (contact list): Contact list improvments:
Goffi <goffi@goffi.org>
parents:
633
diff
changeset
|
113 self.setHTML(html) |
62 | 114 |
640
75715f5c95e3
browser side(contact list): added nick listener
Goffi <goffi@goffi.org>
parents:
639
diff
changeset
|
115 def updateNick(self, new_nick): |
75715f5c95e3
browser side(contact list): added nick listener
Goffi <goffi@goffi.org>
parents:
639
diff
changeset
|
116 """Change the current nick |
75715f5c95e3
browser side(contact list): added nick listener
Goffi <goffi@goffi.org>
parents:
639
diff
changeset
|
117 |
75715f5c95e3
browser side(contact list): added nick listener
Goffi <goffi@goffi.org>
parents:
639
diff
changeset
|
118 @param new_nick(unicode): new nick to use |
75715f5c95e3
browser side(contact list): added nick listener
Goffi <goffi@goffi.org>
parents:
639
diff
changeset
|
119 """ |
75715f5c95e3
browser side(contact list): added nick listener
Goffi <goffi@goffi.org>
parents:
639
diff
changeset
|
120 self.nick = new_nick |
75715f5c95e3
browser side(contact list): added nick listener
Goffi <goffi@goffi.org>
parents:
639
diff
changeset
|
121 self.refresh() |
75715f5c95e3
browser side(contact list): added nick listener
Goffi <goffi@goffi.org>
parents:
639
diff
changeset
|
122 |
634
16a5da120b7f
browser side (contact list): Contact list improvments:
Goffi <goffi@goffi.org>
parents:
633
diff
changeset
|
123 def setAlert(self, alert): |
16a5da120b7f
browser side (contact list): Contact list improvments:
Goffi <goffi@goffi.org>
parents:
633
diff
changeset
|
124 """Show a visual indicator |
479
c21ea1fe3593
browser side: small refactoring to prepare displaying avatars in the contact panel
souliane <souliane@mailoo.org>
parents:
467
diff
changeset
|
125 |
634
16a5da120b7f
browser side (contact list): Contact list improvments:
Goffi <goffi@goffi.org>
parents:
633
diff
changeset
|
126 @param alert: True if alert must be shown |
16a5da120b7f
browser side (contact list): Contact list improvments:
Goffi <goffi@goffi.org>
parents:
633
diff
changeset
|
127 """ |
16a5da120b7f
browser side (contact list): Contact list improvments:
Goffi <goffi@goffi.org>
parents:
633
diff
changeset
|
128 self.alert = alert |
479
c21ea1fe3593
browser side: small refactoring to prepare displaying avatars in the contact panel
souliane <souliane@mailoo.org>
parents:
467
diff
changeset
|
129 self.refresh() |
62 | 130 |
230
266e9678eec0
browser_side: added the flag REUSE_EXISTING_LIBERVIA_WIDGETS
souliane <souliane@mailoo.org>
parents:
226
diff
changeset
|
131 |
495
587fe75d1b16
browser_side: handle menus of type ROOM, SINGLE and ROSTER_JID
souliane <souliane@mailoo.org>
parents:
485
diff
changeset
|
132 class ContactMenuBar(base_widget.WidgetMenuBar): |
587fe75d1b16
browser_side: handle menus of type ROOM, SINGLE and ROSTER_JID
souliane <souliane@mailoo.org>
parents:
485
diff
changeset
|
133 |
587fe75d1b16
browser_side: handle menus of type ROOM, SINGLE and ROSTER_JID
souliane <souliane@mailoo.org>
parents:
485
diff
changeset
|
134 def onBrowserEvent(self, event): |
587fe75d1b16
browser_side: handle menus of type ROOM, SINGLE and ROSTER_JID
souliane <souliane@mailoo.org>
parents:
485
diff
changeset
|
135 base_widget.WidgetMenuBar.onBrowserEvent(self, event) |
587fe75d1b16
browser_side: handle menus of type ROOM, SINGLE and ROSTER_JID
souliane <souliane@mailoo.org>
parents:
485
diff
changeset
|
136 event.stopPropagation() # prevent opening the chat dialog |
587fe75d1b16
browser_side: handle menus of type ROOM, SINGLE and ROSTER_JID
souliane <souliane@mailoo.org>
parents:
485
diff
changeset
|
137 |
578
668bb04e9708
browser_side: set the roster contact's contextual menu on the avatar (no extra button)
souliane <souliane@mailoo.org>
parents:
574
diff
changeset
|
138 @classmethod |
668bb04e9708
browser_side: set the roster contact's contextual menu on the avatar (no extra button)
souliane <souliane@mailoo.org>
parents:
574
diff
changeset
|
139 def getCategoryHTML(cls, menu_name_i18n, type_): |
606
7af8f4ab3675
browser side: fixed avatar getting + better DEFAULT/EMPTY avatars constants + use of jid.JID for microblog's author
Goffi <goffi@goffi.org>
parents:
600
diff
changeset
|
140 return '<img src="%s"/>' % C.DEFAULT_AVATAR_URL |
578
668bb04e9708
browser_side: set the roster contact's contextual menu on the avatar (no extra button)
souliane <souliane@mailoo.org>
parents:
574
diff
changeset
|
141 |
668bb04e9708
browser_side: set the roster contact's contextual menu on the avatar (no extra button)
souliane <souliane@mailoo.org>
parents:
574
diff
changeset
|
142 def setUrl(self, url): |
668bb04e9708
browser_side: set the roster contact's contextual menu on the avatar (no extra button)
souliane <souliane@mailoo.org>
parents:
574
diff
changeset
|
143 """Set the URL of the contact avatar.""" |
668bb04e9708
browser_side: set the roster contact's contextual menu on the avatar (no extra button)
souliane <souliane@mailoo.org>
parents:
574
diff
changeset
|
144 self.items[0].setHTML('<img src="%s" />' % url) |
668bb04e9708
browser_side: set the roster contact's contextual menu on the avatar (no extra button)
souliane <souliane@mailoo.org>
parents:
574
diff
changeset
|
145 |
495
587fe75d1b16
browser_side: handle menus of type ROOM, SINGLE and ROSTER_JID
souliane <souliane@mailoo.org>
parents:
485
diff
changeset
|
146 |
587fe75d1b16
browser_side: handle menus of type ROOM, SINGLE and ROSTER_JID
souliane <souliane@mailoo.org>
parents:
485
diff
changeset
|
147 class ContactBox(VerticalPanel, ClickHandler, base_widget.DragLabel): |
587fe75d1b16
browser_side: handle menus of type ROOM, SINGLE and ROSTER_JID
souliane <souliane@mailoo.org>
parents:
485
diff
changeset
|
148 |
634
16a5da120b7f
browser side (contact list): Contact list improvments:
Goffi <goffi@goffi.org>
parents:
633
diff
changeset
|
149 def __init__(self, parent, jid_): |
617
5baca9d46c34
browser_side: add/improve some docstrings
souliane <souliane@mailoo.org>
parents:
616
diff
changeset
|
150 """ |
634
16a5da120b7f
browser side (contact list): Contact list improvments:
Goffi <goffi@goffi.org>
parents:
633
diff
changeset
|
151 @param parent (ContactPanel): ContactPanel hosting this box |
617
5baca9d46c34
browser_side: add/improve some docstrings
souliane <souliane@mailoo.org>
parents:
616
diff
changeset
|
152 @param jid_ (jid.JID): contact JID |
5baca9d46c34
browser_side: add/improve some docstrings
souliane <souliane@mailoo.org>
parents:
616
diff
changeset
|
153 """ |
485
5911f71acc80
browser side: move contacts list's avatar from right to top
souliane <souliane@mailoo.org>
parents:
480
diff
changeset
|
154 VerticalPanel.__init__(self, StyleName='contactBox', VerticalAlignment='middle') |
634
16a5da120b7f
browser side (contact list): Contact list improvments:
Goffi <goffi@goffi.org>
parents:
633
diff
changeset
|
155 ClickHandler.__init__(self) |
16a5da120b7f
browser side (contact list): Contact list improvments:
Goffi <goffi@goffi.org>
parents:
633
diff
changeset
|
156 base_widget.DragLabel.__init__(self, jid_, "CONTACT", parent.host) |
16a5da120b7f
browser side (contact list): Contact list improvments:
Goffi <goffi@goffi.org>
parents:
633
diff
changeset
|
157 self.jid = jid_.bare |
16a5da120b7f
browser side (contact list): Contact list improvments:
Goffi <goffi@goffi.org>
parents:
633
diff
changeset
|
158 self.label = ContactLabel(parent.host, self.jid) |
16a5da120b7f
browser side (contact list): Contact list improvments:
Goffi <goffi@goffi.org>
parents:
633
diff
changeset
|
159 self.avatar = ContactMenuBar(self, parent.host) if parent.handle_menu else Image() |
16a5da120b7f
browser side (contact list): Contact list improvments:
Goffi <goffi@goffi.org>
parents:
633
diff
changeset
|
160 self.updateAvatar(parent.host.getAvatarURL(self.jid)) |
578
668bb04e9708
browser_side: set the roster contact's contextual menu on the avatar (no extra button)
souliane <souliane@mailoo.org>
parents:
574
diff
changeset
|
161 self.add(self.avatar) |
480
50b286866739
browser side: display avatars in the contact panel
souliane <souliane@mailoo.org>
parents:
479
diff
changeset
|
162 self.add(self.label) |
634
16a5da120b7f
browser side (contact list): Contact list improvments:
Goffi <goffi@goffi.org>
parents:
633
diff
changeset
|
163 self.addClickListener(self) |
495
587fe75d1b16
browser_side: handle menus of type ROOM, SINGLE and ROSTER_JID
souliane <souliane@mailoo.org>
parents:
485
diff
changeset
|
164 |
498
60be99de3808
browser_side: menus refactorization + handle levels > 2
souliane <souliane@mailoo.org>
parents:
495
diff
changeset
|
165 def addMenus(self, menu_bar): |
614
14bdf5394ae9
browser side: fixed jid's public blog menu
Goffi <goffi@goffi.org>
parents:
608
diff
changeset
|
166 menu_bar.addCachedMenus(C.MENU_ROSTER_JID_CONTEXT, {'jid': unicode(self.jid)}) |
14bdf5394ae9
browser side: fixed jid's public blog menu
Goffi <goffi@goffi.org>
parents:
608
diff
changeset
|
167 menu_bar.addCachedMenus(C.MENU_JID_CONTEXT, {'jid': unicode(self.jid)}) |
480
50b286866739
browser side: display avatars in the contact panel
souliane <souliane@mailoo.org>
parents:
479
diff
changeset
|
168 |
634
16a5da120b7f
browser side (contact list): Contact list improvments:
Goffi <goffi@goffi.org>
parents:
633
diff
changeset
|
169 def setAlert(self, alert): |
16a5da120b7f
browser side (contact list): Contact list improvments:
Goffi <goffi@goffi.org>
parents:
633
diff
changeset
|
170 """Show a visual indicator |
480
50b286866739
browser side: display avatars in the contact panel
souliane <souliane@mailoo.org>
parents:
479
diff
changeset
|
171 |
634
16a5da120b7f
browser side (contact list): Contact list improvments:
Goffi <goffi@goffi.org>
parents:
633
diff
changeset
|
172 @param alert: True if alert indicator show be shown""" |
16a5da120b7f
browser side (contact list): Contact list improvments:
Goffi <goffi@goffi.org>
parents:
633
diff
changeset
|
173 self.label.setAlert(alert) |
480
50b286866739
browser side: display avatars in the contact panel
souliane <souliane@mailoo.org>
parents:
479
diff
changeset
|
174 |
50b286866739
browser side: display avatars in the contact panel
souliane <souliane@mailoo.org>
parents:
479
diff
changeset
|
175 def updateAvatar(self, url): |
578
668bb04e9708
browser_side: set the roster contact's contextual menu on the avatar (no extra button)
souliane <souliane@mailoo.org>
parents:
574
diff
changeset
|
176 """Update the avatar. |
480
50b286866739
browser side: display avatars in the contact panel
souliane <souliane@mailoo.org>
parents:
479
diff
changeset
|
177 |
617
5baca9d46c34
browser_side: add/improve some docstrings
souliane <souliane@mailoo.org>
parents:
616
diff
changeset
|
178 @param url (unicode): image url |
480
50b286866739
browser side: display avatars in the contact panel
souliane <souliane@mailoo.org>
parents:
479
diff
changeset
|
179 """ |
50b286866739
browser side: display avatars in the contact panel
souliane <souliane@mailoo.org>
parents:
479
diff
changeset
|
180 self.avatar.setUrl(url) |
50b286866739
browser side: display avatars in the contact panel
souliane <souliane@mailoo.org>
parents:
479
diff
changeset
|
181 |
640
75715f5c95e3
browser side(contact list): added nick listener
Goffi <goffi@goffi.org>
parents:
639
diff
changeset
|
182 def updateNick(self, new_nick): |
75715f5c95e3
browser side(contact list): added nick listener
Goffi <goffi@goffi.org>
parents:
639
diff
changeset
|
183 """Update the nickname. |
75715f5c95e3
browser side(contact list): added nick listener
Goffi <goffi@goffi.org>
parents:
639
diff
changeset
|
184 |
75715f5c95e3
browser side(contact list): added nick listener
Goffi <goffi@goffi.org>
parents:
639
diff
changeset
|
185 @param new_nick (unicode): new nickname to use |
75715f5c95e3
browser side(contact list): added nick listener
Goffi <goffi@goffi.org>
parents:
639
diff
changeset
|
186 """ |
75715f5c95e3
browser side(contact list): added nick listener
Goffi <goffi@goffi.org>
parents:
639
diff
changeset
|
187 self.label.updateNick(new_nick) |
75715f5c95e3
browser side(contact list): added nick listener
Goffi <goffi@goffi.org>
parents:
639
diff
changeset
|
188 |
485
5911f71acc80
browser side: move contacts list's avatar from right to top
souliane <souliane@mailoo.org>
parents:
480
diff
changeset
|
189 def onClick(self, sender): |
634
16a5da120b7f
browser side (contact list): Contact list improvments:
Goffi <goffi@goffi.org>
parents:
633
diff
changeset
|
190 try: |
16a5da120b7f
browser side (contact list): Contact list improvments:
Goffi <goffi@goffi.org>
parents:
633
diff
changeset
|
191 self.parent.onClick(self.jid) |
16a5da120b7f
browser side (contact list): Contact list improvments:
Goffi <goffi@goffi.org>
parents:
633
diff
changeset
|
192 except AttributeError: |
16a5da120b7f
browser side (contact list): Contact list improvments:
Goffi <goffi@goffi.org>
parents:
633
diff
changeset
|
193 pass |
16a5da120b7f
browser side (contact list): Contact list improvments:
Goffi <goffi@goffi.org>
parents:
633
diff
changeset
|
194 else: |
16a5da120b7f
browser side (contact list): Contact list improvments:
Goffi <goffi@goffi.org>
parents:
633
diff
changeset
|
195 self.setAlert(False) |
485
5911f71acc80
browser side: move contacts list's avatar from right to top
souliane <souliane@mailoo.org>
parents:
480
diff
changeset
|
196 |
480
50b286866739
browser side: display avatars in the contact panel
souliane <souliane@mailoo.org>
parents:
479
diff
changeset
|
197 |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
198 class GroupPanel(VerticalPanel): |
2
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
199 |
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
200 def __init__(self, parent): |
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
201 VerticalPanel.__init__(self) |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
202 self.setStyleName('groupPanel') |
2
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
203 self._parent = parent |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
204 self._groups = set() |
2
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
205 |
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
206 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
|
207 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
|
208 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
|
209 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
|
210 _item = GroupLabel(self._parent.host, group) |
2
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
211 _item.addMouseListener(self._parent) |
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
212 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
|
213 index = 0 |
459
36f27d1e64b2
browser_side: avoid warning "list comprehension redefines 'group' from line XXX"
souliane <souliane@mailoo.org>
parents:
455
diff
changeset
|
214 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
|
215 if group_ > group: |
da0487f0a2e7
browser_side: small changes to prepare the contact group manager:
souliane <souliane@mailoo.org>
parents:
252
diff
changeset
|
216 break |
da0487f0a2e7
browser_side: small changes to prepare the contact group manager:
souliane <souliane@mailoo.org>
parents:
252
diff
changeset
|
217 index += 1 |
da0487f0a2e7
browser_side: small changes to prepare the contact group manager:
souliane <souliane@mailoo.org>
parents:
252
diff
changeset
|
218 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
|
219 self._groups.add(group) |
55
d5266c41ca24
Roster list update, contact deletion + some refactoring
Goffi <goffi@goffi.org>
parents:
54
diff
changeset
|
220 |
d5266c41ca24
Roster list update, contact deletion + some refactoring
Goffi <goffi@goffi.org>
parents:
54
diff
changeset
|
221 def remove(self, group): |
d5266c41ca24
Roster list update, contact deletion + some refactoring
Goffi <goffi@goffi.org>
parents:
54
diff
changeset
|
222 for wid in self: |
d5266c41ca24
Roster list update, contact deletion + some refactoring
Goffi <goffi@goffi.org>
parents:
54
diff
changeset
|
223 if isinstance(wid, GroupLabel) and wid.group == group: |
d5266c41ca24
Roster list update, contact deletion + some refactoring
Goffi <goffi@goffi.org>
parents:
54
diff
changeset
|
224 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
|
225 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
|
226 return |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
227 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
|
228 |
ee9c7bd266ad
browser_side: implements "Show offline contacts" and "Show empty groups" parameters
souliane <souliane@mailoo.org>
parents:
518
diff
changeset
|
229 def getGroupBox(self, group): |
ee9c7bd266ad
browser_side: implements "Show offline contacts" and "Show empty groups" parameters
souliane <souliane@mailoo.org>
parents:
518
diff
changeset
|
230 """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
|
231 |
617
5baca9d46c34
browser_side: add/improve some docstrings
souliane <souliane@mailoo.org>
parents:
616
diff
changeset
|
232 @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
|
233 @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
|
234 for wid in self: |
ee9c7bd266ad
browser_side: implements "Show offline contacts" and "Show empty groups" parameters
souliane <souliane@mailoo.org>
parents:
518
diff
changeset
|
235 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
|
236 return wid |
ee9c7bd266ad
browser_side: implements "Show offline contacts" and "Show empty groups" parameters
souliane <souliane@mailoo.org>
parents:
518
diff
changeset
|
237 return None |
226
744426c2b699
browser_side, misc: better PEP8 compliance
souliane <souliane@mailoo.org>
parents:
200
diff
changeset
|
238 |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
239 def getGroups(self): |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
240 return self._groups |
242
a25aa882e09a
browser_side: add context menu for contact:
souliane <souliane@mailoo.org>
parents:
230
diff
changeset
|
241 |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
242 |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
243 class BaseContactsPanel(VerticalPanel): |
630 | 244 """ContactList graphic representation |
245 | |
246 Special features like popup menu panel or changing the contact states must be done in a sub-class. | |
247 """ | |
2
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
248 |
634
16a5da120b7f
browser side (contact list): Contact list improvments:
Goffi <goffi@goffi.org>
parents:
633
diff
changeset
|
249 def __init__(self, parent, handle_click=True, handle_menu=True): |
16a5da120b7f
browser side (contact list): Contact list improvments:
Goffi <goffi@goffi.org>
parents:
633
diff
changeset
|
250 """@param on_click (callable): click callback (used if ContactBox is created) |
16a5da120b7f
browser side (contact list): Contact list improvments:
Goffi <goffi@goffi.org>
parents:
633
diff
changeset
|
251 @param handle_menu (bool): if True, bind a popup menu to the avatar (used if ContactBox is created) |
16a5da120b7f
browser side (contact list): Contact list improvments:
Goffi <goffi@goffi.org>
parents:
633
diff
changeset
|
252 """ # FIXME |
2
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
253 VerticalPanel.__init__(self) |
634
16a5da120b7f
browser side (contact list): Contact list improvments:
Goffi <goffi@goffi.org>
parents:
633
diff
changeset
|
254 self._parent = parent |
16a5da120b7f
browser side (contact list): Contact list improvments:
Goffi <goffi@goffi.org>
parents:
633
diff
changeset
|
255 self.host = parent.host |
630 | 256 self._contacts = {} # entity jid to ContactBox map |
495
587fe75d1b16
browser_side: handle menus of type ROOM, SINGLE and ROSTER_JID
souliane <souliane@mailoo.org>
parents:
485
diff
changeset
|
257 self.click_listener = None |
587fe75d1b16
browser_side: handle menus of type ROOM, SINGLE and ROSTER_JID
souliane <souliane@mailoo.org>
parents:
485
diff
changeset
|
258 self.handle_menu = handle_menu |
242
a25aa882e09a
browser_side: add context menu for contact:
souliane <souliane@mailoo.org>
parents:
230
diff
changeset
|
259 |
495
587fe75d1b16
browser_side: handle menus of type ROOM, SINGLE and ROSTER_JID
souliane <souliane@mailoo.org>
parents:
485
diff
changeset
|
260 if handle_click: |
587fe75d1b16
browser_side: handle menus of type ROOM, SINGLE and ROSTER_JID
souliane <souliane@mailoo.org>
parents:
485
diff
changeset
|
261 def cb(contact_jid): |
634
16a5da120b7f
browser side (contact list): Contact list improvments:
Goffi <goffi@goffi.org>
parents:
633
diff
changeset
|
262 self.host.displayWidget(chat.Chat, contact_jid, type_=C.CHAT_ONE2ONE) |
16a5da120b7f
browser side (contact list): Contact list improvments:
Goffi <goffi@goffi.org>
parents:
633
diff
changeset
|
263 self.onClick = cb |
495
587fe75d1b16
browser_side: handle menus of type ROOM, SINGLE and ROSTER_JID
souliane <souliane@mailoo.org>
parents:
485
diff
changeset
|
264 |
630 | 265 def display(self, jids): |
266 """Display a contact in the list. | |
479
c21ea1fe3593
browser side: small refactoring to prepare displaying avatars in the contact panel
souliane <souliane@mailoo.org>
parents:
467
diff
changeset
|
267 |
630 | 268 @param jids (list[jid.JID]): jids to display (the order is kept) |
617
5baca9d46c34
browser_side: add/improve some docstrings
souliane <souliane@mailoo.org>
parents:
616
diff
changeset
|
269 @param name (unicode): optional name of the contact |
479
c21ea1fe3593
browser side: small refactoring to prepare displaying avatars in the contact panel
souliane <souliane@mailoo.org>
parents:
467
diff
changeset
|
270 """ |
630 | 271 # FIXME: we do a full clear and add boxes after, we should only remove recently hidden boxes and add new ones, and re-order |
272 current = [box.jid for box in self.children if isinstance(box, ContactBox)] | |
273 if current == jids: | |
274 # the display doesn't change | |
55
d5266c41ca24
Roster list update, contact deletion + some refactoring
Goffi <goffi@goffi.org>
parents:
54
diff
changeset
|
275 return |
630 | 276 self.clear() |
277 for jid_ in jids: | |
278 assert isinstance(jid_, jid.JID) | |
279 box = self.getContactBox(jid_) | |
280 VerticalPanel.append(self, box) | |
55
d5266c41ca24
Roster list update, contact deletion + some refactoring
Goffi <goffi@goffi.org>
parents:
54
diff
changeset
|
281 |
d5266c41ca24
Roster list update, contact deletion + some refactoring
Goffi <goffi@goffi.org>
parents:
54
diff
changeset
|
282 def isContactPresent(self, contact_jid): |
d5266c41ca24
Roster list update, contact deletion + some refactoring
Goffi <goffi@goffi.org>
parents:
54
diff
changeset
|
283 """Return True if a contact is present in the panel""" |
630 | 284 return contact_jid in self._contacts |
55
d5266c41ca24
Roster list update, contact deletion + some refactoring
Goffi <goffi@goffi.org>
parents:
54
diff
changeset
|
285 |
d5266c41ca24
Roster list update, contact deletion + some refactoring
Goffi <goffi@goffi.org>
parents:
54
diff
changeset
|
286 def getContacts(self): |
630 | 287 return self._contacts |
55
d5266c41ca24
Roster list update, contact deletion + some refactoring
Goffi <goffi@goffi.org>
parents:
54
diff
changeset
|
288 |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
289 def getContactBox(self, contact_jid): |
630 | 290 """get the Contactbox of a contact |
567
ee9c7bd266ad
browser_side: implements "Show offline contacts" and "Show empty groups" parameters
souliane <souliane@mailoo.org>
parents:
518
diff
changeset
|
291 |
630 | 292 if the Contactbox doesn't exists, it will be created |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
293 @param contact_jid (jid.JID): the contact |
630 | 294 @return: ContactBox instance |
295 """ | |
296 try: | |
634
16a5da120b7f
browser side (contact list): Contact list improvments:
Goffi <goffi@goffi.org>
parents:
633
diff
changeset
|
297 return self._contacts[contact_jid.bare] |
630 | 298 except KeyError: |
634
16a5da120b7f
browser side (contact list): Contact list improvments:
Goffi <goffi@goffi.org>
parents:
633
diff
changeset
|
299 box = ContactBox(self, contact_jid) |
16a5da120b7f
browser side (contact list): Contact list improvments:
Goffi <goffi@goffi.org>
parents:
633
diff
changeset
|
300 self._contacts[contact_jid.bare] = box |
630 | 301 return box |
2
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
302 |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
303 def updateAvatar(self, jid_, url): |
480
50b286866739
browser side: display avatars in the contact panel
souliane <souliane@mailoo.org>
parents:
479
diff
changeset
|
304 """Update the avatar of the given contact |
50b286866739
browser side: display avatars in the contact panel
souliane <souliane@mailoo.org>
parents:
479
diff
changeset
|
305 |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
306 @param jid_ (jid.JID): contact jid |
617
5baca9d46c34
browser_side: add/improve some docstrings
souliane <souliane@mailoo.org>
parents:
616
diff
changeset
|
307 @param url (unicode): image url |
480
50b286866739
browser side: display avatars in the contact panel
souliane <souliane@mailoo.org>
parents:
479
diff
changeset
|
308 """ |
50b286866739
browser side: display avatars in the contact panel
souliane <souliane@mailoo.org>
parents:
479
diff
changeset
|
309 try: |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
310 self.getContactBox(jid_).updateAvatar(url) |
480
50b286866739
browser side: display avatars in the contact panel
souliane <souliane@mailoo.org>
parents:
479
diff
changeset
|
311 except TypeError: |
50b286866739
browser side: display avatars in the contact panel
souliane <souliane@mailoo.org>
parents:
479
diff
changeset
|
312 pass |
50b286866739
browser side: display avatars in the contact panel
souliane <souliane@mailoo.org>
parents:
479
diff
changeset
|
313 |
640
75715f5c95e3
browser side(contact list): added nick listener
Goffi <goffi@goffi.org>
parents:
639
diff
changeset
|
314 def updateNick(self, jid_, new_nick): |
75715f5c95e3
browser side(contact list): added nick listener
Goffi <goffi@goffi.org>
parents:
639
diff
changeset
|
315 """Update the avatar of the given contact |
75715f5c95e3
browser side(contact list): added nick listener
Goffi <goffi@goffi.org>
parents:
639
diff
changeset
|
316 |
75715f5c95e3
browser side(contact list): added nick listener
Goffi <goffi@goffi.org>
parents:
639
diff
changeset
|
317 @param jid_ (jid.JID): contact jid |
75715f5c95e3
browser side(contact list): added nick listener
Goffi <goffi@goffi.org>
parents:
639
diff
changeset
|
318 @param new_nick (unicode): new nick of the contact |
75715f5c95e3
browser side(contact list): added nick listener
Goffi <goffi@goffi.org>
parents:
639
diff
changeset
|
319 """ |
75715f5c95e3
browser side(contact list): added nick listener
Goffi <goffi@goffi.org>
parents:
639
diff
changeset
|
320 try: |
75715f5c95e3
browser side(contact list): added nick listener
Goffi <goffi@goffi.org>
parents:
639
diff
changeset
|
321 self.getContactBox(jid_).updateNick(new_nick) |
75715f5c95e3
browser side(contact list): added nick listener
Goffi <goffi@goffi.org>
parents:
639
diff
changeset
|
322 except TypeError: |
75715f5c95e3
browser side(contact list): added nick listener
Goffi <goffi@goffi.org>
parents:
639
diff
changeset
|
323 pass |
75715f5c95e3
browser side(contact list): added nick listener
Goffi <goffi@goffi.org>
parents:
639
diff
changeset
|
324 |
252
b77940d8a9bf
browser_side: isolate the basic stuff of ContactList in the new GenericContactList class
souliane <souliane@mailoo.org>
parents:
242
diff
changeset
|
325 |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
326 class ContactsPanel(BaseContactsPanel): |
252
b77940d8a9bf
browser_side: isolate the basic stuff of ContactList in the new GenericContactList class
souliane <souliane@mailoo.org>
parents:
242
diff
changeset
|
327 """The contact list that is displayed on the left side.""" |
b77940d8a9bf
browser_side: isolate the basic stuff of ContactList in the new GenericContactList class
souliane <souliane@mailoo.org>
parents:
242
diff
changeset
|
328 |
634
16a5da120b7f
browser side (contact list): Contact list improvments:
Goffi <goffi@goffi.org>
parents:
633
diff
changeset
|
329 def __init__(self, parent): |
16a5da120b7f
browser side (contact list): Contact list improvments:
Goffi <goffi@goffi.org>
parents:
633
diff
changeset
|
330 BaseContactsPanel.__init__(self, parent, handle_click=True, handle_menu=True) |
252
b77940d8a9bf
browser_side: isolate the basic stuff of ContactList in the new GenericContactList class
souliane <souliane@mailoo.org>
parents:
242
diff
changeset
|
331 |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
332 def setState(self, jid_, type_, state): |
47
7cabe3c1a5f2
browser side: connected contacts now appear differently
Goffi <goffi@goffi.org>
parents:
33
diff
changeset
|
333 """Change the appearance of the contact, according to the state |
634
16a5da120b7f
browser side (contact list): Contact list improvments:
Goffi <goffi@goffi.org>
parents:
633
diff
changeset
|
334 |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
335 @param jid_ (jid.JID): jid.JID which need to change state |
617
5baca9d46c34
browser_side: add/improve some docstrings
souliane <souliane@mailoo.org>
parents:
616
diff
changeset
|
336 @param type_ (unicode): one of "availability", "messageWaiting" |
62 | 337 @param state: |
338 - for messageWaiting type: | |
339 True if message are waiting | |
340 - for availability type: | |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
341 C.PRESENCE_UNAVAILABLE or None if not connected, else presence like RFC6121 #4.7.2.1""" |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
342 assert type_ in ('availability', 'messageWaiting') |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
343 contact_box = self.getContactBox(jid_) |
630 | 344 if type_ == 'availability': |
345 if state is None: | |
346 state = C.PRESENCE_UNAVAILABLE | |
347 setPresenceStyle(contact_box.label, state) | |
348 elif type_ == 'messageWaiting': | |
634
16a5da120b7f
browser side (contact list): Contact list improvments:
Goffi <goffi@goffi.org>
parents:
633
diff
changeset
|
349 contact_box.setAlert(state) |
47
7cabe3c1a5f2
browser side: connected contacts now appear differently
Goffi <goffi@goffi.org>
parents:
33
diff
changeset
|
350 |
226
744426c2b699
browser_side, misc: better PEP8 compliance
souliane <souliane@mailoo.org>
parents:
200
diff
changeset
|
351 |
467 | 352 class ContactTitleLabel(base_widget.DragLabel, Label, ClickHandler): |
634
16a5da120b7f
browser side (contact list): Contact list improvments:
Goffi <goffi@goffi.org>
parents:
633
diff
changeset
|
353 |
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
|
354 def __init__(self, host, text): |
451 | 355 Label.__init__(self, text) # , Element=DOM.createElement('div') |
16
099c05a0dcab
browser side: microblog panel improvments
Goffi <goffi@goffi.org>
parents:
13
diff
changeset
|
356 self.setStyleName('contactTitle') |
594
a099990f77a6
browser side: border widgets are now visible on drag start + they float right or left in the cell
Goffi <goffi@goffi.org>
parents:
592
diff
changeset
|
357 base_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
|
358 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
|
359 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
|
360 |
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
|
361 def onClick(self, sender): |
616
1c0d5a87c554
browser_side: add and use method displayWidget to harmonize widget's management in Libervia (not completely done, there are some issues)
souliane <souliane@mailoo.org>
parents:
614
diff
changeset
|
362 self.host.displayWidget(blog.MicroblogPanel, None) |
230
266e9678eec0
browser_side: added the flag REUSE_EXISTING_LIBERVIA_WIDGETS
souliane <souliane@mailoo.org>
parents:
226
diff
changeset
|
363 |
16
099c05a0dcab
browser side: microblog panel improvments
Goffi <goffi@goffi.org>
parents:
13
diff
changeset
|
364 |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
365 class ContactList(SimplePanel, QuickContactList): |
2
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
366 """Manage the contacts and groups""" |
226
744426c2b699
browser_side, misc: better PEP8 compliance
souliane <souliane@mailoo.org>
parents:
200
diff
changeset
|
367 |
2
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
368 def __init__(self, host): |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
369 QuickContactList.__init__(self, host, C.PROF_KEY_NONE) |
2
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
370 SimplePanel.__init__(self) |
634
16a5da120b7f
browser side (contact list): Contact list improvments:
Goffi <goffi@goffi.org>
parents:
633
diff
changeset
|
371 self.host = host |
187
d0503f8f15ef
browser side: scroller added to contacts panel
Goffi <goffi@goffi.org>
parents:
165
diff
changeset
|
372 self.scroll_panel = ScrollPanel() |
2
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
373 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
|
374 _title = ContactTitleLabel(host, 'Contacts') |
16
099c05a0dcab
browser side: microblog panel improvments
Goffi <goffi@goffi.org>
parents:
13
diff
changeset
|
375 DOM.setStyleAttribute(_title.getElement(), "cursor", "pointer") |
634
16a5da120b7f
browser side (contact list): Contact list improvments:
Goffi <goffi@goffi.org>
parents:
633
diff
changeset
|
376 self._contacts_panel = ContactsPanel(self) |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
377 self._contacts_panel.setStyleName('contactPanel') # FIXME: style doesn't exists ! |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
378 self._group_panel = GroupPanel(self) |
226
744426c2b699
browser_side, misc: better PEP8 compliance
souliane <souliane@mailoo.org>
parents:
200
diff
changeset
|
379 |
2
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
380 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
|
381 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
|
382 self.vPanel.add(self._contacts_panel) |
187
d0503f8f15ef
browser side: scroller added to contacts panel
Goffi <goffi@goffi.org>
parents:
165
diff
changeset
|
383 self.scroll_panel.add(self.vPanel) |
d0503f8f15ef
browser side: scroller added to contacts panel
Goffi <goffi@goffi.org>
parents:
165
diff
changeset
|
384 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
|
385 self.setStyleName('contactList') |
187
d0503f8f15ef
browser side: scroller added to contacts panel
Goffi <goffi@goffi.org>
parents:
165
diff
changeset
|
386 Window.addWindowResizeListener(self) |
624
9092e624bb27
browser_side: fixes various issues
souliane <souliane@mailoo.org>
parents:
622
diff
changeset
|
387 |
9092e624bb27
browser_side: fixes various issues
souliane <souliane@mailoo.org>
parents:
622
diff
changeset
|
388 # 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
|
389 self.avatarListener = self.onAvatarUpdate |
9092e624bb27
browser_side: fixes various issues
souliane <souliane@mailoo.org>
parents:
622
diff
changeset
|
390 host.addListener('avatar', self.avatarListener, [C.PROF_KEY_NONE]) |
187
d0503f8f15ef
browser side: scroller added to contacts panel
Goffi <goffi@goffi.org>
parents:
165
diff
changeset
|
391 |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
392 @property |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
393 def profile(self): |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
394 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
|
395 |
607
537649f6a2d0
browser side (blog, contact list): use of new listener mechanism to update avatar
Goffi <goffi@goffi.org>
parents:
606
diff
changeset
|
396 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
|
397 QuickContactList.onDelete(self) |
624
9092e624bb27
browser_side: fixes various issues
souliane <souliane@mailoo.org>
parents:
622
diff
changeset
|
398 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
|
399 |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
400 def update(self): |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
401 ### GROUPS ### |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
402 _keys = self._groups.keys() |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
403 try: |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
404 # 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
|
405 _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
|
406 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
|
407 pass |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
408 current_groups = set(_keys) |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
409 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
|
410 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
|
411 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
|
412 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
|
413 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
|
414 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
|
415 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
|
416 |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
417 ### JIDS ### |
641
f5145881723a
browser side (contact list): removed our own bare jid from contact list
Goffi <goffi@goffi.org>
parents:
640
diff
changeset
|
418 to_show = [jid_ for jid_ in self._cache.keys() if self.entityToShow(jid_) and jid_!=self.whoami.bare] |
630 | 419 to_show.sort() |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
420 |
630 | 421 self._contacts_panel.display(to_show) |
422 | |
423 for jid_ in self._alerts: | |
424 self._contacts_panel.setState(jid_, "messageWaiting", True) | |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
425 |
187
d0503f8f15ef
browser side: scroller added to contacts panel
Goffi <goffi@goffi.org>
parents:
165
diff
changeset
|
426 def onWindowResized(self, width, height): |
d0503f8f15ef
browser side: scroller added to contacts panel
Goffi <goffi@goffi.org>
parents:
165
diff
changeset
|
427 contact_panel_elt = self.getElement() |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
428 # FIXME: still needed ? |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
429 # classname = 'widgetsPanel' if isinstance(self.getParent().getParent(), panels.UniBoxPanel) else 'gwt-TabBar' |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
430 classname = 'gwt-TabBar' |
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
|
431 _elts = doc().getElementsByClassName(classname) |
187
d0503f8f15ef
browser side: scroller added to contacts panel
Goffi <goffi@goffi.org>
parents:
165
diff
changeset
|
432 if not _elts.length: |
439
d52f529a6d42
browser side: use of new log system (first draft):
Goffi <goffi@goffi.org>
parents:
413
diff
changeset
|
433 log.error("no element of class %s found, it should exist !" % classname) |
187
d0503f8f15ef
browser side: scroller added to contacts panel
Goffi <goffi@goffi.org>
parents:
165
diff
changeset
|
434 tab_bar_h = height |
d0503f8f15ef
browser side: scroller added to contacts panel
Goffi <goffi@goffi.org>
parents:
165
diff
changeset
|
435 else: |
226
744426c2b699
browser_side, misc: better PEP8 compliance
souliane <souliane@mailoo.org>
parents:
200
diff
changeset
|
436 tab_bar_h = DOM.getAbsoluteTop(_elts.item(0)) or height # getAbsoluteTop can be 0 if tabBar is hidden |
187
d0503f8f15ef
browser side: scroller added to contacts panel
Goffi <goffi@goffi.org>
parents:
165
diff
changeset
|
437 |
d0503f8f15ef
browser side: scroller added to contacts panel
Goffi <goffi@goffi.org>
parents:
165
diff
changeset
|
438 ideal_height = tab_bar_h - DOM.getAbsoluteTop(contact_panel_elt) - 5 |
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
|
439 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
|
440 |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
441 # def updateContact(self, jid_s, attributes, groups): |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
442 # """Add a contact to the panel if it doesn't exist, update it else |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
443 |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
444 # @param jid_s: jid userhost as unicode |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
445 # @param attributes: cf SàT Bridge API's newContact |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
446 # @param groups: list of groups""" |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
447 # _current_groups = self.getContactGroups(jid_s) |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
448 # _new_groups = set(groups) |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
449 # _key = "@%s: " |
55
d5266c41ca24
Roster list update, contact deletion + some refactoring
Goffi <goffi@goffi.org>
parents:
54
diff
changeset
|
450 |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
451 # for group in _current_groups.difference(_new_groups): |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
452 # # We remove the contact from the groups where he isn't anymore |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
453 # self.groups[group].remove(jid_s) |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
454 # if not self.groups[group]: |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
455 # # The group is now empty, we must remove it |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
456 # del self.groups[group] |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
457 # 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
|
458 # if self.host.uni_box: |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
459 # self.host.uni_box.removeKey(_key % group) |
55
d5266c41ca24
Roster list update, contact deletion + some refactoring
Goffi <goffi@goffi.org>
parents:
54
diff
changeset
|
460 |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
461 # for group in _new_groups.difference(_current_groups): |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
462 # # We add the contact to the groups he joined |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
463 # if group not in self.groups.keys(): |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
464 # self.groups[group] = set() |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
465 # 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
|
466 # if self.host.uni_box: |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
467 # self.host.uni_box.addKey(_key % group) |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
468 # self.groups[group].add(jid_s) |
226
744426c2b699
browser_side, misc: better PEP8 compliance
souliane <souliane@mailoo.org>
parents:
200
diff
changeset
|
469 |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
470 # # We add the contact to contact list, it will check if contact already exists |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
471 # self._contacts_panel.add(jid_s) |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
472 # self.updateVisibility([jid_s], self.getContactGroups(jid_s)) |
2
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
473 |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
474 # def removeContact(self, jid): |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
475 # """Remove contacts from groups where he is and contact list""" |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
476 # self.updateContact(jid, {}, []) # we remove contact from every group |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
477 # self._contacts_panel.remove(jid) |
55
d5266c41ca24
Roster list update, contact deletion + some refactoring
Goffi <goffi@goffi.org>
parents:
54
diff
changeset
|
478 |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
479 # def setConnected(self, jid_s, resource, availability, priority, statuses): |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
480 # """Set connection status |
617
5baca9d46c34
browser_side: add/improve some docstrings
souliane <souliane@mailoo.org>
parents:
616
diff
changeset
|
481 # @param jid_s (unicode): JID userhost as unicode |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
482 # """ |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
483 # if availability == 'unavailable': |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
484 # if jid_s in self.connected: |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
485 # if resource in self.connected[jid_s]: |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
486 # del self.connected[jid_s][resource] |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
487 # if not self.connected[jid_s]: |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
488 # del self.connected[jid_s] |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
489 # else: |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
490 # if jid_s not in self.connected: |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
491 # self.connected[jid_s] = {} |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
492 # self.connected[jid_s][resource] = (availability, priority, statuses) |
413
7a8991cda2fa
browser_side: display presence with the highest priority
souliane <souliane@mailoo.org>
parents:
372
diff
changeset
|
493 |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
494 # # check if the contact is connected with another resource, use the one with highest priority |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
495 # if jid_s in self.connected: |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
496 # max_resource = max_priority = None |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
497 # for tmp_resource in self.connected[jid_s]: |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
498 # if max_priority is None or self.connected[jid_s][tmp_resource][1] >= max_priority: |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
499 # max_resource = tmp_resource |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
500 # max_priority = self.connected[jid_s][tmp_resource][1] |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
501 # if availability == "unavailable": # do not check the priority here, because 'unavailable' has a dummy one |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
502 # priority = max_priority |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
503 # availability = self.connected[jid_s][max_resource][0] |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
504 # if jid_s not in self.connected or priority >= max_priority: |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
505 # # case 1: jid not in self.connected means all resources are disconnected, update with 'unavailable' |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
506 # # case 2: update (or confirm) with the values of the resource which takes precedence |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
507 # self._contacts_panel.setState(jid_s, "availability", availability) |
62 | 508 |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
509 # self.updateVisibility([jid_s], self.getContactGroups(jid_s)) |
271
d868181d0649
browser_side: update contacts in "group and contact chooser" when the a user connect/disconnect
souliane <souliane@mailoo.org>
parents:
267
diff
changeset
|
510 |
62 | 511 def setContactMessageWaiting(self, jid, waiting): |
630 | 512 """Show a visual indicator that contact has send a message |
513 | |
62 | 514 @param jid: jid of the contact |
515 @param waiting: True if message are waiting""" | |
630 | 516 raise Exception("Should not be there") |
517 # self._contacts_panel.setState(jid, "messageWaiting", waiting) | |
62 | 518 |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
519 # def getConnected(self, filter_muc=False): |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
520 # """return a list of all jid (bare jid) connected |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
521 # @param filter_muc: if True, remove the groups from the list |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
522 # """ |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
523 # contacts = self.connected.keys() |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
524 # contacts.sort() |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
525 # return contacts if not filter_muc else list(set(contacts).intersection(set(self.getContacts()))) |
28 | 526 |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
527 # def getContactGroups(self, contact_jid_s): |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
528 # """Get groups where contact is |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
529 # @param group: string of single group, or list of string |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
530 # @param contact_jid_s: jid to test, as unicode |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
531 # """ |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
532 # result = set() |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
533 # for group in self.groups: |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
534 # if self.isContactInGroup(group, contact_jid_s): |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
535 # result.add(group) |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
536 # return result |
55
d5266c41ca24
Roster list update, contact deletion + some refactoring
Goffi <goffi@goffi.org>
parents:
54
diff
changeset
|
537 |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
538 # def isContactInGroup(self, group, contact_jid): |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
539 # """Test if the contact_jid is in the group |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
540 # @param group: string of single group, or list of string |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
541 # @param contact_jid: jid to test |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
542 # @return: True if contact_jid is in on of the groups""" |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
543 # if group in self.groups and contact_jid in self.groups[group]: |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
544 # return True |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
545 # return False |
13 | 546 |
54
f25c4077f6b9
addind contact + subscription management + misc
Goffi <goffi@goffi.org>
parents:
51
diff
changeset
|
547 def isContactInRoster(self, contact_jid): |
f25c4077f6b9
addind contact + subscription management + misc
Goffi <goffi@goffi.org>
parents:
51
diff
changeset
|
548 """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
|
549 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
|
550 if contact_jid == contact_box.jid: |
54
f25c4077f6b9
addind contact + subscription management + misc
Goffi <goffi@goffi.org>
parents:
51
diff
changeset
|
551 return True |
f25c4077f6b9
addind contact + subscription management + misc
Goffi <goffi@goffi.org>
parents:
51
diff
changeset
|
552 return False |
f25c4077f6b9
addind contact + subscription management + misc
Goffi <goffi@goffi.org>
parents:
51
diff
changeset
|
553 |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
554 # def getContacts(self): |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
555 # return self._contacts_panel.getContacts() |
55
d5266c41ca24
Roster list update, contact deletion + some refactoring
Goffi <goffi@goffi.org>
parents:
54
diff
changeset
|
556 |
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
|
557 def getGroups(self): |
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
|
558 return self.groups.keys() |
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
|
559 |
2
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
560 def onMouseMove(self, sender, x, y): |
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
561 pass |
226
744426c2b699
browser_side, misc: better PEP8 compliance
souliane <souliane@mailoo.org>
parents:
200
diff
changeset
|
562 |
2
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
563 def onMouseDown(self, sender, x, y): |
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
564 pass |
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
565 |
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
566 def onMouseUp(self, sender, x, y): |
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
567 pass |
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
568 |
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
569 def onMouseEnter(self, sender): |
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
570 if isinstance(sender, GroupLabel): |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
571 jids = self.getGroupData(sender.group, "jids") |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
572 for contact in self._contacts_panel: |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
573 if contact.jid in jids: |
480
50b286866739
browser side: display avatars in the contact panel
souliane <souliane@mailoo.org>
parents:
479
diff
changeset
|
574 contact.label.addStyleName("selected") |
226
744426c2b699
browser_side, misc: better PEP8 compliance
souliane <souliane@mailoo.org>
parents:
200
diff
changeset
|
575 |
2
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
576 def onMouseLeave(self, sender): |
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
577 if isinstance(sender, GroupLabel): |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
578 jids = self.getGroupData(sender.group, "jids") |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
579 for contact in self._contacts_panel: |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
580 if contact.jid in jids: |
480
50b286866739
browser side: display avatars in the contact panel
souliane <souliane@mailoo.org>
parents:
479
diff
changeset
|
581 contact.label.removeStyleName("selected") |
50b286866739
browser side: display avatars in the contact panel
souliane <souliane@mailoo.org>
parents:
479
diff
changeset
|
582 |
638
63697f082e8a
browser side: fixed use of profile for listeners
Goffi <goffi@goffi.org>
parents:
637
diff
changeset
|
583 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
|
584 """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
|
585 |
537649f6a2d0
browser side (blog, contact list): use of new listener mechanism to update avatar
Goffi <goffi@goffi.org>
parents:
606
diff
changeset
|
586 @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
|
587 @param hash_: hash of the avatar |
638
63697f082e8a
browser side: fixed use of profile for listeners
Goffi <goffi@goffi.org>
parents:
637
diff
changeset
|
588 @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
|
589 """ |
537649f6a2d0
browser side (blog, contact list): use of new listener mechanism to update avatar
Goffi <goffi@goffi.org>
parents:
606
diff
changeset
|
590 self._contacts_panel.updateAvatar(jid_, self.host.getAvatarURL(jid_)) |
537649f6a2d0
browser side (blog, contact list): use of new listener mechanism to update avatar
Goffi <goffi@goffi.org>
parents:
606
diff
changeset
|
591 |
640
75715f5c95e3
browser side(contact list): added nick listener
Goffi <goffi@goffi.org>
parents:
639
diff
changeset
|
592 def onNickUpdate(self, jid_, new_nick, profile): |
75715f5c95e3
browser side(contact list): added nick listener
Goffi <goffi@goffi.org>
parents:
639
diff
changeset
|
593 self._contacts_panel.updateNick(jid_, new_nick) |
75715f5c95e3
browser side(contact list): added nick listener
Goffi <goffi@goffi.org>
parents:
639
diff
changeset
|
594 |
567
ee9c7bd266ad
browser_side: implements "Show offline contacts" and "Show empty groups" parameters
souliane <souliane@mailoo.org>
parents:
518
diff
changeset
|
595 def hasVisibleMembers(self, group): |
ee9c7bd266ad
browser_side: implements "Show offline contacts" and "Show empty groups" parameters
souliane <souliane@mailoo.org>
parents:
518
diff
changeset
|
596 """Tell if the given group actually has visible members |
ee9c7bd266ad
browser_side: implements "Show offline contacts" and "Show empty groups" parameters
souliane <souliane@mailoo.org>
parents:
518
diff
changeset
|
597 |
617
5baca9d46c34
browser_side: add/improve some docstrings
souliane <souliane@mailoo.org>
parents:
616
diff
changeset
|
598 @param group (unicode): the group to check |
567
ee9c7bd266ad
browser_side: implements "Show offline contacts" and "Show empty groups" parameters
souliane <souliane@mailoo.org>
parents:
518
diff
changeset
|
599 @return: boolean |
ee9c7bd266ad
browser_side: implements "Show offline contacts" and "Show empty groups" parameters
souliane <souliane@mailoo.org>
parents:
518
diff
changeset
|
600 """ |
634
16a5da120b7f
browser side (contact list): Contact list improvments:
Goffi <goffi@goffi.org>
parents:
633
diff
changeset
|
601 raise Exception # FIXME: remove this method |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
602 for jid_ in self.groups[group]: |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
603 if self._contacts_panel.getContactBox(jid_).isVisible(): |
567
ee9c7bd266ad
browser_side: implements "Show offline contacts" and "Show empty groups" parameters
souliane <souliane@mailoo.org>
parents:
518
diff
changeset
|
604 return True |
ee9c7bd266ad
browser_side: implements "Show offline contacts" and "Show empty groups" parameters
souliane <souliane@mailoo.org>
parents:
518
diff
changeset
|
605 return False |
ee9c7bd266ad
browser_side: implements "Show offline contacts" and "Show empty groups" parameters
souliane <souliane@mailoo.org>
parents:
518
diff
changeset
|
606 |
ee9c7bd266ad
browser_side: implements "Show offline contacts" and "Show empty groups" parameters
souliane <souliane@mailoo.org>
parents:
518
diff
changeset
|
607 def offlineContactsToShow(self): |
ee9c7bd266ad
browser_side: implements "Show offline contacts" and "Show empty groups" parameters
souliane <souliane@mailoo.org>
parents:
518
diff
changeset
|
608 """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
|
609 |
ee9c7bd266ad
browser_side: implements "Show offline contacts" and "Show empty groups" parameters
souliane <souliane@mailoo.org>
parents:
518
diff
changeset
|
610 @return: boolean |
ee9c7bd266ad
browser_side: implements "Show offline contacts" and "Show empty groups" parameters
souliane <souliane@mailoo.org>
parents:
518
diff
changeset
|
611 """ |
633
617f7a5c5312
browser side (contact list): use of c.bool for parameter conversion
Goffi <goffi@goffi.org>
parents:
630
diff
changeset
|
612 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
|
613 |
ee9c7bd266ad
browser_side: implements "Show offline contacts" and "Show empty groups" parameters
souliane <souliane@mailoo.org>
parents:
518
diff
changeset
|
614 def emtyGroupsToShow(self): |
ee9c7bd266ad
browser_side: implements "Show offline contacts" and "Show empty groups" parameters
souliane <souliane@mailoo.org>
parents:
518
diff
changeset
|
615 """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
|
616 |
ee9c7bd266ad
browser_side: implements "Show offline contacts" and "Show empty groups" parameters
souliane <souliane@mailoo.org>
parents:
518
diff
changeset
|
617 @return: boolean |
ee9c7bd266ad
browser_side: implements "Show offline contacts" and "Show empty groups" parameters
souliane <souliane@mailoo.org>
parents:
518
diff
changeset
|
618 """ |
633
617f7a5c5312
browser side (contact list): use of c.bool for parameter conversion
Goffi <goffi@goffi.org>
parents:
630
diff
changeset
|
619 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
|
620 |
639
8da4735a3c81
browser side (contact list): fixed forgotten profile argument in presence listener
Goffi <goffi@goffi.org>
parents:
638
diff
changeset
|
621 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
|
622 QuickContactList.onPresenceUpdate(self, entity, show, priority, statuses, profile) |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
623 entity_bare = entity.bare |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
624 show = self.getCache(entity_bare, C.PRESENCE_SHOW) # we use cache to have the show nformation of main resource only |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
625 self._contacts_panel.setState(entity_bare, "availability", show) |
630 | 626 self.update() |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
627 |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
628 # def updateVisibility(self, jids, groups): |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
629 # """Set the widgets visibility for the given contacts and groups |
567
ee9c7bd266ad
browser_side: implements "Show offline contacts" and "Show empty groups" parameters
souliane <souliane@mailoo.org>
parents:
518
diff
changeset
|
630 |
617
5baca9d46c34
browser_side: add/improve some docstrings
souliane <souliane@mailoo.org>
parents:
616
diff
changeset
|
631 # @param jids (list[unicode]): list of JID |
5baca9d46c34
browser_side: add/improve some docstrings
souliane <souliane@mailoo.org>
parents:
616
diff
changeset
|
632 # @param groups (list[unicode]): list of groups |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
633 # """ |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
634 # for jid_s in jids: |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
635 # try: |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
636 # self._contacts_panel.getContactBox(jid_s).setVisible(jid_s in self.connected or self.offlineContactsToShow()) |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
637 # except TypeError: |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
638 # log.warning('No box for contact %s: this code line should not be reached' % jid_s) |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
639 # for group in groups: |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
640 # try: |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
641 # self._group_panel.getGroupBox(group).setVisible(self.hasVisibleMembers(group) or self.emtyGroupsToShow()) |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
642 # except TypeError: |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
643 # log.warning('No box for group %s: this code line should not be reached' % group) |
567
ee9c7bd266ad
browser_side: implements "Show offline contacts" and "Show empty groups" parameters
souliane <souliane@mailoo.org>
parents:
518
diff
changeset
|
644 |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
645 # def refresh(self): |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
646 # """Show or hide disconnected contacts and empty groups""" |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
578
diff
changeset
|
647 # self.updateVisibility(self._contacts_panel.contacts, self.groups.keys()) |
600
32dbbc941123
browser_side: fixes the contact group manager
souliane <souliane@mailoo.org>
parents:
594
diff
changeset
|
648 |
32dbbc941123
browser_side: fixes the contact group manager
souliane <souliane@mailoo.org>
parents:
594
diff
changeset
|
649 |
601
49ccfc22116c
browser_side: fixes class JIDList, remove JIDSet and JIDDict which are actually not needed
souliane <souliane@mailoo.org>
parents:
600
diff
changeset
|
650 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
|
651 """JID-friendly list implementation for Pyjamas""" |
600
32dbbc941123
browser_side: fixes the contact group manager
souliane <souliane@mailoo.org>
parents:
594
diff
changeset
|
652 |
32dbbc941123
browser_side: fixes the contact group manager
souliane <souliane@mailoo.org>
parents:
594
diff
changeset
|
653 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
|
654 """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
|
655 |
601
49ccfc22116c
browser_side: fixes class JIDList, remove JIDSet and JIDDict which are actually not needed
souliane <souliane@mailoo.org>
parents:
600
diff
changeset
|
656 @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
|
657 @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
|
658 """ |
49ccfc22116c
browser_side: fixes class JIDList, remove JIDSet and JIDDict which are actually not needed
souliane <souliane@mailoo.org>
parents:
600
diff
changeset
|
659 # 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
|
660 # 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
|
661 # 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
|
662 # 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
|
663 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
|
664 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
|
665 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
|
666 return False |