Add a warning banner while changing settings
This commit is contained in:
parent
5616173290
commit
04e2352cd3
2 changed files with 74 additions and 27 deletions
|
@ -76,13 +76,15 @@ def main(page: ft.Page):
|
|||
"/behaviour": BehaviourPage(),
|
||||
"/settings": SettingsPage()
|
||||
}
|
||||
|
||||
page.views.clear()
|
||||
page.views.append(ft.View(route, [
|
||||
view = ft.View(route, [
|
||||
ft.Row([
|
||||
bar,
|
||||
ft.Container(content=routes.get(route, HomePage()), expand=True)
|
||||
], expand=True)
|
||||
]))
|
||||
])
|
||||
page.views.append(view)
|
||||
page.update()
|
||||
|
||||
def on_route_change(e):
|
||||
|
|
|
@ -4,12 +4,43 @@ from utils import setthemecolor, setlanguage
|
|||
from i18n import _
|
||||
|
||||
def SettingsPage():
|
||||
# Create the main container to hold everything
|
||||
main_container = ft.Container()
|
||||
|
||||
# Create a custom notification that we'll show/hide
|
||||
notification = ft.Container(
|
||||
visible=False,
|
||||
bgcolor=ft.colors.AMBER_100,
|
||||
border_radius=5,
|
||||
padding=10,
|
||||
margin=ft.margin.only(bottom=20, left=20, right=20),
|
||||
content=ft.Row([
|
||||
ft.Icon(ft.icons.INFO_OUTLINED, color=ft.colors.AMBER),
|
||||
ft.Text(_("Settings changed. Restart required for changes to take effect."),
|
||||
color=ft.colors.BLACK, expand=True),
|
||||
ft.IconButton(
|
||||
icon=ft.icons.CLOSE,
|
||||
icon_color=ft.colors.GREY_800,
|
||||
icon_size=20,
|
||||
on_click=lambda e: hide_notification()
|
||||
)
|
||||
])
|
||||
)
|
||||
|
||||
def hide_notification():
|
||||
notification.visible = False
|
||||
main_container.update()
|
||||
|
||||
def show_notification():
|
||||
notification.visible = True
|
||||
main_container.update()
|
||||
|
||||
def getlangoptions():
|
||||
return [
|
||||
ft.DropdownOption(key="Polski", content=ft.Text("Polski")),
|
||||
ft.DropdownOption(key="English", content=ft.Text("English")),
|
||||
]
|
||||
|
||||
|
||||
def getthemeoptions():
|
||||
return [
|
||||
ft.DropdownOption(key="RED", content=ft.Text(_("Red"))),
|
||||
|
@ -23,34 +54,48 @@ def SettingsPage():
|
|||
ft.DropdownOption(key="GREY", content=ft.Text(_("Grey"))),
|
||||
ft.DropdownOption(key="AMBER", content=ft.Text(_("Amber"))),
|
||||
ft.DropdownOption(key="CYAN", content=ft.Text(_("Cyan"))),
|
||||
]
|
||||
|
||||
]
|
||||
|
||||
def onlangchange(e):
|
||||
setlanguage(e)
|
||||
show_notification()
|
||||
|
||||
def onthemechange(e):
|
||||
setthemecolor(e.data)
|
||||
show_notification()
|
||||
|
||||
# Create a column with settings at top and notification container at bottom
|
||||
main_content = ft.Column([
|
||||
# Settings at the top
|
||||
ft.Container(
|
||||
content=ft.Column([
|
||||
ft.Text(_("Settings"), size=30, weight="bold"),
|
||||
ft.Row([
|
||||
ft.Text(_("Language (Requires restart)")),
|
||||
ft.Dropdown(
|
||||
width=200,
|
||||
label=(_("Language")),
|
||||
options=getlangoptions(),
|
||||
on_change=onlangchange
|
||||
),
|
||||
]),
|
||||
ft.Row([
|
||||
ft.Text(_("Theme (Requires restart)")),
|
||||
ft.Dropdown(
|
||||
width=200,
|
||||
label=(_("Theme")),
|
||||
options=getthemeoptions(),
|
||||
on_change=onthemechange
|
||||
)
|
||||
]),
|
||||
]),
|
||||
expand=True # Make this container expand to push the notification to the bottom
|
||||
),
|
||||
# Notification at the bottom
|
||||
notification
|
||||
], expand=True) # Make the column expand to fill the available space
|
||||
|
||||
return ft.Column([
|
||||
ft.Text(_("Settings"), size=30, weight="bold"),
|
||||
ft.Row([
|
||||
ft.Text(_("Language (Requires restart)")),
|
||||
ft.Dropdown(
|
||||
width=200,
|
||||
label=(_("Language")),
|
||||
options=getlangoptions(),
|
||||
on_change=onlangchange
|
||||
),
|
||||
]),
|
||||
|
||||
ft.Row([
|
||||
ft.Text(_("Theme (Requires restart)")),
|
||||
ft.Dropdown(
|
||||
width=200,
|
||||
label=(_("Theme")),
|
||||
options=getthemeoptions(),
|
||||
on_change=onthemechange
|
||||
)
|
||||
]),
|
||||
])
|
||||
main_container.content = main_content
|
||||
main_container.expand = True # Make the main container expand
|
||||
|
||||
return main_container
|
Loading…
Add table
Reference in a new issue