diff --git a/src/calibre/devices/prs505/books.py b/src/calibre/devices/prs505/books.py index 227356bda9..8f054a1144 100644 --- a/src/calibre/devices/prs505/books.py +++ b/src/calibre/devices/prs505/books.py @@ -180,7 +180,7 @@ class BookList(_BookList): return child return None - def add_book(self, mi, name, size, ctime): + def add_book(self, mi, name, collections, size, ctime): """ Add a node into the DOM tree, representing a book """ book = self.book_by_path(name) if book is not None: @@ -221,12 +221,18 @@ class BookList(_BookList): book = Book(node, self.mountpath, [], prefix=self.prefix) book.datetime = ctime self.append(book) + tags = [] - if mi.tags: - tags.extend(mi.tags) - if mi.series: - tags.append(mi.series) + for item in collections: + item = item.strip() + mitem = getattr(mi, item, None) + if mitem: + if isinstance(mitem, list): + tags.extend(mitem) + else: + tags.append(mitem) if tags: + tags = list(set(tags)) if hasattr(mi, 'tag_order'): self.tag_order.update(mi.tag_order) self.set_tags(book, tags) diff --git a/src/calibre/devices/prs505/driver.py b/src/calibre/devices/prs505/driver.py index aaf175503f..439a950f14 100644 --- a/src/calibre/devices/prs505/driver.py +++ b/src/calibre/devices/prs505/driver.py @@ -55,6 +55,11 @@ class PRS505(CLI, Device): MUST_READ_METADATA = True EBOOK_DIR_MAIN = 'database/media/books' + EXTRA_CUSTOMIZATION_MESSAGE = _('Comma separated list of metadata fields ' + 'to turn into collections on the device. Posiibilities include: ')+\ + 'series, tags, authors' + EXTRA_CUSTOMIZATION_DEFAULT = ', '.join(['series', 'tags']) + def windows_filter_pnp_id(self, pnp_id): return '_LAUNCHER' in pnp_id @@ -159,7 +164,8 @@ class PRS505(CLI, Device): if name.startswith('/'): name = name[1:] - booklists[blist].add_book(info, name, *location[1:-1]) + opts = self.settings() + booklists[blist].add_book(info, name, opts.extra_customization.split(','), *location[1:-1]) fix_ids(*booklists) def delete_books(self, paths, end_session=True): diff --git a/src/calibre/devices/usbms/deviceconfig.py b/src/calibre/devices/usbms/deviceconfig.py index 96477dbece..4e632433b8 100644 --- a/src/calibre/devices/usbms/deviceconfig.py +++ b/src/calibre/devices/usbms/deviceconfig.py @@ -47,8 +47,7 @@ class DeviceConfig(object): def config_widget(cls): from calibre.gui2.device_drivers.configwidget import ConfigWidget cw = ConfigWidget(cls.settings(), cls.FORMATS, cls.SUPPORTS_SUB_DIRS, - cls.MUST_READ_METADATA, cls.EXTRA_CUSTOMIZATION_MESSAGE, - cls.EXTRA_CUSTOMIZATION_DEFAULT) + cls.MUST_READ_METADATA, cls.EXTRA_CUSTOMIZATION_MESSAGE) return cw @classmethod diff --git a/src/calibre/gui2/device_drivers/configwidget.py b/src/calibre/gui2/device_drivers/configwidget.py index cb821d89b9..6eb6e1226d 100644 --- a/src/calibre/gui2/device_drivers/configwidget.py +++ b/src/calibre/gui2/device_drivers/configwidget.py @@ -11,8 +11,7 @@ from calibre.gui2.device_drivers.configwidget_ui import Ui_ConfigWidget class ConfigWidget(QWidget, Ui_ConfigWidget): def __init__(self, settings, all_formats, supports_subdirs, - must_read_metadata, extra_customization_message, - extra_customization_value): + must_read_metadata, extra_customization_message): QWidget.__init__(self) Ui_ConfigWidget.__init__(self) @@ -41,8 +40,7 @@ class ConfigWidget(QWidget, Ui_ConfigWidget): self.opt_read_metadata.hide() if extra_customization_message: self.extra_customization_label.setText(extra_customization_message) - if extra_customization_value: - self.opt_extra_customization.setText(extra_customization_value) + self.opt_extra_customization.setText(settings.extra_customization) else: self.extra_customization_label.setVisible(False) self.opt_extra_customization.setVisible(False) diff --git a/src/calibre/gui2/dialogs/config/__init__.py b/src/calibre/gui2/dialogs/config/__init__.py index ea9ab1af50..32da148584 100644 --- a/src/calibre/gui2/dialogs/config/__init__.py +++ b/src/calibre/gui2/dialogs/config/__init__.py @@ -177,7 +177,7 @@ class PluginModel(QAbstractItemModel): ans='%s (%s) %s %s\n%s'%(plugin.name, ver, _('by'), plugin.author, desc) c = plugin_customization(plugin) if c: - ans += '\nCustomization: '+c + ans += _('\nCustomization: ')+c return QVariant(ans) if role == Qt.DecorationRole: return self.disabled_icon if is_disabled(plugin) else self.icon diff --git a/src/calibre/gui2/dialogs/config/config.ui b/src/calibre/gui2/dialogs/config/config.ui index f593df5e14..e638bab1c9 100644 --- a/src/calibre/gui2/dialogs/config/config.ui +++ b/src/calibre/gui2/dialogs/config/config.ui @@ -15,7 +15,7 @@ Preferences - + :/images/config.svg:/images/config.svg @@ -148,7 +148,7 @@ ... - + :/images/mimetypes/dir.svg:/images/mimetypes/dir.svg @@ -285,7 +285,7 @@ ... - + :/images/arrow-up.svg:/images/arrow-up.svg @@ -309,7 +309,7 @@ ... - + :/images/arrow-down.svg:/images/arrow-down.svg @@ -473,7 +473,7 @@ ... - + :/images/arrow-up.svg:/images/arrow-up.svg @@ -497,7 +497,7 @@ ... - + :/images/arrow-down.svg:/images/arrow-down.svg @@ -557,7 +557,7 @@ &Add email - + :/images/plus.svg:/images/plus.svg @@ -584,7 +584,7 @@ &Remove email - + :/images/minus.svg:/images/minus.svg @@ -907,6 +907,9 @@ + + true + 32 @@ -916,6 +919,9 @@ true + + true + true @@ -973,7 +979,7 @@ ... - + :/images/document_open.svg:/images/document_open.svg @@ -1044,7 +1050,7 @@ - +