Move AlarmSettings into ClockSettings + read settings from JSON file (WIP)

This commit is contained in:
Admar Schoonen 2023-04-23 19:34:03 +02:00
parent e6f76bbd90
commit c2d5c0d7d1
1 changed files with 120 additions and 155 deletions

275
clock.py
View File

@ -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))