picons auto filtering on channel selection (#49)

This commit is contained in:
DYefremov
2021-10-14 17:37:53 +03:00
parent a3cf5edd5e
commit 55bb7b2f45
2 changed files with 62 additions and 69 deletions

View File

@@ -529,9 +529,11 @@ Author: Dmitriy Yefremov
<property name="orientation">vertical</property>
<property name="spacing">5</property>
<child>
<object class="GtkSearchBar" id="filter_bar">
<object class="GtkBox" id="filter_bar">
<property name="can_focus">False</property>
<child>
<property name="margin_top">5</property>
<property name="spacing">5</property>
<child type="center">
<object class="GtkSearchEntry" id="picons_filter_entry">
<property name="visible">True</property>
<property name="can_focus">True</property>
@@ -540,12 +542,43 @@ Author: Dmitriy Yefremov
<property name="primary_icon_sensitive">False</property>
<signal name="search-changed" handler="on_picons_filter_changed" swapped="no"/>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkSwitch" id="auto_filer_switch">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="tooltip_text" translatable="yes">Automatically set the name selected in the favorites list. </property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack_type">end</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="auto_filer_label">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Auto</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack_type">end</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
<property name="position">1</property>
</packing>
</child>
<child>
@@ -570,41 +603,18 @@ Author: Dmitriy Yefremov
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkGrid" id="src_title_grid">
<object class="GtkCheckButton" id="src_filter_button">
<property name="label" translatable="yes">Filer</property>
<property name="can_focus">False</property>
<property name="margin_right">5</property>
<property name="column_spacing">5</property>
<child>
<object class="GtkLabel" id="src_filter_label">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Filter</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">0</property>
</packing>
</child>
<child>
<object class="GtkCheckButton" id="src_filter_button">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="focus_on_click">False</property>
<property name="receives_default">False</property>
<property name="valign">center</property>
<property name="draw_indicator">True</property>
<signal name="toggled" handler="on_fiter_srcs_toggled" object="picons_src_filter_model" swapped="no"/>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">0</property>
</packing>
</child>
<property name="focus_on_click">False</property>
<property name="receives_default">False</property>
<property name="valign">center</property>
<property name="draw_indicator">True</property>
<signal name="toggled" handler="on_fiter_srcs_toggled" object="picons_src_filter_model" swapped="no"/>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack_type">end</property>
<property name="position">0</property>
</packing>
</child>
@@ -718,43 +728,20 @@ Author: Dmitriy Yefremov
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkGrid" id="dst_title_grid">
<object class="GtkCheckButton" id="dst_filter_button">
<property name="label" translatable="yes">Filter</property>
<property name="can_focus">False</property>
<property name="margin_right">5</property>
<property name="column_spacing">5</property>
<child>
<object class="GtkCheckButton" id="dst_filter_button">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="focus_on_click">False</property>
<property name="receives_default">False</property>
<property name="valign">center</property>
<property name="image_position">right</property>
<property name="active">True</property>
<property name="draw_indicator">True</property>
<signal name="toggled" handler="on_fiter_srcs_toggled" object="picons_dst_filter_model" swapped="no"/>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">0</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="dst_filter_label">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Filter</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">0</property>
</packing>
</child>
<property name="focus_on_click">False</property>
<property name="receives_default">False</property>
<property name="valign">center</property>
<property name="image_position">right</property>
<property name="active">True</property>
<property name="draw_indicator">True</property>
<signal name="toggled" handler="on_fiter_srcs_toggled" object="picons_dst_filter_model" swapped="no"/>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack_type">end</property>
<property name="position">0</property>
</packing>
</child>

View File

@@ -58,6 +58,7 @@ class PiconManager(Gtk.Box):
self._app = app
self._app.connect("page-changed", self.update_picons_dest)
self._app.connect("filter-toggled", self.on_app_filter_toggled)
self._app.fav_view.connect("row-activated", self.on_fav_changed)
self._picon_ids = picon_ids
self._sat_positions = sat_positions
self._BASE_URL = "www.lyngsat.com/packages/"
@@ -164,10 +165,11 @@ class PiconManager(Gtk.Box):
self._download_source_button.bind_property("visible", self._receive_button, "visible")
# Filter.
self._filter_bar = builder.get_object("filter_bar")
self._auto_filer_switch = builder.get_object("auto_filer_switch")
self._filter_button = builder.get_object("filter_button")
self._filter_bar.bind_property("search-mode-enabled", self._filter_bar, "visible")
self._filter_button.bind_property("active", builder.get_object("src_title_grid"), "visible")
self._filter_button.bind_property("active", builder.get_object("dst_title_grid"), "visible")
self._filter_button.bind_property("active", self._filter_bar, "visible")
self._filter_button.bind_property("active", self._src_filter_button, "visible")
self._filter_button.bind_property("active", self._dst_filter_button, "visible")
self._filter_button.bind_property("visible", self._info_check_button, "visible")
self._filter_button.bind_property("visible", self._send_button, "visible")
self._filter_button.bind_property("visible", self._download_button, "visible")
@@ -835,9 +837,13 @@ class PiconManager(Gtk.Box):
if app.page is Page.PICONS:
self._filter_button.set_active(not self._filter_button.get_active())
def on_fav_changed(self, view, path, column):
if self._app.page is Page.PICONS and self._auto_filer_switch.get_active():
model = view.get_model()
self._picons_filter_entry.set_text(model.get_value(model.get_iter(path), Column.FAV_SERVICE))
def on_filter_toggled(self, button):
active = self._filter_button.get_active()
self._filter_bar.set_search_mode(active)
if not active:
self._picons_filter_entry.set_text("")