- fix "Show Desktop" being not visible (now it's visible all the time)

- fix a bug: sending an image live when you hide the desktop, the image was visible for a short moment

bzr-revno: 1357
This commit is contained in:
Andreas Preikschat 2011-03-06 20:10:33 +01:00
commit bee8712f8c
2 changed files with 37 additions and 48 deletions

View File

@ -233,9 +233,6 @@ class MainDisplay(DisplayWidget):
image = self.imageManager.get_image_bytes(name) image = self.imageManager.get_image_bytes(name)
self.resetVideo() self.resetVideo()
self.displayImage(image) self.displayImage(image)
# show screen
if self.isLive:
self.setVisible(True)
return self.preview() return self.preview()
def displayImage(self, image): def displayImage(self, image):
@ -319,7 +316,7 @@ class MainDisplay(DisplayWidget):
Changes the volume of a running video Changes the volume of a running video
""" """
log.debug(u'videoVolume %d' % volume) log.debug(u'videoVolume %d' % volume)
vol = float(volume)/float(10) vol = float(volume) / float(10)
if self.phononActive: if self.phononActive:
self.audio.setVolume(vol) self.audio.setVolume(vol)
else: else:
@ -335,7 +332,7 @@ class MainDisplay(DisplayWidget):
# We are running a background theme # We are running a background theme
self.override[u'theme'] = u'' self.override[u'theme'] = u''
self.override[u'video'] = True self.override[u'video'] = True
vol = float(volume)/float(10) vol = float(volume) / float(10)
if isBackground or not self.usePhonon: if isBackground or not self.usePhonon:
js = u'show_video("init", "%s", %s, true); show_video("play");' % \ js = u'show_video("init", "%s", %s, true); show_video("play");' % \
(videoPath.replace(u'\\', u'\\\\'), str(vol)) (videoPath.replace(u'\\', u'\\\\'), str(vol))
@ -388,9 +385,10 @@ class MainDisplay(DisplayWidget):
Receiver.send_message(u'openlp_process_events') Receiver.send_message(u'openlp_process_events')
# if was hidden keep it hidden # if was hidden keep it hidden
if self.isLive: if self.isLive:
self.setVisible(True)
if self.hideMode: if self.hideMode:
self.hideDisplay(self.hideMode) self.hideDisplay(self.hideMode)
else:
self.setVisible(True)
preview = QtGui.QImage(self.screen[u'size'].width(), preview = QtGui.QImage(self.screen[u'size'].width(),
self.screen[u'size'].height(), self.screen[u'size'].height(),
QtGui.QImage.Format_ARGB32_Premultiplied) QtGui.QImage.Format_ARGB32_Premultiplied)

View File

@ -32,7 +32,7 @@ from PyQt4.phonon import Phonon
from openlp.core.lib import OpenLPToolbar, Receiver, resize_image, \ from openlp.core.lib import OpenLPToolbar, Receiver, resize_image, \
ItemCapabilities, translate ItemCapabilities, translate
from openlp.core.lib.ui import UiStrings, shortcut_action from openlp.core.lib.ui import icon_action, UiStrings, shortcut_action
from openlp.core.ui import HideMode, MainDisplay from openlp.core.ui import HideMode, MainDisplay
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
@ -114,8 +114,7 @@ class SlideController(QtGui.QWidget):
self.previewListWidget = SlideList(self) self.previewListWidget = SlideList(self)
self.previewListWidget.setColumnCount(1) self.previewListWidget.setColumnCount(1)
self.previewListWidget.horizontalHeader().setVisible(False) self.previewListWidget.horizontalHeader().setVisible(False)
self.previewListWidget.setColumnWidth( self.previewListWidget.setColumnWidth(0, self.controller.width())
0, self.controller.width())
self.previewListWidget.isLive = self.isLive self.previewListWidget.isLive = self.isLive
self.previewListWidget.setObjectName(u'PreviewListWidget') self.previewListWidget.setObjectName(u'PreviewListWidget')
self.previewListWidget.setSelectionBehavior(1) self.previewListWidget.setSelectionBehavior(1)
@ -146,36 +145,30 @@ class SlideController(QtGui.QWidget):
u':/slides/slide_next.png', u':/slides/slide_next.png',
translate('OpenLP.SlideController', 'Move to next'), translate('OpenLP.SlideController', 'Move to next'),
self.onSlideSelectedNext) self.onSlideSelectedNext)
if self.isLive:
self.toolbar.addToolbarSeparator(u'Close Separator') self.toolbar.addToolbarSeparator(u'Close Separator')
if self.isLive:
self.hideMenu = QtGui.QToolButton(self.toolbar) self.hideMenu = QtGui.QToolButton(self.toolbar)
self.hideMenu.setText(translate('OpenLP.SlideController', 'Hide')) self.hideMenu.setText(translate('OpenLP.SlideController', 'Hide'))
self.hideMenu.setPopupMode(QtGui.QToolButton.MenuButtonPopup) self.hideMenu.setPopupMode(QtGui.QToolButton.MenuButtonPopup)
self.toolbar.addToolbarWidget(u'Hide Menu', self.hideMenu) self.toolbar.addToolbarWidget(u'Hide Menu', self.hideMenu)
self.hideMenu.setMenu(QtGui.QMenu( self.hideMenu.setMenu(QtGui.QMenu(
translate('OpenLP.SlideController', 'Hide'), self.toolbar)) translate('OpenLP.SlideController', 'Hide'), self.toolbar))
self.blankScreen = QtGui.QAction(QtGui.QIcon( self.blankScreen = icon_action(self.hideMenu, u'Blank Screen',
u':/slides/slide_blank.png'), u':/slides/slide_blank.png', False)
translate('OpenLP.SlideController', self.blankScreen.setText(
'Blank Screen'), self.hideMenu) translate('OpenLP.SlideController', 'Blank Screen'))
self.blankScreen.setCheckable(True) self.themeScreen = icon_action(self.hideMenu, u'Blank Theme',
self.themeScreen = QtGui.QAction(QtGui.QIcon( u':/slides/slide_theme.png', False)
u':/slides/slide_theme.png'), self.themeScreen.setText(
translate('OpenLP.SlideController', translate('OpenLP.SlideController', 'Blank to Theme'))
'Blank to Theme'), self.hideMenu) self.desktopScreen = icon_action(self.hideMenu, u'Desktop Screen',
self.themeScreen.setCheckable(True) u':/slides/slide_desktop.png', False)
self.desktopScreen.setText(
translate('OpenLP.SlideController', 'Show Desktop'))
self.hideMenu.setDefaultAction(self.blankScreen) self.hideMenu.setDefaultAction(self.blankScreen)
self.hideMenu.menu().addAction(self.blankScreen) self.hideMenu.menu().addAction(self.blankScreen)
self.hideMenu.menu().addAction(self.themeScreen) self.hideMenu.menu().addAction(self.themeScreen)
if self.screens.display_count > 1:
self.desktopScreen = QtGui.QAction(QtGui.QIcon(
u':/slides/slide_desktop.png'),
translate('OpenLP.SlideController',
'Show Desktop'), self.hideMenu)
self.hideMenu.menu().addAction(self.desktopScreen) self.hideMenu.menu().addAction(self.desktopScreen)
self.desktopScreen.setCheckable(True)
QtCore.QObject.connect(self.desktopScreen,
QtCore.SIGNAL(u'triggered(bool)'), self.onHideDisplay)
self.toolbar.addToolbarSeparator(u'Loop Separator') self.toolbar.addToolbarSeparator(u'Loop Separator')
self.toolbar.addToolbarButton( self.toolbar.addToolbarButton(
# Does not need translating - control string. # Does not need translating - control string.
@ -195,7 +188,6 @@ class SlideController(QtGui.QWidget):
self.delaySpinBox.setToolTip(translate('OpenLP.SlideController', self.delaySpinBox.setToolTip(translate('OpenLP.SlideController',
'Delay between slides in seconds')) 'Delay between slides in seconds'))
else: else:
self.toolbar.addToolbarSeparator(u'Close Separator')
self.toolbar.addToolbarButton( self.toolbar.addToolbarButton(
# Does not need translating - control string. # Does not need translating - control string.
u'Go Live', u':/general/general_live.png', u'Go Live', u':/general/general_live.png',
@ -226,8 +218,7 @@ class SlideController(QtGui.QWidget):
if self.isLive: if self.isLive:
# Build the Song Toolbar # Build the Song Toolbar
self.songMenu = QtGui.QToolButton(self.toolbar) self.songMenu = QtGui.QToolButton(self.toolbar)
self.songMenu.setText(translate('OpenLP.SlideController', self.songMenu.setText(translate('OpenLP.SlideController', 'Go To'))
'Go To'))
self.songMenu.setPopupMode(QtGui.QToolButton.InstantPopup) self.songMenu.setPopupMode(QtGui.QToolButton.InstantPopup)
self.toolbar.addToolbarWidget(u'Song Menu', self.songMenu) self.toolbar.addToolbarWidget(u'Song Menu', self.songMenu)
self.songMenu.setMenu(QtGui.QMenu( self.songMenu.setMenu(QtGui.QMenu(
@ -303,6 +294,8 @@ class SlideController(QtGui.QWidget):
QtCore.SIGNAL(u'triggered(bool)'), self.onBlankDisplay) QtCore.SIGNAL(u'triggered(bool)'), self.onBlankDisplay)
QtCore.QObject.connect(self.themeScreen, QtCore.QObject.connect(self.themeScreen,
QtCore.SIGNAL(u'triggered(bool)'), self.onThemeDisplay) QtCore.SIGNAL(u'triggered(bool)'), self.onThemeDisplay)
QtCore.QObject.connect(self.desktopScreen,
QtCore.SIGNAL(u'triggered(bool)'), self.onHideDisplay)
QtCore.QObject.connect(self.volumeSlider, QtCore.QObject.connect(self.volumeSlider,
QtCore.SIGNAL(u'sliderReleased()'), self.mediaVolume) QtCore.SIGNAL(u'sliderReleased()'), self.mediaVolume)
QtCore.QObject.connect(Receiver.get_receiver(), QtCore.QObject.connect(Receiver.get_receiver(),
@ -469,6 +462,9 @@ class SlideController(QtGui.QWidget):
self.onSlideSelected() self.onSlideSelected()
def receiveSpinDelay(self, value): def receiveSpinDelay(self, value):
"""
Adjusts the value of the ``delaySpinBox`` to the given one.
"""
self.delaySpinBox.setValue(int(value)) self.delaySpinBox.setValue(int(value))
def enableToolBar(self, item): def enableToolBar(self, item):
@ -752,7 +748,6 @@ class SlideController(QtGui.QWidget):
self.hideMenu.setDefaultAction(self.blankScreen) self.hideMenu.setDefaultAction(self.blankScreen)
self.blankScreen.setChecked(checked) self.blankScreen.setChecked(checked)
self.themeScreen.setChecked(False) self.themeScreen.setChecked(False)
if self.screens.display_count > 1:
self.desktopScreen.setChecked(False) self.desktopScreen.setChecked(False)
if checked: if checked:
Receiver.send_message(u'maindisplay_hide', HideMode.Blank) Receiver.send_message(u'maindisplay_hide', HideMode.Blank)
@ -774,7 +769,6 @@ class SlideController(QtGui.QWidget):
self.hideMenu.setDefaultAction(self.themeScreen) self.hideMenu.setDefaultAction(self.themeScreen)
self.blankScreen.setChecked(False) self.blankScreen.setChecked(False)
self.themeScreen.setChecked(checked) self.themeScreen.setChecked(checked)
if self.screens.display_count > 1:
self.desktopScreen.setChecked(False) self.desktopScreen.setChecked(False)
if checked: if checked:
Receiver.send_message(u'maindisplay_hide', HideMode.Theme) Receiver.send_message(u'maindisplay_hide', HideMode.Theme)
@ -796,9 +790,6 @@ class SlideController(QtGui.QWidget):
self.hideMenu.setDefaultAction(self.desktopScreen) self.hideMenu.setDefaultAction(self.desktopScreen)
self.blankScreen.setChecked(False) self.blankScreen.setChecked(False)
self.themeScreen.setChecked(False) self.themeScreen.setChecked(False)
# On valid if more than 1 display
if self.screens.display_count <= 1:
return
self.desktopScreen.setChecked(checked) self.desktopScreen.setChecked(checked)
if checked: if checked:
Receiver.send_message(u'maindisplay_hide', HideMode.Screen) Receiver.send_message(u'maindisplay_hide', HideMode.Screen)
@ -1103,15 +1094,15 @@ class SlideController(QtGui.QWidget):
Used by command items which provide their own displays to reset the Used by command items which provide their own displays to reset the
screen hide attributes screen hide attributes
""" """
blank = None
if self.blankScreen.isChecked: if self.blankScreen.isChecked:
self.blankScreen.setChecked(False) blank = self.blankScreen
self.hideMenu.setDefaultAction(self.blankScreen) if self.themeScreen.isChecked:
blank = self.themeScreen
if self.desktopScreen.isChecked:
blank = self.desktopScreen
if blank:
blank.setChecked(False)
self.hideMenu.setDefaultAction(blank)
QtCore.QSettings().remove( QtCore.QSettings().remove(
self.parent.generalSettingsSection + u'/screen blank') self.parent.generalSettingsSection + u'/screen blank')
if self.themeScreen.isChecked:
self.themeScreen.setChecked(False)
self.hideMenu.setDefaultAction(self.themeScreen)
if self.screens.display_count > 1:
if self.desktopScreen.isChecked:
self.desktopScreen.setChecked(False)
self.hideMenu.setDefaultAction(self.desktopScreen)