Compare commits

..

8 Commits

Author SHA1 Message Date
ee0d3f87ec !185 4.2.3test2
Merge pull request !185 from shenmo/dev
2023-02-13 07:37:43 +00:00
4ce19e25e5 !182 4.2.2
Merge pull request !182 from shenmo/dev
2023-01-31 04:31:43 +00:00
41a6a3fc04 !181 4.2.1
Merge pull request !181 from shenmo/dev
2023-01-27 09:51:15 +00:00
682a6e38d6 !180 4.2 正式
Merge pull request !180 from shenmo/dev
2023-01-16 09:11:11 +00:00
36d273dd5e !179 4.1.2 正式版
Merge pull request !179 from shenmo/dev
2023-01-06 09:43:45 +00:00
8850cfd4a3 update dtk-build-release-tag-20220425.yml 2022-12-25 07:45:19 +00:00
bec8a14baf !177 将默认的README改为英文
Merge pull request !177 from shenmo/dev
2022-12-25 04:46:51 +00:00
8918e63484 !171 4.1.1-real
Merge pull request !171 from shenmo/dev
2022-12-21 16:18:05 +00:00
33 changed files with 510 additions and 784 deletions

18
debian/changelog vendored
View File

@@ -1,20 +1,3 @@
spark-store (4.2.3~test4) stable; urgency=medium
* 修复: aptss 无法安装
-- shenmo <shenmo@spark-app.store> Fri, 30 Jan 2022 00:00:00 +0800
spark-store (4.2.3~test3) stable; urgency=medium
* 调整:打包时从 debian/changelog 自动获取构建版本号并写入关于窗口保证与deb一致
* 新增:支持 DTK 5.6.4 关于对话框“版本特性”显示功能。目前只在deepin编译安装时开启
* 修复:修复下载列表对话框中,点击某个 item 取消下载按钮后下载列表无法再次显示的问题
* 修复:多个应用安装可能会出现某一个应用没有安装
* 修复:修复下载按钮点击/双击/拖动时,主窗口动作与下载管理对话框动作同时触发问题
* aptss 获取线路信息 转到从 d. 服务器获取
-- shenmo <shenmo@spark-app.store> Fri, 30 Jan 2022 00:00:00 +0800
spark-store (4.2.3~test2) stable; urgency=medium spark-store (4.2.3~test2) stable; urgency=medium
* 调整:开启安装包加固 * 调整:开启安装包加固
@@ -22,7 +5,6 @@ spark-store (4.2.3~test2) stable; urgency=medium
-- shenmo <shenmo@spark-app.store> Fri, 30 Jan 2022 00:00:00 +0800 -- shenmo <shenmo@spark-app.store> Fri, 30 Jan 2022 00:00:00 +0800
spark-store (4.2.3~test1) stable; urgency=medium spark-store (4.2.3~test1) stable; urgency=medium
* 修复因判断安装状态错误创建多个相同任务的bug * 修复因判断安装状态错误创建多个相同任务的bug

4
debian/control vendored
View File

@@ -20,9 +20,9 @@ Build-Depends:
qtwayland5-dev-tools, qtwayland5-dev-tools,
gcc, gcc,
g++ g++
Standards-Version: 4.0.0
Homepage: https://www.spark-app.store/
Standards-Version: 3.0
Homepage: https://www.spark-app.store/
Package: spark-store Package: spark-store
Architecture: any Architecture: any
Depends:${shlibs:Depends}, ${misc:Depends}, Depends:${shlibs:Depends}, ${misc:Depends},

12
debian/rules vendored
View File

@@ -1,14 +1,14 @@
#!/usr/bin/make -f #!/usr/bin/make -f
export QT_SELECT = qt5 export QT_SELECT=5
export DEB_BUILD_MAINT_OPTIONS = hardening=+all export DEB_BUILD_MAINT_OPTIONS = hardening=+all
include /usr/share/dpkg/default.mk include /usr/share/dpkg/default.mk
DEB_BUILD_ARCH ?= $(shell dpkg-architecture -qDEB_BUILD_ARCH) DEB_BUILD_ARCH ?= $(shell dpkg-architecture -qDEB_BUILD_ARCH)
DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH) DH_AUTO_ARGS = --parallel --buildsystem=qmake
# Uncomment this to turn on verbose mode. # Uncomment this to turn on verbose mode.
#export DH_VERBOSE = 1 #export DH_VERBOSE=1
%: %:
dh $@ --parallel dh $@ --parallel
@@ -19,17 +19,19 @@ override_dh_auto_clean:
override_dh_auto_configure: override_dh_auto_configure:
mkdir -p $(CURDIR)/build mkdir -p $(CURDIR)/build
qmake BUILD_VERSION=$(DEB_VERSION_UPSTREAM) spark-store-project.pro \ dh_auto_configure MAKEFLAGS=-j$(JOBS) -- spark-store-project.pro \
-spec linux-g++ CONFIG+=qtquickcompiler \ -spec linux-g++ CONFIG+=qtquickcompiler \
-o $(CURDIR)/build/ -o $(CURDIR)/build/
override_dh_auto_build: override_dh_auto_build:
make MAKEFLAGS="$(MAKEFLAGS)" -C $(CURDIR)/build make -C $(CURDIR)/build -j$(JOBS)
override_dh_auto_install: override_dh_auto_install:
make -C $(CURDIR)/build install \ make -C $(CURDIR)/build install \
INSTALL_ROOT=$(CURDIR)/debian/spark-store INSTALL_ROOT=$(CURDIR)/debian/spark-store
# Ignore the dpkg-shlibdeps: warning (it uses none of the library's symbols) # Ignore the dpkg-shlibdeps: warning (it uses none of the library's symbols)
# Qt Mutidedia lib will ref to network libraray. # Qt Mutidedia lib will ref to network libraray.
override_dh_shlibdeps: override_dh_shlibdeps:

View File

@@ -2,16 +2,20 @@
case "$1" in case "$1" in
configure) configure)
# Enable i386 arch
echo "Enabling i386 arch..."
dpkg --add-architecture i386
# config for aptss # Enable i386 arch
mkdir -p /etc/aptss/sources.list.d echo "Enable i386 arch..."
ln -s -f /etc/apt/sources.list /etc/aptss/sources.list dpkg --add-architecture i386
# config for aptss
mkdir -p /etc/aptss/sources.list.d
ln -s -f /etc/apt/sources.list /etc/aptss/sources.list
# Remove the sources.list file
if [ -e /etc/apt/sources.list.d/sparkstore.list ];then
rm /etc/apt/sources.list.d/sparkstore.list
fi
# Remove the sources.list file
rm -f /etc/apt/sources.list.d/sparkstore.list
# Check if /usr/local/bin existed # Check if /usr/local/bin existed
mkdir -p /usr/local/bin mkdir -p /usr/local/bin
@@ -25,28 +29,32 @@ case "$1" in
ln -s -f /opt/durapps/spark-store/bin/spark-dstore-patch /usr/local/bin/spark-dstore-patch ln -s -f /opt/durapps/spark-store/bin/spark-dstore-patch /usr/local/bin/spark-dstore-patch
ln -s -f /opt/durapps/spark-store/bin/aptss /usr/local/bin/ss-apt-fast ln -s -f /opt/durapps/spark-store/bin/aptss /usr/local/bin/ss-apt-fast
ln -s -f /opt/durapps/spark-store/bin/aptss /usr/bin/aptss ln -s -f /opt/durapps/spark-store/bin/aptss /usr/bin/aptss
# Create symbol links for SSINSTALL # Create symbol links for SSINSTALL
ln -s -f /opt/durapps/spark-store/bin/auto-install-policy/store.spark-app.ssinstall.policy /usr/share/polkit-1/actions/store.spark-app.ssinstall.policy ln -s -f /opt/durapps/spark-store/bin/auto-install-policy/store.spark-app.ssinstall.policy /usr/share/polkit-1/actions/store.spark-app.ssinstall.policy
# Compile sender module
echo "Compiling the Sender module..." echo "Compiling the Sender module..."
gcc -Wformat -Wformat-security -Werror=format-security /opt/durapps/spark-store/bin/ss-feedback/sender-d.sh.c -o /opt/durapps/spark-store/bin/ss-feedback/sender-d gcc -Wformat -Wformat-security -Werror=format-security /opt/durapps/spark-store/bin/ss-feedback/sender-d.sh.c -o /opt/durapps/spark-store/bin/ss-feedback/sender-d
# Install key # Install key
mkdir -p /tmp/spark-store-install/ mkdir -p /tmp/spark-store-install/
cp -f /opt/durapps/spark-store/bin/spark-store.asc /tmp/spark-store-install/spark-store.asc cp -f /opt/durapps/spark-store/bin/spark-store.asc /tmp/spark-store-install/spark-store.asc
gpg --dearmor /tmp/spark-store-install/spark-store.asc gpg --dearmor /tmp/spark-store-install/spark-store.asc
cp -f /tmp/spark-store-install/spark-store.asc.gpg /etc/apt/trusted.gpg.d/spark-store.gpg cp -f /tmp/spark-store-install/spark-store.asc.gpg /etc/apt/trusted.gpg.d/spark-store.gpg
# Run apt update to avoid users being fucked up by the non-exist dependency problem
# Run apt update to avoid users being fucked up by the non-exist dependency problem
# Now abandoned as aptss now run ssupdate everytime # Now abandoned as aptss now run ssupdate everytime
#aptss ssupdate #aptss ssupdate
# Start upgrade detect service # Start upgrade detect service
systemctl enable spark-update-notifier systemctl enable spark-update-notifier
systemctl start spark-update-notifier service spark-update-notifier start
# Update certain caches # Update certain caches
update-icon-caches /usr/share/icons/hicolor || true update-icon-caches /usr/share/icons/hicolor || true
@@ -55,10 +63,12 @@ case "$1" in
update-mime-database /usr/share/mime || true update-mime-database /usr/share/mime || true
# Send email for statistics # Send email for statistics
#/tmp/spark-store-install/feedback.sh # /tmp/spark-store-install/feedback.sh
# Remove temp dir # Remove temp dir
rm -rf /tmp/spark-store-install rm -rf /tmp/spark-store-install
;; ;;
triggered) triggered)

View File

@@ -1,35 +1,48 @@
#!/bin/sh #!/bin/sh
if [ "$1" = "remove" ] || [ "$1" = "purge" ] ; then if [ "$1" = "remove" ] || [ "$1" = "purge" ];then
# Remove residual symbol links # Remove residual symbol links
rm -f /usr/local/bin/spark-store rm /usr/local/bin/spark-store
rm -f /usr/local/bin/ssinstall rm /usr/local/bin/ssinstall
rm -f /usr/local/bin/ssaudit rm /usr/local/bin/ssaudit
rm -f /usr/local/bin/spark-dstore-patch rm /usr/local/bin/spark-dstore-patch
rm -f /usr/local/bin/ussinstall rm /usr/local/bin/ussinstall
rm -f /usr/local/bin/ussremove rm /usr/local/bin/ussremove
rm -f /usr/local/bin/ss-apt-fast rm /usr/local/bin/ss-apt-fast
rm -f /usr/bin/aptss rm /usr/bin/aptss
rm -rf /etc/aptss/ rm -rf /etc/aptss/
# Remove Sender module # Remove Sender module
rm -f /opt/durapps/spark-store/bin/ss-feedback/sender-d rm /opt/durapps/spark-store/bin/ss-feedback/sender-d
# Remove residual symbol links to stop upgrade detect if exist
if [ -e /etc/xdg/autostart/spark-update-notifier.desktop ];then
rm /etc/xdg/autostart/spark-update-notifier.desktop
fi
# Shutdown services
service spark-update-notifier stop
# Stop update detect service
systemctl disable spark-update-notifier
# Clean the auto install polkit file if exist
if [ -f "/usr/share/polkit-1/actions/store.spark-app.ssinstall.policy" ] ; then
rm /usr/share/polkit-1/actions/store.spark-app.ssinstall.policy
fi
# Remove gpg key file
if [ -f "/etc/apt/trusted.gpg.d/spark-store.gpg" ] ; then
rm /etc/apt/trusted.gpg.d/spark-store.gpg
fi
apt-key del '9D9A A859 F750 24B1 A1EC E16E 0E41 D354 A29A 440C'
else
echo "非卸载操作,不进行配置清理"
# Remove residual symbol links to stop upgrade detect
rm -f /etc/xdg/autostart/spark-update-notifier.desktop
# Shutdown services
systemctl stop spark-update-notifier
# Stop update detect service
systemctl disable spark-update-notifier
# Clean the auto install polkit file if exist
rm -f /usr/share/polkit-1/actions/store.spark-app.ssinstall.policy
# Remove gpg key file
rm -f /etc/apt/trusted.gpg.d/spark-store.gpg
apt-key del '9D9A A859 F750 24B1 A1EC E16E 0E41 D354 A29A 440C'
else
echo "非卸载操作,不进行配置清理"
fi fi

View File

@@ -1,26 +0,0 @@
{
"magic": "dsg.config.meta",
"version": "1.0",
"contents": {
"featureUpdated": {
"value": false,
"serial": 0,
"flags": [],
"name": "Whether the application has new feature updates",
"name[zh_CN]": "配置应用的更新状态",
"description": "Configure the update status of the application",
"permissions": "readwrite",
"visibility": "public"
},
"autoDisplayFeature": {
"value": false,
"serial": 0,
"flags": [],
"name": "The application automatically display new features once",
"name[zh_CN]": "配置应用是否自动展示一次新特性",
"description": "The application automatically display updated contents once",
"permissions": "readwrite",
"visibility": "public"
}
}
}

View File

@@ -14,14 +14,8 @@ SUBDIRS += \
src/spark-dstore-patch \ src/spark-dstore-patch \
src/spark-store.pro src/spark-store.pro
# https://wiki.debian.org/Hardening
QMAKE_CFLAGS *= $(shell dpkg-buildflags --get CFLAGS)
QMAKE_CPPFLAGS *= $(shell dpkg-buildflags --get CPPFLAGS)
QMAKE_CXXFLAGS *= $(shell dpkg-buildflags --get CXXFLAGS)
QMAKE_LFLAGS *= $(shell dpkg-buildflags --get LDFLAGS)
# Update translation files # Update translation files
CONFIG(release, debug | release) { CONFIG(release, debug|release) {
system(bash $${PWD}/translate_update.sh) system(bash $${PWD}/translate_update.sh)
system(bash $${PWD}/translate_generation.sh) system(bash $${PWD}/translate_generation.sh)
} }
@@ -72,3 +66,9 @@ INSTALLS += \
bash_completion \ bash_completion \
polkit-1 polkit-1
# 暂时不添加 # 暂时不添加
# https://wiki.debian.org/Hardening
QMAKE_CPPFLAGS *= $(shell dpkg-buildflags --get CPPFLAGS)
QMAKE_CFLAGS *= $(shell dpkg-buildflags --get CFLAGS)
QMAKE_CXXFLAGS *= $(shell dpkg-buildflags --get CXXFLAGS)
QMAKE_LFLAGS *= $(shell dpkg-buildflags --get LDFLAGS)

View File

@@ -1,14 +1,10 @@
#include "application.h" #include "application.h"
#include "mainwindow-dtk.h" #include "mainwindow-dtk.h"
#include "utils/utils.h"
#include <DPlatformWindowHandle> #include <DPlatformWindowHandle>
#include <DLog> #include <DLog>
#include <DGuiApplicationHelper> #include <DGuiApplicationHelper>
#include <DAboutDialog> #include <DAboutDialog>
#if (DTK_VERSION >= DTK_VERSION_CHECK(5, 6, 4, 0))
#include <DFeatureDisplayDialog>
#endif
#include <QSettings> #include <QSettings>
#include <QStandardPaths> #include <QStandardPaths>
@@ -47,9 +43,6 @@ Application::Application(int &argc, char **argv)
// 初始化日志模块 (默认日志位置 ~/.cache/spark-union/spark-store) // 初始化日志模块 (默认日志位置 ~/.cache/spark-union/spark-store)
DLogManager::registerConsoleAppender(); DLogManager::registerConsoleAppender();
DLogManager::registerFileAppender(); DLogManager::registerFileAppender();
// 获取版本特性信息
m_featuresJsonObj = Utils::parseFeatureJsonFile();
} }
void Application::handleAboutAction() void Application::handleAboutAction()
@@ -60,21 +53,9 @@ void Application::handleAboutAction()
} }
initAboutDialog(); initAboutDialog();
#if (DTK_VERSION >= DTK_VERSION_CHECK(5, 6, 4, 0))
initFeatureDisplayDialog(); // 初始化版本特性对话框
#endif
DApplication::handleAboutAction(); DApplication::handleAboutAction();
} }
bool Application::notify(QObject *receiver, QEvent *event)
{
if (m_mainWindow) {
m_mainWindow->notify(receiver, event);
}
return DApplication::notify(receiver, event);
}
void Application::checkAppConfigLocation() void Application::checkAppConfigLocation()
{ {
QDir dir(QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation)); QDir dir(QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation));
@@ -84,18 +65,21 @@ void Application::checkAppConfigLocation()
} }
} }
void Application::setBuildDateTime(const QString &buildDateTime) 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); QSettings config(QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation) + "/config.ini", QSettings::IniFormat);
if (config.value("build/version").toString() != QString(APP_VERSION)) { if (config.value("build/version").toString() != m_version) {
qDebug() << "Spark Store has been updated!"; qDebug() << "Spark Store has been updated!";
config.setValue("build/version", QString(APP_VERSION)); config.setValue("build/version", m_version);
config.setValue("build/time", buildDateTime); config.setValue("build/time", m_buildDateTime);
config.sync(); config.sync();
} }
setApplicationVersion(DApplication::buildVersion(QString(APP_VERSION) + "-" + "Flamescion" + "-" + buildDateTime)); setApplicationVersion(DApplication::buildVersion(config.value("build/version").toString() + "-" + "Flamescion" + "-" + config.value("build/time").toString()));
} }
void Application::setMainWindow(MainWindow *window) void Application::setMainWindow(MainWindow *window)
@@ -105,12 +89,6 @@ void Application::setMainWindow(MainWindow *window)
{ {
initAboutDialog(); initAboutDialog();
} }
#if (DTK_VERSION >= DTK_VERSION_CHECK(5, 6, 4, 0))
if (featureDisplayDialog() == nullptr || featureDisplayDialog()->parent() != m_mainWindow)
{
initFeatureDisplayDialog(); // 初始化版本特性对话框
}
#endif
} }
void Application::initAboutDialog() void Application::initAboutDialog()
@@ -131,9 +109,6 @@ void Application::initAboutDialog()
dialog->setProductName(productName()); dialog->setProductName(productName());
dialog->setProductIcon(productIcon()); dialog->setProductIcon(productIcon());
dialog->setVersion(translate("DAboutDialog", "Version: %1").arg(applicationVersion())); dialog->setVersion(translate("DAboutDialog", "Version: %1").arg(applicationVersion()));
#if (DTK_VERSION >= DTK_VERSION_CHECK(5, 6, 4, 0))
dialog->setVersion(applicationVersion());
#endif
// 根据 shenmo 要求,不显示组织 Logo // 根据 shenmo 要求,不显示组织 Logo
// dialog->setCompanyLogo(QPixmap(":/icon/Logo-Spark.png")); // dialog->setCompanyLogo(QPixmap(":/icon/Logo-Spark.png"));
dialog->setCompanyLogo(QPixmap()); dialog->setCompanyLogo(QPixmap());
@@ -143,70 +118,9 @@ void Application::initAboutDialog()
dialog->setLicense(translate("DAboutDialog", "%1 is released under %2").arg(productName()).arg(applicationLicense())); dialog->setLicense(translate("DAboutDialog", "%1 is released under %2").arg(productName()).arg(applicationLicense()));
setAboutDialog(dialog); setAboutDialog(dialog);
connect(aboutDialog(), &DAboutDialog::destroyed, this, [=]() { connect(aboutDialog(), &DAboutDialog::destroyed, this, [=] {
setAboutDialog(nullptr); setAboutDialog(nullptr);
}); });
dialog->hide(); dialog->hide();
} }
#if (DTK_VERSION >= DTK_VERSION_CHECK(5, 6, 4, 0))
/**
* @brief Application::initFeatureDisplayDialog 初始化版本特性对话框
*/
void Application::initFeatureDisplayDialog()
{
if (featureDisplayDialog())
{
featureDisplayDialog()->deleteLater();
setFeatureDisplayDialog(nullptr);
}
// 自定义 DFeatureDisplayDialog
DFeatureDisplayDialog *dialog = new DFeatureDisplayDialog(m_mainWindow);
// 标题
dialog->setTitle(m_featuresJsonObj.value("title").toString());
// NOTE: json 文件中支持多语言;考虑到维护性,不放入翻译文件处理
if (m_featuresJsonObj.contains(QString("title[%1]").arg(QLocale::system().name())))
{
dialog->setTitle(m_featuresJsonObj.value(QString("title[%1]").arg(QLocale::system().name())).toString());
}
// 特性项
QList<DFeatureItem *> items;
foreach (const QJsonValue &jsonValue, m_featuresJsonObj.value("items").toArray())
{
QJsonObject jsonObj = jsonValue.toObject();
QString name = jsonObj.value("name").toString();
if (jsonObj.contains(QString("name[%1]").arg(QLocale::system().name())))
{
name = jsonObj.value(QString("name[%1]").arg(QLocale::system().name())).toString();
}
QString description = jsonObj.value("description").toString();
if (jsonObj.contains(QString("description[%1]").arg(QLocale::system().name())))
{
description = jsonObj.value(QString("description[%1]").arg(QLocale::system().name())).toString();
}
DFeatureItem *item = new DFeatureItem(QIcon::fromTheme("spark-store"), name, description, dialog);
items.append(item);
}
dialog->addItems(items); // NOTE: 也支持 addItem 依次添加单个 item
// “了解更多”链接按钮
dialog->setLinkUrl(m_featuresJsonObj.value("linkUrl").toString());
dialog->setLinkButtonVisible(m_featuresJsonObj.value("linkButtonVisible").toBool());
setFeatureDisplayDialog(dialog);
connect(featureDisplayDialog(), &DFeatureDisplayDialog::destroyed, this, [=]() {
setFeatureDisplayDialog(nullptr);
});
#if (DTK_VERSION >= DTK_VERSION_CHECK(5, 6, 4, 0))
connect(aboutDialog(), &DAboutDialog::featureActivated, this, [=]() {
featureDisplayDialog()->show();
});
#endif
dialog->hide();
}
#endif

View File

@@ -3,8 +3,6 @@
#include <DApplication> #include <DApplication>
#include <QJsonObject>
DWIDGET_USE_NAMESPACE DWIDGET_USE_NAMESPACE
class MainWindow; class MainWindow;
@@ -15,21 +13,18 @@ class Application : public DApplication
public: public:
Application(int &argc, char **argv); Application(int &argc, char **argv);
void handleAboutAction() override; void handleAboutAction() override;
bool notify(QObject *receiver, QEvent *event) override;
static void checkAppConfigLocation(); static void checkAppConfigLocation();
void setBuildDateTime(const QString &buildDateTime); void setVersionAndBuildDateTime(const QString &version, const QString &buildDateTime);
void setMainWindow(MainWindow *window); void setMainWindow(MainWindow *window);
private: private:
void initAboutDialog(); void initAboutDialog();
#if (DTK_VERSION >= DTK_VERSION_CHECK(5, 6, 4, 0))
void initFeatureDisplayDialog();
#endif
private: private:
QJsonObject m_featuresJsonObj; QString m_version;
QString m_buildDateTime;
MainWindow *m_mainWindow = nullptr; MainWindow *m_mainWindow = nullptr;
}; };

View File

@@ -44,7 +44,6 @@
<file>icon/light/text.svg</file> <file>icon/light/text.svg</file>
<file>icon/light/update.svg</file> <file>icon/light/update.svg</file>
<file>icon/logo.svg</file> <file>icon/logo.svg</file>
<file>json/features.json</file>
<file>tags/a2d-small.png</file> <file>tags/a2d-small.png</file>
<file>tags/a2d.png</file> <file>tags/a2d.png</file>
<file>tags/community-small.png</file> <file>tags/community-small.png</file>

View File

@@ -1,25 +0,0 @@
{
"title": "Features",
"title[zh_CN]": "版本特性",
"items": [
{
"icon": "/usr/share/icons/hicolor/scalable/apps/spark-store.svg",
"name": "Feature 1",
"name[zh_CN]": "特性 1",
"description": "Please click the learn more button to check",
"description[zh_CN]": "请点击 了解更多 按钮来获取特性"
},
{
"icon": ":/icon/logo.svg",
"name": "Feature 2",
"description": "Feature 2 detailed description..."
},
{
"icon": "spark-store",
"name": "Fix 1",
"description": "Fix 1 detailed description..."
}
],
"linkUrl": "https://gitee.com/deepin-community-store/spark-store/releases/4.2.3test3",
"linkButtonVisible": true
}

View File

@@ -1,7 +1,9 @@
#include "downloadworker.h" #include "downloadworker.h"
#include <QEventLoop>
#include <QProcess> #include <QProcess>
#include <QRegularExpression> #include <QRegularExpression>
#include <QDir>
#include <QtConcurrent> #include <QtConcurrent>
#include <QStandardPaths> #include <QStandardPaths>

View File

@@ -2,7 +2,9 @@
#define DOWNLOADWORKER_H #define DOWNLOADWORKER_H
#include <QObject> #include <QObject>
#include <QVector> #include <QList>
#include <QFile>
#include <QNetworkReply>
class DownloadController : public QObject class DownloadController : public QObject
{ {
@@ -17,19 +19,23 @@ public:
qint64 getFileSize(const QString& url); qint64 getFileSize(const QString& url);
QString replaceDomain(const QString& url, const QString domain); QString replaceDomain(const QString& url, const QString domain);
signals:
void errorOccur(const QString& msg);
void downloadProcess(QString, qint64, qint64);
void downloadFinished();
private: private:
int threadNum; int threadNum;
qint64 pidNumber = -1; qint64 pidNumber = -1;
QString filename; QString filename;
qint64 fileSize; qint64 fileSize;
QVector<QPair<qint64, qint64>> ranges; QVector<QPair<qint64, qint64>> ranges;
QFile *file;
bool finished = false; bool finished = false;
QVector<QString> domains; QVector<QString> domains;
signals:
void errorOccur(const QString& msg);
void downloadProcess(QString, qint64, qint64);
void downloadFinished();
}; };
#endif // FILEDOWNLOADWORKER_H #endif // FILEDOWNLOADWORKER_H

View File

@@ -18,6 +18,7 @@ DWIDGET_USE_NAMESPACE
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
// Get build time // Get build time
static const QString version = "4.2.3";
static const QDate buildDate = QLocale(QLocale::English).toDate(QString(__DATE__).replace(" ", " 0"), "MMM dd yyyy"); static const QDate buildDate = QLocale(QLocale::English).toDate(QString(__DATE__).replace(" ", " 0"), "MMM dd yyyy");
static const QTime buildTime = QTime::fromString(__TIME__, "hh:mm:ss"); static const QTime buildTime = QTime::fromString(__TIME__, "hh:mm:ss");
static const QString buildDateTime = buildDate.toString("yyyy.MM.dd") + "-" + buildTime.toString("hh:mm:ss"); static const QString buildDateTime = buildDate.toString("yyyy.MM.dd") + "-" + buildTime.toString("hh:mm:ss");
@@ -58,7 +59,7 @@ int main(int argc, char *argv[])
int fakeArgc = argc + 2; // QCoreApplication 的 argc 要用引用,避免 c++ 编译器优化 int fakeArgc = argc + 2; // QCoreApplication 的 argc 要用引用,避免 c++ 编译器优化
Application a(fakeArgc, fakeArgs.data()); Application a(fakeArgc, fakeArgs.data());
// 设置版本和构建时间 // 设置版本和构建时间
a.setBuildDateTime(buildDateTime); a.setVersionAndBuildDateTime(version, buildDateTime);
// 限制单实例运行 // 限制单实例运行
if (!a.setSingleInstance("spark-store")) if (!a.setSingleInstance("spark-store"))

View File

@@ -3,7 +3,6 @@
#include "utils/widgetanimation.h" #include "utils/widgetanimation.h"
#include "widgets/common/progressbutton.h" #include "widgets/common/progressbutton.h"
#include "widgets/downloadlistwidget.h" #include "widgets/downloadlistwidget.h"
#include "widgets/common/downloaditem.h"
#include "dbus/dbussparkstoreservice.h" #include "dbus/dbussparkstoreservice.h"
#include "application.h" #include "application.h"
@@ -11,7 +10,6 @@
#include <DWidgetUtil> #include <DWidgetUtil>
#include <DGuiApplicationHelper> #include <DGuiApplicationHelper>
#include <QDesktopServices>
#include <QAbstractButton> #include <QAbstractButton>
#include <QtConcurrent> #include <QtConcurrent>
@@ -134,9 +132,6 @@ void MainWindow::initTitleBar()
searchEdit->setPlaceholderText(tr("Search or enter spk://")); searchEdit->setPlaceholderText(tr("Search or enter spk://"));
downloadButton = new ProgressButton(ui->titlebar); downloadButton = new ProgressButton(ui->titlebar);
downloadButton->setDownloadListWidget(downloadlistwidget);
downloadButton->setFocusPolicy(Qt::FocusPolicy::ClickFocus);
downloadlistwidget->setFocusProxy(downloadButton);
QWidget *w_titlebar = new QWidget(ui->titlebar); QWidget *w_titlebar = new QWidget(ui->titlebar);
QHBoxLayout *ly_titlebar = new QHBoxLayout(w_titlebar); QHBoxLayout *ly_titlebar = new QHBoxLayout(w_titlebar);
@@ -302,6 +297,14 @@ void MainWindow::initConnections()
ui->appintopage->setTheme(themeType == DGuiApplicationHelper::DarkType); ui->appintopage->setTheme(themeType == DGuiApplicationHelper::DarkType);
ui->settingspage->setTheme(themeType == DGuiApplicationHelper::DarkType); }); ui->settingspage->setTheme(themeType == DGuiApplicationHelper::DarkType); });
connect(downloadButton, &ProgressButton::clicked, [=]()
{
QPoint pos;
pos.setX(downloadButton->mapToGlobal(QPoint(0, 0)).x() + downloadButton->width() / 2 - downloadlistwidget->width() / 2);
pos.setY(downloadButton->mapToGlobal(QPoint(0, 0)).y() + downloadButton->height() + 5);
downloadlistwidget->m_move(pos.x(), pos.y());
downloadlistwidget->show(); });
// appintopage按下下载按钮时标题栏下载列表按钮抖动 // appintopage按下下载按钮时标题栏下载列表按钮抖动
connect(ui->appintopage, &AppIntoPage::clickedDownloadBtn, [=]() connect(ui->appintopage, &AppIntoPage::clickedDownloadBtn, [=]()
{ {
@@ -418,35 +421,6 @@ void MainWindow::updateUi(int now)
switchPage(AppPageApplist); switchPage(AppPageApplist);
} }
void MainWindow::notify(QObject *receiver, QEvent *event)
{
if (!receiver) {
return;
}
Dtk::Widget::DStyle *o_ptr = qobject_cast<Dtk::Widget::DStyle *>(receiver);
if (o_ptr) {
return;
}
if (receiver->inherits("QWidgetWindow")
|| receiver->inherits("QStyleSheetStyle")) {
return;
}
if (event->type() == QEvent::FocusIn) {
QList<QObject *> list = downloadButton->findChildren<QObject *>(QString(), Qt::FindChildrenRecursively);
list << downloadlistwidget->findChildren<QObject *>(QString(), Qt::FindChildrenRecursively);
if (receiver != downloadButton && receiver != downloadlistwidget && !list.contains(receiver)) {
downloadlistwidget->hide();
}
} else if (event->type() == QEvent::FocusOut) {
if (!downloadlistwidget->isActiveWindow() && !isActiveWindow()) {
downloadlistwidget->hide();
}
}
}
void MainWindow::on_pushButton_14_clicked() void MainWindow::on_pushButton_14_clicked()
{ {
// Check UOS // Check UOS

View File

@@ -25,7 +25,7 @@ class MainWindow : public BaseWidgetOpacity
public: public:
explicit MainWindow(QWidget *parent = nullptr); explicit MainWindow(QWidget *parent = nullptr);
~MainWindow() override; ~MainWindow();
void openUrl(const QString &url); void openUrl(const QString &url);
@@ -41,9 +41,6 @@ private:
void switchPage(int now); void switchPage(int now);
void updateUi(int now); void updateUi(int now);
public slots:
void notify(QObject *receiver, QEvent *event);
private slots: private slots:
//接受来自dbus的url //接受来自dbus的url
void onGetUrl(const QString &url); void onGetUrl(const QString &url);

View File

@@ -2,10 +2,8 @@
#include "ui_appintopage.h" #include "ui_appintopage.h"
#include "backend/sparkapi.h" #include "backend/sparkapi.h"
#include "widgets/downloadlistwidget.h" #include "widgets/downloadlistwidget.h"
#include "widgets/common/downloaditem.h"
#include "backend/image_show.h" #include "backend/image_show.h"
#include "application.h" #include "application.h"
#include "utils/utils.h"
#include <QtConcurrent> #include <QtConcurrent>
#include <QClipboard> #include <QClipboard>

View File

@@ -1,6 +1,8 @@
#ifndef APPINTOPAGE_H #ifndef APPINTOPAGE_H
#define APPINTOPAGE_H #define APPINTOPAGE_H
#include "utils/utils.h"
#include <QWidget> #include <QWidget>
#include <QJsonObject> #include <QJsonObject>
#include <QUrl> #include <QUrl>

View File

@@ -22,13 +22,8 @@ DEFINES += QT_DEPRECATED_WARNINGS
# You can also select to disable deprecated APIs only up to a certain version of Qt. # You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
# Get build version from qmake
VERSION = $$BUILD_VERSION
isEmpty(VERSION): VERSION = 4.0.0
DEFINES += APP_VERSION=\\\"'$${VERSION}'\\\"
# Disable qWarning / qDebug output in Release # Disable qWarning / qDebug output in Release
#CONFIG(release, debug | release): DEFINES += QT_NO_WARNING_OUTPUT QT_NO_DEBUG_OUTPUT # CONFIG(release, debug|release): DEFINES += QT_NO_WARNING_OUTPUT QT_NO_DEBUG_OUTPUT
CONFIG += c++11 link_pkgconfig CONFIG += c++11 link_pkgconfig
PKGCONFIG += dtkcore dtkgui dtkwidget PKGCONFIG += dtkcore dtkgui dtkwidget

View File

@@ -8,7 +8,6 @@
#include <QSettings> #include <QSettings>
#include <QStandardPaths> #include <QStandardPaths>
#include <QFile> #include <QFile>
#include <QJsonDocument>
#define UOSDeveloperModeFile "/var/lib/deepin/developer-mode/enabled" #define UOSDeveloperModeFile "/var/lib/deepin/developer-mode/enabled"
@@ -183,33 +182,3 @@ void Utils::checkUOSDeveloperMode()
file.close(); file.close();
config.sync(); // 写入更改至 config.ini并同步最新内容 config.sync(); // 写入更改至 config.ini并同步最新内容
} }
/**
* @brief Utils::parseFeatureJsonFile 解析版本特性 json 文件
* @return 返回 QJsonObject
*/
QJsonObject Utils::parseFeatureJsonFile()
{
QFile file(":/json/features.json");
if (!file.open(QFile::ReadOnly))
{
qWarning() << Q_FUNC_INFO << "features.json open failed";
return QJsonObject();
}
QJsonParseError error;
QJsonDocument jsonDoc = QJsonDocument::fromJson(file.readAll(), &error);
if (error.error != QJsonParseError::NoError || jsonDoc.isNull())
{
qWarning() << Q_FUNC_INFO << "features.json validate failed:" << error.errorString();
return QJsonObject();
}
if (jsonDoc.isEmpty() || !jsonDoc.isObject())
{
qWarning() << Q_FUNC_INFO << "features jsonDoc parse failed:" << jsonDoc;
return QJsonObject();
}
return jsonDoc.object();
}

View File

@@ -2,7 +2,6 @@
#define UTILS_H #define UTILS_H
#include <QObject> #include <QObject>
#include <QJsonObject>
class Utils class Utils
{ {
@@ -14,7 +13,6 @@ public:
static bool isUOS(); static bool isUOS();
static void setQPAPlatform(); static void setQPAPlatform();
static void checkUOSDeveloperMode(); static void checkUOSDeveloperMode();
static QJsonObject parseFeatureJsonFile();
}; };
#endif // UTILS_H #endif // UTILS_H

View File

@@ -61,21 +61,8 @@ QString DownloadItem::getName()
return ui->label_filename->text(); return ui->label_filename->text();
} }
void DownloadItem::readyInstall()
/***************************************************************
* @brief 告知界面,准备安装
* @param
* @note 如果正在安装,返回-1
* @Sample usage: DownloadItem::install(0);
**************************************************************/
int DownloadItem::readyInstall()
{ {
// 检查是否正在安装,如果是返回错误 -1
if (isInstall)
{
return -1;
}
if (!close) if (!close)
{ {
ui->progressBar->hide(); ui->progressBar->hide();
@@ -83,9 +70,7 @@ int DownloadItem::readyInstall()
ui->pushButton_install->show(); ui->pushButton_install->show();
DownloadItem::install(0); DownloadItem::install(0);
ui->pushButton_2->hide(); ui->pushButton_2->hide();
return 1;
} }
return 0;
} }
void DownloadItem::setFileName(QString fileName) void DownloadItem::setFileName(QString fileName)
@@ -108,12 +93,6 @@ void DownloadItem::setSpeed(QString s)
speed = s; speed = s;
} }
/***************************************************************
* @brief 安装当前应用
* @param int t, t为安装方式可以为 0,1,2
* @note 备注
* @Sample usage: DownloadItem::install(0);
**************************************************************/
void DownloadItem::install(int t) void DownloadItem::install(int t)
{ {
if (!isInstall) if (!isInstall)
@@ -163,12 +142,6 @@ void DownloadItem::on_pushButton_3_clicked()
output_w->show(); output_w->show();
} }
/***************************************************************
* @brief 实际安装应用
* @param int t, t为安装方式可以为 0,1,2
* @note 备注
* @Sample usage: slotAsyncInstall(0);
**************************************************************/
void DownloadItem::slotAsyncInstall(int t) void DownloadItem::slotAsyncInstall(int t)
{ {
QProcess installer; QProcess installer;

View File

@@ -34,7 +34,7 @@ public:
void setMax(qint64); void setMax(qint64);
void setName(QString); void setName(QString);
QString getName(); QString getName();
int readyInstall(); void readyInstall();
void setFileName(QString); void setFileName(QString);
void seticon(const QPixmap); void seticon(const QPixmap);

View File

@@ -1,20 +1,20 @@
#include "progressbutton.h" #include "progressbutton.h"
#include "widgets/downloadlistwidget.h"
#include <QPainter> #include <QPainter>
#include <QPainterPath> #include <QPainterPath>
#include <QMoveEvent> #include <QRect>
#include <QConicalGradient>
#include <QVariantAnimation>
#include <QSvgRenderer> #include <QSvgRenderer>
ProgressButton::ProgressButton(QWidget *parent) ProgressButton::ProgressButton(QWidget *parent)
: QWidget{parent} : QWidget{parent}
{ {
// this->setWindowFlags(Qt::FramelessWindowHint); // this->setWindowFlags(Qt::FramelessWindowHint);
// this->setAttribute(Qt::WA_TranslucentBackground, true); // this->setAttribute(Qt::WA_TranslucentBackground, true);
setMinimumSize(36, 36); setMinimumWidth(36);
setMinimumHeight(36);
svgPath = ""; svgPath = "";
backColor = Qt::transparent; backColor = Qt::transparent;
setMouseTracking(true);
connect(this, &ProgressButton::startProcessing, this, &ProgressButton::operationProcessing, Qt::QueuedConnection); connect(this, &ProgressButton::startProcessing, this, &ProgressButton::operationProcessing, Qt::QueuedConnection);
} }
@@ -23,6 +23,69 @@ ProgressButton::~ProgressButton()
{ {
} }
void ProgressButton::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing, true);
auto rect = event->rect();
if (buttonState == state::normal || buttonState == state::hover)
{
auto radiu = (rect.height() - 6) / 2;
painter.translate(rect.center());
painter.setPen(Qt::transparent);
painter.setBrush(QColor(buttonState == state::normal ? color : color.darker()));
// painter.drawEllipse(QPoint(0,0),radiu,radiu);
// radiu -= 3;
painter.setBrush(backColor);
painter.drawEllipse(QPoint(0, 0), radiu, radiu);
QSvgRenderer m_svgRender;
m_svgRender.load(svgPath);
m_svgRender.render(&painter, QRectF(-radiu / 2, -radiu / 2, radiu, radiu));
}
else if (buttonState == state::openProgress)
{
painter.translate(rect.center());
auto radiu = (rect.height() - 6) / 2 - 3;
painter.setBrush(backColor);
painter.setPen(QPen(backColor, 3));
painter.drawEllipse(QPoint(0, 0), radiu, radiu);
painter.setPen(QPen(backColor, 3));
QSvgRenderer m_svgRender;
m_svgRender.load(svgPath);
m_svgRender.render(&painter, QRectF(-radiu / 2, -radiu / 2, radiu, radiu));
QRect rect = QRect(-radiu, -radiu,
radiu * 2, radiu * 2);
painter.setPen(QPen(color.darker(100), 3));
auto angle = progress * 360 / 100;
painter.drawArc(rect.adjusted(-3, -3, 3, 3), 90 * 16, -static_cast<int>(angle * 16));
}
else if (buttonState == state::closeProgress)
{
auto radiu = (rect.height() - 6) / 2;
painter.translate(rect.center());
painter.setPen(Qt::transparent);
painter.setBrush(QColor(0, 0, 0, 63));
painter.drawEllipse(QPoint(0, 0), radiu, radiu);
radiu -= 3;
painter.setBrush(backColor);
painter.drawEllipse(QPoint(0, 0), radiu, radiu);
painter.setPen(QPen(color, 3, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));
painter.drawLine(QPoint(-radiu / 3, 0),
QPoint(-radiu / 5, radiu / 3));
painter.drawLine(QPoint(-radiu / 5, radiu / 3),
QPoint(radiu / 4, -radiu / 4));
}
}
void ProgressButton::setProgress(int progress) void ProgressButton::setProgress(int progress)
{ {
buttonState = state::openProgress; buttonState = state::openProgress;
@@ -44,11 +107,6 @@ void ProgressButton::setProgress(int progress)
update(); update();
} }
void ProgressButton::setDownloadListWidget(DownloadListWidget *widget)
{
m_downloadListWidget = widget;
}
void ProgressButton::setIcon(QString svgPATH) void ProgressButton::setIcon(QString svgPATH)
{ {
svgPath = svgPATH; svgPath = svgPATH;
@@ -67,56 +125,6 @@ void ProgressButton::setColor(QColor color)
update(); update();
} }
void ProgressButton::mousePressEvent(QMouseEvent *event)
{
m_mouseMoved = false;
m_isDownloadListWidgetVisible = m_downloadListWidget->isVisible();
m_downloadListWidget->hide();
QWidget::mousePressEvent(event);
}
void ProgressButton::mouseReleaseEvent(QMouseEvent *event)
{
if (buttonState == state::hover || buttonState == state::normal)
{
widthChangeValue = (this->width() - 6) / 2;
update();
}
else if (buttonState == state::closeProgress)
{
update();
}
if (m_mouseMoved) {
return QWidget::mouseReleaseEvent(event);
}
if (m_isDownloadListWidgetVisible) {
m_downloadListWidget->hide();
} else {
QPoint pos(this->mapToGlobal(QPoint(0, 0)));
pos += QPoint(width() / 2 - m_downloadListWidget->width() / 2, height() + 5);
m_downloadListWidget->m_move(pos.x(), pos.y());
m_downloadListWidget->setWindowState(windowState() & Qt::WindowState::WindowActive);
m_downloadListWidget->activateWindow();
m_downloadListWidget->show();
m_downloadListWidget->raise();
}
m_isDownloadListWidgetVisible = m_downloadListWidget->isVisible();
QWidget::mouseReleaseEvent(event);
}
void ProgressButton::mouseDoubleClickEvent(QMouseEvent *event)
{
event->accept();
}
void ProgressButton::mouseMoveEvent(QMouseEvent *event)
{
m_mouseMoved = true;
QWidget::mouseMoveEvent(event);
}
void ProgressButton::leaveEvent(QEvent *event) void ProgressButton::leaveEvent(QEvent *event)
{ {
if (buttonState == state::hover) if (buttonState == state::hover)
@@ -127,68 +135,19 @@ void ProgressButton::leaveEvent(QEvent *event)
QWidget::leaveEvent(event); QWidget::leaveEvent(event);
} }
void ProgressButton::paintEvent(QPaintEvent *event) void ProgressButton::mousePressEvent(QMouseEvent *event)
{ {
QPainter painter(this); if (buttonState == state::hover || buttonState == state::normal)
painter.setRenderHint(QPainter::Antialiasing, true);
QRect rect = event->rect();
if (buttonState == state::normal || buttonState == state::hover)
{ {
int radius = (rect.height() - 6) / 2; widthChangeValue = (this->width() - 6) / 2;
painter.translate(rect.center()); update();
painter.setPen(Qt::transparent);
painter.setBrush(QColor(buttonState == state::normal ? color : color.darker()));
// painter.drawEllipse(QPoint(0, 0), radius, radius);
// radiu -= 3;
painter.setBrush(backColor);
painter.drawEllipse(QPoint(0, 0), radius, radius);
QSvgRenderer m_svgRender;
m_svgRender.load(svgPath);
m_svgRender.render(&painter, QRectF(-radius / 2, -radius / 2, radius, radius));
}
else if (buttonState == state::openProgress)
{
painter.translate(rect.center());
int radius = (rect.height() - 6) / 2 - 3;
painter.setBrush(backColor);
painter.setPen(QPen(backColor, 3));
painter.drawEllipse(QPoint(0, 0), radius, radius);
painter.setPen(QPen(backColor, 3));
QSvgRenderer m_svgRender;
m_svgRender.load(svgPath);
m_svgRender.render(&painter, QRectF(-radius / 2, -radius / 2, radius, radius));
QRect rect = QRect(-radius, -radius,
radius * 2, radius * 2);
painter.setPen(QPen(color.darker(100), 3));
qreal angle = progress * 360 / 100 * 1.0;
painter.drawArc(rect.adjusted(-3, -3, 3, 3), 90 * 16, -qIntCast(angle * 16));
} }
else if (buttonState == state::closeProgress) else if (buttonState == state::closeProgress)
{ {
auto radius = (rect.height() - 6) / 2; update();
painter.translate(rect.center());
painter.setPen(Qt::transparent);
painter.setBrush(QColor(0, 0, 0, 63));
painter.drawEllipse(QPoint(0, 0), radius, radius);
radius -= 3;
painter.setBrush(backColor);
painter.drawEllipse(QPoint(0, 0), radius, radius);
painter.setPen(QPen(color, 3, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));
painter.drawLine(QPoint(-radius / 3, 0),
QPoint(-radius / 5, radius / 3));
painter.drawLine(QPoint(-radius / 5, radius / 3),
QPoint(radius / 4, -radius / 4));
} }
QWidget::paintEvent(event); emit clicked();
QWidget::mousePressEvent(event);
} }
void ProgressButton::operationProcessing() void ProgressButton::operationProcessing()
@@ -197,16 +156,16 @@ void ProgressButton::operationProcessing()
const int RADIUS = 60; const int RADIUS = 60;
WaterDrop::WaterDrop(QWidget *parent) WaterDrop::WaterDrop(QWidget *parent)
: QWidget(parent) : QWidget(parent), m_waterDropAnimation(nullptr), m_animationRadius(0)
, m_waterDropAnimation(new QVariantAnimation(this))
, m_animationRadius(0)
{ {
this->setFixedSize(QSize(RADIUS * 2, RADIUS * 2)); this->setFixedSize(QSize(RADIUS * 2, RADIUS * 2));
// this->setWindowFlags(Qt::FramelessWindowHint | Qt::Tool); // this->setWindowFlags(Qt::FramelessWindowHint | Qt::Tool);
// this->setAttribute(Qt::WA_TranslucentBackground); // this->setAttribute(Qt::WA_TranslucentBackground);
// this->setAttribute(Qt::WA_DeleteOnClose); // this->setAttribute(Qt::WA_DeleteOnClose);
m_waterDropAnimation = new QVariantAnimation(this);
// m_waterDropAnimation->setEasingCurve(QEasingCurve(static_cast<QEasingCurve::Type>(QRandomGenerator::global()->bounded(40)))); // m_waterDropAnimation->setEasingCurve(QEasingCurve(static_cast<QEasingCurve::Type>(QRandomGenerator::global()->bounded(40))));
connect(m_waterDropAnimation, &QVariantAnimation::finished, this, &WaterDrop::deleteLater);
} }
// 把鼠标点击的点转换为圆心点坐标 // 把鼠标点击的点转换为圆心点坐标
@@ -232,7 +191,8 @@ void WaterDrop::paintEvent(QPaintEvent *event)
{ {
QPainter painter(this); QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing); painter.setRenderHint(QPainter::Antialiasing);
QPen pen(QBrush(QColor("#ffff80")), 5.0); QPen pen;
pen.setColor(QColor(0xffffff80));
pen.setWidth(5); pen.setWidth(5);
painter.setPen(pen); painter.setPen(pen);
painter.drawEllipse(event->rect().center(), m_animationRadius, m_animationRadius); painter.drawEllipse(event->rect().center(), m_animationRadius, m_animationRadius);
@@ -240,7 +200,7 @@ void WaterDrop::paintEvent(QPaintEvent *event)
QWidget::paintEvent(event); QWidget::paintEvent(event);
} }
void WaterDrop::onRadiusChanged(const QVariant &value) void WaterDrop::onRadiusChanged(QVariant value)
{ {
m_animationRadius = value.toInt(); m_animationRadius = value.toInt();
update(); update();

View File

@@ -1,62 +1,53 @@
#ifndef PROGRESSBUTTON_H #ifndef PROGRESSBUTTON_H
#define PROGRESSBUTTON_H #define PROGRESSBUTTON_H
#include <QWidget>
#include <QTimer>
#include <QVariantAnimation>
class DownloadListWidget; #include <QtWidgets/QWidget>
#include <QPaintEvent>
#include <QTimer>
#include <QTimerEvent>
#include<QColor>
#include <QList>
#include <QMouseEvent>
class ProgressButton : public QWidget class ProgressButton : public QWidget
{ {
Q_OBJECT Q_OBJECT
public: public:
explicit ProgressButton(QWidget *parent = nullptr); ProgressButton(QWidget *parent = nullptr);
~ProgressButton() override;
void setIcon(QString svgPATH); void setIcon(QString svgPATH);
void setBackgroundColor(QColor color); void setBackgroundColor(QColor color);
void setColor(QColor color); void setColor(QColor color);
void setProgress(int progress); void setProgress(int progress);
~ProgressButton();
void setDownloadListWidget(DownloadListWidget *widget);
protected:
void mousePressEvent(QMouseEvent *event) override;
void mouseReleaseEvent(QMouseEvent *event) override;
void mouseDoubleClickEvent(QMouseEvent *event) override;
void mouseMoveEvent(QMouseEvent *event) override;
void leaveEvent(QEvent *event) override;
void paintEvent(QPaintEvent *event) override;
signals: signals:
void startProcessing(); void startProcessing();
void clicked(); void clicked();
private slots: protected:
void operationProcessing(); void paintEvent(QPaintEvent *event)override;
void leaveEvent(QEvent *event)override;
void mousePressEvent(QMouseEvent *event)override;
private: private:
enum state enum class state
{ {
normal, normal,
hover, hover,
openProgress, openProgress,
closeProgress, closeProgress,
recovery recovery
}; }
buttonState{state::normal};
DownloadListWidget *m_downloadListWidget = nullptr;
state buttonState{state::normal};
QColor backColor; QColor backColor;
QColor color; QColor color;
QString svgPath; QString svgPath;
int widthChangeValue{0}; int widthChangeValue{0};
void operationProcessing();
int progress{0};//处理百分比 int progress{0};//处理百分比
bool m_mouseMoved = false;
bool m_isDownloadListWidgetVisible = true;
}; };
class WaterDrop : public QWidget class WaterDrop : public QWidget
@@ -64,19 +55,19 @@ class WaterDrop : public QWidget
Q_OBJECT Q_OBJECT
public: public:
explicit WaterDrop(QWidget *parent = nullptr); WaterDrop(QWidget *parent = Q_NULLPTR);
void show(); void show();
void move(const QPoint &point); void move(const QPoint &point);
protected: private:
void paintEvent(QPaintEvent *event); void paintEvent(QPaintEvent *event);
void onRadiusChanged(QVariant value);
private slots:
void onRadiusChanged(const QVariant &value);
private: private:
QVariantAnimation *m_waterDropAnimation = nullptr; class QVariantAnimation* m_waterDropAnimation;
int m_animationRadius; int m_animationRadius;
}; };
#endif // PROGRESSBUTTON_H #endif // PROGRESSBUTTON_H

View File

@@ -1,15 +1,8 @@
#include "downloadlistwidget.h" #include "downloadlistwidget.h"
#include "ui_downloadlistwidget.h" #include "ui_downloadlistwidget.h"
#include "widgets/common/downloaditem.h" #include <QGraphicsOpacityEffect>
#include "backend/sparkapi.h" #include <QPropertyAnimation>
#include "backend/downloadworker.h"
#include "utils/utils.h"
#include "application.h"
#include <QDesktopServices>
#include <QtConcurrent>
#include <QDebug> #include <QDebug>
DownloadListWidget::DownloadListWidget(QWidget *parent) : DBlurEffectWidget(parent), DownloadListWidget::DownloadListWidget(QWidget *parent) : DBlurEffectWidget(parent),
ui(new Ui::DownloadListWidget) ui(new Ui::DownloadListWidget)
{ {
@@ -63,7 +56,7 @@ DownloadListWidget::~DownloadListWidget()
{ {
downloadController->disconnect(); downloadController->disconnect();
downloadController->stopDownload(); downloadController->stopDownload();
// 这里没有释放 downloadController,使用懒汉式单例 downloadController->deleteLater();
} }
clearItem(); clearItem();
@@ -72,9 +65,22 @@ DownloadListWidget::~DownloadListWidget()
void DownloadListWidget::clearItem() void DownloadListWidget::clearItem()
{ {
// QListWidgetItem *item = nullptr;
// while ((item = ui->listWidget->takeItem(0)) != nullptr)
// {
// QWidget *card = ui->listWidget->itemWidget(item);
// if (card)
// {
// card->deleteLater();
// card = nullptr;
// }
// delete item;
// item = nullptr;
// }
// ui->listWidget->vScrollBar->scrollTop();
ui->listWidget->clear(); ui->listWidget->clear();
} }
DownloadItem* DownloadListWidget::addItem(QString name, QString fileName, QString pkgName, const QPixmap icon, QString downloadurl) DownloadItem* DownloadListWidget::addItem(QString name, QString fileName, QString pkgName, const QPixmap icon, QString downloadurl)
{ {
if (fileName.isEmpty()) if (fileName.isEmpty())
@@ -121,18 +127,13 @@ void DownloadListWidget::startRequest(QUrl url, QString fileName)
isdownload = true; isdownload = true;
downloaditemlist[allDownload - 1]->free = false; downloaditemlist[allDownload - 1]->free = false;
// 使用懒汉式单例来存储downloadController
if (downloadController == nullptr)
{
downloadController = new DownloadController; // 并发下载,在第一次点击下载按钮的时候才会初始化
}
if (downloadController) if (downloadController)
{ {
downloadController->disconnect(); downloadController->disconnect();
downloadController->stopDownload(); downloadController->stopDownload();
downloadController->deleteLater();
} }
downloadController = new DownloadController; // 并发下载,在点击下载按钮的时候才会初始化
connect(downloadController, &DownloadController::downloadProcess, this, &DownloadListWidget::updateDataReadProgress); connect(downloadController, &DownloadController::downloadProcess, this, &DownloadListWidget::updateDataReadProgress);
connect(downloadController, &DownloadController::downloadFinished, this, &DownloadListWidget::httpFinished); connect(downloadController, &DownloadController::downloadFinished, this, &DownloadListWidget::httpFinished);
// connect(downloadController, &DownloadController::errorOccur, this, [=](QString msg){this->sendNotification(msg);}); // connect(downloadController, &DownloadController::errorOccur, this, [=](QString msg){this->sendNotification(msg);});
@@ -140,44 +141,30 @@ void DownloadListWidget::startRequest(QUrl url, QString fileName)
downloadController->startDownload(url.toString()); downloadController->startDownload(url.toString());
} }
/***************************************************************
* @brief 下载列表完成下载的回调函数
* @param
* @note 如果正在安装,则在新开的线程空间中等待上一个安装完
* @Sample usage:
**************************************************************/
void DownloadListWidget::httpFinished() // 完成下载 void DownloadListWidget::httpFinished() // 完成下载
{ {
isdownload = false; isdownload = false;
isBusy = false; isBusy = false;
downloaditemlist[nowDownload - 1]->readyInstall();
QtConcurrent::run([=]() downloaditemlist[nowDownload - 1]->free = true;
emit downloadFinished();
if (nowDownload < allDownload)
{ {
while (downloaditemlist[nowDownload - 1]->readyInstall() == -1) // 如果有排队则下载下一个
qDebug() << "切换下一个下载...";
nowDownload += 1;
while (downloaditemlist[nowDownload - 1]->close)
{ {
continue;
}
downloaditemlist[nowDownload - 1]->free = true;
emit downloadFinished();
if (nowDownload < allDownload)
{
// 如果有排队则下载下一个
qDebug() << "切换下一个下载...";
nowDownload += 1; nowDownload += 1;
while (downloaditemlist[nowDownload - 1]->close) if (nowDownload >= allDownload)
{ {
nowDownload += 1; nowDownload = allDownload;
if (nowDownload >= allDownload) return;
{
nowDownload = allDownload;
return;
}
} }
QString fileName = downloaditemlist[nowDownload - 1]->getName();
startRequest(urList.at(nowDownload - 1), fileName);
} }
}); QString fileName = downloaditemlist[nowDownload - 1]->getName();
startRequest(urList.at(nowDownload - 1), fileName);
}
} }
void DownloadListWidget::updateDataReadProgress(QString speedInfo, qint64 bytesRead, qint64 totalBytes) void DownloadListWidget::updateDataReadProgress(QString speedInfo, qint64 bytesRead, qint64 totalBytes)
@@ -208,7 +195,21 @@ void DownloadListWidget::m_move(int x, int y)
move(x, y); move(x, y);
return; return;
} }
bool DownloadListWidget::eventFilter(QObject *watched, QEvent *event)
{
if (Q_NULLPTR == watched)
{
return false;
}
if (QEvent::ActivationChange == event->type())
{
if (QApplication::activeWindow() != this)
{
this->close();
}
}
return QWidget::eventFilter(watched, event);
}
void DownloadListWidget::mouseMoveEvent(QMouseEvent *event) void DownloadListWidget::mouseMoveEvent(QMouseEvent *event)
{ {
setGeometry(m_rect); setGeometry(m_rect);

View File

@@ -1,19 +1,20 @@
#ifndef DOWNLOADLISTWIDGET_H #ifndef DOWNLOADLISTWIDGET_H
#define DOWNLOADLISTWIDGET_H #define DOWNLOADLISTWIDGET_H
#include <DBlurEffectWidget>
#include <QWidget> #include <QWidget>
#include <QTimer> #include <QTimer>
#include <DBlurEffectWidget>
#include <QNetworkAccessManager>
#include <QDesktopServices>
#include "widgets/common/downloaditem.h"
#include "backend/sparkapi.h"
#include "backend/downloadworker.h"
#include "utils/utils.h"
DWIDGET_USE_NAMESPACE
namespace Ui { namespace Ui {
class DownloadListWidget; class DownloadListWidget;
} }
DWIDGET_USE_NAMESPACE
class DownloadItem;
class DownloadController;
class DownloadListWidget : public DBlurEffectWidget class DownloadListWidget : public DBlurEffectWidget
{ {
Q_OBJECT Q_OBJECT
@@ -26,10 +27,7 @@ public:
QList<QUrl> getUrlList(); QList<QUrl> getUrlList();
void m_move(int x, int y); void m_move(int x, int y);
explicit DownloadListWidget(QWidget *parent = nullptr); explicit DownloadListWidget(QWidget *parent = nullptr);
~DownloadListWidget() override; ~DownloadListWidget();
protected:
void mouseMoveEvent(QMouseEvent *event) override;
private: private:
int isdownload = false; int isdownload = false;
@@ -50,13 +48,13 @@ private:
void clearItem(); void clearItem();
QRect m_rect; QRect m_rect;
Ui::DownloadListWidget *ui; Ui::DownloadListWidget *ui;
private slots:
bool eventFilter(QObject *, QEvent *);
void mouseMoveEvent(QMouseEvent *event);
void on_pushButton_clicked();
signals: signals:
void downloadFinished(); void downloadFinished();
void downloadProgress(int i); void downloadProgress(int i);
private slots:
void on_pushButton_clicked();
}; };
#endif // DOWNLOADLISTWIDGET_H #endif // DOWNLOADLISTWIDGET_H

View File

@@ -8,7 +8,7 @@ mkdir -p /tmp/aptss-conf/
echo "从服务器获取配置和镜像列表..." echo "从服务器获取配置和镜像列表..."
echo "Getting server and mirror lists..." echo "Getting server and mirror lists..."
echo echo
curl --progress-bar -o /tmp/aptss-conf/apt-fast.conf "https://d.store.deepinos.org.cn/apt-fast.conf" curl --progress-bar -o /tmp/aptss-conf/apt-fast.conf "https://gitee.com/deepin-community-store/repo_auto_update_script/raw/master/mirror-list-for-apt-fast/apt-fast.conf"
chmod -R 755 /tmp/aptss-conf chmod -R 755 /tmp/aptss-conf
fi fi
@@ -21,10 +21,10 @@ mkdir -p /tmp/aptss-conf/
echo "从服务器获取配置和镜像列表..." echo "从服务器获取配置和镜像列表..."
echo "Getting server and mirror lists..." echo "Getting server and mirror lists..."
echo echo
curl --silent -o /tmp/aptss-conf/apt-fast.conf "https://d.store.deepinos.org.cn/apt-fast.conf" curl --silent -o /tmp/aptss-conf/apt-fast.conf "https://gitee.com/deepin-community-store/repo_auto_update_script/raw/master/mirror-list-for-apt-fast/apt-fast.conf"
chmod -R 755 /tmp/aptss-conf chmod -R 755 /tmp/aptss-conf
sudo curl --silent -o /opt/durapps/spark-store/bin/apt-fast-conf/sources.list.d/sparkstore.list "https://d.store.deepinos.org.cn/sparkstore.list" sudo curl --silent -o /opt/durapps/spark-store/bin/apt-fast-conf/sources.list.d/sparkstore.list "https://gitee.com/deepin-community-store/repo_auto_update_script/raw/master/mirror-list-for-apt-fast/sources.list.d/sparkstore.list"
sudo bwrap --dev-bind / / --bind '/opt/durapps/spark-store/bin/apt-fast-conf/sources.list.d/sparkstore.list' /etc/apt/sources.list.d/sparkstore.list apt update -o Dir::Etc::sourcelist="sources.list.d/sparkstore.list" -o Dir::Etc::sourceparts="-" -o APT::Get::List-Cleanup="0" sudo bwrap --dev-bind / / --bind '/opt/durapps/spark-store/bin/apt-fast-conf/sources.list.d/sparkstore.list' /etc/apt/sources.list.d/sparkstore.list apt update -o Dir::Etc::sourcelist="sources.list.d/sparkstore.list" -o Dir::Etc::sourceparts="-" -o APT::Get::List-Cleanup="0"
#只更新星火源 #只更新星火源
@@ -69,23 +69,23 @@ mkdir -p /tmp/aptss-conf/
echo "从服务器获取配置和镜像列表..." echo "从服务器获取配置和镜像列表..."
echo "Getting server and mirror lists..." echo "Getting server and mirror lists..."
echo echo
curl --silent -o /tmp/aptss-conf/apt-fast.conf "https://d.store.deepinos.org.cn/apt-fast.conf" curl --silent -o /tmp/aptss-conf/apt-fast.conf "https://gitee.com/deepin-community-store/repo_auto_update_script/raw/master/mirror-list-for-apt-fast/apt-fast.conf"
chmod -R 755 /tmp/aptss-conf chmod -R 755 /tmp/aptss-conf
sudo curl --silent -o /opt/durapps/spark-store/bin/apt-fast-conf/sources.list.d/sparkstore.list "https://d.store.deepinos.org.cn/sparkstore.list" sudo curl --silent -o /opt/durapps/spark-store/bin/apt-fast-conf/sources.list.d/sparkstore.list "https://gitee.com/deepin-community-store/repo_auto_update_script/raw/master/mirror-list-for-apt-fast/sources.list.d/sparkstore.list"
sudo bwrap --dev-bind / / --bind '/opt/durapps/spark-store/bin/apt-fast-conf/sources.list.d/sparkstore.list' /etc/apt/sources.list.d/sparkstore.list apt update -o Dir::Etc::sourcelist="sources.list.d/sparkstore.list" -o Dir::Etc::sourceparts="-" -o APT::Get::List-Cleanup="0" sudo bwrap --dev-bind / / --bind '/opt/durapps/spark-store/bin/apt-fast-conf/sources.list.d/sparkstore.list' /etc/apt/sources.list.d/sparkstore.list apt update -o Dir::Etc::sourcelist="sources.list.d/sparkstore.list" -o Dir::Etc::sourceparts="-" -o APT::Get::List-Cleanup="0"
#只更新星火源 #只更新星火源
elif [ "$1" = "update" ];then elif [ "$1" = "update" ];then
sudo curl --progress-bar -o /opt/durapps/spark-store/bin/apt-fast-conf/sources.list.d/sparkstore.list "https://d.store.deepinos.org.cn/sparkstore.list" sudo curl --progress-bar -o /opt/durapps/spark-store/bin/apt-fast-conf/sources.list.d/sparkstore.list "https://gitee.com/deepin-community-store/repo_auto_update_script/raw/master/mirror-list-for-apt-fast/sources.list.d/sparkstore.list"
mkdir -p /tmp/aptss-conf/ mkdir -p /tmp/aptss-conf/
echo "从服务器获取配置和镜像列表..." echo "从服务器获取配置和镜像列表..."
echo "Getting server and mirror lists..." echo "Getting server and mirror lists..."
echo echo
curl --progress-bar -o /tmp/aptss-conf/apt-fast.conf "https://d.store.deepinos.org.cn/apt-fast.conf" curl --progress-bar -o /tmp/aptss-conf/apt-fast.conf "https://gitee.com/deepin-community-store/repo_auto_update_script/raw/master/mirror-list-for-apt-fast/apt-fast.conf"
chmod -R 755 /tmp/aptss-conf chmod -R 755 /tmp/aptss-conf
### 额外一份拿来给aptss自动补全用 ### 额外一份拿来给aptss自动补全用
bwrap --dev-bind / / \ bwrap --dev-bind / / \

View File

@@ -54,7 +54,7 @@ fi
DEBPATH=`realpath $1` DEBPATH=`realpath $1`
if [ ! -e "/var/lib/apt/lists/d.store.deepinos.org.cn_Packages" ] && [ ! -e "/var/lib/apt/lists/d.store.deepinos.org.cn_store_Packages" ] && [ ! -e "/var/lib/apt/lists/mirrors.sdu.edu.cn_spark-store-repository_store_Packages" ];then if [ ! -e "/var/lib/apt/lists/d.store.deepinos.org.cn_Packages" ] && [ ! -e "/var/lib/apt/lists/d.store.deepinos.org.cn_store_Packages" ];then
echo "接收星火仓库软件信息中..." echo "接收星火仓库软件信息中..."
aptss ssupdate aptss ssupdate
fi fi
@@ -64,12 +64,9 @@ fi
if [ -e "/var/lib/apt/lists/d.store.deepinos.org.cn_store_Packages" ];then if [ -e "/var/lib/apt/lists/d.store.deepinos.org.cn_store_Packages" ];then
PACKAGES_DATA_PATH="/var/lib/apt/lists/d.store.deepinos.org.cn_store_Packages" PACKAGES_DATA_PATH="/var/lib/apt/lists/d.store.deepinos.org.cn_store_Packages"
echo "星火仓库的Packages位置为 $PACKAGES_DATA_PATH是单目录仓库配置" echo "星火仓库的Packages位置为 $PACKAGES_DATA_PATH是单目录仓库配置"
elif [ -e "/var/lib/apt/lists/d.store.deepinos.org.cn_Packages" ];then else
PACKAGES_DATA_PATH="/var/lib/apt/lists/d.store.deepinos.org.cn_Packages" PACKAGES_DATA_PATH="/var/lib/apt/lists/d.store.deepinos.org.cn_Packages"
echo "星火仓库的Packages位置为 $PACKAGES_DATA_PATH是根目录仓库配置" echo "星火仓库的Packages位置为 $PACKAGES_DATA_PATH是根目录仓库配置"
else
PACKAGES_DATA_PATH="/var/lib/apt/lists/mirrors.sdu.edu.cn_spark-store-repository_store_Packages"
echo "星火仓库的Packages位置为 $PACKAGES_DATA_PATH是SDU镜像仓库配置"
fi fi

View File

@@ -10,9 +10,9 @@
</message> </message>
<message> <message>
<location filename="../src/pages/appintopage.ui" line="244"/> <location filename="../src/pages/appintopage.ui" line="244"/>
<location filename="../src/pages/appintopage.cpp" line="173"/> <location filename="../src/pages/appintopage.cpp" line="171"/>
<location filename="../src/pages/appintopage.cpp" line="315"/> <location filename="../src/pages/appintopage.cpp" line="313"/>
<location filename="../src/pages/appintopage.cpp" line="430"/> <location filename="../src/pages/appintopage.cpp" line="428"/>
<source>Download</source> <source>Download</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@@ -175,51 +175,51 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/pages/appintopage.cpp" line="47"/> <location filename="../src/pages/appintopage.cpp" line="45"/>
<source>Click Open</source> <source>Click Open</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/pages/appintopage.cpp" line="112"/> <location filename="../src/pages/appintopage.cpp" line="110"/>
<source>Developer Mode Disabled</source> <source>Developer Mode Disabled</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/pages/appintopage.cpp" line="158"/> <location filename="../src/pages/appintopage.cpp" line="156"/>
<location filename="../src/pages/appintopage.cpp" line="331"/> <location filename="../src/pages/appintopage.cpp" line="329"/>
<location filename="../src/pages/appintopage.cpp" line="403"/> <location filename="../src/pages/appintopage.cpp" line="401"/>
<source>Reinstall</source> <source>Reinstall</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/pages/appintopage.cpp" line="165"/> <location filename="../src/pages/appintopage.cpp" line="163"/>
<source>Upgrade</source> <source>Upgrade</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/pages/appintopage.cpp" line="320"/> <location filename="../src/pages/appintopage.cpp" line="318"/>
<location filename="../src/pages/appintopage.cpp" line="379"/> <location filename="../src/pages/appintopage.cpp" line="377"/>
<source>Install</source> <source>Install</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/pages/appintopage.cpp" line="325"/> <location filename="../src/pages/appintopage.cpp" line="323"/>
<source>Installing</source> <source>Installing</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/pages/appintopage.cpp" line="434"/> <location filename="../src/pages/appintopage.cpp" line="432"/>
<location filename="../src/pages/appintopage.cpp" line="447"/> <location filename="../src/pages/appintopage.cpp" line="445"/>
<source>Spark Store</source> <source>Spark Store</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/pages/appintopage.cpp" line="434"/> <location filename="../src/pages/appintopage.cpp" line="432"/>
<source>Uninstall succeeded</source> <source>Uninstall succeeded</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/pages/appintopage.cpp" line="447"/> <location filename="../src/pages/appintopage.cpp" line="445"/>
<source>The URL has been copied to the clipboard</source> <source>The URL has been copied to the clipboard</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@@ -240,12 +240,12 @@
<context> <context>
<name>DAboutDialog</name> <name>DAboutDialog</name>
<message> <message>
<location filename="../src/application.cpp" line="133"/> <location filename="../src/application.cpp" line="111"/>
<source>Version: %1</source> <source>Version: %1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/application.cpp" line="143"/> <location filename="../src/application.cpp" line="118"/>
<source>%1 is released under %2</source> <source>%1 is released under %2</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@@ -299,59 +299,59 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/common/downloaditem.cpp" line="213"/> <location filename="../src/widgets/common/downloaditem.cpp" line="186"/>
<location filename="../src/widgets/common/downloaditem.cpp" line="224"/> <location filename="../src/widgets/common/downloaditem.cpp" line="197"/>
<location filename="../src/widgets/common/downloaditem.cpp" line="232"/> <location filename="../src/widgets/common/downloaditem.cpp" line="205"/>
<source>Spark Store</source> <source>Spark Store</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/common/downloaditem.cpp" line="125"/> <location filename="../src/widgets/common/downloaditem.cpp" line="104"/>
<location filename="../src/widgets/common/downloaditem.cpp" line="126"/> <location filename="../src/widgets/common/downloaditem.cpp" line="105"/>
<source>Installing</source> <source>Installing</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/common/downloaditem.cpp" line="213"/> <location filename="../src/widgets/common/downloaditem.cpp" line="186"/>
<source>Installation complete.</source> <source>Installation complete.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/common/downloaditem.cpp" line="214"/> <location filename="../src/widgets/common/downloaditem.cpp" line="187"/>
<location filename="../src/widgets/common/downloaditem.cpp" line="215"/> <location filename="../src/widgets/common/downloaditem.cpp" line="188"/>
<source>Finish</source> <source>Finish</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/common/downloaditem.cpp" line="222"/> <location filename="../src/widgets/common/downloaditem.cpp" line="195"/>
<source>Retry</source> <source>Retry</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/common/downloaditem.cpp" line="224"/> <location filename="../src/widgets/common/downloaditem.cpp" line="197"/>
<source>Error happened in dpkg progress , you can try it again.</source> <source>Error happened in dpkg progress , you can try it again.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/common/downloaditem.cpp" line="225"/> <location filename="../src/widgets/common/downloaditem.cpp" line="198"/>
<location filename="../src/widgets/common/downloaditem.cpp" line="226"/> <location filename="../src/widgets/common/downloaditem.cpp" line="199"/>
<source>Error happened in dpkg progress , you can try it again</source> <source>Error happened in dpkg progress , you can try it again</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/common/downloaditem.cpp" line="232"/> <location filename="../src/widgets/common/downloaditem.cpp" line="205"/>
<source>dpkg progress had been abortedyou can retry installation.</source> <source>dpkg progress had been abortedyou can retry installation.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/common/downloaditem.cpp" line="233"/> <location filename="../src/widgets/common/downloaditem.cpp" line="206"/>
<location filename="../src/widgets/common/downloaditem.cpp" line="234"/> <location filename="../src/widgets/common/downloaditem.cpp" line="207"/>
<source>dpkg progress had been abortedyou can retry installation</source> <source>dpkg progress had been abortedyou can retry installation</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/common/downloaditem.cpp" line="144"/> <location filename="../src/widgets/common/downloaditem.cpp" line="123"/>
<location filename="../src/widgets/common/downloaditem.cpp" line="145"/> <location filename="../src/widgets/common/downloaditem.cpp" line="124"/>
<source>Download canceled</source> <source>Download canceled</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@@ -452,33 +452,33 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow-dtk.cpp" line="170"/> <location filename="../src/mainwindow-dtk.cpp" line="165"/>
<source>Submit App</source> <source>Submit App</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow-dtk.cpp" line="171"/> <location filename="../src/mainwindow-dtk.cpp" line="166"/>
<source>Submit App with client(Recommanded)</source> <source>Submit App with client(Recommanded)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow-dtk.cpp" line="172"/> <location filename="../src/mainwindow-dtk.cpp" line="167"/>
<source>Settings</source> <source>Settings</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow-dtk.cpp" line="173"/> <location filename="../src/mainwindow-dtk.cpp" line="168"/>
<source>APP Upgrade and Install Settings</source> <source>APP Upgrade and Install Settings</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow-dtk.cpp" line="129"/> <location filename="../src/mainwindow-dtk.cpp" line="127"/>
<location filename="../src/mainwindow-dtk.cpp" line="224"/> <location filename="../src/mainwindow-dtk.cpp" line="219"/>
<source>Spark Store</source> <source>Spark Store</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow-dtk.cpp" line="134"/> <location filename="../src/mainwindow-dtk.cpp" line="132"/>
<source>Search or enter spk://</source> <source>Search or enter spk://</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@@ -486,29 +486,29 @@
<context> <context>
<name>QObject</name> <name>QObject</name>
<message> <message>
<location filename="../src/application.cpp" line="33"/> <location filename="../src/application.cpp" line="29"/>
<location filename="../src/application.cpp" line="34"/> <location filename="../src/application.cpp" line="30"/>
<location filename="../src/mainwindow-dtk.cpp" line="109"/> <location filename="../src/mainwindow-dtk.cpp" line="107"/>
<source>Spark Store</source> <source>Spark Store</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/application.cpp" line="38"/> <location filename="../src/application.cpp" line="34"/>
<source>&lt;span style=&apos; font-size:10pt;font-weight:60;&apos;&gt;An appstore powered by community&lt;/span&gt;&lt;br/&gt;&lt;a href=&apos;https://www.spark-app.store/&apos;&gt;https://www.spark-app.store&lt;/a&gt;&lt;br/&gt;&lt;span style=&apos; font-size:12pt;&apos;&gt;Spark developers&lt;/span&gt;</source> <source>&lt;span style=&apos; font-size:10pt;font-weight:60;&apos;&gt;An appstore powered by community&lt;/span&gt;&lt;br/&gt;&lt;a href=&apos;https://www.spark-app.store/&apos;&gt;https://www.spark-app.store&lt;/a&gt;&lt;br/&gt;&lt;span style=&apos; font-size:12pt;&apos;&gt;Spark developers&lt;/span&gt;</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/application.cpp" line="140"/> <location filename="../src/application.cpp" line="115"/>
<source>Spark Project</source> <source>Spark Project</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/downloadlistwidget.cpp" line="17"/> <location filename="../src/widgets/downloadlistwidget.cpp" line="10"/>
<source>Download list</source> <source>Download list</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow-dtk.cpp" line="227"/> <location filename="../src/mainwindow-dtk.cpp" line="222"/>
<source>Show MainWindow</source> <source>Show MainWindow</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@@ -619,12 +619,12 @@
<context> <context>
<name>TitleBarMenu</name> <name>TitleBarMenu</name>
<message> <message>
<location filename="../src/mainwindow-dtk.cpp" line="228"/> <location filename="../src/mainwindow-dtk.cpp" line="223"/>
<source>About</source> <source>About</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow-dtk.cpp" line="229"/> <location filename="../src/mainwindow-dtk.cpp" line="224"/>
<source>Exit</source> <source>Exit</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>

View File

@@ -10,9 +10,9 @@
</message> </message>
<message> <message>
<location filename="../src/pages/appintopage.ui" line="244"/> <location filename="../src/pages/appintopage.ui" line="244"/>
<location filename="../src/pages/appintopage.cpp" line="173"/> <location filename="../src/pages/appintopage.cpp" line="171"/>
<location filename="../src/pages/appintopage.cpp" line="315"/> <location filename="../src/pages/appintopage.cpp" line="313"/>
<location filename="../src/pages/appintopage.cpp" line="430"/> <location filename="../src/pages/appintopage.cpp" line="428"/>
<source>Download</source> <source>Download</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@@ -175,51 +175,51 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/pages/appintopage.cpp" line="47"/> <location filename="../src/pages/appintopage.cpp" line="45"/>
<source>Click Open</source> <source>Click Open</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/pages/appintopage.cpp" line="112"/> <location filename="../src/pages/appintopage.cpp" line="110"/>
<source>Developer Mode Disabled</source> <source>Developer Mode Disabled</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/pages/appintopage.cpp" line="158"/> <location filename="../src/pages/appintopage.cpp" line="156"/>
<location filename="../src/pages/appintopage.cpp" line="331"/> <location filename="../src/pages/appintopage.cpp" line="329"/>
<location filename="../src/pages/appintopage.cpp" line="403"/> <location filename="../src/pages/appintopage.cpp" line="401"/>
<source>Reinstall</source> <source>Reinstall</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/pages/appintopage.cpp" line="165"/> <location filename="../src/pages/appintopage.cpp" line="163"/>
<source>Upgrade</source> <source>Upgrade</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/pages/appintopage.cpp" line="320"/> <location filename="../src/pages/appintopage.cpp" line="318"/>
<location filename="../src/pages/appintopage.cpp" line="379"/> <location filename="../src/pages/appintopage.cpp" line="377"/>
<source>Install</source> <source>Install</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/pages/appintopage.cpp" line="325"/> <location filename="../src/pages/appintopage.cpp" line="323"/>
<source>Installing</source> <source>Installing</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/pages/appintopage.cpp" line="434"/> <location filename="../src/pages/appintopage.cpp" line="432"/>
<location filename="../src/pages/appintopage.cpp" line="447"/> <location filename="../src/pages/appintopage.cpp" line="445"/>
<source>Spark Store</source> <source>Spark Store</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/pages/appintopage.cpp" line="434"/> <location filename="../src/pages/appintopage.cpp" line="432"/>
<source>Uninstall succeeded</source> <source>Uninstall succeeded</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/pages/appintopage.cpp" line="447"/> <location filename="../src/pages/appintopage.cpp" line="445"/>
<source>The URL has been copied to the clipboard</source> <source>The URL has been copied to the clipboard</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@@ -240,12 +240,12 @@
<context> <context>
<name>DAboutDialog</name> <name>DAboutDialog</name>
<message> <message>
<location filename="../src/application.cpp" line="133"/> <location filename="../src/application.cpp" line="111"/>
<source>Version: %1</source> <source>Version: %1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/application.cpp" line="143"/> <location filename="../src/application.cpp" line="118"/>
<source>%1 is released under %2</source> <source>%1 is released under %2</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@@ -299,59 +299,59 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/common/downloaditem.cpp" line="213"/> <location filename="../src/widgets/common/downloaditem.cpp" line="186"/>
<location filename="../src/widgets/common/downloaditem.cpp" line="224"/> <location filename="../src/widgets/common/downloaditem.cpp" line="197"/>
<location filename="../src/widgets/common/downloaditem.cpp" line="232"/> <location filename="../src/widgets/common/downloaditem.cpp" line="205"/>
<source>Spark Store</source> <source>Spark Store</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/common/downloaditem.cpp" line="125"/> <location filename="../src/widgets/common/downloaditem.cpp" line="104"/>
<location filename="../src/widgets/common/downloaditem.cpp" line="126"/> <location filename="../src/widgets/common/downloaditem.cpp" line="105"/>
<source>Installing</source> <source>Installing</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/common/downloaditem.cpp" line="213"/> <location filename="../src/widgets/common/downloaditem.cpp" line="186"/>
<source>Installation complete.</source> <source>Installation complete.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/common/downloaditem.cpp" line="214"/> <location filename="../src/widgets/common/downloaditem.cpp" line="187"/>
<location filename="../src/widgets/common/downloaditem.cpp" line="215"/> <location filename="../src/widgets/common/downloaditem.cpp" line="188"/>
<source>Finish</source> <source>Finish</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/common/downloaditem.cpp" line="222"/> <location filename="../src/widgets/common/downloaditem.cpp" line="195"/>
<source>Retry</source> <source>Retry</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/common/downloaditem.cpp" line="224"/> <location filename="../src/widgets/common/downloaditem.cpp" line="197"/>
<source>Error happened in dpkg progress , you can try it again.</source> <source>Error happened in dpkg progress , you can try it again.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/common/downloaditem.cpp" line="225"/> <location filename="../src/widgets/common/downloaditem.cpp" line="198"/>
<location filename="../src/widgets/common/downloaditem.cpp" line="226"/> <location filename="../src/widgets/common/downloaditem.cpp" line="199"/>
<source>Error happened in dpkg progress , you can try it again</source> <source>Error happened in dpkg progress , you can try it again</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/common/downloaditem.cpp" line="232"/> <location filename="../src/widgets/common/downloaditem.cpp" line="205"/>
<source>dpkg progress had been abortedyou can retry installation.</source> <source>dpkg progress had been abortedyou can retry installation.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/common/downloaditem.cpp" line="233"/> <location filename="../src/widgets/common/downloaditem.cpp" line="206"/>
<location filename="../src/widgets/common/downloaditem.cpp" line="234"/> <location filename="../src/widgets/common/downloaditem.cpp" line="207"/>
<source>dpkg progress had been abortedyou can retry installation</source> <source>dpkg progress had been abortedyou can retry installation</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/common/downloaditem.cpp" line="144"/> <location filename="../src/widgets/common/downloaditem.cpp" line="123"/>
<location filename="../src/widgets/common/downloaditem.cpp" line="145"/> <location filename="../src/widgets/common/downloaditem.cpp" line="124"/>
<source>Download canceled</source> <source>Download canceled</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@@ -452,33 +452,33 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow-dtk.cpp" line="170"/> <location filename="../src/mainwindow-dtk.cpp" line="165"/>
<source>Submit App</source> <source>Submit App</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow-dtk.cpp" line="171"/> <location filename="../src/mainwindow-dtk.cpp" line="166"/>
<source>Submit App with client(Recommanded)</source> <source>Submit App with client(Recommanded)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow-dtk.cpp" line="172"/> <location filename="../src/mainwindow-dtk.cpp" line="167"/>
<source>Settings</source> <source>Settings</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow-dtk.cpp" line="173"/> <location filename="../src/mainwindow-dtk.cpp" line="168"/>
<source>APP Upgrade and Install Settings</source> <source>APP Upgrade and Install Settings</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow-dtk.cpp" line="129"/> <location filename="../src/mainwindow-dtk.cpp" line="127"/>
<location filename="../src/mainwindow-dtk.cpp" line="224"/> <location filename="../src/mainwindow-dtk.cpp" line="219"/>
<source>Spark Store</source> <source>Spark Store</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow-dtk.cpp" line="134"/> <location filename="../src/mainwindow-dtk.cpp" line="132"/>
<source>Search or enter spk://</source> <source>Search or enter spk://</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@@ -486,29 +486,29 @@
<context> <context>
<name>QObject</name> <name>QObject</name>
<message> <message>
<location filename="../src/application.cpp" line="33"/> <location filename="../src/application.cpp" line="29"/>
<location filename="../src/application.cpp" line="34"/> <location filename="../src/application.cpp" line="30"/>
<location filename="../src/mainwindow-dtk.cpp" line="109"/> <location filename="../src/mainwindow-dtk.cpp" line="107"/>
<source>Spark Store</source> <source>Spark Store</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/application.cpp" line="38"/> <location filename="../src/application.cpp" line="34"/>
<source>&lt;span style=&apos; font-size:10pt;font-weight:60;&apos;&gt;An appstore powered by community&lt;/span&gt;&lt;br/&gt;&lt;a href=&apos;https://www.spark-app.store/&apos;&gt;https://www.spark-app.store&lt;/a&gt;&lt;br/&gt;&lt;span style=&apos; font-size:12pt;&apos;&gt;Spark developers&lt;/span&gt;</source> <source>&lt;span style=&apos; font-size:10pt;font-weight:60;&apos;&gt;An appstore powered by community&lt;/span&gt;&lt;br/&gt;&lt;a href=&apos;https://www.spark-app.store/&apos;&gt;https://www.spark-app.store&lt;/a&gt;&lt;br/&gt;&lt;span style=&apos; font-size:12pt;&apos;&gt;Spark developers&lt;/span&gt;</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/application.cpp" line="140"/> <location filename="../src/application.cpp" line="115"/>
<source>Spark Project</source> <source>Spark Project</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/downloadlistwidget.cpp" line="17"/> <location filename="../src/widgets/downloadlistwidget.cpp" line="10"/>
<source>Download list</source> <source>Download list</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow-dtk.cpp" line="227"/> <location filename="../src/mainwindow-dtk.cpp" line="222"/>
<source>Show MainWindow</source> <source>Show MainWindow</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@@ -619,12 +619,12 @@
<context> <context>
<name>TitleBarMenu</name> <name>TitleBarMenu</name>
<message> <message>
<location filename="../src/mainwindow-dtk.cpp" line="228"/> <location filename="../src/mainwindow-dtk.cpp" line="223"/>
<source>About</source> <source>About</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow-dtk.cpp" line="229"/> <location filename="../src/mainwindow-dtk.cpp" line="224"/>
<source>Exit</source> <source>Exit</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>

View File

@@ -10,9 +10,9 @@
</message> </message>
<message> <message>
<location filename="../src/pages/appintopage.ui" line="244"/> <location filename="../src/pages/appintopage.ui" line="244"/>
<location filename="../src/pages/appintopage.cpp" line="173"/> <location filename="../src/pages/appintopage.cpp" line="171"/>
<location filename="../src/pages/appintopage.cpp" line="315"/> <location filename="../src/pages/appintopage.cpp" line="313"/>
<location filename="../src/pages/appintopage.cpp" line="430"/> <location filename="../src/pages/appintopage.cpp" line="428"/>
<source>Download</source> <source>Download</source>
<translation></translation> <translation></translation>
</message> </message>
@@ -175,51 +175,51 @@
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/pages/appintopage.cpp" line="47"/> <location filename="../src/pages/appintopage.cpp" line="45"/>
<source>Click Open</source> <source>Click Open</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/pages/appintopage.cpp" line="112"/> <location filename="../src/pages/appintopage.cpp" line="110"/>
<source>Developer Mode Disabled</source> <source>Developer Mode Disabled</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/pages/appintopage.cpp" line="158"/> <location filename="../src/pages/appintopage.cpp" line="156"/>
<location filename="../src/pages/appintopage.cpp" line="331"/> <location filename="../src/pages/appintopage.cpp" line="329"/>
<location filename="../src/pages/appintopage.cpp" line="403"/> <location filename="../src/pages/appintopage.cpp" line="401"/>
<source>Reinstall</source> <source>Reinstall</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/pages/appintopage.cpp" line="165"/> <location filename="../src/pages/appintopage.cpp" line="163"/>
<source>Upgrade</source> <source>Upgrade</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/pages/appintopage.cpp" line="320"/> <location filename="../src/pages/appintopage.cpp" line="318"/>
<location filename="../src/pages/appintopage.cpp" line="379"/> <location filename="../src/pages/appintopage.cpp" line="377"/>
<source>Install</source> <source>Install</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/pages/appintopage.cpp" line="325"/> <location filename="../src/pages/appintopage.cpp" line="323"/>
<source>Installing</source> <source>Installing</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/pages/appintopage.cpp" line="434"/> <location filename="../src/pages/appintopage.cpp" line="432"/>
<location filename="../src/pages/appintopage.cpp" line="447"/> <location filename="../src/pages/appintopage.cpp" line="445"/>
<source>Spark Store</source> <source>Spark Store</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/pages/appintopage.cpp" line="434"/> <location filename="../src/pages/appintopage.cpp" line="432"/>
<source>Uninstall succeeded</source> <source>Uninstall succeeded</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/pages/appintopage.cpp" line="447"/> <location filename="../src/pages/appintopage.cpp" line="445"/>
<source>The URL has been copied to the clipboard</source> <source>The URL has been copied to the clipboard</source>
<translation></translation> <translation></translation>
</message> </message>
@@ -240,12 +240,12 @@
<context> <context>
<name>DAboutDialog</name> <name>DAboutDialog</name>
<message> <message>
<location filename="../src/application.cpp" line="133"/> <location filename="../src/application.cpp" line="111"/>
<source>Version: %1</source> <source>Version: %1</source>
<translation>%1</translation> <translation>%1</translation>
</message> </message>
<message> <message>
<location filename="../src/application.cpp" line="143"/> <location filename="../src/application.cpp" line="118"/>
<source>%1 is released under %2</source> <source>%1 is released under %2</source>
<translation>%1%2</translation> <translation>%1%2</translation>
</message> </message>
@@ -299,59 +299,59 @@
<translation>.</translation> <translation>.</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/common/downloaditem.cpp" line="213"/> <location filename="../src/widgets/common/downloaditem.cpp" line="186"/>
<location filename="../src/widgets/common/downloaditem.cpp" line="224"/> <location filename="../src/widgets/common/downloaditem.cpp" line="197"/>
<location filename="../src/widgets/common/downloaditem.cpp" line="232"/> <location filename="../src/widgets/common/downloaditem.cpp" line="205"/>
<source>Spark Store</source> <source>Spark Store</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/common/downloaditem.cpp" line="125"/> <location filename="../src/widgets/common/downloaditem.cpp" line="104"/>
<location filename="../src/widgets/common/downloaditem.cpp" line="126"/> <location filename="../src/widgets/common/downloaditem.cpp" line="105"/>
<source>Installing</source> <source>Installing</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/common/downloaditem.cpp" line="213"/> <location filename="../src/widgets/common/downloaditem.cpp" line="186"/>
<source>Installation complete.</source> <source>Installation complete.</source>
<translation>.</translation> <translation>.</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/common/downloaditem.cpp" line="214"/> <location filename="../src/widgets/common/downloaditem.cpp" line="187"/>
<location filename="../src/widgets/common/downloaditem.cpp" line="215"/> <location filename="../src/widgets/common/downloaditem.cpp" line="188"/>
<source>Finish</source> <source>Finish</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/common/downloaditem.cpp" line="222"/> <location filename="../src/widgets/common/downloaditem.cpp" line="195"/>
<source>Retry</source> <source>Retry</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/common/downloaditem.cpp" line="224"/> <location filename="../src/widgets/common/downloaditem.cpp" line="197"/>
<source>Error happened in dpkg progress , you can try it again.</source> <source>Error happened in dpkg progress , you can try it again.</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/common/downloaditem.cpp" line="225"/> <location filename="../src/widgets/common/downloaditem.cpp" line="198"/>
<location filename="../src/widgets/common/downloaditem.cpp" line="226"/> <location filename="../src/widgets/common/downloaditem.cpp" line="199"/>
<source>Error happened in dpkg progress , you can try it again</source> <source>Error happened in dpkg progress , you can try it again</source>
<translation>dpkg出现错误</translation> <translation>dpkg出现错误</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/common/downloaditem.cpp" line="232"/> <location filename="../src/widgets/common/downloaditem.cpp" line="205"/>
<source>dpkg progress had been abortedyou can retry installation.</source> <source>dpkg progress had been abortedyou can retry installation.</source>
<translation>dpkg进程被中断</translation> <translation>dpkg进程被中断</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/common/downloaditem.cpp" line="233"/> <location filename="../src/widgets/common/downloaditem.cpp" line="206"/>
<location filename="../src/widgets/common/downloaditem.cpp" line="234"/> <location filename="../src/widgets/common/downloaditem.cpp" line="207"/>
<source>dpkg progress had been abortedyou can retry installation</source> <source>dpkg progress had been abortedyou can retry installation</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/common/downloaditem.cpp" line="144"/> <location filename="../src/widgets/common/downloaditem.cpp" line="123"/>
<location filename="../src/widgets/common/downloaditem.cpp" line="145"/> <location filename="../src/widgets/common/downloaditem.cpp" line="124"/>
<source>Download canceled</source> <source>Download canceled</source>
<translation></translation> <translation></translation>
</message> </message>
@@ -452,33 +452,33 @@
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow-dtk.cpp" line="170"/> <location filename="../src/mainwindow-dtk.cpp" line="165"/>
<source>Submit App</source> <source>Submit App</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow-dtk.cpp" line="171"/> <location filename="../src/mainwindow-dtk.cpp" line="166"/>
<source>Submit App with client(Recommanded)</source> <source>Submit App with client(Recommanded)</source>
<translation>使稿</translation> <translation>使稿</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow-dtk.cpp" line="172"/> <location filename="../src/mainwindow-dtk.cpp" line="167"/>
<source>Settings</source> <source>Settings</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow-dtk.cpp" line="173"/> <location filename="../src/mainwindow-dtk.cpp" line="168"/>
<source>APP Upgrade and Install Settings</source> <source>APP Upgrade and Install Settings</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow-dtk.cpp" line="129"/> <location filename="../src/mainwindow-dtk.cpp" line="127"/>
<location filename="../src/mainwindow-dtk.cpp" line="224"/> <location filename="../src/mainwindow-dtk.cpp" line="219"/>
<source>Spark Store</source> <source>Spark Store</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow-dtk.cpp" line="134"/> <location filename="../src/mainwindow-dtk.cpp" line="132"/>
<source>Search or enter spk://</source> <source>Search or enter spk://</source>
<translation></translation> <translation></translation>
</message> </message>
@@ -486,29 +486,29 @@
<context> <context>
<name>QObject</name> <name>QObject</name>
<message> <message>
<location filename="../src/application.cpp" line="33"/> <location filename="../src/application.cpp" line="29"/>
<location filename="../src/application.cpp" line="34"/> <location filename="../src/application.cpp" line="30"/>
<location filename="../src/mainwindow-dtk.cpp" line="109"/> <location filename="../src/mainwindow-dtk.cpp" line="107"/>
<source>Spark Store</source> <source>Spark Store</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/application.cpp" line="38"/> <location filename="../src/application.cpp" line="34"/>
<source>&lt;span style=&apos; font-size:10pt;font-weight:60;&apos;&gt;An appstore powered by community&lt;/span&gt;&lt;br/&gt;&lt;a href=&apos;https://www.spark-app.store/&apos;&gt;https://www.spark-app.store&lt;/a&gt;&lt;br/&gt;&lt;span style=&apos; font-size:12pt;&apos;&gt;Spark developers&lt;/span&gt;</source> <source>&lt;span style=&apos; font-size:10pt;font-weight:60;&apos;&gt;An appstore powered by community&lt;/span&gt;&lt;br/&gt;&lt;a href=&apos;https://www.spark-app.store/&apos;&gt;https://www.spark-app.store&lt;/a&gt;&lt;br/&gt;&lt;span style=&apos; font-size:12pt;&apos;&gt;Spark developers&lt;/span&gt;</source>
<translation>&lt;span style=&apos; font-size:10pt;font-weight:60;&apos;&gt;&lt;/span&gt;&lt;br/&gt;&lt;a href=&apos;https://www.spark-app.store/&apos;&gt;https://www.spark-app.store&lt;/a&gt;&lt;br/&gt;&lt;span style=&apos; font-size:12pt;&apos;&gt;星火计划开发者&lt;/span&gt;</translation> <translation>&lt;span style=&apos; font-size:10pt;font-weight:60;&apos;&gt;&lt;/span&gt;&lt;br/&gt;&lt;a href=&apos;https://www.spark-app.store/&apos;&gt;https://www.spark-app.store&lt;/a&gt;&lt;br/&gt;&lt;span style=&apos; font-size:12pt;&apos;&gt;星火计划开发者&lt;/span&gt;</translation>
</message> </message>
<message> <message>
<location filename="../src/application.cpp" line="140"/> <location filename="../src/application.cpp" line="115"/>
<source>Spark Project</source> <source>Spark Project</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/downloadlistwidget.cpp" line="17"/> <location filename="../src/widgets/downloadlistwidget.cpp" line="10"/>
<source>Download list</source> <source>Download list</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow-dtk.cpp" line="227"/> <location filename="../src/mainwindow-dtk.cpp" line="222"/>
<source>Show MainWindow</source> <source>Show MainWindow</source>
<translation></translation> <translation></translation>
</message> </message>
@@ -619,12 +619,12 @@
<context> <context>
<name>TitleBarMenu</name> <name>TitleBarMenu</name>
<message> <message>
<location filename="../src/mainwindow-dtk.cpp" line="228"/> <location filename="../src/mainwindow-dtk.cpp" line="223"/>
<source>About</source> <source>About</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow-dtk.cpp" line="229"/> <location filename="../src/mainwindow-dtk.cpp" line="224"/>
<source>Exit</source> <source>Exit</source>
<translation>退</translation> <translation>退</translation>
</message> </message>

View File

@@ -10,9 +10,9 @@
</message> </message>
<message> <message>
<location filename="../src/pages/appintopage.ui" line="244"/> <location filename="../src/pages/appintopage.ui" line="244"/>
<location filename="../src/pages/appintopage.cpp" line="173"/> <location filename="../src/pages/appintopage.cpp" line="171"/>
<location filename="../src/pages/appintopage.cpp" line="315"/> <location filename="../src/pages/appintopage.cpp" line="313"/>
<location filename="../src/pages/appintopage.cpp" line="430"/> <location filename="../src/pages/appintopage.cpp" line="428"/>
<source>Download</source> <source>Download</source>
<translation></translation> <translation></translation>
</message> </message>
@@ -175,51 +175,51 @@
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/pages/appintopage.cpp" line="47"/> <location filename="../src/pages/appintopage.cpp" line="45"/>
<source>Click Open</source> <source>Click Open</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/pages/appintopage.cpp" line="112"/> <location filename="../src/pages/appintopage.cpp" line="110"/>
<source>Developer Mode Disabled</source> <source>Developer Mode Disabled</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/pages/appintopage.cpp" line="158"/> <location filename="../src/pages/appintopage.cpp" line="156"/>
<location filename="../src/pages/appintopage.cpp" line="331"/> <location filename="../src/pages/appintopage.cpp" line="329"/>
<location filename="../src/pages/appintopage.cpp" line="403"/> <location filename="../src/pages/appintopage.cpp" line="401"/>
<source>Reinstall</source> <source>Reinstall</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/pages/appintopage.cpp" line="165"/> <location filename="../src/pages/appintopage.cpp" line="163"/>
<source>Upgrade</source> <source>Upgrade</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/pages/appintopage.cpp" line="320"/> <location filename="../src/pages/appintopage.cpp" line="318"/>
<location filename="../src/pages/appintopage.cpp" line="379"/> <location filename="../src/pages/appintopage.cpp" line="377"/>
<source>Install</source> <source>Install</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/pages/appintopage.cpp" line="325"/> <location filename="../src/pages/appintopage.cpp" line="323"/>
<source>Installing</source> <source>Installing</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/pages/appintopage.cpp" line="434"/> <location filename="../src/pages/appintopage.cpp" line="432"/>
<location filename="../src/pages/appintopage.cpp" line="447"/> <location filename="../src/pages/appintopage.cpp" line="445"/>
<source>Spark Store</source> <source>Spark Store</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/pages/appintopage.cpp" line="434"/> <location filename="../src/pages/appintopage.cpp" line="432"/>
<source>Uninstall succeeded</source> <source>Uninstall succeeded</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/pages/appintopage.cpp" line="447"/> <location filename="../src/pages/appintopage.cpp" line="445"/>
<source>The URL has been copied to the clipboard</source> <source>The URL has been copied to the clipboard</source>
<translation></translation> <translation></translation>
</message> </message>
@@ -240,12 +240,12 @@
<context> <context>
<name>DAboutDialog</name> <name>DAboutDialog</name>
<message> <message>
<location filename="../src/application.cpp" line="133"/> <location filename="../src/application.cpp" line="111"/>
<source>Version: %1</source> <source>Version: %1</source>
<translation>%1</translation> <translation>%1</translation>
</message> </message>
<message> <message>
<location filename="../src/application.cpp" line="143"/> <location filename="../src/application.cpp" line="118"/>
<source>%1 is released under %2</source> <source>%1 is released under %2</source>
<translation>%1%2</translation> <translation>%1%2</translation>
</message> </message>
@@ -299,59 +299,59 @@
<translation>.</translation> <translation>.</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/common/downloaditem.cpp" line="213"/> <location filename="../src/widgets/common/downloaditem.cpp" line="186"/>
<location filename="../src/widgets/common/downloaditem.cpp" line="224"/> <location filename="../src/widgets/common/downloaditem.cpp" line="197"/>
<location filename="../src/widgets/common/downloaditem.cpp" line="232"/> <location filename="../src/widgets/common/downloaditem.cpp" line="205"/>
<source>Spark Store</source> <source>Spark Store</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/common/downloaditem.cpp" line="125"/> <location filename="../src/widgets/common/downloaditem.cpp" line="104"/>
<location filename="../src/widgets/common/downloaditem.cpp" line="126"/> <location filename="../src/widgets/common/downloaditem.cpp" line="105"/>
<source>Installing</source> <source>Installing</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/common/downloaditem.cpp" line="213"/> <location filename="../src/widgets/common/downloaditem.cpp" line="186"/>
<source>Installation complete.</source> <source>Installation complete.</source>
<translation>.</translation> <translation>.</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/common/downloaditem.cpp" line="214"/> <location filename="../src/widgets/common/downloaditem.cpp" line="187"/>
<location filename="../src/widgets/common/downloaditem.cpp" line="215"/> <location filename="../src/widgets/common/downloaditem.cpp" line="188"/>
<source>Finish</source> <source>Finish</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/common/downloaditem.cpp" line="222"/> <location filename="../src/widgets/common/downloaditem.cpp" line="195"/>
<source>Retry</source> <source>Retry</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/common/downloaditem.cpp" line="224"/> <location filename="../src/widgets/common/downloaditem.cpp" line="197"/>
<source>Error happened in dpkg progress , you can try it again.</source> <source>Error happened in dpkg progress , you can try it again.</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/common/downloaditem.cpp" line="225"/> <location filename="../src/widgets/common/downloaditem.cpp" line="198"/>
<location filename="../src/widgets/common/downloaditem.cpp" line="226"/> <location filename="../src/widgets/common/downloaditem.cpp" line="199"/>
<source>Error happened in dpkg progress , you can try it again</source> <source>Error happened in dpkg progress , you can try it again</source>
<translation>dpkg出现错误</translation> <translation>dpkg出现错误</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/common/downloaditem.cpp" line="232"/> <location filename="../src/widgets/common/downloaditem.cpp" line="205"/>
<source>dpkg progress had been abortedyou can retry installation.</source> <source>dpkg progress had been abortedyou can retry installation.</source>
<translation>dpkg进程被中断</translation> <translation>dpkg进程被中断</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/common/downloaditem.cpp" line="233"/> <location filename="../src/widgets/common/downloaditem.cpp" line="206"/>
<location filename="../src/widgets/common/downloaditem.cpp" line="234"/> <location filename="../src/widgets/common/downloaditem.cpp" line="207"/>
<source>dpkg progress had been abortedyou can retry installation</source> <source>dpkg progress had been abortedyou can retry installation</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/common/downloaditem.cpp" line="144"/> <location filename="../src/widgets/common/downloaditem.cpp" line="123"/>
<location filename="../src/widgets/common/downloaditem.cpp" line="145"/> <location filename="../src/widgets/common/downloaditem.cpp" line="124"/>
<source>Download canceled</source> <source>Download canceled</source>
<translation></translation> <translation></translation>
</message> </message>
@@ -452,33 +452,33 @@
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow-dtk.cpp" line="170"/> <location filename="../src/mainwindow-dtk.cpp" line="165"/>
<source>Submit App</source> <source>Submit App</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow-dtk.cpp" line="171"/> <location filename="../src/mainwindow-dtk.cpp" line="166"/>
<source>Submit App with client(Recommanded)</source> <source>Submit App with client(Recommanded)</source>
<translation>()</translation> <translation>()</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow-dtk.cpp" line="172"/> <location filename="../src/mainwindow-dtk.cpp" line="167"/>
<source>Settings</source> <source>Settings</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow-dtk.cpp" line="173"/> <location filename="../src/mainwindow-dtk.cpp" line="168"/>
<source>APP Upgrade and Install Settings</source> <source>APP Upgrade and Install Settings</source>
<translation> </translation> <translation> </translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow-dtk.cpp" line="129"/> <location filename="../src/mainwindow-dtk.cpp" line="127"/>
<location filename="../src/mainwindow-dtk.cpp" line="224"/> <location filename="../src/mainwindow-dtk.cpp" line="219"/>
<source>Spark Store</source> <source>Spark Store</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow-dtk.cpp" line="134"/> <location filename="../src/mainwindow-dtk.cpp" line="132"/>
<source>Search or enter spk://</source> <source>Search or enter spk://</source>
<translation></translation> <translation></translation>
</message> </message>
@@ -486,29 +486,29 @@
<context> <context>
<name>QObject</name> <name>QObject</name>
<message> <message>
<location filename="../src/application.cpp" line="33"/> <location filename="../src/application.cpp" line="29"/>
<location filename="../src/application.cpp" line="34"/> <location filename="../src/application.cpp" line="30"/>
<location filename="../src/mainwindow-dtk.cpp" line="109"/> <location filename="../src/mainwindow-dtk.cpp" line="107"/>
<source>Spark Store</source> <source>Spark Store</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/application.cpp" line="38"/> <location filename="../src/application.cpp" line="34"/>
<source>&lt;span style=&apos; font-size:10pt;font-weight:60;&apos;&gt;An appstore powered by community&lt;/span&gt;&lt;br/&gt;&lt;a href=&apos;https://www.spark-app.store/&apos;&gt;https://www.spark-app.store&lt;/a&gt;&lt;br/&gt;&lt;span style=&apos; font-size:12pt;&apos;&gt;Spark developers&lt;/span&gt;</source> <source>&lt;span style=&apos; font-size:10pt;font-weight:60;&apos;&gt;An appstore powered by community&lt;/span&gt;&lt;br/&gt;&lt;a href=&apos;https://www.spark-app.store/&apos;&gt;https://www.spark-app.store&lt;/a&gt;&lt;br/&gt;&lt;span style=&apos; font-size:12pt;&apos;&gt;Spark developers&lt;/span&gt;</source>
<translation>&lt;span style=&apos; font-size:10pt;font-weight:60;&apos;&gt;&lt;/span&gt;&lt;br/&gt;&lt;a href=&apos;https://www.spark-app.store/&apos;&gt;https://www.spark-app.store&lt;/a&gt;&lt;br/&gt;&lt;span style=&apos; font-size:12pt;&apos;&gt;星火计划开发者&lt;/span&gt;</translation> <translation>&lt;span style=&apos; font-size:10pt;font-weight:60;&apos;&gt;&lt;/span&gt;&lt;br/&gt;&lt;a href=&apos;https://www.spark-app.store/&apos;&gt;https://www.spark-app.store&lt;/a&gt;&lt;br/&gt;&lt;span style=&apos; font-size:12pt;&apos;&gt;星火计划开发者&lt;/span&gt;</translation>
</message> </message>
<message> <message>
<location filename="../src/application.cpp" line="140"/> <location filename="../src/application.cpp" line="115"/>
<source>Spark Project</source> <source>Spark Project</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/downloadlistwidget.cpp" line="17"/> <location filename="../src/widgets/downloadlistwidget.cpp" line="10"/>
<source>Download list</source> <source>Download list</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow-dtk.cpp" line="227"/> <location filename="../src/mainwindow-dtk.cpp" line="222"/>
<source>Show MainWindow</source> <source>Show MainWindow</source>
<translation></translation> <translation></translation>
</message> </message>
@@ -619,12 +619,12 @@
<context> <context>
<name>TitleBarMenu</name> <name>TitleBarMenu</name>
<message> <message>
<location filename="../src/mainwindow-dtk.cpp" line="228"/> <location filename="../src/mainwindow-dtk.cpp" line="223"/>
<source>About</source> <source>About</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow-dtk.cpp" line="229"/> <location filename="../src/mainwindow-dtk.cpp" line="224"/>
<source>Exit</source> <source>Exit</source>
<translation>退</translation> <translation>退</translation>
</message> </message>