From c9eaf99696ad8a330c3e82d3edb507bb1c541f14 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Fri, 8 Oct 2010 20:15:01 +0100 Subject: [PATCH] Add config option for Expanding service items --- openlp/core/ui/advancedtab.py | 10 ++++++ openlp/core/ui/servicemanager.py | 58 ++++++++++++++++++++++++++++---- 2 files changed, 62 insertions(+), 6 deletions(-) diff --git a/openlp/core/ui/advancedtab.py b/openlp/core/ui/advancedtab.py index 0a12c54e5..2bc8b2f6d 100644 --- a/openlp/core/ui/advancedtab.py +++ b/openlp/core/ui/advancedtab.py @@ -81,6 +81,9 @@ class AdvancedTab(SettingsTab): self.doubleClickLiveCheckBox = QtGui.QCheckBox(self.uiGroupBox) self.doubleClickLiveCheckBox.setObjectName(u'doubleClickLiveCheckBox') self.uiLayout.addWidget(self.doubleClickLiveCheckBox) + self.expandServiceItemCheckBox = QtGui.QCheckBox(self.uiGroupBox) + self.expandServiceItemCheckBox.setObjectName(u'expandServiceItemCheckBox') + self.uiLayout.addWidget(self.expandServiceItemCheckBox) self.leftLayout.addWidget(self.uiGroupBox) # self.sharedDirGroupBox = QtGui.QGroupBox(self.leftWidget) # self.sharedDirGroupBox.setObjectName(u'sharedDirGroupBox') @@ -140,6 +143,8 @@ class AdvancedTab(SettingsTab): 'Remember active media manager tab on startup')) self.doubleClickLiveCheckBox.setText(translate('OpenLP.AdvancedTab', 'Double-click to send items straight to live (requires restart)')) + self.expandServiceItemCheckBox.setText(translate('OpenLP.AdvancedTab', + 'Expand new service items on creation')) # self.sharedDirGroupBox.setTitle( # translate('AdvancedTab', 'Central Data Store')) # self.sharedCheckBox.setText( @@ -167,6 +172,9 @@ class AdvancedTab(SettingsTab): self.doubleClickLiveCheckBox.setChecked( settings.value(u'double click live', QtCore.QVariant(False)).toBool()) + self.expandServiceItemCheckBox.setChecked( + settings.value(u'expand service item', + QtCore.QVariant(False)).toBool()) settings.endGroup() def save(self): @@ -181,6 +189,8 @@ class AdvancedTab(SettingsTab): QtCore.QVariant(self.mediaPluginCheckBox.isChecked())) settings.setValue(u'double click live', QtCore.QVariant(self.doubleClickLiveCheckBox.isChecked())) + settings.setValue(u'expand service item', + QtCore.QVariant(self.expandServiceItemCheckBox.isChecked())) settings.endGroup() def onSharedCheckBoxChanged(self, checked): diff --git a/openlp/core/ui/servicemanager.py b/openlp/core/ui/servicemanager.py index d751b76be..10c2a11a6 100644 --- a/openlp/core/ui/servicemanager.py +++ b/openlp/core/ui/servicemanager.py @@ -115,6 +115,7 @@ class ServiceManager(QtGui.QWidget): self.layout = QtGui.QVBoxLayout(self) self.layout.setSpacing(0) self.layout.setMargin(0) + self.expandTabs = False # Create the top toolbar self.toolbar = OpenLPToolbar(self) self.toolbar.addToolbarButton( @@ -199,6 +200,19 @@ class ServiceManager(QtGui.QWidget): translate('OpenLP.ServiceManager', 'Delete the selected item from the service.'), self.onDeleteFromService) + self.orderToolbar.addSeparator() + self.orderToolbar.addToolbarButton( + translate('OpenLP.ServiceManager', '&Expand all'), + u':/services/service_top.png', + translate('OpenLP.ServiceManager', + 'Expand all the service items.'), + self.onExpandAll) + self.orderToolbar.addToolbarButton( + translate('OpenLP.ServiceManager', '&Collapse all'), + u':/services/service_bottom.png', + translate('OpenLP.ServiceManager', + 'Collapse all the service items.'), + self.onCollapseAll) self.layout.addWidget(self.orderToolbar) # Connect up our signals and slots QtCore.QObject.connect(self.themeComboBox, @@ -220,7 +234,7 @@ class ServiceManager(QtGui.QWidget): QtCore.QObject.connect(Receiver.get_receiver(), QtCore.SIGNAL(u'servicemanager_list_request'), self.listRequest) QtCore.QObject.connect(Receiver.get_receiver(), - QtCore.SIGNAL(u'config_updated'), self.regenerateServiceItems) + QtCore.SIGNAL(u'config_updated'), self.configUpdated) QtCore.QObject.connect(Receiver.get_receiver(), QtCore.SIGNAL(u'theme_update_global'), self.themeChange) QtCore.QObject.connect(Receiver.get_receiver(), @@ -265,6 +279,17 @@ class ServiceManager(QtGui.QWidget): self.themeMenu = QtGui.QMenu( translate('OpenLP.ServiceManager', '&Change Item Theme')) self.menu.addMenu(self.themeMenu) + self.configUpdated(True) + + def configUpdated(self, firstTime=False): + """ + Triggered when Config dialog is updated. + """ + self.expandTabs = QtCore.QSettings().value( + u'advanced/expand service item', + QtCore.QVariant(u'False')).toBool() + if not firstTime: + self.regenerateServiceItems() def supportedSuffixes(self, suffix): self.suffixes.append(suffix) @@ -321,7 +346,7 @@ class ServiceManager(QtGui.QWidget): self.serviceItems[item][u'service_item']) if self.serviceItemEditForm.exec_(): self.addServiceItem(self.serviceItemEditForm.getServiceItem(), - replace=True) + replace=True, expand=self.serviceItems[item][u'expand']) def nextItem(self): """ @@ -423,6 +448,14 @@ class ServiceManager(QtGui.QWidget): if setSelected: firstItem.setSelected(True) + def onCollapseAll(self): + """ + Collapse all the service items + """ + for item in self.serviceItems: + item[u'expanded'] = False + self.regenerateServiceItems() + def collapsed(self, item): """ Record if an item is collapsed @@ -431,6 +464,14 @@ class ServiceManager(QtGui.QWidget): pos = item.data(0, QtCore.Qt.UserRole).toInt()[0] self.serviceItems[pos -1 ][u'expanded'] = False + def onExpandAll(self): + """ + Collapse all the service items + """ + for item in self.serviceItems: + item[u'expanded'] = True + self.regenerateServiceItems() + def expanded(self, item): """ Record if an item is collapsed @@ -528,12 +569,12 @@ class ServiceManager(QtGui.QWidget): Used when moving items as the move takes place in supporting array, and when regenerating all the items due to theme changes """ - #Correct order of items in array + # Correct order of items in array count = 1 for item in self.serviceItems: item[u'order'] = count count += 1 - #Repaint the screen + # Repaint the screen self.serviceManagerList.clear() for itemcount, item in enumerate(self.serviceItems): serviceitem = item[u'service_item'] @@ -801,7 +842,7 @@ class ServiceManager(QtGui.QWidget): self.isNew = True for item in tempServiceItems: self.addServiceItem( - item[u'service_item'], False, item[u'expanded']) + item[u'service_item'], False, expand=item[u'expanded']) # Set to False as items may have changed rendering # does not impact the saved song so True may also be valid self.parent.serviceChanged(False, self.serviceName) @@ -830,13 +871,18 @@ class ServiceManager(QtGui.QWidget): self.parent.LiveController.replaceServiceManagerItem(newItem) self.parent.serviceChanged(False, self.serviceName) - def addServiceItem(self, item, rebuild=False, expand=False, replace=False): + def addServiceItem(self, item, rebuild=False, expand=None, replace=False): """ Add a Service item to the list ``item`` Service Item to be added + + ``expand`` + Override the default expand settings. (Tristate) """ + if expand == None: + expand = self.expandTabs log.debug(u'addServiceItem') sitem = self.findServiceItem()[0] item.render()