'Upload books to device.
:param files: List of either paths to files or file like objects'

def upload_books(self, files, names, metadata, on_card=None, memory=None):

    titles = [i.title for i in metadata]
    plugboards = self.library_view.model().db.prefs.get('plugboards', {})
    job = self.device_manager.upload_books(FunctionDispatcher(self.books_uploaded), files, names, on_card=on_card, metadata=metadata, titles=titles, plugboards=plugboards)
    self.upload_memory[job] = (metadata, on_card, memory, files)
