diff --git a/spark-webapp-runtime/images/Logo-Spark.png b/spark-webapp-runtime/images/Logo-Spark.png index ba53cc8..c67b7b2 100644 Binary files a/spark-webapp-runtime/images/Logo-Spark.png and b/spark-webapp-runtime/images/Logo-Spark.png differ diff --git a/spark-webapp-runtime/images/Logo-Spark.png.bak b/spark-webapp-runtime/images/Logo-Spark.png.bak new file mode 100644 index 0000000..ba53cc8 Binary files /dev/null and b/spark-webapp-runtime/images/Logo-Spark.png.bak differ diff --git a/spark-webapp-runtime/main.cpp b/spark-webapp-runtime/main.cpp index d73678a..6653df5 100644 --- a/spark-webapp-runtime/main.cpp +++ b/spark-webapp-runtime/main.cpp @@ -6,9 +6,9 @@ * 社区项目投递地址:https://gitee.com/deepin-opensource */ #include "mainwindow.h" + #include <DApplication> #include <DWidgetUtil> -#include <DAboutDialog> #include <DMainWindow> #include <QCommandLineParser> @@ -19,43 +19,41 @@ #include "globaldefine.h" #include "httpd.h" -DWIDGET_USE_NAMESPACE - int main(int argc, char *argv[]) { DApplication a(argc, argv); - DAboutDialog dialog; + a.loadTranslator(); + a.setAttribute(Qt::AA_UseHighDpiPixmaps); a.setOrganizationName("spark-union"); // 添加组织名称,和商店主体的文件夹同在 ~/.local/share/spark-union 文件夹下 a.setApplicationName("SparkWebAppRuntime"); // 这里不要翻译,否则 ~/.local/share 中文件夹名也会被翻译 - a.setProductName(DEFAULT_TITLE); - a.setAboutDialog(&dialog); - //License - dialog.setLicense(QObject::tr("This program is open source under GPLv3")); // 本程序按GPL第三版开源 + DAboutDialog *dialog = new DAboutDialog; + a.setAboutDialog(dialog); - //Title - dialog.setWindowTitle(DEFAULT_TITLE); - //descrition - dialog.setProductName(QString("<span>%1</span>").arg(DEFAULT_TITLE)); - //Icons - dialog.setProductIcon(QIcon(":/images/spark-webapp-runtime.svg")); - //Organization logo - dialog.setCompanyLogo(QPixmap(":/images/Logo-Spark.png")); - //about - QString szDefaultDesc = QString("<span style=' font-size:12pt;font-weight:500;'>%1</span><br/>" - "<a href='https://gitee.com/deepin-community-store'>https://gitee.com/deepin-community-store</a><br/>" - "<span style=' font-size:12pt;'>%2</span>") + // WindowIcon + dialog->setWindowIcon(QIcon(":/images/spark-webapp-runtime.svg")); + // ProductIcon + dialog->setProductIcon(QIcon(":/images/spark-webapp-runtime.svg")); + // ProductName + dialog->setProductName(QString("<span>%1</span>").arg(DEFAULT_TITLE)); + // Version + dialog->setVersion(DApplication::buildVersion(QString("%1 %2").arg(QObject::tr("Version")).arg("1.5"))); + // 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); - //Version - dialog.setVersion(DApplication::buildVersion(QString("%1 %2").arg(QObject::tr("Version")).arg("1.4"))); - //Website name - dialog.setWebsiteName("spark-app.store"); - //Website link - dialog.setWebsiteLink("https://www.spark-app.store/"); + dialog->setDescription(szDefaultDesc); + // WebsiteName + dialog->setWebsiteName("spark-app.store"); + // WebsiteLink + dialog->setWebsiteLink("https://www.spark-app.store/"); + // License + dialog->setLicense(QObject::tr("This program is open source under GPLv3")); // 本程序按GPL第三版开源 QCommandLineParser parser; @@ -255,7 +253,7 @@ int main(int argc, char *argv[]) #endif } - MainWindow w(szTitle, szUrl, width, height); + MainWindow w(szTitle, szUrl, width, height, dialog); #if SSL_SERVER if (!szRootPath.isEmpty() && u16Port > 0 && u16sslPort > 0) @@ -279,13 +277,13 @@ int main(int argc, char *argv[]) if (!szIcon.isEmpty()) { - dialog.setIcon(QIcon(szIcon)); - dialog.setProductIcon(QIcon(szIcon)); + dialog->setWindowIcon(QIcon(szIcon)); + dialog->setProductIcon(QIcon(szIcon)); w.setIcon(szIcon); } if (!szDesc.isEmpty()) { - dialog.setDescription(szDesc); + dialog->setDescription(szDesc); } w.show(); diff --git a/spark-webapp-runtime/mainwindow.cpp b/spark-webapp-runtime/mainwindow.cpp index 86517fe..0a44216 100644 --- a/spark-webapp-runtime/mainwindow.cpp +++ b/spark-webapp-runtime/mainwindow.cpp @@ -1,37 +1,38 @@ #include "mainwindow.h" + #include <DMainWindow> #include <DTitlebar> #include <DToolButton> #include <QLayout> #include <QFileInfo> - -DWIDGET_USE_NAMESPACE +#include <QCloseEvent> MainWindow::MainWindow(QString szTitle, QString szUrl, int nWidth, int nHeight, + DAboutDialog *dialog, QWidget *parent) : DMainWindow(parent) - , m_widget(nullptr) + , m_widget(new Widget(szUrl)) + , m_dialog(dialog) { - m_widget = new Widget(szUrl); - // setFixedSize(nWidth, nHeight); // 应 shenmo 要求改成设置最小尺寸试试效果 setMinimumSize(nWidth, nHeight); - titlebar()->setTitle(szTitle); - setCentralWidget(m_widget); centralWidget()->layout()->setContentsMargins(0, 0, 0, 0); + setWindowIcon(QIcon(":/images/spark-webapp-runtime.svg")); + + titlebar()->setTitle(szTitle); titlebar()->setIcon(QIcon(":/images/spark-webapp-runtime.svg")); - DToolButton *btnBack = new DToolButton(titlebar()); - btnBack->setIcon(QIcon(":/images/go-previous-24.svg")); - btnBack->setIconSize(QSize(36, 36)); + DToolButton *btnBackward = new DToolButton(titlebar()); + btnBackward->setIcon(QIcon(":/images/go-previous-24.svg")); + btnBackward->setIconSize(QSize(36, 36)); DToolButton *btnForward = new DToolButton(titlebar()); btnForward->setIcon(QIcon(":/images/go-next-24.svg")); btnForward->setIconSize(QSize(36, 36)); @@ -39,7 +40,11 @@ MainWindow::MainWindow(QString szTitle, btnRefresh->setIcon(QIcon(":/images/view-refresh.svg")); btnRefresh->setIconSize(QSize(36, 36)); - connect(btnBack, &DToolButton::clicked, this, [&]() + titlebar()->addWidget(btnBackward, Qt::AlignLeft); + titlebar()->addWidget(btnForward, Qt::AlignLeft); + titlebar()->addWidget(btnRefresh, Qt::AlignLeft); + + connect(btnBackward, &DToolButton::clicked, this, [&]() { if (m_widget) { @@ -60,10 +65,6 @@ MainWindow::MainWindow(QString szTitle, m_widget->refresh(); } }); - - titlebar()->addWidget(btnBack, Qt::AlignLeft); - titlebar()->addWidget(btnForward, Qt::AlignLeft); - titlebar()->addWidget(btnRefresh, Qt::AlignLeft); } MainWindow::~MainWindow() @@ -74,6 +75,11 @@ MainWindow::~MainWindow() delete m_widget; m_widget = nullptr; } + if (m_dialog) + { + delete m_dialog; + m_dialog = nullptr; + } } void MainWindow::setIcon(QString szIconPath) @@ -82,6 +88,7 @@ void MainWindow::setIcon(QString szIconPath) if (fi.exists()) { titlebar()->setIcon(QIcon(szIconPath)); + setWindowIcon(QIcon(szIconPath)); qDebug() << szIconPath << "is Set!"; } else @@ -89,3 +96,9 @@ void MainWindow::setIcon(QString szIconPath) qDebug() << szIconPath << "is Not Exists!"; } } + +void MainWindow::closeEvent(QCloseEvent *event) +{ + m_dialog->close(); + event->accept(); +} diff --git a/spark-webapp-runtime/mainwindow.h b/spark-webapp-runtime/mainwindow.h index b7ffa88..2e5fba4 100644 --- a/spark-webapp-runtime/mainwindow.h +++ b/spark-webapp-runtime/mainwindow.h @@ -2,6 +2,7 @@ #define MAINWINDOW_H #include <DMainWindow> +#include <DAboutDialog> #include "widget.h" #include "globaldefine.h" @@ -17,6 +18,7 @@ public: QString szUrl = DEFAULT_URL, int nWidth = DEFAULT_WIDTH, int nHeight = DEFAULT_HEIGHT, + DAboutDialog *dialog = nullptr, QWidget *parent = nullptr); ~MainWindow(); @@ -27,6 +29,10 @@ signals: private: Widget *m_widget; + DAboutDialog *m_dialog; + + void closeEvent(QCloseEvent *event); + }; #endif // MAINWINDOW_H diff --git a/spark-webapp-runtime/spark-webapp-runtime.pro b/spark-webapp-runtime/spark-webapp-runtime.pro index 350fcea..8a0fc80 100644 --- a/spark-webapp-runtime/spark-webapp-runtime.pro +++ b/spark-webapp-runtime/spark-webapp-runtime.pro @@ -1,4 +1,4 @@ -QT += core widgets gui webengine webenginewidgets svg concurrent +QT += core gui webengine webenginewidgets svg concurrent greaterThan(QT_MAJOR_VERSION, 5): QT += widgets 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 8ee0643..c58f15a 100644 --- a/spark-webapp-runtime/translations/spark-webapp-runtime_zh_CN.ts +++ b/spark-webapp-runtime/translations/spark-webapp-runtime_zh_CN.ts @@ -4,77 +4,77 @@ <context> <name>QObject</name> <message> - <location filename="../main.cpp" line="51"/> + <location filename="../main.cpp" line="49"/> <source>Presented By Spark developers # HadesStudio</source> <translation>由 星火开发者联盟 @ 花心胡萝卜 提供</translation> </message> <message> - <location filename="../main.cpp" line="36"/> + <location filename="../main.cpp" line="56"/> <source>This program is open source under GPLv3</source> <translation>本程序按GPL第三版开源</translation> </message> <message> - <location filename="../main.cpp" line="54"/> + <location filename="../main.cpp" line="42"/> <source>Version</source> <translation>版本</translation> </message> <message> - <location filename="../main.cpp" line="62"/> + <location filename="../main.cpp" line="60"/> <source>Description: %1</source> <translation>描述:%1</translation> </message> <message> - <location filename="../main.cpp" line="67"/> + <location filename="../main.cpp" line="65"/> <source>Enable CommandLineParser. Default is false.</source> <translation>启用参数解析方式。默认顺序解析方式。</translation> </message> <message> - <location filename="../main.cpp" line="71"/> + <location filename="../main.cpp" line="69"/> <source>The Title of Application. Default is %1.</source> <translation>设置程序的运行标题。默认是 %1。</translation> </message> <message> - <location filename="../main.cpp" line="77"/> + <location filename="../main.cpp" line="75"/> <source>The target URL. Default is Blank.</source> <translation>设置要打开的目标 URL。默认是空。</translation> </message> <message> - <location filename="../main.cpp" line="83"/> + <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="89"/> + <location filename="../main.cpp" line="87"/> <source>The Height of Application. Default is %1.</source> <translation>设置应用的窗口高度。默认是 %1。</translation> </message> <message> - <location filename="../main.cpp" line="95"/> + <location filename="../main.cpp" line="93"/> <source>The ICON of Application.</source> <translation>设置应用的图标。</translation> </message> <message> - <location filename="../main.cpp" line="101"/> + <location filename="../main.cpp" line="99"/> <source>The Description of Application.</source> <translation>设置应用的描述信息。</translation> </message> <message> - <location filename="../main.cpp" line="107"/> + <location filename="../main.cpp" line="105"/> <source>The Configuration file of Application.</source> <translation>设置应用的配置文件。</translation> </message> <message> - <location filename="../main.cpp" line="113"/> + <location filename="../main.cpp" line="111"/> <source>The root path of the program web service.</source> <translation>设置内置 WebServer 的根路径。</translation> </message> <message> - <location filename="../main.cpp" line="120"/> + <location filename="../main.cpp" line="118"/> <source>The port number of the program web service.</source> <translation>设置内置 WebServer 的监听端口号。</translation> </message> <message> - <location filename="../main.cpp" line="127"/> + <location filename="../main.cpp" line="125"/> <source>The ssl port number of the program web service.</source> <translation>设置内置 WebServer 的 SSL 协议的监听端口号。</translation> </message> diff --git a/spark-webapp-runtime/widget.h b/spark-webapp-runtime/widget.h index 05d75a2..cda3395 100644 --- a/spark-webapp-runtime/widget.h +++ b/spark-webapp-runtime/widget.h @@ -23,9 +23,10 @@ public: void refresh(); private: - Ui::Widget *ui; + Ui::Widget *ui; + QWebEngineView *m_webEngineView; - QString m_szUrl; + QString m_szUrl; }; #endif // WIDGET_H