This commit is contained in:
Kovid Goyal 2022-11-08 20:06:44 +05:30
commit 0b8bd9ddbe
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
3 changed files with 44 additions and 15 deletions

View File

@ -33,6 +33,9 @@ class ConfigWidget(ConfigWidgetBase, Ui_Form):
r('limit_search_columns', prefs)
r('use_primary_find_in_search', prefs)
r('search_tool_bar_shows_text', gprefs)
ossm = self.opt_saved_search_menu_is_hierarchical
ossm.setChecked('search' in db.new_api.pref('categories_using_hierarchy', []))
ossm.stateChanged.connect(self.changed_signal)
r('case_sensitive', prefs)
fl = db.field_metadata.get_search_terms()
r('limit_search_columns_to', prefs, setting=CommaSeparatedList, choices=fl)
@ -234,6 +237,13 @@ class ConfigWidget(ConfigWidgetBase, Ui_Form):
str(self.similar_series_search_key.currentText()))
self.db.new_api.set_pref('similar_publisher_search_key',
str(self.similar_publisher_search_key.currentText()))
cats = set(self.db.new_api.pref('categories_using_hierarchy', []))
if self.opt_saved_search_menu_is_hierarchical.isChecked():
cats.add('search')
else:
cats.discard('search')
self.db.new_api.set_pref('categories_using_hierarchy', list(cats))
return ConfigWidgetBase.commit(self)
def refresh_gui(self, gui):

View File

@ -147,6 +147,19 @@
</property>
</widget>
</item>
<item row="6" column="0">
<widget class="QCheckBox" name="opt_saved_search_menu_is_hierarchical">
<property name="text">
<string>Show saved searches as a hierarchy</string>
</property>
<property name="toolTip">
<string>&lt;p&gt;Hierarchical items are separated by periods.
Changing this box will also change the 'Saved Searches' box
in Preferences / Look &amp; feel / Tag browser /
Hierarchy and searching&lt;/p&gt;</string>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="tab_2">

View File

@ -443,8 +443,12 @@ class SavedSearchBoxMixin: # {{{
partial(self.do_saved_search_edit, None))
m.addSeparator()
db = self.current_db
folder_icon = QIcon.ic('folder_saved_search.png')
search_icon = QIcon.ic('search.png')
use_hierarchy = 'search' in db.new_api.pref('categories_using_hierarchy', [])
submenus = {}
for name in sorted(db.saved_search_names(), key=lambda x: primary_sort_key(x.strip())):
if use_hierarchy:
components = tuple(n.strip() for n in name.split('.'))
hierarchy = components[:-1]
last = components[-1]
@ -454,12 +458,14 @@ class SavedSearchBoxMixin: # {{{
hierarchical_prefix = '.'.join(hierarchy[:i])
if hierarchical_prefix not in submenus:
current_menu = current_menu.addMenu(c)
current_menu.setIcon(QIcon.ic('folder_saved_search.png'))
current_menu.setIcon(folder_icon)
submenus[hierarchical_prefix] = current_menu
else:
current_menu = submenus[hierarchical_prefix]
ac = current_menu.addAction(last, partial(self.search.set_search_string, 'search:"='+name+'"'))
ac.setIcon(QIcon.ic('search.png'))
else:
ac = m.addAction(name, partial(self.search.set_search_string, 'search:"='+name+'"'))
ac.setIcon(search_icon)
def saved_searches_changed(self, set_restriction=None, recount=True):
self.build_search_restriction_list()