Mercurial > libervia-desktop-kivy
annotate cagou/plugins/plugin_wid_chat.kv @ 406:03554ad70846
common (jidSelector): replace implitict_update mechanism by real-time update:
instead of having the possibility to (de)activate implicit update, real time update of
items is now done.
For now only the notifications and opened chat items are updated in real time.
author | Goffi <goffi@goffi.org> |
---|---|
date | Wed, 12 Feb 2020 20:02:58 +0100 |
parents | f7476818f9fb |
children | 2caea63ae2ab |
rev | line source |
---|---|
22 | 1 # Cagou: desktop/mobile frontend for Salut à Toi XMPP client |
282 | 2 # Copyright (C) 2016-2019 Jérôme Poisson (goffi@goffi.org) |
22 | 3 |
4 # This program is free software: you can redistribute it and/or modify | |
5 # it under the terms of the GNU Affero General Public License as published by | |
6 # the Free Software Foundation, either version 3 of the License, or | |
7 # (at your option) any later version. | |
8 | |
9 # This program is distributed in the hope that it will be useful, | |
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
12 # GNU Affero General Public License for more details. | |
13 | |
14 # You should have received a copy of the GNU Affero General Public License | |
15 # along with this program. If not, see <http://www.gnu.org/licenses/>. | |
16 | |
104
663e44f30092
chat: added gettext call for hint_text in input
Goffi <goffi@goffi.org>
parents:
103
diff
changeset
|
17 #:import _ sat.core.i18n._ |
116
8576d70ff803
chat: message header is hidden for info messages
Goffi <goffi@goffi.org>
parents:
106
diff
changeset
|
18 #:import C cagou.core.constants.Const |
133
c3aa71daceb8
plugin chat: use bold for nicknames in messages headers
Goffi <goffi@goffi.org>
parents:
132
diff
changeset
|
19 #:import escape kivy.utils.escape_markup |
325 | 20 #:import SimpleXHTMLWidget cagou.core.simple_xhtml.SimpleXHTMLWidget |
21 #:import DelayedBoxLayout cagou.core.common_widgets.DelayedBoxLayout | |
326 | 22 #:import ScrollEffect kivy.effects.scroll.ScrollEffect |
394
d15828ca9d86
chat: use the new "implicit_update" and "to_show" properties for ChatSelector.jid_selector:
Goffi <goffi@goffi.org>
parents:
393
diff
changeset
|
23 #:import CategorySeparator cagou.core.common_widgets.CategorySeparator |
354 | 24 |
25 | |
26 # Chat | |
27 | |
44
7819e9efa250
chat: avatar and nick are now displayed, need further aesthetic improvments
Goffi <goffi@goffi.org>
parents:
31
diff
changeset
|
28 <MessAvatar>: |
7819e9efa250
chat: avatar and nick are now displayed, need further aesthetic improvments
Goffi <goffi@goffi.org>
parents:
31
diff
changeset
|
29 size_hint: None, None |
7819e9efa250
chat: avatar and nick are now displayed, need further aesthetic improvments
Goffi <goffi@goffi.org>
parents:
31
diff
changeset
|
30 size: dp(30), dp(30) |
132
7ad965999d47
plugin chat: draw a background for avatars
Goffi <goffi@goffi.org>
parents:
131
diff
changeset
|
31 canvas.before: |
7ad965999d47
plugin chat: draw a background for avatars
Goffi <goffi@goffi.org>
parents:
131
diff
changeset
|
32 Color: |
7ad965999d47
plugin chat: draw a background for avatars
Goffi <goffi@goffi.org>
parents:
131
diff
changeset
|
33 rgba: (0.87,0.87,0.87,1) |
7ad965999d47
plugin chat: draw a background for avatars
Goffi <goffi@goffi.org>
parents:
131
diff
changeset
|
34 RoundedRectangle: |
7ad965999d47
plugin chat: draw a background for avatars
Goffi <goffi@goffi.org>
parents:
131
diff
changeset
|
35 radius: [dp(5)] |
7ad965999d47
plugin chat: draw a background for avatars
Goffi <goffi@goffi.org>
parents:
131
diff
changeset
|
36 pos: self.pos |
7ad965999d47
plugin chat: draw a background for avatars
Goffi <goffi@goffi.org>
parents:
131
diff
changeset
|
37 size: self.size |
44
7819e9efa250
chat: avatar and nick are now displayed, need further aesthetic improvments
Goffi <goffi@goffi.org>
parents:
31
diff
changeset
|
38 |
22 | 39 |
40 <MessageWidget>: | |
24
bc15b55a4114
chat: better bubble and time resizing
Goffi <goffi@goffi.org>
parents:
23
diff
changeset
|
41 size_hint: 1, None |
47
abb81efef3bb
chat: update avatar following quick frontend improvments
Goffi <goffi@goffi.org>
parents:
45
diff
changeset
|
42 avatar: avatar |
103
c601e3d40342
chat: display delivery receipt (with a green check mark)
Goffi <goffi@goffi.org>
parents:
97
diff
changeset
|
43 delivery: delivery |
138 | 44 mess_xhtml: mess_xhtml |
325 | 45 right_part: right_part |
46 header_box: header_box | |
47 height: self.minimum_height | |
45 | 48 BoxLayout: |
138 | 49 orientation: 'vertical' |
50 width: avatar.width | |
51 size_hint: None, 1 | |
45 | 52 MessAvatar: |
53 id: avatar | |
325 | 54 source: (root.mess_data.avatar or '') if root.mess_data else '' |
367
abb57182ebfb
chat: prepend nick to message input when occupant avatar is touched on group chat.
Goffi <goffi@goffi.org>
parents:
354
diff
changeset
|
55 on_press: root.chat.addNick(root.nick) |
138 | 56 Widget: |
57 # use to push the avatar on the top | |
58 size_hint: 1, 1 | |
22 | 59 BoxLayout: |
325 | 60 size_hint: 1, None |
138 | 61 orientation: 'vertical' |
62 id: right_part | |
325 | 63 height: header_box.height + mess_xhtml.height |
138 | 64 BoxLayout: |
65 id: header_box | |
66 size_hint: 1, None | |
325 | 67 height: time_label.height if root.mess_type != C.MESS_TYPE_INFO else 0 |
68 opacity: 1 if root.mess_type != C.MESS_TYPE_INFO else 0 | |
138 | 69 Label: |
70 id: time_label | |
325 | 71 color: (0, 0, 0, 1) if root.own_mess else (0.55,0.55,0.55,1) |
185
ab3f5173ef5c
chat, simple XHTML: font size adjustement
Goffi <goffi@goffi.org>
parents:
167
diff
changeset
|
72 font_size: root.font_size |
138 | 73 text_size: None, None |
74 size_hint: None, None | |
75 size: self.texture_size | |
76 padding: dp(5), 0 | |
77 markup: True | |
78 valign: 'middle' | |
325 | 79 text: u"[b]{}[/b], {}".format(escape(root.nick), root.time_text) |
138 | 80 Label: |
81 id: delivery | |
274 | 82 color: C.COLOR_BTN_LIGHT |
185
ab3f5173ef5c
chat, simple XHTML: font size adjustement
Goffi <goffi@goffi.org>
parents:
167
diff
changeset
|
83 font_size: root.font_size |
138 | 84 text_size: None, None |
85 size_hint: None, None | |
86 size: self.texture_size | |
87 padding: dp(5), 0 | |
88 # XXX: DejaVuSans font is needed as check mark is not in Roboto | |
89 # this can be removed when Kivy will be able to handle fallback mechanism | |
90 # which will allow us to use fonts with more unicode characters | |
91 font_name: "DejaVuSans" | |
92 text: u'' | |
57 | 93 SimpleXHTMLWidget: |
94 id: mess_xhtml | |
138 | 95 size_hint: 1, None |
58
7aa2ffff9067
chat: <img/> tag handling first draft:
Goffi <goffi@goffi.org>
parents:
57
diff
changeset
|
96 height: self.minimum_height |
57 | 97 xhtml: root.message_xhtml or self.escape(root.message or u' ') |
325 | 98 color: (0.74,0.74,0.24,1) if root.mess_type == "info" else (0, 0, 0, 1) |
45 | 99 padding: root.mess_padding |
325 | 100 bold: True if root.mess_type == "info" else False |
101 | |
45 | 102 |
86 | 103 <Chat>: |
325 | 104 message_input: message_input |
86 | 105 messages_widget: messages_widget |
326 | 106 history_scroll: history_scroll |
86 | 107 ScrollView: |
326 | 108 id: history_scroll |
86 | 109 scroll_y: 0 |
326 | 110 on_scroll_y: root.onScroll(*args) |
86 | 111 do_scroll_x: False |
167
ffef21fd97a2
chat: allow to scroll using side bar + increased bar size
Goffi <goffi@goffi.org>
parents:
153
diff
changeset
|
112 scroll_type: ['bars', 'content'] |
326 | 113 bar_width: dp(10) |
114 effect_cls: ScrollEffect | |
325 | 115 DelayedBoxLayout: |
86 | 116 id: messages_widget |
325 | 117 size_hint_y: None |
118 padding: [app.MARGIN_LEFT, 0, app.MARGIN_RIGHT, dp(10)] | |
119 spacing: dp(10) | |
120 height: self.minimum_height | |
121 orientation: 'vertical' | |
86 | 122 MessageInputBox: |
78 | 123 size_hint: 1, None |
276 | 124 height: self.minimum_height |
252
fdda914a298b
chat: added some padding in MessageInputBox
Goffi <goffi@goffi.org>
parents:
244
diff
changeset
|
125 spacing: dp(10) |
274 | 126 padding: [app.MARGIN_LEFT, 0, app.MARGIN_RIGHT, dp(10)] |
86 | 127 message_input: message_input |
128 MessageInputWidget: | |
129 id: message_input | |
276 | 130 size_hint: 1, None |
131 height: min(self.minimum_height, dp(250)) | |
132 multiline: True | |
104
663e44f30092
chat: added gettext call for hint_text in input
Goffi <goffi@goffi.org>
parents:
103
diff
changeset
|
133 hint_text: _(u"Enter your message here") |
86 | 134 on_text_validate: root.onSend(args[0]) |
117 | 135 |
276 | 136 |
137 <SendButton>: | |
138 # SendButton is only shown on touch devices | |
139 symbol: "forward" | |
140 size_hint: None, 1 | |
141 width: dp(30) | |
142 font_size: dp(25) | |
143 on_release: self.message_input_box.send_text() | |
144 | |
278
444ba439530f
chat: moved transfer button to header_box
Goffi <goffi@goffi.org>
parents:
276
diff
changeset
|
145 # Buttons added in header |
444ba439530f
chat: moved transfer button to header_box
Goffi <goffi@goffi.org>
parents:
276
diff
changeset
|
146 |
444ba439530f
chat: moved transfer button to header_box
Goffi <goffi@goffi.org>
parents:
276
diff
changeset
|
147 <TransferButton>: |
444ba439530f
chat: moved transfer button to header_box
Goffi <goffi@goffi.org>
parents:
276
diff
changeset
|
148 size_hint: None, 1 |
444ba439530f
chat: moved transfer button to header_box
Goffi <goffi@goffi.org>
parents:
276
diff
changeset
|
149 symbol: "plus-circled" |
444ba439530f
chat: moved transfer button to header_box
Goffi <goffi@goffi.org>
parents:
276
diff
changeset
|
150 width: dp(30) |
444ba439530f
chat: moved transfer button to header_box
Goffi <goffi@goffi.org>
parents:
276
diff
changeset
|
151 font_size: dp(25) |
444ba439530f
chat: moved transfer button to header_box
Goffi <goffi@goffi.org>
parents:
276
diff
changeset
|
152 color: 0.4, 0.4, 0.4, 1 |
444ba439530f
chat: moved transfer button to header_box
Goffi <goffi@goffi.org>
parents:
276
diff
changeset
|
153 |
287
5d96bcd3bfec
chat: added an extra menu (3 dots menu):
Goffi <goffi@goffi.org>
parents:
282
diff
changeset
|
154 <MenuButton@Button> |
5d96bcd3bfec
chat: added an extra menu (3 dots menu):
Goffi <goffi@goffi.org>
parents:
282
diff
changeset
|
155 size_hint_y: None |
5d96bcd3bfec
chat: added an extra menu (3 dots menu):
Goffi <goffi@goffi.org>
parents:
282
diff
changeset
|
156 height: dp(30) |
5d96bcd3bfec
chat: added an extra menu (3 dots menu):
Goffi <goffi@goffi.org>
parents:
282
diff
changeset
|
157 on_texture_size: self.parent.parent.width = max(self.parent.parent.width, self.texture_size[0] + dp(10)) |
5d96bcd3bfec
chat: added an extra menu (3 dots menu):
Goffi <goffi@goffi.org>
parents:
282
diff
changeset
|
158 |
5d96bcd3bfec
chat: added an extra menu (3 dots menu):
Goffi <goffi@goffi.org>
parents:
282
diff
changeset
|
159 <ExtraMenu>: |
5d96bcd3bfec
chat: added an extra menu (3 dots menu):
Goffi <goffi@goffi.org>
parents:
282
diff
changeset
|
160 auto_width: False |
5d96bcd3bfec
chat: added an extra menu (3 dots menu):
Goffi <goffi@goffi.org>
parents:
282
diff
changeset
|
161 MenuButton: |
393
e2f806779b53
chat: added a "close" item in menu, to leave MUC/close current chat widget.
Goffi <goffi@goffi.org>
parents:
367
diff
changeset
|
162 text: _("bookmarks") |
287
5d96bcd3bfec
chat: added an extra menu (3 dots menu):
Goffi <goffi@goffi.org>
parents:
282
diff
changeset
|
163 on_release: root.select("bookmark") |
393
e2f806779b53
chat: added a "close" item in menu, to leave MUC/close current chat widget.
Goffi <goffi@goffi.org>
parents:
367
diff
changeset
|
164 MenuButton: |
e2f806779b53
chat: added a "close" item in menu, to leave MUC/close current chat widget.
Goffi <goffi@goffi.org>
parents:
367
diff
changeset
|
165 text: _("close") |
e2f806779b53
chat: added a "close" item in menu, to leave MUC/close current chat widget.
Goffi <goffi@goffi.org>
parents:
367
diff
changeset
|
166 on_release: root.select("close") |
287
5d96bcd3bfec
chat: added an extra menu (3 dots menu):
Goffi <goffi@goffi.org>
parents:
282
diff
changeset
|
167 |
5d96bcd3bfec
chat: added an extra menu (3 dots menu):
Goffi <goffi@goffi.org>
parents:
282
diff
changeset
|
168 <ExtraButton>: |
5d96bcd3bfec
chat: added an extra menu (3 dots menu):
Goffi <goffi@goffi.org>
parents:
282
diff
changeset
|
169 size_hint: None, 1 |
5d96bcd3bfec
chat: added an extra menu (3 dots menu):
Goffi <goffi@goffi.org>
parents:
282
diff
changeset
|
170 symbol: "dot-3-vert" |
5d96bcd3bfec
chat: added an extra menu (3 dots menu):
Goffi <goffi@goffi.org>
parents:
282
diff
changeset
|
171 width: dp(30) |
5d96bcd3bfec
chat: added an extra menu (3 dots menu):
Goffi <goffi@goffi.org>
parents:
282
diff
changeset
|
172 font_size: dp(25) |
5d96bcd3bfec
chat: added an extra menu (3 dots menu):
Goffi <goffi@goffi.org>
parents:
282
diff
changeset
|
173 color: 0.4, 0.4, 0.4, 1 |
5d96bcd3bfec
chat: added an extra menu (3 dots menu):
Goffi <goffi@goffi.org>
parents:
282
diff
changeset
|
174 on_release: self.chat.extra_menu.open(self) |
276 | 175 |
233
ba8f3a4a5ac7
plugin chat: e2e encryption improvments:
Goffi <goffi@goffi.org>
parents:
185
diff
changeset
|
176 <EncryptionMainButton>: |
117 | 177 size_hint: None, 1 |
178 width: dp(30) | |
135
091e288838e1
plugin chat: use new Symbol widget to display encryption button
Goffi <goffi@goffi.org>
parents:
133
diff
changeset
|
179 color: self.getColor() |
091e288838e1
plugin chat: use new Symbol widget to display encryption button
Goffi <goffi@goffi.org>
parents:
133
diff
changeset
|
180 symbol: self.getSymbol() |
117 | 181 |
242
c2503168fab7
plugin chat (encryption): added a button to display trust management UI.
Goffi <goffi@goffi.org>
parents:
233
diff
changeset
|
182 <TrustManagementButton>: |
c2503168fab7
plugin chat (encryption): added a button to display trust management UI.
Goffi <goffi@goffi.org>
parents:
233
diff
changeset
|
183 symbol: "shield" |
c2503168fab7
plugin chat (encryption): added a button to display trust management UI.
Goffi <goffi@goffi.org>
parents:
233
diff
changeset
|
184 padding: dp(5), dp(10) |
c2503168fab7
plugin chat (encryption): added a button to display trust management UI.
Goffi <goffi@goffi.org>
parents:
233
diff
changeset
|
185 bg_color: app.c_prim_dark |
c2503168fab7
plugin chat (encryption): added a button to display trust management UI.
Goffi <goffi@goffi.org>
parents:
233
diff
changeset
|
186 size_hint: None, 1 |
c2503168fab7
plugin chat (encryption): added a button to display trust management UI.
Goffi <goffi@goffi.org>
parents:
233
diff
changeset
|
187 width: dp(30) |
c2503168fab7
plugin chat (encryption): added a button to display trust management UI.
Goffi <goffi@goffi.org>
parents:
233
diff
changeset
|
188 on_release: self.parent.dispatch("on_trust_release") |
c2503168fab7
plugin chat (encryption): added a button to display trust management UI.
Goffi <goffi@goffi.org>
parents:
233
diff
changeset
|
189 |
233
ba8f3a4a5ac7
plugin chat: e2e encryption improvments:
Goffi <goffi@goffi.org>
parents:
185
diff
changeset
|
190 <EncryptionButton>: |
117 | 191 size_hint: None, None |
242
c2503168fab7
plugin chat (encryption): added a button to display trust management UI.
Goffi <goffi@goffi.org>
parents:
233
diff
changeset
|
192 width: self.parent.parent.best_width if self.parent is not None else 30 |
c2503168fab7
plugin chat (encryption): added a button to display trust management UI.
Goffi <goffi@goffi.org>
parents:
233
diff
changeset
|
193 height: dp(30) |
c2503168fab7
plugin chat (encryption): added a button to display trust management UI.
Goffi <goffi@goffi.org>
parents:
233
diff
changeset
|
194 on_best_width: self.parent.parent.best_width = max(self.parent.parent.best_width, args[1]) |
c2503168fab7
plugin chat (encryption): added a button to display trust management UI.
Goffi <goffi@goffi.org>
parents:
233
diff
changeset
|
195 Button: |
c2503168fab7
plugin chat (encryption): added a button to display trust management UI.
Goffi <goffi@goffi.org>
parents:
233
diff
changeset
|
196 text: root.text |
c2503168fab7
plugin chat (encryption): added a button to display trust management UI.
Goffi <goffi@goffi.org>
parents:
233
diff
changeset
|
197 size_hint: 1, 1 |
c2503168fab7
plugin chat (encryption): added a button to display trust management UI.
Goffi <goffi@goffi.org>
parents:
233
diff
changeset
|
198 padding: dp(5), dp(10) |
c2503168fab7
plugin chat (encryption): added a button to display trust management UI.
Goffi <goffi@goffi.org>
parents:
233
diff
changeset
|
199 color: 0, 0, 0, 1 |
312 | 200 bold: root.bold |
242
c2503168fab7
plugin chat (encryption): added a button to display trust management UI.
Goffi <goffi@goffi.org>
parents:
233
diff
changeset
|
201 background_normal: app.expand('{media}/misc/borders/border_filled_black.png') |
c2503168fab7
plugin chat (encryption): added a button to display trust management UI.
Goffi <goffi@goffi.org>
parents:
233
diff
changeset
|
202 background_color: app.c_sec if root.selected else app.c_prim_dark |
c2503168fab7
plugin chat (encryption): added a button to display trust management UI.
Goffi <goffi@goffi.org>
parents:
233
diff
changeset
|
203 on_release: root.dispatch("on_release") |
c2503168fab7
plugin chat (encryption): added a button to display trust management UI.
Goffi <goffi@goffi.org>
parents:
233
diff
changeset
|
204 on_texture_size: root.best_width = self.texture_size[0] + (dp(30) if root.trust_button else 0) |
117 | 205 |
233
ba8f3a4a5ac7
plugin chat: e2e encryption improvments:
Goffi <goffi@goffi.org>
parents:
185
diff
changeset
|
206 <EncryptionMenu>: |
117 | 207 size_hint_x: None |
233
ba8f3a4a5ac7
plugin chat: e2e encryption improvments:
Goffi <goffi@goffi.org>
parents:
185
diff
changeset
|
208 width: self.container.minimum_width |
117 | 209 auto_width: False |
210 canvas.before: | |
211 Color: | |
212 rgba: 0, 0, 0, 1 | |
213 Rectangle: | |
214 pos: self.pos | |
215 size: self.size | |
394
d15828ca9d86
chat: use the new "implicit_update" and "to_show" properties for ChatSelector.jid_selector:
Goffi <goffi@goffi.org>
parents:
393
diff
changeset
|
216 |
d15828ca9d86
chat: use the new "implicit_update" and "to_show" properties for ChatSelector.jid_selector:
Goffi <goffi@goffi.org>
parents:
393
diff
changeset
|
217 |
d15828ca9d86
chat: use the new "implicit_update" and "to_show" properties for ChatSelector.jid_selector:
Goffi <goffi@goffi.org>
parents:
393
diff
changeset
|
218 # Chat Selector |
d15828ca9d86
chat: use the new "implicit_update" and "to_show" properties for ChatSelector.jid_selector:
Goffi <goffi@goffi.org>
parents:
393
diff
changeset
|
219 |
d15828ca9d86
chat: use the new "implicit_update" and "to_show" properties for ChatSelector.jid_selector:
Goffi <goffi@goffi.org>
parents:
393
diff
changeset
|
220 <ChatSelector>: |
d15828ca9d86
chat: use the new "implicit_update" and "to_show" properties for ChatSelector.jid_selector:
Goffi <goffi@goffi.org>
parents:
393
diff
changeset
|
221 jid_selector: jid_selector |
d15828ca9d86
chat: use the new "implicit_update" and "to_show" properties for ChatSelector.jid_selector:
Goffi <goffi@goffi.org>
parents:
393
diff
changeset
|
222 JidSelector: |
d15828ca9d86
chat: use the new "implicit_update" and "to_show" properties for ChatSelector.jid_selector:
Goffi <goffi@goffi.org>
parents:
393
diff
changeset
|
223 id: jid_selector |
d15828ca9d86
chat: use the new "implicit_update" and "to_show" properties for ChatSelector.jid_selector:
Goffi <goffi@goffi.org>
parents:
393
diff
changeset
|
224 on_select: root.on_select(args[1]) |
404
f7476818f9fb
core (common): JidSelector + behaviors various improvments:
Goffi <goffi@goffi.org>
parents:
394
diff
changeset
|
225 to_show: ["opened_chats", "roster", "bookmarks"] |
394
d15828ca9d86
chat: use the new "implicit_update" and "to_show" properties for ChatSelector.jid_selector:
Goffi <goffi@goffi.org>
parents:
393
diff
changeset
|
226 |