From c41e7c49dfebea1d3792f3c67b6694369eaf1993 Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Tue, 30 Aug 2011 22:29:29 +0200 Subject: [PATCH] CAN HEARZ IT!!!! --- openlp/core/ui/maindisplay.py | 88 ++++++++++++++----------------- openlp/core/ui/slidecontroller.py | 8 ++- 2 files changed, 46 insertions(+), 50 deletions(-) diff --git a/openlp/core/ui/maindisplay.py b/openlp/core/ui/maindisplay.py index c84e2c739..ddf74fb05 100644 --- a/openlp/core/ui/maindisplay.py +++ b/openlp/core/ui/maindisplay.py @@ -62,7 +62,10 @@ class MainDisplay(QtGui.QGraphicsView): self.override = {} self.retranslateUi() self.mediaObject = None - self.audioPlayer = None + if live: + self.audioPlayer = AudioPlayer(self) + else: + self.audioPlayer = None self.firstTime = True self.setStyleSheet(u'border: 0px; margin: 0px; padding: 0px;') self.setWindowFlags(QtCore.Qt.FramelessWindowHint | QtCore.Qt.Tool | @@ -102,7 +105,6 @@ class MainDisplay(QtGui.QGraphicsView): if self.isLive: if not self.firstTime: self.createMediaObject() - self.createAudioPlayer() log.debug(u'Setup webView') self.webView = QtWebKit.QWebView(self) self.webView.setGeometry(0, 0, @@ -178,12 +180,6 @@ class MainDisplay(QtGui.QGraphicsView): self.videoTick) log.debug(u'Creating Phonon objects - Finished for %s', self.isLive) - def createAudioPlayer(self): - self.firstTime = False - log.debug(u'Creating audio player - Start for %s', self.isLive) - self.audioPlayer = AudioPlayer(self) - log.debug(u'Creating Phonon objects - Finished for %s', self.isLive) - def text(self, slide): """ Add the slide text from slideController @@ -595,40 +591,22 @@ class AudioPlayer(QtCore.QObject): """ log.debug(u'AudioPlayer Initialisation started') QtCore.QObject.__init__(self, parent) - self.currentIndex = 0 - self.message = None + self.currentIndex = -1 self.playlist = [] self.mediaObject = Phonon.MediaObject() self.audioObject = Phonon.AudioOutput(Phonon.VideoCategory) Phonon.createPath(self.mediaObject, self.audioObject) - - def setup(self): - """ - Sets up the Audio Player for use - """ - log.debug(u'AudioPlayer Setup') - QtCore.QObject.connect(self.mediaObject, QtCore.SIGNAL(u'finished()'), - self.onFinished) QtCore.QObject.connect(self.mediaObject, - QtCore.SIGNAL(u'tick(qint64)'), self.onTick) - QtCore.QObject.connect(self.mediaObject, - QtCore.SIGNAL(u'aboutToFinish()'), self.onAboutToFinish()) + QtCore.SIGNAL(u'aboutToFinish()'), self.onAboutToFinish) - def close(self): + def __del__(self): """ Shutting down so clean up connections """ - self.onMediaStop() + self.stop() for path in self.mediaObject.outputPaths(): path.disconnect() - - def addToPlaylist(self, filename): - self.playlist.append(Phonon.MediaSource(filename)) - - def onFinished(self): - """ - Slot to capture when the currently playing media is finished. - """ + QtCore.QObject.__del__(self) def onAboutToFinish(self): """ @@ -639,42 +617,54 @@ class AudioPlayer(QtCore.QObject): if len(self.playlist) > self.currentIndex: self.mediaObject.enqueue(self.playlist[self.currentIndex]) - def onMediaQueue(self, message): + def reset(self): """ - Set up a video to play from the serviceitem. + Reset the audio player, clearing the playlist and the queue. """ - log.debug(u'AudioPlayer Queue new media message %s' % message) - mfile = os.path.join(message[0].get_frame_path(), - message[0].get_frame_title()) - self.mediaObject.setCurrentSource(Phonon.MediaSource(mfile)) - self.onMediaPlay() + self.currentIndex = -1 + self.playlist = [] + self.stop() + self.clearQueue() - def onMediaPlay(self): + def play(self): """ - We want to play the play so start it + We want to play the file so start it """ - log.debug(u'AudioPlayer _play called') + log.debug(u'AudioPlayer.play() called') + if self.currentIndex == -1: + self.currentIndex += 1 + self.mediaObject.enqueue(self.playlist[self.currentIndex]) self.mediaObject.play() - def onMediaPause(self): + def pause(self): """ Pause the Audio """ - log.debug(u'AudioPlayer Media paused by user') + log.debug(u'AudioPlayer.pause() called') self.mediaObject.pause() - def onMediaStop(self): + def stop(self): """ Stop the Audio and clean up """ - log.debug(u'AudioPlayer Media stopped by user') - self.message = None + log.debug(u'AudioPlayer.stop() called') self.mediaObject.stop() - self.onMediaFinish() - def onMediaFinish(self): + def addToPlaylist(self, filenames): + """ + Add another file to the playlist. + + ``filename`` + The file to add to the playlist. + """ + if not isinstance(filenames, list): + filenames = [filenames] + for filename in filenames: + self.playlist.append(Phonon.MediaSource(filename)) + + def clearQueue(self): """ Clean up the Object queue """ - log.debug(u'AudioPlayer Reached end of media playlist') + log.debug(u'AudioPlayer.clearQueue() called') self.mediaObject.clearQueue() diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index f0ac19fe3..df540f867 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -512,7 +512,7 @@ class SlideController(QtGui.QWidget): self.playSlidesOnce.setChecked(False) self.playSlidesOnce.setIcon(build_icon(u':/media/media_time.png')) self.playSlidesLoop.setChecked(False) - self.playSlidesLoop.setIcon(build_icon(u':/media/media_time.png')) + self.playSlidesLoop.setIcon(build_icon(u':/media/media_time.png')) if item.is_text(): if QtCore.QSettings().value( self.parent().songsSettingsSection + u'/display songbar', @@ -618,6 +618,12 @@ class SlideController(QtGui.QWidget): self.previewListWidget.setColumnWidth(0, width) if self.isLive: self.songMenu.menu().clear() + self.display.audioPlayer.reset() + if self.serviceItem.is_capable(ItemCapabilities.HasBackgroundAudio): + log.debug(u'Starting to play...') + self.display.audioPlayer.addToPlaylist( + self.serviceItem.background_audio) + self.display.audioPlayer.play() row = 0 text = [] for framenumber, frame in enumerate(self.serviceItem.get_frames()):