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,
        ],
    )