def __downloadNextItem(self):
        with self.__lock:
            if self.__shouldStop == True:
                self.__shouldStop = False
                self.active = None

                notifName = DownloadThread.DONE_NOTIFICATION
                Notification.removeObserver(self, notifName)
                self.__notifyStopped()
                return

            if len(self.queue) == 0:
                self.active = None

                notifName = DownloadThread.DONE_NOTIFICATION
                Notification.removeObserver(self, notifName)
                self.__notifyDone()
                return

            # Start the download-thread
            notifName = DownloadThread.DONE_NOTIFICATION
            Notification.addObserver(self, notifName)

            notifName = DownloadThread.NEW_OUTPUT_NOTIFICATION
            Notification.addObserver(self, notifName)

            self.active = self.queue[0]
            del self.queue[0]
            self.__downloadThread = DownloadThread(self.active)
            self.__downloadThread.start()

            self.__notifyNextDownload()