Add F1 map for shortcut help
This commit is contained in:
parent
ae2b4577c3
commit
8a50e63ca2
@ -19,6 +19,7 @@
|
||||
|
||||
#include <qevent.h>
|
||||
#include <qwidget.h>
|
||||
#include <QTabWidget>
|
||||
|
||||
#include "recoll.h"
|
||||
#include "rclhelp.h"
|
||||
@ -40,34 +41,54 @@ HelpClient::HelpClient(QObject *parent, const char *)
|
||||
bool HelpClient::eventFilter(QObject *obj, QEvent *event)
|
||||
{
|
||||
static time_t last_start;
|
||||
if (event->type() == QEvent::KeyPress ||
|
||||
event->type() == QEvent::ShortcutOverride) {
|
||||
// LOGDEB("HelpClient::eventFilter: " << ((int)event->type()) << "\n" );
|
||||
if (event->type() != QEvent::KeyPress &&
|
||||
event->type() != QEvent::ShortcutOverride) {
|
||||
return false;
|
||||
}
|
||||
QKeyEvent *ke = static_cast<QKeyEvent *>(event);
|
||||
if (ke->key() == Qt::Key_F1 || ke->key() == Qt::Key_Help) {
|
||||
if (obj->isWidgetType()) {
|
||||
QWidget *widget = static_cast<QWidget *>(obj)->focusWidget();
|
||||
map<string, string>::iterator it = helpmap.end();
|
||||
while (widget) {
|
||||
it = helpmap.find((const char *)widget->objectName().toUtf8());
|
||||
if (ke->key() != Qt::Key_F1 && ke->key() != Qt::Key_Help) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!obj->isWidgetType()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
QWidget *widget = dynamic_cast<QWidget *>(obj);
|
||||
if (nullptr == widget) {
|
||||
// ??
|
||||
return false;
|
||||
}
|
||||
widget = widget->focusWidget();
|
||||
auto it = helpmap.end();
|
||||
std::string onm;
|
||||
while (widget) {
|
||||
QTabWidget *tw = dynamic_cast<QTabWidget*>(widget);
|
||||
if (nullptr != tw) {
|
||||
onm = qs2utf8s(tw->currentWidget()->objectName());
|
||||
LOGDEB1("HelpClient: tab name " << onm << "\n");
|
||||
it = helpmap.find(onm);
|
||||
if (it != helpmap.end())
|
||||
break;
|
||||
}
|
||||
onm = qs2utf8s(widget->objectName());
|
||||
LOGDEB1("HelpClient: object name " << onm << "\n");
|
||||
it = helpmap.find(onm);
|
||||
if (it != helpmap.end())
|
||||
break;
|
||||
widget = widget->parentWidget();
|
||||
}
|
||||
if (time(0) - last_start > 5) {
|
||||
last_start = time(0);
|
||||
if (it != helpmap.end()) {
|
||||
LOGDEB("HelpClient::eventFilter: " << (it->first) << "->" << (it->second) << "\n" );
|
||||
widget = widget->parentWidget();
|
||||
}
|
||||
if (time(0) - last_start > 5) {
|
||||
last_start = time(0);
|
||||
if (it != helpmap.end()) {
|
||||
LOGDEB("HelpClient::eventFilter: " << it->first << "->" << it->second << "\n");
|
||||
startManual(it->second);
|
||||
} else {
|
||||
LOGDEB("HelpClient::eventFilter: no help section\n" );
|
||||
} else {
|
||||
LOGDEB("HelpClient::eventFilter: no help section\n");
|
||||
startManual("");
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@ -20,7 +20,7 @@
|
||||
<item>
|
||||
<widget class="QTabWidget" name="tabWidget">
|
||||
<property name="currentIndex">
|
||||
<number>0</number>
|
||||
<number>1</number>
|
||||
</property>
|
||||
<widget class="QWidget" name="tab">
|
||||
<attribute name="title">
|
||||
@ -581,6 +581,13 @@
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
||||
<item>
|
||||
<widget class="QLabel" name="label_2">
|
||||
<property name="text">
|
||||
<string>Use F1 to access the manual</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer">
|
||||
<property name="orientation">
|
||||
@ -1520,7 +1527,7 @@ May be slow for big documents.</string>
|
||||
<resources/>
|
||||
<connections/>
|
||||
<buttongroups>
|
||||
<buttongroup name="buttonGroup"/>
|
||||
<buttongroup name="buttonGroup_2"/>
|
||||
<buttongroup name="buttonGroup"/>
|
||||
</buttongroups>
|
||||
</ui>
|
||||
|
||||
@ -57,6 +57,7 @@
|
||||
#include "rclmain_w.h"
|
||||
#include "ptrans_w.h"
|
||||
#include "scbase.h"
|
||||
#include "rclhelp.h"
|
||||
|
||||
void UIPrefsDialog::init()
|
||||
{
|
||||
@ -102,6 +103,9 @@ void UIPrefsDialog::init()
|
||||
connect(ssNoCompleteCB, SIGNAL(toggled(bool)),
|
||||
ssSearchOnCompleteCB, SLOT(setDisabled(bool)));
|
||||
connect(resetscPB, SIGNAL(clicked()), this, SLOT(resetShortcuts()));
|
||||
|
||||
(void)new HelpClient(this);
|
||||
HelpClient::installMap("sctab", "RCL.SEARCH.GUI.SHORTCUTS");
|
||||
|
||||
setFromPrefs();
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user