Mercurial > libervia-desktop-kivy
view libervia/desktop_kivy/plugins/plugin_wid_blog.kv @ 499:f387992d8e37
plugins: new "call" plugin for A/V calls:
this is the base implementation for calls plugin, handling one2one calls.
For now, the interface is very basic, call is done by specifying the bare jid of the
destinee, then press the "call" button. Incoming calls are automatically accepted.
rel 424
author | Goffi <goffi@goffi.org> |
---|---|
date | Wed, 04 Oct 2023 22:54:36 +0200 |
parents | b3cedbee561d |
children | 196483685a63 |
line wrap: on
line source
# desktop/mobile frontend for Libervia XMPP client # Copyright (C) 2016-2022 Jérôme Poisson (goffi@goffi.org) # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. #:import date_fmt libervia.backend.tools.common.date_utils.date_fmt <SearchButton>: size_hint: None, 1 symbol: "search" width: dp(30) font_size: dp(25) color: 0.4, 0.4, 0.4, 1 <NewPostButton>: size_hint: None, 1 symbol: "pencil" width: dp(30) font_size: dp(25) color: 0.4, 0.4, 0.4, 1 <NewPosttMenu>: padding: dp(20) spacing: dp(10) e2ee: e2ee_checkbox Label: size_hint: 1, None color: 1, 1, 1, 1 text: _("Publish a new post on {node} node of {service}").format(node=root.blog.node or "personal blog", service=root.blog.service or root.blog.profile) text_size: root.width, None size: self.texture_size halign: "center" bold: True TextInput: id: title size_hint: 1, None height: sp(30) hint_text: _("title of your post (optional)") TextInput: id: content size_hint: 1, None height: sp(300) hint_text: _("body of your post (markdown syntax allowed)") BoxLayout id: e2ee size_hint: 1, None padding_y: None height: dp(25) Widget: CheckBox: id: e2ee_checkbox size_hint: None, 1 width: dp(20) active: False color: 1, 1, 1, 1 Label: size_hint: None, None text: _("encrypt post") text_size: None, None size: self.texture_size padding_x: dp(10) font_size: sp(15) color: 1, 1, 1, 1 Widget: Button: size_hint: 1, None height: sp(50) text: _("publish") on_release: root.publish(title.text, content.text, e2ee=e2ee_checkbox.active) Widget: <BlogPostAvatar>: size_hint: None, None size: dp(30), dp(30) canvas.before: Color: rgba: (0.87,0.87,0.87,1) RoundedRectangle: radius: [dp(5)] pos: self.pos size: self.size <BlogPostWidget>: size_hint: 1, None avatar: avatar header_box: header_box height: self.minimum_height orientation: "vertical" Label: color: 0, 0, 0, 1 bold: True font_size: root.title_font_size text_size: None, None size_hint: None, None size: self.texture_size[0], self.texture_size[1] if root.blog_data.get("title") else 0 opacity: 1 if root.blog_data.get("title") else 0 padding: dp(5), 0 text: root.blog_data.get("title", "") BoxLayout: id: header_box size_hint: 1, None height: dp(40) BoxLayout: orientation: 'vertical' width: avatar.width size_hint: None, 1 BlogPostAvatar: id: avatar source: app.default_avatar Label: id: created_ts color: (0, 0, 0, 1) font_size: root.font_size text_size: None, None size_hint: None, None size: self.texture_size padding: dp(5), 0 markup: True valign: 'middle' text: f"published on [b]{date_fmt(root.blog_data.get('published', 0), 'auto_day')}[/b]" Symbol: size_hint: None, None height: created_ts.height width: self.height id: encrypted symbol: 'lock-filled' if root.blog_data.get("encrypted") else 'lock-open' font_size: created_ts.height opacity: 1 if root.blog_data.get("encrypted") else 0 color: 0.29,0.87,0.0,1 SimpleXHTMLWidget: size_hint: 1, None height: self.minimum_height xhtml: root.blog_data.get("content_xhtml") or self.escape(root.blog_data.get("content", "")) color: (0, 0, 0, 1) padding: dp(5), dp(5) <Blog>: float_layout: float_layout orientation: 'vertical' posts_widget: posts_widget FloatLayout: id: float_layout ScrollView: size_hint: 1, 1 pos_hint: {'x': 0, 'y': 0} do_scroll_x: False scroll_type: ['bars', 'content'] bar_width: dp(6) BoxLayout: id: posts_widget orientation: "vertical" size_hint: 1, None height: self.minimum_height spacing: dp(10)