list => dict change in userlist
This commit is contained in:
parent
8e3748e6e8
commit
ff39d54641
@ -110,8 +110,7 @@ class SyncClientProtocol(CommandProtocol):
|
|||||||
who, where, what = args
|
who, where, what = args
|
||||||
message = '%s is playing \'%s\' in the room: \'%s\'' % (who, what, where)
|
message = '%s is playing \'%s\' in the room: \'%s\'' % (who, what, where)
|
||||||
self.__syncplayClient.ui.showMessage(message)
|
self.__syncplayClient.ui.showMessage(message)
|
||||||
self.__syncplayClient.users.setUsersRoom(who, where)
|
self.__syncplayClient.users.addUser(SyncplayClientManager.SyncplayUser(who, what, where))
|
||||||
self.__syncplayClient.users.setUsersFilename(who, what, where)
|
|
||||||
self.__syncplayClient.checkIfFileMatchesOthers()
|
self.__syncplayClient.checkIfFileMatchesOthers()
|
||||||
|
|
||||||
@argumentCount(1)
|
@argumentCount(1)
|
||||||
@ -122,7 +121,7 @@ class SyncClientProtocol(CommandProtocol):
|
|||||||
@argumentCount(2)
|
@argumentCount(2)
|
||||||
def room(self, args):
|
def room(self, args):
|
||||||
message = '%s entered the room: \'%s\'' % (args[0], args[1])
|
message = '%s entered the room: \'%s\'' % (args[0], args[1])
|
||||||
self.__syncplayClient.users.setUsersRoom(args[0], args[1])
|
self.__syncplayClient.users.addUser(SyncplayClientManager.SyncplayUser(args[0], None, args[1]))
|
||||||
self.__syncplayClient.checkIfFileMatchesOthers()
|
self.__syncplayClient.checkIfFileMatchesOthers()
|
||||||
self.__syncplayClient.ui.showMessage(message)
|
self.__syncplayClient.ui.showMessage(message)
|
||||||
|
|
||||||
@ -495,25 +494,32 @@ class SyncplayClientManager(object):
|
|||||||
|
|
||||||
class UserList(object):
|
class UserList(object):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.users = []
|
self.users = dict()
|
||||||
self.currentUser = SyncplayClientManager.SyncplayUser()
|
self.currentUser = SyncplayClientManager.SyncplayUser()
|
||||||
|
|
||||||
def addUser(self, user):
|
def addUser(self, user):
|
||||||
if(not isinstance(user,SyncplayClientManager.SyncplayUser)):
|
if(not isinstance(user,SyncplayClientManager.SyncplayUser)):
|
||||||
user = SyncplayClientManager.SyncplayUser(user)
|
user = SyncplayClientManager.SyncplayUser(user)
|
||||||
if(not user.name == self.currentUser.name):
|
if(not user.name == self.currentUser.name):
|
||||||
self.users.append(user)
|
if(self.users.has_key(user.name)):
|
||||||
|
self.users[user.name].room = user.room if user.room <> None else self.users[user.name].room
|
||||||
|
self.users[user.name].filename = user.filename if user.filename <> None else self.users[user.name].filename
|
||||||
|
self.users[user.name].filesize = user.filesize if user.filesize <> None else self.users[user.name].filesize
|
||||||
|
self.users[user.name].fileduration = user.fileduration if user.fileduration <> None else self.users[user.name].fileduration
|
||||||
|
else:
|
||||||
|
self.users[user.name] = user
|
||||||
|
|
||||||
def removeUser(self, user):
|
def removeUser(self, user):
|
||||||
if(not isinstance(user,SyncplayClientManager.SyncplayUser)):
|
if(not isinstance(user,SyncplayClientManager.SyncplayUser)):
|
||||||
user = SyncplayClientManager.SyncplayUser(user)
|
user = SyncplayClientManager.SyncplayUser(user)
|
||||||
self.users[:] = list(itertools.ifilterfalse(lambda x: user.name == x.name, self.users))
|
if(self.users.has_key(user.name)):
|
||||||
|
self.users.pop(user.name)
|
||||||
|
|
||||||
def getUsersWithNotMatchingFilenames(self):
|
def getUsersWithNotMatchingFilenames(self):
|
||||||
if(self.currentUser.filename == None):
|
if(self.currentUser.filename == None):
|
||||||
return []
|
return []
|
||||||
matchingFilename = lambda x: self._areUsersFilesSame(x)
|
matchingFilename = lambda x: self._areUsersFilesSame(x)
|
||||||
return list(itertools.ifilterfalse(matchingFilename, self.users))
|
return list(itertools.ifilterfalse(matchingFilename, self.users.itervalues()))
|
||||||
|
|
||||||
def _areUsersFilesSame(self, user):
|
def _areUsersFilesSame(self, user):
|
||||||
filenameCheck = (user.filename == None or user.filename == self.currentUser.filename)
|
filenameCheck = (user.filename == None or user.filename == self.currentUser.filename)
|
||||||
@ -522,21 +528,6 @@ class SyncplayClientManager(object):
|
|||||||
roomCheck = user.room <> self.currentUser.room
|
roomCheck = user.room <> self.currentUser.room
|
||||||
return (filenameCheck and sizeCheck and durationCheck) or roomCheck
|
return (filenameCheck and sizeCheck and durationCheck) or roomCheck
|
||||||
|
|
||||||
def setUsersRoom(self, username, room):
|
|
||||||
for u in self.users:
|
|
||||||
if(u.name == username):
|
|
||||||
u.room = room
|
|
||||||
break
|
|
||||||
#did not find a user, add
|
|
||||||
self.addUser(SyncplayClientManager.SyncplayUser(username, None, room))
|
|
||||||
|
|
||||||
def setUsersFilename(self, username, filename, room):
|
|
||||||
for u in self.users:
|
|
||||||
if(u.name == username):
|
|
||||||
u.filename = filename
|
|
||||||
break
|
|
||||||
#did not find a user, add
|
|
||||||
self.addUser(SyncplayClientManager.SyncplayUser(username, filename, room))
|
|
||||||
|
|
||||||
from syncplay import ui
|
from syncplay import ui
|
||||||
from syncplay.ConfigurationGetter import ConfigurationGetter
|
from syncplay.ConfigurationGetter import ConfigurationGetter
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user