Move AlarmSettings into ClockSettings + read settings from JSON file (WIP)
This commit is contained in:
parent
e6f76bbd90
commit
c2d5c0d7d1
275
clock.py
275
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))
|
||||
|
||||
|
|
Loading…
Reference in New Issue