diff --git a/openlp/core/ui/mainwindow.py b/openlp/core/ui/mainwindow.py index 59a7a6fcf..9e8de716a 100644 --- a/openlp/core/ui/mainwindow.py +++ b/openlp/core/ui/mainwindow.py @@ -650,14 +650,22 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow, LogMixin, RegistryPropert # This will store currently used layout preset so it remains enabled on next startup. # If any panel is enabled/disabled after preset is set, this setting is not saved. view_mode = self.settings.value('core/view mode') - if view_mode == 'default' and self.settings.value('user interface/is preset layout'): - self.mode_default_item.setChecked(True) - elif view_mode == 'setup' and self.settings.value('user interface/is preset layout'): - self.set_view_mode(True, True, False, True, False, True) - self.mode_setup_item.setChecked(True) - elif view_mode == 'live' and self.settings.value('user interface/is preset layout'): - self.set_view_mode(False, True, False, False, True, True) - self.mode_live_item.setChecked(True) + # If we are using a default mode set accordingly + if self.settings.value('user interface/is preset layout'): + if view_mode == 'default': + self.set_view_mode(True, True, True, True, True, True) + self.mode_default_item.setChecked(True) + elif view_mode == 'setup': + self.set_view_mode(True, True, False, True, False, True) + self.mode_setup_item.setChecked(True) + elif view_mode == 'live': + self.set_view_mode(False, True, False, False, True, True) + self.mode_live_item.setChecked(True) + else: + self.set_view_mode(True, True, True, + self.settings.value('user interface/preview panel'), + self.settings.value('user interface/live panel'), + True) def first_time(self): """ @@ -977,7 +985,8 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow, LogMixin, RegistryPropert self.settings.setValue('user interface/is preset layout', True) self.settings.setValue('projector/show after wizard', True) - def set_view_mode(self, media=True, service=True, theme=True, preview=True, live=True, projector=True, mode=''): + def set_view_mode(self, media=True, service=True, theme=True, preview=True, + live=True, projector=True, mode='') -> None: """ Set OpenLP to a different view mode. """ diff --git a/tests/openlp_core/ui/test_mainwindow.py b/tests/openlp_core/ui/test_mainwindow.py index 52598def4..ad40786c0 100644 --- a/tests/openlp_core/ui/test_mainwindow.py +++ b/tests/openlp_core/ui/test_mainwindow.py @@ -580,3 +580,110 @@ def test_projector_manager_dock_unlocked(main_window_reduced): # THEN: Projector manager dock should have been called with enable UI features projector_dock.setFeatures.assert_called_with(7) + + +@patch('openlp.core.ui.mainwindow.MainWindow.set_view_mode') +def test_load_settings_view_mode_default_mode(mocked_view_mode, main_window, settings): + """ + Test that the view mode is called with the correct parameters for default mode + """ + # GIVEN a newly opened OpenLP instance, mocked screens and settings for a valid window position + # mock out some other calls in load_settings() + main_window.control_splitter = MagicMock() + main_window._live_controller = MagicMock() + main_window._preview_controller = MagicMock() + main_window.settings.setValue('core/view mode', 'default') + main_window.settings.setValue('user interface/is preset layout', True) + + # WHENL we call to show method + main_window.show() + + # THEN: + # The default mode should have been called. + mocked_view_mode.assert_called_with(True, True, True, True, True, True) + + +@patch('openlp.core.ui.mainwindow.MainWindow.set_view_mode') +def test_load_settings_view_mode_setup_mode(mocked_view_mode, main_window, settings): + """ + Test that the view mode is called with the correct parameters for setup mode + """ + # GIVEN a newly opened OpenLP instance, mocked screens and settings for a valid window position + # mock out some other calls in load_settings() + main_window.control_splitter = MagicMock() + main_window._live_controller = MagicMock() + main_window._preview_controller = MagicMock() + main_window.settings.setValue('core/view mode', 'setup') + main_window.settings.setValue('user interface/is preset layout', True) + + # WHENL we call to show method + main_window.show() + + # THEN: + # The default mode should have been called. + mocked_view_mode.assert_called_with(True, True, False, True, False, True) + + +@patch('openlp.core.ui.mainwindow.MainWindow.set_view_mode') +def test_load_settings_view_mode_live_mode(mocked_view_mode, main_window, settings): + """ + Test that the view mode is called with the correct parameters for live mode + """ + # GIVEN a newly opened OpenLP instance, mocked screens and settings for a valid window position + # mock out some other calls in load_settings() + main_window.control_splitter = MagicMock() + main_window._live_controller = MagicMock() + main_window._preview_controller = MagicMock() + main_window.settings.setValue('core/view mode', 'live') + main_window.settings.setValue('user interface/is preset layout', True) + + # WHENL we call to show method + main_window.show() + + # THEN: + # The default mode should have been called. + mocked_view_mode.assert_called_with(False, True, False, False, True, True) + + +@patch('openlp.core.ui.mainwindow.MainWindow.set_view_mode') +def test_load_settings_view_mode_preview(mocked_view_mode, main_window, settings): + """ + Test that the view mode is called with the correct parameters for default + """ + # GIVEN a newly opened OpenLP instance, mocked screens and settings for a valid window position + # mock out some other calls in load_settings() + main_window.control_splitter = MagicMock() + main_window._live_controller = MagicMock() + main_window._preview_controller = MagicMock() + main_window.settings.setValue('core/view mode', 'default') + main_window.settings.setValue('user interface/is preset layout', False) + main_window.settings.setValue('user interface/preview panel', False) + + # WHENL we call to show method + main_window.show() + + # THEN: + # The default mode should have been called. + mocked_view_mode.assert_called_with(True, True, True, False, True, True) + + +@patch('openlp.core.ui.mainwindow.MainWindow.set_view_mode') +def test_load_settings_view_mode_live(mocked_view_mode, main_window, settings): + """ + Test that the view mode is called with the correct parameters for default + """ + # GIVEN a newly opened OpenLP instance, mocked screens and settings for a valid window position + # mock out some other calls in load_settings() + main_window.control_splitter = MagicMock() + main_window._live_controller = MagicMock() + main_window._preview_controller = MagicMock() + main_window.settings.setValue('core/view mode', 'default') + main_window.settings.setValue('user interface/is preset layout', False) + main_window.settings.setValue('user interface/live panel', False) + + # WHENL we call to show method + main_window.show() + + # THEN: + # The default mode should have been called. + mocked_view_mode.assert_called_with(True, True, True, True, False, True)