improved sorting for EPG time column (#110)

This commit is contained in:
DYefremov
2022-07-10 18:05:52 +03:00
parent 3cef75e765
commit 14e200f262
4 changed files with 22 additions and 5 deletions

View File

@@ -202,6 +202,9 @@ class EpgTool(Gtk.Box):
self._filter_entry = builder.get_object("epg_filter_entry")
builder.get_object("epg_filter_button").bind_property("active", self._filter_entry, "visible")
self.pack_start(builder.get_object("epg_frame"), True, True, 0)
# Custom sort function.
self._view.get_model().set_sort_func(1, self.time_sort_func, 1)
self.show()
def on_timer_add(self, action=None, value=None):
@@ -259,13 +262,14 @@ class EpgTool(Gtk.Box):
@staticmethod
def get_event(event, show_day=True):
t_str = f"{'%A, ' if show_day else ''}%Y-%m-%d, %H:%M"
title = event.get("e2eventtitle", "") or ""
desc = event.get("e2eventdescription", "") or ""
start = int(event.get("e2eventstart", "0"))
start_time = datetime.fromtimestamp(start)
end_time = datetime.fromtimestamp(start + int(event.get("e2eventduration", "0")))
ev_time = f"{start_time.strftime('%A, %H:%M' if show_day else '%H:%M')} - {end_time.strftime('%H:%M')}"
ev_time = f"{start_time.strftime(t_str)} - {end_time.strftime('%H:%M')}"
return EpgEvent(title, ev_time, desc, event)
@@ -280,6 +284,13 @@ class EpgTool(Gtk.Box):
txt = self._filter_entry.get_text().upper()
return next((s for s in model.get(itr, 0, 1, 2) if txt in s.upper()), False)
def time_sort_func(self, model, iter1, iter2, column):
""" Custom sort function for time column. """
event1 = model.get_value(iter1, 3)
event2 = model.get_value(iter2, 3)
return int(event1.get("e2eventstart", "0")) - int(event2.get("e2eventstart", "0"))
class EpgDialog:

View File

@@ -245,7 +245,9 @@ Author: Dmitriy Yefremov
</child>
<child>
<object class="GtkTreeViewColumn" id="epg_title_column">
<property name="min_width">25</property>
<property name="resizable">True</property>
<property name="fixed_width">170</property>
<property name="min_width">50</property>
<property name="title" translatable="yes">Title</property>
<property name="alignment">0.49000000953674316</property>
<property name="sort_column_id">0</property>
@@ -261,7 +263,9 @@ Author: Dmitriy Yefremov
</child>
<child>
<object class="GtkTreeViewColumn" id="epg_time_column">
<property name="min_width">25</property>
<property name="resizable">True</property>
<property name="fixed_width">270</property>
<property name="min_width">50</property>
<property name="title" translatable="yes">Time</property>
<property name="alignment">0.49000000953674316</property>
<property name="sort_column_id">1</property>
@@ -277,6 +281,8 @@ Author: Dmitriy Yefremov
</child>
<child>
<object class="GtkTreeViewColumn" id="epg_desc_column">
<property name="fixed_width">100</property>
<property name="min_width">50</property>
<property name="title" translatable="yes">Description</property>
<property name="expand">True</property>
<property name="alignment">0.49000000953674316</property>

View File

@@ -1206,7 +1206,7 @@ Author: Dmitriy Yefremov
<child>
<object class="GtkTreeViewColumn" id="timer_time_column">
<property name="resizable">True</property>
<property name="fixed_width">150</property>
<property name="fixed_width">270</property>
<property name="min_width">50</property>
<property name="title" translatable="yes">Time</property>
<property name="alignment">0.5</property>

View File

@@ -350,7 +350,7 @@ class TimerTool(Gtk.Box):
service = timer.get("e2servicename", "") or ""
start_time = datetime.fromtimestamp(int(timer.get("e2timebegin", "0")))
end_time = datetime.fromtimestamp(int(timer.get("e2timeend", "0")))
time = f"{start_time.strftime('%A, %H:%M')} - {end_time.strftime('%H:%M')}"
time = f"{start_time.strftime('%A, %Y-%m-%d, %H:%M')} - {end_time.strftime('%H:%M')}"
return disabled, name, service, time, description, timer