コード例 #1
0
	def __updateFileTransfers(self, transfers):
		pridat = []

		for inf in self.__informations:
			inf[4] = True

		for transfer in transfers:
			pridame = True
			for inf in self.__informations:
				if inf[0] == (transfer['name'], transfer['project_url']):
					pridame = False
					inf[3] = transfer
					inf[4] = False
					break
			if pridame:
				pridat.append(transfer)

		for polozka in pridat:
			treeItem = QTreeWidgetItem(self.__treeWidget)
			progressBar = QProgressBar()
			progressBar.setAutoFillBackground(True)
			progressBar.setFixedHeight(self.__treeWidget.rowHeight(self.__treeWidget.indexFromItem(treeItem)))
			self.__treeWidget.setItemWidget(treeItem, 2, progressBar)
			self.__informations.append([(polozka['name'], polozka['project_url']), treeItem, progressBar, polozka, False])

			self.__updateData(polozka, treeItem, progressBar)

		for i in range(len(self.__informations) - 1, -1, -1):
			# odstranenie
			if self.__informations[i][4]:
				self.__treeWidget.takeTopLevelItem(i)
				self.__informations.pop(i)
			# aktualizacia
			else:
				inf = self.__informations[i]
				self.__updateData(inf[3], inf[1], inf[2])


		QTimer.singleShot(1000, self.sender().getFileTransfers)
コード例 #2
0
class UploadTransactionView(QTreeWidgetItem,View):
    #The widget that shows the progress of the upload.

    #TODO: Add time estimate. Might want to alter the core
    #to include timestamps on the upload transaction for each
    #new uploadToken received.

    #IDEA: Instead of updating the upload token on the UploadTransaction
    #we can add each token to a list on the UploadTransaction (transaction_tokens), and add the
    #timestamp. Then based on past progress, we can tell 3 things:
    # - Get an approximation of the transfer rate kb/s
    # - Time spent uploading
    # - Time left
    COLUMN_FILENAME = 0
    COLUMN_STATUS = 1
    COLUMN_PERCENTAGE = 2
    COLUMN_TEST_WIDGET = 3
    _uploadTransactionModel = None #UploadTransactionModel object
    _treeWidget = None
    
    def __init__(self, parentWidget, uploadTransaction):
        QTreeWidgetItem.__init__(self, None,QTreeWidgetItem.UserType)
        View.__init__(self)
        
        self.setTreeWidget(parentWidget)

        #we bootstrap the inner components and put the "LEGO" together
        self._uploadTransactionModel = uploadTransaction
        self._uploadTransactionProgressBar = QProgressBar()
        self._uploadTransactionProgressBar.setTextVisible(True)
        self._uploadTransactionProgressBar.setAutoFillBackground(True)

        self.setText(UploadTransactionView.COLUMN_FILENAME,utils.getFileName(uploadTransaction.getFilePath()))
        self.setText(UploadTransactionView.COLUMN_STATUS,uploadTransaction.getHumanUploadStatus())
        self.getTreeWidget().setItemWidget(self,UploadTransactionView.COLUMN_PERCENTAGE,self._uploadTransactionProgressBar)
        
    def getUploadTransactionModel(self):
        return self._uploadTransactionModel
        
    def updateUploadTransactionModel(self,uploadTransaction):
        #Given the latest transaction object, we grab its token object
        #and we update the percentage of the transaction
        #and other things
        #print "UploadTransactionView.updateUploadTransactionModel",uploadTransaction

        self._uploadTransactionModel = uploadTransaction
        self.setText(UploadTransactionView.COLUMN_PERCENTAGE,str(uploadTransaction.getUploadPercentage())+'%')
        self.setText(UploadTransactionView.COLUMN_STATUS,uploadTransaction.getHumanUploadStatus())

        self.updateStatus()

    def updateStatus(self):
        self.setText(UploadTransactionView.COLUMN_STATUS,self._uploadTransactionModel.getHumanUploadStatus())

        #Update the progress bar
        if self._uploadTransactionModel:
            #self._uploadTransactionProgressBar.setValue(self._uploadTransactionModel.getUploadPercentage())
            self._uploadTransactionProgressBar = QProgressBar()
            self._uploadTransactionProgressBar.setAutoFillBackground(True)
            self._uploadTransactionProgressBar.setValue(self._uploadTransactionModel.getUploadPercentage())
            self.getTreeWidget().setItemWidget(self,UploadTransactionView.COLUMN_PERCENTAGE,self._uploadTransactionProgressBar)

        
    def setTreeWidget(self, parent):
        self._treeWidget = parent
        
    def getTreeWidget(self):
        return self._treeWidget