diff libervia/desktop_kivy/plugins/plugin_wid_blog.kv @ 493:b3cedbee561d

refactoring: rename `cagou` to `libervia.desktop_kivy` + update imports and names following backend changes
author Goffi <goffi@goffi.org>
date Fri, 02 Jun 2023 18:26:16 +0200
parents cagou/plugins/plugin_wid_blog.kv@beedff600d2b
children 196483685a63
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libervia/desktop_kivy/plugins/plugin_wid_blog.kv	Fri Jun 02 18:26:16 2023 +0200
@@ -0,0 +1,168 @@
+# 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)