More settings + adjust volume

This commit is contained in:
Admar Schoonen 2023-01-07 16:09:28 +01:00
parent a407667cb3
commit 3f0d33c65c
1 changed files with 94 additions and 7 deletions

101
clock.py
View File

@ -15,6 +15,7 @@ from kivy.graphics import Color, Line, Rectangle
from multiprocessing import Process
from playsound import playsound
import pulsectl
Builder.load_string('''
<MyClockWidget>:
@ -63,42 +64,90 @@ Builder.load_string('''
size: self.size
pos: self.pos
GridLayout:
rows: 6
rows: 7
cols: 2
Label:
text:"Volume"
text: "Volume"
halign: "left"
valign: "middle"
text_size: self.size
Slider:
id: volume_slider
min: 0
max: 20
value: 4
value: 15
on_value: root.volume_slider_value(*args)
value_track: True
value_track_color: [1, 0, 0, 1]
Label:
text:"Wake up brightness"
halign: "left"
valign: "middle"
text_size: self.size
Slider:
id: wake_up_bightness_slider
min: 0
max: 20
value: 20
on_value: root.wake_up_brightness_slider_value(*args)
value_track: True
value_track_color: [1, 0, 0, 1]
Label:
text:"Reading light brightness"
halign: "left"
valign: "middle"
text_size: self.size
Slider:
id: reading_light_brightness_slider
min: 0
max: 20
value: 1
on_value: root.reading_light_brightness_slider_value(*args)
value_track: True
value_track_color: [1, 0, 0, 1]
Label:
text:"Display brightness"
halign: "left"
valign: "middle"
text_size: self.size
Slider:
id: display_brightness_slider
min: 0
max: 20
value: 10
on_value: root.display_brightness_slider_value(*args)
value_track: True
value_track_color: [1, 0, 0, 1]
Label:
text:"Wifi network"
halign: "left"
valign: "middle"
text_size: self.size
Label:
text:"wifi name"
halign: "left"
valign: "middle"
text_size: self.size
Label:
text:"Wifi password"
halign: "left"
valign: "middle"
text_size: self.size
Label:
text:"wifi password"
halign: "left"
valign: "middle"
text_size: self.size
Label:
text:"Calendar URL"
halign: "left"
valign: "middle"
text_size: self.size
Label:
text:"calendar url"
halign: "left"
valign: "middle"
text_size: self.size
''')
Position = collections.namedtuple('Position', 'x y')
@ -121,9 +170,10 @@ class AlarmSettings():
sound_source = "Woodpecker Chirps - QuickSounds.com.mp3"
seconds_to_sunrise = 30 * 60
volume = 4
volume = 15
wake_up_brightness = 20
reading_light_brightness = 1
display_brightness = 10
class MyClockWidget(FloatLayout):
grabbed = ""
@ -368,7 +418,32 @@ class MyClockWidget(FloatLayout):
def volume_slider_value(self, *args):
alarm_settings = App.get_running_app().alarm_settings
alarm_settings.volume = int(args[1])
print(str(int(args[1])))
print("Volume changed to " + str(alarm_settings.volume))
with pulsectl.Pulse('volume-increaser') as pulse:
for sink in pulse.sink_list():
# Volume is usually in 0-1.0 range, with >1.0 being soft-boosted
old_vol = pulse.volume_get_all_chans(sink)
pulse.volume_set_all_chans(sink, alarm_settings.volume / 20.0)
new_vol = pulse.volume_get_all_chans(sink)
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))
def reading_light_brightness_slider_value(self, *args):
alarm_settings = App.get_running_app().alarm_settings
alarm_settings.reading_light_brightness = int(args[1])
print("Reading light brightness changed to " + str(alarm_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])
print("Display brightness changed to " + str(alarm_settings.display_brightness))
def on_alarm_button_pressed(self):
alarm_settings = App.get_running_app().alarm_settings
@ -475,8 +550,6 @@ class MyClockWidget(FloatLayout):
self.on_alarm_button_pressed()
elif (0.85 <= touch.spos[0] <= 0.95) and (0.85 <= touch.spos[1] <= 0.95):
self.on_settings_button_pressed()
elif sound_process is not None:
kill_sound_process()
elif self.view == "set_alarm":
self.set_alarm_timeout_counter = 0
if (minutes_hand.x - 0.1 * self.size[0] <= touch.pos[0] <= minutes_hand.x + 0.1 * self.size[0]) and \
@ -485,6 +558,11 @@ 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":
pass
elif self.view == "clock":
if sound_process is not None:
kill_sound_process()
super(MyClockWidget, self).on_touch_down(touch)
@ -492,6 +570,15 @@ class MyClockWidget(FloatLayout):
class MyApp(App):
alarm_settings = AlarmSettings()
# apply volume setting
with pulsectl.Pulse('volume-increaser') as pulse:
for sink in pulse.sink_list():
# Volume is usually in 0-1.0 range, with >1.0 being soft-boosted
old_vol = pulse.volume_get_all_chans(sink)
pulse.volume_set_all_chans(sink, alarm_settings.volume / 20.0)
new_vol = pulse.volume_get_all_chans(sink)
print("HW volume changed from " + str(old_vol) + " to " + str(new_vol))
def build(self):
clock_widget = MyClockWidget()
# update initially, just after construction of the widget is complete