From 3bbb46cdd3405645e0419cf0aa678427a214ed62 Mon Sep 17 00:00:00 2001 From: robbie jackson Date: Thu, 22 Jul 2021 20:48:15 +0000 Subject: [PATCH] Add slide numbers in footers --- openlp/core/common/settings.py | 1 + openlp/core/display/html/display.js | 6 ++++-- openlp/core/display/window.py | 4 +++- openlp/core/ui/generaltab.py | 6 ++++++ tests/openlp_core/display/test_window.py | 2 ++ tests/openlp_core/ui/test_generaltab.py | 20 ++++++++++++++++++++ 6 files changed, 36 insertions(+), 3 deletions(-) diff --git a/openlp/core/common/settings.py b/openlp/core/common/settings.py index 8fa15abca..f8d8c2188 100644 --- a/openlp/core/common/settings.py +++ b/openlp/core/common/settings.py @@ -168,6 +168,7 @@ class Settings(QtCore.QSettings): 'advanced/save current plugin': False, 'advanced/slide limits': SlideLimits.End, 'advanced/slide max height': -4, + 'advanced/slide numbers in footer': False, 'advanced/single click preview': False, 'advanced/single click service preview': False, 'advanced/x11 bypass wm': X11_BYPASS_DEFAULT, diff --git a/openlp/core/display/html/display.js b/openlp/core/display/html/display.js index c4d5dc72c..b4e16e660 100644 --- a/openlp/core/display/html/display.js +++ b/openlp/core/display/html/display.js @@ -282,6 +282,10 @@ var Display = { let isDisplay = options.isDisplay || false; let doItemTransitions = options.doItemTransitions || false; let hideMouse = options.hideMouse || false; + if (options.slideNumbersInFooter) { + Display._revealConfig.slideNumber = "c/t"; + } + // Now continue to initialisation if (!isDisplay) { document.body.classList.add('checkerboard'); @@ -566,9 +570,7 @@ var Display = { * Display the next alert in the queue */ showNextAlert: function () { - console.log("showNextAlert"); if (Display._alerts.length > 0) { - console.log("Showing next alert"); var alertObject = Display._alerts.shift(); Display._alertState = AlertState.DisplayingFromQueue; Display.showAlert(alertObject.text, alertObject.settings); diff --git a/openlp/core/display/window.py b/openlp/core/display/window.py index 89f2d65fc..7ab7ed62b 100644 --- a/openlp/core/display/window.py +++ b/openlp/core/display/window.py @@ -212,13 +212,15 @@ class DisplayWindow(QtWidgets.QWidget, RegistryProperties, LogMixin): js_is_display = str(self.is_display).lower() item_transitions = str(self.settings.value('themes/item transitions')).lower() hide_mouse = str(self.settings.value('advanced/hide mouse') and self.is_display).lower() + slide_numbers_in_footer = str(self.settings.value('advanced/slide numbers in footer')).lower() self.run_javascript('Display.init({{' 'isDisplay: {is_display},' 'doItemTransitions: {do_item_transitions},' + 'slideNumbersInFooter: {slide_numbers_in_footer},' 'hideMouse: {hide_mouse}' '}});' .format(is_display=js_is_display, do_item_transitions=item_transitions, - hide_mouse=hide_mouse)) + slide_numbers_in_footer=slide_numbers_in_footer, hide_mouse=hide_mouse)) wait_for(lambda: self._is_initialised) if self.scale != 1: self.set_scale(self.scale) diff --git a/openlp/core/ui/generaltab.py b/openlp/core/ui/generaltab.py index 01ee71ac3..39b9bb5bf 100644 --- a/openlp/core/ui/generaltab.py +++ b/openlp/core/ui/generaltab.py @@ -157,6 +157,9 @@ class GeneralTab(SettingsTab): self.autoscroll_combo_box.setObjectName('autoscroll_combo_box') self.ui_layout.addRow(self.autoscroll_label) self.ui_layout.addRow(self.autoscroll_combo_box) + self.slide_no_in_footer_checkbox = QtWidgets.QCheckBox(self.ui_group_box) + self.slide_no_in_footer_checkbox.setObjectName('SlideNumbersInFooter_check_box') + self.ui_layout.addRow(self.slide_no_in_footer_checkbox) self.search_as_type_check_box = QtWidgets.QCheckBox(self.ui_group_box) self.search_as_type_check_box.setObjectName('SearchAsType_check_box') self.ui_layout.addRow(self.search_as_type_check_box) @@ -241,6 +244,7 @@ class GeneralTab(SettingsTab): 'Auto-scroll the next slide to bottom')) self.enable_auto_close_check_box.setText(translate('OpenLP.AdvancedTab', 'Enable application exit confirmation')) + self.slide_no_in_footer_checkbox.setText(translate('SongsPlugin.GeneralTab', 'Include slide number in footer')) self.search_as_type_check_box.setText(translate('SongsPlugin.GeneralTab', 'Enable search as you type')) if not is_win() and HAS_DARK_STYLE: self.use_dark_style_checkbox.setText(translate('OpenLP.AdvancedTab', 'Use dark style (needs restart)')) @@ -280,6 +284,7 @@ class GeneralTab(SettingsTab): if self.autoscroll_map[i] == autoscroll_value and i < self.autoscroll_combo_box.count(): self.autoscroll_combo_box.setCurrentIndex(i) self.enable_auto_close_check_box.setChecked(self.settings.value('advanced/enable exit confirmation')) + self.slide_no_in_footer_checkbox.setChecked(self.settings.value('advanced/slide numbers in footer')) if not is_win() and HAS_DARK_STYLE: self.use_dark_style_checkbox.setChecked(self.settings.value('advanced/use_dark_style')) self.hide_mouse_check_box.setChecked(self.settings.value('advanced/hide mouse')) @@ -310,6 +315,7 @@ class GeneralTab(SettingsTab): slide_max_height_value = self.slide_max_height_combo_box.itemData(slide_max_height_index) self.settings.setValue('advanced/slide max height', slide_max_height_value) self.settings.setValue('advanced/autoscrolling', self.autoscroll_map[self.autoscroll_combo_box.currentIndex()]) + self.settings.setValue('advanced/slide numbers in footer', self.slide_no_in_footer_checkbox.isChecked()) self.settings.setValue('advanced/enable exit confirmation', self.enable_auto_close_check_box.isChecked()) self.settings.setValue('advanced/hide mouse', self.hide_mouse_check_box.isChecked()) self.settings.setValue('advanced/search as type', self.is_search_as_you_type_enabled) diff --git a/tests/openlp_core/display/test_window.py b/tests/openlp_core/display/test_window.py index 5c10c9181..5f1f224b3 100644 --- a/tests/openlp_core/display/test_window.py +++ b/tests/openlp_core/display/test_window.py @@ -255,6 +255,7 @@ def test_after_loaded(display_window_env, mock_settings): display_window.run_javascript.assert_called_once_with('Display.init({' 'isDisplay: true,' 'doItemTransitions: true,' + 'slideNumbersInFooter: true,' 'hideMouse: true' '});') display_window.set_scale.assert_called_once_with(2) @@ -282,6 +283,7 @@ def test_after_loaded_hide_mouse_not_display(display_window_env, mock_settings): display_window.run_javascript.assert_called_once_with('Display.init({' 'isDisplay: false,' 'doItemTransitions: true,' + 'slideNumbersInFooter: true,' 'hideMouse: false' '});') diff --git a/tests/openlp_core/ui/test_generaltab.py b/tests/openlp_core/ui/test_generaltab.py index a3d60c4de..deb3ce1c1 100644 --- a/tests/openlp_core/ui/test_generaltab.py +++ b/tests/openlp_core/ui/test_generaltab.py @@ -24,6 +24,8 @@ Package to test the openlp.core.ui.generaltab package. from openlp.core.ui.generaltab import GeneralTab from openlp.core.ui.settingsform import SettingsForm +from PyQt5 import QtCore, QtTest + def test_creation(settings): """ @@ -54,3 +56,21 @@ def test_change_search_as_type(settings): assert 2 == len(settings_form.processes), 'Two post save processes should be created' assert "songs_config_updated" in settings_form.processes, 'The songs plugin should be called' assert "custom_config_updated" in settings_form.processes, 'The custom plugin should be called' + + +def test_slide_numbers_in_footer(settings): + """ + Test that when the slide number in footers option is changed then the settings are updated + """ + # GIVEN: Settings, a settings form and a general tab + settings.setValue('advanced/slide numbers in footer', False) + settings_form = SettingsForm(None) + general_tab = GeneralTab(settings_form) + settings_form.insert_tab(general_tab, is_visible=True) + + # WHEN: I click the checkbox and then save + QtTest.QTest.mouseClick(general_tab.slide_no_in_footer_checkbox, QtCore.Qt.LeftButton) + settings_form.accept() + + # THEN: the settings should be updated + assert settings.value('advanced/slide numbers in footer') is True