From 67f4a0cc81e584a20e372836b7c020759b8405bb Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Wed, 20 May 2020 07:40:23 +0000 Subject: [PATCH] Resolve issues with theme changes. Add new clear api's --- openlp/core/api/versions/v2/controller.py | 29 ++++++++++++++++++++++- openlp/core/api/versions/v2/service.py | 2 +- openlp/core/ui/slidecontroller.py | 5 ++++ 3 files changed, 34 insertions(+), 2 deletions(-) diff --git a/openlp/core/api/versions/v2/controller.py b/openlp/core/api/versions/v2/controller.py index 4d70a6589..dbcb442f4 100644 --- a/openlp/core/api/versions/v2/controller.py +++ b/openlp/core/api/versions/v2/controller.py @@ -38,6 +38,7 @@ log = logging.getLogger(__name__) @controller_views.route('/live-item') def controller_text_api(): + log.debug('controller-v2-live-item') live_controller = Registry().get('live_controller') current_item = live_controller.service_item data = [] @@ -85,6 +86,7 @@ def controller_text_api(): @controller_views.route('/show', methods=['POST']) @login_required def controller_set(): + log.debug('controller-v2-show-post') data = request.json if not data: log.error('Missing request data') @@ -97,6 +99,7 @@ def controller_set(): @controller_views.route('/progress', methods=['POST']) @login_required def controller_direction(): + log.debug('controller-v2-progress-post') ALLOWED_ACTIONS = ['next', 'previous'] data = request.json if not data: @@ -114,6 +117,7 @@ def controller_direction(): @controller_views.route('/theme-level', methods=['GET']) @login_required def get_theme_level(): + log.debug('controller-v2-theme-level-get') theme_level = Registry().get('settings').value('themes/theme level') if theme_level == ThemeLevel.Global: theme_level = 'global' @@ -127,6 +131,7 @@ def get_theme_level(): @controller_views.route('/theme-level', methods=['POST']) @login_required def set_theme_level(): + log.debug('controller-v2-theme-level-post') data = request.json if not data: log.error('Missing request data') @@ -139,10 +144,13 @@ def set_theme_level(): abort(400) if theme_level == 'global': Registry().get('settings').setValue('themes/theme level', 1) + Registry().execute('theme_update_global') elif theme_level == 'service': Registry().get('settings').setValue('themes/theme level', 2) + Registry().execute('theme_update_service') elif theme_level == 'song': - Registry().get('settings').setValue('theme/theme level', 3) + Registry().get('settings').setValue('themes/theme level', 3) + Registry().execute('theme_update_global') else: log.error('Unsupported data passed ' + theme_level) abort(400) @@ -152,6 +160,7 @@ def set_theme_level(): @controller_views.route('/themes', methods=['GET']) @login_required def get_themes(): + log.debug('controller-v2-themes-get') theme_level = Registry().get('settings').value('themes/theme level') theme_list = [] current_theme = '' @@ -182,6 +191,7 @@ def get_theme(): """ Get the current theme """ + log.debug('controller-v2-theme-get') theme_level = Registry().get('settings').value('themes/theme level') if theme_level == ThemeLevel.Service: theme = Registry().get('settings').value('servicemanager/service theme') @@ -193,6 +203,7 @@ def get_theme(): @controller_views.route('/theme', methods=['POST']) @login_required def set_theme(): + log.debug('controller-v2-themes-post') data = request.json theme = '' theme_level = Registry().get('settings').value('themes/theme level') @@ -214,3 +225,19 @@ def set_theme(): log.error('Unimplemented method') return '', 501 return '', 204 + + +@controller_views.route('/clear/', methods=['POST']) +@login_required +def controller_clear(controller): + """ + Clears the slide controller display + :param controller: the Live or Preview controller + :return: HTTP return code + """ + log.debug(f'controller-v2-clear-get {controller}') + if controller in ['live', 'preview']: + getattr(Registry().get(f'{controller}_controller'), f'slidecontroller_{controller}_clear').emit() + return '', 204 + else: + return '', 404 diff --git a/openlp/core/api/versions/v2/service.py b/openlp/core/api/versions/v2/service.py index cb4cb0752..50fba7e70 100644 --- a/openlp/core/api/versions/v2/service.py +++ b/openlp/core/api/versions/v2/service.py @@ -52,7 +52,7 @@ def service_items(): 'ccli_number': str(ccli_number), 'notes': str(service_item.notes), 'selected': (service_item.unique_identifier == current_unique_identifier), - 'is_valid': str(service_item.is_valid) + 'is_valid': service_item.is_valid }) return jsonify(service_items) diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index 6974dae57..124124eb6 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -505,9 +505,12 @@ class SlideController(QtWidgets.QWidget, LogMixin, RegistryProperties): getattr(self, 'slidecontroller_{}_previous'.format(self.type_prefix)).connect(self.on_slide_selected_previous) if self.is_live: + getattr(self, 'slidecontroller_live_clear').connect(self.on_clear) self.mediacontroller_live_play.connect(self.media_controller.on_media_play) self.mediacontroller_live_pause.connect(self.media_controller.on_media_pause) self.mediacontroller_live_stop.connect(self.media_controller.on_media_stop) + else: + getattr(self, 'slidecontroller_preview_clear').connect(self.on_clear) def new_song_menu(self): """ @@ -1485,6 +1488,7 @@ class PreviewController(RegistryBase, SlideController): slidecontroller_preview_set = QtCore.pyqtSignal(list) slidecontroller_preview_next = QtCore.pyqtSignal() slidecontroller_preview_previous = QtCore.pyqtSignal() + slidecontroller_preview_clear = QtCore.pyqtSignal() def __init__(self, *args, **kwargs): """ @@ -1511,6 +1515,7 @@ class LiveController(RegistryBase, SlideController): slidecontroller_live_next = QtCore.pyqtSignal() slidecontroller_live_previous = QtCore.pyqtSignal() slidecontroller_toggle_display = QtCore.pyqtSignal(str) + slidecontroller_live_clear = QtCore.pyqtSignal() mediacontroller_live_play = QtCore.pyqtSignal() mediacontroller_live_pause = QtCore.pyqtSignal() mediacontroller_live_stop = QtCore.pyqtSignal()