From c2d5c0d7d1f20a760bf02282651e51490a9bb379 Mon Sep 17 00:00:00 2001 From: admar Date: Sun, 23 Apr 2023 19:34:03 +0200 Subject: [PATCH] Move AlarmSettings into ClockSettings + read settings from JSON file (WIP) --- clock.py | 275 ++++++++++++++++++++++++------------------------------- 1 file changed, 120 insertions(+), 155 deletions(-) diff --git a/clock.py b/clock.py index c3aa608..f09176d 100644 --- a/clock.py +++ b/clock.py @@ -105,20 +105,6 @@ class Theme(): self.icon_settings_visible = "themes/" + x + "/settings_visible.png" self.icon_settings_not_visible = "themes/" + x + "/settings_not_visible.png" -class AlarmSettings(): - alarm_time = datetime.datetime(2022, 12, 10, 7, 30, 0, 0) - alarm_activated = False - alarm_playing = False - - alarm_modified = False - - seconds_to_sunrise = 30 * 60 # 30 minutes - - wake_up_volume = 15 - wake_up_brightness = 20 - reading_light_brightness = 1 - display_brightness = 10 - class Touch(): def __init__(self, x=None): if x is None: @@ -151,9 +137,40 @@ class TouchEvent(): self.touch = copy.copy(x) self.processed = False +class ClockSettings(): + def __init__(self): + f = open("settings.json") + j = json.load(f) + f.close() + + self.theme_selected = j["theme"] + self.wake_up_volume = j["volume"] + + self.alarm_time = datetime.datetime(2022, 12, 10, 7, 30, 0, 0) + self.alarm_activated = False + self.alarm_playing = False + + self.alarm_modified = False + + self.seconds_to_sunrise = 30 * 60 # 30 minutes + + self.wake_up_volume = 15 + self.wake_up_brightness = 20 + self.reading_light_brightness = 1 + self.display_brightness = 10 + + + def read(self): + ClockSettings() + + def write(self): + return + class MyClockWidget(FloatLayout): - theme_selected = "Dark" - theme = ObjectProperty(Theme(theme_selected)) + settings = ClockSettings() + + #theme_selected = "Dark" + theme = ObjectProperty(Theme(settings.theme_selected)) for x in ('', 'PCM'): try: @@ -230,10 +247,10 @@ class MyClockWidget(FloatLayout): is_arm = is_arm() def apply_theme(self): - if self.theme_selected == "Automatic": + if self.settings.theme_selected == "Automatic": self.theme = Theme("Light") else: - self.theme = Theme(self.theme_selected) + self.theme = Theme(self.settings.theme_selected) self.ids["settings_menu_wake_up_sound_label_top"].color = self.theme.color_font self.settings_menu_wake_up_sound_Ok_button.color = self.theme.color_font @@ -255,8 +272,7 @@ class MyClockWidget(FloatLayout): cols=2, ) - self.theme_selected = next(iter(self.themes)) - self.ids["settings_menu_theme_select_button"].text = self.theme_selected + self.ids["settings_menu_theme_select_button"].text = self.settings.theme_selected self.theme_checkboxes = [] self.theme_labels = [] @@ -306,8 +322,6 @@ class MyClockWidget(FloatLayout): self.apply_theme() def add_wake_up_sounds(self): - alarm_settings = App.get_running_app().alarm_settings - x = self.ids["settings_menu_wake_up_sound_boxlayout"] gl = GridLayout( cols=2, @@ -315,9 +329,9 @@ class MyClockWidget(FloatLayout): self.wake_up_sounds = WakeUpSounds - alarm_settings.sound_selected = next(iter(self.wake_up_sounds)) - alarm_settings.sound_source = self.wake_up_sounds[alarm_settings.sound_selected] - self.ids["settings_menu_wake_up_sound_select_button"].text = alarm_settings.sound_selected + self.settings.sound_selected = next(iter(self.wake_up_sounds)) + self.settings.sound_source = self.wake_up_sounds[self.settings.sound_selected] + self.ids["settings_menu_wake_up_sound_select_button"].text = self.settings.sound_selected self.wake_up_sound_checkboxes = [] self.wake_up_sound_labels = [] @@ -370,25 +384,22 @@ class MyClockWidget(FloatLayout): self.volume_curr = x def play_sound(self, source): - alarm_settings = App.get_running_app().alarm_settings - if (self.player.get_state() == vlc.State.NothingSpecial) or \ (self.player.get_state() == vlc.State.Paused) or \ (self.player.get_state() == vlc.State.Stopped) or \ (self.player.get_state() == vlc.State.Ended) or \ (self.player.get_state() == vlc.State.Error): print("beep beep! " + source) - self.volume_target = alarm_settings.wake_up_volume / 20.0 + self.volume_target = self.settings.wake_up_volume / 20.0 media = self.vlc.media_new(source) self.player.set_media(media) self.player.play() - alarm_settings.alarm_playing = True + self.settings.alarm_playing = True def stop_sound(self): self.player.stop() - alarm_settings = App.get_running_app().alarm_settings - alarm_settings.alarm_playing = False + self.settings.alarm_playing = False def set_backlight(self, x): offset = 3 @@ -415,10 +426,8 @@ class MyClockWidget(FloatLayout): Add number labels when added in widget hierarchy """ - alarm_settings = App.get_running_app().alarm_settings - if self.view == "set_alarm": - t = alarm_settings.alarm_time + t = self.settings.alarm_time else: t = datetime.datetime.now() @@ -448,8 +457,6 @@ class MyClockWidget(FloatLayout): self.draw_list_curr_frame.append(["Rectangle", background.canvas, background.size, background.pos, None]) def update_face(self): - alarm_settings = App.get_running_app().alarm_settings - face_plate = self.ids["face_plate"] self.draw_list_curr_frame.append(["canvas.clear()", face_plate]) with face_plate.canvas: @@ -457,7 +464,7 @@ class MyClockWidget(FloatLayout): self.draw_list_curr_frame.append(["Ellipse", face_plate.canvas, face_plate.size, face_plate.pos]) if self.view == "set_alarm": - t = alarm_settings.alarm_time + t = self.settings.alarm_time else: t = datetime.datetime.now() @@ -506,9 +513,7 @@ class MyClockWidget(FloatLayout): self.draw_list_curr_frame.append(["Rectangle", light_button.canvas, light_button.size, light_button.pos, source]) def update_play_button(self): - alarm_settings = App.get_running_app().alarm_settings - - if alarm_settings.alarm_playing: + if self.settings.alarm_playing: source = self.theme.icon_media_playing rgb = [1.0, 1.0, 1.0] else: @@ -522,9 +527,7 @@ class MyClockWidget(FloatLayout): self.draw_list_curr_frame.append(["Rectangle", play_button.canvas, play_button.size, play_button.pos, source]) def update_set_alarm_button(self): - alarm_settings = App.get_running_app().alarm_settings - - if (self.view == "set_alarm") or alarm_settings.alarm_activated: + if (self.view == "set_alarm") or self.settings.alarm_activated: source = self.theme.icon_alarm_on rgb = [1.0, 1.0, 1.0] else: @@ -538,8 +541,6 @@ class MyClockWidget(FloatLayout): self.draw_list_curr_frame.append(["Rectangle", set_alarm_button.canvas, set_alarm_button.size, set_alarm_button.pos, source]) def update_settings_button(self): - alarm_settings = App.get_running_app().alarm_settings - if (self.view.startswith("settings_menu")): source = self.theme.icon_settings_visible rgb = [1.0, 1.0, 1.0] @@ -569,14 +570,12 @@ class MyClockWidget(FloatLayout): return led_color def update_backlight(self): - alarm_settings = App.get_running_app().alarm_settings - # make sure brightness of display is never lower than intensity of leds brightness_min = 20 * self.intensity_curr - if alarm_settings.display_brightness < brightness_min: + if self.settings.display_brightness < brightness_min: self.set_backlight(brightness_min) else: - self.set_backlight(alarm_settings.display_brightness) + self.set_backlight(self.settings.display_brightness) def set_leds(self): if self.intensity_prev != self.intensity_curr: @@ -596,17 +595,15 @@ class MyClockWidget(FloatLayout): # print(self.light_state + ", t: " + str(self.seconds_to_next_alarm) + ", i: " + str(self.intensity_curr) + ", rgbw: " + str(rgbw)) def sunrise(self): - alarm_settings = App.get_running_app().alarm_settings - if self.view == "set_alarm": # Do not simulate sunrise when adjusting alarm time return if self.seconds_to_next_alarm < 0.1: - intensity_target = (alarm_settings.wake_up_brightness / 20.0) + intensity_target = (self.settings.wake_up_brightness / 20.0) new_state = "on" else: - intensity_target = (1.0 - self.seconds_to_next_alarm / alarm_settings.seconds_to_sunrise) * (alarm_settings.wake_up_brightness / 20.0) + intensity_target = (1.0 - self.seconds_to_next_alarm / self.settings.seconds_to_sunrise) * (self.settings.wake_up_brightness / 20.0) new_state = "sunrise" # only adjust intensity_target if new intensity_target is higher than current intesity, to avoid dimming light when reading mode is on @@ -615,17 +612,15 @@ class MyClockWidget(FloatLayout): self.light_state = new_state def process_led_state(self): - alarm_settings = App.get_running_app().alarm_settings - - if (alarm_settings.alarm_activated) and (self.seconds_to_next_alarm < alarm_settings.seconds_to_sunrise): + if (self.settings.alarm_activated) and (self.seconds_to_next_alarm < self.settings.seconds_to_sunrise): self.sunrise() else: if (self.light_state == "off"): self.intensity_target = 0 elif (self.light_state == "reading"): - self.intensity_target = alarm_settings.reading_light_brightness / 20.0 + self.intensity_target = self.settings.reading_light_brightness / 20.0 elif (self.light_state == "on"): - self.intensity_target = alarm_settings.wake_up_brightness / 20.0 + self.intensity_target = self.settings.wake_up_brightness / 20.0 weight = 0.05 intensity_next = weight * self.intensity_target + (1 - weight) * self.intensity_curr @@ -638,9 +633,7 @@ class MyClockWidget(FloatLayout): self.intensity_curr = self.intensity_curr + step def process_volume_state(self): - alarm_settings = App.get_running_app().alarm_settings - - if (alarm_settings.alarm_playing) and (self.player.get_state() == vlc.State.Playing): + if (self.settings.alarm_playing) and (self.player.get_state() == vlc.State.Playing): step = 0.005 if (self.volume_curr <= self.volume_target): @@ -659,28 +652,24 @@ class MyClockWidget(FloatLayout): self.stop_sound() def check_play_sound(self): - alarm_settings = App.get_running_app().alarm_settings - - if alarm_settings.alarm_activated == False: + if self.settings.alarm_activated == False: return - if (self.seconds_to_next_alarm < 0.1) or (alarm_settings.alarm_playing == True): - if alarm_settings.sound_source != "": - self.play_sound(alarm_settings.sound_source) + if (self.seconds_to_next_alarm < 0.1) or (self.settings.alarm_playing == True): + if self.settings.sound_source != "": + self.play_sound(self.settings.sound_source) def calc_seconds_to_next_alarm(self): - alarm_settings = App.get_running_app().alarm_settings - - if alarm_settings.alarm_activated == False: + if self.settings.alarm_activated == False: return # Make sure alarm_time is in the future but not more than 24 h from now now = datetime.datetime.now() - d = alarm_settings.alarm_time - now - alarm_settings.alarm_time -= datetime.timedelta(days=d.days) + d = self.settings.alarm_time - now + self.settings.alarm_time -= datetime.timedelta(days=d.days) # Calculate number of seconds until next alarm - d = alarm_settings.alarm_time - now + d = self.settings.alarm_time - now self.seconds_to_next_alarm = d.days * 24 * 3600 + d.seconds + d.microseconds / 1000000.0 def check_alarm(self): @@ -695,10 +684,9 @@ class MyClockWidget(FloatLayout): self.draw_list_curr_frame.append(["self.hide_widget", self.ids["face_plate"], False]) self.draw_list_curr_frame.append(["self.hide_widget", self.ids["face"], False]) self.draw_list_curr_frame.append(["self.hide_widget", self.ids["hands"], False]) - alarm_settings = App.get_running_app().alarm_settings if self.view == "set_alarm": - t = alarm_settings.alarm_time + t = self.settings.alarm_time else: t = datetime.datetime.now() @@ -712,7 +700,7 @@ class MyClockWidget(FloatLayout): with hands.canvas: if self.view == "set_alarm": if self.grabbed != "" or self.set_alarm_timeout_counter < 1 * update_rate or \ - self.set_alarm_timeout_counter % update_rate <= update_rate / 2 or alarm_settings.alarm_modified == False: + self.set_alarm_timeout_counter % update_rate <= update_rate / 2 or self.settings.alarm_modified == False: self.draw_list_curr_frame.append(["Color", hands.canvas, self.theme.color_alarm_hands_hours[0], self.theme.color_alarm_hands_hours[1], self.theme.color_alarm_hands_hours[2]]) self.draw_list_curr_frame.append(["Line", hands.canvas, [hands.center_x, hands.center_y, hours_hand.x, hours_hand.y], 3, "round"]) self.draw_list_curr_frame.append(["Color", hands.canvas, self.theme.color_alarm_hands_minutes[0], self.theme.color_alarm_hands_minutes[1], self.theme.color_alarm_hands_minutes[2]]) @@ -726,9 +714,9 @@ class MyClockWidget(FloatLayout): self.set_alarm_timeout_counter = 0 self.view_active_since = time.time() - if alarm_settings.alarm_modified: - alarm_settings.alarm_activated = True - alarm_settings.alarm_modified = False + if self.settings.alarm_modified: + self.settings.alarm_activated = True + self.settings.alarm_modified = False else: self.draw_list_curr_frame.append(["Color", hands.canvas, self.theme.color_clock_hands_hours[0], self.theme.color_clock_hands_hours[1], self.theme.color_clock_hands_hours[2]]) self.draw_list_curr_frame.append(["Line", hands.canvas, [hands.center_x, hands.center_y, hours_hand.x, hours_hand.y], 3, "round"]) @@ -883,16 +871,15 @@ class MyClockWidget(FloatLayout): def settings_menu_wake_up_sound_select_button_cb(self): self.settings_menu_wake_up_sound_select_button_cb_hack = True - alarm_settings = App.get_running_app().alarm_settings for c in self.wake_up_sound_checkboxes: c.active = False - print("sound selected: " + alarm_settings.sound_selected) + print("sound selected: " + self.settings.sound_selected) n = 0 for i in self.wake_up_sounds: - if i == alarm_settings.sound_selected: + if i == self.settings.sound_selected: self.wake_up_sound_checkboxes[n].active = True n = n + 1 @@ -900,9 +887,7 @@ class MyClockWidget(FloatLayout): self.view_active_since = time.time() def settings_menu_wake_up_sound_Ok_button_cb(self, event): - alarm_settings = App.get_running_app().alarm_settings - - self.ids["settings_menu_wake_up_sound_select_button"].text = alarm_settings.sound_selected + self.ids["settings_menu_wake_up_sound_select_button"].text = self.settings.sound_selected self.view = "settings_menu" self.view_active_since = time.time() @@ -919,11 +904,9 @@ class MyClockWidget(FloatLayout): break k = k + 1 - alarm_settings = App.get_running_app().alarm_settings - if self.settings_menu_wake_up_sound_select_button_cb_hack: self.settings_menu_wake_up_sound_select_button_cb_hack = False - if not (alarm_settings.sound_selected == "" and sound != ""): + if not (self.settings.sound_selected == "" and sound != ""): return if value == True: @@ -931,8 +914,8 @@ class MyClockWidget(FloatLayout): else: print("You deselected " + sound) - alarm_settings.sound_source = self.wake_up_sounds[sound] - alarm_settings.sound_selected = sound + self.settings.sound_source = self.wake_up_sounds[sound] + self.settings.sound_selected = sound @@ -943,12 +926,12 @@ class MyClockWidget(FloatLayout): for c in self.theme_checkboxes: c.active = False - print("theme selected: " + self.theme_selected) + print("theme selected: " + self.settings.theme_selected) n = 0 print("self.themes: " + str(self.themes)) for i in self.themes: - if i == self.theme_selected: + if i == self.settings.theme_selected: self.theme_checkboxes[n].active = True n = n + 1 @@ -956,7 +939,7 @@ class MyClockWidget(FloatLayout): self.view_active_since = time.time() def settings_menu_theme_Ok_button_cb(self, event): - self.ids["settings_menu_theme_select_button"].text = self.theme_selected + self.ids["settings_menu_theme_select_button"].text = self.settings.theme_selected self.view = "settings_menu" self.view_active_since = time.time() @@ -975,7 +958,7 @@ class MyClockWidget(FloatLayout): if self.settings_menu_theme_select_button_cb_hack: self.settings_menu_theme_select_button_cb_hack = False - if not (self.theme_selected == "" and theme != ""): + if not (self.settings.theme_selected == "" and theme != ""): return if value == True: @@ -983,64 +966,52 @@ class MyClockWidget(FloatLayout): else: print("You deselected " + theme) - self.theme_selected = theme + self.settings.theme_selected = theme self.apply_theme() def volume_slider_value(self, *args): - alarm_settings = App.get_running_app().alarm_settings - - alarm_settings.wake_up_volume = int(args[1]) - - print("Volume changed to " + str(alarm_settings.wake_up_volume)) + self.settings.wake_up_volume = int(args[1]) old_vol = self.mixer.getvolume() - if (alarm_settings.alarm_playing) and (self.player.get_state() == vlc.State.Playing): + if (self.settings.alarm_playing) and (self.player.get_state() == vlc.State.Playing): # immediately set volume when audio is playing - self.volume_target = alarm_settings.wake_up_volume / 20.0 + self.volume_target = self.settings.wake_up_volume / 20.0 self.set_volume(self.volume_target) new_vol = self.mixer.getvolume() - print("HW volume changed from " + str(old_vol) + " to " + str(new_vol)) def wake_up_brightness_slider_value(self, *args): - alarm_settings = App.get_running_app().alarm_settings - - alarm_settings.wake_up_brightness = int(args[1]) - print("Wake up brightness changed to " + str(alarm_settings.wake_up_brightness)) + self.settings.wake_up_brightness = int(args[1]) + print("Wake up brightness changed to " + str(self.settings.wake_up_brightness)) def reading_light_brightness_slider_value(self, *args): - alarm_settings = App.get_running_app().alarm_settings - - alarm_settings.reading_light_brightness = int(args[1]) + self.settings.reading_light_brightness = int(args[1]) if (self.light_state == "reading"): - self.intensity_target = alarm_settings.reading_light_brightness / 20.0 - print("Reading light brightness changed to " + str(alarm_settings.reading_light_brightness)) + self.intensity_target = self.settings.reading_light_brightness / 20.0 + print("Reading light brightness changed to " + str(self.settings.reading_light_brightness)) def display_brightness_slider_value(self, *args): - alarm_settings = App.get_running_app().alarm_settings - - alarm_settings.display_brightness = int(args[1]) + self.settings.display_brightness = int(args[1]) def on_light_button_pressed(self): print("light button pressed from view " + self.view) - alarm_settings = App.get_running_app().alarm_settings if self.light_state == "off": self.light_state = "reading" - self.intensity_target = alarm_settings.reading_light_brightness / 20.0 + self.intensity_target = self.settings.reading_light_brightness / 20.0 elif self.light_state == "reading": self.light_state = "off" self.intensity_target = 0 - if alarm_settings.alarm_playing: + if self.settings.alarm_playing: self.volume_target = 0 elif self.light_state == "sunrise": # allow enabling reading mode when sunrise has not yet reached that level - if self.intensity_target < alarm_settings.reading_light_brightness / 20.0: + if self.intensity_target < self.settings.reading_light_brightness / 20.0: self.light_state = "reading" - self.intensity_target = alarm_settings.reading_light_brightness / 20.0 + self.intensity_target = self.settings.reading_light_brightness / 20.0 else: self.light_state = "off" @@ -1050,27 +1021,26 @@ class MyClockWidget(FloatLayout): def on_play_button_pressed(self): print("play button pressed from view " + self.view) - alarm_settings = App.get_running_app().alarm_settings - if alarm_settings.alarm_playing: + + if self.settings.alarm_playing: self.volume_target = 0 else: - self.play_sound(alarm_settings.sound_source) + self.play_sound(self.settings.sound_source) def on_alarm_button_pressed(self): print("alarm button pressed from view " + self.view) - alarm_settings = App.get_running_app().alarm_settings - alarm_settings.alarm_modified = False + self.settings.alarm_modified = False self.set_alarm_timeout_counter = 0 if self.view == "set_alarm": self.view = "clock" self.view_active_since = time.time() - alarm_settings.alarm_activated = False + self.settings.alarm_activated = False else: self.view = "set_alarm" self.view_active_since = time.time() - alarm_settings.alarm_activated = True + self.settings.alarm_activated = True def on_settings_button_pressed(self): print("settings button pressed from view " + self.view) @@ -1085,7 +1055,6 @@ class MyClockWidget(FloatLayout): def touch_up_function(self, touch): self.grabbed = "" self.light_button_move_init = [] - alarm_settings = App.get_running_app().alarm_settings if (self.view == "set_alarm") and (self.grabbed == "hour" or self.grabbed == "minute"): @@ -1097,8 +1066,6 @@ class MyClockWidget(FloatLayout): if self.grabbed == "": return - alarm_settings = App.get_running_app().alarm_settings - self.alarm_set_timeout = 0 touch_curr = Touch(touch) @@ -1122,7 +1089,7 @@ class MyClockWidget(FloatLayout): self.touch_prev = copy.deepcopy(touch_curr) if self.grabbed == "minute": - alarm_settings.alarm_modified = True + self.settings.alarm_modified = True self.set_alarm_timeout_counter = 0 minute = round(-touch_curr.angle * 30 + 15) @@ -1132,9 +1099,9 @@ class MyClockWidget(FloatLayout): minute -= 60 # Sometimes the hand is 30 minutes ahead / behind the place where the user touches the screen --> correct for this behavior - if (((minute - alarm_settings.alarm_time.minute) >= 15) and ((minute - alarm_settings.alarm_time.minute) <= 45)): + if (((minute - self.settings.alarm_time.minute) >= 15) and ((minute - self.settings.alarm_time.minute) <= 45)): minute = minute - 30 - elif (((minute - alarm_settings.alarm_time.minute) <= -15) and ((minute - alarm_settings.alarm_time.minute) >= -45)): + elif (((minute - self.settings.alarm_time.minute) <= -15) and ((minute - self.settings.alarm_time.minute) >= -45)): minute = minute + 30 while minute < 0: @@ -1143,10 +1110,10 @@ class MyClockWidget(FloatLayout): minute -= 60 # hour correction - hour = alarm_settings.alarm_time.hour - if alarm_settings.alarm_time.minute >= 55 and minute <= 5: + hour = self.settings.alarm_time.hour + if self.settings.alarm_time.minute >= 55 and minute <= 5: hour += 1 - elif alarm_settings.alarm_time.minute <= 5 and minute >= 55: + elif self.settings.alarm_time.minute <= 5 and minute >= 55: hour -= 1 while hour < 0: @@ -1154,11 +1121,11 @@ class MyClockWidget(FloatLayout): while hour >= 24: hour -= 24 - alarm_settings.alarm_time = datetime.datetime(alarm_settings.alarm_time.year, \ - alarm_settings.alarm_time.month, alarm_settings.alarm_time.day, \ - hour, minute, alarm_settings.alarm_time.second, 0) + self.settings.alarm_time = datetime.datetime(self.settings.alarm_time.year, \ + self.settings.alarm_time.month, self.settings.alarm_time.day, \ + hour, minute, self.settings.alarm_time.second, 0) elif self.grabbed == "hour": - alarm_settings.alarm_modified = True + self.settings.alarm_modified = True self.set_alarm_timeout_counter = 0 hour = round(-touch_curr.angle * 6 + 3) @@ -1168,9 +1135,9 @@ class MyClockWidget(FloatLayout): hour -= 12 # Sometimes the hand is 6 hours ahead / behind the place where the user touches the screen --> correct for this behavior - if (((hour - alarm_settings.alarm_time.hour) >= 3) and ((hour - alarm_settings.alarm_time.hour) <= 9)): + if (((hour - self.settings.alarm_time.hour) >= 3) and ((hour - self.settings.alarm_time.hour) <= 9)): hour = hour - 6 - if (((hour - alarm_settings.alarm_time.hour) <= -3) and ((hour - alarm_settings.alarm_time.hour) >= -9)): + if (((hour - self.settings.alarm_time.hour) <= -3) and ((hour - self.settings.alarm_time.hour) >= -9)): hour = hour + 6 while hour < 0: @@ -1178,24 +1145,24 @@ class MyClockWidget(FloatLayout): while hour >= 12: hour -= 12 - if alarm_settings.alarm_time.hour >= 12: + if self.settings.alarm_time.hour >= 12: hour += 12 # AM / PM correction - if alarm_settings.alarm_time.hour == 11 and hour == 0: + if self.settings.alarm_time.hour == 11 and hour == 0: hour = 12 - elif alarm_settings.alarm_time.hour == 23 and hour == 12: + elif self.settings.alarm_time.hour == 23 and hour == 12: hour = 0 - elif alarm_settings.alarm_time.hour == 0 and hour == 11: + elif self.settings.alarm_time.hour == 0 and hour == 11: hour = 23 - elif alarm_settings.alarm_time.hour == 12 and hour == 23: + elif self.settings.alarm_time.hour == 12 and hour == 23: hour = 11 - minute = alarm_settings.alarm_time.minute - alarm_settings.alarm_time = datetime.datetime(alarm_settings.alarm_time.year, \ - alarm_settings.alarm_time.month, alarm_settings.alarm_time.day, \ - hour, alarm_settings.alarm_time.minute, alarm_settings.alarm_time.second, 0) + minute = self.settings.alarm_time.minute + self.settings.alarm_time = datetime.datetime(self.settings.alarm_time.year, \ + self.settings.alarm_time.month, self.settings.alarm_time.day, \ + hour, self.settings.alarm_time.minute, self.settings.alarm_time.second, 0) elif self.grabbed == "light_button": if len(self.light_button_move_init) == 0: @@ -1219,8 +1186,7 @@ class MyClockWidget(FloatLayout): super(MyClockWidget, self).on_touch_move(touch) def touch_down_function(self, touch): - alarm_settings = App.get_running_app().alarm_settings - t = alarm_settings.alarm_time + t = self.settings.alarm_time hands = self.ids["hands"] minutes_hand = self.position_on_clock(t.minute/60+t.second/3600, length=0.40*hands.size[0]) hours_hand = self.position_on_clock(t.hour/12 + t.minute/720, length=0.35*hands.size[0]) @@ -1321,7 +1287,6 @@ class MyClockWidget(FloatLayout): return super(MyClockWidget, self).on_touch_up(touch) class MyApp(App): - alarm_settings = AlarmSettings() update_rate = 60.0 def build(self): @@ -1341,7 +1306,7 @@ class MyApp(App): # Volume is in 0-1.0 range old_vol = clock_widget.mixer.getvolume() - clock_widget.volume_target = self.alarm_settings.wake_up_volume / 20.0 + clock_widget.volume_target = clock_widget.settings.wake_up_volume / 20.0 new_vol = clock_widget.mixer.getvolume() print("HW volume changed from " + str(old_vol) + " to " + str(new_vol))