diff options
author | mkaay <mkaay@mkaay.de> | 2009-12-26 20:46:36 +0100 |
---|---|---|
committer | mkaay <mkaay@mkaay.de> | 2009-12-26 20:46:36 +0100 |
commit | 8888b714d748398e99f7425fa861f4e165579da6 (patch) | |
tree | cdd5818daeb9cd9283c94ae8bdec2deb74d88727 /module/gui | |
parent | fixed ddl-music, cleaned up, new status (starting), some more fixes (diff) | |
download | pyload-8888b714d748398e99f7425fa861f4e165579da6.tar.xz |
fixed view update
Diffstat (limited to 'module/gui')
-rw-r--r-- | module/gui/Collector.py | 32 | ||||
-rw-r--r-- | module/gui/Queue.py | 20 |
2 files changed, 32 insertions, 20 deletions
diff --git a/module/gui/Collector.py b/module/gui/Collector.py index 1f89670ce..bf0e50349 100644 --- a/module/gui/Collector.py +++ b/module/gui/Collector.py @@ -29,6 +29,7 @@ class PackageCollector(QThread): self.collector = [] self.interval = 2 self.running = True + self.rootItem = self.view.invisibleRootItem() self.mutex = QMutex() def run(self): @@ -45,12 +46,16 @@ class PackageCollector(QThread): ids = [] for data in packs: ids.append(data["id"]) + self.clear(ids) + for data in packs: + ids.append(data["id"]) pack = self.getPack(data["id"]) if not pack: pack = self.PackageCollectorPack(self) pack.setData(data) self.addPack(data["id"], pack) files = self.connector.getPackageFiles(data["id"]) + pack.clear(files) for fid in files: info = self.connector.getLinkInfo(fid) child = pack.getChild(fid) @@ -58,8 +63,6 @@ class PackageCollector(QThread): child = self.PackageCollectorFile(self, pack) child.setData(info) pack.addChild(fid, child) - pack.clear(files) - self.clear(ids) def addPack(self, pid, newPack): pos = None @@ -74,10 +77,10 @@ class PackageCollector(QThread): except: self.collector.append(newPack) pos = self.collector.index(newPack) - item = self.view.topLevelItem(pos) + item = self.rootItem.child(pos) if not item: item = QTreeWidgetItem() - self.view.insertTopLevelItem(pos, item) + self.rootItem.insertChild(pos, item) item.setData(0, Qt.DisplayRole, QVariant(newPack.getData()["package_name"])) item.setData(0, Qt.UserRole, QVariant(pid)) @@ -95,8 +98,8 @@ class PackageCollector(QThread): break if not clear: return - self.collector = [] - self.view.emit(SIGNAL("clear")) + self.queue = [] + self.rootItem.takeChildren() class PackageCollectorPack(): def __init__(self, collector): @@ -118,7 +121,7 @@ class PackageCollector(QThread): self.children.append(newChild) pos = self.children.index(newChild) ppos = self.collector.collector.index(self) - parent = self.collector.view.topLevelItem(ppos) + parent = self.collector.rootItem.child(ppos) item = parent.child(pos) if not item: item = QTreeWidgetItem() @@ -149,14 +152,23 @@ class PackageCollector(QThread): def clear(self, ids): clear = False + children = {} for file in self.getChildren(): if not file.getData()["id"] in ids: clear = True break + try: + children[file.getData()["id"]] + clear = True + except: + children[file.getData()["id"]] = True + if not clear: return - self.collector.collector = [] - self.collector.view.emit(SIGNAL("clear")) + ppos = self.collector.collector.index(self) + parent = self.collector.rootItem.child(ppos) + parent.takeChildren() + self.children = [] class PackageCollectorFile(): def __init__(self, collector, pack): @@ -193,6 +205,7 @@ class LinkCollector(QThread): def update(self): locker = QMutexLocker(self.mutex) ids = self.connector.getLinkCollector() + self.clear(ids) for id in ids: data = self.connector.getLinkInfo(id) file = self.getFile(id) @@ -200,7 +213,6 @@ class LinkCollector(QThread): file = self.LinkCollectorFile(self) file.setData(data) self.addFile(id, file) - self.clear(ids) def addFile(self, pid, newFile): pos = None diff --git a/module/gui/Queue.py b/module/gui/Queue.py index f542c9a6b..0def31bf6 100644 --- a/module/gui/Queue.py +++ b/module/gui/Queue.py @@ -40,6 +40,7 @@ class Queue(QThread): self.interval = 1 self.running = True self.wait_dict = {} + self.rootItem = self.view.invisibleRootItem() self.mutex = QMutex() def run(self): @@ -63,13 +64,16 @@ class Queue(QThread): downloading[did] = d ids = [] for data in packs: - pack = self.getPack(data["id"]) ids.append(data["id"]) + self.clear(ids) + for data in packs: + pack = self.getPack(data["id"]) if not pack: pack = self.QueuePack(self) pack.setData(data) self.addPack(data["id"], pack) files = self.connector.getPackageFiles(data["id"]) + pack.clear(files) for fid in files: info = self.connector.getLinkInfo(fid) child = pack.getChild(fid) @@ -82,8 +86,6 @@ class Queue(QThread): pass child.setData(info) pack.addChild(fid, child) - pack.clear(files) - self.clear(ids) def addPack(self, pid, newPack): pos = None @@ -98,10 +100,10 @@ class Queue(QThread): except: self.queue.append(newPack) pos = self.queue.index(newPack) - item = self.view.topLevelItem(pos) + item = self.rootItem.child(pos) if not item: item = QTreeWidgetItem() - self.view.insertTopLevelItem(pos, item) + self.rootItem.insertChild(pos, item) item.setData(0, Qt.DisplayRole, QVariant(newPack.getData()["package_name"])) status = -1 speed = self.getSpeed(newPack) @@ -136,7 +138,7 @@ class Queue(QThread): if not clear: return self.queue = [] - self.view.emit(SIGNAL("clear")) + self.rootItem.takeChildren() def getWaitingProgress(self, q): locker = QMutexLocker(self.mutex) @@ -233,7 +235,7 @@ class Queue(QThread): self.children.append(newChild) pos = self.children.index(newChild) ppos = self.queue.queue.index(self) - parent = self.queue.view.topLevelItem(ppos) + parent = self.queue.rootItem.child(ppos) item = parent.child(pos) if not item: item = QTreeWidgetItem() @@ -283,11 +285,9 @@ class Queue(QThread): if not clear: return ppos = self.queue.queue.index(self) - parent = self.queue.view.topLevelItem(ppos) + parent = self.queue.rootItem.child(ppos) parent.takeChildren() self.children = [] - self.queue.queue = [] - self.queue.view.emit(SIGNAL("clear")) class QueueFile(): def __init__(self, queue, pack): |