fix default skins for SD skins.
[vuplus_dvbapp] / lib / python / Plugins / SystemPlugins / DeviceManager / plugin.py
index 66b67aa..c00d53f 100755 (executable)
@@ -102,41 +102,41 @@ class DeviceManagerConfiguration(Screen, ConfigListScreen):
 
 class DeviceManager(Screen):
        skin = """
-               <screen position="center,center" size="670,400" title="DeviceManager">
+               <screen position="center,center" size="590,350" title="DeviceManager">
                        <ePixmap pixmap="skin_default/buttons/red.png" position="20,0" size="140,40" alphatest="on" />
-                       <ePixmap pixmap="skin_default/buttons/green.png" position="180,0" size="140,40" alphatest="on" />
-                       <ePixmap pixmap="skin_default/buttons/yellow.png" position="340,0" size="140,40" alphatest="on" />
-                       <ePixmap pixmap="skin_default/buttons/blue.png" position="500,0" size="140,40" alphatest="on" />
+                       <ePixmap pixmap="skin_default/buttons/green.png" position="160,0" size="140,40" alphatest="on" />
+                       <ePixmap pixmap="skin_default/buttons/yellow.png" position="300,0" size="140,40" alphatest="on" />
+                       <ePixmap pixmap="skin_default/buttons/blue.png" position="440,0" size="140,40" alphatest="on" />
                        <widget name="key_red" position="20,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" foregroundColor="#ffffff" backgroundColor="#9f1313" transparent="1" />
-                       <widget name="key_green" position="180,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" foregroundColor="#ffffff" backgroundColor="#1f771f" transparent="1" />
-                       <widget name="key_yellow" position="340,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" foregroundColor="#ffffff" backgroundColor="#a08500" transparent="1" />
-                       <widget name="key_blue" position="500,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" foregroundColor="#ffffff" backgroundColor="#18188b" transparent="1" />
-                       <ePixmap pixmap="skin_default/div-h.png" position="0,48" size="670,2" alphatest="on" />
-                       <widget source="menu" render="Listbox" position="0,48" size="670,350" scrollbarMode="showOnDemand">
+                       <widget name="key_green" position="160,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" foregroundColor="#ffffff" backgroundColor="#1f771f" transparent="1" />
+                       <widget name="key_yellow" position="300,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" foregroundColor="#ffffff" backgroundColor="#a08500" transparent="1" />
+                       <widget name="key_blue" position="440,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" foregroundColor="#ffffff" backgroundColor="#18188b" transparent="1" />
+                       <ePixmap pixmap="skin_default/div-h.png" position="0,48" size="590,2" alphatest="on" />
+                       <widget source="menu" render="Listbox" position="0,48" size="590,350" scrollbarMode="showOnDemand">
                                <convert type="TemplatedMultiContent">
                                {"templates":
                                        {"default": (54,[
-                                                       MultiContentEntryText(pos = (100, 0), size = (560, 30), font=0, flags = RT_HALIGN_LEFT|RT_VALIGN_CENTER, text = 0), # index 0 is vendor  - model
-                                                       MultiContentEntryText(pos = (100, 32), size = (130, 20), font=1, flags = RT_HALIGN_LEFT|RT_VALIGN_CENTER, text = 1), # index 1 is Device
-                                                       MultiContentEntryText(pos = (230, 32), size = (130, 20), font=1, flags = RT_HALIGN_LEFT|RT_VALIGN_CENTER, text = 2), # index 2 is Size
-                                                       MultiContentEntryText(pos = (360, 32), size = (130, 20), font=1, flags = RT_HALIGN_LEFT|RT_VALIGN_CENTER, text = 3), # index 3 is Partitions
-                                                       MultiContentEntryText(pos = (490, 32), size = (140, 20), font=1, flags = RT_HALIGN_LEFT|RT_VALIGN_CENTER, text = 4), # index 4 is Removable
-                                                       MultiContentEntryPixmapAlphaTest(pos = (0, 52), size = (670, 2), png = 5), # png 5 is the div pixmap
+                                                       MultiContentEntryText(pos = (50, 0), size = (510, 30), font=0, flags = RT_HALIGN_LEFT|RT_VALIGN_CENTER, text = 0), # index 0 is vendor  - model
+                                                       MultiContentEntryText(pos = (50, 32), size = (120, 20), font=1, flags = RT_HALIGN_LEFT|RT_VALIGN_CENTER, text = 1), # index 1 is Device
+                                                       MultiContentEntryText(pos = (170, 32), size = (120, 20), font=1, flags = RT_HALIGN_LEFT|RT_VALIGN_CENTER, text = 2), # index 2 is Size
+                                                       MultiContentEntryText(pos = (290, 32), size = (120, 20), font=1, flags = RT_HALIGN_LEFT|RT_VALIGN_CENTER, text = 3), # index 3 is Partitions
+                                                       MultiContentEntryText(pos = (410, 32), size = (130, 20), font=1, flags = RT_HALIGN_LEFT|RT_VALIGN_CENTER, text = 4), # index 4 is Removable
+                                                       MultiContentEntryPixmapAlphaTest(pos = (0, 52), size = (590, 2), png = 5), # png 5 is the div pixmap
                                                ]),
                                        "partitions": (98, [
-                                                       MultiContentEntryText(pos = (100, 0), size = (560, 30), font=0, flags = RT_HALIGN_LEFT|RT_VALIGN_CENTER, text = 0), # index 1 is Partition
-                                                       MultiContentEntryText(pos = (100, 32), size = (560, 20), font=1, flags = RT_HALIGN_LEFT|RT_VALIGN_CENTER, text = 1), # index 2 is Mounted on
-                                                       MultiContentEntryText(pos = (100, 54), size = (560, 20), font=1, flags = RT_HALIGN_LEFT|RT_VALIGN_CENTER, text = 2), # index 3 UUID
-                                                       MultiContentEntryText(pos = (100, 76), size = (140, 20), font=1, flags = RT_HALIGN_LEFT|RT_VALIGN_CENTER, text = 3), # index 4 Type
-                                                       MultiContentEntryText(pos = (230, 76), size = (140, 20), font=1, flags = RT_HALIGN_LEFT|RT_VALIGN_CENTER, text = 4), # index 5 Size_total
-                                                       MultiContentEntryText(pos = (380, 76), size = (200, 20), font=1, flags = RT_HALIGN_LEFT|RT_VALIGN_CENTER, text = 5), # index 6 Size_free
-                                                       MultiContentEntryPixmapAlphaTest(pos = (0, 96), size = (670, 2), png = 6), # png 6 is the div pixmap
+                                                       MultiContentEntryText(pos = (50, 0), size = (500, 30), font=0, flags = RT_HALIGN_LEFT|RT_VALIGN_CENTER, text = 0), # index 1 is Partition
+                                                       MultiContentEntryText(pos = (50, 32), size = (500, 20), font=1, flags = RT_HALIGN_LEFT|RT_VALIGN_CENTER, text = 1), # index 2 is Mounted on
+                                                       MultiContentEntryText(pos = (50, 54), size = (500, 20), font=1, flags = RT_HALIGN_LEFT|RT_VALIGN_CENTER, text = 2), # index 3 UUID
+                                                       MultiContentEntryText(pos = (50, 76), size = (130, 20), font=1, flags = RT_HALIGN_LEFT|RT_VALIGN_CENTER, text = 3), # index 4 Type
+                                                       MultiContentEntryText(pos = (180, 76), size = (130, 20), font=1, flags = RT_HALIGN_LEFT|RT_VALIGN_CENTER, text = 4), # index 5 Size_total
+                                                       MultiContentEntryText(pos = (310, 76), size = (190, 20), font=1, flags = RT_HALIGN_LEFT|RT_VALIGN_CENTER, text = 5), # index 6 Size_free
+                                                       MultiContentEntryPixmapAlphaTest(pos = (0, 96), size = (590, 2), png = 6), # png 6 is the div pixmap
                                                ]),
                                        "mountpoint": (54,[
                                                        MultiContentEntryPixmapAlphaTest(pos = (10, 7), size = (30, 30), png = 0), # index 0: picture
                                                        MultiContentEntryText(pos = (40, 0), size = (500, 30), font=0, flags = RT_HALIGN_LEFT|RT_VALIGN_CENTER, text = 1), # index 1 name
                                                        MultiContentEntryText(pos = (40, 32), size = (500, 20), font=1, flags = RT_HALIGN_LEFT|RT_VALIGN_CENTER, text = 2), # index 2 path
-                                                       MultiContentEntryPixmapAlphaTest(pos = (0, 52), size = (670, 2), png = 5), # index 5 is the div pixmap
+                                                       MultiContentEntryPixmapAlphaTest(pos = (0, 52), size = (590, 2), png = 5), # index 5 is the div pixmap
                                                ])
                                        },
                                        "fonts": [gFont("Regular", 22),gFont("Regular", 16),gFont("Regular", 28)],
@@ -522,6 +522,11 @@ class DeviceInit(Screen):
                self.exitMessageTimer.callback.append(self.exitMessage)
                self.msg = ""
                self.fstype = None
+               self.mkfs_cmd = ""
+               self.doMkfsTimer = eTimer()
+               self.doMkfsTimer.callback.append(self.doMkfs)
+               self.doInitializeTimer = eTimer()
+               self.doInitializeTimer.callback.append(self.doInitialize)
 
        def timerStart(self):
                self.initStartTimer.start(100,True)
@@ -634,19 +639,22 @@ class DeviceInit(Screen):
                        for index in range(len(self.inputbox_partitionSizeList)):
                                msg += _("\npartition %d : %s MB")%(index+1, str(self.inputbox_partitionSizeList[index]))
                        self.msgWaiting = self.session.openWithCallback(self.msgWaitingCB, MessageBox_2, msg, type = MessageBox.TYPE_INFO, enable_input = False)
-                       set = ""
-                       partitions = len(self.inputbox_partitionSizeList)
-                       if partitions == 1:
-                               cmd = 'printf "8,\n;0,0\n;0,0\n;0,0\ny\n" | sfdisk -f -uS /dev/' + self.device
-                       else:
-                               for p in range(4):
-                                       if partitions > p+1:
-                                               set += ",%s\n"%(self.inputbox_partitionSizeList[p])
-                                       else:
-                                               set +=";\n"
-                               set+="y\n"
-                               cmd = 'printf "%s" | sfdisk -f -uM /dev/%s'%(set,self.device)
-                       self.deviceInitConsole.ePopen(cmd, self.initInitializeFinished)
+                       self.doInitializeTimer.start(500,True)
+
+       def doInitialize(self):
+               set = ""
+               partitions = len(self.inputbox_partitionSizeList)
+               if partitions == 1:
+                       cmd = 'printf "8,\n;0,0\n;0,0\n;0,0\ny\n" | sfdisk -f -uS /dev/' + self.device
+               else:
+                       for p in range(4):
+                               if partitions > p+1:
+                                       set += ",%s\n"%(self.inputbox_partitionSizeList[p])
+                               else:
+                                       set +=";\n"
+                       set+="y\n"
+                       cmd = 'printf "%s" | sfdisk -f -uM /dev/%s'%(set,self.device)
+               self.deviceInitConsole.ePopen(cmd, self.initInitializeFinished)
 
        def initInitializeFinished(self, result, retval, extra_args = None):
                if retval == 0:
@@ -716,7 +724,12 @@ class DeviceInit(Screen):
                msg += _("\nFilesystem : %s") % (self.fstype)
                msg += _("\nSize : %d MB\n")%int(self.inputbox_partitionSizeList[self.devicenumber-1])
                self.msgWaitingMkfs = self.session.openWithCallback(self.msgWaitingMkfsCB, MessageBox_2, msg, type = MessageBox.TYPE_INFO, enable_input = False)
-               self.deviceInitConsole.ePopen(cmd, self.createFilesystemFinished, (self.device, fulldevicename))
+               self.mkfs_cmd = cmd
+               self.doMkfsTimer.start(500,True)
+
+       def doMkfs(self):
+               fulldevicename = "/dev/" + self.device + str(self.devicenumber)
+               self.deviceInitConsole.ePopen(self.mkfs_cmd, self.createFilesystemFinished, (self.device, fulldevicename))
 
        def createFilesystemFinished(self, result, retval, extra_args = None):
                device = extra_args[0]
@@ -777,6 +790,8 @@ class DeviceCheck(Screen):
                self.onLayoutFinish.append(self.timerStart)
                self.checkStartTimer = eTimer()
                self.checkStartTimer.callback.append(self.confirmMessage)
+               self.umountTimer = eTimer()
+               self.umountTimer.callback.append(self.doUnmount)
 
        def timerStart(self):
                self.checkStartTimer.start(100,True)
@@ -800,7 +815,6 @@ class DeviceCheck(Screen):
                print "deviceCheckStart "
                print "partition : ", self.partition
                device = self.partition["partition"]
-               mountpoint = self.partition["mountpoint"]
                fstype = self.partition["fstype"]
                fssize = self.partition["size"]
                if device is not None and fstype.startswith("ext"):
@@ -808,13 +822,19 @@ class DeviceCheck(Screen):
                        msg += _("\nDevice : /dev/%s")%(device)
                        msg += _("\nFilesystem : %s")%(fstype)
                        self.msgWaiting = self.session.openWithCallback(self.msgWaitingCB, MessageBox_2, msg, type = MessageBox.TYPE_INFO, enable_input = False)
-                       if mountpoint != "":
-                               self.doUmountFsck(device, mountpoint, fstype)
-                       else:
-                               self.umountFsckFinished("NORESULT", 0, (device, mountpoint, fstype))
+                       self.umountTimer.start(500,True)
                else:
                        self.exit()
 
+       def doUnmount(self):
+               device = self.partition["partition"]
+               mountpoint = self.partition["mountpoint"]
+               fstype = self.partition["fstype"]
+               if mountpoint != "":
+                       self.doUmountFsck(device, mountpoint, fstype)
+               else:
+                       self.umountFsckFinished("NORESULT", 0, (device, mountpoint, fstype))
+
        def doUmountFsck(self, device, mountpoint, fstype):
                cmd = "umount /dev/%s" % device
                self.deviceCheckConsole.ePopen(cmd, self.umountFsckFinished, (device, mountpoint, fstype))
@@ -879,24 +899,31 @@ class DeviceFormat(Screen):
                self.onLayoutFinish.append(self.timerStart)
                self.formatStartTimer = eTimer()
                self.formatStartTimer.callback.append(self.DeviceFormatStart)
+               self.setHotplugDisabled = False
+               self.umountTimer = eTimer()
+               self.umountTimer.callback.append(self.doUnmount)
 
        def timerStart(self):
                self.formatStartTimer.start(100,True)
 
        def DeviceFormatStart(self):
+               devicemanagerhotplug.setHotplugActive(False)
+               self.setHotplugDisabled = True
                print "DeviceFormatStart : ", self.partition,
                print "Filesystem : ",self.newfstype
                device = self.partition["partition"]
                devicepath = "/dev/"+device
-               mountpoint = self.partition["mountpoint"]
                fssize = self.partition["size"]
                newfstype = self.newfstype
-
                msg = _("Format filesystem, please wait ...")
                msg += _("\nDevice : %s")%(devicepath)
                msg += _("\nFilesystem : %s")%(newfstype)
                msg += _("\nSize : %s")%(byteConversion(fssize))
-               self.msgWaiting = self.session.openWithCallback(self.msgWaitingCB, MessageBox_2, msg, type = MessageBox_2.TYPE_INFO, enable_input = False)
+               self.msgWaiting = self.session.openWithCallback(self.msgWaitingCB, MessageBox_2, msg, type = MessageBox_2.TYPE_INFO, enable_input = False, msgBoxID = None)
+               self.umountTimer.start(500,True)
+
+       def doUnmount(self):
+               mountpoint = self.partition["mountpoint"]
                if mountpoint != "":
                        self.doumountPartition()
                else:
@@ -1010,6 +1037,9 @@ class DeviceFormat(Screen):
                        self.session.openWithCallback(self.exit, MessageBox, msg, MessageBox.TYPE_ERROR, timeout = 10)
 
        def exit(self, ret):
+               if self.setHotplugDisabled == True:
+                       devicemanagerhotplug.setHotplugActive(True)
+                       self.setHotplugDisabled = False
                self.close()
 
 #device format end
@@ -1414,6 +1444,12 @@ class deviceManagerHotplug:
        def __init__(self):
                self.hotplugActive = True
 
+       def setHotplugActive(self,value=True):
+               if value:
+                       self.hotplugActive = True
+               else:
+                       self.hotplugActive = False
+
        def printDebug(self):
                for p in harddiskmanager.partitions:
                        print " # partition : %s %s %s %s %s(mp, des, f_mounted, is_hot, dev)"%(p.mountpoint, p.description, p.force_mounted, p.is_hotplug,p.device)