Skip to content

Commit

Permalink
Add the ability to create custom channels
Browse files Browse the repository at this point in the history
  • Loading branch information
clefebvre committed Nov 29, 2023
1 parent 835454a commit 5ef8b41
Show file tree
Hide file tree
Showing 2 changed files with 312 additions and 12 deletions.
49 changes: 48 additions & 1 deletion usr/lib/hypnotix/hypnotix.py
Original file line number Diff line number Diff line change
Expand Up @@ -266,6 +266,12 @@ def __init__(self, application):
"layout_properties_box",
"layout_properties_label",
"favorite_button",
"new_channel_button",
"new_name_entry",
"new_url_entry",
"new_logo_entry",
"new_ok_button",
"new_cancel_button"
]

for name in widget_names:
Expand All @@ -287,16 +293,24 @@ def __init__(self, application):
self.info_window.connect("delete-event", self.on_close_info_window)
self.info_window_close_button.connect("clicked", self.on_close_info_window_button_clicked)

self.new_ok_button.connect("clicked", self.on_new_ok_button)
self.new_cancel_button.connect("clicked", self.on_new_cancel_button)

self.provider_ok_button.connect("clicked", self.on_provider_ok_button)
self.provider_cancel_button.connect("clicked", self.on_provider_cancel_button)

self.name_entry.connect("changed", self.toggle_ok_sensitivity)
self.url_entry.connect("changed", self.toggle_ok_sensitivity)
self.path_entry.connect("changed", self.toggle_ok_sensitivity)

self.new_name_entry.connect("changed", self.toggle_new_ok_sensitivity)
self.new_url_entry.connect("changed", self.toggle_new_ok_sensitivity)
self.new_logo_entry.connect("changed", self.toggle_new_ok_sensitivity)

self.tv_button.connect("clicked", self.show_groups, TV_GROUP)
self.movies_button.connect("clicked", self.show_groups, MOVIES_GROUP)
self.series_button.connect("clicked", self.show_groups, SERIES_GROUP)
self.new_channel_button.connect("clicked", self.open_new_channel)
self.favorites_button.connect("clicked", self.show_favorites)
self.providers_button.connect("clicked", self.open_providers)
self.preferences_button.connect("clicked", self.open_preferences)
Expand Down Expand Up @@ -514,7 +528,7 @@ def on_category_button_clicked(self, widget, group):
else:
self.show_vod(self.active_provider.series)

def show_favorites(self, widget):
def show_favorites(self, widget=None):
self.content_type = TV_GROUP
channels = []
for line in self.favorite_data:
Expand Down Expand Up @@ -819,6 +833,9 @@ def navigate_to(self, page, name="", favorites=False):
self.back_page = "vod_page"
self.headerbar.set_title(provider.name)
self.headerbar.set_subtitle(self.active_serie.name)
elif page == "new_channel_page":
self.headerbar.set_title("Hypnotix")
self.headerbar.set_subtitle(_("New Channel"))
elif page == "preferences_page":
self.headerbar.set_title("Hypnotix")
self.headerbar.set_subtitle(_("Preferences"))
Expand Down Expand Up @@ -1166,6 +1183,14 @@ def on_provider_selected(self, widget, provider):
self.init_channels_listbox()
self.navigate_to("landing_page")

def open_new_channel(self, widget):
self.new_name_entry.grab_focus()
self.new_name_entry.set_text("")
self.new_url_entry.set_text("")
self.new_logo_entry.set_text("")
self.new_ok_button.set_sensitive(False)
self.navigate_to("new_channel_page")

def open_preferences(self, widget):
self.navigate_to("preferences_page")

Expand Down Expand Up @@ -1331,6 +1356,20 @@ def on_provider_ok_button(self, widget):
provider.epg = self.epg_entry.get_text()
self.save()

def on_new_ok_button(self, widget):
name = self.new_name_entry.get_text()
url = self.new_url_entry.get_text()
logo = self.new_logo_entry.get_text()
data = f'#EXTINF:-1 tvg-name="{name}" tvg-logo="{logo}" tvg-id="{name}" group-title="",{name}:::{url}'
if data not in self.favorite_data:
print (f"Adding {name} to favorites")
self.favorite_data.append(data)
self.manager.save_favorites(self.favorite_data)
self.show_favorites()

def on_new_cancel_button(self, widget):
self.navigate_to("landing_page")

def on_provider_cancel_button(self, widget):
self.navigate_to("providers_page")

Expand All @@ -1342,6 +1381,14 @@ def toggle_ok_sensitivity(self, widget=None):
else:
self.provider_ok_button.set_sensitive(True)

def toggle_new_ok_sensitivity(self, widget=None):
self.new_ok_button.set_sensitive(True)
if self.new_name_entry.get_text() == "":
self.new_ok_button.set_sensitive(False)
for widget in (self.new_url_entry, self.new_logo_entry):
if ":https://" not in widget.get_text():
self.new_ok_button.set_sensitive(False)

def get_url(self):
type_id = self.provider_type_combo.get_model()[self.provider_type_combo.get_active()][PROVIDER_TYPE_ID]
if type_id == PROVIDER_TYPE_LOCAL:
Expand Down
Loading

0 comments on commit 5ef8b41

Please sign in to comment.