Skip to content

Commit

Permalink
Added ability to set favorite volume in preferences
Browse files Browse the repository at this point in the history
  • Loading branch information
david-kuehn committed Jan 22, 2021
1 parent 0e92e7b commit 6e1fd48
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 5 deletions.
16 changes: 16 additions & 0 deletions casita/casita.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,15 +26,21 @@ def __init__(self):
self.prefs_icon_parent = rumps.MenuItem(title="Icon")
self.prefs_icon_items = [rumps.MenuItem(title="Colored Icon", callback=prefs.set_icon_colored), rumps.MenuItem(title="Monochrome Icon", callback=prefs.set_icon_mono)]

self.prefs_volume_parent = rumps.MenuItem(title="Volume")
self.prefs_volume_items = [rumps.MenuItem(title="Set to Favorite Volume", callback=prefs.set_to_favorite_volume), None, rumps.MenuItem(title="Save Current Volume as Favorite", callback=prefs.save_favorite_volume)]

self.prefs_about_parent = rumps.MenuItem(title="About")
self.prefs_about_items = [rumps.MenuItem(title="Casita 🏡 | v0.1.4"), None, rumps.MenuItem(title="Made w/ <3 by David Kuehn")]

# Initialize prefs
self.prefs_parent.add(self.prefs_icon_parent)
self.prefs_parent.add(self.prefs_volume_parent)
self.prefs_parent.add(self.separator)
self.prefs_parent.add(self.prefs_about_parent)
for item in self.prefs_icon_items:
self.prefs_icon_parent.add(item)
for item in self.prefs_volume_items:
self.prefs_volume_parent.add(item)
for item in self.prefs_about_items:
self.prefs_about_parent.add(item)

Expand Down Expand Up @@ -86,6 +92,16 @@ def update_menu(self, new_menu_items, add_quit = True):
# Clear the old items out of the menu
self.app.menu.clear()

# If there is a device connected, enable the volume preferences. Otherwise, disable them
if cast_interface.is_connected == True:
if len(self.prefs_volume_parent) == 1:
self.prefs_volume_parent.clear()
for item in self.prefs_volume_items:
self.prefs_volume_parent.add(item)
else:
self.prefs_volume_parent.clear()
self.prefs_volume_parent.add(rumps.MenuItem(title="Connect device to configure volume settings."))

found_quit = False
found_prefs = False

Expand Down
6 changes: 3 additions & 3 deletions casita/cast_interface.py
Original file line number Diff line number Diff line change
Expand Up @@ -134,12 +134,12 @@ def start_listening(app_class_reference, device_name, is_reconnection):

chromecast.socket_client.tries = 1

# Tell the app class that we're done connecting
app_class.set_connecting_status(device_name=device_name, is_connecting=False, is_reconnection=is_reconnection, did_succeed=True)

global is_connected
is_connected = True

# Tell the app class that we're done connecting
app_class.set_connecting_status(device_name=device_name, is_connecting=False, is_reconnection=is_reconnection, did_succeed=True)

# Use to trigger initial status update
chromecast.set_volume_muted(False)

Expand Down
12 changes: 11 additions & 1 deletion casita/prefs.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import json
import cast_interface

app_class = None

Expand Down Expand Up @@ -36,4 +37,13 @@ def set_icon_mono(sender):
USER_PREFS["icon"] = "mono"
wrt_prefs = open("user_preferences.json", "w")
wrt_prefs.write(json.dumps(USER_PREFS))
wrt_prefs.close()
wrt_prefs.close()

def save_favorite_volume(sender):
USER_PREFS["volume"] = cast_interface.current_volume_level
wrt_prefs = open("user_preferences.json", "w")
wrt_prefs.write(json.dumps(USER_PREFS))
wrt_prefs.close()

def set_to_favorite_volume(sender):
cast_interface.set_volume(USER_PREFS["volume"] * 100)
2 changes: 1 addition & 1 deletion casita/user_preferences.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"default_device": "", "icon": "colored"}
{"default_device": "", "icon": "colored", "volume": 0.15116918087005615}

0 comments on commit 6e1fd48

Please sign in to comment.