view cagou/kv/menu.kv @ 488:beedff600d2b

blog: blog widget implementation: this patch implements a basic blog widget. The search bare can be used to change node (only node for now, will be improved to do search and all). Publication on current node can be done by pressing the pencil icon. A checkbox can be activated to use end-to-end encryption. No pagination or comments are supported for now. Due to lack of HTML rendering in Kivy, only simple formatting is supported. If item is end-2-end encrypted, a green closed locker is shown next to publication date. rel 380
author Goffi <goffi@goffi.org>
date Sat, 15 Oct 2022 20:20:10 +0200
parents 3c9ba4a694ef
children 203755bbe0fe
line wrap: on
line source

# Cagou: desktop/mobile frontend for Salut à Toi XMPP client
# Copyright (C) 2016-2021 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 _ sat.core.i18n._
#:import C cagou.core.constants.Const

<AboutContent>:
    text_size: self.size
    color: 1, 1, 1, 1
    halign: "center"
    valign: "middle"

<AboutPopup>:
    title_align: "center"
    size_hint: 0.8, 0.8

<ExtraMenuItem>:
    size_hint: 1, None
    height: dp(30)

<ExtraSideMenu>:
    bg_color: 0.23, 0.23, 0.23, 1
    ExtraMenuItem:
        text: _("About")
        on_press: root.onAbout()
    Widget:
        # to push content to the top

<TransferMenu>:
    items_layout: items_layout
    orientation: "vertical"
    bg_color: app.c_prim
    size_hint: 1, 0.5
    padding: [app.MARGIN_LEFT, 3, app.MARGIN_RIGHT, 0]
    spacing: dp(5)
    transfer_info: transfer_info
    upload_btn: upload_btn
    on_encrypted: self.updateTransferInfo()
    canvas.after:
        Color:
            rgba: app.c_prim_dark
        Line:
            points: 0, self.y + self.height, self.width + self.x, self.y + self.height
            width: 1
    BoxLayout:
        size_hint: 1, None
        height: dp(50)
        spacing: dp(10)
        Widget:
        SymbolToggleLabel
            id: upload_btn
            symbol: "upload"
            text: _(u"upload")
            group: "transfer"
            state: "down"
            on_state: root.updateTransferInfo()
        SymbolToggleLabel
            id: send_btn
            symbol: "loop-alt"
            text: _(u"send")
            group: "transfer"
        Widget:
    Label:
        id: transfer_info
        size_hint: 1, None
        padding: 0, dp(5)
        markup: True
        text_size: self.width, None
        size: self.texture_size
        halign: 'center'
        canvas.before:
            Color:
                rgba: app.c_prim_dark
            RoundedRectangle:
                pos: self.pos
                size: self.size
    ScrollView:
        do_scroll_x: False
        StackLayout:
            size_hint: 1, None
            padding: 20, 0
            spacing: 15, 5
            id: items_layout

<TransferItem>:
    orientation: "vertical"
    size_hint: None, None
    size: dp(50), dp(90)
    IconButton:
        source: root.plug_info['icon_medium']
        allow_stretch: True
        size_hint: 1, None
        height: dp(50)
    Label:
        color: 0, 0, 0, 1
        text: root.plug_info['name']
        text_size: self.size
        halign: "center"
        valign: "top"


<SideMenu>:
    orientation: "vertical"
    size_hint: self.size_hint_close
    canvas.before:
        Color:
            rgba: self.bg_color
        Rectangle:
            pos: self.pos
            size: self.size


<EntitiesSelectorMenu>:
    bg_color: 0, 0, 0, 0.9
    filter_input: filter_input
    layout: layout
    callback_on_close: True
    Label:
        size_hint: 1, None
        text_size: root.width, None
        size: self.texture_size
        padding: dp(5), dp(5)
        color: 1, 1, 1, 1
        text: root.instructions
        halign: "center"
    TextInput:
        id: filter_input
        size_hint: 1, None
        height: dp(32)
        multiline: False
        hint_text: _(u"enter filter here")
    ScrollView:
        size_hint: 1, 1
        BoxLayout:
            id: layout
            orientation: "vertical"
            size_hint: 1, None
            height: self.minimum_height
            spacing: dp(5)