reactivate vlc

This commit is contained in:
rimach 2012-01-19 20:13:19 +01:00
parent edf4ac75c8
commit 88ce7a906d
4 changed files with 21 additions and 55 deletions

View File

@ -144,7 +144,7 @@ class MainDisplay(Display):
windowFlags = windowFlags | QtCore.Qt.SplashScreen windowFlags = windowFlags | QtCore.Qt.SplashScreen
self.setWindowFlags(windowFlags) self.setWindowFlags(windowFlags)
self.setAttribute(QtCore.Qt.WA_DeleteOnClose) self.setAttribute(QtCore.Qt.WA_DeleteOnClose)
self.setAttribute(QtCore.Qt.WA_TranslucentBackground, True) self.setTransparency(True)
if self.isLive: if self.isLive:
QtCore.QObject.connect(Receiver.get_receiver(), QtCore.QObject.connect(Receiver.get_receiver(),
QtCore.SIGNAL(u'live_display_hide'), self.hideDisplay) QtCore.SIGNAL(u'live_display_hide'), self.hideDisplay)
@ -155,6 +155,14 @@ class MainDisplay(Display):
QtCore.QObject.connect(Receiver.get_receiver(), QtCore.QObject.connect(Receiver.get_receiver(),
QtCore.SIGNAL(u'config_updated'), self.configChanged) QtCore.SIGNAL(u'config_updated'), self.configChanged)
def setTransparency(self, enabled):
if enabled:
self.setAutoFillBackground(False)
else:
self.setAttribute(QtCore.Qt.WA_NoSystemBackground, False)
self.setAttribute(QtCore.Qt.WA_TranslucentBackground, enabled)
self.repaint()
def cssChanged(self): def cssChanged(self):
""" """
We may need to rebuild the CSS on the live display. We may need to rebuild the CSS on the live display.

View File

@ -278,15 +278,15 @@ class MediaController(object):
def set_controls_visible(self, controller, value): def set_controls_visible(self, controller, value):
# Generic controls # Generic controls
controller.mediabar.setVisible(value) controller.mediabar.setVisible(value)
if controller.isLive and controller.display:
if self.curDisplayMediaPlayer and value:
if self.curDisplayMediaPlayer[controller.display] != self.mediaPlayers[u'webkit']:
controller.display.setTransparency(False)
else:
controller.display.setTransparency(True)
# Special controls: Here media type specific Controls will be enabled # Special controls: Here media type specific Controls will be enabled
# (e.g. for DVD control, ...) # (e.g. for DVD control, ...)
# TODO # TODO
# if controller.isLive and controller.display:
# if self.curDisplayMediaPlayer and value:
# if self.curDisplayMediaPlayer[controller.display] != self.mediaPlayers[u'webkit']:
# controller.display.setTransparency(False)
# else:
# controller.display.setTransparency(True)
def resize(self, controller, display, player): def resize(self, controller, display, player):
""" """

View File

@ -30,8 +30,6 @@ import mimetypes
from datetime import datetime from datetime import datetime
from PyQt4.phonon import Phonon from PyQt4.phonon import Phonon
from PyQt4 import QtCore
import sys
from openlp.core.lib import Receiver from openlp.core.lib import Receiver
from openlp.core.lib.mediaplayer import MediaPlayer from openlp.core.lib.mediaplayer import MediaPlayer
@ -65,7 +63,6 @@ class PhononPlayer(MediaPlayer):
def __init__(self, parent): def __init__(self, parent):
MediaPlayer.__init__(self, parent, u'phonon') MediaPlayer.__init__(self, parent, u'phonon')
self.parent = parent self.parent = parent
self.canBackground = True
self.additional_extensions = ADDITIONAL_EXT self.additional_extensions = ADDITIONAL_EXT
mimetypes.init() mimetypes.init()
for mimetype in Phonon.BackendCapabilities.availableMimeTypes(): for mimetype in Phonon.BackendCapabilities.availableMimeTypes():
@ -96,23 +93,7 @@ class PhononPlayer(MediaPlayer):
u' '.join(self.additional_extensions[mimetype]))) u' '.join(self.additional_extensions[mimetype])))
def setup(self, display): def setup(self, display):
if display.isLive: display.phononWidget = Phonon.VideoWidget(display)
display.phononWidget = Phonon.VideoWidget()
windowFlags = QtCore.Qt.FramelessWindowHint
if QtCore.QSettings().value(u'advanced/x11 bypass wm',
QtCore.QVariant(True)).toBool():
windowFlags = windowFlags | QtCore.Qt.X11BypassWindowManagerHint
# FIXME: QtCore.Qt.SplashScreen is workaround to make display screen
# stay always on top on Mac OS X. For details see bug 906926.
# It needs more investigation to fix it properly.
if sys.platform == 'darwin':
windowFlags = windowFlags | QtCore.Qt.SplashScreen
windowFlags = windowFlags | QtCore.Qt.Window
display.phononWidget.setWindowFlags(windowFlags)
display.phononWidget.setAttribute(QtCore.Qt.WA_DeleteOnClose)
display.phononWidget.setGeometry(display.geometry())#1280,0,1280,1024)
else:
display.phononWidget = Phonon.VideoWidget(display)
display.phononWidget.resize(display.size()) display.phononWidget.resize(display.size())
display.mediaObject = Phonon.MediaObject(display) display.mediaObject = Phonon.MediaObject(display)
Phonon.createPath(display.mediaObject, display.phononWidget) Phonon.createPath(display.mediaObject, display.phononWidget)
@ -172,10 +153,7 @@ class PhononPlayer(MediaPlayer):
int(display.mediaObject.totalTime()/1000) int(display.mediaObject.totalTime()/1000)
controller.seekSlider.setMaximum(controller.media_info.length*1000) controller.seekSlider.setMaximum(controller.media_info.length*1000)
self.state = MediaState.Playing self.state = MediaState.Playing
if not controller.media_info.is_background: display.phononWidget.raise_()
display.phononWidget.raise_()
else:
display.raise_()
return True return True
else: else:
return False return False

View File

@ -91,28 +91,11 @@ class VlcPlayer(MediaPlayer):
MediaPlayer.__init__(self, parent, u'vlc') MediaPlayer.__init__(self, parent, u'vlc')
self.parent = parent self.parent = parent
self.canFolder = True self.canFolder = True
self.canBackground = True
self.audio_extensions_list = AUDIO_EXT self.audio_extensions_list = AUDIO_EXT
self.video_extensions_list = VIDEO_EXT self.video_extensions_list = VIDEO_EXT
def setup(self, display): def setup(self, display):
if display.isLive: display.vlcWidget = QtGui.QFrame(display)
display.vlcWidget = QtGui.QFrame()
windowFlags = QtCore.Qt.FramelessWindowHint | QtCore.Qt.Tool
if QtCore.QSettings().value(u'advanced/x11 bypass wm',
QtCore.QVariant(True)).toBool():
windowFlags = windowFlags | QtCore.Qt.X11BypassWindowManagerHint
# FIXME: QtCore.Qt.SplashScreen is workaround to make display screen
# stay always on top on Mac OS X. For details see bug 906926.
# It needs more investigation to fix it properly.
if sys.platform == 'darwin':
windowFlags = windowFlags | QtCore.Qt.SplashScreen
windowFlags = windowFlags | QtCore.Qt.Window
display.vlcWidget.setWindowFlags(windowFlags)
display.vlcWidget.setAttribute(QtCore.Qt.WA_DeleteOnClose)
display.vlcWidget.setGeometry(display.geometry())
else:
display.vlcWidget = QtGui.QFrame(display)
# creating a basic vlc instance # creating a basic vlc instance
command_line_options = u'--no-video-title-show' command_line_options = u'--no-video-title-show'
if not display.hasAudio: if not display.hasAudio:
@ -125,7 +108,7 @@ class VlcPlayer(MediaPlayer):
display.vlcInstance.set_log_verbosity(2) display.vlcInstance.set_log_verbosity(2)
# creating an empty vlc media player # creating an empty vlc media player
display.vlcMediaPlayer = display.vlcInstance.media_player_new() display.vlcMediaPlayer = display.vlcInstance.media_player_new()
#display.vlcWidget.resize(display.size()) display.vlcWidget.resize(display.size())
display.vlcWidget.raise_() display.vlcWidget.raise_()
display.vlcWidget.hide() display.vlcWidget.hide()
# the media player has to be 'connected' to the QFrame # the media player has to be 'connected' to the QFrame
@ -177,7 +160,7 @@ class VlcPlayer(MediaPlayer):
def resize(self, display): def resize(self, display):
display.vlcWidget.resize(display.size()) display.vlcWidget.resize(display.size())
def play(self, display): def play(self, display):
controller = display.controller controller = display.controller
start_time = 0 start_time = 0
@ -191,10 +174,7 @@ class VlcPlayer(MediaPlayer):
int(display.vlcMediaPlayer.get_media().get_duration() / 1000) int(display.vlcMediaPlayer.get_media().get_duration() / 1000)
controller.seekSlider.setMaximum(controller.media_info.length * 1000) controller.seekSlider.setMaximum(controller.media_info.length * 1000)
self.state = MediaState.Playing self.state = MediaState.Playing
if not controller.media_info.is_background: display.vlcWidget.raise_()
display.vlcWidget.raise_()
else:
display.raise_()
return True return True
else: else:
return False return False