diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 14f9f61..4b43cd4 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -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); diff --git a/src/mainwindow.h b/src/mainwindow.h index eb44531..e81c9be 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -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};