diff --git a/openlp/core/ui/maindisplay.py b/openlp/core/ui/maindisplay.py index 8a43ccc36..971a9903f 100644 --- a/openlp/core/ui/maindisplay.py +++ b/openlp/core/ui/maindisplay.py @@ -144,7 +144,7 @@ class MainDisplay(Display): windowFlags = windowFlags | QtCore.Qt.SplashScreen self.setWindowFlags(windowFlags) self.setAttribute(QtCore.Qt.WA_DeleteOnClose) - self.setAttribute(QtCore.Qt.WA_TranslucentBackground, True) + self.setTransparency(True) if self.isLive: QtCore.QObject.connect(Receiver.get_receiver(), QtCore.SIGNAL(u'live_display_hide'), self.hideDisplay) @@ -155,6 +155,14 @@ class MainDisplay(Display): QtCore.QObject.connect(Receiver.get_receiver(), 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): """ We may need to rebuild the CSS on the live display. diff --git a/openlp/core/ui/media/mediacontroller.py b/openlp/core/ui/media/mediacontroller.py index dadd28dc6..9c44f1693 100644 --- a/openlp/core/ui/media/mediacontroller.py +++ b/openlp/core/ui/media/mediacontroller.py @@ -278,15 +278,15 @@ class MediaController(object): def set_controls_visible(self, controller, value): # Generic controls 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 # (e.g. for DVD control, ...) # 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): """ diff --git a/openlp/core/ui/media/phononplayer.py b/openlp/core/ui/media/phononplayer.py index 7699a979d..457accbd9 100644 --- a/openlp/core/ui/media/phononplayer.py +++ b/openlp/core/ui/media/phononplayer.py @@ -30,8 +30,6 @@ import mimetypes from datetime import datetime from PyQt4.phonon import Phonon -from PyQt4 import QtCore -import sys from openlp.core.lib import Receiver from openlp.core.lib.mediaplayer import MediaPlayer @@ -65,7 +63,6 @@ class PhononPlayer(MediaPlayer): def __init__(self, parent): MediaPlayer.__init__(self, parent, u'phonon') self.parent = parent - self.canBackground = True self.additional_extensions = ADDITIONAL_EXT mimetypes.init() for mimetype in Phonon.BackendCapabilities.availableMimeTypes(): @@ -96,23 +93,7 @@ class PhononPlayer(MediaPlayer): u' '.join(self.additional_extensions[mimetype]))) def setup(self, display): - if display.isLive: - 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 = Phonon.VideoWidget(display) display.phononWidget.resize(display.size()) display.mediaObject = Phonon.MediaObject(display) Phonon.createPath(display.mediaObject, display.phononWidget) @@ -172,10 +153,7 @@ class PhononPlayer(MediaPlayer): int(display.mediaObject.totalTime()/1000) controller.seekSlider.setMaximum(controller.media_info.length*1000) self.state = MediaState.Playing - if not controller.media_info.is_background: - display.phononWidget.raise_() - else: - display.raise_() + display.phononWidget.raise_() return True else: return False diff --git a/openlp/core/ui/media/vlcplayer.py b/openlp/core/ui/media/vlcplayer.py index de9e3c20d..2adf0a2d1 100644 --- a/openlp/core/ui/media/vlcplayer.py +++ b/openlp/core/ui/media/vlcplayer.py @@ -91,28 +91,11 @@ class VlcPlayer(MediaPlayer): MediaPlayer.__init__(self, parent, u'vlc') self.parent = parent self.canFolder = True - self.canBackground = True self.audio_extensions_list = AUDIO_EXT self.video_extensions_list = VIDEO_EXT def setup(self, display): - if display.isLive: - 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) + display.vlcWidget = QtGui.QFrame(display) # creating a basic vlc instance command_line_options = u'--no-video-title-show' if not display.hasAudio: @@ -125,7 +108,7 @@ class VlcPlayer(MediaPlayer): display.vlcInstance.set_log_verbosity(2) # creating an empty vlc media player display.vlcMediaPlayer = display.vlcInstance.media_player_new() - #display.vlcWidget.resize(display.size()) + display.vlcWidget.resize(display.size()) display.vlcWidget.raise_() display.vlcWidget.hide() # the media player has to be 'connected' to the QFrame @@ -177,7 +160,7 @@ class VlcPlayer(MediaPlayer): def resize(self, display): display.vlcWidget.resize(display.size()) - + def play(self, display): controller = display.controller start_time = 0 @@ -191,10 +174,7 @@ class VlcPlayer(MediaPlayer): int(display.vlcMediaPlayer.get_media().get_duration() / 1000) controller.seekSlider.setMaximum(controller.media_info.length * 1000) self.state = MediaState.Playing - if not controller.media_info.is_background: - display.vlcWidget.raise_() - else: - display.raise_() + display.vlcWidget.raise_() return True else: return False