move phonon and vlc to own windows

This commit is contained in:
rimach 2012-01-12 22:45:07 +01:00
parent 3e6d1e7962
commit edf4ac75c8
3 changed files with 54 additions and 17 deletions

View File

@ -278,21 +278,16 @@ class MediaController(object):
def set_controls_visible(self, controller, value):
# Generic controls
controller.mediabar.setVisible(value)
if controller.isLive and self.curDisplayMediaPlayer:
self.set_transparent_mode(controller, value)
# 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 set_transparent_mode(self, controller, value):
if value:
if self.curDisplayMediaPlayer[controller.display] != self.mediaPlayers[u'webkit']:
controller.display.setAttribute(QtCore.Qt.WA_NoSystemBackground, False)
else:
print "on"
controller.display.setAttribute(QtCore.Qt.WA_TranslucentBackground, True)
controller.display.setAttribute(QtCore.Qt.WA_NoSystemBackground, True)
def resize(self, controller, display, player):
"""
After Mainwindow changes or Splitter moved all related media widgets

View File

@ -30,6 +30,8 @@ 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
@ -63,6 +65,7 @@ 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():
@ -93,7 +96,23 @@ class PhononPlayer(MediaPlayer):
u' '.join(self.additional_extensions[mimetype])))
def setup(self, display):
display.phononWidget = Phonon.VideoWidget(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.resize(display.size())
display.mediaObject = Phonon.MediaObject(display)
Phonon.createPath(display.mediaObject, display.phononWidget)
@ -153,7 +172,10 @@ class PhononPlayer(MediaPlayer):
int(display.mediaObject.totalTime()/1000)
controller.seekSlider.setMaximum(controller.media_info.length*1000)
self.state = MediaState.Playing
display.phononWidget.raise_()
if not controller.media_info.is_background:
display.phononWidget.raise_()
else:
display.raise_()
return True
else:
return False

View File

@ -91,11 +91,28 @@ 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):
display.vlcWidget = QtGui.QFrame(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)
# creating a basic vlc instance
command_line_options = u'--no-video-title-show'
if not display.hasAudio:
@ -108,7 +125,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
@ -160,7 +177,7 @@ class VlcPlayer(MediaPlayer):
def resize(self, display):
display.vlcWidget.resize(display.size())
def play(self, display):
controller = display.controller
start_time = 0
@ -174,7 +191,10 @@ class VlcPlayer(MediaPlayer):
int(display.vlcMediaPlayer.get_media().get_duration() / 1000)
controller.seekSlider.setMaximum(controller.media_info.length * 1000)
self.state = MediaState.Playing
display.vlcWidget.raise_()
if not controller.media_info.is_background:
display.vlcWidget.raise_()
else:
display.raise_()
return True
else:
return False