import flet as ft
from utils import AppView, Title
from .functions import Theme

def Settings(page: ft.Page):
    settingsContainer = ft.ListView(
        expand=True
    )
    settingsContainer.controls.append(ft.Text("General"))
    generalSettings = ft.Container(
        content=ft.Column(
            controls=[
                ft.Card(
                    content=ft.Container(
                        ink=True,
                        content=ft.Column(
                            [
                                ft.ListTile(
                                    leading=ft.Icon(ft.icons.PERSON),
                                    title=ft.Text("Username"),
                                    subtitle=ft.Text(
                                        "The greeting message"
                                    ),
                                ),
                            ]
                        ),
                        padding=10,
                        on_click=lambda _: print("clicked username"),
                    )
                ),
                ft.Card(
                    content=ft.Container(
                        ink=True,
                        content=ft.Column(
                            [
                                ft.ListTile(
                                    leading=ft.Icon(ft.icons.PHONE),
                                    title=ft.Text("Phone"),
                                    subtitle=ft.Text(
                                        "Personal Phone number"
                                    ),
                                ),
                            ]
                        ),
                        padding=10,
                        on_click=lambda _: print("clicked phone"),
                    )
                ),
                ft.Card(
                    content=ft.Container(
                        ink=True,
                        content=ft.Column(
                            [
                                ft.ListTile(
                                    leading=ft.Icon(ft.icons.EMAIL),
                                    title=ft.Text("Email"),
                                    subtitle=ft.Text(
                                        "Personal Email"
                                    ),
                                ),
                            ]
                        ),
                        padding=10,
                        on_click=lambda _: print("clicked email"),
                    )
                ),
                ft.Card(
                    content=ft.Container(
                        ink=True,
                        content=ft.Column(
                            [
                                ft.ListTile(
                                    leading=ft.Icon(ft.icons.CARD_TRAVEL),
                                    title=ft.Text("NID"),
                                    subtitle=ft.Text(
                                        "National Idenity Number"
                                    ),
                                ),
                            ]
                        ),
                        padding=10,
                        on_click=lambda _: print("clicked email"),
                    )
                ),
            ]
        )
    )
    settingsContainer.controls.append(
        generalSettings
    )
    settingsContainer.controls.append(ft.Divider())
    settingsContainer.controls.append(ft.Text("Notifications"))
    notificationsSettings = ft.Container(
        content=ft.Column(
            controls=[
                ft.Card(
                    content=ft.Container(
                        ink=True,
                        content=ft.Column(
                            [
                                ft.ListTile(
                                    leading=ft.Icon(ft.icons.TELEGRAM),
                                    title=ft.Text("Telegram"),
                                    subtitle=ft.Text(
                                        "Telegram Notifications for reminders and Bill pays"
                                    ),
                                ),
                            ]
                        ),
                        padding=10,
                        on_click=lambda _: print("clicked username"),
                    )
                ),
            ]
        )
    )
    settingsContainer.controls.append(
        notificationsSettings
    )
    settingsContainer.controls.append(ft.Divider())
    settingsContainer.controls.append(ft.Text("Apps"))
    appsSettings = ft.Container(
        content=ft.Column(
            controls=[
                ft.Card(
                    content=ft.Container(
                        ink=True,
                        content=ft.Column(
                            [
                                ft.ListTile(
                                    leading=ft.Image(
                                        border_radius=ft.border_radius.all(10),
                                        fit=ft.ImageFit.CONTAIN,
                                        src="https://asset.brandfetch.io/idZJsIaold/id9-VJM_HU.png"
                                    ),
                                    title=ft.Text("Dhiraagu"),
                                    subtitle=ft.Text(
                                        "An ISP Service."
                                    ),
                                ),
                            ]
                        ),
                        padding=10,
                        on_click=lambda _: print("clicked dhiraagu"),
                    )
                ),
                ft.Card(
                    content=ft.Container(
                        ink=True,
                        content=ft.Column(
                            [
                                ft.ListTile(
                                    leading=ft.Image(
                                        border_radius=ft.border_radius.all(10),
                                        fit=ft.ImageFit.CONTAIN,
                                        src="https://asset.brandfetch.io/idR1xFKHLD/idu6J-WQsm.jpeg"
                                    ),
                                    title=ft.Text("Ooredoo"),
                                    subtitle=ft.Text(
                                        "An ISP Service."
                                    ),
                                ),
                            ]
                        ),
                        padding=10,
                        on_click=lambda _: print("clicked ooredoo"),
                    )
                ),
                ft.Card(
                    content=ft.Container(
                        ink=True,
                        content=ft.Column(
                            [
                                ft.ListTile(
                                    leading=ft.Image(
                                        border_radius=ft.border_radius.all(10),
                                        fit=ft.ImageFit.CONTAIN,
                                        src="https://www.stelco.com.mv/wp-content/uploads/2022/02/unnamed.png"
                                    ),
                                    title=ft.Text("STELCO"),
                                    subtitle=ft.Text(
                                        "Electricity Bills"
                                    ),
                                ),
                            ]
                        ),
                        padding=10,
                        on_click=lambda _: print("clicked stelco"),
                    )
                ),
                ft.Card(
                    content=ft.Container(
                        ink=True,
                        content=ft.Column(
                            [
                                ft.ListTile(
                                    leading=ft.Image(
                                        border_radius=ft.border_radius.all(10),
                                        fit=ft.ImageFit.CONTAIN,
                                        src="https://asset.brandfetch.io/idOZWUOUm-/idNastd9Bg.jpeg"
                                    ),
                                    title=ft.Text("MWSC"),
                                    subtitle=ft.Text(
                                        "Water Bills"
                                    ),
                                ),
                            ]
                        ),
                        padding=10,
                        on_click=lambda _: print("clicked mwsc"),
                    )
                ),
                ft.Card(
                    content=ft.Container(
                        ink=True,
                        content=ft.Column(
                            [
                                ft.ListTile(
                                    leading=ft.Image(
                                        border_radius=ft.border_radius.all(10),
                                        fit=ft.ImageFit.CONTAIN,
                                        src="https://asset.brandfetch.io/idLMZnv5SC/iduyX4keYN.jpeg"
                                    ),
                                    title=ft.Text("Medianet"),
                                    subtitle=ft.Text(
                                        "Online Television Service"
                                    ),
                                ),
                            ]
                        ),
                        padding=10,
                        on_click=lambda _: print("clicked medianet"),
                    )
                ),
            ]
        )
    )
    settingsContainer.controls.append(appsSettings)
    settingsContainer.controls.append(ft.Divider())
    settingsContainer.controls.append(ft.Text("Theme"))
    def _on_theme_change(e):
        Theme(page).change()
    themeSettings = ft.Container(
        content=ft.Column(
            controls=[
                ft.Card(
                    content=ft.Container(
                        content=ft.Container(
                            ft.Switch(
                                value=True,
                                label="     Switch to dark theme",
                                on_change=_on_theme_change
                            ),
                        ),
                        padding=10,
                        on_click=None,
                    )
                ),
            ]
        )
    )
    settingsContainer.controls.append(themeSettings)
    return AppView(
        "/settings",
        [
            ft.AppBar(
                leading=ft.IconButton(
                    ft.icons.ARROW_BACK_IOS_NEW_ROUNDED,
                    on_click=lambda _: page.go("/")
                ),
                title=ft.Text(Title(str(__file__))),
                bgcolor=ft.colors.TRANSPARENT
            ),
            settingsContainer
        ],
    )