mirror of
https://gitee.com/spark-store-project/spark-store
synced 2025-12-14 04:42:03 +08:00
@@ -32,8 +32,7 @@ stages:
|
|||||||
- cd ..
|
- cd ..
|
||||||
- rm -rf dtk-old-bundle
|
- rm -rf dtk-old-bundle
|
||||||
- 'mk-build-deps --install --tool "apt-get -o Debug::pkgProblemResolver=yes -y" '
|
- 'mk-build-deps --install --tool "apt-get -o Debug::pkgProblemResolver=yes -y" '
|
||||||
- sed -i 's/-j$(JOBS)/-j2/g' debian/rules
|
- dpkg-buildpackage -j2 -b -us -uc
|
||||||
- dpkg-buildpackage -b -us -uc
|
|
||||||
- cd ..
|
- cd ..
|
||||||
- ls -all
|
- ls -all
|
||||||
- pwd
|
- pwd
|
||||||
|
|||||||
@@ -33,8 +33,7 @@ stages:
|
|||||||
- rm -rf dtk-old-bundle
|
- rm -rf dtk-old-bundle
|
||||||
- ''
|
- ''
|
||||||
- 'mk-build-deps --install --tool "apt-get -o Debug::pkgProblemResolver=yes -y" '
|
- 'mk-build-deps --install --tool "apt-get -o Debug::pkgProblemResolver=yes -y" '
|
||||||
- sed -i 's/-j$(JOBS)/-j2/g' debian/rules
|
- dpkg-buildpackage -j2 -b -us -uc
|
||||||
- dpkg-buildpackage -b -us -uc
|
|
||||||
- cd ..
|
- cd ..
|
||||||
- ls -all
|
- ls -all
|
||||||
- pwd
|
- pwd
|
||||||
|
|||||||
@@ -51,7 +51,14 @@ Then
|
|||||||
```shell
|
```shell
|
||||||
git clone https://gitee.com/deepin-community-store/spark-store.git
|
git clone https://gitee.com/deepin-community-store/spark-store.git
|
||||||
cd spark-store
|
cd spark-store
|
||||||
dpkg-buildpackage
|
dpkg-buildpackage -j
|
||||||
|
```
|
||||||
|
|
||||||
|
Or:
|
||||||
|
```shell
|
||||||
|
git clone https://gitee.com/deepin-community-store/spark-store.git
|
||||||
|
cd spark-store
|
||||||
|
./build_and_install.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
12
README.zh.md
12
README.zh.md
@@ -34,13 +34,13 @@
|
|||||||
Deepin V20/UOS 21 系统下, 安装依赖
|
Deepin V20/UOS 21 系统下, 安装依赖
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
sudo apt install git qt5-default debhelper pkg-config qtchooser libqt5core5a libqt5gui5 libqt5widgets5 libqt5network5 libqt5concurrent5 libdtkcore-dev libdtkgui-dev libdtkwidget-dev qttools5-private-dev libnotify-dev qtwebengine5-dev fakeroot qtwayland5 qtwayland5-dev-tools dde-qt5wayland-plugin
|
sudo apt install git qt5-default debhelper pkg-config qtchooser libqt5core5a libqt5gui5 libqt5widgets5 libqt5network5 libqt5concurrent5 libdtkcore-dev libdtkgui-dev libdtkwidget-dev qttools5-private-dev libnotify-dev qtwebengine5-dev fakeroot qtwayland5 qtwayland5-dev-tools dde-qt5wayland-plugin libqt5svg5*
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
Ubuntu 22.04 系统下, 安装依赖
|
Ubuntu 22.04 系统下, 安装依赖
|
||||||
```shell
|
```shell
|
||||||
sudo apt install git qtbase5-dev debhelper pkg-config qtchooser libqt5core5a libqt5gui5 libqt5widgets5 libqt5network5 libqt5concurrent5 libdtkcore-dev libdtkgui-dev libdtkwidget-dev qttools5-private-dev libnotify-dev qtwebengine5-dev qtwayland5 qtwayland5-dev-tools
|
sudo apt install git qtbase5-dev debhelper pkg-config qtchooser libqt5core5a libqt5gui5 libqt5widgets5 libqt5network5 libqt5concurrent5 libdtkcore-dev libdtkgui-dev libdtkwidget-dev qttools5-private-dev libnotify-dev qtwebengine5-dev qtwayland5 qtwayland5-dev-tools libqt5svg5*
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -48,9 +48,15 @@ sudo apt install git qtbase5-dev debhelper pkg-config qtchooser libqt5core5a lib
|
|||||||
```shell
|
```shell
|
||||||
git clone https://gitee.com/deepin-community-store/spark-store.git
|
git clone https://gitee.com/deepin-community-store/spark-store.git
|
||||||
cd spark-store
|
cd spark-store
|
||||||
dpkg-buildpackage
|
dpkg-buildpackage -j
|
||||||
```
|
```
|
||||||
|
|
||||||
|
或者: 编译并安装
|
||||||
|
```shell
|
||||||
|
git clone https://gitee.com/deepin-community-store/spark-store.git
|
||||||
|
cd spark-store
|
||||||
|
./build_and_install.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
## 🚀 协作
|
## 🚀 协作
|
||||||
|
|||||||
24
build_and_install.sh
Executable file
24
build_and_install.sh
Executable file
@@ -0,0 +1,24 @@
|
|||||||
|
|
||||||
|
# Deepin V20/UOS 21 系统下, 安装依赖
|
||||||
|
|
||||||
|
# ```shell
|
||||||
|
# sudo apt install git qt5-default debhelper pkg-config qtchooser libqt5core5a libqt5gui5 libqt5widgets5 libqt5network5 libqt5concurrent5 libdtkcore-dev libdtkgui-dev libdtkwidget-dev qttools5-private-dev libnotify-dev qtwebengine5-dev fakeroot qtwayland5 qtwayland5-dev-tools dde-qt5wayland-plugin
|
||||||
|
|
||||||
|
# ```
|
||||||
|
|
||||||
|
# Ubuntu 22.04 系统下, 安装依赖
|
||||||
|
# ```shell
|
||||||
|
# sudo apt install git qtbase5-dev debhelper pkg-config qtchooser libqt5core5a libqt5gui5 libqt5widgets5 libqt5network5 libqt5concurrent5 libdtkcore-dev libdtkgui-dev libdtkwidget-dev qttools5-private-dev libnotify-dev qtwebengine5-dev qtwayland5 qtwayland5-dev-tools
|
||||||
|
|
||||||
|
# ```
|
||||||
|
|
||||||
|
echo "Deepin V20/UOS 21 系统下, 安装依赖"
|
||||||
|
echo "sudo apt install git qt5-default debhelper pkg-config qtchooser libqt5core5a libqt5gui5 libqt5widgets5 libqt5network5 libqt5concurrent5 libdtkcore-dev libdtkgui-dev libdtkwidget-dev qttools5-private-dev libnotify-dev qtwebengine5-dev fakeroot qtwayland5 qtwayland5-dev-tools dde-qt5wayland-plugin"
|
||||||
|
|
||||||
|
echo "Ubuntu 22.04 系统下, 安装依赖"
|
||||||
|
echo "sudo apt install git qtbase5-dev debhelper pkg-config qtchooser libqt5core5a libqt5gui5 libqt5widgets5 libqt5network5 libqt5concurrent5 libdtkcore-dev libdtkgui-dev libdtkwidget-dev qttools5-private-dev libnotify-dev qtwebengine5-dev qtwayland5 qtwayland5-dev-tools"
|
||||||
|
|
||||||
|
dpkg-buildpackage -j
|
||||||
|
sudo apt reinstall ../spark-store_*.deb
|
||||||
|
|
||||||
|
rm ../spark-store_*
|
||||||
27
debian/changelog
vendored
27
debian/changelog
vendored
@@ -1,3 +1,29 @@
|
|||||||
|
spark-store (4.2.3) stable; urgency=medium
|
||||||
|
* 修复: 编译依赖不全
|
||||||
|
* 修复: prerm导致的dpkg崩溃
|
||||||
|
* 新增: aptss 检查package配置增加sdu,store
|
||||||
|
* 新增: 一键编译并安装脚本
|
||||||
|
* 新增: 后台安装结束后退出任务栏驻留
|
||||||
|
|
||||||
|
-- shenmo <shenmo@spark-app.store> Fri, 30 Jan 2022 00:00:00 +0800
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
* 调整:开启安装包加固
|
* 调整:开启安装包加固
|
||||||
@@ -5,6 +31,7 @@ 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
|
||||||
|
|||||||
5
debian/control
vendored
5
debian/control
vendored
@@ -14,15 +14,16 @@ Build-Depends:
|
|||||||
libdtkcore-dev(>=5.0),
|
libdtkcore-dev(>=5.0),
|
||||||
libdtkgui-dev(>=5.0),
|
libdtkgui-dev(>=5.0),
|
||||||
libdtkwidget-dev(>=5.0),
|
libdtkwidget-dev(>=5.0),
|
||||||
|
libqt5svg5-dev,
|
||||||
qttools5-private-dev,
|
qttools5-private-dev,
|
||||||
qtwebengine5-dev,
|
qtwebengine5-dev,
|
||||||
qtwayland5,
|
qtwayland5,
|
||||||
qtwayland5-dev-tools,
|
qtwayland5-dev-tools,
|
||||||
gcc,
|
gcc,
|
||||||
g++
|
g++
|
||||||
|
Standards-Version: 4.0.0
|
||||||
Standards-Version: 3.0
|
|
||||||
Homepage: https://www.spark-app.store/
|
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},
|
||||||
|
|||||||
14
debian/rules
vendored
14
debian/rules
vendored
@@ -1,14 +1,14 @@
|
|||||||
#!/usr/bin/make -f
|
#!/usr/bin/make -f
|
||||||
|
|
||||||
export QT_SELECT=5
|
export QT_SELECT = qt5
|
||||||
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)
|
||||||
DH_AUTO_ARGS = --parallel --buildsystem=qmake
|
DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)
|
||||||
|
|
||||||
# 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
|
||||||
@@ -18,20 +18,18 @@ override_dh_auto_clean:
|
|||||||
|
|
||||||
override_dh_auto_configure:
|
override_dh_auto_configure:
|
||||||
mkdir -p $(CURDIR)/build
|
mkdir -p $(CURDIR)/build
|
||||||
|
|
||||||
dh_auto_configure MAKEFLAGS=-j$(JOBS) -- spark-store-project.pro \
|
qmake BUILD_VERSION=$(DEB_VERSION_UPSTREAM) 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 -C $(CURDIR)/build -j$(JOBS)
|
make MAKEFLAGS="$(MAKEFLAGS)" -C $(CURDIR)/build
|
||||||
|
|
||||||
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:
|
||||||
|
|||||||
42
debian/spark-store.postinst
vendored
42
debian/spark-store.postinst
vendored
@@ -1,21 +1,17 @@
|
|||||||
#!/bin/sh
|
#!/bin/bash
|
||||||
|
|
||||||
case "$1" in
|
case "$1" in
|
||||||
configure)
|
configure)
|
||||||
|
# Enable i386 arch
|
||||||
|
echo "Enabling i386 arch..."
|
||||||
|
dpkg --add-architecture i386
|
||||||
|
|
||||||
# Enable i386 arch
|
# config for aptss
|
||||||
echo "Enable i386 arch..."
|
mkdir -p /etc/aptss/sources.list.d
|
||||||
dpkg --add-architecture i386
|
ln -s -f /etc/apt/sources.list /etc/aptss/sources.list
|
||||||
|
|
||||||
# config for aptss
|
# Remove the sources.list file
|
||||||
mkdir -p /etc/aptss/sources.list.d
|
rm -f /etc/apt/sources.list.d/sparkstore.list
|
||||||
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
|
|
||||||
|
|
||||||
|
|
||||||
# Check if /usr/local/bin existed
|
# Check if /usr/local/bin existed
|
||||||
mkdir -p /usr/local/bin
|
mkdir -p /usr/local/bin
|
||||||
@@ -28,33 +24,29 @@ case "$1" in
|
|||||||
ln -s -f /opt/durapps/spark-store/bin/ssaudit /usr/local/bin/ssaudit
|
ln -s -f /opt/durapps/spark-store/bin/ssaudit /usr/local/bin/ssaudit
|
||||||
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
|
||||||
service spark-update-notifier start
|
systemctl start spark-update-notifier
|
||||||
|
|
||||||
|
|
||||||
# Update certain caches
|
# Update certain caches
|
||||||
update-icon-caches /usr/share/icons/hicolor || true
|
update-icon-caches /usr/share/icons/hicolor || true
|
||||||
@@ -63,12 +55,10 @@ 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)
|
||||||
|
|||||||
2
debian/spark-store.postrm
vendored
2
debian/spark-store.postrm
vendored
@@ -1,4 +1,4 @@
|
|||||||
#!/bin/sh
|
#!/bin/bash
|
||||||
|
|
||||||
# Update certain caches
|
# Update certain caches
|
||||||
update-icon-caches /usr/share/icons/hicolor || true
|
update-icon-caches /usr/share/icons/hicolor || true
|
||||||
|
|||||||
79
debian/spark-store.prerm
vendored
79
debian/spark-store.prerm
vendored
@@ -1,48 +1,53 @@
|
|||||||
#!/bin/sh
|
#!/bin/bash
|
||||||
|
function notify-send()
|
||||||
|
{
|
||||||
|
#Detect the user using such display
|
||||||
|
local user=$(who | awk '{print $1}' | head -n 1)
|
||||||
|
|
||||||
if [ "$1" = "remove" ] || [ "$1" = "purge" ];then
|
#Detect the id of the user
|
||||||
# Remove residual symbol links
|
local uid=$(id -u $user)
|
||||||
rm /usr/local/bin/spark-store
|
|
||||||
rm /usr/local/bin/ssinstall
|
|
||||||
rm /usr/local/bin/ssaudit
|
|
||||||
rm /usr/local/bin/spark-dstore-patch
|
|
||||||
rm /usr/local/bin/ussinstall
|
|
||||||
rm /usr/local/bin/ussremove
|
|
||||||
rm /usr/local/bin/ss-apt-fast
|
|
||||||
rm /usr/bin/aptss
|
|
||||||
|
|
||||||
rm -rf /etc/aptss/
|
sudo -u $user DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$uid/bus notify-send "$@"
|
||||||
|
}
|
||||||
|
|
||||||
# Remove Sender module
|
if [ "$1" = "remove" ] || [ "$1" = "purge" ] ; then
|
||||||
rm /opt/durapps/spark-store/bin/ss-feedback/sender-d
|
# Remove residual symbol links
|
||||||
|
rm -f /usr/local/bin/spark-store
|
||||||
|
rm -f /usr/local/bin/ssinstall
|
||||||
|
rm -f /usr/local/bin/ssaudit
|
||||||
|
rm -f /usr/local/bin/spark-dstore-patch
|
||||||
|
rm -f /usr/local/bin/ussinstall
|
||||||
|
rm -f /usr/local/bin/ussremove
|
||||||
|
rm -f /usr/local/bin/ss-apt-fast
|
||||||
|
rm -f /usr/bin/aptss
|
||||||
|
|
||||||
# Remove residual symbol links to stop upgrade detect if exist
|
rm -rf /etc/aptss/
|
||||||
if [ -e /etc/xdg/autostart/spark-update-notifier.desktop ];then
|
|
||||||
rm /etc/xdg/autostart/spark-update-notifier.desktop
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Shutdown services
|
# Remove Sender module
|
||||||
service spark-update-notifier stop
|
rm -f /opt/durapps/spark-store/bin/ss-feedback/sender-d
|
||||||
|
|
||||||
# Stop update detect service
|
# Remove residual symbol links to stop upgrade detect
|
||||||
systemctl disable spark-update-notifier
|
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
|
||||||
|
|
||||||
# Clean the auto install polkit file if exist
|
# Remove gpg key file
|
||||||
if [ -f "/usr/share/polkit-1/actions/store.spark-app.ssinstall.policy" ] ; then
|
rm -f /etc/apt/trusted.gpg.d/spark-store.gpg
|
||||||
rm /usr/share/polkit-1/actions/store.spark-app.ssinstall.policy
|
apt-key del '9D9A A859 F750 24B1 A1EC E16E 0E41 D354 A29A 440C'
|
||||||
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
|
else
|
||||||
|
echo "非卸载操作,不进行配置清理"
|
||||||
echo "非卸载操作,不进行配置清理"
|
|
||||||
|
if [ ! -z "`pidof spark-store`" ];then
|
||||||
|
echo "关闭已有 spark-store.."
|
||||||
|
notify-send "正在升级星火商店" "请在升级结束后重启星火商店" -i spark-store
|
||||||
|
killall spark-store
|
||||||
|
else
|
||||||
|
echo "继续安装 spark-store.."
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|||||||
26
pkg/usr/share/dsg/org.deepin.dtkwidget.feature-display.json
Normal file
26
pkg/usr/share/dsg/org.deepin.dtkwidget.feature-display.json
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
{
|
||||||
|
"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"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -7,15 +7,21 @@
|
|||||||
TARGET = spark-store
|
TARGET = spark-store
|
||||||
TEMPLATE = subdirs
|
TEMPLATE = subdirs
|
||||||
|
|
||||||
CONFIG += ordered
|
#CONFIG += ordered
|
||||||
CONFIG += wayland-compositor
|
CONFIG += wayland-compositor
|
||||||
|
|
||||||
SUBDIRS += \
|
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)
|
||||||
}
|
}
|
||||||
@@ -66,9 +72,3 @@ 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)
|
|
||||||
@@ -1,10 +1,14 @@
|
|||||||
#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>
|
||||||
@@ -43,6 +47,9 @@ 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()
|
||||||
@@ -53,9 +60,21 @@ 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));
|
||||||
@@ -65,21 +84,18 @@ void Application::checkAppConfigLocation()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Application::setVersionAndBuildDateTime(const QString &version, const QString &buildDateTime)
|
void Application::setBuildDateTime(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() != m_version) {
|
if (config.value("build/version").toString() != QString(APP_VERSION)) {
|
||||||
qDebug() << "Spark Store has been updated!";
|
qDebug() << "Spark Store has been updated!";
|
||||||
|
|
||||||
config.setValue("build/version", m_version);
|
config.setValue("build/version", QString(APP_VERSION));
|
||||||
config.setValue("build/time", m_buildDateTime);
|
config.setValue("build/time", buildDateTime);
|
||||||
config.sync();
|
config.sync();
|
||||||
}
|
}
|
||||||
|
|
||||||
setApplicationVersion(DApplication::buildVersion(config.value("build/version").toString() + "-" + "Flamescion" + "-" + config.value("build/time").toString()));
|
setApplicationVersion(DApplication::buildVersion(QString(APP_VERSION) + "-" + "Flamescion" + "-" + buildDateTime));
|
||||||
}
|
}
|
||||||
|
|
||||||
void Application::setMainWindow(MainWindow *window)
|
void Application::setMainWindow(MainWindow *window)
|
||||||
@@ -89,6 +105,17 @@ 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
|
||||||
|
}
|
||||||
|
|
||||||
|
MainWindow *Application::mainWindow()
|
||||||
|
{
|
||||||
|
return m_mainWindow;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Application::initAboutDialog()
|
void Application::initAboutDialog()
|
||||||
@@ -109,6 +136,9 @@ 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());
|
||||||
@@ -118,9 +148,70 @@ 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
|
||||||
|
|||||||
@@ -3,6 +3,8 @@
|
|||||||
|
|
||||||
#include <DApplication>
|
#include <DApplication>
|
||||||
|
|
||||||
|
#include <QJsonObject>
|
||||||
|
|
||||||
DWIDGET_USE_NAMESPACE
|
DWIDGET_USE_NAMESPACE
|
||||||
|
|
||||||
class MainWindow;
|
class MainWindow;
|
||||||
@@ -13,18 +15,23 @@ 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 setVersionAndBuildDateTime(const QString &version, const QString &buildDateTime);
|
void setBuildDateTime(const QString &buildDateTime);
|
||||||
|
|
||||||
void setMainWindow(MainWindow *window);
|
void setMainWindow(MainWindow *window);
|
||||||
|
MainWindow *mainWindow();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void initAboutDialog();
|
void initAboutDialog();
|
||||||
|
#if (DTK_VERSION >= DTK_VERSION_CHECK(5, 6, 4, 0))
|
||||||
|
void initFeatureDisplayDialog();
|
||||||
|
#endif
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QString m_version;
|
QJsonObject m_featuresJsonObj;
|
||||||
QString m_buildDateTime;
|
|
||||||
|
|
||||||
MainWindow *m_mainWindow = nullptr;
|
MainWindow *m_mainWindow = nullptr;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -44,6 +44,7 @@
|
|||||||
<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>
|
||||||
|
|||||||
25
src/assets/json/features.json
Normal file
25
src/assets/json/features.json
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
{
|
||||||
|
"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
|
||||||
|
}
|
||||||
@@ -1,9 +1,7 @@
|
|||||||
#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>
|
||||||
|
|
||||||
|
|||||||
@@ -2,9 +2,7 @@
|
|||||||
#define DOWNLOADWORKER_H
|
#define DOWNLOADWORKER_H
|
||||||
|
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
#include <QList>
|
#include <QVector>
|
||||||
#include <QFile>
|
|
||||||
#include <QNetworkReply>
|
|
||||||
|
|
||||||
class DownloadController : public QObject
|
class DownloadController : public QObject
|
||||||
{
|
{
|
||||||
@@ -19,23 +17,19 @@ 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
|
||||||
|
|||||||
46
src/main.cpp
46
src/main.cpp
@@ -11,6 +11,7 @@
|
|||||||
#include <QSettings>
|
#include <QSettings>
|
||||||
#include <QFile>
|
#include <QFile>
|
||||||
#include <QStandardPaths>
|
#include <QStandardPaths>
|
||||||
|
#include <QSurfaceFormat>
|
||||||
|
|
||||||
DCORE_USE_NAMESPACE
|
DCORE_USE_NAMESPACE
|
||||||
DWIDGET_USE_NAMESPACE
|
DWIDGET_USE_NAMESPACE
|
||||||
@@ -18,7 +19,6 @@ 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");
|
||||||
@@ -36,15 +36,47 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
// 龙芯机器配置,使得 DApplication 能正确加载 QTWEBENGINE
|
// 龙芯机器配置,使得 DApplication 能正确加载 QTWEBENGINE
|
||||||
qputenv("DTK_FORCE_RASTER_WIDGETS", "FALSE");
|
qputenv("DTK_FORCE_RASTER_WIDGETS", "FALSE");
|
||||||
// qputenv("QTWEBENGINE_CHROMIUM_FLAGS", "--disable-features=UseModernMediaControls");
|
// qputenv("QTWEBENGINE_CHROMIUM_FLAGS", "--disable-features=UseModernMediaControls");
|
||||||
// qputenv("QTWEBENGINE_CHROMIUM_FLAGS", "--disable-web-security");
|
// qputenv("QTWEBENGINE_CHROMIUM_FLAGS", "--disable-web-security");
|
||||||
|
|
||||||
|
|
||||||
// 浏览器开启 GPU 支持
|
// 浏览器开启 GPU 支持
|
||||||
#ifdef __sw_64__
|
#ifdef __sw_64__
|
||||||
qputenv("QTWEBENGINE_CHROMIUM_FLAGS", "--ignore-gpu-blocklist --enable-gpu-rasterization --enable-native-gpu-memory-buffers --enable-accelerated-video-decode --no-sandbox");
|
qputenv("QTWEBENGINE_CHROMIUM_FLAGS", "--no-sandbox");
|
||||||
#else
|
|
||||||
qputenv("QTWEBENGINE_CHROMIUM_FLAGS", "--ignore-gpu-blocklist --enable-gpu-rasterization --enable-native-gpu-memory-buffers --enable-accelerated-video-decode");
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* FIXME: 对于麒麟 CPU 设备,调用 QtWebEngine 会导致客户端崩溃;
|
||||||
|
* 暂时不对 CPU 进行判断,对 wayland 环境下统一处理
|
||||||
|
*/
|
||||||
|
if (Utils::isWayland()) {
|
||||||
|
QString env = QString::fromUtf8(qgetenv("QTWEBENGINE_CHROMIUM_FLAGS"));
|
||||||
|
env = env.trimmed();
|
||||||
|
/**
|
||||||
|
* NOTE: 参考帮助手册代码,对于麒麟 CPU 设备,
|
||||||
|
* --disable-gpu 保证 wayland 环境下网页正常显示
|
||||||
|
* --single-process 避免 wayland 环境下 QtWebEngine 崩溃(可选)
|
||||||
|
*/
|
||||||
|
env += " --disable-gpu";
|
||||||
|
qputenv("QTWEBENGINE_CHROMIUM_FLAGS", env.trimmed().toUtf8());
|
||||||
|
|
||||||
|
/**
|
||||||
|
* NOTE: 参考帮助手册代码,对于麒麟 CPU 设备,
|
||||||
|
* 避免 wayland 环境下 QtWebEngine 崩溃
|
||||||
|
*/
|
||||||
|
qputenv("QT_WAYLAND_SHELL_INTEGRATION", "kwayland-shell");
|
||||||
|
QSurfaceFormat format;
|
||||||
|
format.setRenderableType(QSurfaceFormat::OpenGLES);
|
||||||
|
QSurfaceFormat::setDefaultFormat(format);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* NOTE: https://zhuanlan.zhihu.com/p/550285855
|
||||||
|
* 避免 wayland 环境下从 QtWebEngine 后退回到 QWidget 时黑屏闪烁
|
||||||
|
*/
|
||||||
|
qputenv("QMLSCENE_DEVICE", "softwarecontext");
|
||||||
|
DApplication::setAttribute(Qt::AA_UseSoftwareOpenGL);
|
||||||
|
}
|
||||||
|
|
||||||
DApplication::setAttribute(Qt::AA_EnableHighDpiScaling); // 开启 Hidpi 支持
|
DApplication::setAttribute(Qt::AA_EnableHighDpiScaling); // 开启 Hidpi 支持
|
||||||
|
|
||||||
// 强制使用 DTK 平台插件
|
// 强制使用 DTK 平台插件
|
||||||
@@ -59,7 +91,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.setVersionAndBuildDateTime(version, buildDateTime);
|
a.setBuildDateTime(buildDateTime);
|
||||||
|
|
||||||
// 限制单实例运行
|
// 限制单实例运行
|
||||||
if (!a.setSingleInstance("spark-store"))
|
if (!a.setSingleInstance("spark-store"))
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
#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"
|
||||||
|
|
||||||
@@ -10,6 +11,7 @@
|
|||||||
#include <DWidgetUtil>
|
#include <DWidgetUtil>
|
||||||
#include <DGuiApplicationHelper>
|
#include <DGuiApplicationHelper>
|
||||||
|
|
||||||
|
#include <QDesktopServices>
|
||||||
#include <QAbstractButton>
|
#include <QAbstractButton>
|
||||||
#include <QtConcurrent>
|
#include <QtConcurrent>
|
||||||
|
|
||||||
@@ -102,6 +104,22 @@ void MainWindow::openUrl(const QString &url)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool MainWindow::isCloseWindowAnimation()
|
||||||
|
{
|
||||||
|
return closeWindowAnimation;
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::closeEvent(QCloseEvent *event)
|
||||||
|
{
|
||||||
|
// 判断下载任务数量,如果没有要下载的,就直接退出主程序
|
||||||
|
if(!downloadlistwidget->isDownloadInProcess()){
|
||||||
|
// 已经全部下载完成
|
||||||
|
qApp->quit();
|
||||||
|
}
|
||||||
|
|
||||||
|
BaseWidgetOpacity::closeEvent(event);
|
||||||
|
}
|
||||||
|
|
||||||
void MainWindow::initUI()
|
void MainWindow::initUI()
|
||||||
{
|
{
|
||||||
setWindowTitle(QObject::tr("Spark Store"));
|
setWindowTitle(QObject::tr("Spark Store"));
|
||||||
@@ -132,6 +150,9 @@ 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);
|
||||||
@@ -297,14 +318,6 @@ 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, [=]()
|
||||||
{
|
{
|
||||||
@@ -421,6 +434,35 @@ 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
|
||||||
|
|||||||
@@ -25,10 +25,15 @@ class MainWindow : public BaseWidgetOpacity
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
explicit MainWindow(QWidget *parent = nullptr);
|
explicit MainWindow(QWidget *parent = nullptr);
|
||||||
~MainWindow();
|
~MainWindow() override;
|
||||||
|
|
||||||
void openUrl(const QString &url);
|
void openUrl(const QString &url);
|
||||||
|
|
||||||
|
bool isCloseWindowAnimation();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void closeEvent(QCloseEvent *event) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void initUI();
|
void initUI();
|
||||||
void initTitleBar();
|
void initTitleBar();
|
||||||
@@ -41,6 +46,9 @@ 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);
|
||||||
|
|||||||
@@ -2,8 +2,10 @@
|
|||||||
#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>
|
||||||
|
|||||||
@@ -1,8 +1,6 @@
|
|||||||
#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>
|
||||||
|
|||||||
@@ -22,8 +22,13 @@ 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
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
#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"
|
||||||
|
|
||||||
@@ -182,3 +183,33 @@ 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();
|
||||||
|
}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
#define UTILS_H
|
#define UTILS_H
|
||||||
|
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
|
#include <QJsonObject>
|
||||||
|
|
||||||
class Utils
|
class Utils
|
||||||
{
|
{
|
||||||
@@ -13,6 +14,7 @@ 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
|
||||||
|
|||||||
@@ -43,6 +43,7 @@ void BaseWidgetOpacity::closeEvent(QCloseEvent *event)
|
|||||||
bool isWayland = Utils::isWayland();
|
bool isWayland = Utils::isWayland();
|
||||||
if (isWayland)
|
if (isWayland)
|
||||||
{
|
{
|
||||||
|
closeWindowAnimation = true;
|
||||||
return DBlurEffectWidget::closeEvent(event);
|
return DBlurEffectWidget::closeEvent(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -61,8 +61,21 @@ 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();
|
||||||
@@ -70,7 +83,9 @@ void 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)
|
||||||
@@ -93,6 +108,12 @@ 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)
|
||||||
@@ -142,6 +163,12 @@ 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;
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ public:
|
|||||||
void setMax(qint64);
|
void setMax(qint64);
|
||||||
void setName(QString);
|
void setName(QString);
|
||||||
QString getName();
|
QString getName();
|
||||||
void readyInstall();
|
int readyInstall();
|
||||||
|
|
||||||
void setFileName(QString);
|
void setFileName(QString);
|
||||||
void seticon(const QPixmap);
|
void seticon(const QPixmap);
|
||||||
|
|||||||
@@ -1,20 +1,20 @@
|
|||||||
#include "progressbutton.h"
|
#include "progressbutton.h"
|
||||||
|
#include "widgets/downloadlistwidget.h"
|
||||||
|
|
||||||
#include <QPainter>
|
#include <QPainter>
|
||||||
#include <QPainterPath>
|
#include <QPainterPath>
|
||||||
#include <QRect>
|
#include <QMoveEvent>
|
||||||
#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);
|
||||||
setMinimumWidth(36);
|
setMinimumSize(36, 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,69 +23,6 @@ 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;
|
||||||
@@ -107,6 +44,11 @@ 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;
|
||||||
@@ -125,17 +67,15 @@ void ProgressButton::setColor(QColor color)
|
|||||||
update();
|
update();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ProgressButton::leaveEvent(QEvent *event)
|
void ProgressButton::mousePressEvent(QMouseEvent *event)
|
||||||
{
|
{
|
||||||
if (buttonState == state::hover)
|
m_mouseMoved = false;
|
||||||
{
|
m_isDownloadListWidgetVisible = m_downloadListWidget->isVisible();
|
||||||
buttonState = state::normal;
|
m_downloadListWidget->hide();
|
||||||
update();
|
QWidget::mousePressEvent(event);
|
||||||
}
|
|
||||||
QWidget::leaveEvent(event);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ProgressButton::mousePressEvent(QMouseEvent *event)
|
void ProgressButton::mouseReleaseEvent(QMouseEvent *event)
|
||||||
{
|
{
|
||||||
if (buttonState == state::hover || buttonState == state::normal)
|
if (buttonState == state::hover || buttonState == state::normal)
|
||||||
{
|
{
|
||||||
@@ -146,8 +86,109 @@ void ProgressButton::mousePressEvent(QMouseEvent *event)
|
|||||||
{
|
{
|
||||||
update();
|
update();
|
||||||
}
|
}
|
||||||
emit clicked();
|
|
||||||
QWidget::mousePressEvent(event);
|
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)
|
||||||
|
{
|
||||||
|
if (buttonState == state::hover)
|
||||||
|
{
|
||||||
|
buttonState = state::normal;
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
QWidget::leaveEvent(event);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ProgressButton::paintEvent(QPaintEvent *event)
|
||||||
|
{
|
||||||
|
QPainter painter(this);
|
||||||
|
painter.setRenderHint(QPainter::Antialiasing, true);
|
||||||
|
QRect rect = event->rect();
|
||||||
|
|
||||||
|
if (buttonState == state::normal || buttonState == state::hover)
|
||||||
|
{
|
||||||
|
int radius = (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), 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)
|
||||||
|
{
|
||||||
|
auto radius = (rect.height() - 6) / 2;
|
||||||
|
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ProgressButton::operationProcessing()
|
void ProgressButton::operationProcessing()
|
||||||
@@ -156,16 +197,16 @@ void ProgressButton::operationProcessing()
|
|||||||
|
|
||||||
const int RADIUS = 60;
|
const int RADIUS = 60;
|
||||||
WaterDrop::WaterDrop(QWidget *parent)
|
WaterDrop::WaterDrop(QWidget *parent)
|
||||||
: QWidget(parent), m_waterDropAnimation(nullptr), m_animationRadius(0)
|
: QWidget(parent)
|
||||||
|
, 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))));
|
|
||||||
|
|
||||||
connect(m_waterDropAnimation, &QVariantAnimation::finished, this, &WaterDrop::deleteLater);
|
// m_waterDropAnimation->setEasingCurve(QEasingCurve(static_cast<QEasingCurve::Type>(QRandomGenerator::global()->bounded(40))));
|
||||||
}
|
}
|
||||||
|
|
||||||
// 把鼠标点击的点转换为圆心点坐标
|
// 把鼠标点击的点转换为圆心点坐标
|
||||||
@@ -191,8 +232,7 @@ void WaterDrop::paintEvent(QPaintEvent *event)
|
|||||||
{
|
{
|
||||||
QPainter painter(this);
|
QPainter painter(this);
|
||||||
painter.setRenderHint(QPainter::Antialiasing);
|
painter.setRenderHint(QPainter::Antialiasing);
|
||||||
QPen pen;
|
QPen pen(QBrush(QColor("#ffff80")), 5.0);
|
||||||
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);
|
||||||
@@ -200,7 +240,7 @@ void WaterDrop::paintEvent(QPaintEvent *event)
|
|||||||
QWidget::paintEvent(event);
|
QWidget::paintEvent(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
void WaterDrop::onRadiusChanged(QVariant value)
|
void WaterDrop::onRadiusChanged(const QVariant &value)
|
||||||
{
|
{
|
||||||
m_animationRadius = value.toInt();
|
m_animationRadius = value.toInt();
|
||||||
update();
|
update();
|
||||||
|
|||||||
@@ -1,53 +1,62 @@
|
|||||||
#ifndef PROGRESSBUTTON_H
|
#ifndef PROGRESSBUTTON_H
|
||||||
#define PROGRESSBUTTON_H
|
#define PROGRESSBUTTON_H
|
||||||
|
|
||||||
|
#include <QWidget>
|
||||||
#include <QtWidgets/QWidget>
|
|
||||||
|
|
||||||
#include <QPaintEvent>
|
|
||||||
|
|
||||||
#include <QTimer>
|
#include <QTimer>
|
||||||
#include <QTimerEvent>
|
#include <QVariantAnimation>
|
||||||
#include<QColor>
|
|
||||||
#include <QList>
|
|
||||||
#include <QMouseEvent>
|
|
||||||
|
|
||||||
|
|
||||||
|
class DownloadListWidget;
|
||||||
class ProgressButton : public QWidget
|
class ProgressButton : public QWidget
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
ProgressButton(QWidget *parent = nullptr);
|
explicit 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();
|
||||||
|
|
||||||
protected:
|
private slots:
|
||||||
void paintEvent(QPaintEvent *event)override;
|
void operationProcessing();
|
||||||
void leaveEvent(QEvent *event)override;
|
|
||||||
void mousePressEvent(QMouseEvent *event)override;
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
enum class state
|
enum 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
|
||||||
@@ -55,19 +64,19 @@ class WaterDrop : public QWidget
|
|||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
WaterDrop(QWidget *parent = Q_NULLPTR);
|
explicit WaterDrop(QWidget *parent = nullptr);
|
||||||
void show();
|
void show();
|
||||||
void move(const QPoint &point);
|
void move(const QPoint &point);
|
||||||
|
|
||||||
private:
|
protected:
|
||||||
void paintEvent(QPaintEvent *event);
|
void paintEvent(QPaintEvent *event);
|
||||||
void onRadiusChanged(QVariant value);
|
|
||||||
|
private slots:
|
||||||
|
void onRadiusChanged(const QVariant &value);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
class QVariantAnimation* m_waterDropAnimation;
|
QVariantAnimation *m_waterDropAnimation = nullptr;
|
||||||
int m_animationRadius;
|
int m_animationRadius;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif // PROGRESSBUTTON_H
|
#endif // PROGRESSBUTTON_H
|
||||||
|
|||||||
@@ -1,8 +1,16 @@
|
|||||||
#include "downloadlistwidget.h"
|
#include "downloadlistwidget.h"
|
||||||
#include "ui_downloadlistwidget.h"
|
#include "ui_downloadlistwidget.h"
|
||||||
#include <QGraphicsOpacityEffect>
|
#include "widgets/common/downloaditem.h"
|
||||||
#include <QPropertyAnimation>
|
#include "backend/sparkapi.h"
|
||||||
|
#include "backend/downloadworker.h"
|
||||||
|
#include "utils/utils.h"
|
||||||
|
#include "application.h"
|
||||||
|
#include "mainwindow-dtk.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)
|
||||||
{
|
{
|
||||||
@@ -56,31 +64,27 @@ DownloadListWidget::~DownloadListWidget()
|
|||||||
{
|
{
|
||||||
downloadController->disconnect();
|
downloadController->disconnect();
|
||||||
downloadController->stopDownload();
|
downloadController->stopDownload();
|
||||||
downloadController->deleteLater();
|
// 这里没有释放 downloadController,使用懒汉式单例
|
||||||
}
|
}
|
||||||
|
|
||||||
clearItem();
|
clearItem();
|
||||||
delete ui;
|
delete ui;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool DownloadListWidget::isDownloadInProcess()
|
||||||
|
{
|
||||||
|
if (toDownload > 0)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
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())
|
||||||
@@ -89,6 +93,7 @@ DownloadItem* DownloadListWidget::addItem(QString name, QString fileName, QStrin
|
|||||||
}
|
}
|
||||||
urList.append(downloadurl);
|
urList.append(downloadurl);
|
||||||
allDownload += 1;
|
allDownload += 1;
|
||||||
|
toDownload += 1;
|
||||||
DownloadItem *di = new DownloadItem;
|
DownloadItem *di = new DownloadItem;
|
||||||
dlist << downloadurl;
|
dlist << downloadurl;
|
||||||
downloaditemlist << di;
|
downloaditemlist << di;
|
||||||
@@ -127,13 +132,17 @@ void DownloadListWidget::startRequest(QUrl url, QString fileName)
|
|||||||
isdownload = true;
|
isdownload = true;
|
||||||
downloaditemlist[allDownload - 1]->free = false;
|
downloaditemlist[allDownload - 1]->free = false;
|
||||||
|
|
||||||
if (downloadController)
|
// 使用懒汉式单例来存储downloadController
|
||||||
|
if (downloadController == nullptr)
|
||||||
|
{
|
||||||
|
downloadController = new DownloadController; // 并发下载,在第一次点击下载按钮的时候才会初始化
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
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);});
|
||||||
@@ -141,30 +150,57 @@ 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();
|
|
||||||
downloaditemlist[nowDownload - 1]->free = true;
|
QtConcurrent::run([=]()
|
||||||
emit downloadFinished();
|
|
||||||
if (nowDownload < allDownload)
|
|
||||||
{
|
{
|
||||||
// 如果有排队则下载下一个
|
while (downloaditemlist[nowDownload - 1]->readyInstall() == -1) // 安装当前应用,堵塞安装,后面的下载suspend
|
||||||
qDebug() << "切换下一个下载...";
|
|
||||||
nowDownload += 1;
|
|
||||||
while (downloaditemlist[nowDownload - 1]->close)
|
|
||||||
{
|
{
|
||||||
nowDownload += 1;
|
continue;
|
||||||
if (nowDownload >= allDownload)
|
}
|
||||||
|
toDownload -= 1; // 安装完以后减少待安装数目
|
||||||
|
qDebug() << "Download: 还没有下载的数目:" << toDownload;
|
||||||
|
|
||||||
|
if (toDownload == 0)
|
||||||
|
{
|
||||||
|
Application *app = qobject_cast<Application *>(qApp);
|
||||||
|
MainWindow *mainWindow = app->mainWindow();
|
||||||
|
if (mainWindow->isCloseWindowAnimation() == true)
|
||||||
{
|
{
|
||||||
nowDownload = allDownload;
|
qDebug() << "Download: 后台安装结束,退出程序";
|
||||||
return;
|
qApp->quit();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
QString fileName = downloaditemlist[nowDownload - 1]->getName();
|
|
||||||
startRequest(urList.at(nowDownload - 1), fileName);
|
downloaditemlist[nowDownload - 1]->free = true;
|
||||||
}
|
emit downloadFinished();
|
||||||
|
if (nowDownload < allDownload)
|
||||||
|
{
|
||||||
|
// 如果有排队则下载下一个
|
||||||
|
qDebug() << "Download: 切换下一个下载...";
|
||||||
|
nowDownload += 1;
|
||||||
|
while (downloaditemlist[nowDownload - 1]->close)
|
||||||
|
{
|
||||||
|
nowDownload += 1;
|
||||||
|
if (nowDownload >= allDownload)
|
||||||
|
{
|
||||||
|
nowDownload = allDownload;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
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)
|
||||||
@@ -195,21 +231,7 @@ 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);
|
||||||
|
|||||||
@@ -1,20 +1,19 @@
|
|||||||
#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
|
||||||
@@ -23,11 +22,17 @@ public:
|
|||||||
DownloadItem *addItem(QString name, QString fileName, QString pkgName, const QPixmap icon, QString downloadurl);
|
DownloadItem *addItem(QString name, QString fileName, QString pkgName, const QPixmap icon, QString downloadurl);
|
||||||
int nowDownload = 0;
|
int nowDownload = 0;
|
||||||
int allDownload = 0;
|
int allDownload = 0;
|
||||||
|
int toDownload = 0;
|
||||||
QList<DownloadItem *> getDIList();
|
QList<DownloadItem *> getDIList();
|
||||||
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();
|
~DownloadListWidget() override;
|
||||||
|
|
||||||
|
bool isDownloadInProcess();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void mouseMoveEvent(QMouseEvent *event) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
int isdownload = false;
|
int isdownload = false;
|
||||||
@@ -48,13 +53,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
|
||||||
|
|||||||
16
tool/aptss
16
tool/aptss
@@ -8,23 +8,23 @@ 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://gitee.com/deepin-community-store/repo_auto_update_script/raw/master/mirror-list-for-apt-fast/apt-fast.conf"
|
curl --progress-bar -o /tmp/aptss-conf/apt-fast.conf "https://d.store.deepinos.org.cn/apt-fast.conf"
|
||||||
chmod -R 755 /tmp/aptss-conf
|
chmod -R 755 /tmp/aptss-conf
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
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
|
if [ ! -e "/var/lib/apt/lists/d.spark-app.store_store_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
|
||||||
echo "接收星火仓库软件信息中..."
|
echo "接收星火仓库软件信息中..."
|
||||||
|
|
||||||
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 --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"
|
curl --silent -o /tmp/aptss-conf/apt-fast.conf "https://d.store.deepinos.org.cn/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://gitee.com/deepin-community-store/repo_auto_update_script/raw/master/mirror-list-for-apt-fast/sources.list.d/sparkstore.list"
|
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 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://gitee.com/deepin-community-store/repo_auto_update_script/raw/master/mirror-list-for-apt-fast/apt-fast.conf"
|
curl --silent -o /tmp/aptss-conf/apt-fast.conf "https://d.store.deepinos.org.cn/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://gitee.com/deepin-community-store/repo_auto_update_script/raw/master/mirror-list-for-apt-fast/sources.list.d/sparkstore.list"
|
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 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://gitee.com/deepin-community-store/repo_auto_update_script/raw/master/mirror-list-for-apt-fast/sources.list.d/sparkstore.list"
|
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"
|
||||||
|
|
||||||
|
|
||||||
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://gitee.com/deepin-community-store/repo_auto_update_script/raw/master/mirror-list-for-apt-fast/apt-fast.conf"
|
curl --progress-bar -o /tmp/aptss-conf/apt-fast.conf "https://d.store.deepinos.org.cn/apt-fast.conf"
|
||||||
chmod -R 755 /tmp/aptss-conf
|
chmod -R 755 /tmp/aptss-conf
|
||||||
### 额外一份拿来给aptss自动补全用
|
### 额外一份拿来给aptss自动补全用
|
||||||
bwrap --dev-bind / / \
|
bwrap --dev-bind / / \
|
||||||
|
|||||||
@@ -54,19 +54,22 @@ 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" ];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" ] && [ ! -e "/var/lib/apt/lists/mirrors.sdu.edu.cn_spark-store-repository_store_Packages" ];then
|
||||||
echo "接收星火仓库软件信息中..."
|
echo "接收星火仓库软件信息中..."
|
||||||
aptss ssupdate
|
aptss ssupdate
|
||||||
fi
|
fi
|
||||||
|
|
||||||
### 选择包信息位置
|
### 选择包信息位置
|
||||||
|
|
||||||
if [ -e "/var/lib/apt/lists/d.store.deepinos.org.cn_store_Packages" ];then
|
if [ -e "/var/lib/apt/lists/d.spark-app.store_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.spark-app.store_store_Packages"
|
||||||
echo "星火仓库的Packages位置为 $PACKAGES_DATA_PATH,是单目录仓库配置"
|
echo "星火仓库的Packages位置为 $PACKAGES_DATA_PATH,是星火域名单目录仓库配置"
|
||||||
else
|
elif [ -e "/var/lib/apt/lists/d.store.deepinos.org.cn_Packages" ];then
|
||||||
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
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -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="171"/>
|
<location filename="../src/pages/appintopage.cpp" line="173"/>
|
||||||
<location filename="../src/pages/appintopage.cpp" line="313"/>
|
<location filename="../src/pages/appintopage.cpp" line="315"/>
|
||||||
<location filename="../src/pages/appintopage.cpp" line="428"/>
|
<location filename="../src/pages/appintopage.cpp" line="430"/>
|
||||||
<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="45"/>
|
<location filename="../src/pages/appintopage.cpp" line="47"/>
|
||||||
<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="110"/>
|
<location filename="../src/pages/appintopage.cpp" line="112"/>
|
||||||
<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="156"/>
|
<location filename="../src/pages/appintopage.cpp" line="158"/>
|
||||||
<location filename="../src/pages/appintopage.cpp" line="329"/>
|
<location filename="../src/pages/appintopage.cpp" line="331"/>
|
||||||
<location filename="../src/pages/appintopage.cpp" line="401"/>
|
<location filename="../src/pages/appintopage.cpp" line="403"/>
|
||||||
<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="163"/>
|
<location filename="../src/pages/appintopage.cpp" line="165"/>
|
||||||
<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="318"/>
|
<location filename="../src/pages/appintopage.cpp" line="320"/>
|
||||||
<location filename="../src/pages/appintopage.cpp" line="377"/>
|
<location filename="../src/pages/appintopage.cpp" line="379"/>
|
||||||
<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="323"/>
|
<location filename="../src/pages/appintopage.cpp" line="325"/>
|
||||||
<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="432"/>
|
<location filename="../src/pages/appintopage.cpp" line="434"/>
|
||||||
<location filename="../src/pages/appintopage.cpp" line="445"/>
|
<location filename="../src/pages/appintopage.cpp" line="447"/>
|
||||||
<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="432"/>
|
<location filename="../src/pages/appintopage.cpp" line="434"/>
|
||||||
<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="445"/>
|
<location filename="../src/pages/appintopage.cpp" line="447"/>
|
||||||
<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="111"/>
|
<location filename="../src/application.cpp" line="138"/>
|
||||||
<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="118"/>
|
<location filename="../src/application.cpp" line="148"/>
|
||||||
<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="186"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="213"/>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="197"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="224"/>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="205"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="232"/>
|
||||||
<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="104"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="125"/>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="105"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="126"/>
|
||||||
<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="186"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="213"/>
|
||||||
<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="187"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="214"/>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="188"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="215"/>
|
||||||
<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="195"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="222"/>
|
||||||
<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="197"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="224"/>
|
||||||
<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="198"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="225"/>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="199"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="226"/>
|
||||||
<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="205"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="232"/>
|
||||||
<source>dpkg progress had been aborted,you can retry installation.</source>
|
<source>dpkg progress had been aborted,you can retry installation.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="206"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="233"/>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="207"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="234"/>
|
||||||
<source>dpkg progress had been aborted,you can retry installation</source>
|
<source>dpkg progress had been aborted,you can retry installation</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="123"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="144"/>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="124"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="145"/>
|
||||||
<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="165"/>
|
<location filename="../src/mainwindow-dtk.cpp" line="186"/>
|
||||||
<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="166"/>
|
<location filename="../src/mainwindow-dtk.cpp" line="187"/>
|
||||||
<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="167"/>
|
<location filename="../src/mainwindow-dtk.cpp" line="188"/>
|
||||||
<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="168"/>
|
<location filename="../src/mainwindow-dtk.cpp" line="189"/>
|
||||||
<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="127"/>
|
<location filename="../src/mainwindow-dtk.cpp" line="145"/>
|
||||||
<location filename="../src/mainwindow-dtk.cpp" line="219"/>
|
<location filename="../src/mainwindow-dtk.cpp" line="240"/>
|
||||||
<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="132"/>
|
<location filename="../src/mainwindow-dtk.cpp" line="150"/>
|
||||||
<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="29"/>
|
<location filename="../src/application.cpp" line="33"/>
|
||||||
<location filename="../src/application.cpp" line="30"/>
|
<location filename="../src/application.cpp" line="34"/>
|
||||||
<location filename="../src/mainwindow-dtk.cpp" line="107"/>
|
<location filename="../src/mainwindow-dtk.cpp" line="125"/>
|
||||||
<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="34"/>
|
<location filename="../src/application.cpp" line="38"/>
|
||||||
<source><span style=' font-size:10pt;font-weight:60;'>An appstore powered by community</span><br/><a href='https://www.spark-app.store/'>https://www.spark-app.store</a><br/><span style=' font-size:12pt;'>Spark developers</span></source>
|
<source><span style=' font-size:10pt;font-weight:60;'>An appstore powered by community</span><br/><a href='https://www.spark-app.store/'>https://www.spark-app.store</a><br/><span style=' font-size:12pt;'>Spark developers</span></source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/application.cpp" line="115"/>
|
<location filename="../src/application.cpp" line="145"/>
|
||||||
<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="10"/>
|
<location filename="../src/widgets/downloadlistwidget.cpp" line="18"/>
|
||||||
<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="222"/>
|
<location filename="../src/mainwindow-dtk.cpp" line="243"/>
|
||||||
<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="223"/>
|
<location filename="../src/mainwindow-dtk.cpp" line="244"/>
|
||||||
<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="224"/>
|
<location filename="../src/mainwindow-dtk.cpp" line="245"/>
|
||||||
<source>Exit</source>
|
<source>Exit</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
|||||||
@@ -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="171"/>
|
<location filename="../src/pages/appintopage.cpp" line="173"/>
|
||||||
<location filename="../src/pages/appintopage.cpp" line="313"/>
|
<location filename="../src/pages/appintopage.cpp" line="315"/>
|
||||||
<location filename="../src/pages/appintopage.cpp" line="428"/>
|
<location filename="../src/pages/appintopage.cpp" line="430"/>
|
||||||
<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="45"/>
|
<location filename="../src/pages/appintopage.cpp" line="47"/>
|
||||||
<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="110"/>
|
<location filename="../src/pages/appintopage.cpp" line="112"/>
|
||||||
<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="156"/>
|
<location filename="../src/pages/appintopage.cpp" line="158"/>
|
||||||
<location filename="../src/pages/appintopage.cpp" line="329"/>
|
<location filename="../src/pages/appintopage.cpp" line="331"/>
|
||||||
<location filename="../src/pages/appintopage.cpp" line="401"/>
|
<location filename="../src/pages/appintopage.cpp" line="403"/>
|
||||||
<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="163"/>
|
<location filename="../src/pages/appintopage.cpp" line="165"/>
|
||||||
<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="318"/>
|
<location filename="../src/pages/appintopage.cpp" line="320"/>
|
||||||
<location filename="../src/pages/appintopage.cpp" line="377"/>
|
<location filename="../src/pages/appintopage.cpp" line="379"/>
|
||||||
<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="323"/>
|
<location filename="../src/pages/appintopage.cpp" line="325"/>
|
||||||
<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="432"/>
|
<location filename="../src/pages/appintopage.cpp" line="434"/>
|
||||||
<location filename="../src/pages/appintopage.cpp" line="445"/>
|
<location filename="../src/pages/appintopage.cpp" line="447"/>
|
||||||
<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="432"/>
|
<location filename="../src/pages/appintopage.cpp" line="434"/>
|
||||||
<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="445"/>
|
<location filename="../src/pages/appintopage.cpp" line="447"/>
|
||||||
<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="111"/>
|
<location filename="../src/application.cpp" line="138"/>
|
||||||
<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="118"/>
|
<location filename="../src/application.cpp" line="148"/>
|
||||||
<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="186"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="213"/>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="197"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="224"/>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="205"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="232"/>
|
||||||
<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="104"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="125"/>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="105"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="126"/>
|
||||||
<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="186"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="213"/>
|
||||||
<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="187"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="214"/>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="188"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="215"/>
|
||||||
<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="195"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="222"/>
|
||||||
<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="197"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="224"/>
|
||||||
<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="198"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="225"/>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="199"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="226"/>
|
||||||
<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="205"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="232"/>
|
||||||
<source>dpkg progress had been aborted,you can retry installation.</source>
|
<source>dpkg progress had been aborted,you can retry installation.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="206"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="233"/>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="207"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="234"/>
|
||||||
<source>dpkg progress had been aborted,you can retry installation</source>
|
<source>dpkg progress had been aborted,you can retry installation</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="123"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="144"/>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="124"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="145"/>
|
||||||
<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="165"/>
|
<location filename="../src/mainwindow-dtk.cpp" line="186"/>
|
||||||
<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="166"/>
|
<location filename="../src/mainwindow-dtk.cpp" line="187"/>
|
||||||
<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="167"/>
|
<location filename="../src/mainwindow-dtk.cpp" line="188"/>
|
||||||
<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="168"/>
|
<location filename="../src/mainwindow-dtk.cpp" line="189"/>
|
||||||
<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="127"/>
|
<location filename="../src/mainwindow-dtk.cpp" line="145"/>
|
||||||
<location filename="../src/mainwindow-dtk.cpp" line="219"/>
|
<location filename="../src/mainwindow-dtk.cpp" line="240"/>
|
||||||
<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="132"/>
|
<location filename="../src/mainwindow-dtk.cpp" line="150"/>
|
||||||
<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="29"/>
|
<location filename="../src/application.cpp" line="33"/>
|
||||||
<location filename="../src/application.cpp" line="30"/>
|
<location filename="../src/application.cpp" line="34"/>
|
||||||
<location filename="../src/mainwindow-dtk.cpp" line="107"/>
|
<location filename="../src/mainwindow-dtk.cpp" line="125"/>
|
||||||
<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="34"/>
|
<location filename="../src/application.cpp" line="38"/>
|
||||||
<source><span style=' font-size:10pt;font-weight:60;'>An appstore powered by community</span><br/><a href='https://www.spark-app.store/'>https://www.spark-app.store</a><br/><span style=' font-size:12pt;'>Spark developers</span></source>
|
<source><span style=' font-size:10pt;font-weight:60;'>An appstore powered by community</span><br/><a href='https://www.spark-app.store/'>https://www.spark-app.store</a><br/><span style=' font-size:12pt;'>Spark developers</span></source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/application.cpp" line="115"/>
|
<location filename="../src/application.cpp" line="145"/>
|
||||||
<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="10"/>
|
<location filename="../src/widgets/downloadlistwidget.cpp" line="18"/>
|
||||||
<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="222"/>
|
<location filename="../src/mainwindow-dtk.cpp" line="243"/>
|
||||||
<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="223"/>
|
<location filename="../src/mainwindow-dtk.cpp" line="244"/>
|
||||||
<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="224"/>
|
<location filename="../src/mainwindow-dtk.cpp" line="245"/>
|
||||||
<source>Exit</source>
|
<source>Exit</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
|||||||
@@ -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="171"/>
|
<location filename="../src/pages/appintopage.cpp" line="173"/>
|
||||||
<location filename="../src/pages/appintopage.cpp" line="313"/>
|
<location filename="../src/pages/appintopage.cpp" line="315"/>
|
||||||
<location filename="../src/pages/appintopage.cpp" line="428"/>
|
<location filename="../src/pages/appintopage.cpp" line="430"/>
|
||||||
<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="45"/>
|
<location filename="../src/pages/appintopage.cpp" line="47"/>
|
||||||
<source>Click Open</source>
|
<source>Click Open</source>
|
||||||
<translation>点击跳转</translation>
|
<translation>点击跳转</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.cpp" line="110"/>
|
<location filename="../src/pages/appintopage.cpp" line="112"/>
|
||||||
<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="156"/>
|
<location filename="../src/pages/appintopage.cpp" line="158"/>
|
||||||
<location filename="../src/pages/appintopage.cpp" line="329"/>
|
<location filename="../src/pages/appintopage.cpp" line="331"/>
|
||||||
<location filename="../src/pages/appintopage.cpp" line="401"/>
|
<location filename="../src/pages/appintopage.cpp" line="403"/>
|
||||||
<source>Reinstall</source>
|
<source>Reinstall</source>
|
||||||
<translation>重新安装</translation>
|
<translation>重新安装</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.cpp" line="163"/>
|
<location filename="../src/pages/appintopage.cpp" line="165"/>
|
||||||
<source>Upgrade</source>
|
<source>Upgrade</source>
|
||||||
<translation>升级</translation>
|
<translation>升级</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.cpp" line="318"/>
|
<location filename="../src/pages/appintopage.cpp" line="320"/>
|
||||||
<location filename="../src/pages/appintopage.cpp" line="377"/>
|
<location filename="../src/pages/appintopage.cpp" line="379"/>
|
||||||
<source>Install</source>
|
<source>Install</source>
|
||||||
<translation>安装</translation>
|
<translation>安装</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.cpp" line="323"/>
|
<location filename="../src/pages/appintopage.cpp" line="325"/>
|
||||||
<source>Installing</source>
|
<source>Installing</source>
|
||||||
<translation>正在安装</translation>
|
<translation>正在安装</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.cpp" line="432"/>
|
<location filename="../src/pages/appintopage.cpp" line="434"/>
|
||||||
<location filename="../src/pages/appintopage.cpp" line="445"/>
|
<location filename="../src/pages/appintopage.cpp" line="447"/>
|
||||||
<source>Spark Store</source>
|
<source>Spark Store</source>
|
||||||
<translation>星火应用商店</translation>
|
<translation>星火应用商店</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.cpp" line="432"/>
|
<location filename="../src/pages/appintopage.cpp" line="434"/>
|
||||||
<source>Uninstall succeeded</source>
|
<source>Uninstall succeeded</source>
|
||||||
<translation>卸载成功</translation>
|
<translation>卸载成功</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.cpp" line="445"/>
|
<location filename="../src/pages/appintopage.cpp" line="447"/>
|
||||||
<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="111"/>
|
<location filename="../src/application.cpp" line="138"/>
|
||||||
<source>Version: %1</source>
|
<source>Version: %1</source>
|
||||||
<translation>版本:%1</translation>
|
<translation>版本:%1</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/application.cpp" line="118"/>
|
<location filename="../src/application.cpp" line="148"/>
|
||||||
<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="186"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="213"/>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="197"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="224"/>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="205"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="232"/>
|
||||||
<source>Spark Store</source>
|
<source>Spark Store</source>
|
||||||
<translation>星火应用商店</translation>
|
<translation>星火应用商店</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="104"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="125"/>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="105"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="126"/>
|
||||||
<source>Installing</source>
|
<source>Installing</source>
|
||||||
<translation>正在安装</translation>
|
<translation>正在安装</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="186"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="213"/>
|
||||||
<source>Installation complete.</source>
|
<source>Installation complete.</source>
|
||||||
<translation>安装完成.</translation>
|
<translation>安装完成.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="187"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="214"/>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="188"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="215"/>
|
||||||
<source>Finish</source>
|
<source>Finish</source>
|
||||||
<translation>完成</translation>
|
<translation>完成</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="195"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="222"/>
|
||||||
<source>Retry</source>
|
<source>Retry</source>
|
||||||
<translation>重试</translation>
|
<translation>重试</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="197"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="224"/>
|
||||||
<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="198"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="225"/>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="199"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="226"/>
|
||||||
<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="205"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="232"/>
|
||||||
<source>dpkg progress had been aborted,you can retry installation.</source>
|
<source>dpkg progress had been aborted,you can retry installation.</source>
|
||||||
<translation>dpkg进程被中断,您可重试安装。</translation>
|
<translation>dpkg进程被中断,您可重试安装。</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="206"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="233"/>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="207"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="234"/>
|
||||||
<source>dpkg progress had been aborted,you can retry installation</source>
|
<source>dpkg progress had been aborted,you can retry installation</source>
|
||||||
<translation>安装被中止,可重新安装</translation>
|
<translation>安装被中止,可重新安装</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="123"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="144"/>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="124"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="145"/>
|
||||||
<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="165"/>
|
<location filename="../src/mainwindow-dtk.cpp" line="186"/>
|
||||||
<source>Submit App</source>
|
<source>Submit App</source>
|
||||||
<translation>投递应用</translation>
|
<translation>投递应用</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow-dtk.cpp" line="166"/>
|
<location filename="../src/mainwindow-dtk.cpp" line="187"/>
|
||||||
<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="167"/>
|
<location filename="../src/mainwindow-dtk.cpp" line="188"/>
|
||||||
<source>Settings</source>
|
<source>Settings</source>
|
||||||
<translation>设置</translation>
|
<translation>设置</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow-dtk.cpp" line="168"/>
|
<location filename="../src/mainwindow-dtk.cpp" line="189"/>
|
||||||
<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="127"/>
|
<location filename="../src/mainwindow-dtk.cpp" line="145"/>
|
||||||
<location filename="../src/mainwindow-dtk.cpp" line="219"/>
|
<location filename="../src/mainwindow-dtk.cpp" line="240"/>
|
||||||
<source>Spark Store</source>
|
<source>Spark Store</source>
|
||||||
<translation>星火应用商店</translation>
|
<translation>星火应用商店</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow-dtk.cpp" line="132"/>
|
<location filename="../src/mainwindow-dtk.cpp" line="150"/>
|
||||||
<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="29"/>
|
<location filename="../src/application.cpp" line="33"/>
|
||||||
<location filename="../src/application.cpp" line="30"/>
|
<location filename="../src/application.cpp" line="34"/>
|
||||||
<location filename="../src/mainwindow-dtk.cpp" line="107"/>
|
<location filename="../src/mainwindow-dtk.cpp" line="125"/>
|
||||||
<source>Spark Store</source>
|
<source>Spark Store</source>
|
||||||
<translation>星火应用商店</translation>
|
<translation>星火应用商店</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/application.cpp" line="34"/>
|
<location filename="../src/application.cpp" line="38"/>
|
||||||
<source><span style=' font-size:10pt;font-weight:60;'>An appstore powered by community</span><br/><a href='https://www.spark-app.store/'>https://www.spark-app.store</a><br/><span style=' font-size:12pt;'>Spark developers</span></source>
|
<source><span style=' font-size:10pt;font-weight:60;'>An appstore powered by community</span><br/><a href='https://www.spark-app.store/'>https://www.spark-app.store</a><br/><span style=' font-size:12pt;'>Spark developers</span></source>
|
||||||
<translation><span style=' font-size:10pt;font-weight:60;'>一款由社区提供的应用商店</span><br/><a href='https://www.spark-app.store/'>https://www.spark-app.store</a><br/><span style=' font-size:12pt;'>星火计划开发者</span></translation>
|
<translation><span style=' font-size:10pt;font-weight:60;'>一款由社区提供的应用商店</span><br/><a href='https://www.spark-app.store/'>https://www.spark-app.store</a><br/><span style=' font-size:12pt;'>星火计划开发者</span></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/application.cpp" line="115"/>
|
<location filename="../src/application.cpp" line="145"/>
|
||||||
<source>Spark Project</source>
|
<source>Spark Project</source>
|
||||||
<translation>星火计划</translation>
|
<translation>星火计划</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/widgets/downloadlistwidget.cpp" line="10"/>
|
<location filename="../src/widgets/downloadlistwidget.cpp" line="18"/>
|
||||||
<source>Download list</source>
|
<source>Download list</source>
|
||||||
<translation>下载列表</translation>
|
<translation>下载列表</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow-dtk.cpp" line="222"/>
|
<location filename="../src/mainwindow-dtk.cpp" line="243"/>
|
||||||
<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="223"/>
|
<location filename="../src/mainwindow-dtk.cpp" line="244"/>
|
||||||
<source>About</source>
|
<source>About</source>
|
||||||
<translation>关于</translation>
|
<translation>关于</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow-dtk.cpp" line="224"/>
|
<location filename="../src/mainwindow-dtk.cpp" line="245"/>
|
||||||
<source>Exit</source>
|
<source>Exit</source>
|
||||||
<translation>退出</translation>
|
<translation>退出</translation>
|
||||||
</message>
|
</message>
|
||||||
|
|||||||
@@ -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="171"/>
|
<location filename="../src/pages/appintopage.cpp" line="173"/>
|
||||||
<location filename="../src/pages/appintopage.cpp" line="313"/>
|
<location filename="../src/pages/appintopage.cpp" line="315"/>
|
||||||
<location filename="../src/pages/appintopage.cpp" line="428"/>
|
<location filename="../src/pages/appintopage.cpp" line="430"/>
|
||||||
<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="45"/>
|
<location filename="../src/pages/appintopage.cpp" line="47"/>
|
||||||
<source>Click Open</source>
|
<source>Click Open</source>
|
||||||
<translation>点击跳转</translation>
|
<translation>点击跳转</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.cpp" line="110"/>
|
<location filename="../src/pages/appintopage.cpp" line="112"/>
|
||||||
<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="156"/>
|
<location filename="../src/pages/appintopage.cpp" line="158"/>
|
||||||
<location filename="../src/pages/appintopage.cpp" line="329"/>
|
<location filename="../src/pages/appintopage.cpp" line="331"/>
|
||||||
<location filename="../src/pages/appintopage.cpp" line="401"/>
|
<location filename="../src/pages/appintopage.cpp" line="403"/>
|
||||||
<source>Reinstall</source>
|
<source>Reinstall</source>
|
||||||
<translation>重新安裝</translation>
|
<translation>重新安裝</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.cpp" line="163"/>
|
<location filename="../src/pages/appintopage.cpp" line="165"/>
|
||||||
<source>Upgrade</source>
|
<source>Upgrade</source>
|
||||||
<translation>升级</translation>
|
<translation>升级</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.cpp" line="318"/>
|
<location filename="../src/pages/appintopage.cpp" line="320"/>
|
||||||
<location filename="../src/pages/appintopage.cpp" line="377"/>
|
<location filename="../src/pages/appintopage.cpp" line="379"/>
|
||||||
<source>Install</source>
|
<source>Install</source>
|
||||||
<translation>安装</translation>
|
<translation>安装</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.cpp" line="323"/>
|
<location filename="../src/pages/appintopage.cpp" line="325"/>
|
||||||
<source>Installing</source>
|
<source>Installing</source>
|
||||||
<translation>正在安装</translation>
|
<translation>正在安装</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.cpp" line="432"/>
|
<location filename="../src/pages/appintopage.cpp" line="434"/>
|
||||||
<location filename="../src/pages/appintopage.cpp" line="445"/>
|
<location filename="../src/pages/appintopage.cpp" line="447"/>
|
||||||
<source>Spark Store</source>
|
<source>Spark Store</source>
|
||||||
<translation>星火应用商店</translation>
|
<translation>星火应用商店</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.cpp" line="432"/>
|
<location filename="../src/pages/appintopage.cpp" line="434"/>
|
||||||
<source>Uninstall succeeded</source>
|
<source>Uninstall succeeded</source>
|
||||||
<translation>卸载成功</translation>
|
<translation>卸载成功</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.cpp" line="445"/>
|
<location filename="../src/pages/appintopage.cpp" line="447"/>
|
||||||
<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="111"/>
|
<location filename="../src/application.cpp" line="138"/>
|
||||||
<source>Version: %1</source>
|
<source>Version: %1</source>
|
||||||
<translation>版本:%1</translation>
|
<translation>版本:%1</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/application.cpp" line="118"/>
|
<location filename="../src/application.cpp" line="148"/>
|
||||||
<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="186"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="213"/>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="197"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="224"/>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="205"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="232"/>
|
||||||
<source>Spark Store</source>
|
<source>Spark Store</source>
|
||||||
<translation>星火应用商店</translation>
|
<translation>星火应用商店</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="104"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="125"/>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="105"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="126"/>
|
||||||
<source>Installing</source>
|
<source>Installing</source>
|
||||||
<translation>正在安裝</translation>
|
<translation>正在安裝</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="186"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="213"/>
|
||||||
<source>Installation complete.</source>
|
<source>Installation complete.</source>
|
||||||
<translation>安裝完成.</translation>
|
<translation>安裝完成.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="187"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="214"/>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="188"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="215"/>
|
||||||
<source>Finish</source>
|
<source>Finish</source>
|
||||||
<translation>完成</translation>
|
<translation>完成</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="195"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="222"/>
|
||||||
<source>Retry</source>
|
<source>Retry</source>
|
||||||
<translation>重试</translation>
|
<translation>重试</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="197"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="224"/>
|
||||||
<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="198"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="225"/>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="199"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="226"/>
|
||||||
<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="205"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="232"/>
|
||||||
<source>dpkg progress had been aborted,you can retry installation.</source>
|
<source>dpkg progress had been aborted,you can retry installation.</source>
|
||||||
<translation>dpkg进程被中断,您可重试安装。</translation>
|
<translation>dpkg进程被中断,您可重试安装。</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="206"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="233"/>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="207"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="234"/>
|
||||||
<source>dpkg progress had been aborted,you can retry installation</source>
|
<source>dpkg progress had been aborted,you can retry installation</source>
|
||||||
<translation>安装被中止,可重新安装</translation>
|
<translation>安装被中止,可重新安装</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="123"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="144"/>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="124"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="145"/>
|
||||||
<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="165"/>
|
<location filename="../src/mainwindow-dtk.cpp" line="186"/>
|
||||||
<source>Submit App</source>
|
<source>Submit App</source>
|
||||||
<translation>上傳軟體</translation>
|
<translation>上傳軟體</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow-dtk.cpp" line="166"/>
|
<location filename="../src/mainwindow-dtk.cpp" line="187"/>
|
||||||
<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="167"/>
|
<location filename="../src/mainwindow-dtk.cpp" line="188"/>
|
||||||
<source>Settings</source>
|
<source>Settings</source>
|
||||||
<translation>設定</translation>
|
<translation>設定</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow-dtk.cpp" line="168"/>
|
<location filename="../src/mainwindow-dtk.cpp" line="189"/>
|
||||||
<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="127"/>
|
<location filename="../src/mainwindow-dtk.cpp" line="145"/>
|
||||||
<location filename="../src/mainwindow-dtk.cpp" line="219"/>
|
<location filename="../src/mainwindow-dtk.cpp" line="240"/>
|
||||||
<source>Spark Store</source>
|
<source>Spark Store</source>
|
||||||
<translation>星火应用商店</translation>
|
<translation>星火应用商店</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow-dtk.cpp" line="132"/>
|
<location filename="../src/mainwindow-dtk.cpp" line="150"/>
|
||||||
<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="29"/>
|
<location filename="../src/application.cpp" line="33"/>
|
||||||
<location filename="../src/application.cpp" line="30"/>
|
<location filename="../src/application.cpp" line="34"/>
|
||||||
<location filename="../src/mainwindow-dtk.cpp" line="107"/>
|
<location filename="../src/mainwindow-dtk.cpp" line="125"/>
|
||||||
<source>Spark Store</source>
|
<source>Spark Store</source>
|
||||||
<translation>星火应用商店</translation>
|
<translation>星火应用商店</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/application.cpp" line="34"/>
|
<location filename="../src/application.cpp" line="38"/>
|
||||||
<source><span style=' font-size:10pt;font-weight:60;'>An appstore powered by community</span><br/><a href='https://www.spark-app.store/'>https://www.spark-app.store</a><br/><span style=' font-size:12pt;'>Spark developers</span></source>
|
<source><span style=' font-size:10pt;font-weight:60;'>An appstore powered by community</span><br/><a href='https://www.spark-app.store/'>https://www.spark-app.store</a><br/><span style=' font-size:12pt;'>Spark developers</span></source>
|
||||||
<translation><span style=' font-size:10pt;font-weight:60;'>一款由社区提供的应用商店</span><br/><a href='https://www.spark-app.store/'>https://www.spark-app.store</a><br/><span style=' font-size:12pt;'>星火计划开发者</span></translation>
|
<translation><span style=' font-size:10pt;font-weight:60;'>一款由社区提供的应用商店</span><br/><a href='https://www.spark-app.store/'>https://www.spark-app.store</a><br/><span style=' font-size:12pt;'>星火计划开发者</span></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/application.cpp" line="115"/>
|
<location filename="../src/application.cpp" line="145"/>
|
||||||
<source>Spark Project</source>
|
<source>Spark Project</source>
|
||||||
<translation>星火计划</translation>
|
<translation>星火计划</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/widgets/downloadlistwidget.cpp" line="10"/>
|
<location filename="../src/widgets/downloadlistwidget.cpp" line="18"/>
|
||||||
<source>Download list</source>
|
<source>Download list</source>
|
||||||
<translation>下载列表</translation>
|
<translation>下载列表</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow-dtk.cpp" line="222"/>
|
<location filename="../src/mainwindow-dtk.cpp" line="243"/>
|
||||||
<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="223"/>
|
<location filename="../src/mainwindow-dtk.cpp" line="244"/>
|
||||||
<source>About</source>
|
<source>About</source>
|
||||||
<translation>关于</translation>
|
<translation>关于</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/mainwindow-dtk.cpp" line="224"/>
|
<location filename="../src/mainwindow-dtk.cpp" line="245"/>
|
||||||
<source>Exit</source>
|
<source>Exit</source>
|
||||||
<translation>退出</translation>
|
<translation>退出</translation>
|
||||||
</message>
|
</message>
|
||||||
|
|||||||
Reference in New Issue
Block a user