forked from openlp/openlp
Implement a queue to process the requests
This commit is contained in:
parent
ef884792ac
commit
4f629dfd3b
@ -26,9 +26,9 @@
|
|||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
import os
|
|
||||||
import time
|
import time
|
||||||
import copy
|
import copy
|
||||||
|
from collections import deque
|
||||||
|
|
||||||
from PyQt4 import QtCore, QtGui
|
from PyQt4 import QtCore, QtGui
|
||||||
from PyQt4.phonon import Phonon
|
from PyQt4.phonon import Phonon
|
||||||
@ -79,7 +79,6 @@ class SlideController(QtGui.QWidget):
|
|||||||
self.songEdit = False
|
self.songEdit = False
|
||||||
self.selectedRow = 0
|
self.selectedRow = 0
|
||||||
self.serviceItem = None
|
self.serviceItem = None
|
||||||
self.keypress_count = 0
|
|
||||||
self.panel = QtGui.QWidget(parent.controlSplitter)
|
self.panel = QtGui.QWidget(parent.controlSplitter)
|
||||||
self.slideList = {}
|
self.slideList = {}
|
||||||
# Layout for holding panel
|
# Layout for holding panel
|
||||||
@ -92,6 +91,7 @@ class SlideController(QtGui.QWidget):
|
|||||||
self.typeLabel.setText(UiStrings().Live)
|
self.typeLabel.setText(UiStrings().Live)
|
||||||
self.split = 1
|
self.split = 1
|
||||||
self.typePrefix = u'live'
|
self.typePrefix = u'live'
|
||||||
|
self.keypress_queue = deque()
|
||||||
else:
|
else:
|
||||||
self.typeLabel.setText(UiStrings().Preview)
|
self.typeLabel.setText(UiStrings().Preview)
|
||||||
self.split = 0
|
self.split = 0
|
||||||
@ -579,18 +579,31 @@ class SlideController(QtGui.QWidget):
|
|||||||
self.display.videoStop()
|
self.display.videoStop()
|
||||||
|
|
||||||
def servicePrevious(self):
|
def servicePrevious(self):
|
||||||
self.keypress_count += 1
|
"""
|
||||||
if self.keypress_count == 1:
|
Live event to select the previous service item from the service manager.
|
||||||
while self.keypress_count != 0:
|
"""
|
||||||
Receiver.send_message('servicemanager_previous_item')
|
self.keypress_queue.append(u'previous')
|
||||||
self.keypress_count -= 1
|
self._process_queue()
|
||||||
|
|
||||||
|
|
||||||
def serviceNext(self):
|
def serviceNext(self):
|
||||||
self.keypress_count += 1
|
"""
|
||||||
if self.keypress_count == 1:
|
Live event to select the next service item from the service manager.
|
||||||
while self.keypress_count != 0:
|
"""
|
||||||
|
self.keypress_queue.append(u'next')
|
||||||
|
self._process_queue()
|
||||||
|
|
||||||
|
def _process_queue(self):
|
||||||
|
"""
|
||||||
|
Process the service item request queue. The key presses can arrive
|
||||||
|
faster than the processing so implement a FIFO queue.
|
||||||
|
"""
|
||||||
|
if len(self.keypress_queue):
|
||||||
|
while len(self.keypress_queue):
|
||||||
|
if self.keypress_queue.popleft() == u'previous':
|
||||||
|
Receiver.send_message('servicemanager_previous_item')
|
||||||
|
else:
|
||||||
Receiver.send_message('servicemanager_next_item')
|
Receiver.send_message('servicemanager_next_item')
|
||||||
self.keypress_count -= 1
|
|
||||||
|
|
||||||
|
|
||||||
def screenSizeChanged(self):
|
def screenSizeChanged(self):
|
||||||
|
Loading…
Reference in New Issue
Block a user