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.lastLeftTime = 0
self.lastPausedOnLeaveTime = None
self.lastLeftUser = u""
self.protocolFactory = SyncClientFactory(self)
self.ui = UiManager(self, ui)
@ -158,6 +159,12 @@ class SyncplayClient(object):
pauseChange, seeked = self._determinePlayerStateChange(paused, position)
self._playerPosition = position
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:
self._lastPlayerUpdate = time.time()
if (pauseChange or seeked) and self._protocol:
@ -303,6 +310,7 @@ class SyncplayClient(object):
def onDisconnect(self):
if self._config['pauseOnLeave']:
self.setPaused(True)
self.lastPausedOnLeaveTime = time.time()
def removeUser(self, username):
if self.userlist.isUserInYourRoom(username):
@ -478,6 +486,12 @@ class SyncplayClient(object):
def toggleReady(self):
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):
oldReadyState = self.userlist.isReady(username)
if oldReadyState is None:

View File

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

View File

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