diff --git a/openlp/core/ui/servicemanager.py b/openlp/core/ui/servicemanager.py index 1eef9a81b..6a2589a43 100644 --- a/openlp/core/ui/servicemanager.py +++ b/openlp/core/ui/servicemanager.py @@ -227,6 +227,8 @@ class ServiceManager(QtGui.QWidget): QtCore.SIGNAL(u'remote_edit_clear'), self.onRemoteEditClear) QtCore.QObject.connect(Receiver.get_receiver(), QtCore.SIGNAL(u'presentation types'), self.onPresentationTypes) + QtCore.QObject.connect(Receiver.get_receiver(), + QtCore.SIGNAL(u'servicemanager_next_item'), self.nextItem) # Last little bits of setting up self.config = PluginConfig(u'ServiceManager') self.servicePath = self.config.get_data_path() @@ -236,12 +238,29 @@ class ServiceManager(QtGui.QWidget): def onPresentationTypes(self, presentation_types): self.presentation_types = presentation_types + def nextItem(self): + """ + Called by the SlideController to select the + next service item + """ + selected = self.ServiceManagerList.selectedItems()[0] + lookFor = 0 + serviceIterator = QtGui.QTreeWidgetItemIterator(self.ServiceManagerList) + while serviceIterator.value(): + if lookFor == 1 and serviceIterator.value().parent() is None: + self.ServiceManagerList.setCurrentItem(serviceIterator.value()) + self.makeLive() + return + if serviceIterator.value() == selected: + lookFor = 1 + serviceIterator += 1 + def onMoveSelectionUp(self): """ Moves the selection up the window Called by the up arrow """ - serviceIterator = QTreeWidgetItemIterator(self.ServiceManagerList) + serviceIterator = QtGui.QTreeWidgetItemIterator(self.ServiceManagerList) tempItem = None setLastItem = False while serviceIterator: @@ -266,7 +285,7 @@ class ServiceManager(QtGui.QWidget): Moves the selection down the window Called by the down arrow """ - serviceIterator = QTreeWidgetItemIterator(self.ServiceManagerList) + serviceIterator = QtGui.QTreeWidgetItemIterator(self.ServiceManagerList) firstItem = serviceIterator setSelected = False while serviceIterator: diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index 3131c2bfa..71445b074 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -41,6 +41,11 @@ class SlideList(QtGui.QTableWidget): def __init__(self, parent=None, name=None): QtGui.QTableWidget.__init__(self, parent.Controller) self.parent = parent + self.hotkey_map = {QtCore.Qt.Key_Return: 'servicemanager_next_item', + QtCore.Qt.Key_Space: 'live_slidecontroller_next_noloop', + QtCore.Qt.Key_Enter: 'live_slidecontroller_next_noloop', + QtCore.Qt.Key_0: 'servicemanager_next_item', + QtCore.Qt.Key_Backspace: 'live_slidecontroller_previous_noloop'} def keyPressEvent(self, event): if type(event) == QtGui.QKeyEvent: @@ -57,6 +62,9 @@ class SlideList(QtGui.QTableWidget): elif event.key() == QtCore.Qt.Key_PageDown: self.parent.onSlideSelectedLast() event.accept() + elif event.key() in self.hotkey_map: + Receiver.send_message(self.hotkey_map[event.key()]); + event.accept() event.ignore() else: event.ignore() @@ -277,6 +285,11 @@ class SlideController(QtGui.QWidget): QtCore.SIGNAL(u'%s_next' % prefix), self.onSlideSelectedNext) QtCore.QObject.connect(Receiver.get_receiver(), QtCore.SIGNAL(u'%s_previous' % prefix), self.onSlideSelectedPrevious) + QtCore.QObject.connect(Receiver.get_receiver(), + QtCore.SIGNAL(u'%s_next_noloop' % prefix), self.onSlideSelectedNextNoloop) + QtCore.QObject.connect(Receiver.get_receiver(), + QtCore.SIGNAL(u'%s_previous_noloop' % prefix), + self.onSlideSelectedPreviousNoloop) QtCore.QObject.connect(Receiver.get_receiver(), QtCore.SIGNAL(u'%s_last' % prefix), self.onSlideSelectedLast) QtCore.QObject.connect(Receiver.get_receiver(), @@ -561,7 +574,10 @@ class SlideController(QtGui.QWidget): rect.y(), rect.width(), rect.height()) self.SlidePreview.setPixmap(winimg) - def onSlideSelectedNext(self): + def onSlideSelectedNextNoloop(self): + self.onSlideSelectedNext(False) + + def onSlideSelectedNext(self, loop=True): """ Go to the next slide. """ @@ -574,11 +590,18 @@ class SlideController(QtGui.QWidget): else: row = self.PreviewListWidget.currentRow() + 1 if row == self.PreviewListWidget.rowCount(): - row = 0 + if loop: + row = 0 + else: + Receiver.send_message('servicemanager_next_item') + return self.PreviewListWidget.selectRow(row) self.onSlideSelected() - def onSlideSelectedPrevious(self): + def onSlideSelectedPreviousNoloop(self): + self.onSlideSelectedPrevious(False) + + def onSlideSelectedPrevious(self, loop=True): """ Go to the previous slide. """ @@ -591,7 +614,10 @@ class SlideController(QtGui.QWidget): else: row = self.PreviewListWidget.currentRow() - 1 if row == -1: - row = self.PreviewListWidget.rowCount() - 1 + if loop: + row = self.PreviewListWidget.rowCount() - 1 + else: + row = 0 self.PreviewListWidget.selectRow(row) self.onSlideSelected()