diff --git a/src/calibre/gui2/dialogs/quickview.py b/src/calibre/gui2/dialogs/quickview.py
index 5c7b2a8b33..c82c60a07e 100644
--- a/src/calibre/gui2/dialogs/quickview.py
+++ b/src/calibre/gui2/dialogs/quickview.py
@@ -174,6 +174,10 @@ class Quickview(QDialog, Ui_Quickview):
self.last_search = None
self.no_valid_items = False
+ self.apply_vls.setCheckState(Qt.Checked if gprefs['qv_respects_vls']
+ else Qt.Unchecked)
+ self.apply_vls.stateChanged.connect(self.vl_box_changed)
+
self.fm = self.db.field_metadata
self.items.setSelectionMode(QAbstractItemView.SingleSelection)
@@ -428,6 +432,10 @@ class Quickview(QDialog, Ui_Quickview):
self.fill_in_books_box(unicode_type(txt))
self.set_search_text(self.current_key + ':"=' + txt.replace('"', '\\"') + '"')
+ def vl_box_changed(self):
+ gprefs['qv_respects_vls'] = self.apply_vls.isChecked()
+ self._refresh(self.current_book_id, self.current_key)
+
def refresh(self, idx):
'''
Given a cell in the library view, display the information. This method
@@ -534,7 +542,7 @@ class Quickview(QDialog, Ui_Quickview):
else:
sv = selected_item
sv = self.current_key + ':"=' + sv.replace('"', r'\"') + '"'
- if gprefs['qv_respects_vls']:
+ if self.apply_vls.isChecked():
books = self.db.search(sv, return_matches=True, sort_results=False)
else:
books = self.db.new_api.search(sv)
@@ -588,8 +596,8 @@ class Quickview(QDialog, Ui_Quickview):
a = TableItem(v, timestampfromdt(d))
elif self.fm[col]['datatype'] in ('float', 'int'):
v = mi.format_field(col)[1]
- sv = mi.get(col)
- a = TableItem(v, sv)
+ sort_val = mi.get(col)
+ a = TableItem(v, sort_val)
else:
v = mi.format_field(col)[1]
a = TableItem(v, v)
diff --git a/src/calibre/gui2/dialogs/quickview.ui b/src/calibre/gui2/dialogs/quickview.ui
index 87bcbe236e..735680344c 100644
--- a/src/calibre/gui2/dialogs/quickview.ui
+++ b/src/calibre/gui2/dialogs/quickview.ui
@@ -75,6 +75,17 @@
+ -
+
+
+ &Apply virtual libraries
+
+
+ <p>Select to make Quickview show only books in the current
+ virtual library</p>
+
+
+
-