diff --git a/syncplay/ui/gui.py b/syncplay/ui/gui.py
index 7279660..3c187e4 100644
--- a/syncplay/ui/gui.py
+++ b/syncplay/ui/gui.py
@@ -26,35 +26,42 @@ class MainWindow(QtGui.QMainWindow):
else:
self.newMessage(time.strftime(constants.UI_TIME_FORMAT, time.localtime()) + message + "
")
- def showListMessage(self, message):
- message = unicode(message)
- message = message.replace("&", "&").replace('"', """).replace("<", "<").replace(">", ">")
- message = message.replace(" ", " "*4)
- self._listBuffer += message + "
"
-
def showUserList(self, currentUser, rooms):
+ self._usertreebuffer = QtGui.QStandardItemModel()
+ self._usertreebuffer.setColumnCount(2)
+ self._usertreebuffer.setHorizontalHeaderLabels(("User","File being played"))
+ usertreeRoot = self._usertreebuffer.invisibleRootItem()
+
for room in rooms:
- message = u"In room '{}':".format(room)
- self.showListMessage(message)
+ roomitem = QtGui.QStandardItem(room)
+ blankitem = QtGui.QStandardItem("")
+ roomitem.setFlags(roomitem.flags() & ~Qt.ItemIsEditable)
+ blankitem.setFlags(blankitem.flags() & ~Qt.ItemIsEditable)
+ usertreeRoot.appendRow((roomitem, blankitem))
for user in rooms[room]:
- username = "*<{}>*".format(user.username) if user == currentUser else "<{}>".format(user.username)
+ useritem = QtGui.QStandardItem(user.username)
+ fileitem = QtGui.QStandardItem("")
if(user.file):
- message = u"{} is playing:".format(username)
- self.showListMessage(message)
- message = u" File: '{}' ({})".format(user.file['name'], formatTime(user.file['duration']))
+ fileitem = QtGui.QStandardItem(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)
+ fileitem = QtGui.QStandardItem(user.file['name'] + " ("+formatTime(user.file['duration'])+")" + " (Different size!)")
+ if room == currentUser.room:
+ fileitem.setForeground(QtGui.QBrush(QtGui.QColor('red')))
+ if (user.file['name'] != currentUser.file['name'] and room == currentUser.room):
+ fileitem.setForeground(QtGui.QBrush(QtGui.QColor('red')))
else:
- message = u"{} is not playing a file".format(username)
- self.showListMessage(message)
- self.markEndOfUserlist()
-
- def markEndOfUserlist(self):
- self.resetList()
- self.newListItem(self._listBuffer)
- self._listBuffer = "";
+ fileitem = QtGui.QStandardItem("(No file being played)")
+ if room == currentUser.room:
+ fileitem.setForeground(QtGui.QBrush(QtGui.QColor('blue')))
+ useritem.setFlags(useritem.flags() & ~Qt.ItemIsEditable)
+ fileitem.setFlags(fileitem.flags() & ~Qt.ItemIsEditable)
+ roomitem.appendRow((useritem, fileitem))
+
+ self.listTreeModel = self._usertreebuffer
+ self.listTreeView.setModel(self.listTreeModel)
+ self.listTreeView.expandAll()
+
def userListChange(self):
self._syncplayClient.showUserList()
@@ -156,15 +163,16 @@ class MainWindow(QtGui.QMainWindow):
window.outputFrame.setLayout(window.outputLayout)
window.listLayout = QtGui.QVBoxLayout()
- window.listbox = QtGui.QTextEdit()
- window.listbox.setReadOnly(True)
+ window.listTreeModel = QtGui.QStandardItemModel()
+ window.listTreeView = QtGui.QTreeView()
+ window.listTreeView.setModel(window.listTreeModel)
window.listlabel = QtGui.QLabel("List of who is playing what")
window.listFrame = QtGui.QFrame()
window.listFrame.setLineWidth(0)
window.listFrame.setMidLineWidth(0)
window.listLayout.setContentsMargins(0,0,0,0)
window.listLayout.addWidget(window.listlabel)
- window.listLayout.addWidget(window.listbox)
+ window.listLayout.addWidget(window.listTreeView)
window.listFrame.setLayout(window.listLayout)
window.topSplit.addWidget(window.outputFrame)
@@ -281,7 +289,6 @@ class MainWindow(QtGui.QMainWindow):
def __init__(self):
super(MainWindow, self).__init__()
self.QtGui = QtGui
- self._listBuffer = ""
if sys.platform.startswith('linux'):
self.resourcespath = utils.findWorkingDir() + "/resources/"
else: