Merge lp:~trb143/openlp/bugs into lp:openlp

Proposed by Tim Bentley
Status: Merged
Merged at revision: 1387
Proposed branch: lp:~trb143/openlp/bugs
Merge into: lp:openlp
Diff against target: 103 lines (+37/-1)
1 file modified
openlp/core/ui/maindisplay.py (+37/-1)
To merge this branch: bzr merge lp:~trb143/openlp/bugs
Reviewer Review Type Date Requested Status
Andreas Preikschat (community) Approve
Jon Tibble (community) Approve
Raoul Snyman Approve
Review via email: mp+53213@code.launchpad.net

This proposal supersedes a proposal from 2011-03-14.

Description of the change

Blank video at the end when it is finished.
Additional comments.
Hook for later development work.

To post a comment you must log in.
Revision history for this message
Raoul Snyman (raoul-snyman) wrote : Posted in a previous version of this proposal

What is "200" in terms of "setTickInterval"? Can you maybe just put a comment in that explains what the unit is for that number? i.e.

    # Need the timer to trigger
    if self.serviceItem.start_time != 0:
        # Set the tick interval to 200ms
        self.mediaObject.setTickInterval(200)

Note: I see afterwards that you explain it in the docstring for the slot method, but that doesn't really have a bearing on the actual interval.

review: Needs Information
Revision history for this message
Raoul Snyman (raoul-snyman) :
review: Approve
Revision history for this message
Jon Tibble (meths) :
review: Approve
Revision history for this message
Andreas Preikschat (googol-deactivatedaccount) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'openlp/core/ui/maindisplay.py'
--- openlp/core/ui/maindisplay.py 2011-03-09 18:14:50 +0000
+++ openlp/core/ui/maindisplay.py 2011-03-14 10:15:25 +0000
@@ -67,6 +67,7 @@
67 self.isLive = live67 self.isLive = live
68 self.alertTab = None68 self.alertTab = None
69 self.hideMode = None69 self.hideMode = None
70 self.videoHide = False
70 self.override = {}71 self.override = {}
71 mainIcon = build_icon(u':/icon/openlp-logo-16x16.png')72 mainIcon = build_icon(u':/icon/openlp-logo-16x16.png')
72 self.setWindowIcon(mainIcon)73 self.setWindowIcon(mainIcon)
@@ -90,7 +91,7 @@
90 """91 """
91 Set up and build the output screen92 Set up and build the output screen
92 """93 """
93 log.debug(u'Start setup for monitor %s (live = %s)' % 94 log.debug(u'Start setup for monitor %s (live = %s)' %
94 (self.screens.monitor_number, self.isLive))95 (self.screens.monitor_number, self.isLive))
95 self.usePhonon = QtCore.QSettings().value(96 self.usePhonon = QtCore.QSettings().value(
96 u'media/use phonon', QtCore.QVariant(True)).toBool()97 u'media/use phonon', QtCore.QVariant(True)).toBool()
@@ -110,6 +111,12 @@
110 QtCore.QObject.connect(self.mediaObject,111 QtCore.QObject.connect(self.mediaObject,
111 QtCore.SIGNAL(u'stateChanged(Phonon::State, Phonon::State)'),112 QtCore.SIGNAL(u'stateChanged(Phonon::State, Phonon::State)'),
112 self.videoStart)113 self.videoStart)
114 QtCore.QObject.connect(self.mediaObject,
115 QtCore.SIGNAL(u'finished()'),
116 self.videoFinished)
117 QtCore.QObject.connect(self.mediaObject,
118 QtCore.SIGNAL(u'tick(qint64)'),
119 self.videoTick)
113 log.debug(u'Setup webView for monitor %s' % self.screens.monitor_number)120 log.debug(u'Setup webView for monitor %s' % self.screens.monitor_number)
114 self.webView = QtWebKit.QWebView(self)121 self.webView = QtWebKit.QWebView(self)
115 self.webView.setGeometry(0, 0,122 self.webView.setGeometry(0, 0,
@@ -262,6 +269,7 @@
262 self.displayImage(self.serviceItem.bg_image_bytes)269 self.displayImage(self.serviceItem.bg_image_bytes)
263 else:270 else:
264 self.displayImage(None)271 self.displayImage(None)
272 # clear the cache
265 self.override = {}273 self.override = {}
266 # Update the preview frame.274 # Update the preview frame.
267 if self.isLive:275 if self.isLive:
@@ -349,6 +357,10 @@
349 self.mediaObject.stop()357 self.mediaObject.stop()
350 self.mediaObject.clearQueue()358 self.mediaObject.clearQueue()
351 self.mediaObject.setCurrentSource(Phonon.MediaSource(videoPath))359 self.mediaObject.setCurrentSource(Phonon.MediaSource(videoPath))
360 # Need the timer to trigger set the trigger to 200ms
361 # Value taken from web documentation.
362 if self.serviceItem.start_time != 0:
363 self.mediaObject.setTickInterval(200)
352 self.mediaObject.play()364 self.mediaObject.play()
353 self.webView.setVisible(False)365 self.webView.setVisible(False)
354 self.videoWidget.setVisible(True)366 self.videoWidget.setVisible(True)
@@ -363,8 +375,26 @@
363 Start the video at a predetermined point.375 Start the video at a predetermined point.
364 """376 """
365 if newState == Phonon.PlayingState:377 if newState == Phonon.PlayingState:
378 # set start time in milliseconds
366 self.mediaObject.seek(self.serviceItem.start_time * 1000)379 self.mediaObject.seek(self.serviceItem.start_time * 1000)
367380
381 def videoFinished(self):
382 """
383 Blank the Video when it has finished so the final frame is not left
384 hanging
385 """
386 self.videoStop()
387 self.hideDisplay(HideMode.Blank)
388 self.phononActive = False
389 self.videoHide = True
390
391 def videoTick(self, tick):
392 """
393 Triggered on video tick every 200 milli seconds
394 Will be used to manage stop time later
395 """
396 pass
397
368 def isWebLoaded(self):398 def isWebLoaded(self):
369 """399 """
370 Called by webView event to show display is fully loaded400 Called by webView event to show display is fully loaded
@@ -422,10 +452,12 @@
422 if u'video' in self.override:452 if u'video' in self.override:
423 Receiver.send_message(u'video_background_replaced')453 Receiver.send_message(u'video_background_replaced')
424 self.override = {}454 self.override = {}
455 # We have a different theme.
425 elif self.override[u'theme'] != serviceItem.themedata.theme_name:456 elif self.override[u'theme'] != serviceItem.themedata.theme_name:
426 Receiver.send_message(u'live_theme_changed')457 Receiver.send_message(u'live_theme_changed')
427 self.override = {}458 self.override = {}
428 else:459 else:
460 # replace the background
429 background = self.imageManager. \461 background = self.imageManager. \
430 get_image_bytes(self.override[u'image'])462 get_image_bytes(self.override[u'image'])
431 if self.serviceItem.themedata.background_filename:463 if self.serviceItem.themedata.background_filename:
@@ -441,6 +473,10 @@
441 # if was hidden keep it hidden473 # if was hidden keep it hidden
442 if self.hideMode and self.isLive:474 if self.hideMode and self.isLive:
443 self.hideDisplay(self.hideMode)475 self.hideDisplay(self.hideMode)
476 # display hidden for video end we have a new item so must be shown
477 if self.videoHide and self.isLive:
478 self.videoHide = False
479 self.showDisplay()
444 self.__hideMouse()480 self.__hideMouse()
445481
446 def footer(self, text):482 def footer(self, text):