Move from TextEdit to TreeView for list in main GUI

This commit is contained in:
Etoh 2013-06-12 01:56:01 +02:00
parent 53266f9b3d
commit 70543aa2f7

View File

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