Change ready state automatically on manual pause/unpause

This commit is contained in:
Et0h 2014-12-06 18:39:32 +00:00
parent 383d0b65c2
commit 90c3ca2ab0
3 changed files with 22 additions and 2 deletions

View File

@ -68,6 +68,7 @@ class SyncplayClient(object):
self.serverVersion = "0.0.0" self.serverVersion = "0.0.0"
self.lastLeftTime = 0 self.lastLeftTime = 0
self.lastPausedOnLeaveTime = None
self.lastLeftUser = u"" self.lastLeftUser = u""
self.protocolFactory = SyncClientFactory(self) self.protocolFactory = SyncClientFactory(self)
self.ui = UiManager(self, ui) self.ui = UiManager(self, ui)
@ -158,6 +159,12 @@ class SyncplayClient(object):
pauseChange, seeked = self._determinePlayerStateChange(paused, position) pauseChange, seeked = self._determinePlayerStateChange(paused, position)
self._playerPosition = position self._playerPosition = position
self._playerPaused = paused self._playerPaused = paused
if pauseChange and utils.meetsMinVersion(self.serverVersion, constants.USER_READY_MIN_VERSION):
lastPausedDiff = time.time() - self.lastPausedOnLeaveTime if self.lastPausedOnLeaveTime else None
if lastPausedDiff is not None and lastPausedDiff < constants.LAST_PAUSED_DIFF_THRESHOLD:
self.lastPausedOnLeaveTime = None
else:
self.changeReadyState(not self.getPlayerPaused())
if self._lastGlobalUpdate: if self._lastGlobalUpdate:
self._lastPlayerUpdate = time.time() self._lastPlayerUpdate = time.time()
if (pauseChange or seeked) and self._protocol: if (pauseChange or seeked) and self._protocol:
@ -303,6 +310,7 @@ class SyncplayClient(object):
def onDisconnect(self): def onDisconnect(self):
if self._config['pauseOnLeave']: if self._config['pauseOnLeave']:
self.setPaused(True) self.setPaused(True)
self.lastPausedOnLeaveTime = time.time()
def removeUser(self, username): def removeUser(self, username):
if self.userlist.isUserInYourRoom(username): if self.userlist.isUserInYourRoom(username):
@ -478,6 +486,12 @@ class SyncplayClient(object):
def toggleReady(self): def toggleReady(self):
self._protocol.setReady(not self.userlist.currentUser.isReady()) self._protocol.setReady(not self.userlist.currentUser.isReady())
@requireMinServerVersion(constants.USER_READY_MIN_VERSION)
def changeReadyState(self, newState):
oldState = self.userlist.currentUser.isReady()
if newState != oldState:
self.toggleReady()
def setReady(self, username, isReady): def setReady(self, username, isReady):
oldReadyState = self.userlist.isReady(username) oldReadyState = self.userlist.isReady(username)
if oldReadyState is None: if oldReadyState is None:

View File

@ -48,6 +48,7 @@ WARNING_OSD_MESSAGES_LOOP_INTERVAL = 1
MERGE_PLAYPAUSE_BUTTONS = False MERGE_PLAYPAUSE_BUTTONS = False
SYNC_ON_PAUSE = True # Client seek to global position - subtitles may disappear on some media players SYNC_ON_PAUSE = True # Client seek to global position - subtitles may disappear on some media players
#Usually there's no need to adjust these #Usually there's no need to adjust these
LAST_PAUSED_DIFF_THRESHOLD = 2
FILENAME_STRIP_REGEX = u"[-~_\.\[\](): ]" FILENAME_STRIP_REGEX = u"[-~_\.\[\](): ]"
CONTROL_PASSWORD_STRIP_REGEX = u"[^a-zA-Z0-9\-]" CONTROL_PASSWORD_STRIP_REGEX = u"[^a-zA-Z0-9\-]"
ROOM_NAME_STRIP_REGEX = u"^(\+)(?P<roomnamebase>.*)(:)(\w{12})$" ROOM_NAME_STRIP_REGEX = u"^(\+)(?P<roomnamebase>.*)(:)(\w{12})$"

View File

@ -163,6 +163,7 @@ class MainWindow(QtGui.QMainWindow):
font = QtGui.QFont() font = QtGui.QFont()
if currentUser.username == user.username: if currentUser.username == user.username:
font.setWeight(QtGui.QFont.Bold) font.setWeight(QtGui.QFont.Bold)
self.updateReadyState(currentUser.isReady())
if isControlledRoom and not isController: if isControlledRoom and not isController:
useritem.setForeground(QtGui.QBrush(QtGui.QColor(constants.STYLE_NOTCONTROLLER_COLOR))) useritem.setForeground(QtGui.QBrush(QtGui.QColor(constants.STYLE_NOTCONTROLLER_COLOR)))
useritem.setFont(font) useritem.setFont(font)
@ -199,6 +200,11 @@ class MainWindow(QtGui.QMainWindow):
except: except:
pass pass
def updateReadyState(self, newState):
oldState = self.readyCheckbox.isChecked()
if newState != oldState:
self.readyCheckbox.setChecked(newState)
def roomClicked(self, item): def roomClicked(self, item):
while item.parent().row() != -1: while item.parent().row() != -1:
item = item.parent() item = item.parent()
@ -621,8 +627,7 @@ class MainWindow(QtGui.QMainWindow):
self.listbox.moveCursor(QtGui.QTextCursor.End) self.listbox.moveCursor(QtGui.QTextCursor.End)
def changeReadyState(self): def changeReadyState(self):
if self.readyCheckbox.isChecked() != self._syncplayClient.userlist.currentUser.isReady(): self._syncplayClient.changeReadyState(self.readyCheckbox.isChecked())
self._syncplayClient.toggleReady()
def dragEnterEvent(self, event): def dragEnterEvent(self, event):
data = event.mimeData() data = event.mimeData()