| 38 | self.packages = [] |
| 39 | |
| 40 | def queueChanged(self): #dirty.. |
| 41 | self.beginResetModel() |
| 42 | |
| 43 | self.packages = [] |
| 44 | |
| 45 | def partsFinished(p): |
| 46 | f = 0 |
| 47 | for c in p.children: |
| 48 | if c.data["status"] == 0: |
| 49 | f += 1 |
| 50 | return f |
| 51 | |
| 52 | def maxSize(p): |
| 53 | ms = 0 |
| 54 | cs = 0 |
| 55 | for c in p.children: |
| 56 | try: |
| 57 | s = c.data["downloading"]["size"] |
| 58 | except: |
| 59 | s = c.data["size"] |
| 60 | if c.data["downloading"]: |
| 61 | cs += s - c.data["downloading"]["bleft"] |
| 62 | elif self.queue.getProgress(c, False) == 100: |
| 63 | cs += s |
| 64 | ms += s |
| 65 | return ms, cs |
| 66 | |
| 67 | def getProgress(p): |
| 68 | for c in p.children: |
| 69 | if c.data["status"] == 13: |
| 70 | pass # TODO return _("Unpacking"), int(c.data["progress"]) |
| 71 | return _("Downloading"), self.queue.getProgress(p) |
| 72 | |
| 73 | d = self.queue._data |
| 74 | for p in d: |
| 75 | status, progress = getProgress(p) |
| 76 | maxsize, currentsize = maxSize(p) |
| 77 | speed = self.queue.getSpeed(p) |
| 78 | if speed: |
| 79 | eta = (maxsize - (maxsize * (progress/100.0)))/speed |
| 80 | else: |
| 81 | eta = 0 |
| 82 | if not speed and not progress: |
| 83 | status = _("Queued") |
| 84 | info = { |
| 85 | OverviewModel.PackageName: p.data["name"], |
| 86 | OverviewModel.Progress: progress, |
| 87 | OverviewModel.PartsFinished: partsFinished(p), |
| 88 | OverviewModel.Parts: len(p.children), |
| 89 | OverviewModel.ETA: int(eta), |
| 90 | OverviewModel.Speed: speed, |
| 91 | OverviewModel.CurrentSize: currentsize, |
| 92 | OverviewModel.MaxSize: maxsize, |
| 93 | OverviewModel.Status: status, |
| 94 | } |
| 95 | |
| 96 | self.packages.append(info) |
| 97 | |