def authRoomController(self, watcher, password, roomBaseName=None): room = watcher.getRoom() roomName = roomBaseName if roomBaseName else room.getName() try: success = RoomPasswordProvider.check(roomName, password, self._salt) if success: watcher.getRoom().addController(watcher) self._roomManager.broadcast(watcher, lambda w: w.sendControlledRoomAuthStatus(success, watcher.getName(), room._name)) except NotControlledRoom: newName = RoomPasswordProvider.getControlledRoomName(roomName, password, self._salt) watcher.sendNewControlledRoom(newName, password) except ValueError: self._roomManager.broadcastRoom(watcher, lambda w: w.sendControlledRoomAuthStatus(False, watcher.getName(), room._name))
def setWatcherRoom(self, watcher, roomName, asJoin=False): self._roomManager.moveWatcher(watcher, roomName) if asJoin: self.sendJoinMessage(watcher) else: self.sendRoomSwitchMessage(watcher) if RoomPasswordProvider.isControlledRoom(roomName): for controller in watcher.getRoom().getControllers(): watcher.sendControlledRoomAuthStatus(True, controller, roomName)
def _getRoom(self, roomName): if roomName in self._rooms: return self._rooms[roomName] else: if RoomPasswordProvider.isControlledRoom(roomName): room = ControlledRoom(roomName) else: room = Room(roomName) self._rooms[roomName] = room return room
def _getRoom(self, roomName): if roomName in self._rooms: return self._rooms[roomName] else: if RoomPasswordProvider.isControlledRoom(roomName): room = ControlledRoom(roomName, self._roomsDbHandle) else: if roomName in self._rooms: self._deleteRoomIfEmpty(self._rooms[roomName]) room = Room(roomName, self._roomsDbHandle) self._rooms[roomName] = room return room
def setWatcherRoom(self, watcher, roomName, asJoin=False): self._roomManager.moveWatcher(watcher, roomName) if asJoin: self.sendJoinMessage(watcher) else: self.sendRoomSwitchMessage(watcher) room = watcher.getRoom() roomSetByName = room.getSetBy().getName() if room.getSetBy() else None watcher.setPlaylist(roomSetByName, room.getPlaylist()) watcher.setPlaylistIndex(roomSetByName, room.getPlaylistIndex()) if RoomPasswordProvider.isControlledRoom(roomName): for controller in room.getControllers(): watcher.sendControlledRoomAuthStatus(True, controller, roomName)
def setWatcherRoom(self, watcher, roomName, asJoin=False): roomName = truncateText(roomName, constants.MAX_ROOM_NAME_LENGTH) self._roomManager.moveWatcher(watcher, roomName) if asJoin: self.sendJoinMessage(watcher) else: self.sendRoomSwitchMessage(watcher) room = watcher.getRoom() roomSetByName = room.getSetBy().getName() if room.getSetBy() else None watcher.setPlaylist(roomSetByName, room.getPlaylist()) watcher.setPlaylistIndex(roomSetByName, room.getPlaylistIndex()) if RoomPasswordProvider.isControlledRoom(roomName): for controller in room.getControllers(): watcher.sendControlledRoomAuthStatus(True, controller, roomName)
def isController(self): return RoomPasswordProvider.isControlledRoom(self._room.getName()) \ and self._room.canControl(self)
def showUserList(self, currentUser, rooms): self._usertreebuffer = QtGui.QStandardItemModel() self._usertreebuffer.setHorizontalHeaderLabels( (getMessage("roomuser-heading-label"), getMessage("size-heading-label"), getMessage("duration-heading-label"), getMessage("filename-heading-label") )) usertreeRoot = self._usertreebuffer.invisibleRootItem() for room in rooms: roomitem = QtGui.QStandardItem(room) font = QtGui.QFont() font.setItalic(True) if room == currentUser.room: font.setWeight(QtGui.QFont.Bold) roomitem.setFont(font) roomitem.setFlags(roomitem.flags() & ~Qt.ItemIsEditable) usertreeRoot.appendRow(roomitem) isControlledRoom = RoomPasswordProvider.isControlledRoom(room) if isControlledRoom: if room == currentUser.room and currentUser.isController(): roomitem.setIcon(QtGui.QIcon(self.resourcespath + 'lock_open.png')) else: roomitem.setIcon(QtGui.QIcon(self.resourcespath + 'lock.png')) else: roomitem.setIcon(QtGui.QIcon(self.resourcespath + 'chevrons_right.png')) for user in rooms[room]: useritem = QtGui.QStandardItem(user.username) isController = user.isController() sameRoom = room == currentUser.room if sameRoom: isReadyWithFile = user.isReadyWithFile() else: isReadyWithFile = None useritem.setData(isController, Qt.UserRole + constants.USERITEM_CONTROLLER_ROLE) useritem.setData(isReadyWithFile, Qt.UserRole + constants.USERITEM_READY_ROLE) if user.file: filesizeitem = QtGui.QStandardItem(formatSize(user.file['size'])) filedurationitem = QtGui.QStandardItem("({})".format(formatTime(user.file['duration']))) filenameitem = QtGui.QStandardItem((user.file['name'])) if currentUser.file: sameName = sameFilename(user.file['name'], currentUser.file['name']) sameSize = sameFilesize(user.file['size'], currentUser.file['size']) sameDuration = sameFileduration(user.file['duration'], currentUser.file['duration']) underlinefont = QtGui.QFont() underlinefont.setUnderline(True) if sameRoom: if not sameName: filenameitem.setForeground(QtGui.QBrush(QtGui.QColor(constants.STYLE_DIFFERENTITEM_COLOR))) filenameitem.setFont(underlinefont) if not sameSize: if currentUser.file is not None and formatSize(user.file['size']) == formatSize(currentUser.file['size']): filesizeitem = QtGui.QStandardItem(formatSize(user.file['size'],precise=True)) filesizeitem.setFont(underlinefont) filesizeitem.setForeground(QtGui.QBrush(QtGui.QColor(constants.STYLE_DIFFERENTITEM_COLOR))) if not sameDuration: filedurationitem.setForeground(QtGui.QBrush(QtGui.QColor(constants.STYLE_DIFFERENTITEM_COLOR))) filedurationitem.setFont(underlinefont) else: filenameitem = QtGui.QStandardItem(getMessage("nofile-note")) filedurationitem = QtGui.QStandardItem("") filesizeitem = QtGui.QStandardItem("") if room == currentUser.room: filenameitem.setForeground(QtGui.QBrush(QtGui.QColor(constants.STYLE_NOFILEITEM_COLOR))) font = QtGui.QFont() if currentUser.username == user.username: font.setWeight(QtGui.QFont.Bold) self.updateReadyState(currentUser.isReadyWithFile()) if isControlledRoom and not isController: useritem.setForeground(QtGui.QBrush(QtGui.QColor(constants.STYLE_NOTCONTROLLER_COLOR))) useritem.setFont(font) useritem.setFlags(useritem.flags() & ~Qt.ItemIsEditable & ~Qt.ItemIsSelectable) filenameitem.setFlags(filenameitem.flags() & ~Qt.ItemIsEditable & ~Qt.ItemIsSelectable) filesizeitem.setFlags(filesizeitem.flags() & ~Qt.ItemIsEditable & ~Qt.ItemIsSelectable) filedurationitem.setFlags(filedurationitem.flags() & ~Qt.ItemIsEditable & ~Qt.ItemIsSelectable) roomitem.appendRow((useritem, filesizeitem, filedurationitem, filenameitem)) self.listTreeModel = self._usertreebuffer self.listTreeView.setModel(self.listTreeModel) self.listTreeView.setItemDelegate(UserlistItemDelegate()) self.listTreeView.setItemsExpandable(False) self.listTreeView.setRootIsDecorated(False) self.listTreeView.expandAll() self.updateListGeometry()