437 lines
16 KiB
Python
437 lines
16 KiB
Python
import flet as ft
|
|
from utils import AppView, Title
|
|
from .functions import Theme, config
|
|
|
|
|
|
def Settings(page: ft.Page):
|
|
settingsContainer = ft.ListView(
|
|
expand=True,
|
|
)
|
|
settingsContainer.controls.append(ft.Text('General'))
|
|
|
|
def _on_name_change(e: ft.ControlEvent):
|
|
newName = ft.CupertinoTextField(value=config.get('general', 'name'))
|
|
dlg = ft.CupertinoAlertDialog(
|
|
modal=True,
|
|
title=ft.Text('Enter your Full name'),
|
|
content=newName,
|
|
actions=[
|
|
ft.CupertinoButton(
|
|
'Save',
|
|
on_click=lambda _: (
|
|
setattr(
|
|
dlg,
|
|
'open',
|
|
False,
|
|
),
|
|
config.save(
|
|
'general',
|
|
'name',
|
|
newName.value,
|
|
),
|
|
page.update(),
|
|
),
|
|
),
|
|
ft.CupertinoButton(
|
|
'Close',
|
|
on_click=lambda _: (
|
|
setattr(dlg, 'open', False),
|
|
page.update(),
|
|
),
|
|
),
|
|
],
|
|
)
|
|
page.dialog = dlg
|
|
dlg.open = True
|
|
page.update()
|
|
|
|
def _on_phone_change(e: ft.ControlEvent):
|
|
newPhone = ft.CupertinoTextField(value=config.get('general', 'phone'))
|
|
dlg = ft.CupertinoAlertDialog(
|
|
modal=True,
|
|
title=ft.Text('Enter your Mobile'),
|
|
content=newPhone,
|
|
actions=[
|
|
ft.CupertinoButton(
|
|
'Save',
|
|
on_click=lambda _: (
|
|
setattr(
|
|
dlg,
|
|
'open',
|
|
False,
|
|
),
|
|
config.save(
|
|
'general',
|
|
'phone',
|
|
newPhone.value,
|
|
),
|
|
page.update(),
|
|
),
|
|
),
|
|
ft.CupertinoButton(
|
|
'Close',
|
|
on_click=lambda _: (
|
|
setattr(dlg, 'open', False),
|
|
page.update(),
|
|
),
|
|
),
|
|
],
|
|
)
|
|
page.dialog = dlg
|
|
dlg.open = True
|
|
page.update()
|
|
|
|
def _on_email_change(e: ft.ControlEvent):
|
|
newEmail = ft.CupertinoTextField(value=config.get('general', 'email'))
|
|
dlg = ft.CupertinoAlertDialog(
|
|
modal=True,
|
|
title=ft.Text('Enter your Email'),
|
|
content=newEmail,
|
|
actions=[
|
|
ft.CupertinoButton(
|
|
'Save',
|
|
on_click=lambda _: (
|
|
setattr(
|
|
dlg,
|
|
'open',
|
|
False,
|
|
),
|
|
config.save(
|
|
'general',
|
|
'email',
|
|
newEmail.value,
|
|
),
|
|
page.update(),
|
|
),
|
|
),
|
|
ft.CupertinoButton(
|
|
'Close',
|
|
on_click=lambda _: (
|
|
setattr(dlg, 'open', False),
|
|
page.update(),
|
|
),
|
|
),
|
|
],
|
|
)
|
|
page.dialog = dlg
|
|
dlg.open = True
|
|
page.update()
|
|
|
|
def _on_nid_change(e: ft.ControlEvent):
|
|
newNID = ft.CupertinoTextField(value=config.get('general', 'nid'))
|
|
dlg = ft.CupertinoAlertDialog(
|
|
modal=True,
|
|
title=ft.Text('Enter your NID'),
|
|
content=newNID,
|
|
actions=[
|
|
ft.CupertinoButton(
|
|
'Save',
|
|
on_click=lambda _: (
|
|
setattr(
|
|
dlg,
|
|
'open',
|
|
False,
|
|
),
|
|
config.save(
|
|
'general',
|
|
'nid',
|
|
newNID.value,
|
|
),
|
|
page.update(),
|
|
),
|
|
),
|
|
ft.CupertinoButton(
|
|
'Close',
|
|
on_click=lambda _: (
|
|
setattr(dlg, 'open', False),
|
|
page.update(),
|
|
),
|
|
),
|
|
],
|
|
)
|
|
page.dialog = dlg
|
|
dlg.open = True
|
|
page.update()
|
|
|
|
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=_on_name_change,
|
|
),
|
|
),
|
|
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=_on_phone_change,
|
|
),
|
|
),
|
|
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=_on_email_change,
|
|
),
|
|
),
|
|
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=_on_nid_change,
|
|
),
|
|
),
|
|
],
|
|
),
|
|
)
|
|
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 _: page.go('/settings/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 _: page.go('/settings/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 _: page.go('/settings/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 _: page.go('/settings/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 _: page.go('/settings/medianet'),
|
|
),
|
|
),
|
|
],
|
|
),
|
|
)
|
|
settingsContainer.controls.append(appsSettings)
|
|
settingsContainer.controls.append(ft.Divider())
|
|
settingsContainer.controls.append(ft.Text('Theme'))
|
|
|
|
def _on_theme_change(e: ft.ControlEvent):
|
|
if page.theme_mode == ft.ThemeMode.LIGHT:
|
|
e.value = False
|
|
config.save('general', 'theme', 'dark')
|
|
else:
|
|
e.value = True
|
|
config.save('general', 'theme', 'light')
|
|
Theme(page).change(
|
|
(
|
|
ft.ThemeMode.DARK
|
|
if page.theme_mode == ft.ThemeMode.LIGHT
|
|
else ft.ThemeMode.LIGHT
|
|
),
|
|
)
|
|
|
|
themeSettings = ft.Container(
|
|
content=ft.Column(
|
|
controls=[
|
|
ft.Card(
|
|
content=ft.Container(
|
|
content=ft.Container(
|
|
ft.Switch(
|
|
label=' Switch to dark theme',
|
|
on_change=_on_theme_change,
|
|
value=True,
|
|
),
|
|
),
|
|
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,
|
|
],
|
|
)
|