mirror of
https://gitee.com/spark-store-project/spark-web-app-runtime.git
synced 2025-12-15 03:22:05 +08:00
feat: 限制同标题进程单例运行;网页链接调用浏览器打开
使用 DApplication::setSingleInstance,使用 标题_uid 创建进程锁,单例运行时新进程自动退出,并拉起原有进程主窗口显示;重写 QWebEnginePage,createWindow 时若链接与原来不同,则调用浏览器打开 Log: 支持单例运行;支持浏览器打开外部链接;修复访问深度论坛默认语言错误问题
This commit is contained in:
81
spark-webapp-runtime/application.cpp
Normal file
81
spark-webapp-runtime/application.cpp
Normal file
@@ -0,0 +1,81 @@
|
||||
#include "application.h"
|
||||
#include "globaldefine.h"
|
||||
|
||||
#include <DPlatformWindowHandle>
|
||||
#include <DAboutDialog>
|
||||
|
||||
Application::Application(int &argc, char **argv)
|
||||
: DApplication(argc, argv)
|
||||
{
|
||||
loadTranslator();
|
||||
|
||||
setAttribute(Qt::AA_UseHighDpiPixmaps);
|
||||
if (!DPlatformWindowHandle::pluginVersion().isEmpty()) {
|
||||
setAttribute(Qt::AA_DontCreateNativeWidgetSiblings, true);
|
||||
}
|
||||
|
||||
setApplicationVersion(QString(CURRENT_VER));
|
||||
setOrganizationName(ORGANIZATION_NAME); // 添加组织名称,和商店主体的文件夹同在 ~/.local/share/spark-union 文件夹下
|
||||
setApplicationName(APPLICATION_NAME); // 这里不要翻译,否则 ~/.local/share 中文件夹名也会被翻译
|
||||
setProductName(DEFAULT_TITLE);
|
||||
setApplicationDisplayName(DEFAULT_TITLE);
|
||||
setApplicationLicense(" <a href='https://www.gnu.org/licenses/gpl-3.0.html'>GPLv3</a> ");
|
||||
|
||||
initAboutDialog();
|
||||
}
|
||||
|
||||
void Application::handleAboutAction()
|
||||
{
|
||||
if (aboutDialog()) {
|
||||
DApplication::handleAboutAction();
|
||||
return;
|
||||
}
|
||||
|
||||
initAboutDialog();
|
||||
DApplication::handleAboutAction();
|
||||
}
|
||||
|
||||
void Application::initAboutDialog()
|
||||
{
|
||||
// Customized DAboutDialog
|
||||
DAboutDialog *dialog = new DAboutDialog(activeWindow());
|
||||
// WindowIcon
|
||||
dialog->setWindowIcon(QIcon(":/images/spark-webapp-runtime.svg"));
|
||||
// ProductIcon
|
||||
dialog->setProductIcon(QIcon(":/images/spark-webapp-runtime.svg"));
|
||||
// ProductName
|
||||
dialog->setProductName(productName());
|
||||
// Version
|
||||
dialog->setVersion(translate("DAboutDialog", "Version: %1").arg(applicationVersion()));
|
||||
// CompanyLogo
|
||||
dialog->setCompanyLogo(QPixmap(":/images/Logo-Spark.png"));
|
||||
// Description
|
||||
|
||||
QString szDefaultDesc = QString("<a href='https://gitee.com/deepin-community-store/spark-web-app-runtime'><span style='font-size:12pt;font-weight:500;'>%1</span></a><br/>"
|
||||
"<span style='font-size:12pt;'>%2</span>")
|
||||
.arg(DEFAULT_TITLE)
|
||||
.arg(QObject::tr("Presented By Spark developers # HadesStudio"));
|
||||
|
||||
dialog->setDescription(szDefaultDesc);
|
||||
// WebsiteName
|
||||
dialog->setWebsiteName("Spark Project");
|
||||
// WebsiteLink
|
||||
dialog->setWebsiteLink("https://gitee.com/deepin-community-store/");
|
||||
// License
|
||||
dialog->setLicense(translate("DAboutDialog", "%1 is released under %2").arg(productName()).arg(applicationLicense()));
|
||||
|
||||
setAboutDialog(dialog);
|
||||
connect(aboutDialog(), &DAboutDialog::destroyed, this, [=] {
|
||||
setAboutDialog(nullptr);
|
||||
});
|
||||
|
||||
dialog->hide();
|
||||
}
|
||||
|
||||
void Application::slotMainWindowClose()
|
||||
{
|
||||
if (aboutDialog()) {
|
||||
aboutDialog()->close();
|
||||
aboutDialog()->deleteLater();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user