update plugin.
[vuplus_dvbapp] / lib / python / Plugins / SystemPlugins / FPGAUpgrade / plugin.py
index df71d0b..313e162 100644 (file)
@@ -23,11 +23,11 @@ from Components.Sources.StaticText import StaticText
 
 class UpgradeStatus(Screen):
        skin =  """
-               <screen position="center,center" size="450,100" title="FPGA Upgrade">
+               <screen position="center,center" size="450,130" title="FPGA Upgrade">
                        <widget name="name" position="10,0" size="430,20" font="Regular;18" halign="left" valign="bottom"/>
                        <widget name="slider" position="10,25" size="430,30" backgroundColor="white"/>
                        <widget name="status" position="10,25" zPosition="1" size="430,30" font="Regular;18" halign="center" valign="center" foregroundColor="black" backgroundColor="black" transparent="1"/>
-                       <widget source="info" render="Label" position="10,70" zPosition="1" size="430,30" font="Regular;22" halign="center" valign="center" backgroundColor="#a08500" transparent="1"/>
+                       <widget source="info" render="Label" position="10,70" zPosition="1" size="430,60" font="Regular;22" halign="center" valign="center" backgroundColor="#a08500" transparent="1"/>
                </screen>
                """
        def __init__(self, session, parent, timeout = 10):
@@ -37,7 +37,7 @@ class UpgradeStatus(Screen):
                self["actions"] = ActionMap(["OkCancelActions"],
                 {
                        "ok": self.keyExit,
-                }, -1)
+                }, -2)
 
                self.is_done = 0
                self.exit_count = 0
@@ -59,6 +59,7 @@ class UpgradeStatus(Screen):
                self.timer_check_progress.callback.append(self.callbackDoCheckProgress)
                interval = self.parent.FPGA.get_interval()
                self.timer_check_progress.start(interval)
+               self.need_restart = False
 
        def callbackDoCheckProgress(self):
                self.status = self.parent.FPGA.get_status()
@@ -76,9 +77,13 @@ class UpgradeStatus(Screen):
                        self.timer_exit = eTimer()
                        self.timer_exit.callback.append(self.callbackExit)
                        self.timer_exit.start(1000)
-               elif self.status == -1 or self.status == -2:
+               elif self.status < 0:#elif self.status == -1 or self.status == -2:
                        #print "fpga-upgrade error >> errno : [%d]" % (self.status)
-                       self.status_bar.setText(_("Error[%d]. Press Cancel to exit." % (self.status)))
+                       ERROR_MSG = ''
+                       ERROR_CODE = int(self.status) * -1
+                       ERROR_MSG = self.parent.FPGA.get_error_msg(ERROR_CODE, ERROR_MSG)
+                       self.status_bar.setText("Fail to update!!")
+                       self["info"].setText(_("Error[%d] : %s.\nPress OK to exit." % (self.status, ERROR_MSG)))
                        self.timer_check_progress.stop()
                        self.is_done = 1
                else:
@@ -86,6 +91,7 @@ class UpgradeStatus(Screen):
                        self.status_bar.setText(_("%d / 100" % (self.status)))
 
        def callbackExit(self):
+               self.need_restart = True
                if self.exit_count == self.timeout:
                        self.timer_exit.stop()
                        self.keyExit()
@@ -93,6 +99,9 @@ class UpgradeStatus(Screen):
                self.instance.setTitle("%s (%d)" % (self.title_str, (self.timeout-self.exit_count)))
 
        def keyExit(self):
+               if self.need_restart:
+                       from Screens.Standby import TryQuitMainloop
+                       self.session.open(TryQuitMainloop, 2)
                if self.is_done :
                        self.close()