possibility to sort epg list alphabetically (thanks to Moritz Venn)
authorFelix Domke <tmbinc@elitedvb.net>
Mon, 30 Jul 2007 21:46:35 +0000 (21:46 +0000)
committerFelix Domke <tmbinc@elitedvb.net>
Mon, 30 Jul 2007 21:46:35 +0000 (21:46 +0000)
lib/python/Components/EpgList.py
lib/python/Screens/EpgSelection.py

index 618c9c9..1bc98ef 100644 (file)
@@ -223,17 +223,22 @@ class EPGList(HTMLComponent, GUIComponent):
        def fillSingleEPG(self, service):
                t = time()
                test = [ 'RIBDT', (service.ref.toString(), 0, -1, -1) ]
        def fillSingleEPG(self, service):
                t = time()
                test = [ 'RIBDT', (service.ref.toString(), 0, -1, -1) ]
-               self.l.setList(self.queryEPG(test))
+               self.list = self.queryEPG(test)
+               self.l.setList(self.list)
                print time() - t
                self.selectionChanged()
 
                print time() - t
                self.selectionChanged()
 
-       def sort_func(self,x,y):
-               if x[2] < y[2]:
-                       return -1
-               elif x[2] == y[2]:
-                       return 0
-               else:
-                       return 1
+       def sortSingleEPG(self, type):
+               if len(self.list):
+                       if type == 1:
+                               self.list.sort(key=lambda x: (x[4].lower(), x[2]))
+                               self.l.setList(self.list)
+                               self.selectionChanged()
+                       else:
+                               assert(type == 0)
+                               self.list.sort(key=lambda x: x[2])
+                               self.l.setList(self.list)
+                               self.selectionChanged()
 
        def fillSimilarList(self, refstr, event_id):
                t = time()
 
        def fillSimilarList(self, refstr, event_id):
                t = time()
index ef65452..a2c31d2 100644 (file)
@@ -36,6 +36,8 @@ class EPGSelection(Screen):
                        self["key_blue"] = Button()
                        self.currentService=ServiceReference(service)
                        self.zapFunc = None
                        self["key_blue"] = Button()
                        self.currentService=ServiceReference(service)
                        self.zapFunc = None
+                       self.sort_type = 0
+                       self.setSortDescription()
                else:
                        self.skinName = "EPGSelectionMulti"
                        self.type = EPG_TYPE_MULTI
                else:
                        self.skinName = "EPGSelectionMulti"
                        self.type = EPG_TYPE_MULTI
@@ -156,6 +158,21 @@ class EPGSelection(Screen):
        def yellowButtonPressed(self):
                if self.type == EPG_TYPE_MULTI:
                        self["list"].updateMultiEPG(-1)
        def yellowButtonPressed(self):
                if self.type == EPG_TYPE_MULTI:
                        self["list"].updateMultiEPG(-1)
+               elif self.type == EPG_TYPE_SINGLE:
+                       if self.sort_type == 0:
+                               self.sort_type = 1
+                       else:
+                               self.sort_type = 0
+                       self["list"].sortSingleEPG(self.sort_type)
+                       self.setSortDescription()
+
+       def setSortDescription(self):
+               if self.sort_type == 1:
+                       # TRANSLATORS: This must fit into the header button in the EPG-List
+                       self["key_yellow"].setText(_("Sort Time"))
+               else:
+                       # TRANSLATORS: This must fit into the header button in the EPG-List
+                       self["key_yellow"].setText(_("Sort A-Z"))
 
        def blueButtonPressed(self):
                if self.type == EPG_TYPE_MULTI:
 
        def blueButtonPressed(self):
                if self.type == EPG_TYPE_MULTI: