Add delete buttons to saved searches, clear history on exit
- Saved searches now have an x button to remove them individually - Session cache mode clears search history but keeps saved searches
This commit is contained in:
parent
043f36ef99
commit
a3e114c5b3
@ -1371,6 +1371,7 @@ class BooruApp(QMainWindow):
|
|||||||
if self._db.get_setting_bool("clear_cache_on_exit"):
|
if self._db.get_setting_bool("clear_cache_on_exit"):
|
||||||
from ..core.cache import clear_cache
|
from ..core.cache import clear_cache
|
||||||
clear_cache(clear_images=True, clear_thumbnails=True)
|
clear_cache(clear_images=True, clear_thumbnails=True)
|
||||||
|
self._db.clear_search_history()
|
||||||
self._db.close()
|
self._db.close()
|
||||||
super().closeEvent(event)
|
super().closeEvent(event)
|
||||||
|
|
||||||
|
|||||||
@ -121,8 +121,29 @@ class SearchBar(QWidget):
|
|||||||
saved_header.setEnabled(False)
|
saved_header.setEnabled(False)
|
||||||
saved_actions = {}
|
saved_actions = {}
|
||||||
for sid, name, query in saved:
|
for sid, name, query in saved:
|
||||||
a = menu.addAction(f" {name} ({query})")
|
row = QWidget()
|
||||||
saved_actions[id(a)] = (sid, query)
|
row_layout = QHBoxLayout(row)
|
||||||
|
row_layout.setContentsMargins(8, 2, 4, 2)
|
||||||
|
label = QPushButton(f"{name} ({query})")
|
||||||
|
label.setFlat(True)
|
||||||
|
label.setStyleSheet("text-align: left; border: none; padding: 2px 4px;")
|
||||||
|
delete_btn = QPushButton("x")
|
||||||
|
delete_btn.setFixedWidth(20)
|
||||||
|
delete_btn.setFlat(True)
|
||||||
|
delete_btn.setToolTip("Remove saved search")
|
||||||
|
row_layout.addWidget(label, stretch=1)
|
||||||
|
row_layout.addWidget(delete_btn)
|
||||||
|
|
||||||
|
wa = QWidgetAction(menu)
|
||||||
|
wa.setDefaultWidget(row)
|
||||||
|
menu.addAction(wa)
|
||||||
|
|
||||||
|
label.clicked.connect(lambda checked, q=query, m=menu: (
|
||||||
|
self._input.setText(q), self._do_search(), m.close()
|
||||||
|
))
|
||||||
|
delete_btn.clicked.connect(lambda checked, s=sid, m=menu: (
|
||||||
|
self._db.remove_saved_search(s), m.close(), self._show_history_menu()
|
||||||
|
))
|
||||||
menu.addSeparator()
|
menu.addSeparator()
|
||||||
|
|
||||||
# History
|
# History
|
||||||
@ -177,10 +198,6 @@ class SearchBar(QWidget):
|
|||||||
|
|
||||||
if clear_action and action == clear_action:
|
if clear_action and action == clear_action:
|
||||||
self._db.clear_search_history()
|
self._db.clear_search_history()
|
||||||
elif saved and id(action) in saved_actions:
|
|
||||||
_, query = saved_actions[id(action)]
|
|
||||||
self._input.setText(query)
|
|
||||||
self._do_search()
|
|
||||||
|
|
||||||
def _save_current_search(self) -> None:
|
def _save_current_search(self) -> None:
|
||||||
if not self._db:
|
if not self._db:
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user