diff --git a/spark-webapp-runtime/globaldefine.h b/spark-webapp-runtime/globaldefine.h index bb0ed53..9223d85 100644 --- a/spark-webapp-runtime/globaldefine.h +++ b/spark-webapp-runtime/globaldefine.h @@ -3,18 +3,19 @@ #include <QObject> -#define DEFAULT_TITLE QObject::tr("SparkWebAppRuntime") -#define DEFAULT_URL QString("qrc:/help/help.html") -#define DEFAULT_WIDTH (1024) -#define DEFAULT_HEIGHT (768) +#define DEFAULT_TITLE QObject::tr("SparkWebAppRuntime") +//#define DEFAULT_URL QString("qrc:/help/help.html") +#define DEFAULT_URL QString("https://www.baidu.com") +#define DEFAULT_WIDTH (1024) +#define DEFAULT_HEIGHT (768) -#define DEFAULT_DESC QString() -#define DEFAULT_ICON QString() -#define DEFAULT_CFG QString() +#define DEFAULT_DESC QString() +#define DEFAULT_ICON QString() +#define DEFAULT_CFG QString() -#define DEFAULT_ROOT QString() -#define DEFAULT_PORT 0 +#define DEFAULT_ROOT QString() +#define DEFAULT_PORT 0 -#define CURRENT_VER (1.6) +#define CURRENT_VER (1.6) #endif // GLOBALDEFINE_H diff --git a/spark-webapp-runtime/main.cpp b/spark-webapp-runtime/main.cpp index c53ff92..60caece 100644 --- a/spark-webapp-runtime/main.cpp +++ b/spark-webapp-runtime/main.cpp @@ -22,7 +22,7 @@ int main(int argc, char *argv[]) a.setAttribute(Qt::AA_UseHighDpiPixmaps); a.setApplicationVersion(QString::number(CURRENT_VER)); - a.setOrganizationName("spark-union"); // 添加组织名称,和商店主体的文件夹同在 ~/.local/share/spark-union 文件夹下 + a.setOrganizationName("spark-union"); // 添加组织名称,和商店主体的文件夹同在 ~/.local/share/spark-union 文件夹下 a.setApplicationName("SparkWebAppRuntime"); // 这里不要翻译,否则 ~/.local/share 中文件夹名也会被翻译 DAboutDialog *dialog = new DAboutDialog; @@ -41,15 +41,15 @@ int main(int argc, char *argv[]) // 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")); + .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(QObject::tr("This program is open source under GPLv3")); // 本程序按GPL第三版开源 + dialog->setLicense(QObject::tr("This program is open source under GPLv3")); // 本程序按GPL第三版开源 QCommandLineParser parser; @@ -57,40 +57,46 @@ int main(int argc, char *argv[]) parser.addHelpOption(); parser.addVersionOption(); - QCommandLineOption optParser(QStringList() << "p" << "parser", + QCommandLineOption optParser(QStringList() << "p" + << "parser", QObject::tr("Enable CommandLineParser. Default is false.")); parser.addOption(optParser); - QCommandLineOption optTitle(QStringList() << "t" << "title", + QCommandLineOption optTitle(QStringList() << "t" + << "title", QObject::tr("The Title of Application. Default is %1.").arg(DEFAULT_TITLE), "title", DEFAULT_TITLE); parser.addOption(optTitle); - QCommandLineOption optUrl(QStringList() << "u" << "url", + QCommandLineOption optUrl(QStringList() << "u" + << "url", QObject::tr("The target URL. Default is Blank."), "url", DEFAULT_URL); parser.addOption(optUrl); - QCommandLineOption optWidth(QStringList() << "w" << "width", + QCommandLineOption optWidth(QStringList() << "w" + << "width", QObject::tr("The Width of Application. Default is %1.").arg(DEFAULT_WIDTH), "width", QString::number(DEFAULT_WIDTH)); parser.addOption(optWidth); - QCommandLineOption optHeight(QStringList() << "H" << "height", + QCommandLineOption optHeight(QStringList() << "H" + << "height", QObject::tr("The Height of Application. Default is %1.").arg(DEFAULT_HEIGHT), "height", QString::number(DEFAULT_HEIGHT)); parser.addOption(optHeight); - QCommandLineOption optTray(QStringList() << "T" << "tray", - QObject::tr("Enable Tray Icon. Default is false.")); + QCommandLineOption optTray(QStringList() << "T" + << "tray", + QObject::tr("Enable Tray Icon. Default is false.")); parser.addOption(optTray); QCommandLineOption optFullScreen("full-screen", - QObject::tr("Run in Fullscreen Mode. Default is false.")); + QObject::tr("Run in Fullscreen Mode. Default is false.")); parser.addOption(optFullScreen); QCommandLineOption optFixSize("fix-size", @@ -98,42 +104,47 @@ int main(int argc, char *argv[]) parser.addOption(optFixSize); QCommandLineOption optHideButtons("hide-buttons", - QObject::tr("Hide Control Buttons. Default is false.")); + QObject::tr("Hide Control Buttons. Default is false.")); parser.addOption(optHideButtons); - QCommandLineOption optIcon(QStringList() << "i" << "ico", + QCommandLineOption optIcon(QStringList() << "i" + << "ico", QObject::tr("The ICON of Application."), "ico", DEFAULT_ICON); parser.addOption(optIcon); - QCommandLineOption optDesc(QStringList() << "d" << "desc", + QCommandLineOption optDesc(QStringList() << "d" + << "desc", QObject::tr("The Description of Application."), "desc", DEFAULT_DESC); parser.addOption(optDesc); - QCommandLineOption optCfgFile(QStringList() << "c" << "cfg", + QCommandLineOption optCfgFile(QStringList() << "c" + << "cfg", QObject::tr("The Configuration file of Application."), "cfg", DEFAULT_CFG); parser.addOption(optCfgFile); - QCommandLineOption optRootPath(QStringList() << "r" << "root", + QCommandLineOption optRootPath(QStringList() << "r" + << "root", QObject::tr("The root path of the program web service."), "root", DEFAULT_ROOT); parser.addOption(optRootPath); - - QCommandLineOption optPort(QStringList() << "P" << "port", + QCommandLineOption optPort(QStringList() << "P" + << "port", QObject::tr("The port number of the program web service."), "port", DEFAULT_PORT); parser.addOption(optPort); #if SSL_SERVER - QCommandLineOption optSSLPort(QStringList() << "s" << "sslport", + QCommandLineOption optSSLPort(QStringList() << "s" + << "sslport", QObject::tr("The ssl port number of the program web service."), "sslport", DEFAULT_PORT); @@ -159,13 +170,10 @@ int main(int argc, char *argv[]) #endif QString szCfgFile = DEFAULT_CFG; - if (parser.isSet(optCfgFile)) - { + if (parser.isSet(optCfgFile)) { szCfgFile = parser.value(optCfgFile); - if (!szCfgFile.isEmpty()) - { - if (QFileInfo(szCfgFile).exists()) - { + if (!szCfgFile.isEmpty()) { + if (QFileInfo(szCfgFile).exists()) { QSettings settings(szCfgFile, QSettings::IniFormat); szTitle = settings.value("SparkWebAppRuntime/Title", DEFAULT_TITLE).toString(); szUrl = settings.value("SparkWebAppRuntime/URL", DEFAULT_TITLE).toString(); @@ -177,8 +185,8 @@ int main(int argc, char *argv[]) hideButtons = settings.value("SparkWebAppRunTime/HideButtons", false).toBool(); szIcon = settings.value("SparkWebAppRuntime/Ico", DEFAULT_ICON).toString(); szDesc = QString("%1<br/><br/>%2") - .arg(settings.value("SparkWebAppRuntime/Desc", QString()).toString()) - .arg(szDefaultDesc); + .arg(settings.value("SparkWebAppRuntime/Desc", QString()).toString()) + .arg(szDefaultDesc); szRootPath = settings.value("SparkWebAppRuntime/RootPath", QString()).toString(); u16Port = settings.value("SparkWebAppRuntime/Port", 0).toUInt(); #if SSL_SERVER @@ -189,162 +197,130 @@ int main(int argc, char *argv[]) } // 命令行级别优先, 覆盖配置文件的设置 - if (parser.isSet(optTitle)) - { + if (parser.isSet(optTitle)) { szTitle = parser.value(optTitle); } - if (parser.isSet(optUrl)) - { + if (parser.isSet(optUrl)) { szUrl = parser.value(optUrl); } - if (parser.isSet(optWidth)) - { + if (parser.isSet(optWidth)) { width = parser.value(optWidth).toInt(); } - if (parser.isSet(optHeight)) - { + if (parser.isSet(optHeight)) { height = parser.value(optHeight).toInt(); } - if (parser.isSet(optTray)) - { + if (parser.isSet(optTray)) { tray = true; } - if (parser.isSet(optFullScreen)) - { + if (parser.isSet(optFullScreen)) { fullScreen = true; } - if (parser.isSet(optFixSize)) - { + if (parser.isSet(optFixSize)) { fixSize = true; } - if (parser.isSet(optHideButtons)) - { + if (parser.isSet(optHideButtons)) { hideButtons = true; } - if (parser.isSet(optDesc)) - { - szDesc = QString("%1<br/><br/>%2").arg(parser.value(optDesc)) - .arg(szDefaultDesc); + if (parser.isSet(optDesc)) { + szDesc = QString("%1<br/><br/>%2").arg(parser.value(optDesc)).arg(szDefaultDesc); } - if (parser.isSet(optRootPath)) - { + if (parser.isSet(optRootPath)) { szRootPath = parser.value(optRootPath); } - if (parser.isSet(optPort)) - { + if (parser.isSet(optPort)) { u16Port = parser.value(optPort).toUInt(); } #if SSL_SERVER - if (parser.isSet(optSSLPort)) - { + if (parser.isSet(optSSLPort)) { u16sslPort = parser.value(optSSLPort).toUInt(); } #endif // 没设置 -p 并且参数个数 > 1 并且第一个参数不是 - 开始的 - if (!parser.isSet(optParser) && argc > 1 && !QString(argv[1]).startsWith("-")) - { + if (!parser.isSet(optParser) && argc > 1 && !QString(argv[1]).startsWith("-")) { // 按照固定顺序级别最优先 - if (argc > 1) - { + if (argc > 1) { szTitle = argv[1]; } - if (argc > 2) - { + if (argc > 2) { szUrl = argv[2]; } - if (argc > 3) - { + if (argc > 3) { width = QString(argv[3]).toInt(); } - if (argc > 4) - { + if (argc > 4) { height = QString(argv[4]).toInt(); } - if (argc > 5) - { + if (argc > 5) { tray = true; } - if (argc > 6) - { + if (argc > 6) { fullScreen = true; } - if (argc > 7) - { + if (argc > 7) { fixSize = true; } - if (argc > 8) - { + if (argc > 8) { hideButtons = true; } - if (argc > 9) - { + if (argc > 9) { szIcon = QString(argv[9]); } - if (argc > 10) - { + if (argc > 10) { szDesc = QString("%1<br/><br/>%2").arg(QString(argv[10])).arg(szDefaultDesc); } - if (argc > 11) - { + if (argc > 11) { szRootPath = QString(argv[11]); } - if (argc > 12) - { + if (argc > 12) { u16Port = QString(argv[12]).toUInt(); } #if SSL_SERVER - if (argc > 13) - { + if (argc > 13) { u16sslPort = QString(argv[13]).toUInt(); } #endif } - if(fixSize) - { - fullScreen = false; // 固定窗口大小时禁用全屏模式,避免标题栏按钮 BUG + if (fixSize) { + fullScreen = false; // 固定窗口大小时禁用全屏模式,避免标题栏按钮 BUG } a.setQuitOnLastWindowClosed(!tray); // 启用托盘时,退出程序后服务不终止 MainWindow w(szTitle, szUrl, width, height, tray, fullScreen, fixSize, hideButtons, dialog); + // qputenv("QTWEBENGINE_CHROMIUM_FLAGS", "--disable-features=UseModernMediaControls"); #if SSL_SERVER - if (!szRootPath.isEmpty() && u16Port > 0 && u16sslPort > 0) - { + if (!szRootPath.isEmpty() && u16Port > 0 && u16sslPort > 0) { HttpD httpd(szRootPath, u16Port, u16sslPort); httpd.start(); } #else - if (!szRootPath.isEmpty() && u16Port > 0) - { + if (!szRootPath.isEmpty() && u16Port > 0) { static HttpD httpd(szRootPath, u16Port); QObject::connect(&w, &MainWindow::sigQuit, &httpd, &HttpD::stop); httpd.start(); } #endif - if (parser.isSet(optIcon)) - { + if (parser.isSet(optIcon)) { szIcon = parser.value(optIcon); } - if (!szIcon.isEmpty()) - { + if (!szIcon.isEmpty()) { dialog->setWindowIcon(QIcon(szIcon)); dialog->setProductIcon(QIcon(szIcon)); w.setIcon(szIcon); } - if (!szDesc.isEmpty()) - { + if (!szDesc.isEmpty()) { dialog->setDescription(szDesc); } diff --git a/spark-webapp-runtime/mainwindow.cpp b/spark-webapp-runtime/mainwindow.cpp index c2fea63..cc3134f 100644 --- a/spark-webapp-runtime/mainwindow.cpp +++ b/spark-webapp-runtime/mainwindow.cpp @@ -76,7 +76,7 @@ MainWindow::MainWindow(QString szTitle, m_fullScreen->setCheckable(true); m_fullScreen->setChecked(nFullScreen); - m_fullScreen->setDisabled(nFixSize); // 固定窗口大小时禁用全屏模式,避免标题栏按钮 BUG + m_fullScreen->setDisabled(nFixSize); // 固定窗口大小时禁用全屏模式,避免标题栏按钮 BUG m_fixSize->setCheckable(true); m_fixSize->setChecked(nFixSize); m_fixSize->setDisabled(nFixSize); @@ -84,13 +84,11 @@ MainWindow::MainWindow(QString szTitle, m_hideButtons->setChecked(nHideButtons); m_hideButtons->setDisabled(nHideButtons); /* 命令行设置参数后 GUI 中隐藏对应选项 */ - if(!nFixSize) - { + if (!nFixSize) { m_menu->addAction(m_fullScreen); m_menu->addAction(m_fixSize); } - if(!nHideButtons) - { + if (!nHideButtons) { m_menu->addAction(m_hideButtons); } titlebar()->setMenu(m_menu); @@ -108,8 +106,7 @@ MainWindow::MainWindow(QString szTitle, m_tray->setToolTip(szTitle); m_tray->setIcon(QIcon(":/images/spark-webapp-runtime.svg")); - if(tray) - { + if (tray) { m_tray->show(); // 启用托盘时显示 } @@ -124,52 +121,42 @@ MainWindow::MainWindow(QString szTitle, message->setIcon(QIcon::fromTheme("deepin-download").pixmap(64, 64)); message->setWidget(downloadProgressBar); - connect(btnBack, &DToolButton::clicked, this, [&]() - { + connect(btnBack, &DToolButton::clicked, this, [&]() { m_widget->goBack(); }); - connect(btnForward, &DToolButton::clicked, this, [&]() - { + connect(btnForward, &DToolButton::clicked, this, [&]() { m_widget->goForward(); }); - connect(btnRefresh, &DToolButton::clicked, this, [&]() - { + connect(btnRefresh, &DToolButton::clicked, this, [&]() { m_widget->refresh(); }); - connect(m_fullScreen, &QAction::triggered, this, [=]() - { + connect(m_fullScreen, &QAction::triggered, this, [=]() { fullScreen(); }); - connect(m_fixSize, &QAction::triggered, this, [=]() - { + connect(m_fixSize, &QAction::triggered, this, [=]() { fixSize(); }); - connect(m_hideButtons, &QAction::triggered, this, [=]() - { + connect(m_hideButtons, &QAction::triggered, this, [=]() { hideButtons(); }); - connect(t_show, &QAction::triggered, this, [=]() - { + connect(t_show, &QAction::triggered, this, [=]() { this->activateWindow(); fixSize(); }); - connect(t_about, &QAction::triggered, this, [=]() - { + connect(t_about, &QAction::triggered, this, [=]() { m_dialog->activateWindow(); m_dialog->show(); }); - connect(t_exit, &QAction::triggered, this, [=]() - { + connect(t_exit, &QAction::triggered, this, [=]() { exit(0); }); connect(m_tray, &QSystemTrayIcon::activated, this, &MainWindow::trayIconActivated); connect(m_widget->getPage()->profile(), &QWebEngineProfile::downloadRequested, this, &MainWindow::on_downloadStart); - connect(m_widget->getPage(), &QWebEnginePage::windowCloseRequested, this, [=]() - { + connect(m_widget->getPage(), &QWebEnginePage::windowCloseRequested, this, [=]() { this->close(); }); } @@ -184,29 +171,58 @@ MainWindow::~MainWindow() void MainWindow::setIcon(QString szIconPath) { - if (QFileInfo(szIconPath).exists()) - { + if (QFileInfo(szIconPath).exists()) { titlebar()->setIcon(QIcon(szIconPath)); setWindowIcon(QIcon(szIconPath)); m_tray->setIcon(QIcon(szIconPath)); } } +void MainWindow::keyPressEvent(QKeyEvent *event) +{ + if (!m_fixSize->isChecked()) // 固定窗口大小时禁止全屏 + { + if (event->key() == Qt::Key_F11) // 绑定键盘快捷键 F11 + { + m_fullScreen->trigger(); + m_menu->update(); + } + } + event->accept(); +} + +void MainWindow::resizeEvent(QResizeEvent *event) +{ + if (this->isFullScreen()) { + m_fullScreen->setChecked(true); + } else { + m_fullScreen->setChecked(false); + if (!mFixSize) { + m_fixSize->setEnabled(true); // 命令行参数没有固定窗口大小时,窗口模式下允许手动选择固定窗口大小 + } + } + DMainWindow::resizeEvent(event); +} + +void MainWindow::closeEvent(QCloseEvent *event) +{ + if (!mtray) { + m_dialog->close(); // 不启用托盘时,关闭主窗口则关闭关于窗口 + } + event->accept(); +} + void MainWindow::fullScreen() { - if(m_fullScreen->isChecked()) - { + if (m_fullScreen->isChecked()) { m_fixSize->setChecked(false); m_fixSize->setDisabled(true); m_menu->update(); showFullScreen(); // DMessageManager::instance()->sendMessage(this, QIcon::fromTheme("dialog-information").pixmap(64, 64), QString(tr("%1Fullscreen Mode")).arg(" ")); - } - else - { - if(!mFixSize) - { - m_fixSize->setDisabled(false); // 命令行参数没有固定窗口大小时,窗口模式下允许手动选择固定窗口大小 + } else { + if (!mFixSize) { + m_fixSize->setDisabled(false); // 命令行参数没有固定窗口大小时,窗口模式下允许手动选择固定窗口大小 } m_menu->update(); showNormal(); @@ -216,16 +232,13 @@ void MainWindow::fullScreen() void MainWindow::fixSize() { - if(m_fixSize->isChecked()) - { + if (m_fixSize->isChecked()) { m_fullScreen->setChecked(false); m_fullScreen->setDisabled(true); m_menu->update(); setFixedSize(this->size()); /* 存在 BUG: 启用托盘图标后,若手动选择固定窗口大小,并且关闭窗口,再次打开时会丢失最大化按钮,且无法恢复。 */ - } - else - { + } else { m_fullScreen->setDisabled(false); m_menu->update(); setMinimumSize(m_width, m_height); @@ -236,14 +249,11 @@ void MainWindow::fixSize() void MainWindow::hideButtons() { - if(m_hideButtons->isChecked()) - { + if (m_hideButtons->isChecked()) { btnBack->hide(); btnForward->hide(); btnRefresh->hide(); - } - else - { + } else { btnBack->show(); btnForward->show(); btnRefresh->show(); @@ -253,65 +263,37 @@ void MainWindow::hideButtons() QString MainWindow::saveAs(QString fileName) { QString saveFile = QFileDialog::getSaveFileName(this, tr("Save As"), QDir::homePath() + "/Downloads/" + fileName); - if(!saveFile.isEmpty()) - { - if(QFileInfo(QFileInfo(saveFile).absolutePath()).permissions().testFlag(QFile::WriteUser)) // 判断上层目录是否可写入 + if (!saveFile.isEmpty()) { + if (QFileInfo(QFileInfo(saveFile).absolutePath()).permissions().testFlag(QFile::WriteUser)) // 判断上层目录是否可写入 { return saveFile; - } - else - { + } else { return saveAs(fileName); } } return nullptr; } -void MainWindow::keyPressEvent(QKeyEvent *event) -{ - if(!m_fixSize->isChecked()) // 固定窗口大小时禁止全屏 - { - if(event->key() == Qt::Key_F11) // 绑定键盘快捷键 F11 - { - m_fullScreen->trigger(); - m_menu->update(); - } - event->accept(); - } -} - -void MainWindow::closeEvent(QCloseEvent *event) -{ - if(!mtray) - { - m_dialog->close(); // 不启用托盘时,关闭主窗口则关闭关于窗口 - } - event->accept(); -} - void MainWindow::trayIconActivated(QSystemTrayIcon::ActivationReason reason) { - switch(reason) - { - /* 响应托盘点击事件 */ - case QSystemTrayIcon::Trigger: - this->activateWindow(); - fixSize(); - break; - default: - break; + switch (reason) { + /* 响应托盘点击事件 */ + case QSystemTrayIcon::Trigger: + this->activateWindow(); + fixSize(); + break; + default: + break; } } void MainWindow::on_downloadStart(QWebEngineDownloadItem *item) { /* 尝试加锁互斥量,禁止同时下载多个文件 */ - if(mutex.tryLock()) - { + if (mutex.tryLock()) { QString fileName = QFileInfo(item->path()).fileName(); QString filePath = saveAs(fileName); - if(filePath.isEmpty()) - { + if (filePath.isEmpty()) { mutex.unlock(); return; } @@ -319,21 +301,17 @@ void MainWindow::on_downloadStart(QWebEngineDownloadItem *item) filePath = QFileInfo(item->path()).absoluteFilePath(); connect(item, &QWebEngineDownloadItem::downloadProgress, this, &MainWindow::on_downloadProgress); - connect(item, &QWebEngineDownloadItem::finished, this, [=]() - { + connect(item, &QWebEngineDownloadItem::finished, this, [=]() { on_downloadFinish(filePath); }); - connect(pause, &DPushButton::clicked, this, [=]() - { + connect(pause, &DPushButton::clicked, this, [=]() { on_downloadPause(item); }); - connect(resume, &DPushButton::clicked, this, [=]() - { + connect(resume, &DPushButton::clicked, this, [=]() { on_downloadResume(item); }); - connect(cancel, &DPushButton::clicked, this, [=]() - { + connect(cancel, &DPushButton::clicked, this, [=]() { on_downloadCancel(item); }); @@ -348,10 +326,8 @@ void MainWindow::on_downloadStart(QWebEngineDownloadItem *item) isCanceled = false; resume->hide(); pause->show(); - this->message->show(); // 上一次下载完成后隐藏了进度条,这里要重新显示 - } - else - { + this->message->show(); // 上一次下载完成后隐藏了进度条,这里要重新显示 + } else { DMessageManager::instance()->sendMessage(this, QIcon::fromTheme("dialog-cancel").pixmap(64, 64), QString(tr("%1Wait for previous download to complete!")).arg(" ")); } } @@ -372,7 +348,7 @@ void MainWindow::on_downloadFinish(QString filePath) message->hide(); - if(!isCanceled) // 下载完成显示提示信息 + if (!isCanceled) // 下载完成显示提示信息 { DPushButton *button = new DPushButton(tr("Open")); @@ -382,8 +358,7 @@ void MainWindow::on_downloadFinish(QString filePath) message->setWidget(button); DMessageManager::instance()->sendMessage(this, message); - connect(button, &DPushButton::clicked, this, [=]() - { + connect(button, &DPushButton::clicked, this, [=]() { DDesktopServices::showFileItem(filePath); message->hide(); }); @@ -410,7 +385,7 @@ void MainWindow::on_downloadResume(QWebEngineDownloadItem *item) void MainWindow::on_downloadCancel(QWebEngineDownloadItem *item) { - isCanceled = true; // 取消下载 + isCanceled = true; // 取消下载 item->cancel(); mutex.unlock(); diff --git a/spark-webapp-runtime/mainwindow.h b/spark-webapp-runtime/mainwindow.h index 450ebf4..a1cc46e 100644 --- a/spark-webapp-runtime/mainwindow.h +++ b/spark-webapp-runtime/mainwindow.h @@ -36,6 +36,11 @@ public: void setIcon(QString szIconPath); +protected: + void keyPressEvent(QKeyEvent *event); + void resizeEvent(QResizeEvent *event); + void closeEvent(QCloseEvent *event); + private: Widget *m_widget; DAboutDialog *m_dialog; @@ -63,8 +68,8 @@ private: QHBoxLayout *progress; DFloatingMessage *message; - QMutex mutex; // 通过 Mutex 互斥量禁止同时下载多个文件(使用简单的 bool 变量应该也可以实现该功能?) - bool isCanceled; // 判断是否为取消下载 + QMutex mutex; // 通过 Mutex 互斥量禁止同时下载多个文件(使用简单的 bool 变量应该也可以实现该功能?) + bool isCanceled; // 判断是否为取消下载 bool mtray, mFixSize; int m_width, m_height; @@ -75,9 +80,6 @@ private: QString saveAs(QString fileName); - void keyPressEvent(QKeyEvent *event); - void closeEvent(QCloseEvent *event); - private slots: void trayIconActivated(QSystemTrayIcon::ActivationReason reason); @@ -90,7 +92,6 @@ private slots: signals: void sigQuit(); - }; #endif // MAINWINDOW_H diff --git a/spark-webapp-runtime/translations/spark-webapp-runtime_zh_CN.ts b/spark-webapp-runtime/translations/spark-webapp-runtime_zh_CN.ts index 69a97be..d3bc26e 100644 --- a/spark-webapp-runtime/translations/spark-webapp-runtime_zh_CN.ts +++ b/spark-webapp-runtime/translations/spark-webapp-runtime_zh_CN.ts @@ -49,47 +49,45 @@ <translation>取消</translation> </message> <message> - <location filename="../mainwindow.cpp" line="198"/> <source>%1Fullscreen Mode</source> - <translation>%1全屏模式</translation> + <translation type="vanished">%1全屏模式</translation> </message> <message> - <location filename="../mainwindow.cpp" line="208"/> <source>%1Windowed Mode</source> - <translation>%1窗口模式</translation> + <translation type="vanished">%1窗口模式</translation> </message> <message> - <location filename="../mainwindow.cpp" line="250"/> + <location filename="../mainwindow.cpp" line="265"/> <source>Save As</source> <translation>另存为</translation> </message> <message> - <location filename="../mainwindow.cpp" line="336"/> + <location filename="../mainwindow.cpp" line="320"/> <source>%1Start downloading %2</source> <translation>%1开始下载 %2</translation> </message> <message> - <location filename="../mainwindow.cpp" line="349"/> + <location filename="../mainwindow.cpp" line="331"/> <source>%1Wait for previous download to complete!</source> <translation>%1请等待上一个下载任务完成!</translation> </message> <message> - <location filename="../mainwindow.cpp" line="371"/> + <location filename="../mainwindow.cpp" line="353"/> <source>Open</source> <translation>打开</translation> </message> <message> - <location filename="../mainwindow.cpp" line="375"/> + <location filename="../mainwindow.cpp" line="357"/> <source>download finished.</source> <translation>下载完成。</translation> </message> <message> - <location filename="../mainwindow.cpp" line="375"/> + <location filename="../mainwindow.cpp" line="357"/> <source>Show in file manager?</source> <translation>是否在文件管理器中显示?</translation> </message> <message> - <location filename="../mainwindow.cpp" line="413"/> + <location filename="../mainwindow.cpp" line="394"/> <source>%1Download canceled!</source> <translation>%1下载取消!</translation> </message> @@ -117,77 +115,77 @@ <translation>描述:%1</translation> </message> <message> - <location filename="../main.cpp" line="61"/> + <location filename="../main.cpp" line="62"/> <source>Enable CommandLineParser. Default is false.</source> <translation>启用参数解析方式。默认顺序解析方式。</translation> </message> <message> - <location filename="../main.cpp" line="65"/> + <location filename="../main.cpp" line="67"/> <source>The Title of Application. Default is %1.</source> <translation>设置程序的运行标题。默认是 %1。</translation> </message> <message> - <location filename="../main.cpp" line="71"/> + <location filename="../main.cpp" line="74"/> <source>The target URL. Default is Blank.</source> <translation>设置要打开的目标 URL。默认是空。</translation> </message> <message> - <location filename="../main.cpp" line="77"/> + <location filename="../main.cpp" line="81"/> <source>The Width of Application. Default is %1.</source> <translation>设置应用的窗口宽度。默认是 %1。</translation> </message> <message> - <location filename="../main.cpp" line="83"/> + <location filename="../main.cpp" line="88"/> <source>The Height of Application. Default is %1.</source> <translation>设置应用的窗口高度。默认是 %1。</translation> </message> <message> - <location filename="../main.cpp" line="89"/> + <location filename="../main.cpp" line="95"/> <source>Enable Tray Icon. Default is false.</source> <translation>启用托盘图标。默认不启用。</translation> </message> <message> - <location filename="../main.cpp" line="93"/> + <location filename="../main.cpp" line="99"/> <source>Run in Fullscreen Mode. Default is false.</source> <translation>以全屏模式运行。默认关闭该功能。</translation> </message> <message> - <location filename="../main.cpp" line="97"/> + <location filename="../main.cpp" line="103"/> <source>Fix Window Size. Default is false.</source> <translation>固定窗口大小。默认关闭该功能。</translation> </message> <message> - <location filename="../main.cpp" line="101"/> + <location filename="../main.cpp" line="107"/> <source>Hide Control Buttons. Default is false.</source> <translation>隐藏控制按钮。默认关闭该此功能。</translation> </message> <message> - <location filename="../main.cpp" line="105"/> + <location filename="../main.cpp" line="112"/> <source>The ICON of Application.</source> <translation>设置应用的图标。</translation> </message> <message> - <location filename="../main.cpp" line="111"/> + <location filename="../main.cpp" line="119"/> <source>The Description of Application.</source> <translation>设置应用的描述信息。</translation> </message> <message> - <location filename="../main.cpp" line="117"/> + <location filename="../main.cpp" line="126"/> <source>The Configuration file of Application.</source> <translation>设置应用的配置文件。</translation> </message> <message> - <location filename="../main.cpp" line="123"/> + <location filename="../main.cpp" line="133"/> <source>The root path of the program web service.</source> <translation>设置内置 WebServer 的根路径。</translation> </message> <message> - <location filename="../main.cpp" line="130"/> + <location filename="../main.cpp" line="140"/> <source>The port number of the program web service.</source> <translation>设置内置 WebServer 的监听端口号。</translation> </message> <message> - <location filename="../main.cpp" line="137"/> + <location filename="../main.cpp" line="148"/> <source>The ssl port number of the program web service.</source> <translation>设置内置 WebServer 的 SSL 协议的监听端口号。</translation> </message> diff --git a/spark-webapp-runtime/widget.cpp b/spark-webapp-runtime/widget.cpp index 4c439a9..784a219 100644 --- a/spark-webapp-runtime/widget.cpp +++ b/spark-webapp-runtime/widget.cpp @@ -14,14 +14,13 @@ Widget::Widget(QString szUrl, QWidget *parent) m_webEngineView->setObjectName(QStringLiteral("webEngineView")); m_webEngineView->setEnabled(true); m_webEngineView->setAutoFillBackground(false); - m_webEngineView->setZoomFactor(1); + m_webEngineView->setZoomFactor(1.0); QWebEnginePage *page = new QWebEnginePage; m_webEngineView->setPage(page); m_webEngineView->setUrl(QUrl(nullptr)); - if (!m_szUrl.isEmpty()) - { + if (!m_szUrl.isEmpty()) { m_webEngineView->setUrl(QUrl(m_szUrl)); } @@ -56,8 +55,7 @@ void Widget::refresh() void Widget::clearLayout(QLayout *layout) { QLayoutItem *item; - while ((item = layout->takeAt(0)) != nullptr) - { + while ((item = layout->takeAt(0)) != nullptr) { delete item; } }