Exemplo n.º 1
0
 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))
Exemplo n.º 2
0
 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))
Exemplo n.º 3
0
 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)
Exemplo n.º 4
0
 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)
Exemplo n.º 5
0
 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
Exemplo n.º 6
0
 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
Exemplo n.º 7
0
 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
Exemplo n.º 8
0
    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)
Exemplo n.º 9
0
    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)
Exemplo n.º 10
0
 def isController(self):
     return RoomPasswordProvider.isControlledRoom(self._room.getName()) \
         and self._room.canControl(self)
Exemplo n.º 11
0
 def isController(self):
     return RoomPasswordProvider.isControlledRoom(self._room.getName()) \
         and self._room.canControl(self)
Exemplo n.º 12
0
    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()