Advanced search dialog: Remember the last focused field in the search by ttiel/authors tab

This commit is contained in:
Kovid Goyal 2019-06-18 11:38:49 +05:30
parent 06d2569fa5
commit 424de7f8fe
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C

View File

@ -6,7 +6,7 @@ import re, copy
from datetime import date from datetime import date
from PyQt5.Qt import ( from PyQt5.Qt import (
QDialog, QDialogButtonBox, QFrame, QLabel, QComboBox, QIcon, QVBoxLayout, QDialog, QDialogButtonBox, QFrame, QLabel, QComboBox, QIcon, QVBoxLayout, Qt,
QSize, QHBoxLayout, QTabWidget, QLineEdit, QWidget, QGroupBox, QFormLayout, QSize, QHBoxLayout, QTabWidget, QLineEdit, QWidget, QGroupBox, QFormLayout,
QSpinBox, QRadioButton QSpinBox, QRadioButton
) )
@ -115,11 +115,13 @@ def create_simple_tab(self, db):
l.setFieldGrowthPolicy(l.AllNonFixedFieldsGrow) l.setFieldGrowthPolicy(l.AllNonFixedFieldsGrow)
self.title_box = le = QLineEdit(w) self.title_box = le = QLineEdit(w)
le.setObjectName('title_box')
le.setPlaceholderText(_('The title to search for')) le.setPlaceholderText(_('The title to search for'))
l.addRow(_('&Title:'), le) l.addRow(_('&Title:'), le)
self.authors_box = le = EditWithComplete(self) self.authors_box = le = EditWithComplete(self)
le.lineEdit().setPlaceholderText(_('The author to search for')) le.lineEdit().setPlaceholderText(_('The author to search for'))
le.setObjectName('authors_box')
le.setEditText('') le.setEditText('')
le.set_separator('&') le.set_separator('&')
le.set_space_before_sep(True) le.set_space_before_sep(True)
@ -129,6 +131,7 @@ def create_simple_tab(self, db):
self.series_box = le = EditWithComplete(self) self.series_box = le = EditWithComplete(self)
le.lineEdit().setPlaceholderText(_('The series to search for')) le.lineEdit().setPlaceholderText(_('The series to search for'))
le.setObjectName('series_box')
all_series = sorted((x[1] for x in db.all_series()), key=sort_key) all_series = sorted((x[1] for x in db.all_series()), key=sort_key)
le.set_separator(None) le.set_separator(None)
le.update_items_cache(all_series) le.update_items_cache(all_series)
@ -136,6 +139,7 @@ def create_simple_tab(self, db):
l.addRow(_('&Series:'), le) l.addRow(_('&Series:'), le)
self.tags_box = le = EditWithComplete(self) self.tags_box = le = EditWithComplete(self)
le.setObjectName('tags_box')
le.lineEdit().setPlaceholderText(_('The tags to search for')) le.lineEdit().setPlaceholderText(_('The tags to search for'))
self.tags_box.update_items_cache(db.all_tags()) self.tags_box.update_items_cache(db.all_tags())
l.addRow(_('Ta&gs:'), le) l.addRow(_('Ta&gs:'), le)
@ -146,6 +150,7 @@ def create_simple_tab(self, db):
self.general_combo.addItems(searchables) self.general_combo.addItems(searchables)
self.box_last_values = copy.deepcopy(box_values) self.box_last_values = copy.deepcopy(box_values)
self.general_box = le = QLineEdit(self) self.general_box = le = QLineEdit(self)
le.setObjectName('general_box')
l.addRow(self.general_combo, le) l.addRow(self.general_combo, le)
if self.box_last_values: if self.box_last_values:
for k,v in self.box_last_values.items(): for k,v in self.box_last_values.items():
@ -256,11 +261,19 @@ class SearchDialog(QDialog):
self.tab_widget.setCurrentIndex(current_tab) self.tab_widget.setCurrentIndex(current_tab)
if current_tab == 1: if current_tab == 1:
self.matchkind.setCurrentIndex(last_matchkind) self.matchkind.setCurrentIndex(last_matchkind)
focused_field = gprefs.get('advanced_search_simple_tab_focused_field', 'title_box')
w = getattr(self, focused_field, None)
if w is not None:
w.setFocus(Qt.OtherFocusReason)
self.resize(self.sizeHint()) self.resize(self.sizeHint())
def save_state(self): def save_state(self):
gprefs['advanced search dialog current tab'] = \ gprefs['advanced search dialog current tab'] = \
self.tab_widget.currentIndex() self.tab_widget.currentIndex()
if self.tab_widget.currentIndex() == 1:
fw = self.tab_widget.focusWidget().objectName()
if fw:
gprefs.set('advanced_search_simple_tab_focused_field', fw)
def accept(self): def accept(self):
self.save_state() self.save_state()