Change ready state automatically on manual pause/unpause
This commit is contained in:
parent
383d0b65c2
commit
90c3ca2ab0
@ -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:
|
||||
|
||||
@ -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})$"
|
||||
|
||||
@ -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()
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user