Fixing theme loading of presentations

This commit is contained in:
Mateus Meyer Jiacomelli 2023-01-11 03:07:34 +00:00 committed by Raoul Snyman
parent 1e43e3e4a4
commit 09009107e6
2 changed files with 52 additions and 1 deletions

View File

@ -971,6 +971,8 @@ class SlideController(QtWidgets.QWidget, LogMixin, RegistryProperties):
Registry().execute(
'{text}_start'.format(text=self.service_item.name.lower()),
[self.service_item, self.is_live, self._current_hide_mode, slide_no])
if self.service_item.is_capable(ItemCapabilities.ProvidesOwnTheme):
self._set_theme(self.service_item)
else:
self._set_theme(self.service_item)
self.info_label.setText(self.service_item.title)

View File

@ -26,10 +26,11 @@ import datetime
from unittest.mock import MagicMock, patch, sentinel
from PyQt5 import QtCore, QtGui
from openlp.core.lib.serviceitem import ServiceItem
from openlp.core.state import State
from openlp.core.common.registry import Registry
from openlp.core.lib import ServiceItemAction
from openlp.core.lib import ItemCapabilities, ServiceItemAction
from openlp.core.ui import HideMode
from openlp.core.ui.slidecontroller import NON_TEXT_MENU, WIDE_MENU, NARROW_MENU, InfoLabel, LiveController, \
PreviewController, SlideController
@ -1141,6 +1142,54 @@ def test_process_item_is_reloading_wont_change_display_hide_mode(mocked_execute,
slide_controller.set_hide_mode.assert_not_called()
@patch.object(Registry, 'execute')
def test_process_item_provides_own_theme(mocked_execute, registry, state_media):
"""
Test that media theme is set when media item is flagged with ProvidesOwnTheme
"""
# GIVEN: A mocked presentation service item that provides it's own theme, a mocked Registry.execute
# and a slide controller with many mocks.
mocked_pres_item = MagicMock()
mocked_pres_item.name = 'mocked_presentation_item'
mocked_pres_item.is_command.return_value = True
mocked_pres_item.is_media.return_value = False
mocked_pres_item.requires_media.return_value = False
mocked_pres_item.is_image.return_value = False
mocked_pres_item.is_text.return_value = False
# Needed to perform the capability checks
mocked_pres_item.is_capable = lambda param: ServiceItem.is_capable(mocked_pres_item, param)
mocked_pres_item.from_service = False
mocked_pres_item.capabilities = [ItemCapabilities.ProvidesOwnTheme]
mocked_pres_item.get_frames.return_value = []
mocked_settings = MagicMock()
mocked_settings.value.return_value = True
mocked_main_window = MagicMock()
Registry().register('settings', mocked_settings)
Registry().register('main_window', mocked_main_window)
Registry().register('media_controller', MagicMock())
Registry().register('application', MagicMock())
slide_controller = SlideController(None)
slide_controller.service_item = mocked_pres_item
slide_controller.is_live = False
slide_controller.preview_widget = MagicMock()
slide_controller.preview_display = MagicMock()
slide_controller.enable_tool_bar = MagicMock()
slide_controller.slide_selected = MagicMock()
slide_controller.on_stop_loop = MagicMock()
slide_controller.info_label = MagicMock()
slide_controller._set_theme = MagicMock()
slide_controller.displays = [MagicMock()]
slide_controller.split = 0
slide_controller.type_prefix = 'test'
slide_controller._current_hide_mode = None
# WHEN: _process_item is called
slide_controller._process_item(mocked_pres_item, 0)
# THEN: _set_theme should be called once
slide_controller._set_theme.assert_called_once()
def test_live_stolen_focus_shortcuts(settings):
"""
Test that all the needed shortcuts are available in scenarios where Live has stolen focus.