def findPinItems(self, path): ret = modelSearch(self.model, search=path, columns=[self.COL_PATH]) if len(ret) == 0: return None itemP = self.model.itemFromIndex(ret.pop()) if not itemP: return None idxQueue = self.model.index(itemP.row(), self.COL_QUEUE, itemP.index().parent()) idxProgress = self.model.index(itemP.row(), self.COL_PROGRESS, itemP.index().parent()) idxStatus = self.model.index(itemP.row(), self.COL_STATUS, itemP.index().parent()) idxC = self.model.index(itemP.row(), self.COL_CTRL, itemP.index().parent()) cancelButton = self.tree.indexWidget(idxC) return { 'itemPath': itemP, 'itemQname': self.model.itemFromIndex(idxQueue), 'itemProgress': self.model.itemFromIndex(idxProgress), 'itemStatus': self.model.itemFromIndex(idxStatus), 'cancelButton': cancelButton }
def purgeFinishedItems(self): maxFinished = 16 ret = modelSearch(self.model, search=iPinned(), columns=[self.COL_STATUS]) if len(ret) > maxFinished: rows = [] for idx in ret: item = self.model.itemFromIndex(idx) if not item: continue rows.append(item.row()) try: for row in list(sorted(rows))[int(maxFinished / 2):]: self.model.removeRow(row) except: pass
def removeItem(self, path): modelSearch(self.model, search=path, columns=[self.COL_PATH], delete=True)