1
0
mirror of https://github.com/altlinux/admc.git synced 2025-03-31 02:50:17 +03:00

improve how help pages are selected

This commit is contained in:
Dmitry Degtyarev 2021-08-13 17:14:24 +04:00
parent 7bdf381945
commit 7a8de29a5a
2 changed files with 34 additions and 5 deletions

View File

@ -23,16 +23,21 @@
#include <QHelpContentWidget>
#include <QHelpEngine>
#include <QHelpIndexWidget>
#include <QHelpContentModel>
HelpBrowser::HelpBrowser(QHelpEngine *help_engine_arg) {
help_engine = help_engine_arg;
// Change source when links are activate in help
// engine's content and index widgets. Calling
// setSource() causes a call to loadResource()
// NOTE: use currentChanged() from selection model
// instead of linkActivated() signal so that can use
// single-click instead of double-click and also switch
// pages by keyboard navigation
QHelpContentWidget *content_widget = help_engine->contentWidget();
QItemSelectionModel *selection_model = content_widget->selectionModel();
connect(
help_engine->contentWidget(), &QHelpContentWidget::linkActivated,
this, QOverload<const QUrl &>::of(&HelpBrowser::setSource));
selection_model, &QItemSelectionModel::currentChanged,
this, &HelpBrowser::on_content_clicked);
connect(
help_engine->indexWidget(), &QHelpIndexWidget::linkActivated,
this, QOverload<const QUrl &>::of(&HelpBrowser::setSource));
@ -46,3 +51,25 @@ QVariant HelpBrowser::loadResource(int type, const QUrl &name) {
return QVariant(file_data);
}
void HelpBrowser::on_content_clicked(const QModelIndex &index) {
const QHelpContentWidget *content_widget = help_engine->contentWidget();
if (content_widget == nullptr) {
return;
}
const QHelpContentModel *contentModel = qobject_cast<QHelpContentModel*>(content_widget->model());
if (contentModel == nullptr) {
return;
}
const QHelpContentItem *item = contentModel->contentItemAt(index);
if (item == nullptr) {
return;
}
const QUrl url = item->url();
if (url.isValid()) {
setSource(url);
}
}

View File

@ -42,6 +42,8 @@ public:
private:
QHelpEngine *help_engine;
void on_content_clicked(const QModelIndex &index);
};
#endif /* HELP_BROWSER_H */