11#include <QtCore/QFile>
12#include <QtCore/QFileInfo>
13#include <QtCore/QFileSystemWatcher>
14#include <QtCore/QTextStream>
16#include <QtWidgets/QMessageBox>
17#include <QtWidgets/QApplication>
19#include <QtHelp/QHelpEngine>
20#include <QtHelp/QHelpFilterEngine>
21#include <QtHelp/QHelpIndexWidget>
22#include <QtHelp/QHelpLink>
23#include <QtHelp/QHelpSearchQueryWidget>
26# include "stdinlistener_win.h"
33using namespace Qt::StringLiterals;
37 , m_mainWindow(mainWindow)
41 connect(m_mainWindow, &MainWindow::initDone,
45 connect(l, &StdInListener::receivedCommand,
46 this, &RemoteControl::handleCommandString);
50void RemoteControl::handleCommandString(
const QString &cmdString)
53 const QStringList &commands = cmdString.split(u';');
54 for (
const QString &command : commands) {
56 splitInputString(command, cmd, arg);
59 QMessageBox::information(
nullptr, tr(
"Debugging Remote Control"),
60 tr(
"Received Command: %1 %2").arg(cmd, arg));
62 if (cmd ==
"debug"_L1)
63 handleDebugCommand(arg);
64 else if (cmd ==
"show"_L1)
65 handleShowOrHideCommand(arg,
true);
66 else if (cmd ==
"hide"_L1)
67 handleShowOrHideCommand(arg,
false);
68 else if (cmd ==
"quit"_L1)
70 else if (cmd ==
"setsource"_L1)
71 handleSetSourceCommand(arg);
72 else if (cmd ==
"synccontents"_L1)
73 handleSyncContentsCommand();
74 else if (cmd ==
"activatekeyword"_L1)
75 handleActivateKeywordCommand(arg);
76 else if (cmd ==
"activateidentifier"_L1)
77 handleActivateIdentifierCommand(arg);
78 else if (cmd ==
"expandtoc"_L1)
79 handleExpandTocCommand(arg);
80 else if (cmd ==
"setcurrentfilter"_L1)
81 handleSetCurrentFilterCommand(arg);
82 else if (cmd ==
"register"_L1)
83 handleRegisterCommand(arg);
84 else if (cmd ==
"unregister"_L1)
85 handleUnregisterCommand(arg);
89 m_mainWindow->raise();
90 m_mainWindow->activateWindow();
93void RemoteControl::splitInputString(
const QString &input, QString &cmd,
97 QString cmdLine = input.trimmed();
98 int i = cmdLine.indexOf(u' ');
99 cmd = cmdLine.left(i);
100 arg = cmdLine.mid(i + 1);
107 m_debug = arg ==
"on"_L1;
110void RemoteControl::handleShowOrHideCommand(
const QString &arg,
bool show)
113 if (arg.toLower() ==
"contents"_L1)
114 m_mainWindow->setContentsVisible(show);
115 else if (arg.toLower() ==
"index"_L1)
117 else if (arg.toLower() ==
"bookmarks"_L1)
119 else if (arg.toLower() ==
"search"_L1)
125 QCoreApplication::quit();
128void RemoteControl::handleSetSourceCommand(
const QString &arg)
133 if (url.isRelative())
148 m_syncContents =
true;
153void RemoteControl::handleActivateKeywordCommand(
const QString &arg)
158 m_activateKeyword = arg;
160 m_mainWindow->setIndexString(arg);
161 if (!arg.isEmpty()) {
166 if (QHelpSearchQueryWidget *w = se->queryWidget()) {
167 w->collapseExtendedSearch();
168 w->setSearchInput(arg);
180void RemoteControl::handleActivateIdentifierCommand(
const QString &arg)
185 m_activateIdentifier = arg;
187 const auto docs = helpEngine.documentsForIdentifier(arg);
193void RemoteControl::handleExpandTocCommand(
const QString &arg)
199 depth = arg.toInt(&ok);
200 if (!ok || depth < -2)
205 else if (depth != -2)
209void RemoteControl::handleSetCurrentFilterCommand(
const QString &arg)
215 m_currentFilter = arg;
225 const QString &absFileName = QFileInfo(arg).absoluteFilePath();
226 if (helpEngine.registeredDocumentations().
227 contains(QHelpEngineCore::namespaceName(absFileName)))
229 if (helpEngine.registerDocumentation(absFileName))
233void RemoteControl::handleUnregisterCommand(
const QString &arg)
236 const QString &absFileName = QFileInfo(arg).absoluteFilePath();
237 const QString &ns = QHelpEngineCore::namespaceName(absFileName);
238 if (helpEngine.registeredDocumentations().contains(ns)) {
240 if (helpEngine.unregisterDocumentation(ns))
248 if (m_setSource.isValid()) {
250 }
else if (!m_activateKeyword.isEmpty()) {
251 m_mainWindow->setIndexString(m_activateKeyword);
253 }
else if (!m_activateIdentifier.isEmpty()) {
255 helpEngine.documentsForIdentifier(m_activateIdentifier);
258 }
else if (!m_currentFilter.isEmpty()) {
265 Q_ASSERT(m_expandTOC >= -2);
266 if (m_expandTOC != -2)
275 m_currentFilter.clear();
277 m_syncContents =
false;
278 m_activateKeyword.clear();
279 m_activateIdentifier.clear();
QHelpFilterEngine * filterEngine() const
QHelpSearchEngine * searchEngine() const
bool fullTextSearchFallbackEnabled() const
QHelpIndexWidget * indexWidget()
static HelpEngineWrapper & instance()
void setBookmarksVisible(bool visible)
void expandTOC(int depth)
void setIndexVisible(bool visible)
void setSearchVisible(bool visible)
static OpenPagesManager * instance()
Combined button and popup list for selecting options.