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:
parent
7bdf381945
commit
7a8de29a5a
@ -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);
|
||||
}
|
||||
}
|
||||
|
@ -42,6 +42,8 @@ public:
|
||||
|
||||
private:
|
||||
QHelpEngine *help_engine;
|
||||
|
||||
void on_content_clicked(const QModelIndex &index);
|
||||
};
|
||||
|
||||
#endif /* HELP_BROWSER_H */
|
||||
|
Loading…
x
Reference in New Issue
Block a user