Merge remote branch 'origin/acid-burn/virtualkeyboard' into experimental
[vuplus_dvbapp] / lib / python / Screens / TaskView.py
index 633aae0..5dd744f 100644 (file)
@@ -2,6 +2,7 @@ from Screen import Screen
 from Components.ConfigList import ConfigListScreen
 from Components.config import config, ConfigSubsection, ConfigSelection, getConfigListEntry
 from Components.SystemInfo import SystemInfo
 from Components.ConfigList import ConfigListScreen
 from Components.config import config, ConfigSubsection, ConfigSelection, getConfigListEntry
 from Components.SystemInfo import SystemInfo
+from Components.Task import job_manager
 from InfoBarGenerics import InfoBarNotifications
 import Screens.Standby
 from Tools import Notifications
 from InfoBarGenerics import InfoBarNotifications
 import Screens.Standby
 from Tools import Notifications
@@ -108,17 +109,20 @@ class JobView(InfoBarNotifications, Screen, ConfigListScreen):
                        self.close(False)
 
        def abort(self):
                        self.close(False)
 
        def abort(self):
-               if self.job.status in (self.job.FINISHED, self.job.FAILED):
+               if self.job.status == self.job.NOT_STARTED:
+                       job_manager.active_jobs.remove(self.job)
                        self.close(False)
                        self.close(False)
-               if self["cancelable"].boolean == True:
+               elif self.job.status == self.job.IN_PROGRESS and self["cancelable"].boolean == True:
                        self.job.cancel()
                        self.job.cancel()
+               else:
+                       self.close(False)
 
        def performAfterEvent(self):
                self["config"].hide()
                if self.settings.afterEvent.getValue() == "nothing":
                        return
 
        def performAfterEvent(self):
                self["config"].hide()
                if self.settings.afterEvent.getValue() == "nothing":
                        return
-               elif self.settings.afterEvent.getValue() == "close":
-                       self.abort()
+               elif self.settings.afterEvent.getValue() == "close" and self.job.status == self.job.FINISHED:
+                       self.close(False)
                from Screens.MessageBox import MessageBox
                if self.settings.afterEvent.getValue() == "deepstandby":
                        if not Screens.Standby.inTryQuitMainloop:
                from Screens.MessageBox import MessageBox
                if self.settings.afterEvent.getValue() == "deepstandby":
                        if not Screens.Standby.inTryQuitMainloop:
@@ -127,6 +131,12 @@ class JobView(InfoBarNotifications, Screen, ConfigListScreen):
                        if not Screens.Standby.inStandby:
                                Notifications.AddNotificationWithCallback(self.sendStandbyNotification, MessageBox, _("A sleep timer wants to set your\nDreambox to standby. Do that now?"), timeout = 20)
 
                        if not Screens.Standby.inStandby:
                                Notifications.AddNotificationWithCallback(self.sendStandbyNotification, MessageBox, _("A sleep timer wants to set your\nDreambox to standby. Do that now?"), timeout = 20)
 
+       def checkNotifications(self):
+               InfoBarNotifications.checkNotifications(self)
+               if Notifications.notifications == []:
+                       if self.settings.afterEvent.getValue() == "close" and self.job.status == self.job.FAILED:
+                               self.close(False)
+               
        def sendStandbyNotification(self, answer):
                if answer:
                        Notifications.AddNotification(Screens.Standby.Standby)
        def sendStandbyNotification(self, answer):
                if answer:
                        Notifications.AddNotification(Screens.Standby.Standby)