Fix review comments and cleanups

This commit is contained in:
Tim Bentley 2011-08-02 06:07:09 +01:00
parent c9c0904c31
commit 644706a62a
5 changed files with 42 additions and 31 deletions

View File

@ -51,6 +51,9 @@ class ListWidgetWithDnD(QtGui.QListWidget):
""" """
self.setAcceptDrops(True) self.setAcceptDrops(True)
self.setDragDropMode(QtGui.QAbstractItemView.DragDrop) self.setDragDropMode(QtGui.QAbstractItemView.DragDrop)
QtCore.QObject.connect(Receiver.get_receiver(),
QtCore.SIGNAL(u'%s_dnd' % self.mimeDataText),
self.parent().loadFile)
def mouseMoveEvent(self, event): def mouseMoveEvent(self, event):
""" """
@ -71,7 +74,7 @@ class ListWidgetWithDnD(QtGui.QListWidget):
drag.start(QtCore.Qt.CopyAction) drag.start(QtCore.Qt.CopyAction)
def dragEnterEvent(self, event): def dragEnterEvent(self, event):
if event.mimeData().hasUrls: if event.mimeData().hasUrls():
event.accept() event.accept()
else: else:
event.ignore() event.ignore()
@ -93,9 +96,15 @@ class ListWidgetWithDnD(QtGui.QListWidget):
if event.mimeData().hasUrls(): if event.mimeData().hasUrls():
event.setDropAction(QtCore.Qt.CopyAction) event.setDropAction(QtCore.Qt.CopyAction)
event.accept() event.accept()
files = []
for url in event.mimeData().urls(): for url in event.mimeData().urls():
if os.path.isfile(url.toLocalFile()): localFile = unicode(url.toLocalFile())
Receiver.send_message(u'%s_dnd' % self.mimeDataText, if os.path.isfile(localFile):
url.toLocalFile()) files.append(localFile)
elif os.path.isdir(localFile):
listing = os.listdir(localFile)
for file in listing:
files.append(os.path.join(localFile,file))
Receiver.send_message(u'%s_dnd' % self.mimeDataText,files)
else: else:
event.ignore() event.ignore()

View File

@ -341,25 +341,31 @@ class MediaManagerItem(QtGui.QWidget):
self.validateAndLoad(files) self.validateAndLoad(files)
Receiver.send_message(u'cursor_normal') Receiver.send_message(u'cursor_normal')
def loadFile(self, filename): def loadFile(self, files):
""" """
Turn file from Drag and Drop into a array so the Validate code Turn file from Drag and Drop into an array so the Validate code
can runn it. can run it.
``filename`` ``files``
The file to be loaded The list of files to be loaded
""" """
filename = unicode(filename) newFiles = []
type = filename.split(u'.')[-1] errorShown = False
if type.lower() not in self.onNewFileMasks: for file in files:
critical_error_message_box( type = file.split(u'.')[-1]
translate('OpenLP.MediaManagerItem', if type.lower() not in self.onNewFileMasks:
'Invalid File Type'), if not errorShown:
unicode(translate('OpenLP.MediaManagerItem', critical_error_message_box(
'Invalid File %s.\nSuffix not supported')) translate('OpenLP.MediaManagerItem',
% filename) 'Invalid File Type'),
else: unicode(translate('OpenLP.MediaManagerItem',
self.validateAndLoad([filename]) 'Invalid File %s.\nSuffix not supported'))
% file)
errorShown = True
else:
newFiles.append(file)
if file:
self.validateAndLoad(newFiles)
def validateAndLoad(self, files): def validateAndLoad(self, files):
""" """
@ -373,14 +379,11 @@ class MediaManagerItem(QtGui.QWidget):
for count in range(0, self.listView.count()): for count in range(0, self.listView.count()):
names.append(self.listView.item(count).text()) names.append(self.listView.item(count).text())
newFiles = [] newFiles = []
duplicatesFound = False
for file in files: for file in files:
filename = os.path.split(unicode(file))[1] filename = os.path.split(unicode(file))[1]
if filename in names: if filename in names:
critical_error_message_box( duplicatesFound = True
UiStrings().Duplicate,
unicode(translate('OpenLP.MediaManagerItem',
'Duplicate filename %s.\nThis filename is already in '
'the list')) % filename)
else: else:
newFiles.append(file) newFiles.append(file)
self.loadList(newFiles) self.loadList(newFiles)
@ -388,6 +391,11 @@ class MediaManagerItem(QtGui.QWidget):
SettingsManager.set_last_dir(self.settingsSection, lastDir) SettingsManager.set_last_dir(self.settingsSection, lastDir)
SettingsManager.set_list(self.settingsSection, SettingsManager.set_list(self.settingsSection,
self.settingsSection, self.getFileList()) self.settingsSection, self.getFileList())
if duplicatesFound:
critical_error_message_box(
UiStrings().Duplicate,
unicode(translate('OpenLP.MediaManagerItem',
'Duplicate files found on import and ignored.')))
def contextMenu(self, point): def contextMenu(self, point):
item = self.listView.itemAt(point) item = self.listView.itemAt(point)

View File

@ -54,8 +54,6 @@ class ImageMediaItem(MediaManagerItem):
QtCore.SIGNAL(u'live_theme_changed'), self.liveThemeChanged) QtCore.SIGNAL(u'live_theme_changed'), self.liveThemeChanged)
# Allow DnD from the desktop # Allow DnD from the desktop
self.listView.activateDnD() self.listView.activateDnD()
QtCore.QObject.connect(Receiver.get_receiver(),
QtCore.SIGNAL(u'images_dnd'), self.loadFile)
def retranslateUi(self): def retranslateUi(self):
self.onNewPrompt = translate('ImagePlugin.MediaItem', self.onNewPrompt = translate('ImagePlugin.MediaItem',

View File

@ -63,8 +63,6 @@ class MediaMediaItem(MediaManagerItem):
self.createPhonon) self.createPhonon)
# Allow DnD from the desktop # Allow DnD from the desktop
self.listView.activateDnD() self.listView.activateDnD()
QtCore.QObject.connect(Receiver.get_receiver(),
QtCore.SIGNAL(u'media_dnd'), self.loadFile)
def retranslateUi(self): def retranslateUi(self):
self.onNewPrompt = translate('MediaPlugin.MediaItem', 'Select Media') self.onNewPrompt = translate('MediaPlugin.MediaItem', 'Select Media')

View File

@ -60,8 +60,6 @@ class PresentationMediaItem(MediaManagerItem):
QtCore.SIGNAL(u'mediaitem_presentation_rebuild'), self.rebuild) QtCore.SIGNAL(u'mediaitem_presentation_rebuild'), self.rebuild)
# Allow DnD from the desktop # Allow DnD from the desktop
self.listView.activateDnD() self.listView.activateDnD()
QtCore.QObject.connect(Receiver.get_receiver(),
QtCore.SIGNAL(u'presentations_dnd'), self.loadFile)
def retranslateUi(self): def retranslateUi(self):
""" """