show userstyles status on the bottom of the page
This commit is contained in:
83
src/centralwidget.cpp
Normal file
83
src/centralwidget.cpp
Normal file
@@ -0,0 +1,83 @@
|
||||
#include "centralwidget.h"
|
||||
#include "discordpage.h"
|
||||
#include "mainwindow.h"
|
||||
|
||||
#include <QWebEngineNotification>
|
||||
#include <QWebEngineProfile>
|
||||
#include <QWebEngineScript>
|
||||
#include <QWebEngineScriptCollection>
|
||||
#include <QWebEngineSettings>
|
||||
|
||||
CentralWidget::CentralWidget(QWidget *parent) : QWidget(parent) {
|
||||
setStyleSheet("background-color:#202225;");
|
||||
m_layout = new QVBoxLayout(this);
|
||||
m_layout->setMargin(0);
|
||||
m_layout->setSpacing(0);
|
||||
setupWebView();
|
||||
}
|
||||
|
||||
void CentralWidget::setupWebView() {
|
||||
auto page = new DiscordPage(this);
|
||||
|
||||
m_webView = new QWebEngineView(this);
|
||||
m_webView->setPage(page);
|
||||
|
||||
bool useNotifySend = MainWindow::instance()
|
||||
->settings()
|
||||
->value("useNotifySend", false)
|
||||
.toBool();
|
||||
if (m_useKF5Notifications || useNotifySend)
|
||||
QWebEngineProfile::defaultProfile()->setNotificationPresenter(
|
||||
[&](std::unique_ptr<QWebEngineNotification> notificationInfo) {
|
||||
if (useNotifySend) {
|
||||
auto title = notificationInfo->title();
|
||||
auto message = notificationInfo->message();
|
||||
auto image_path =
|
||||
QString("/tmp/discord-screenaudio-%1.png").arg(title);
|
||||
notificationInfo->icon().save(image_path);
|
||||
QProcess::execute("notify-send",
|
||||
{"--icon", image_path, "--app-name",
|
||||
"discord-screenaudio", title, message});
|
||||
} else if (m_useKF5Notifications) {
|
||||
#ifdef KNOTIFICATIONS
|
||||
KNotification *notification =
|
||||
new KNotification("discordNotification");
|
||||
notification->setTitle(notificationInfo->title());
|
||||
notification->setText(notificationInfo->message());
|
||||
notification->setPixmap(
|
||||
QPixmap::fromImage(notificationInfo->icon()));
|
||||
notification->setDefaultAction("View");
|
||||
connect(notification, &KNotification::defaultActivated,
|
||||
[&, notificationInfo = std::move(notificationInfo)]() {
|
||||
notificationInfo->click();
|
||||
show();
|
||||
activateWindow();
|
||||
});
|
||||
notification->sendEvent();
|
||||
#endif
|
||||
}
|
||||
});
|
||||
|
||||
connect(page->userScript(), &UserScript::loadingMessageChanged, this,
|
||||
&CentralWidget::setLoadingIndicator);
|
||||
|
||||
m_layout->addWidget(m_webView);
|
||||
}
|
||||
|
||||
void CentralWidget::setLoadingIndicator(QString text) {
|
||||
if (text != "") {
|
||||
if (m_loadingLabel == nullptr) {
|
||||
m_loadingLabel = new QLabel(this);
|
||||
m_loadingLabel->setMaximumHeight(20);
|
||||
m_loadingLabel->setAlignment(Qt::AlignHCenter);
|
||||
m_layout->addWidget(m_loadingLabel);
|
||||
}
|
||||
m_loadingLabel->setText(text);
|
||||
} else {
|
||||
if (m_loadingLabel != nullptr) {
|
||||
m_layout->removeWidget(m_loadingLabel);
|
||||
m_loadingLabel->deleteLater();
|
||||
m_loadingLabel = nullptr;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user