-
- directories = os.listdir(directory)
-
- if directory != "/" and self.showDirectories:
- self.list.append(FileEntryComponent(name = "..", absolute = '/'.join(directory.split('/')[:-2]) + '/', isDir = True))
- for x in directories:
- if os.path.isdir(directory + x):
- if self.showDirectories:
- self.list.append(FileEntryComponent(name = x, absolute = directory + x + "/" , isDir = True))
- elif self.showFiles:
+
+ # if we are just entering from the list of mount points:
+ if self.current_directory is None:
+ if directory is None:
+ self.mount_point = None
+ else:
+ # Sort Mountpoints by length (longest first)
+ sortedp = harddiskmanager.getMountedPartitions()
+ sortedp.sort(key=lambda p: 0 - len(p.mountpoint))
+
+ # Search for the longest matching mp (should at least match /)
+ for p in sortedp:
+ if directory.startswith(p.mountpoint):
+ self.mount_point = p.mountpoint
+ if p.mountpoint != "/":
+ self.mount_point += "/"
+ break
+ self.current_directory = directory
+ directories = []
+ files = []
+
+ if directory is None: # present available mountpoints
+ print "listing partitions:"
+ for p in harddiskmanager.getMountedPartitions():
+ if p.mountpoint == "/":
+ self.list.append(FileEntryComponent(name = p.description, absolute = p.mountpoint, isDir = True))
+ else:
+ self.list.append(FileEntryComponent(name = p.description, absolute = p.mountpoint + "/", isDir = True))
+ files = [ ]
+ directories = [ ]
+ elif self.useServiceRef:
+ root = eServiceReference("2:0:1:0:0:0:0:0:0:0:" + directory)
+ if self.additional_extensions:
+ root.setName(self.additional_extensions)
+ serviceHandler = eServiceCenter.getInstance()
+ list = serviceHandler.list(root)
+
+ while 1:
+ s = list.getNext()
+ if not s.valid():
+ del list
+ break
+ if s.flags & s.mustDescent:
+ directories.append(s.getPath())
+ else:
+ files.append(s)
+ print s.getName(), s.flags
+ directories.sort()
+ files.sort()
+ else:
+ if os_path.exists(directory):
+ files = listdir(directory)
+ files.sort()
+ tmpfiles = files[:]
+ for x in tmpfiles:
+ if os_path.isdir(directory + x):
+ directories.append(directory + x + "/")
+ files.remove(x)
+
+ if directory is not None and self.showDirectories and not self.isTop:
+ if directory == self.mount_point:
+ self.list.append(FileEntryComponent(name = ".. (" +_("List of Storage Devices") + ")", absolute = None, isDir = True))
+ else:
+ self.list.append(FileEntryComponent(name = "..", absolute = '/'.join(directory.split('/')[:-2]) + '/', isDir = True))
+
+ if self.showDirectories:
+ for x in directories:
+ name = x.split('/')[-2]
+ self.list.append(FileEntryComponent(name = name, absolute = x, isDir = True))
+
+ if self.showFiles:
+ for x in files:
+ if self.useServiceRef:
+ path = x.getPath()
+ name = path.split('/')[-1]
+ else:
+ path = directory + x
+ name = x
+