From 51b7f63c006502e496057c5da62f67e0997a317d Mon Sep 17 00:00:00 2001 From: Jean-Francois Dockes Date: Mon, 15 Dec 2014 16:13:30 +0100 Subject: [PATCH] add keyboard accelerators for the result table Ctrl+r -> switch focus to results. Ctrl+o Open current result. Ctrl+Shft+o Open and close recoll. Ctrl+d preview (draft) --- src/qtgui/rclmain_w.cpp | 6 ++++++ src/qtgui/restable.cpp | 16 ++++++++++++++++ src/qtgui/restable.h | 2 ++ 3 files changed, 24 insertions(+) diff --git a/src/qtgui/rclmain_w.cpp b/src/qtgui/rclmain_w.cpp index cd17efd4..8e605c48 100644 --- a/src/qtgui/rclmain_w.cpp +++ b/src/qtgui/rclmain_w.cpp @@ -1639,10 +1639,14 @@ void RclMain::on_actionShowResultsAsTable_toggled(bool on) restable->setVisible(on); reslist->setVisible(!on); actionSaveResultsAsCSV->setEnabled(on); + static QShortcut tablefocseq(QKeySequence("Ctrl+r"), this); if (!on) { int docnum = restable->getDetailDocNumOrTopRow(); if (docnum >= 0) reslist->resultPageFor(docnum); + disconnect(&tablefocseq, SIGNAL(activated()), + restable, SLOT(takeFocus())); + sSearch->takeFocus(); } else { int docnum = reslist->pageFirstDocNum(); if (docnum >= 0) { @@ -1651,6 +1655,8 @@ void RclMain::on_actionShowResultsAsTable_toggled(bool on) nextPageAction->setEnabled(false); prevPageAction->setEnabled(false); firstPageAction->setEnabled(false); + connect(&tablefocseq, SIGNAL(activated()), + restable, SLOT(takeFocus())); } } diff --git a/src/qtgui/restable.cpp b/src/qtgui/restable.cpp index 81202e4d..13fb46f3 100644 --- a/src/qtgui/restable.cpp +++ b/src/qtgui/restable.cpp @@ -486,6 +486,9 @@ void ResTable::init() tableView->setSelectionBehavior(QAbstractItemView::SelectRows); tableView->setItemDelegate(new ResTableDelegate(this)); tableView->setContextMenuPolicy(Qt::CustomContextMenu); + new QShortcut(QKeySequence("Ctrl+o"), this, SLOT(menuEdit())); + new QShortcut(QKeySequence("Ctrl+Shift+o"), this, SLOT(menuEditAndQuit())); + new QShortcut(QKeySequence("Ctrl+p"), this, SLOT(menuPreview())); connect(tableView, SIGNAL(customContextMenuRequested(const QPoint&)), this, SLOT(createPopupMenu(const QPoint&))); @@ -651,6 +654,12 @@ void ResTable::on_tableView_entered(const QModelIndex& index) onTableView_currentChanged(index); } +void ResTable::takeFocus() +{ +// LOGDEB(("resTable: take focus\n")); + tableView->setFocus(Qt::ShortcutFocusReason); +} + void ResTable::setDocSource(RefCntr nsource) { LOGDEB(("ResTable::setDocSource\n")); @@ -908,6 +917,13 @@ void ResTable::menuEdit() if (m_detaildocnum >= 0) emit editRequested(m_detaildoc); } +void ResTable::menuEditAndQuit() +{ + if (m_detaildocnum >= 0) { + emit editRequested(m_detaildoc); + m_rclmain->fileExit(); + } +} void ResTable::menuOpenWith(QAction *act) { if (act == 0) diff --git a/src/qtgui/restable.h b/src/qtgui/restable.h index cb88237e..9e19ea28 100644 --- a/src/qtgui/restable.h +++ b/src/qtgui/restable.h @@ -137,6 +137,7 @@ public slots: virtual void menuSaveToFile(); virtual void menuSaveSelection(); virtual void menuEdit(); + virtual void menuEditAndQuit(); virtual void menuOpenWith(QAction *); virtual void menuCopyFN(); virtual void menuCopyURL(); @@ -152,6 +153,7 @@ public slots: virtual void saveAsCSV(); virtual void linkWasClicked(const QUrl&); virtual void makeRowVisible(int row); + virtual void takeFocus(); signals: void docPreviewClicked(int, Rcl::Doc, int);