Get quickview working

This commit is contained in:
Kovid Goyal 2023-12-22 14:23:37 +05:30
parent fa716c903c
commit b21e8de0a4
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
4 changed files with 26 additions and 8 deletions

View File

@ -28,17 +28,15 @@ def get_quickview_action_plugin():
class ShowQuickviewAction(InterfaceAction): class ShowQuickviewAction(InterfaceAction):
name = 'Quickview' name = 'Quickview'
action_spec = (_('Quickview'), 'quickview.png', None, None) action_spec = (_('Quickview'), 'quickview.png', _('Toggle Quickview'), 'Q')
dont_add_to = frozenset(('context-menu-device',)) dont_add_to = frozenset(('context-menu-device',))
action_type = 'current' action_type = 'current'
current_instance = None current_instance = None
def genesis(self): def genesis(self):
self.gui.keyboard.register_shortcut('Toggle Quickview', _('Toggle Quickview'), self.menuless_qaction.changed.connect(self.update_layout_button)
description=_('Open/close the Quickview panel/window'), self.qaction.triggered.connect(self.toggle_quick_view)
default_keys=('Q',), action=self.qaction,
group=self.action_spec[0])
self.focus_action = QAction(self.gui) self.focus_action = QAction(self.gui)
self.gui.addAction(self.focus_action) self.gui.addAction(self.focus_action)
self.gui.keyboard.register_shortcut('Focus To Quickview', _('Focus to Quickview'), self.gui.keyboard.register_shortcut('Focus To Quickview', _('Focus to Quickview'),
@ -73,13 +71,26 @@ class ShowQuickviewAction(InterfaceAction):
group=self.action_spec[0]) group=self.action_spec[0])
self.search_action.triggered.connect(self.search_quickview) self.search_action.triggered.connect(self.search_quickview)
def update_layout_button(self):
self.qv_button.update_shortcut(self.menuless_qaction)
def toggle_quick_view(self):
if self.current_instance and not self.current_instance.is_closed:
self._hide_quickview()
else:
self._show_quickview()
@property @property
def qv_button(self): def qv_button(self):
return self.gui.layout_container.quick_view_button return self.gui.layout_container.quick_view_button
def initialization_complete(self): def initialization_complete(self):
set_quickview_action_plugin(self) set_quickview_action_plugin(self)
self.qv_button.update_shortcut(self.qaction) self.qv_button.toggled.connect(self.toggle_quick_view)
def show_on_startup(self):
self.gui.hide_panel('quick_view')
self._show_quickview()
def _hide_quickview(self): def _hide_quickview(self):
''' '''
@ -103,7 +114,9 @@ class ShowQuickviewAction(InterfaceAction):
_('Quickview is not available for books ' _('Quickview is not available for books '
'on the device.')).exec() 'on the device.')).exec()
return return
self.qv_button.blockSignals(True)
self.qv_button.set_state_to_hide() self.qv_button.set_state_to_hide()
self.qv_button.blockSignals(False)
index = self.gui.library_view.currentIndex() index = self.gui.library_view.currentIndex()
self.current_instance = Quickview(self.gui, index, self.qaction.shortcut(), self.current_instance = Quickview(self.gui, index, self.qaction.shortcut(),
focus_booklist_shortcut=self.focus_bl_action.shortcut()) focus_booklist_shortcut=self.focus_bl_action.shortcut())

View File

@ -320,6 +320,8 @@ class CentralContainer(QWidget):
def layout_button_toggled(self): def layout_button_toggled(self):
if not self.ignore_button_toggles: if not self.ignore_button_toggles:
b = self.sender() b = self.sender()
if b.name == 'quick_view':
return
self.set_visibility_of(b.name, b.isChecked()) self.set_visibility_of(b.name, b.isChecked())
self.relayout() self.relayout()

View File

@ -863,9 +863,10 @@ class Quickview(QDialog, Ui_Quickview):
self._reject() self._reject()
def _reject(self): def _reject(self):
gui = self.gui
if self.is_pane: if self.is_pane:
self.gui.hide_panel('quick_view') gui.hide_panel('quick_view')
self.gui.library_view.setFocus(Qt.FocusReason.ActiveWindowFocusReason) gui.library_view.setFocus(Qt.FocusReason.ActiveWindowFocusReason)
self._close() self._close()
QDialog.reject(self) QDialog.reject(self)

View File

@ -437,6 +437,8 @@ class Main(MainWindow, MainWindowMixin, DeviceMixin, EmailMixin, # {{{
def post_initialize_actions(self): def post_initialize_actions(self):
# Various post-initialization actions after an event loop tick # Various post-initialization actions after an event loop tick
if self.layout_container.is_visible.quick_view:
self.iactions['Quickview'].show_on_startup()
self.listener.start_listening() self.listener.start_listening()
self.start_smartdevice() self.start_smartdevice()
# Collect cycles now # Collect cycles now