Exemplo n.º 1
0
    def __init__(self, name=''):
        super(DMediaPlaylist, self).__init__()
        self._name = name
        self._url = ''
        self._urls = []
        self._medias = DListModel(QmlSongObject)

        self.currentIndexChanged.connect(self.updateUrl)
Exemplo n.º 2
0
    def __init__(self, parent=None):
        super(PlaylistWorker, self).__init__(parent)

        self._playlistNames = []
        self._currentPlaylist = None

        self.emptyListModel = DListModel(QmlSongObject)
        registerObj('EmptyModel', self.emptyListModel)

        self.initConnect()
Exemplo n.º 3
0
class DMediaPlaylist(QMediaPlaylist):

    nameChanged = pyqtSignal('QString')
    countChanged = pyqtSignal(int)
    mediasChanged = pyqtSignal('QVariant')
    urlChanged = pyqtSignal('QString')

    def __init__(self, name=''):
        super(DMediaPlaylist, self).__init__()
        self._name = name
        self._url = ''
        self._urls = []
        self._medias = DListModel(QmlSongObject)

        self.currentIndexChanged.connect(self.updateUrl)

    @pyqtProperty('QString', notify=nameChanged)
    def name(self):
        return self._name

    @name.setter
    def name(self, name):
        self._name = name
        self.nameChanged.emit()

    @pyqtProperty('QString', notify=urlChanged)
    def url(self):
        return self._url

    @url.setter
    def url(self, value):
        self._url = value
        self.urlChanged.emit(value)

    def updateUrl(self, index):
        if index < len(self._urls):
            self.url = self._urls[index]

    @pyqtProperty(DListModel, notify=mediasChanged)
    def medias(self):
        return self._medias

    @medias.setter
    def medias(self, medias):
        self._medias = medias
        self.mediasChanged.emit(medias)

    @pyqtProperty('QVariant')
    def urls(self):
        return self._urls

    @pyqtProperty(int, notify=countChanged)
    def count(self):
        return self.mediaCount()

    @pyqtSlot()
    def clearMedias(self):
        flag = self.clear()
        if flag:
            self._urls = []
            self._medias.clear()

    def addMedia(self, url):
        if url not in self._urls:
            if url.startswith('http'):
                self.addOnlineMedia(url)
            else:
                if os.path.exists(url):
                    self.addLocalMedia(url)

    def addMedias(self, urls):
        for url in urls:
            self.addMedia(url)

    def addLocalMedia(self, url):
        mediaContent = DLocalMediaContent(url)
        songObj = MusicManageWorker.getSongObjByUrl(url)
        if songObj:
            self._medias.append(songObj)
        super(DMediaPlaylist, self).addMedia(mediaContent)
        self._urls.append(url)

    def insertLocalMedia(self, index, url):
        mediaContent = DLocalMediaContent(url)
        songObj = MusicManageWorker.getSongObjByUrl(url)
        if songObj:
            self._medias.insert(index, songObj)
        else:
            songObj = MusicManageWorker.generateSongObjByUrl(url)
            self._medias.insert(index, songObj)

        super(DMediaPlaylist, self).insertMedia(index, mediaContent)
        self._urls.insert(index, url)

    def addOnlineMedia(self, url):
        mediaContent = DOnlineMediaContent(url)
        songObj = OnlineMusicManageWorker.getSongObjByUrl(url)
        if songObj:
            self._medias.append(songObj)
        super(DMediaPlaylist, self).addMedia(mediaContent)
        self._urls.append(url)

    def removeMediaByUrl(self, url):
        print url, url in self._urls
        if url in self._urls:
            index = self._urls.index(url)
            self._urls.remove(url)
            self.removeMedia(index)
            if index < self._medias.count:
                self._medias.remove(index)

    def insertMediaByUrl(self, onlineUrl, localUrl):
        for index, url in enumerate(self._urls):
            if url == onlineUrl:
                self.removeMediaByUrl(onlineUrl)
                self.insertLocalMedia(index, localUrl)
Exemplo n.º 4
0
 def __init__(self, name=''):
     super(DMediaPlaylist, self).__init__()
     self._name = name
     self._urls = []
     self._medias = DListModel(QmlSongObject)
Exemplo n.º 5
0
class DMediaPlaylist(QMediaPlaylist):

    nameChanged = pyqtSignal('QString')
    countChanged = pyqtSignal(int)
    mediasChanged = pyqtSignal('QVariant')

    def __init__(self, name=''):
        super(DMediaPlaylist, self).__init__()
        self._name = name
        self._urls = []
        self._medias = DListModel(QmlSongObject)

    @pyqtProperty('QString', notify=nameChanged)
    def name(self):
        return self._name

    @name.setter
    def name(self, name):
        self._name = name
        self.nameChanged.emit()

    # @pyqtProperty(DListModel, notify=mediasChanged)
    # def medias(self):
    #     return self._medias

    # @medias.setter
    # def medias(self, medias):
    #     self._medias = medias
    #     self.mediasChanged.emit(medias)

    @pyqtProperty('QVariant')
    def urls(self):
        return self._urls

    @pyqtProperty(int, notify=countChanged)
    def count(self):
        return self.mediaCount()

    @pyqtSlot()
    def clearMedias(self):
        flag = self.clear()
        if flag:
            self._urls = []
            self._medias.clear()

    def addMedia(self, url):
        if url not in self._urls:
            if url.startswith('http'):
                self.addOnlineMedia(url)
                self._urls.append(url)
            else:
                if os.path.exists(url):
                    self.addLocalMedia(url)
                    self._urls.append(url)

    def addMedias(self, urls):
        for url in urls:
            self.addMedia(url)

    def addLocalMedia(self, url):
        mediaContent = DLocalMediaContent(url)
        songObj = MusicManageWorker.getSongObjByUrl(url)
        if songObj:
            self._medias.append(songObj)
        super(DMediaPlaylist, self).addMedia(mediaContent)

    def addOnlineMedia(self, url):
        mediaContent = DOnlineMediaContent(url)
        songObj = OnlineMusicManageWorker.getSongObjByUrl(url)
        if songObj:
            self._medias.append(songObj)
        super(DMediaPlaylist, self).addMedia(mediaContent)