KConfigWidgets

khelpclient.cpp
1 /*
2  This file is part of the KDE libraries
3  SPDX-FileCopyrightText: 2012 David Faure <[email protected]>
4 
5  SPDX-License-Identifier: LGPL-2.0-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
6 */
7 
8 #include "khelpclient.h"
9 
10 #include <KDesktopFile>
11 
12 #include <QCoreApplication>
13 #include <QDesktopServices>
14 #include <QDirIterator>
15 #include <QUrl>
16 
17 void KHelpClient::invokeHelp(const QString &anchor, const QString &_appname)
18 {
19  QString appname;
20  if (_appname.isEmpty()) {
22  } else {
23  appname = _appname;
24  }
25 
26  // Look for the .desktop file of the application
27 
28  // was:
29  // KService::Ptr service(KService::serviceByDesktopName(appname));
30  // if (service)
31  // docPath = service->docPath();
32  // but we don't want to depend on KService here.
33 
34  QString docPath;
36  for (const QString &dir : desktopDirs) {
38  while (it.hasNext()) {
39  const QString desktopPath(it.next());
40  KDesktopFile desktopFile(desktopPath);
41  docPath = desktopFile.readDocPath();
42  break;
43  }
44  }
45 
46  // docPath could be a path or a full URL, I think.
47 
48  QUrl url;
49  if (!docPath.isEmpty()) {
50  url = QUrl(QStringLiteral("help:/")).resolved(QUrl(docPath));
51  } else {
52  if (!anchor.isEmpty()) {
53  if (anchor.contains(QLatin1Char('#'))) {
54  url = QUrl(QStringLiteral("help:/%1/%2").arg(appname, anchor));
55  } else {
56  url = QUrl(QStringLiteral("help:/%1/%2.html").arg(appname, anchor));
57  }
58  } else {
59  url = QUrl(QStringLiteral("help:/%1/index.html").arg(appname));
60  }
61  }
62 
63  // launch khelpcenter, or a browser for URIs not handled by khelpcenter
65 }
bool hasNext() const const
bool openUrl(const QUrl &url)
QString next()
QStringList standardLocations(QStandardPaths::StandardLocation type)
bool isEmpty() const const
QCoreApplication * instance()
QUrl resolved(const QUrl &relative) const const
QString readDocPath() const
void invokeHelp(const QString &anchor=QString(), const QString &appname=QString())
Invokes the KHelpCenter HTML help viewer from docbook sources.
Definition: khelpclient.cpp:17
bool contains(QChar ch, Qt::CaseSensitivity cs) const const
This file is part of the KDE documentation.
Documentation copyright © 1996-2023 The KDE developers.
Generated on Sun Dec 3 2023 04:14:26 by doxygen 1.8.17 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.