Fix Qt warning:

Please register the custom scheme 'command+output' via QWebEngineUrlScheme::registerScheme() before installing the custom scheme handler.
pull/2/head
Vadim vtroshchinskiy 2023-10-19 13:39:37 +02:00
parent 11c4bf856b
commit d9df909b99
2 changed files with 17 additions and 38 deletions

View File

@ -150,28 +150,12 @@ MainWindow::MainWindow(QWidget *parent)
connect(button,SIGNAL(clicked()),this,SLOT(slotCreateTerminal()));
connect(m_webBar,SIGNAL(returnPressed()),this,SLOT(slotWebBarReturnPressed()));
QWebEngineUrlScheme schemeCommand("command");
schemeCommand.setSyntax(QWebEngineUrlScheme::Syntax::Path);
schemeCommand.setDefaultPort(0);
schemeCommand.setFlags(QWebEngineUrlScheme::LocalScheme);
QWebEngineUrlScheme::registerScheme(schemeCommand);
QWebEngineUrlScheme schemeCommandOut("command+output");
schemeCommandOut.setSyntax(QWebEngineUrlScheme::Syntax::Path);
schemeCommandOut.setDefaultPort(0);
schemeCommandOut.setFlags(QWebEngineUrlScheme::LocalScheme);
QWebEngineUrlScheme::registerScheme(schemeCommandOut);
QWebEngineUrlScheme schemeCommandConfirm("command+confirm");
schemeCommandConfirm.setSyntax(QWebEngineUrlScheme::Syntax::Path);
schemeCommandConfirm.setDefaultPort(0);
schemeCommandConfirm.setFlags(QWebEngineUrlScheme::LocalScheme);
QWebEngineUrlScheme::registerScheme(schemeCommandConfirm);
OGBrowserUrlHandlerCommand *cmdHandler = new OGBrowserUrlHandlerCommand(this);
connect(cmdHandler, &OGBrowserUrlHandlerCommand::command, this, &MainWindow::commandQueued);
// All schemes need registering first, then their handlers.
registerScheme("command");
registerScheme("command+output");
registerScheme("command+confirm");
registerScheme("command+confirm+output");
registerScheme("command+output+confirm");
registerHandler("command", false, false);
@ -181,22 +165,6 @@ MainWindow::MainWindow(QWidget *parent)
registerHandler("command+output+confirm", true, true);
/*
QWebEngineProfile::defaultProfile()->installUrlSchemeHandler("command", cmdHandler);
OGBrowserUrlHandlerCommand *cmdOutHandler = new OGBrowserUrlHandlerCommand(this);
connect(cmdOutHandler, &OGBrowserUrlHandlerCommand::command, this, &MainWindow::commandQueued);
cmdOutHandler->setReturnOutput(true);
QWebEngineProfile::defaultProfile()->installUrlSchemeHandler("command+output", cmdOutHandler);
OGBrowserUrlHandlerCommand *cmdConfHandler = new OGBrowserUrlHandlerCommand(this);
connect(cmdConfHandler, &OGBrowserUrlHandlerCommand::command, this, &MainWindow::commandQueued);
cmdConfHandler->setAskConfirmation(true);
QWebEngineProfile::defaultProfile()->installUrlSchemeHandler("command+confirm", cmdConfHandler);
*/
QStringList arguments=QCoreApplication::arguments();
m_webBar->setText(arguments.at(1));
m_web->load(QUrl(arguments.at(1)));
@ -220,6 +188,16 @@ MainWindow::~MainWindow()
delete m_logstream;
}
void MainWindow::registerScheme(const QString &name) {
qInfo() << "Registering" << name;
QWebEngineUrlScheme scheme(name.toLatin1());
scheme.setSyntax(QWebEngineUrlScheme::Syntax::Path);
scheme.setDefaultPort(0);
scheme.setFlags(QWebEngineUrlScheme::LocalScheme);
QWebEngineUrlScheme::registerScheme(scheme);
}
void MainWindow::registerHandler(const QString &commandName, bool confirm, bool returnOutput) {
OGBrowserUrlHandlerCommand *handler = new OGBrowserUrlHandlerCommand(this);

View File

@ -78,6 +78,7 @@ class MainWindow : public QMainWindow
private:
bool isAdmin() const { return m_is_admin; }
void registerScheme(const QString &name);
void registerHandler(const QString &name, bool confirm, bool output);
bool m_is_admin{false};