diff --git a/app/ui/epg/epg.py b/app/ui/epg/epg.py
index 04530bc8..233819e2 100644
--- a/app/ui/epg/epg.py
+++ b/app/ui/epg/epg.py
@@ -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:
diff --git a/app/ui/epg/tab.glade b/app/ui/epg/tab.glade
index eb21203e..18b4ca3d 100644
--- a/app/ui/epg/tab.glade
+++ b/app/ui/epg/tab.glade
@@ -245,7 +245,9 @@ Author: Dmitriy Yefremov