Improved slider behaviour

This commit is contained in:
Mark Qvist 2023-10-29 14:07:03 +01:00
parent 833040221e
commit ad2dd3cba5
2 changed files with 34 additions and 5 deletions

View File

@ -1442,6 +1442,24 @@ class SidebandApp(MDApp):
self.root.ids.screen_manager.current = "settings_screen"
self.sideband.setstate("app.displaying", self.root.ids.screen_manager.current)
def interval_to_slider_val(self, interval):
try:
mseg = 72; hseg = 84; sv = 0
mm = mseg*5*60; hm = hseg*60*30+mm
if interval <= mm:
sv = interval/60/5
elif interval > mm and interval <= hm:
half_hours = interval/(60*30)-(mm/(60*30))
sv = mseg+half_hours
else:
days = (interval/86400)-((hseg*60*30)/84600)-(mm/86400)
sv = 1+mseg+hseg+days
except Exception as e:
return 43200
return sv
def settings_init(self, sender=None):
if not self.settings_ready:
if not self.root.ids.screen_manager.has_screen("settings_screen"):
@ -1554,7 +1572,18 @@ class SidebandApp(MDApp):
self.sideband.save_configuration()
def sync_interval_change(sender=None, event=None, save=True):
interval = (self.settings_screen.ids.settings_lxmf_sync_interval.value//300)*300
slider_val = int(self.settings_screen.ids.settings_lxmf_sync_interval.value)
mseg = 72; hseg = 84
if slider_val <= mseg:
interval = slider_val*5*60
elif slider_val > mseg and slider_val <= mseg+hseg:
h = (slider_val-mseg)/2; mm = mseg*5*60
interval = h*60*60+mm
else:
d = slider_val-hseg-mseg
hm = (hseg/2)*60*60; mm = mseg*5*60
interval = d*86400+hm+mm
interval_text = RNS.prettytime(interval)
pre = self.settings_screen.ids.settings_lxmf_sync_periodic.text
self.settings_screen.ids.settings_lxmf_sync_periodic.text = "Auto sync every "+interval_text
@ -1619,7 +1648,7 @@ class SidebandApp(MDApp):
sync_interval_change(sender=sender, event=event, save=False)
self.settings_screen.ids.settings_lxmf_sync_interval.bind(value=sync_interval_change_cb)
self.settings_screen.ids.settings_lxmf_sync_interval.bind(on_touch_up=sync_interval_change)
self.settings_screen.ids.settings_lxmf_sync_interval.value = self.sideband.config["lxmf_sync_interval"]
self.settings_screen.ids.settings_lxmf_sync_interval.value = self.interval_to_slider_val(self.sideband.config["lxmf_sync_interval"])
sync_interval_change(save=False)
if self.sideband.config["lxmf_sync_limit"] == None or self.sideband.config["lxmf_sync_limit"] == False:

View File

@ -1355,9 +1355,9 @@ MDScreen:
height: dp(68)
MDSlider
min: 300
max: 172800
value: 43200
min: 1
max: 214
value: 150
id: settings_lxmf_sync_interval
sensitivity: "all"
hint: False