Add option to select wake up sound
This commit is contained in:
parent
bb6f49d024
commit
ab2906b1a6
122
clock.py
122
clock.py
|
@ -9,6 +9,7 @@ from kivy.app import App
|
|||
from kivy.uix.floatlayout import FloatLayout
|
||||
from kivy.uix.label import Label
|
||||
from kivy.uix.slider import Slider
|
||||
from kivy.uix.button import Button
|
||||
from kivy.clock import Clock
|
||||
from kivy.lang import Builder
|
||||
from kivy.graphics import Color, Line, Rectangle
|
||||
|
@ -89,11 +90,10 @@ Builder.load_string('''
|
|||
halign: "left"
|
||||
valign: "middle"
|
||||
text_size: self.size
|
||||
Label:
|
||||
text:"wake up sound"
|
||||
halign: "left"
|
||||
valign: "middle"
|
||||
text_size: self.size
|
||||
Button:
|
||||
id: settings_menu_wake_up_sound_select_button
|
||||
on_press: root.settings_menu_wake_up_sound_select_button_cb()
|
||||
text: str(app.alarm_settings.sound_selected)
|
||||
Label:
|
||||
text:"Wake up brightness"
|
||||
halign: "left"
|
||||
|
@ -163,6 +163,47 @@ Builder.load_string('''
|
|||
halign: "left"
|
||||
valign: "middle"
|
||||
text_size: self.size
|
||||
FloatLayout
|
||||
id: settings_menu_wake_up_sound
|
||||
size_hint: None, None
|
||||
pos_hint: {"center_x":0.5, "center_y":0.5}
|
||||
size: 0.7*min(root.size), 0.7*min(root.size)
|
||||
canvas:
|
||||
Color:
|
||||
rgb: 0.1, 0.1, 0.1
|
||||
Rectangle:
|
||||
size: self.size
|
||||
pos: self.pos
|
||||
BoxLayout:
|
||||
orientation: "vertical"
|
||||
pos_hint: {"center_x":0.5, "center_y":0.5}
|
||||
Label:
|
||||
text: "Select wake up sound"
|
||||
GridLayout:
|
||||
cols: 2
|
||||
CheckBox:
|
||||
group: "settings_menu_wake_up_sound"
|
||||
on_active: root.settings_menu_wake_up_sound_cb(self, self.active, "Birds")
|
||||
id: settings_menu_wake_up_sound_Birds
|
||||
Label:
|
||||
text: "Birds"
|
||||
halign: "left"
|
||||
valign: "middle"
|
||||
text_size: self.size
|
||||
active: True
|
||||
CheckBox:
|
||||
group: "settings_menu_wake_up_sound"
|
||||
on_active: root.settings_menu_wake_up_sound_cb(self, self.active, "NPO Radio 1")
|
||||
id: settings_menu_wake_up_sound_NpoRadio1
|
||||
Label:
|
||||
text: "NPO Radio 1"
|
||||
halign: "left"
|
||||
valign: "middle"
|
||||
text_size: self.size
|
||||
Button:
|
||||
id: settings_menu_wake_up_sound_Ok_button
|
||||
on_press: root.settings_menu_wake_up_sound_Ok_button_cb()
|
||||
text: "Ok"
|
||||
''')
|
||||
|
||||
Position = collections.namedtuple('Position', 'x y')
|
||||
|
@ -181,7 +222,9 @@ class AlarmSettings():
|
|||
|
||||
alarm_modified = False
|
||||
led_color = [0, 0, 0]
|
||||
# sound_selected = "NPO Radio 1"
|
||||
# sound_source = "https://icecast.omroep.nl/radio1-bb-mp3"
|
||||
sound_selected = "Birds"
|
||||
sound_source = "Woodpecker Chirps - QuickSounds.com.mp3"
|
||||
seconds_to_sunrise = 30 * 60
|
||||
|
||||
|
@ -200,9 +243,17 @@ class MyClockWidget(FloatLayout):
|
|||
seconds_to_next_alarm = 0
|
||||
led_color = [0, 0, 0]
|
||||
|
||||
# view can be "clock" "set_alarm" "settings" or "calendar"
|
||||
# view can be one of the following strings:
|
||||
# - "clock"
|
||||
# - "set_alarm"
|
||||
# - "settings_menu"
|
||||
# - "settings_menu_wake_up_sound"
|
||||
# - "calendar"
|
||||
view = "clock"
|
||||
|
||||
# we need a dirty hack to sensure that radio button is always in sync with selected setting
|
||||
settings_menu_wake_up_sound_select_button_cb_hack = False
|
||||
|
||||
def hide_widget(self, widget, hide=True):
|
||||
if hasattr(widget, 'saved_attrs'):
|
||||
if not hide:
|
||||
|
@ -298,7 +349,7 @@ class MyClockWidget(FloatLayout):
|
|||
app = App.get_running_app()
|
||||
alarm_settings = app.alarm_settings
|
||||
|
||||
if (self.view == "settings"):
|
||||
if (self.view.startswith("settings_menu")):
|
||||
source = 'settings_visible.png'
|
||||
rgb = [0.9, 0.0, 0.0]
|
||||
else:
|
||||
|
@ -342,6 +393,9 @@ class MyClockWidget(FloatLayout):
|
|||
if alarm_settings.alarm_activated == False:
|
||||
return
|
||||
|
||||
if alarm_settings.sound_source == "":
|
||||
return
|
||||
|
||||
if self.seconds_to_next_alarm < 0.1 and sound_process is None:
|
||||
sound_process = Process(target=play_sound, args=(alarm_settings.sound_source,))
|
||||
sound_process.start()
|
||||
|
@ -414,7 +468,10 @@ class MyClockWidget(FloatLayout):
|
|||
Line(points=[hands.center_x, hands.center_y, seconds_hand.x, seconds_hand.y], width=1, cap="round")
|
||||
|
||||
def update_settings(self):
|
||||
self.hide_widget(self.ids["settings_menu"], False)
|
||||
if self.view == "settings_menu":
|
||||
self.hide_widget(self.ids["settings_menu"], False)
|
||||
elif self.view == "settings_menu_wake_up_sound":
|
||||
self.hide_widget(self.ids["settings_menu_wake_up_sound"], False)
|
||||
|
||||
def update_display(self, *args):
|
||||
self.check_alarm()
|
||||
|
@ -423,14 +480,55 @@ class MyClockWidget(FloatLayout):
|
|||
self.hide_widget(self.ids["face"], True)
|
||||
self.hide_widget(self.ids["hands"], True)
|
||||
self.hide_widget(self.ids["settings_menu"], True)
|
||||
self.hide_widget(self.ids["settings_menu_wake_up_sound"], True)
|
||||
|
||||
self.update_set_alarm_button()
|
||||
self.update_settings_button()
|
||||
if self.view == "clock" or self.view == "set_alarm":
|
||||
self.update_clock()
|
||||
elif self.view == "settings":
|
||||
elif self.view.startswith("settings_menu"):
|
||||
self.update_settings()
|
||||
|
||||
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
|
||||
self.ids["settings_menu_wake_up_sound_Birds"].active = False
|
||||
self.ids["settings_menu_wake_up_sound_NpoRadio1"].active = False
|
||||
print("sound selected: " + alarm_settings.sound_selected)
|
||||
if alarm_settings.sound_selected == "Birds":
|
||||
self.ids["settings_menu_wake_up_sound_Birds"].active = True
|
||||
elif alarm_settings.sound_selected == "NPO Radio 1":
|
||||
self.ids["settings_menu_wake_up_sound_NpoRadio1"].active = True
|
||||
|
||||
self.view = "settings_menu_wake_up_sound"
|
||||
|
||||
def settings_menu_wake_up_sound_Ok_button_cb(self):
|
||||
alarm_settings = App.get_running_app().alarm_settings
|
||||
self.ids["settings_menu_wake_up_sound_select_button"].text = alarm_settings.sound_selected
|
||||
self.view = "settings_menu"
|
||||
|
||||
def settings_menu_wake_up_sound_cb(self, instance, value, sound):
|
||||
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 != ""):
|
||||
return
|
||||
|
||||
if value == True:
|
||||
print("You selected " + sound)
|
||||
else:
|
||||
print("You deselected " + sound)
|
||||
|
||||
alarm_settings.sound_source = ""
|
||||
alarm_settings.sound_selected = ""
|
||||
if self.ids["settings_menu_wake_up_sound_Birds"].active:
|
||||
alarm_settings.sound_selected = sound
|
||||
alarm_settings.sound_source = "Woodpecker Chirps - QuickSounds.com.mp3"
|
||||
elif self.ids["settings_menu_wake_up_sound_NpoRadio1"].active:
|
||||
alarm_settings.sound_selected = sound
|
||||
alarm_settings.sound_source = "https://icecast.omroep.nl/radio1-bb-mp3"
|
||||
|
||||
def volume_slider_value(self, *args):
|
||||
alarm_settings = App.get_running_app().alarm_settings
|
||||
alarm_settings.volume = int(args[1])
|
||||
|
@ -475,8 +573,8 @@ class MyClockWidget(FloatLayout):
|
|||
|
||||
def on_settings_button_pressed(self):
|
||||
print("settings button pressed from view " + self.view)
|
||||
if self.view != "settings":
|
||||
self.view = "settings"
|
||||
if self.view != "settings_menu":
|
||||
self.view = "settings_menu"
|
||||
else:
|
||||
self.view = "clock"
|
||||
print("view updated to " + self.view)
|
||||
|
@ -574,7 +672,7 @@ class MyClockWidget(FloatLayout):
|
|||
elif (hours_hand.x - 0.1 * self.size[0] <= touch.pos[0] <= hours_hand.x + 0.1 * self.size[0]) and \
|
||||
(hours_hand.y - 0.1 * self.size[1] <= touch.pos[1] <= hours_hand.y + 0.1 * self.size[1]):
|
||||
self.grabbed = "hour"
|
||||
elif self.view == "settings":
|
||||
elif self.view == "settings_menu":
|
||||
pass
|
||||
elif self.view == "clock":
|
||||
if sound_process is not None:
|
||||
|
|
Loading…
Reference in New Issue