Use dictionary for selection of wake up sounds
This commit is contained in:
parent
6ebae5ddb3
commit
8e27056e05
36
clock.kv
36
clock.kv
|
@ -204,46 +204,12 @@
|
|||
BoxLayout:
|
||||
orientation: "vertical"
|
||||
pos_hint: {"center_x":0.5, "center_y":0.5}
|
||||
id: settings_menu_wake_up_sound_boxlayout
|
||||
Label:
|
||||
text: "Select wake up sound"
|
||||
font_size: root.height*0.05
|
||||
color: root.theme.color_font
|
||||
id: settings_menu_wake_up_sound_label_top
|
||||
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
|
||||
font_size: root.height*0.05
|
||||
color: root.theme.color_font
|
||||
active: True
|
||||
id: settings_menu_wake_up_sound_label_0
|
||||
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
|
||||
font_size: root.height*0.05
|
||||
color: root.theme.color_font
|
||||
id: settings_menu_wake_up_sound_label_1
|
||||
Button:
|
||||
id: settings_menu_wake_up_sound_Ok_button
|
||||
on_press: root.settings_menu_wake_up_sound_Ok_button_cb()
|
||||
text: "Ok"
|
||||
font_size: root.height*0.05
|
||||
color: root.theme.color_font
|
||||
background_normal: ''
|
||||
background_color: root.theme.color_button
|
||||
FloatLayout
|
||||
id: settings_menu_theme_background
|
||||
size_hint: None, None
|
||||
|
|
109
clock.py
109
clock.py
|
@ -55,6 +55,8 @@ 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.uix.gridlayout import GridLayout
|
||||
from kivy.uix.checkbox import CheckBox
|
||||
from kivy.clock import Clock
|
||||
from kivy.lang import Builder
|
||||
from kivy.graphics import Color, Line, Rectangle, Ellipse
|
||||
|
@ -236,6 +238,7 @@ class MyClockWidget(FloatLayout):
|
|||
|
||||
is_arm = is_arm()
|
||||
|
||||
|
||||
def play_sound(self, source):
|
||||
alarm_settings = App.get_running_app().alarm_settings
|
||||
|
||||
|
@ -612,11 +615,10 @@ class MyClockWidget(FloatLayout):
|
|||
self.draw_list_curr_frame.append(["Color", background.canvas, rgb[0], rgb[1], rgb[2]])
|
||||
self.draw_list_curr_frame.append(["Rectangle", background.canvas, background.size, background.pos, ""])
|
||||
|
||||
for s in ["label_top", "label_0", "label_1", "Ok_button"]:
|
||||
i = self.ids["settings_menu_wake_up_sound_" + s]
|
||||
for i in self.wake_up_sound_labels:
|
||||
i.color = self.theme.color_font
|
||||
i = self.ids["settings_menu_wake_up_sound_Ok_button"]
|
||||
i.background_color = self.theme.color_button
|
||||
|
||||
self.settings_menu_wake_up_sound_Ok_button.background_color = self.theme.color_button
|
||||
|
||||
def update_settings_menu_theme(self):
|
||||
self.draw_list_curr_frame.append(["self.hide_widget", self.ids["settings_menu_theme_background"], False])
|
||||
|
@ -731,25 +733,40 @@ class MyClockWidget(FloatLayout):
|
|||
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
|
||||
for c in self.wake_up_sound_checkboxes:
|
||||
c.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
|
||||
|
||||
|
||||
n = 0
|
||||
for i in self.wake_up_sounds:
|
||||
if i == alarm_settings.sound_selected:
|
||||
self.wake_up_sound_checkboxes[n].active = True
|
||||
n = n + 1
|
||||
|
||||
self.view = "settings_menu_wake_up_sound"
|
||||
self.view_active_since = time.time()
|
||||
|
||||
def settings_menu_wake_up_sound_Ok_button_cb(self):
|
||||
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.view = "settings_menu"
|
||||
self.view_active_since = time.time()
|
||||
|
||||
def settings_menu_wake_up_sound_cb(self, instance, value, sound):
|
||||
def settings_menu_wake_up_sound_cb(self, instance, value):
|
||||
n = 0
|
||||
for c in self.wake_up_sound_checkboxes:
|
||||
if c == instance:
|
||||
break
|
||||
n = n + 1
|
||||
|
||||
k = 0
|
||||
for sound in self.wake_up_sounds:
|
||||
if k == n:
|
||||
break
|
||||
k = k + 1
|
||||
|
||||
alarm_settings = App.get_running_app().alarm_settings
|
||||
|
||||
if self.settings_menu_wake_up_sound_select_button_cb_hack:
|
||||
|
@ -762,14 +779,8 @@ class MyClockWidget(FloatLayout):
|
|||
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"
|
||||
alarm_settings.sound_source = self.wake_up_sounds[sound]
|
||||
alarm_settings.sound_selected = sound
|
||||
|
||||
def settings_menu_theme_select_button_cb(self):
|
||||
self.settings_menu_wake_up_theme_button_cb_hack = True
|
||||
|
@ -1158,6 +1169,62 @@ class MyApp(App):
|
|||
|
||||
def build(self):
|
||||
clock_widget = MyClockWidget()
|
||||
|
||||
x = clock_widget.ids["settings_menu_wake_up_sound_boxlayout"]
|
||||
gl = GridLayout(
|
||||
cols=2,
|
||||
)
|
||||
|
||||
clock_widget.wake_up_sounds = {
|
||||
"Birds": "Woodpecker Chirps - QuickSounds.com.mp3",
|
||||
"NPO Radio 1": "https://icecast.omroep.nl/radio1-bb-mp3"
|
||||
}
|
||||
|
||||
clock_widget.wake_up_sound_checkboxes = []
|
||||
clock_widget.wake_up_sound_labels = []
|
||||
|
||||
i = 0
|
||||
for w in clock_widget.wake_up_sounds:
|
||||
c = CheckBox(
|
||||
group = "settings_menu_wake_up_sound",
|
||||
)
|
||||
c.bind(active=clock_widget.settings_menu_wake_up_sound_cb)
|
||||
gl.add_widget(c)
|
||||
clock_widget.wake_up_sound_checkboxes.append(c)
|
||||
|
||||
if i == 0:
|
||||
a = True
|
||||
else:
|
||||
a = False
|
||||
|
||||
l = Label(
|
||||
text = w,
|
||||
halign = "left",
|
||||
valign = "middle",
|
||||
size = [c.size[0] * 2.88, c.size[1]],
|
||||
text_size = Window.size,
|
||||
font_size = Window.height*0.05,
|
||||
color = clock_widget.theme.color_font,
|
||||
active = a
|
||||
)
|
||||
l.text_size = l.size
|
||||
gl.add_widget(l)
|
||||
clock_widget.wake_up_sound_labels.append(l)
|
||||
i = i + 1
|
||||
|
||||
x.add_widget(gl)
|
||||
|
||||
b = Button(
|
||||
text = "Ok",
|
||||
font_size = clock_widget.height*0.3,
|
||||
color = clock_widget.theme.color_font,
|
||||
background_normal = '',
|
||||
background_color = clock_widget.theme.color_button
|
||||
)
|
||||
b.bind(on_press = clock_widget.settings_menu_wake_up_sound_Ok_button_cb)
|
||||
x.add_widget(b)
|
||||
clock_widget.settings_menu_wake_up_sound_Ok_button = b
|
||||
|
||||
update_rate = App.get_running_app().update_rate
|
||||
# update initially, just after construction of the widget is complete
|
||||
Clock.schedule_once(clock_widget.update_display, 0)
|
||||
|
|
Loading…
Reference in New Issue