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 @@
-
+