base implementation of services counts

This commit is contained in:
DYefremov
2017-11-29 00:26:12 +03:00
parent d1eb56a447
commit 08930f1891
2 changed files with 140 additions and 8 deletions

View File

@@ -61,7 +61,8 @@ class MainAppWindow:
"on_view_popup_menu": self.on_view_popup_menu,
"on_view_focus": self.on_view_focus,
"on_hide": self.on_hide,
"on_locked": self.on_locked}
"on_locked": self.on_locked,
"on_model_changed": self.on_model_changed}
self.__options = get_config()
# Used for copy/paste. When adding the previous data will not be deleted.
@@ -90,6 +91,11 @@ class MainAppWindow:
# dynamically active elements depending on the selected view
self.__tool_elements = {k: builder.get_object(k) for k in self.__DYNAMIC_ELEMENTS}
self.__cas_label = builder.get_object("cas_label")
self.__fav_count_label = builder.get_object("fav_count_label")
self.__bouquets_count_label = builder.get_object("bouquets_count_label")
self.__tv_count_label = builder.get_object("tv_count_label")
self.__radio_count_label = builder.get_object("radio_count_label")
self.__data_count_label = builder.get_object("data_count_label")
builder.connect_signals(handlers)
self.init_drag_and_drop() # drag and drop
self.__main_window.show()
@@ -424,6 +430,7 @@ class MainAppWindow:
self.append_blacklist(data_path)
self.append_services(data_path)
self.append_bouquets(data_path)
self.update_services_counts()
except FileNotFoundError as e:
show_dialog("error_dialog", self.__main_window, getattr(e, "message", str(e)) +
"\n\nPlease, download files from receiver or setup your path for read data!")
@@ -656,6 +663,40 @@ class MainAppWindow:
return True
return False
@run_idle
def on_model_changed(self, model, path, itr=None):
model_name = model.get_name()
if model_name == self._FAV_LIST_NAME:
self.__fav_count_label.set_text(str(len(model)))
elif model_name == self._SERVICE_LIST_NAME:
self.update_services_counts()
elif model_name == self._BOUQUETS_LIST_NAME:
self.__bouquets_count_label.set_text(str(len(self.__bouquets.keys())))
@run_idle
def update_services_counts(self):
""" Updates counters for services
May be temporary! (Needs optimising.)
"""
tv_count = 0
radio_count = 0
data_count = 0
for ch in self.__channels.values():
ch_type = ch.service_type
if ch_type in ("TV", "TV (HD)"):
tv_count += 1
elif ch_type == "Radio":
radio_count += 1
elif ch_type == "Data":
data_count += 1
self.__tv_count_label.set_text(str(tv_count))
self.__radio_count_label.set_text(str(radio_count))
self.__data_count_label.set_text(str(data_count))
def start_app():
MainAppWindow()

View File

@@ -46,6 +46,8 @@
<!-- column-name type -->
<column type="gchararray"/>
</columns>
<signal name="row-deleted" handler="on_model_changed" swapped="no"/>
<signal name="row-inserted" handler="on_model_changed" swapped="no"/>
</object>
<object class="GtkListStore" id="fav_list_store">
<columns>
@@ -60,6 +62,8 @@
<!-- column-name fav_id -->
<column type="gchararray"/>
</columns>
<signal name="row-deleted" handler="on_model_changed" swapped="no"/>
<signal name="row-inserted" handler="on_model_changed" swapped="no"/>
</object>
<object class="GtkMenu" id="fav_popup_menu">
<property name="visible">True</property>
@@ -148,6 +152,7 @@
<!-- column-name transponder -->
<column type="gchararray"/>
</columns>
<signal name="row-deleted" handler="on_model_changed" swapped="no"/>
</object>
<object class="GtkApplicationWindow" id="main_window">
<property name="width_request">640</property>
@@ -1029,18 +1034,18 @@
</child>
<child>
<object class="GtkBox" id="services_bar_box">
<property name="width_request">85</property>
<property name="height_request">25</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="resize_mode">queue</property>
<property name="spacing">2</property>
<child>
<object class="GtkLabel" id="label1">
<object class="GtkImage" id="image1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">10</property>
<property name="margin_left">5</property>
<property name="margin_right">2</property>
<property name="label" translatable="yes">CAS:</property>
<property name="icon_name">system-lock-screen</property>
</object>
<packing>
<property name="expand">False</property>
@@ -1052,6 +1057,9 @@
<object class="GtkLabel" id="cas_label">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="tooltip_text" translatable="yes">CAS</property>
<property name="width_chars">8</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
@@ -1072,6 +1080,83 @@
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkImage" id="tv_image">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="icon_name">tv-symbolic</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">3</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="tv_count_label">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="tooltip_text" translatable="yes">TV</property>
<property name="margin_right">5</property>
<property name="label" translatable="yes">0</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">4</property>
</packing>
</child>
<child>
<object class="GtkImage" id="radio_image">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="icon_name">network-wireless-symbolic</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">5</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="radio_count_label">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="tooltip_text" translatable="yes">Radio</property>
<property name="margin_right">5</property>
<property name="label" translatable="yes">0</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">6</property>
</packing>
</child>
<child>
<object class="GtkImage" id="data_image">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="icon_name">system-run</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">7</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="data_count_label">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="tooltip_text" translatable="yes">Data</property>
<property name="label" translatable="yes">0</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">8</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
@@ -1213,12 +1298,12 @@
<property name="height_request">25</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="spacing">2</property>
<child>
<object class="GtkLabel" id="label3">
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Channels:</property>
<property name="label" translatable="yes">Services:</property>
</object>
<packing>
<property name="expand">False</property>
@@ -1230,6 +1315,9 @@
<object class="GtkLabel" id="fav_count_label">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">0</property>
<property name="width_chars">5</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
@@ -1332,10 +1420,10 @@
<property name="height_request">25</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="spacing">2</property>
<child>
<object class="GtkLabel" id="label4">
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Bouquets:</property>
</object>
@@ -1349,6 +1437,9 @@
<object class="GtkLabel" id="bouquets_count_label">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">0</property>
<property name="width_chars">5</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>