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.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:
|
||||||
|
|||||||
@ -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})$"
|
||||||
|
|||||||
@ -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()
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user