from wagtail.core.blocks import (
    CharBlock,
    ListBlock,
    PageChooserBlock,
    StructBlock,
    TextBlock,
    URLBlock,
)
from wagtail.images.blocks import ImageChooserBlock


class CTAMixin:
    button_link = URLBlock(label="Odkaz tlačítka")
    button_text = CharBlock(label="Text tlačítka")


class BoxBlock(CTAMixin, StructBlock):
    image = ImageChooserBlock(label="Logo/obrázek")
    title = CharBlock(label="Nadpis")


class BoxesBlock(StructBlock):
    title = CharBlock(label="Nadpis")
    list = ListBlock(BoxBlock, label="Boxíky")


class HomePageCarouseSlideBlock(CTAMixin, StructBlock):
    line_1 = CharBlock()
    line_2 = CharBlock()


class HomePageCarouselBlock(StructBlock):
    slides = ListBlock(HomePageCarouseSlideBlock)


class PeopleGroupBlock(StructBlock):
    title = CharBlock()
    person_list = ListBlock(PageChooserBlock(page_type="main.MainPersonPage"))


class ProgramBlock(StructBlock):
    icon = ImageChooserBlock(label="Ikona")
    title = CharBlock(label="Titulek článku programu")
    text = TextBlock(label="Obsah")


class ProgramGroupBlock(StructBlock):
    title = CharBlock(label="Titulek části programu")
    point_list = ListBlock(ProgramBlock(), label="Jednotlivé články programu")


class TweetsBlock(StructBlock):
    title = CharBlock(label="Titulek")


# NewsBlock - zatím asi hardcoded
# PeopleOverviewBlock - zatím asi hardcoded
# RegionOverviewBlock - zatím asi hardcoded


class PersonContactBlock(StructBlock):
    position = CharBlock(label="Název pozice", required=False)
    # email, phone?
    person = PageChooserBlock(
        label="Osoba",
        page_type=["district.DistrictPersonPage"],
    )

    class Meta:
        icon = "user"
        label = "Osoba s volitelnou pozicí"


class PersonContactBoxBlock(CTAMixin, StructBlock):
    title = CharBlock(label="Titulek")
    subtitle = CharBlock(label="Podtitulek")


# Footer
class LinkBlock(StructBlock):
    text = CharBlock()
    link = URLBlock()


class OtherLinksBlock(StructBlock):
    title = CharBlock()
    list = ListBlock(LinkBlock)


class SocialLinkBlock(LinkBlock):
    icon = CharBlock()  # TODO CSS class name or somthing better?


# TwitterCarouselBlock