mirror of
https://gitee.com/spark-store-project/spark-store
synced 2025-12-15 05:12:04 +08:00
!178 fix: 修复主窗口关闭后,关于窗口没有自动关闭的问题
* 添加 Application 类,继承 DApplication,将 main 函数中设置属性、关于信息等操作移至 Application 构造函数中进行 * 1.1. 添加 setOrganizationName 操作,设置组织名称为 spark-union,与 SWRT 保持一致 * 1.2. 设置组织名称后,QStandardPaths::AppConfigLocation 等路径相应改变,修改所有配置文件和缓存文件路径(server.list/config.ini 等) * 1.3. 关于对话框设置父对象后,对话框背景色受主窗口样式表影响,移动部分控件样式表设置方式与位置 * 修复关于窗口不显示组织 Logo 的问题,补充丢失的资源文件,整理资源文件 * 去除 .pro 文件中无效的更新翻译文件脚本调用,整理 .pro 文件,添加编译时更新 ts 文件脚本调用 * 继续修复偶现关闭客户端时崩溃问题(疑似 aria2c 进程未启动,pid 未初始化为随机值,执行 kill 操作时未判断导致) * 修复进入详情页时焦点默认在分享链接按钮上的问题 * 暂时去除没有意义的 DBus 接口,使用 DGuiApplicationHelper::newProcessInstance 获取新进程的启动参数 * 更新翻译文件,去除已经不存在的翻译
This commit is contained in:
101
src/application.cpp
Normal file
101
src/application.cpp
Normal file
@@ -0,0 +1,101 @@
|
||||
#include "application.h"
|
||||
|
||||
#include <DPlatformWindowHandle>
|
||||
#include <DLog>
|
||||
#include <DGuiApplicationHelper>
|
||||
#include <DAboutDialog>
|
||||
|
||||
#include <QSettings>
|
||||
#include <QStandardPaths>
|
||||
|
||||
DCORE_USE_NAMESPACE
|
||||
|
||||
Application::Application(int &argc, char **argv)
|
||||
: DApplication(argc, argv)
|
||||
{
|
||||
// Wayland 环境下使用,防止子控件 Native 化
|
||||
if (!DPlatformWindowHandle::pluginVersion().isEmpty()) {
|
||||
setAttribute(Qt::AA_DontCreateNativeWidgetSiblings, true);
|
||||
}
|
||||
setAttribute(Qt::AA_UseHighDpiPixmaps);
|
||||
|
||||
loadTranslator(); // 载入翻译
|
||||
|
||||
setOrganizationName("spark-union");
|
||||
setApplicationName("spark-store"); // 影响 ~/.local/share/spark-union 下文件夹名称
|
||||
setApplicationDisplayName(QObject::tr("Spark Store")); // 设置窗口显示标题 (Wayland 下会显示 Qt 原生标题栏)
|
||||
setProductName(QObject::tr("Spark Store"));
|
||||
setProductIcon(QIcon::fromTheme("spark-store"));
|
||||
setApplicationHomePage("https://gitee.com/deepin-community-store");
|
||||
setApplicationDescription(
|
||||
QObject::tr(
|
||||
"<span style=' font-size:10pt;font-weight:60;'>An appstore powered by community</span><br/>"
|
||||
"<a href='https://www.spark-app.store/'>https://www.spark-app.store</a><br/>"
|
||||
"<span style=' font-size:12pt;'>Spark developers</span>"));
|
||||
setApplicationLicense(" <a href='https://www.gnu.org/licenses/gpl-3.0.html'>GPLv3</a> ");
|
||||
|
||||
// 检查 ~/.config/spark-union/spark-store 文件夹是否存在
|
||||
checkAppConfigLocation();
|
||||
|
||||
// 初始化日志模块 (默认日志位置 ~/.cache/spark-union/spark-store)
|
||||
DLogManager::registerConsoleAppender();
|
||||
DLogManager::registerFileAppender();
|
||||
}
|
||||
|
||||
void Application::handleAboutAction()
|
||||
{
|
||||
if (aboutDialog()) {
|
||||
DApplication::handleAboutAction();
|
||||
return;
|
||||
}
|
||||
|
||||
initAboutDialog();
|
||||
DApplication::handleAboutAction();
|
||||
}
|
||||
|
||||
void Application::setVersionAndBuildDateTime(const QString &version, const QString &buildDateTime)
|
||||
{
|
||||
m_version = version;
|
||||
m_buildDateTime = buildDateTime;
|
||||
|
||||
QSettings config(QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation) + "/config.ini", QSettings::IniFormat);
|
||||
if (config.value("build/version").toString() != m_version) {
|
||||
qDebug() << "Spark Store has been updated!";
|
||||
|
||||
config.setValue("build/version", m_version);
|
||||
config.setValue("build/time", m_buildDateTime);
|
||||
config.sync();
|
||||
}
|
||||
|
||||
setApplicationVersion(DApplication::buildVersion(config.value("build/version").toString() + "-" + "Flamescion" + "-" + config.value("build/time").toString()));
|
||||
}
|
||||
|
||||
void Application::checkAppConfigLocation()
|
||||
{
|
||||
QDir dir(QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation));
|
||||
if (!dir.exists()) {
|
||||
qWarning() << "AppConfigLocation not existed, creating...";
|
||||
dir.mkpath(dir.absolutePath());
|
||||
}
|
||||
}
|
||||
|
||||
void Application::initAboutDialog()
|
||||
{
|
||||
// Customized DAboutDialog
|
||||
DAboutDialog *dialog = new DAboutDialog(activeWindow());
|
||||
dialog->setProductName(productName());
|
||||
dialog->setProductIcon(productIcon());
|
||||
dialog->setVersion(translate("DAboutDialog", "Version: %1").arg(applicationVersion()));
|
||||
// dialog->setCompanyLogo(QPixmap(":/icon/Logo-Spark.png")); // 根据 shenmo 要求,不显示组织 Logo
|
||||
dialog->setWebsiteName(QObject::tr("Spark Project"));
|
||||
dialog->setWebsiteLink(applicationHomePage());
|
||||
dialog->setDescription(applicationDescription());
|
||||
dialog->setLicense(translate("DAboutDialog", "%1 is released under %2").arg(productName()).arg(applicationLicense()));
|
||||
|
||||
setAboutDialog(dialog);
|
||||
connect(aboutDialog(), &DAboutDialog::destroyed, this, [=] {
|
||||
setAboutDialog(nullptr);
|
||||
});
|
||||
|
||||
dialog->hide();
|
||||
}
|
||||
Reference in New Issue
Block a user