Specify whether change in ready state is manually initiated or automatic

This commit is contained in:
Et0h 2014-12-13 11:30:11 +00:00
parent f6221f2a9a
commit 440c79f1a3
3 changed files with 23 additions and 21 deletions

View File

@ -164,7 +164,7 @@ class SyncplayClient(object):
if lastPausedDiff is not None and lastPausedDiff < constants.LAST_PAUSED_DIFF_THRESHOLD:
self.lastPausedOnLeaveTime = None
else:
self.changeReadyState(not self.getPlayerPaused())
self.changeReadyState(not self.getPlayerPaused(), manuallyInitiated=False)
if self._lastGlobalUpdate:
self._lastPlayerUpdate = time.time()
if (pauseChange or seeked) and self._protocol:
@ -410,10 +410,8 @@ class SyncplayClient(object):
self.identifyAsController(storedRoomPassword)
def connected(self):
if self.userlist.currentUser.isReady() is not None:
self._protocol.setReady(self.userlist.currentUser.isReady())
else:
self._protocol.setReady(self._config['readyAtStart'])
readyState = self._config['readyAtStart'] if self.userlist.currentUser.isReady() is None else self.userlist.currentUser.isReady()
self._protocol.setReady(readyState, manuallyInitiated=False)
self.reIdentifyAsController()
def getRoom(self):
@ -483,22 +481,22 @@ class SyncplayClient(object):
return requireMinVersionDecorator
@requireMinServerVersion(constants.USER_READY_MIN_VERSION)
def toggleReady(self):
self._protocol.setReady(not self.userlist.currentUser.isReady())
def toggleReady(self, manuallyInitiated=True):
self._protocol.setReady(not self.userlist.currentUser.isReady(), manuallyInitiated)
@requireMinServerVersion(constants.USER_READY_MIN_VERSION)
def changeReadyState(self, newState):
def changeReadyState(self, newState, manuallyInitiated=True):
oldState = self.userlist.currentUser.isReady()
if newState != oldState:
self.toggleReady()
self.toggleReady(manuallyInitiated)
def setReady(self, username, isReady):
def setReady(self, username, isReady, manuallyInitiated=True):
oldReadyState = self.userlist.isReady(username)
if oldReadyState is None:
oldReadyState = False
self.userlist.setReady(username, isReady)
self.ui.userListChange()
if oldReadyState != isReady:
if manuallyInitiated and oldReadyState != isReady:
showOnOSD = constants.SHOW_OSD_WARNINGS
if constants.SHOW_NONCONTROLLER_OSD == False and self.userlist.canControl(username) == False and self.userlist.currentUser.isController() == False:
# Ignore SHOW_NONCONTROLLER_OSD setting if user is controller, because they need to know who is/isn't ready

View File

@ -138,7 +138,8 @@ class SyncClientProtocol(JSONCommandProtocol):
self._client.controlledRoomCreated(roomName, controlPassword)
elif command == "ready":
user, isReady = values["username"], values["isReady"]
self._client.setReady(user, isReady)
manuallyInitiated = values["manuallyInitiated"] if values.has_key("manuallyInitiated") else True
self._client.setReady(user, isReady, manuallyInitiated)
def sendSet(self, setting):
self.sendMessage({"Set": setting})
@ -238,10 +239,11 @@ class SyncClientProtocol(JSONCommandProtocol):
}
})
def setReady(self, isReady):
def setReady(self, isReady, manuallyInitiated=True):
self.sendSet({
"ready": {
"isReady": isReady
"isReady": isReady,
"manuallyInitiated": manuallyInitiated
}
})
@ -354,7 +356,8 @@ class SyncServerProtocol(JSONCommandProtocol):
room = set_[1]["room"] if set_[1].has_key("room") else None
self._factory.authRoomController(self._watcher, password, room)
elif command == "ready":
self._factory.setReady(self._watcher, set_[1]['isReady'])
manuallyInitiated = set_[1]['manuallyInitiated'] if set_[1].has_key("manuallyInitiated") else False
self._factory.setReady(self._watcher, set_[1]['isReady'], manuallyInitiated=manuallyInitiated)
def sendSet(self, setting):
self.sendMessage({"Set": setting})
@ -377,11 +380,12 @@ class SyncServerProtocol(JSONCommandProtocol):
})
def sendSetReady(self, username, isReady):
def sendSetReady(self, username, isReady, manuallyInitiated=True):
self.sendSet({
"ready": {
"username": username,
"isReady": isReady
"isReady": isReady,
"manuallyInitiated": manuallyInitiated
}
})

View File

@ -125,9 +125,9 @@ class SyncFactory(Factory):
except ValueError:
self._roomManager.broadcastRoom(watcher, lambda w: w.sendControlledRoomAuthStatus(False, watcher.getName(), room._name))
def setReady(self, watcher, isReady):
def setReady(self, watcher, isReady, manuallyInitiated=True):
watcher.setReady(isReady)
self._roomManager.broadcastRoom(watcher, lambda w: w.sendSetReady(watcher.getName(), isReady))
self._roomManager.broadcastRoom(watcher, lambda w: w.sendSetReady(watcher.getName(), isReady, manuallyInitiated))
class RoomManager(object):
def __init__(self):
@ -362,8 +362,8 @@ class Watcher(object):
def sendControlledRoomAuthStatus(self, success, username, room):
self._connector.sendControlledRoomAuthStatus(success, username, room)
def sendSetReady(self, username, isReady):
self._connector.sendSetReady(username, isReady)
def sendSetReady(self, username, isReady, manuallyInitiated=True):
self._connector.sendSetReady(username, isReady, manuallyInitiated)
def __lt__(self, b):
if self.getPosition() is None or self._file is None: