Add a clear button at the end of all search boxes. Fixes #1696737 [[Opinion] Move the Reset button inside the search field](https://bugs.launchpad.net/calibre/+bug/1696737)

This commit is contained in:
Kovid Goyal 2017-06-08 19:57:31 +05:30
parent be38e09a34
commit 78a9477167
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
4 changed files with 8 additions and 15 deletions

View File

@ -234,10 +234,7 @@ class SchedulerDialog(QDialog):
self.go_button = b = QToolButton(self) self.go_button = b = QToolButton(self)
b.setText(_("Go")) b.setText(_("Go"))
b.clicked.connect(self.search.do_search) b.clicked.connect(self.search.do_search)
self.clear_search_button = cb = QToolButton(self) h.addWidget(s), h.addWidget(b)
self.clear_search_button.clicked.connect(self.search.clear_clicked)
cb.setIcon(QIcon(I('clear_left.png')))
h.addWidget(s), h.addWidget(b), h.addWidget(cb)
self.recipes = RecipesView(self) self.recipes = RecipesView(self)
l.addWidget(self.recipes, 1, 0, 1, 1) l.addWidget(self.recipes, 1, 0, 1, 1)
self.recipe_model = recipe_model self.recipe_model = recipe_model

View File

@ -229,12 +229,6 @@ class SearchBar(QWidget): # {{{
self.search_button.setToolTip( self.search_button.setToolTip(
_('Do Quick Search (you can also press the Enter key)')) _('Do Quick Search (you can also press the Enter key)'))
x = parent.clear_button = QToolButton(self)
x.setIcon(QIcon(I('clear_left.png')))
x.setObjectName("clear_button")
l.addWidget(x)
x.setToolTip(_("Reset Quick Search"))
x = parent.highlight_only_button = QToolButton(self) x = parent.highlight_only_button = QToolButton(self)
x.setIcon(QIcon(I('arrow-down.png'))) x.setIcon(QIcon(I('arrow-down.png')))
l.addWidget(x) l.addWidget(x)

View File

@ -102,11 +102,14 @@ class SearchBox2(QComboBox): # {{{
changed = pyqtSignal() changed = pyqtSignal()
focus_to_library = pyqtSignal() focus_to_library = pyqtSignal()
def __init__(self, parent=None): def __init__(self, parent=None, add_clear_action=True):
QComboBox.__init__(self, parent) QComboBox.__init__(self, parent)
self.normal_background = 'rgb(255, 255, 255, 0%)' self.normal_background = 'rgb(255, 255, 255, 0%)'
self.line_edit = SearchLineEdit(self) self.line_edit = SearchLineEdit(self)
self.setLineEdit(self.line_edit) self.setLineEdit(self.line_edit)
if add_clear_action:
self.clear_action = self.lineEdit().addAction(QIcon(I('clear_left.png')), self.lineEdit().TrailingPosition)
self.clear_action.triggered.connect(self.clear_clicked)
c = self.line_edit.completer() c = self.line_edit.completer()
c.setCompletionMode(c.PopupCompletion) c.setCompletionMode(c.PopupCompletion)
@ -166,6 +169,7 @@ class SearchBox2(QComboBox): # {{{
def clear_clicked(self, *args): def clear_clicked(self, *args):
self.clear() self.clear()
self.setFocus(Qt.OtherFocusReason)
def search_done(self, ok): def search_done(self, ok):
if isinstance(ok, basestring): if isinstance(ok, basestring):
@ -443,7 +447,6 @@ class SearchBoxMixin(object): # {{{
self.search.changed.connect(self.search_box_changed, self.search.changed.connect(self.search_box_changed,
type=Qt.QueuedConnection) type=Qt.QueuedConnection)
self.search.focus_to_library.connect(self.focus_to_library) self.search.focus_to_library.connect(self.focus_to_library)
self.clear_button.clicked.connect(self.search.clear_clicked)
self.advanced_search_button.clicked[bool].connect(self.do_advanced_search) self.advanced_search_button.clicked[bool].connect(self.do_advanced_search)
self.search.clear() self.search.clear()
@ -460,7 +463,6 @@ class SearchBoxMixin(object): # {{{
self.search.setStatusTip(re.sub(r'<\w+>', ' ', self.search.setStatusTip(re.sub(r'<\w+>', ' ',
unicode(self.search.toolTip()))) unicode(self.search.toolTip())))
self.advanced_search_button.setStatusTip(self.advanced_search_button.toolTip()) self.advanced_search_button.setStatusTip(self.advanced_search_button.toolTip())
self.clear_button.setStatusTip(self.clear_button.toolTip())
self.set_highlight_only_button_icon() self.set_highlight_only_button_icon()
self.highlight_only_button.clicked.connect(self.highlight_only_clicked) self.highlight_only_button.clicked.connect(self.highlight_only_clicked)
tt = _('Enable or disable search highlighting.') + '<br><br>' tt = _('Enable or disable search highlighting.') + '<br><br>'
@ -525,7 +527,7 @@ class SavedSearchBoxMixin(object): # {{{
def init_saved_seach_box_mixin(self): def init_saved_seach_box_mixin(self):
self.saved_search.changed.connect(self.saved_searches_changed) self.saved_search.changed.connect(self.saved_searches_changed)
self.clear_button.clicked.connect(self.saved_search.clear) self.search.clear_action.triggered.connect(self.saved_search.clear)
self.save_search_button.clicked.connect( self.save_search_button.clicked.connect(
self.saved_search.save_search_button_clicked) self.saved_search.save_search_button_clicked)
self.copy_search_button.clicked.connect( self.copy_search_button.clicked.connect(

View File

@ -447,7 +447,7 @@ class Main(MainWindow, MainWindowMixin, DeviceMixin, EmailMixin, # {{{
'log will be displayed automatically.')%self.gui_debug, show=True) 'log will be displayed automatically.')%self.gui_debug, show=True)
def esc(self, *args): def esc(self, *args):
self.clear_button.click() self.search.clear()
def shift_esc(self): def shift_esc(self):
self.current_view().setFocus(Qt.OtherFocusReason) self.current_view().setFocus(Qt.OtherFocusReason)