diff --git a/syncplay/client.py b/syncplay/client.py
index 3733105..5d929b8 100644
--- a/syncplay/client.py
+++ b/syncplay/client.py
@@ -548,67 +548,7 @@ class SyncplayUserlist(object):
else:
self.addUser(username, room, file_)
self.userListChange()
-
- def __addUserWithFileToList(self, rooms, user):
- currentPosition = utils.formatTime(user.lastPosition)
- file_key = u'\'{}\' ({}/{})'.format(user.file['name'], currentPosition, utils.formatTime(user.file['duration']))
- if (not rooms[user.room].has_key(file_key)):
- rooms[user.room][file_key] = {}
- rooms[user.room][file_key][user.username] = user
-
- def __addUserWithoutFileToList(self, rooms, user):
- if (not rooms[user.room].has_key("__noFile__")):
- rooms[user.room]["__noFile__"] = {}
- rooms[user.room]["__noFile__"][user.username] = user
-
- def __createListOfPeople(self, rooms):
- if(not rooms.has_key(self.currentUser.room)):
- rooms[self.currentUser.room] = {}
- for user in self._users.itervalues():
- if (not rooms.has_key(user.room)):
- rooms[user.room] = {}
- if(user.file):
- self.__addUserWithFileToList(rooms, user)
- else:
- self.__addUserWithoutFileToList(rooms, user)
- if(self.currentUser.file):
- self.__addUserWithFileToList(rooms, self.currentUser)
- else:
- self.__addUserWithoutFileToList(rooms, self.currentUser)
- return rooms
-
- def __addDifferentFileMessageIfNecessary(self, user, message):
- if(self.currentUser.file):
- fileHasSameSizeAsYour = user.file['size'] == self.currentUser.file['size']
- fileHasSameNameYour = user.file['name'] == self.currentUser.file['name']
- differentFileMessage = getMessage("en", "different-filesize-notification")
- message += differentFileMessage if not fileHasSameSizeAsYour and fileHasSameNameYour else ""
- return message
-
- def __displayFileWatchersInRoomList(self, key, users):
- self.ui.showListMessage(getMessage("en", "file-played-by-notification").format(key))
- for user in sorted(users.itervalues()):
- message = "<"+user.username+">"
- if(self.currentUser.username == user.username):
- message = "*" + message + "*"
- message = self.__addDifferentFileMessageIfNecessary(user, message)
- self.ui.showListMessage("\t" + message)
-
- def __displayPeopleInRoomWithNoFile(self, noFileList):
- if (noFileList):
- self.ui.showListMessage(getMessage("en", "notplaying-notification"))
- for user in sorted(noFileList.itervalues()):
- self.ui.showListMessage("\t<" + user.username + ">")
-
- def __displayListOfPeople(self, rooms):
- for roomName in sorted(rooms.iterkeys()):
- self.ui.showListMessage(getMessage("en", "userlist-room-notification").format(roomName))
- noFileList = rooms[roomName].pop("__noFile__") if (rooms[roomName].has_key("__noFile__")) else None
- for key in sorted(rooms[roomName].iterkeys()):
- self.__displayFileWatchersInRoomList(key, rooms[roomName][key])
- self.__displayPeopleInRoomWithNoFile(noFileList)
- self.ui.markEndOfUserlist()
-
+
def areAllFilesInRoomSame(self):
for user in self._users.itervalues():
if(user.room == self.currentUser.room and user.file and not self.currentUser.isFileSame(user.file)):
@@ -632,10 +572,17 @@ class SyncplayUserlist(object):
return self._roomUsersChanged
def showUserList(self):
- rooms = {}
- self.__createListOfPeople(rooms)
- self.__displayListOfPeople(rooms)
-
+ rooms = {}
+ for user in self._users.itervalues():
+ if(user.room not in rooms):
+ rooms[user.room] = []
+ rooms[user.room].append(user)
+ if(self.currentUser.room not in rooms):
+ rooms[self.currentUser.room] = []
+ rooms[user.room].append(self.currentUser)
+
+ self.ui.showUserList(self.currentUser, rooms)
+
def clearList(self):
self._users = {}
@@ -648,8 +595,8 @@ class UiManager(object):
if(not noPlayer): self.showOSDMessage(message)
self.__ui.showMessage(message, noTimestamp)
- def showListMessage(self, message):
- self.__ui.showListMessage(message)
+ def showUserList(self, currentUser, rooms):
+ self.__ui.showUserList(currentUser, rooms)
def showOSDMessage(self, message, duration = constants.OSD_DURATION):
if(self._client._player):
diff --git a/syncplay/ui/consoleUI.py b/syncplay/ui/consoleUI.py
index 82761de..2dd153c 100644
--- a/syncplay/ui/consoleUI.py
+++ b/syncplay/ui/consoleUI.py
@@ -7,6 +7,7 @@ from syncplay import utils
from syncplay import constants
from syncplay.messages import getMessage
import sys
+from syncplay.utils import formatTime
class ConsoleUI(threading.Thread):
def __init__(self):
@@ -40,11 +41,23 @@ class ConsoleUI(threading.Thread):
self.promptMode.wait()
return self.PromptResult
- def showListMessage(self, message):
- self.showMessage(message, True)
-
- def markEndOfUserlist(self):
- pass
+ def showUserList(self, currentUser, rooms):
+ for room in rooms:
+ message = u"In room '{}':".format(room)
+ self.showMessage(message, True)
+ for user in rooms[room]:
+ username = "*<{}>*".format(user.username) if user == currentUser else "<{}>".format(user.username)
+ if(user.file):
+ message = u"{} is playing:".format(username)
+ self.showMessage(message, True)
+ message = u" File: '{}' ({})".format(user.file['name'], formatTime(user.file['duration']))
+ if(currentUser.file):
+ if(user.file['name'] == currentUser.file['name'] and user.file['size'] != currentUser.file['size']):
+ message += " (their file size is different from yours!)"
+ self.showMessage(message, True)
+ else:
+ message = u"{} is not playing a file".format(username)
+ self.showMessage(message, True)
def userListChange(self):
pass
diff --git a/syncplay/ui/gui.py b/syncplay/ui/gui.py
index 9ccc8c7..2bc5c35 100644
--- a/syncplay/ui/gui.py
+++ b/syncplay/ui/gui.py
@@ -4,6 +4,7 @@ from syncplay import utils, constants
import sys
import time
import re
+from syncplay.utils import formatTime
class MainWindow(QtGui.QMainWindow):
def addClient(self, client):
@@ -26,8 +27,27 @@ class MainWindow(QtGui.QMainWindow):
def showListMessage(self, message):
message = unicode(message)
message = message.replace("&", "&").replace('"', """).replace("<", "<").replace(">", ">")
- message = message.replace("\t", " "*4)
- self._listBuffer += message + "
"
+ message = message.replace(" ", " "*4)
+ self._listBuffer += message + "
"
+
+ def showUserList(self, currentUser, rooms):
+ for room in rooms:
+ message = u"In room '{}':".format(room)
+ self.showListMessage(message)
+ for user in rooms[room]:
+ username = "*<{}>*".format(user.username) if user == currentUser else "<{}>".format(user.username)
+ if(user.file):
+ message = u"{} is playing:".format(username)
+ self.showListMessage(message)
+ message = u" File: '{}' ({})".format(user.file['name'], formatTime(user.file['duration']))
+ if(currentUser.file):
+ if(user.file['name'] == currentUser.file['name'] and user.file['size'] != currentUser.file['size']):
+ message += " (their file size is different from yours!)"
+ self.showListMessage(message)
+ else:
+ message = u"{} is not playing a file".format(username)
+ self.showListMessage(message)
+ self.markEndOfUserlist()
def markEndOfUserlist(self):
self.resetList()