testing
This commit is contained in:
@@ -51,10 +51,15 @@ DiscordPage::DiscordPage(QWidget *parent) : QWebEnginePage(parent) {
|
||||
settings()->setAttribute(QWebEngineSettings::JavascriptCanOpenWindows, false);
|
||||
settings()->setAttribute(QWebEngineSettings::ScrollAnimatorEnabled, true);
|
||||
|
||||
injectScriptFile("qwebchannel.js", ":/qtwebchannel/qwebchannel.js");
|
||||
|
||||
setUrl(QUrl("https://discord.com/app"));
|
||||
|
||||
setWebChannel(new QWebChannel(this));
|
||||
webChannel()->registerObject("webclass", &m_webClass);
|
||||
|
||||
injectScriptFile("userscript.js", ":/assets/userscript.js");
|
||||
injectScriptFile("vencord.js", ":/assets/vencord.js");
|
||||
injectScriptFile("vencord.js", ":/assets/vencord/vencord.js");
|
||||
|
||||
injectScriptText("version.js",
|
||||
QString("window.discordScreenaudioVersion = '%1';")
|
||||
@@ -115,7 +120,9 @@ DiscordPage::DiscordPage(QWidget *parent) : QWebEnginePage(parent) {
|
||||
&DiscordPage::startStream);
|
||||
}
|
||||
|
||||
void DiscordPage::injectScriptText(QString name, QString content) {
|
||||
void DiscordPage::injectScriptText(
|
||||
QString name, QString content,
|
||||
QWebEngineScript::InjectionPoint injectionPoint) {
|
||||
qDebug(mainLog) << "Injecting " << name;
|
||||
|
||||
QWebEngineScript script;
|
||||
@@ -123,20 +130,22 @@ void DiscordPage::injectScriptText(QString name, QString content) {
|
||||
script.setSourceCode(content);
|
||||
script.setName(name);
|
||||
script.setWorldId(QWebEngineScript::MainWorld);
|
||||
script.setInjectionPoint(QWebEngineScript::DocumentCreation);
|
||||
script.setInjectionPoint(injectionPoint);
|
||||
script.setRunsOnSubFrames(false);
|
||||
|
||||
scripts().insert(script);
|
||||
}
|
||||
|
||||
void DiscordPage::injectScriptFile(QString name, QString source) {
|
||||
void DiscordPage::injectScriptFile(
|
||||
QString name, QString source,
|
||||
QWebEngineScript::InjectionPoint injectionPoint) {
|
||||
QFile file(source);
|
||||
|
||||
if (!file.open(QIODevice::ReadOnly)) {
|
||||
qFatal("Failed to load %s with error: %s", source.toLatin1().constData(),
|
||||
file.errorString().toLatin1().constData());
|
||||
} else {
|
||||
injectScriptText(name, file.readAll());
|
||||
injectScriptText(name, file.readAll(), injectionPoint);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
#include "streamdialog.h"
|
||||
#include "virtmic.h"
|
||||
#include "webclass.h"
|
||||
|
||||
#ifdef KXMLGUI
|
||||
#include <KActionCollection>
|
||||
@@ -12,6 +13,7 @@
|
||||
#include <QProcess>
|
||||
#include <QWebEngineFullScreenRequest>
|
||||
#include <QWebEnginePage>
|
||||
#include <QWebEngineScript>
|
||||
|
||||
class DiscordPage : public QWebEnginePage {
|
||||
Q_OBJECT
|
||||
@@ -22,6 +24,7 @@ public:
|
||||
private:
|
||||
StreamDialog m_streamDialog;
|
||||
QProcess m_virtmicProcess;
|
||||
WebClass m_webClass;
|
||||
#ifdef KXMLGUI
|
||||
KHelpMenu *m_helpMenu;
|
||||
#ifdef KGLOBALACCEL
|
||||
@@ -37,8 +40,12 @@ private:
|
||||
javaScriptConsoleMessage(QWebEnginePage::JavaScriptConsoleMessageLevel level,
|
||||
const QString &message, int lineNumber,
|
||||
const QString &sourceID) override;
|
||||
void injectScriptText(QString name, QString content);
|
||||
void injectScriptFile(QString name, QString source);
|
||||
void injectScriptText(QString name, QString content,
|
||||
QWebEngineScript::InjectionPoint injectionPoint =
|
||||
QWebEngineScript::DocumentCreation);
|
||||
void injectScriptFile(QString name, QString source,
|
||||
QWebEngineScript::InjectionPoint injectionPoint =
|
||||
QWebEngineScript::DocumentCreation);
|
||||
void stopVirtmic();
|
||||
void startVirtmic(QString target);
|
||||
void toggleMute();
|
||||
|
||||
35
src/webclass.cpp
Normal file
35
src/webclass.cpp
Normal file
@@ -0,0 +1,35 @@
|
||||
#include "webclass.h"
|
||||
|
||||
#include <QDesktopServices>
|
||||
#include <QUrl>
|
||||
|
||||
QVariant WebClass::vencordSend(QString event, QVariantList args) {
|
||||
if (event == "VencordGetRepo") {
|
||||
return true;
|
||||
}
|
||||
if (event == "VencordGetSettingsDir") {
|
||||
return "~/.config/discord-screenaudio/vencord";
|
||||
}
|
||||
if (event == "VencordGetQuickCss") {
|
||||
// TODO
|
||||
return "";
|
||||
}
|
||||
if (event == "VencordGetSettings") {
|
||||
return m_vencordSettings;
|
||||
}
|
||||
if (event == "VencordSetSettings") {
|
||||
m_vencordSettings = args[0].toString();
|
||||
return true;
|
||||
}
|
||||
if (event == "VencordGetUpdates") {
|
||||
return QVariantMap{{"ok", true}, {"value", QVariantList()}};
|
||||
}
|
||||
if (event == "VencordOpenExternal") {
|
||||
QDesktopServices::openUrl(QUrl(args[0].toString()));
|
||||
return true;
|
||||
}
|
||||
if (event == "VencordOpenQuickCss") {
|
||||
return true;
|
||||
}
|
||||
assert(false);
|
||||
}
|
||||
13
src/webclass.h
Normal file
13
src/webclass.h
Normal file
@@ -0,0 +1,13 @@
|
||||
#pragma once
|
||||
|
||||
#include <QObject>
|
||||
#include <QVariant>
|
||||
|
||||
class WebClass : public QObject {
|
||||
Q_OBJECT
|
||||
public slots:
|
||||
QVariant vencordSend(QString event, QVariantList args);
|
||||
|
||||
private:
|
||||
QString m_vencordSettings;
|
||||
};
|
||||
Reference in New Issue
Block a user