def __init__(self, name=''): super(DMediaPlaylist, self).__init__() self._name = name self._url = '' self._urls = [] self._medias = DListModel(QmlSongObject) self.currentIndexChanged.connect(self.updateUrl)
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()
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)
def __init__(self, name=''): super(DMediaPlaylist, self).__init__() self._name = name self._urls = [] self._medias = DListModel(QmlSongObject)
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)