Implemented Better Preview for Service Manager Blueprint

This commit is contained in:
Ian Knight 2016-01-18 03:16:37 +10:30
parent ddfed93fbe
commit 960fbb8865
4 changed files with 37 additions and 2 deletions

View File

@ -131,6 +131,7 @@ class Settings(QtCore.QSettings):
'advanced/save current plugin': False,
'advanced/slide limits': SlideLimits.End,
'advanced/single click preview': False,
'advanced/single click service preview': False,
'advanced/x11 bypass wm': X11_BYPASS_DEFAULT,
'advanced/search as type': True,
'crashreport/last directory': '',

View File

@ -77,6 +77,9 @@ class AdvancedTab(SettingsTab):
self.single_click_preview_check_box = QtWidgets.QCheckBox(self.ui_group_box)
self.single_click_preview_check_box.setObjectName('single_click_preview_check_box')
self.ui_layout.addRow(self.single_click_preview_check_box)
self.single_click_service_preview_check_box = QtWidgets.QCheckBox(self.ui_group_box)
self.single_click_service_preview_check_box.setObjectName('single_click_service_preview_check_box')
self.ui_layout.addRow(self.single_click_service_preview_check_box)
self.expand_service_item_check_box = QtWidgets.QCheckBox(self.ui_group_box)
self.expand_service_item_check_box.setObjectName('expand_service_item_check_box')
self.ui_layout.addRow(self.expand_service_item_check_box)
@ -270,6 +273,8 @@ class AdvancedTab(SettingsTab):
'Double-click to send items straight to live'))
self.single_click_preview_check_box.setText(translate('OpenLP.AdvancedTab',
'Preview items when clicked in Media Manager'))
self.single_click_service_preview_check_box.setText(translate('OpenLP.AdvancedTab',
'Preview items when clicked in Service Manager'))
self.expand_service_item_check_box.setText(translate('OpenLP.AdvancedTab',
'Expand new service items on creation'))
self.enable_auto_close_check_box.setText(translate('OpenLP.AdvancedTab',
@ -339,6 +344,7 @@ class AdvancedTab(SettingsTab):
self.media_plugin_check_box.setChecked(settings.value('save current plugin'))
self.double_click_live_check_box.setChecked(settings.value('double click live'))
self.single_click_preview_check_box.setChecked(settings.value('single click preview'))
self.single_click_service_preview_check_box.setChecked(settings.value('single click service preview'))
self.expand_service_item_check_box.setChecked(settings.value('expand service item'))
self.enable_auto_close_check_box.setChecked(settings.value('enable exit confirmation'))
self.hide_mouse_check_box.setChecked(settings.value('hide mouse'))
@ -420,6 +426,7 @@ class AdvancedTab(SettingsTab):
settings.setValue('save current plugin', self.media_plugin_check_box.isChecked())
settings.setValue('double click live', self.double_click_live_check_box.isChecked())
settings.setValue('single click preview', self.single_click_preview_check_box.isChecked())
settings.setValue('single click service preview', self.single_click_service_preview_check_box.isChecked())
settings.setValue('expand service item', self.expand_service_item_check_box.isChecked())
settings.setValue('enable exit confirmation', self.enable_auto_close_check_box.isChecked())
settings.setValue('hide mouse', self.hide_mouse_check_box.isChecked())

View File

@ -212,6 +212,7 @@ class Ui_ServiceManager(object):
# Connect up our signals and slots
self.theme_combo_box.activated.connect(self.on_theme_combo_box_selected)
self.service_manager_list.doubleClicked.connect(self.on_make_live)
self.service_manager_list.clicked.connect(self.on_single_click_preview)
self.service_manager_list.itemCollapsed.connect(self.collapsed)
self.service_manager_list.itemExpanded.connect(self.expanded)
# Last little bits of setting up
@ -1461,6 +1462,14 @@ class ServiceManager(OpenLPMixin, RegistryMixin, QtWidgets.QWidget, Ui_ServiceMa
"""
self.make_live()
def on_single_click_preview(self, field=None):
"""
If single click previewing is enabled, send the current item to the Preview slide controller but triggered by a tablewidget click event.
:param field:
"""
if Settings().value('advanced/single click service preview'):
self.make_preview()
def make_live(self, row=-1):
"""
Send the current item to the Live slide controller

View File

@ -24,11 +24,11 @@ Package to test the openlp.core.ui.slidecontroller package.
"""
from unittest import TestCase
from openlp.core.common import Registry, ThemeLevel
from openlp.core.common import Registry, ThemeLevel, Settings
from openlp.core.lib import ServiceItem, ServiceItemType, ItemCapabilities
from openlp.core.ui import ServiceManager
from tests.functional import MagicMock
from tests.functional import MagicMock, patch
class TestServiceManager(TestCase):
@ -540,3 +540,21 @@ class TestServiceManager(TestCase):
self.assertEquals(service_manager.timed_slide_interval.setChecked.call_count, 0, 'Should not be called')
self.assertEquals(service_manager.theme_menu.menuAction().setVisible.call_count, 1,
'Should have be called once')
@patch(u'openlp.core.lib.mediamanageritem.Settings')
@patch(u'openlp.core.ui.servicemanager.ServiceManager.make_preview')
def single_click_preview_test(self, mocked_make_preview, MockedSettings):
"""
Test that when "Preview items when clicked in Service Manager" is enabled that the item goes to preview
"""
# GIVEN: A setting to enable "Preview items when clicked in Service Manager" and a service manager.
mocked_settings = MagicMock()
mocked_settings.value.side_effect = lambda x: x == 'advanced/single click service preview'
MockedSettings.return_value = mocked_settings
service_manager = ServiceManager(None)
# WHEN: on_double_clicked() is called
service_manager.on_single_click_preview()
# THEN: on_live_click() should have been called
mocked_make_preview.assert_called_with()