Add context menu to list of who is playing what
This commit is contained in:
parent
48a2ad65d6
commit
c575377341
@ -654,7 +654,8 @@ guiIcons = ['resources/accept.png', 'resources/arrow_undo.png', 'resources/clock
|
|||||||
'resources/user_key.png', 'resources/lock.png', 'resources/key_go.png', 'resources/page_white_key.png',
|
'resources/user_key.png', 'resources/lock.png', 'resources/key_go.png', 'resources/page_white_key.png',
|
||||||
'resources/tick.png', 'resources/lock_open.png', 'resources/empty_checkbox.png', 'resources/tick_checkbox.png',
|
'resources/tick.png', 'resources/lock_open.png', 'resources/empty_checkbox.png', 'resources/tick_checkbox.png',
|
||||||
'resources/world_explore.png', 'resources/application_get.png', 'resources/cog.png',
|
'resources/world_explore.png', 'resources/application_get.png', 'resources/cog.png',
|
||||||
'resources/film_go.png', 'resources/world_go.png', 'resources/arrow_refresh.png'
|
'resources/film_go.png', 'resources/world_go.png', 'resources/arrow_refresh.png',
|
||||||
|
'resources/world_add.png', 'resources/film_add.png'
|
||||||
]
|
]
|
||||||
resources = ["resources/icon.ico", "resources/syncplay.png"]
|
resources = ["resources/icon.ico", "resources/syncplay.png"]
|
||||||
resources.extend(guiIcons)
|
resources.extend(guiIcons)
|
||||||
|
|||||||
@ -176,8 +176,8 @@ class SyncplayClient(object):
|
|||||||
if filename.startswith(URI):
|
if filename.startswith(URI):
|
||||||
self._player.openFile(filename, resetPosition=True)
|
self._player.openFile(filename, resetPosition=True)
|
||||||
return
|
return
|
||||||
self.ui.showErrorMessage(u"Could not load {} because it is not known as a safe path.".format(filename))
|
self.ui.showErrorMessage(u"Could not load {} because it is not known as a safe path.".format(filename))
|
||||||
return
|
return
|
||||||
else:
|
else:
|
||||||
path = self.findFilenameInDirectories(filename)
|
path = self.findFilenameInDirectories(filename)
|
||||||
if path:
|
if path:
|
||||||
|
|||||||
@ -532,10 +532,10 @@ class MainWindow(QtGui.QMainWindow):
|
|||||||
if isControlledRoom and not isController:
|
if isControlledRoom and not isController:
|
||||||
useritem.setForeground(QtGui.QBrush(QtGui.QColor(constants.STYLE_NOTCONTROLLER_COLOR)))
|
useritem.setForeground(QtGui.QBrush(QtGui.QColor(constants.STYLE_NOTCONTROLLER_COLOR)))
|
||||||
useritem.setFont(font)
|
useritem.setFont(font)
|
||||||
useritem.setFlags(useritem.flags() & ~Qt.ItemIsEditable & ~Qt.ItemIsSelectable)
|
useritem.setFlags(useritem.flags() & ~Qt.ItemIsEditable)
|
||||||
filenameitem.setFlags(filenameitem.flags() & ~Qt.ItemIsEditable & ~Qt.ItemIsSelectable)
|
filenameitem.setFlags(filenameitem.flags() & ~Qt.ItemIsEditable)
|
||||||
filesizeitem.setFlags(filesizeitem.flags() & ~Qt.ItemIsEditable & ~Qt.ItemIsSelectable)
|
filesizeitem.setFlags(filesizeitem.flags() & ~Qt.ItemIsEditable)
|
||||||
filedurationitem.setFlags(filedurationitem.flags() & ~Qt.ItemIsEditable & ~Qt.ItemIsSelectable)
|
filedurationitem.setFlags(filedurationitem.flags() & ~Qt.ItemIsEditable)
|
||||||
roomitem.appendRow((useritem, filesizeitem, filedurationitem, filenameitem))
|
roomitem.appendRow((useritem, filesizeitem, filedurationitem, filenameitem))
|
||||||
self.listTreeModel = self._usertreebuffer
|
self.listTreeModel = self._usertreebuffer
|
||||||
self.listTreeView.setModel(self.listTreeModel)
|
self.listTreeView.setModel(self.listTreeModel)
|
||||||
@ -547,6 +547,51 @@ class MainWindow(QtGui.QMainWindow):
|
|||||||
MainWindow.FileSwitchManager.setFilenameWatchlist(self.newWatchlist)
|
MainWindow.FileSwitchManager.setFilenameWatchlist(self.newWatchlist)
|
||||||
self.checkForDisabledDir()
|
self.checkForDisabledDir()
|
||||||
|
|
||||||
|
def openRoomMenu(self, position):
|
||||||
|
# TODO: Deselect items after right click
|
||||||
|
indexes = self.listTreeView.selectedIndexes()
|
||||||
|
if sys.platform.startswith('win'):
|
||||||
|
resourcespath = utils.findWorkingDir() + "\\resources\\"
|
||||||
|
else:
|
||||||
|
resourcespath = utils.findWorkingDir() + "/resources/"
|
||||||
|
if len(indexes) > 0:
|
||||||
|
item = self.listTreeView.selectedIndexes()[0]
|
||||||
|
else:
|
||||||
|
return
|
||||||
|
|
||||||
|
menu = QtGui.QMenu()
|
||||||
|
username = item.sibling(item.row(), 0).data()
|
||||||
|
if username == self._syncplayClient.userlist.currentUser.username:
|
||||||
|
shortUsername = "your" # TODO: Use messages.py
|
||||||
|
elif len(username) < 15:
|
||||||
|
shortUsername = u"{}'s".format(username)
|
||||||
|
else:
|
||||||
|
shortUsername = "{}'s...".format(username[0:12])
|
||||||
|
|
||||||
|
filename = item.sibling(item.row(), 3).data()
|
||||||
|
while item.parent().row() != -1:
|
||||||
|
item = item.parent()
|
||||||
|
roomToJoin = item.sibling(item.row(), 0).data()
|
||||||
|
if roomToJoin <> self._syncplayClient.getRoom():
|
||||||
|
menu.addAction("Join room {}".format(roomToJoin), lambda: self.joinRoom(roomToJoin))
|
||||||
|
elif username and filename and filename <> getMessage("nofile-note"):
|
||||||
|
if isURL(filename):
|
||||||
|
menu.addAction(QtGui.QPixmap(resourcespath + "world_add.png"), "Add {} stream to playlist".format(shortUsername), lambda: self.addStreamToPlaylist(filename))
|
||||||
|
else:
|
||||||
|
menu.addAction(QtGui.QPixmap(resourcespath + "film_add.png"), "Add {} file to playlist".format(shortUsername), lambda: self.addStreamToPlaylist(filename))
|
||||||
|
|
||||||
|
if self._syncplayClient.userlist.currentUser.file is None or filename <> self._syncplayClient.userlist.currentUser.file["name"]:
|
||||||
|
if isURL(filename):
|
||||||
|
menu.addAction(QtGui.QPixmap(resourcespath + "world_go.png"), "Open stream {} stream".format(shortUsername), lambda: self.openFile(filename))
|
||||||
|
else:
|
||||||
|
pathFound = MainWindow.FileSwitchManager.findFilepath(filename)
|
||||||
|
if pathFound:
|
||||||
|
menu.addAction(QtGui.QPixmap(resourcespath + "film_go.png"), "Open {} file".format(shortUsername), lambda: self.openFile(pathFound))
|
||||||
|
else:
|
||||||
|
return
|
||||||
|
menu.exec_(self.listTreeView.viewport().mapToGlobal(position))
|
||||||
|
|
||||||
|
|
||||||
def checkForDisabledDir(self):
|
def checkForDisabledDir(self):
|
||||||
if MainWindow.FileSwitchManager.disabledDir is not None and MainWindow.FileSwitchManager.currentWindow is not None:
|
if MainWindow.FileSwitchManager.disabledDir is not None and MainWindow.FileSwitchManager.currentWindow is not None:
|
||||||
self.showErrorMessage(getMessage("folder-search-timeout-error").format(MainWindow.FileSwitchManager.disabledDir))
|
self.showErrorMessage(getMessage("folder-search-timeout-error").format(MainWindow.FileSwitchManager.disabledDir))
|
||||||
@ -590,7 +635,7 @@ class MainWindow(QtGui.QMainWindow):
|
|||||||
if pathFound:
|
if pathFound:
|
||||||
self._syncplayClient._player.openFile(pathFound)
|
self._syncplayClient._player.openFile(pathFound)
|
||||||
else:
|
else:
|
||||||
self.ui.showErrorMessage(u"Could not find file {} for playlist switch!".format(filename))
|
self._syncplayClient.ui.showErrorMessage(u"Could not find file {} for playlist switch!".format(filename))
|
||||||
|
|
||||||
def roomClicked(self, item):
|
def roomClicked(self, item):
|
||||||
username = item.sibling(item.row(), 0).data()
|
username = item.sibling(item.row(), 0).data()
|
||||||
@ -848,6 +893,9 @@ class MainWindow(QtGui.QMainWindow):
|
|||||||
window.listTreeView.setModel(window.listTreeModel)
|
window.listTreeView.setModel(window.listTreeModel)
|
||||||
window.listTreeView.setIndentation(21)
|
window.listTreeView.setIndentation(21)
|
||||||
window.listTreeView.doubleClicked.connect(self.roomClicked)
|
window.listTreeView.doubleClicked.connect(self.roomClicked)
|
||||||
|
self.listTreeView.setContextMenuPolicy(Qt.CustomContextMenu)
|
||||||
|
self.listTreeView.setSelectionBehavior(QtGui.QAbstractItemView.SelectRows)
|
||||||
|
self.listTreeView.customContextMenuRequested.connect(self.openRoomMenu)
|
||||||
window.listlabel = QtGui.QLabel(getMessage("userlist-heading-label"))
|
window.listlabel = QtGui.QLabel(getMessage("userlist-heading-label"))
|
||||||
window.listFrame = QtGui.QFrame()
|
window.listFrame = QtGui.QFrame()
|
||||||
window.listFrame.setLineWidth(0)
|
window.listFrame.setLineWidth(0)
|
||||||
@ -1236,10 +1284,15 @@ class MainWindow(QtGui.QMainWindow):
|
|||||||
self.playlist.addItem(os.path.basename(filePath))
|
self.playlist.addItem(os.path.basename(filePath))
|
||||||
else:
|
else:
|
||||||
self.playlist.insertItem(index, os.path.basename(filePath))
|
self.playlist.insertItem(index, os.path.basename(filePath))
|
||||||
|
self.playlistUpdated()
|
||||||
|
|
||||||
def addStreamToPlaylist(self, filePath):
|
def openFile(self, filePath, resetPosition=False):
|
||||||
self.removePlayListNote()
|
self._syncplayClient._player.openFile(filePath, resetPosition)
|
||||||
self.playlist.addItem(os.path.basename(filePath))
|
|
||||||
|
def addStreamToPlaylist(self, streamURI):
|
||||||
|
self.removePlaylistNote()
|
||||||
|
self.playlist.addItem(streamURI)
|
||||||
|
self.playlistUpdated()
|
||||||
|
|
||||||
def removePlaylistNote(self):
|
def removePlaylistNote(self):
|
||||||
if not self.clearedPlaylistNote:
|
if not self.clearedPlaylistNote:
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user