mirror of
https://gitee.com/spark-store-project/spark-store
synced 2025-12-15 13:22:04 +08:00
Compare commits
103 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| d1270dd65f | |||
| e8c344f75d | |||
| a388535361 | |||
| e94ee00ade | |||
| 7390e292ae | |||
| 0119b21c82 | |||
| 601b086923 | |||
| f1a2886161 | |||
| e2f1a344c4 | |||
| 9fc5153f37 | |||
|
|
b93f6362b7 | ||
| 32350cf519 | |||
| c27c922d0b | |||
| 6dee04f5e8 | |||
| 924d8d18a9 | |||
| f027a2fa7e | |||
| 89c4b968f3 | |||
| ab36e76032 | |||
| f49db42c3a | |||
| 58b31f182a | |||
| fbffe12501 | |||
| a30c26a7f2 | |||
| df7b49dbe2 | |||
| 9d93966124 | |||
| 977b2ebdc9 | |||
| 28ed452bb0 | |||
| 512d86feac | |||
| 8e1e0cea7a | |||
| d2214114fb | |||
| 4dbd79a1ac | |||
| c90232022e | |||
| 84a1554b4b | |||
| 71dbf9b958 | |||
| 9d12086f09 | |||
|
|
54a55e15a9 | ||
| 5385e2d1b1 | |||
| 1e468ba774 | |||
| 25efce0017 | |||
| 707a2b5e4c | |||
| b9121c13ab | |||
| 9c80179493 | |||
| 2a89135d1a | |||
| b91e0142f4 | |||
| 55897e3cb9 | |||
| f17fcdfe85 | |||
| 9046a3a965 | |||
| 1e72fcb7f2 | |||
| 9007bdf3d3 | |||
| afd926ae4a | |||
| 4949d67852 | |||
| 5f5d71fbd0 | |||
| 9fd8f64195 | |||
| c32ffb7cd2 | |||
| af9217b1dc | |||
| 93e218dd53 | |||
| 4de32fa8a6 | |||
| 2d59a61796 | |||
| 7abdd90215 | |||
| cbd594e217 | |||
| 42b6a20c97 | |||
| 110adc995d | |||
| cd6d0ac133 | |||
| 568e73de07 | |||
| 62c8841c50 | |||
| 6fd611919b | |||
| 77a84785de | |||
| 9969f4f2fc | |||
| 833a8ec14b | |||
| dd679f3f26 | |||
| 5411a832dc | |||
| 0aeadb5526 | |||
| 91fd97b878 | |||
| f2cf344f62 | |||
| 8d84e433a6 | |||
| a6e9dac2f9 | |||
| 495ef3292e | |||
| 5900b3cdf3 | |||
| e644214263 | |||
| 2b76f5e202 | |||
| 6fe06667eb | |||
| f61e3a6ede | |||
| bddbbcc2e8 | |||
| 8310a59df8 | |||
| 05cfdbb318 | |||
| b5488b6c32 | |||
| 6cec12be9d | |||
| 53f9746ebf | |||
| b68ef5aab1 | |||
| c6daf5159c | |||
| b0453c7a8a | |||
| c7ee32a452 | |||
| e1d25e401f | |||
| 6b78dce87e | |||
| e5a198e1d8 | |||
| 1780110e33 | |||
| 19901b0d7d | |||
| d24af0461b | |||
| 31a574ec8b | |||
| 3feae61b1b | |||
| eaf65a326c | |||
| 13da2bc441 | |||
| cafb4d1dfe | |||
| b03795e364 |
@@ -18,7 +18,7 @@ stages:
|
||||
name: execute_by_docker
|
||||
displayName: 基于镜像的脚本执行
|
||||
certificate: ''
|
||||
image: docker.io/debian:buster-slim
|
||||
image: docker.io/debian:buster
|
||||
command:
|
||||
- sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
|
||||
- '# 换源'
|
||||
|
||||
@@ -14,30 +14,40 @@ stages:
|
||||
trigger: auto
|
||||
executor: []
|
||||
steps:
|
||||
- step: build@nodejs
|
||||
name: build_dtk
|
||||
displayName: DTK构建
|
||||
nodeVersion: 14.16.0
|
||||
commands:
|
||||
- git clone https://gitlink.org.cn/shenmo7192/debian-10-container.git
|
||||
- mv debian-10-container/Debian-10.tar.xz /mnt
|
||||
- rm -rf debian-10-container
|
||||
- WORK_DIR=`pwd`
|
||||
- cd /mnt/
|
||||
- tar -xf Debian-10.tar.xz
|
||||
- cd Debian-10
|
||||
- wget https://gitee.com/deepin-community-store/repo_auto_update_script/raw/master/spark-build.sh
|
||||
- chmod +x spark-build.sh
|
||||
- mkdir build-spark
|
||||
- cp -r $WORK_DIR build-spark/spark-store
|
||||
- echo "进入Debian 10环境"
|
||||
- chroot /mnt/Debian-10 /bin/bash /spark-build.sh
|
||||
- cd /mnt/Debian-10/build-spark
|
||||
- step: execute@docker
|
||||
name: execute_by_docker
|
||||
displayName: 基于镜像的DTK构建
|
||||
certificate: ''
|
||||
image: docker.io/debian:buster
|
||||
command:
|
||||
- sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
|
||||
- '# 换源'
|
||||
- apt update
|
||||
- export DEBIAN_FRONTEND=noninteractive
|
||||
- echo "安装git devscripts equivs curl..."
|
||||
- 'apt install git devscripts equivs curl -y '
|
||||
- git clone https://gitlink.org.cn/shenmo7192/dtk-old-bundle.git
|
||||
- cd dtk-old-bundle
|
||||
- apt install ./*.deb -y
|
||||
- cd ..
|
||||
- rm -rf dtk-old-bundle
|
||||
- ''
|
||||
- 'mk-build-deps --install --tool "apt-get -o Debug::pkgProblemResolver=yes -y" '
|
||||
- ''
|
||||
- dpkg-buildpackage -b -us -uc
|
||||
- cd ..
|
||||
- ls -all
|
||||
- pwd
|
||||
- ''
|
||||
- 'mkdir target '
|
||||
- for f in $(find . -type f -name "*.deb")
|
||||
- do
|
||||
- ' mv $f target'
|
||||
- done
|
||||
artifacts:
|
||||
- name: BUILD_ARTIFACT
|
||||
path:
|
||||
- /mnt/Debian-10/build-spark/target
|
||||
caches: []
|
||||
- ../target
|
||||
notify: []
|
||||
strategy:
|
||||
retry: '0'
|
||||
|
||||
15
README.md
15
README.md
@@ -11,6 +11,9 @@ All packages will be shared in our repository for users to get freely.
|
||||
|
||||
Distrobution supported:Deepin 20 ; Ubuntu 22.04 LTS / Ubuntu 20.04 LTS(May stop support in the future) ; UniontechOS Home 21
|
||||
|
||||
*About OpenKylin and deepin 23*
|
||||
|
||||
The adaptation work is scheduled after their official release.
|
||||
|
||||
You can track our Issue resoving progress here https://gitee.com/deepin-community-store/spark-store/board
|
||||
|
||||
@@ -57,4 +60,14 @@ dpkg-buildpackage
|
||||
|
||||
We use Gitee as our code hosting platform. Please click here to contact us.
|
||||
|
||||
https://gitee.com/deepin-community-store/spark-store
|
||||
https://gitee.com/deepin-community-store/spark-store
|
||||
|
||||
### Rocket Chat
|
||||
|
||||
https://chat.shenmo.tech/
|
||||
|
||||
PWA Client:
|
||||
|
||||
spk://store/chat/store.spark-app.feedback
|
||||
|
||||
(Copy and paste to search bar or in browser address bar after installing Spark Store)
|
||||
16
README.zh.md
16
README.zh.md
@@ -8,6 +8,10 @@
|
||||
我们创建了这个应用商店,广泛收录大家需要的软件包,搜集优质小工具,主动适配wine应用,存放到储存库供大家获取
|
||||
我们支持:Deepin 20 ; Ubuntu 22.04 LTS / Ubuntu 20.04 LTS(将会逐渐停止支持) ; UOS Home 21
|
||||
|
||||
*关于OpenKylin和deepin 23*
|
||||
|
||||
支持计划将会在对应系统发布正式版之后开始评估和执行
|
||||
|
||||
希望看到这里的人也可以加入我们的队伍,开发或者投递应用都很欢迎,共同构建Linux应用生态
|
||||
|
||||
在这里追踪我们的Issue处理情况 https://gitee.com/deepin-community-store/spark-store/board
|
||||
@@ -49,4 +53,14 @@ dpkg-buildpackage
|
||||
|
||||
## 🚀 协作
|
||||
|
||||
非常感谢有兴趣的开发者或爱好者参与 `星火应用商店` 项目,分享你的见解与思路。
|
||||
非常感谢有兴趣的开发者或爱好者参与 `星火应用商店` 项目,分享你的见解与思路。
|
||||
|
||||
### 交流平台
|
||||
|
||||
https://chat.shenmo.tech/
|
||||
|
||||
客户端PWA:
|
||||
|
||||
spk://store/chat/store.spark-app.feedback
|
||||
|
||||
(安装星火商店后在浏览器打开或复制到搜索栏打开)
|
||||
@@ -32,6 +32,8 @@
|
||||
<file>icons/category_active.svg</file>
|
||||
<file>icons/refresh-page-dark.svg</file>
|
||||
<file>icons/refresh-page.svg</file>
|
||||
<file>icons/upgrades-symbolic_dark.svg</file>
|
||||
<file>icons/upgrades-symbolic.svg</file>
|
||||
</qresource>
|
||||
<qresource prefix="/">
|
||||
<file>tags/a2d.png</file>
|
||||
|
||||
7
assets/icons/upgrades-symbolic.svg
Normal file
7
assets/icons/upgrades-symbolic.svg
Normal file
@@ -0,0 +1,7 @@
|
||||
<svg width="16" height="16" xmlns="http://www.w3.org/2000/svg" stroke="null" style="vector-effect: non-scaling-stroke;">
|
||||
|
||||
<g stroke="null">
|
||||
<title stroke="null">Layer 1</title>
|
||||
<path transform="rotate(-180 8 8)" stroke="null" id="svg_1" d="m8,1c3.86599,0 7,3.13401 7,7c0,3.86599 -3.13401,7 -7,7c-3.86599,0 -7,-3.13401 -7,-7c0,-3.86599 3.13401,-7 7,-7zm1.5,7l-3,0c-0.27614,0 -0.5,0.22386 -0.5,0.5c0,0.27614 -0.22386,0.5 -0.5,0.5l0,0l-0.5,0c-0.10986,0 -0.21521,0.04364 -0.29289,0.12132c-0.16176,0.16176 -0.16176,0.42403 0,0.58579l0,0l2.93934,2.93934c0.19526,0.19526 0.51184,0.19526 0.7071,0l0,0l2.93934,-2.93934c0.07768,-0.07768 0.12132,-0.18304 0.12132,-0.2929c0,-0.22876 -0.18545,-0.41421 -0.41421,-0.41421l0,0l-0.5,0c-0.27614,0 -0.5,-0.22386 -0.5,-0.5c0,-0.27614 -0.22386,-0.5 -0.5,-0.5l0,0zm0,-2l-3,0c-0.27614,0 -0.5,0.22386 -0.5,0.5c0,0.27614 0.22386,0.5 0.5,0.5l0,0l3,0c0.27614,0 0.5,-0.22386 0.5,-0.5c0,-0.27614 -0.22386,-0.5 -0.5,-0.5l0,0zm0,-2l-3,0c-0.27614,0 -0.5,0.22386 -0.5,0.5c0,0.27614 0.22386,0.5 0.5,0.5l0,0l3,0c0.27614,0 0.5,-0.22386 0.5,-0.5c0,-0.27614 -0.22386,-0.5 -0.5,-0.5l0,0z" fill-rule="evenodd"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
58
assets/icons/upgrades-symbolic_dark.svg
Normal file
58
assets/icons/upgrades-symbolic_dark.svg
Normal file
@@ -0,0 +1,58 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="16"
|
||||
height="16"
|
||||
viewBox="0 0 16 16"
|
||||
version="1.1"
|
||||
id="svg4"
|
||||
sodipodi:docname="downloads-symbolic_dark.svg"
|
||||
inkscape:version="0.92.4 (5da689c313, 2019-01-14)">
|
||||
<metadata
|
||||
id="metadata10">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<defs
|
||||
id="defs8" />
|
||||
<sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="982"
|
||||
id="namedview6"
|
||||
showgrid="false"
|
||||
inkscape:zoom="14.75"
|
||||
inkscape:cx="8"
|
||||
inkscape:cy="8"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg4" />
|
||||
<path
|
||||
transform="rotate(-180 8 8)"
|
||||
fill="#FFF"
|
||||
fill-opacity=".8"
|
||||
fill-rule="evenodd"
|
||||
d="M8,1 C11.8659932,1 15,4.13400675 15,8 C15,11.8659932 11.8659932,15 8,15 C4.13400675,15 1,11.8659932 1,8 C1,4.13400675 4.13400675,1 8,1 Z M9.5,8 L6.5,8 C6.22385763,8 6,8.22385763 6,8.5 C6,8.77614237 5.77614237,9 5.5,9 L5.5,9 L5,9 C4.89014373,9 4.78478689,9.04364023 4.70710678,9.12132034 C4.54534632,9.2830808 4.54534632,9.54534632 4.70710678,9.70710678 L4.70710678,9.70710678 L7.64644661,12.6464466 C7.84170876,12.8417088 8.15829124,12.8417088 8.35355339,12.6464466 L8.35355339,12.6464466 L11.2928932,9.70710678 C11.3705733,9.62942667 11.4142136,9.52406983 11.4142136,9.41421356 C11.4142136,9.18544973 11.2287638,9 11,9 L11,9 L10.5,9 C10.2238576,9 10,8.77614237 10,8.5 C10,8.22385763 9.77614237,8 9.5,8 L9.5,8 Z M9.5,6 L6.5,6 C6.22385763,6 6,6.22385763 6,6.5 C6,6.77614237 6.22385763,7 6.5,7 L6.5,7 L9.5,7 C9.77614237,7 10,6.77614237 10,6.5 C10,6.22385763 9.77614237,6 9.5,6 L9.5,6 Z M9.5,4 L6.5,4 C6.22385763,4 6,4.22385763 6,4.5 C6,4.77614237 6.22385763,5 6.5,5 L6.5,5 L9.5,5 C9.77614237,5 10,4.77614237 10,4.5 C10,4.22385763 9.77614237,4 9.5,4 L9.5,4 Z"
|
||||
id="path2"
|
||||
style="fill:#ffffff;fill-opacity:0.60000002" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.6 KiB |
114
debian/changelog
vendored
114
debian/changelog
vendored
@@ -1,3 +1,117 @@
|
||||
spark-store (3.5.1.1) stable; urgency=medium
|
||||
|
||||
* fix: aptss shebang 修复
|
||||
|
||||
|
||||
-- shenmo <shenmo@spark-app.store> Fri, 30 Jan 2022 00:00:00 +0800
|
||||
|
||||
spark-store (3.5.1) stable; urgency=medium
|
||||
|
||||
* fix: 搜索修复,在appinfo界面可以正常搜索
|
||||
|
||||
|
||||
-- shenmo <shenmo@spark-app.store> Fri, 30 Jan 2022 00:00:00 +0800
|
||||
|
||||
spark-store (3.5) stable; urgency=medium
|
||||
|
||||
* feat: 搜索转为使用网页,提高加载速度和用户体验
|
||||
* 下载软件时指定DNS,修复移动网络问题
|
||||
* 准备进入LTS阶段
|
||||
|
||||
-- shenmo <shenmo@spark-app.store> Fri, 30 Jan 2022 00:00:00 +0800
|
||||
|
||||
spark-store (3.4~test1) stable; urgency=medium
|
||||
|
||||
* feat: aptss不再尝试安装apt-fast,转而自带
|
||||
* chore: 删除password-check模块
|
||||
|
||||
-- shenmo <shenmo@spark-app.store> Fri, 30 Jan 2022 00:00:00 +0800
|
||||
|
||||
spark-store (3.3.3) stable; urgency=medium
|
||||
|
||||
* feat: 首页链接调用浏览器打开
|
||||
|
||||
-- shenmo <shenmo@spark-app.store> Fri, 30 Jan 2022 00:00:00 +0800
|
||||
|
||||
0spark-store (3.3.3~test5) stable; urgency=medium
|
||||
|
||||
* 修复可能的内存泄漏问题
|
||||
* 修复应用搜索为空但仍显示上一次搜索结果的问题
|
||||
* 修复动画加载延后的问题
|
||||
* 修复统计下载量卡主渲染线程的问题
|
||||
|
||||
-- shenmo <shenmo@spark-app.store> Fri, 30 Jan 2022 00:00:00 +0800
|
||||
|
||||
|
||||
spark-store (3.3.3~test4) stable; urgency=medium
|
||||
|
||||
* Enable i386 arch support by default
|
||||
|
||||
-- shenmo <shenmo@spark-app.store> Fri, 30 Jan 2022 00:00:00 +0800
|
||||
|
||||
spark-store (3.3.3~test3) stable; urgency=medium
|
||||
|
||||
* Now use ss-apt-fast instead of apt-fast
|
||||
* 修复:右上角 更新和安装设置 菜单中进入更新列表失效
|
||||
|
||||
-- shenmo <shenmo@spark-app.store> Fri, 30 Jan 2022 00:00:00 +0800
|
||||
|
||||
spark-store (3.3.3~test2) stable; urgency=medium
|
||||
|
||||
* bug fix: 更新和检查更新出错时不报错.此更新需要一个推送
|
||||
|
||||
-- shenmo <shenmo@spark-app.store> Fri, 30 Jan 2022 00:00:00 +0800
|
||||
|
||||
spark-store (3.3.3~test1) stable; urgency=medium
|
||||
|
||||
* 3.3.3将会是修复大部分bug后的最终版本
|
||||
* 图形环境中所有root权限的组件剥离到cli(可用于deepin 23 daily,只保证商店本体正常运作,不处理安装依赖不满足)
|
||||
* 文案更改:更新检查-->检查更新
|
||||
|
||||
-- shenmo <shenmo@spark-app.store> Fri, 30 Jan 2022 00:00:00 +0800
|
||||
|
||||
spark-store (3.3.1~test1) stable; urgency=medium
|
||||
|
||||
* 安装时不再需要联网
|
||||
|
||||
-- shenmo <shenmo@spark-app.store> Fri, 30 Jan 2022 00:00:00 +0800
|
||||
|
||||
spark-store (3.3.0.4) stable; urgency=medium
|
||||
|
||||
* 为减轻服务器压力,不再单独更新某一个应用,而是作为整体更新
|
||||
|
||||
|
||||
-- shenmo <shenmo@spark-app.store> Fri, 30 Jan 2022 00:00:00 +0800
|
||||
|
||||
spark-store (3.3.0.3) stable; urgency=medium
|
||||
|
||||
* 回滚 更新中行为到进度条而不是实时输出
|
||||
* 更新应用时显示正在更新哪个应用
|
||||
|
||||
|
||||
-- shenmo <shenmo@spark-app.store> Fri, 30 Jan 2022 00:00:00 +0800
|
||||
|
||||
spark-store (3.3.0.2) stable; urgency=medium
|
||||
|
||||
* 修复 pkexec未执行
|
||||
|
||||
|
||||
-- shenmo <shenmo@spark-app.store> Fri, 30 Jan 2022 00:00:00 +0800
|
||||
|
||||
spark-store (3.3.0.1) stable; urgency=medium
|
||||
|
||||
* 修复 检查更新的更新进程未实际运行
|
||||
|
||||
|
||||
-- shenmo <shenmo@spark-app.store> Fri, 30 Jan 2022 00:00:00 +0800
|
||||
|
||||
spark-store (3.3) stable; urgency=medium
|
||||
|
||||
* 修复 检查更新 未刷新软件源
|
||||
* 把检查更新单独拿出作为左列
|
||||
|
||||
-- shenmo <shenmo@spark-app.store> Fri, 30 Jan 2022 00:00:00 +0800
|
||||
|
||||
spark-store (3.3~test3) stable; urgency=medium
|
||||
|
||||
* 把检查更新加入免密码
|
||||
|
||||
10
debian/spark-store.postinst
vendored
10
debian/spark-store.postinst
vendored
@@ -3,6 +3,10 @@
|
||||
case "$1" in
|
||||
configure)
|
||||
|
||||
# Enable i386 arch
|
||||
echo "Enable i386 arch..."
|
||||
dpkg --add-architecture i386
|
||||
|
||||
# config for aptss
|
||||
mkdir -p /etc/aptss/sources.list.d
|
||||
ln -s -f /etc/apt/sources.list /etc/aptss/sources.list
|
||||
@@ -30,7 +34,7 @@ case "$1" in
|
||||
|
||||
gcc /opt/durapps/spark-store/bin/ss-feedback/sender-d.sh.c -o /opt/durapps/spark-store/bin/ss-feedback/sender-d
|
||||
|
||||
# Download and install key
|
||||
# Install key
|
||||
mkdir -p /tmp/spark-store-install/
|
||||
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
|
||||
@@ -39,8 +43,8 @@ case "$1" in
|
||||
|
||||
|
||||
# Run apt update to avoid users being fucked up by the non-exist dependency problem
|
||||
|
||||
aptss ssupdate
|
||||
# Now abandoned as aptss now run ssupdate everytime
|
||||
#aptss ssupdate
|
||||
|
||||
|
||||
# Start upgrade detect service
|
||||
|
||||
5
debian/spark-store.preinst
vendored
5
debian/spark-store.preinst
vendored
@@ -3,7 +3,7 @@
|
||||
function network-check()
|
||||
{
|
||||
#超时时间
|
||||
local timeout=5
|
||||
local timeout=15
|
||||
|
||||
#目标网站
|
||||
local target=www.baidu.com
|
||||
@@ -24,4 +24,5 @@ function network-check()
|
||||
}
|
||||
|
||||
|
||||
network-check
|
||||
#network-check
|
||||
echo "不再检测网络"
|
||||
@@ -4,15 +4,15 @@
|
||||
<policyconfig>
|
||||
<vendor>Spark Store</vendor>
|
||||
<icon_name>x-package-repository</icon_name>
|
||||
<action id="store.spark-app.ss-do-upgrade">
|
||||
<description>运行ss-do-upgrade需要权限</description>
|
||||
<message>要使用ss-do-upgrade需要权限</message>
|
||||
<action id="store.spark-app.ss-do-upgrade-worker">
|
||||
<description>运行ss-do-upgrade-worker需要权限</description>
|
||||
<message>要使用ss-do-upgrade-worker需要权限</message>
|
||||
<defaults>
|
||||
<allow_any>yes</allow_any>
|
||||
<allow_inactive>yes</allow_inactive>
|
||||
<allow_active>yes</allow_active>
|
||||
</defaults>
|
||||
<annotate key="org.freedesktop.policykit.exec.path">/opt/durapps/spark-store/bin/update-upgrade/ss-do-upgrade.sh</annotate>
|
||||
<annotate key="org.freedesktop.policykit.exec.path">/opt/durapps/spark-store/bin/update-upgrade/ss-do-upgrade-worker.sh</annotate>
|
||||
<annotate key="org.freedesktop.policykit.exec.allow_gui">true</annotate>
|
||||
</action>
|
||||
</policyconfig>
|
||||
@@ -8,7 +8,6 @@ SUBDIRS += \
|
||||
third-party/QtNetworkService \
|
||||
src/spark-store.pro
|
||||
|
||||
|
||||
spark-store.depends = third-party/QtNetworkService
|
||||
|
||||
# Update translation files
|
||||
@@ -36,11 +35,9 @@ desktop.path = /usr/share/applications
|
||||
service.files += pkg/usr/lib/systemd/system/spark-update-notifier.service
|
||||
service.path = /usr/lib/systemd/system/
|
||||
|
||||
polkit-1.files +=pkg/usr/share/polkit-1/actions/store.spark-app.ss-do-upgrade.policy
|
||||
polkit-1.files +=pkg/usr/share/polkit-1/actions/store.spark-app.ss-do-upgrade-worker.policy
|
||||
polkit-1.path = /usr/share/polkit-1/actions/
|
||||
|
||||
|
||||
|
||||
icon.files += pkg/usr/share/icons/hicolor/scalable/apps/spark-store.svg
|
||||
icon.path = /usr/share/icons/hicolor/scalable/apps
|
||||
|
||||
@@ -52,7 +49,8 @@ INSTALLS += \
|
||||
qm \
|
||||
desktop \
|
||||
icon \
|
||||
preferences \
|
||||
# preferences \
|
||||
# sourceslist \
|
||||
tmp \
|
||||
service \
|
||||
bash_completion \
|
||||
|
||||
@@ -7,7 +7,8 @@ big_image::big_image(DBlurEffectWidget *parent) :
|
||||
DBlurEffectWidget(parent),
|
||||
m_image(new QLabel)
|
||||
{
|
||||
setWindowFlags(this->windowFlags() | Qt::WindowStaysOnTopHint); // 设置图片对话框总在最前
|
||||
// setWindowFlags(this->windowFlags() | Qt::WindowStaysOnTopHint); // 设置图片对话框总在最前
|
||||
setWindowModality(Qt::ApplicationModal); // 以上无效不如直接使用 模态化对话框
|
||||
setRadius(0);
|
||||
setMaskAlpha(60);
|
||||
setMaskColor(QColor("#000000"));
|
||||
|
||||
@@ -109,6 +109,8 @@ void DownloadController::startDownload(const QString &url)
|
||||
QStringList command;
|
||||
QString downloadDir = "/tmp/spark-store/";
|
||||
QString aria2ConnectionPerServer = "--max-connection-per-server=1";
|
||||
QString aria2ConnectionMax = "--max-concurrent-downloads=16";
|
||||
QString aria2DNSCommand = "--async-dns-server=119.29.29.29,223.5.5.5";
|
||||
|
||||
if (useMetalink){
|
||||
command.append(metaUrl.toUtf8());
|
||||
@@ -130,6 +132,8 @@ void DownloadController::startDownload(const QString &url)
|
||||
command.append(aria2NoConfig.toUtf8());
|
||||
command.append(aria2SizePerThreads.toUtf8());
|
||||
command.append(aria2ConnectionPerServer.toUtf8());
|
||||
command.append(aria2ConnectionMax.toUtf8());
|
||||
command.append(aria2DNSCommand.toUtf8());
|
||||
if (useMetalink){
|
||||
command.append(aria2NoSeeds.toUtf8());
|
||||
}
|
||||
@@ -205,7 +209,12 @@ void DownloadController::startDownload(const QString &url)
|
||||
* https://en.wikipedia.org/wiki/HD_70642
|
||||
* HD 70642 is a star with an exoplanetary companion in the southern constellation of Puppis.
|
||||
*/
|
||||
system(SenderdPath.toUtf8() + " " + metaUrl.toUtf8() + " " + "HD70642");
|
||||
QProcess mailProcess;
|
||||
mailProcess.start(SenderdPath.toUtf8() + " " + metaUrl.toUtf8() + " " + "HD70642");
|
||||
mailProcess.waitForStarted();
|
||||
mailProcess.waitForFinished(3);
|
||||
mailProcess.deleteLater();
|
||||
|
||||
|
||||
emit downloadFinished(); });
|
||||
}
|
||||
|
||||
29
src/main.cpp
29
src/main.cpp
@@ -4,15 +4,27 @@
|
||||
#include <DAboutDialog>
|
||||
#include <QVector>
|
||||
#include <QScreen>
|
||||
#include <QDir>
|
||||
#include <QSettings>
|
||||
//新增dbus
|
||||
#include <QDBusInterface>
|
||||
#include <QDBusPendingCall>
|
||||
|
||||
// build time
|
||||
#include <QDate>
|
||||
#include <QTime>
|
||||
|
||||
#include "widget.h"
|
||||
|
||||
DWIDGET_USE_NAMESPACE
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
// Get build time
|
||||
static const QString version = "Version 3.5.1.1";
|
||||
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");
|
||||
|
||||
|
||||
DApplication::loadDXcbPlugin(); // 已废弃,但是对于非deepin桌面可以正常使用标题栏
|
||||
DApplication::setAttribute(Qt::AA_EnableHighDpiScaling); // 开启 Hidpi 支持
|
||||
// 程序内强制添加"-platformtheme deepin"参数喂给Qt让Qt正确使用Deepin主题修复各种奇怪样式问题
|
||||
@@ -32,12 +44,25 @@ int main(int argc, char *argv[])
|
||||
a.setAttribute(Qt::AA_UseHighDpiPixmaps);
|
||||
a.loadTranslator(); // 载入翻译
|
||||
|
||||
QSettings readConfig(QDir::homePath() + "/.config/spark-store/config.ini", QSettings::IniFormat);
|
||||
|
||||
if (readConfig.value("build/version").toString() != version){
|
||||
qDebug() << "Spark Store has been updated!";
|
||||
QSettings *setConfig = new QSettings(QDir::homePath() + "/.config/spark-store/config.ini", QSettings::IniFormat);
|
||||
setConfig->setValue("build/version", version);
|
||||
setConfig->setValue("build/time", buildDate.toString("yyyy.MM.dd")+"-"+buildTime.toString());
|
||||
setConfig->deleteLater();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//Customized DAboutDialog
|
||||
|
||||
DAboutDialog dialog;
|
||||
a.setAboutDialog(&dialog);
|
||||
dialog.setLicense(QObject::tr("We publish this program under GPL V3"));
|
||||
dialog.setVersion(DApplication::buildVersion("Version 3.3~test3"));
|
||||
dialog.setVersion(DApplication::buildVersion(readConfig.value("build/version").toString()+"-"+readConfig.value("build/time").toString()));
|
||||
dialog.setProductIcon(QIcon::fromTheme("spark-store")); // 设置Logo
|
||||
dialog.setProductName(QLabel::tr("Spark Store"));
|
||||
dialog.setDescription(
|
||||
@@ -58,7 +83,7 @@ int main(int argc, char *argv[])
|
||||
a.setOrganizationName("spark-union");
|
||||
a.setOrganizationDomain("https://www.deepinos.org/");
|
||||
a.setApplicationName("Spark Store"); //不需要翻译,否则 ~/.local/share/ 下文件夹名称也被翻译为中文
|
||||
a.setApplicationVersion(DApplication::buildVersion("3.3~test3"));
|
||||
a.setApplicationVersion(DApplication::buildVersion(readConfig.value("build/version").toString()));
|
||||
a.setApplicationAcknowledgementPage("https://gitee.com/deepin-community-store/spark-store");
|
||||
a.setApplicationDescription(
|
||||
QObject::tr(
|
||||
|
||||
@@ -4,11 +4,10 @@
|
||||
#
|
||||
#-------------------------------------------------
|
||||
|
||||
QT += core gui network concurrent webenginewidgets
|
||||
QT += core gui network concurrent webenginewidgets dbus
|
||||
|
||||
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
|
||||
|
||||
QT += dbus
|
||||
TARGET = spark-store
|
||||
TEMPLATE = app
|
||||
|
||||
@@ -43,7 +42,9 @@ SOURCES += \
|
||||
progressload.cpp \
|
||||
widget.cpp \
|
||||
workerthreads.cpp \
|
||||
dbus/dbussparkstore.cpp
|
||||
dbus/dbussparkstore.cpp \
|
||||
webengine/webenginepage.cpp \
|
||||
webengine/webengineview.cpp
|
||||
|
||||
HEADERS += \
|
||||
appitem.h \
|
||||
@@ -55,7 +56,9 @@ HEADERS += \
|
||||
progressload.h \
|
||||
widget.h \
|
||||
workerthreads.h \
|
||||
dbus/dbussparkstore.h
|
||||
dbus/dbussparkstore.h \
|
||||
webengine/webenginepage.h \
|
||||
webengine/webengineview.h
|
||||
|
||||
FORMS += \
|
||||
appitem.ui \
|
||||
|
||||
44
src/webengine/webenginepage.cpp
Normal file
44
src/webengine/webenginepage.cpp
Normal file
@@ -0,0 +1,44 @@
|
||||
#include "webenginepage.h"
|
||||
|
||||
#include <QDesktopServices>
|
||||
|
||||
WebEnginePage::WebEnginePage(QObject *parent)
|
||||
: QWebEnginePage(parent)
|
||||
{
|
||||
}
|
||||
|
||||
WebEnginePage::~WebEnginePage()
|
||||
{
|
||||
}
|
||||
|
||||
void WebEnginePage::setUrl(const QUrl &url)
|
||||
{
|
||||
if (m_currentUrl == url) {
|
||||
return;
|
||||
}
|
||||
|
||||
m_currentUrl = url;
|
||||
QWebEnginePage::setUrl(url);
|
||||
}
|
||||
|
||||
QWebEnginePage *WebEnginePage::createWindow(QWebEnginePage::WebWindowType type)
|
||||
{
|
||||
Q_UNUSED(type)
|
||||
|
||||
WebEnginePage *page = new WebEnginePage(parent());
|
||||
connect(page, &WebEnginePage::urlChanged, this, &WebEnginePage::slotUrlChanged);
|
||||
return page;
|
||||
}
|
||||
|
||||
void WebEnginePage::slotUrlChanged(const QUrl &url)
|
||||
{
|
||||
if (m_currentUrl == url) {
|
||||
sender()->deleteLater();
|
||||
return;
|
||||
}
|
||||
|
||||
qDebug() << Q_FUNC_INFO << m_currentUrl << url;
|
||||
|
||||
QDesktopServices::openUrl(url);
|
||||
sender()->deleteLater();
|
||||
}
|
||||
26
src/webengine/webenginepage.h
Normal file
26
src/webengine/webenginepage.h
Normal file
@@ -0,0 +1,26 @@
|
||||
#ifndef WEBENGINEPAGE_H
|
||||
#define WEBENGINEPAGE_H
|
||||
|
||||
#include <QWebEnginePage>
|
||||
|
||||
class WebEnginePage : public QWebEnginePage
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit WebEnginePage(QObject *parent = nullptr);
|
||||
~WebEnginePage() override;
|
||||
|
||||
void setUrl(const QUrl &url);
|
||||
|
||||
protected:
|
||||
QWebEnginePage *createWindow(WebWindowType type) override;
|
||||
|
||||
private slots:
|
||||
void slotUrlChanged(const QUrl &url);
|
||||
|
||||
private:
|
||||
QUrl m_currentUrl;
|
||||
};
|
||||
|
||||
#endif // WEBENGINEPAGE_H
|
||||
10
src/webengine/webengineview.cpp
Normal file
10
src/webengine/webengineview.cpp
Normal file
@@ -0,0 +1,10 @@
|
||||
#include "webengineview.h"
|
||||
#include "webenginepage.h"
|
||||
|
||||
#include <QDesktopServices>
|
||||
|
||||
WebEngineView::WebEngineView(QWidget *parent)
|
||||
: QWebEngineView(parent)
|
||||
{
|
||||
setPage(new WebEnginePage(this));
|
||||
}
|
||||
14
src/webengine/webengineview.h
Normal file
14
src/webengine/webengineview.h
Normal file
@@ -0,0 +1,14 @@
|
||||
#ifndef WEBENGINEVIEW_H
|
||||
#define WEBENGINEVIEW_H
|
||||
|
||||
#include <QWebEngineView>
|
||||
|
||||
class WebEngineView : public QWebEngineView
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit WebEngineView(QWidget *parent = nullptr);
|
||||
};
|
||||
|
||||
#endif // WEBENGINEVIEW_H
|
||||
173
src/widget.cpp
173
src/widget.cpp
@@ -63,7 +63,8 @@ Widget::Widget(DBlurEffectWidget *parent) :
|
||||
connect(ui->menu_system, &QPushButton::clicked, this, [=](){Widget::chooseLeftMenu(10);});
|
||||
connect(ui->menu_theme, &QPushButton::clicked, this, [=](){Widget::chooseLeftMenu(11);});
|
||||
connect(ui->menu_other, &QPushButton::clicked, this, [=](){Widget::chooseLeftMenu(12);});
|
||||
connect(ui->menu_download, &QPushButton::clicked, this, [=](){Widget::chooseLeftMenu(13);});
|
||||
connect(ui->menu_upgrade, &QPushButton::clicked, this, [=](){Widget::chooseLeftMenu(13);});
|
||||
connect(ui->menu_download, &QPushButton::clicked, this, [=](){Widget::chooseLeftMenu(14);});
|
||||
|
||||
connect(DGuiApplicationHelper::instance(), &DGuiApplicationHelper::themeTypeChanged, this, [=](DGuiApplicationHelper::ColorType themeType)
|
||||
{
|
||||
@@ -159,7 +160,7 @@ void Widget::initUI()
|
||||
{
|
||||
// ui初始化
|
||||
setMaskAlpha(200);
|
||||
ui->webfoot->setFixedHeight(0);
|
||||
// ui->webfoot->setFixedHeight(0);
|
||||
ui->stackedWidget->setCurrentIndex(0);
|
||||
ui->listWidget->hide();
|
||||
ui->label_setting1->hide();
|
||||
@@ -231,12 +232,12 @@ void Widget::initUI()
|
||||
});
|
||||
|
||||
// 载入自定义字体
|
||||
int loadedFontID = QFontDatabase::addApplicationFont(":/fonts/fonts/hksnzt.ttf");
|
||||
QStringList loadedFontFamilies = QFontDatabase::applicationFontFamilies(loadedFontID);
|
||||
if(!loadedFontFamilies.isEmpty())
|
||||
{
|
||||
font = loadedFontFamilies.at(0);
|
||||
}
|
||||
// int loadedFontID = QFontDatabase::addApplicationFont(":/fonts/fonts/hksnzt.ttf");
|
||||
// QStringList loadedFontFamilies = QFontDatabase::applicationFontFamilies(loadedFontID);
|
||||
// if(!loadedFontFamilies.isEmpty())
|
||||
// {
|
||||
// font = loadedFontFamilies.at(0);
|
||||
// }
|
||||
/* 全局字体设置
|
||||
* DApplication::setFont(font);
|
||||
*/
|
||||
@@ -255,7 +256,8 @@ void Widget::initUI()
|
||||
left_list[10] = ui->menu_system;
|
||||
left_list[11] = ui->menu_theme;
|
||||
left_list[12] = ui->menu_other;
|
||||
left_list[13] = ui->menu_download;
|
||||
left_list[13] = ui->menu_upgrade;
|
||||
left_list[14] = ui->menu_download;
|
||||
|
||||
ui->label_show->hide();
|
||||
|
||||
@@ -347,7 +349,7 @@ void Widget::initConfig()
|
||||
// web控件初始化
|
||||
// ui->webView->page()->setLinkDelegationPolicy(QWebPage::DelegateAllLinks); // 用来激活接受 linkClicked 信号
|
||||
// ui->webView->page()->settings()->setAttribute(QWebSettings::JavascriptEnabled, true);
|
||||
ui->webfoot->hide();
|
||||
// ui->webfoot->hide();
|
||||
|
||||
// 初始化首页
|
||||
// ui->webEngineView->setUrl(menuUrl[0]);
|
||||
@@ -385,7 +387,7 @@ void Widget::setTheme(bool isDark, QColor color)
|
||||
// 黑色模式
|
||||
themeIsDark = true;
|
||||
ui->webEngineView->setStyleSheet("background-color: #252525;");
|
||||
ui->webfoot->setStyleSheet("background-color: #252525;");
|
||||
// ui->webfoot->setStyleSheet("background-color: #252525;");
|
||||
ui->btn_openDir->setStyleSheet("color: #AFAFAF; background-color: #2C2C2C; border: 0px;");
|
||||
ui->label->setStyleSheet("background-color: #252525;");
|
||||
// ui->scrollArea->setStyleSheet("background-color: #2C2C2C;");
|
||||
@@ -398,7 +400,7 @@ void Widget::setTheme(bool isDark, QColor color)
|
||||
// 亮色模式
|
||||
themeIsDark = false;
|
||||
ui->webEngineView->setStyleSheet("background-color: #FFFFFF;");
|
||||
ui->webfoot->setStyleSheet("background-color: #FFFFFF;");
|
||||
// ui->webfoot->setStyleSheet("background-color: #FFFFFF;");
|
||||
ui->btn_openDir->setStyleSheet("color: #505050; background-color: #F8F8F8; border: 0px;");
|
||||
ui->label->setStyleSheet("background-color: #FFFFFF;");
|
||||
// ui->scrollArea->setStyleSheet("background-color: #F8F8F8;");
|
||||
@@ -482,7 +484,8 @@ void Widget::updateUI()
|
||||
left_list[10]->setIcon(QIcon(":/icons/icons/category_system_dark.svg"));
|
||||
left_list[11]->setIcon(QIcon(":/icons/icons/theme-symbolic_dark.svg"));
|
||||
left_list[12]->setIcon(QIcon(":/icons/icons/category_others_dark.svg"));
|
||||
left_list[13]->setIcon(QIcon(":/icons/icons/downloads-symbolic_dark.svg"));
|
||||
left_list[13]->setIcon(QIcon(":/icons/icons/upgrades-symbolic_dark.svg"));
|
||||
left_list[14]->setIcon(QIcon(":/icons/icons/downloads-symbolic_dark.svg"));
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -499,10 +502,11 @@ void Widget::updateUI()
|
||||
left_list[10]->setIcon(QIcon(":/icons/icons/category_system.svg"));
|
||||
left_list[11]->setIcon(QIcon(":/icons/icons/theme-symbolic.svg"));
|
||||
left_list[12]->setIcon(QIcon(":/icons/icons/category_others.svg"));
|
||||
left_list[13]->setIcon(QIcon(":/icons/icons/downloads-symbolic.svg"));
|
||||
left_list[13]->setIcon(QIcon(":/icons/icons/upgrades-symbolic.svg"));
|
||||
left_list[14]->setIcon(QIcon(":/icons/icons/downloads-symbolic.svg"));
|
||||
}
|
||||
|
||||
for(int i = 0; i < 14; i++)
|
||||
for(int i = 0; i < 15; i++)
|
||||
{
|
||||
/* 设置左侧菜单字体
|
||||
* QFont temp = font;
|
||||
@@ -590,7 +594,10 @@ void Widget::updateUI()
|
||||
left_list[12]->setIcon(QIcon(":/icons/icons/category_others_dark.svg"));
|
||||
break;
|
||||
case 13:
|
||||
left_list[13]->setIcon(QIcon(":/icons/icons/downloads-symbolic_dark.svg"));
|
||||
left_list[13]->setIcon(QIcon(":/icons/icons/upgrades-symbolic_dark.svg"));
|
||||
break;
|
||||
case 14:
|
||||
left_list[14]->setIcon(QIcon(":/icons/icons/downloads-symbolic_dark.svg"));
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -630,6 +637,18 @@ void Widget::chooseLeftMenu(int index)
|
||||
|
||||
ui->stackedWidget->setCurrentIndex(0);
|
||||
}
|
||||
else if (index == 13){
|
||||
QFile upgradeStatus("/tmp/spark-store/upgradeStatus.txt");
|
||||
if (!upgradeStatus.exists()){
|
||||
QtConcurrent::run([=]{
|
||||
auto upgradeP = new QProcess();
|
||||
upgradeP->startDetached("/opt/durapps/spark-store/bin/update-upgrade/ss-do-upgrade.sh");
|
||||
upgradeP->waitForStarted();
|
||||
upgradeP->waitForFinished(-1);
|
||||
});
|
||||
}
|
||||
ui->stackedWidget->setCurrentIndex(0);
|
||||
}
|
||||
else
|
||||
{
|
||||
ui->stackedWidget->setCurrentIndex(1);
|
||||
@@ -641,15 +660,15 @@ void Widget::setfoot(int h)
|
||||
foot = h;
|
||||
}
|
||||
|
||||
void Widget::updatefoot()
|
||||
{
|
||||
int allh = ui->stackedWidget->height();
|
||||
ui->webfoot->setFixedHeight(allh - foot);
|
||||
}
|
||||
//void Widget::updatefoot()
|
||||
//{
|
||||
// int allh = ui->stackedWidget->height();
|
||||
// ui->webfoot->setFixedHeight(allh - foot);
|
||||
//}
|
||||
|
||||
void Widget::on_pushButton_download_clicked()
|
||||
{
|
||||
chooseLeftMenu(13);
|
||||
chooseLeftMenu(14);
|
||||
|
||||
allDownload += 1;
|
||||
|
||||
@@ -726,32 +745,57 @@ void Widget::searchApp(QString text)
|
||||
// 禁止同时进行多次搜索
|
||||
if (!mutex.tryLock())
|
||||
{
|
||||
qDebug() << "Do not repeat searches!";
|
||||
sendNotification(tr("Do not repeat searches!"));
|
||||
return;
|
||||
}
|
||||
|
||||
// 关键字搜索处理
|
||||
httpClient->get("https://search.deepinos.org.cn/appinfo/search")
|
||||
.header("content-type", "application/json")
|
||||
.queryParam("keyword", text)
|
||||
.onResponse([this](QByteArray result)
|
||||
{
|
||||
auto json = QJsonDocument::fromJson(result).array();
|
||||
if (json.empty())
|
||||
{
|
||||
qDebug() << "相关应用未找到!";
|
||||
sendNotification(tr("Relative apps Not Found!"));
|
||||
mutex.unlock();
|
||||
return;
|
||||
}
|
||||
displaySearchApp(json); })
|
||||
.onError([this](QString errorStr)
|
||||
{
|
||||
qDebug() << "请求出错:" << errorStr;
|
||||
sendNotification(QString(tr("Request Error: %1")).arg(errorStr));
|
||||
mutex.unlock();
|
||||
return; })
|
||||
.timeout(10 * 1000)
|
||||
.exec();
|
||||
//加载动画
|
||||
// spinner->show();
|
||||
// spinner->start();
|
||||
|
||||
// // 关键字搜索处理
|
||||
// httpClient->get("https://search.deepinos.org.cn/appinfo/search")
|
||||
// .header("content-type", "application/json")
|
||||
// .queryParam("keyword", text)
|
||||
// .onResponse([this](QByteArray result)
|
||||
// {
|
||||
// auto json = QJsonDocument::fromJson(result).array();
|
||||
// if (json.empty())
|
||||
// {
|
||||
// qDebug() << "相关应用未找到!";
|
||||
// sendNotification(tr("Relative apps Not Found!"));
|
||||
// mutex.unlock();
|
||||
// clearSearchApp();
|
||||
// spinner->stop();
|
||||
// spinner->hide();
|
||||
// ui->stackedWidget->setCurrentIndex(0);
|
||||
// ui->webEngineView->setUrl(QUrl("https://wayou.github.io/t-rex-runner"));
|
||||
// return;
|
||||
// }
|
||||
// clearSearchApp();
|
||||
// displaySearchApp(json); })
|
||||
// .onError([this](QString errorStr)
|
||||
// {
|
||||
// qDebug() << "请求出错:" << errorStr;
|
||||
// sendNotification(QString(tr("Request Error: %1")).arg(errorStr));
|
||||
// mutex.unlock();
|
||||
// return; })
|
||||
// .timeout(10 * 1000)
|
||||
// .exec();
|
||||
|
||||
if (!themeIsDark){
|
||||
ui->webEngineView->setUrl(serverUrl + "store/#/search?keywords=" + text);
|
||||
}else{
|
||||
ui->webEngineView->setUrl(serverUrl + "store/#/darksearch?keywords=" + text);
|
||||
}
|
||||
ui->stackedWidget->setCurrentIndex(0);
|
||||
// spinner->stop();
|
||||
// spinner->hide();
|
||||
ui->stackedWidget->setCurrentIndex(0);
|
||||
mutex.unlock();
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -762,9 +806,9 @@ void Widget::closeEvent(QCloseEvent *event)
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 展示搜索的APP信息
|
||||
* @brief 清除搜索的APP信息
|
||||
*/
|
||||
void Widget::displaySearchApp(QJsonArray array)
|
||||
void Widget::clearSearchApp()
|
||||
{
|
||||
ui->stackedWidget->setCurrentIndex(4);
|
||||
|
||||
@@ -779,13 +823,20 @@ void Widget::displaySearchApp(QJsonArray array)
|
||||
}
|
||||
|
||||
main->removeItem(applist_grid);
|
||||
spinner->show();
|
||||
spinner->start();
|
||||
}
|
||||
/**
|
||||
* @brief 展示搜索的APP信息
|
||||
*/
|
||||
void Widget::displaySearchApp(QJsonArray array)
|
||||
{
|
||||
|
||||
|
||||
|
||||
for(int i = 0; i < array.size(); i++)
|
||||
{
|
||||
QJsonObject appInfo = array.at(i).toObject();
|
||||
AppItem *appItem = new AppItem(this);
|
||||
appItem->setAttribute(Qt::WA_DeleteOnClose);
|
||||
QString url = QString("spk://store/%1/%2")
|
||||
.arg(appInfo["category_slug"].toString())
|
||||
.arg(appInfo["pkgname"].toString());
|
||||
@@ -1071,6 +1122,7 @@ void Widget::on_comboBox_server_currentIndexChanged(const QString &arg1)
|
||||
QSettings *setConfig = new QSettings(QDir::homePath() + "/.config/spark-store/config.ini", QSettings::IniFormat);
|
||||
setConfig->setValue("server/choose", arg1);
|
||||
setConfig->setValue("server/updated", updatedInfo);
|
||||
setConfig->deleteLater();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1188,10 +1240,15 @@ void Widget::on_pushButton_clearWebCache_clicked()
|
||||
{
|
||||
QtConcurrent::run([=]()
|
||||
{
|
||||
|
||||
QString dataLocal = QStandardPaths::writableLocation(QStandardPaths::AppLocalDataLocation);
|
||||
QDir cacheDir(dataLocal );
|
||||
cacheDir.removeRecursively(); });
|
||||
qDebug() << dataLocal;
|
||||
QDir dataDir(dataLocal);
|
||||
dataDir.removeRecursively();
|
||||
dataLocal = QStandardPaths::writableLocation(QStandardPaths::TempLocation);
|
||||
qDebug() << dataLocal;
|
||||
QDir cacheDir(dataLocal);
|
||||
cacheDir.removeRecursively();
|
||||
});
|
||||
}
|
||||
|
||||
quint64 Widget::dirFileSize(const QString &path)
|
||||
@@ -1367,7 +1424,17 @@ void Widget::on_webEngineView_loadFinished(bool arg1)
|
||||
|
||||
void Widget::on_pushButton_update_clicked()
|
||||
{
|
||||
QDesktopServices::openUrl(QUrl("https://www.deepinos.org/"));
|
||||
QString feedbackSpk = "spk://store/chat/store.spark-app.feedback";
|
||||
QFile actionSubmissionClientStatus("/opt/durapps/store.spark-app.feedback");
|
||||
if (actionSubmissionClientStatus.exists())
|
||||
{
|
||||
qDebug() << "反馈器存在";
|
||||
QProcess::startDetached("sh /opt/durapps/store.spark-app.feedback/launch.sh");
|
||||
}
|
||||
else{
|
||||
qDebug() << "反馈器不存在,跳转页面";
|
||||
openUrl(feedbackSpk);
|
||||
}
|
||||
}
|
||||
|
||||
void Widget::onGetUrl(const QString &url)
|
||||
|
||||
@@ -82,6 +82,7 @@ private slots:
|
||||
void sltAppinfoScreenshot(QPixmap *picture, int index);
|
||||
void sltAppinfoFinish();
|
||||
|
||||
void clearSearchApp(); // 清除搜索的APP信息
|
||||
void displaySearchApp(QJsonArray array); // 展示搜索的APP信息
|
||||
void downloadIconsFinished(int arraysize); // 当前搜索列表图标是否下载完成
|
||||
|
||||
@@ -130,7 +131,7 @@ private:
|
||||
void initConfig();
|
||||
void chooseLeftMenu(int index);
|
||||
void setfoot(int);
|
||||
void updatefoot();
|
||||
// void updatefoot();
|
||||
void updateUI();
|
||||
void closeEvent(QCloseEvent *event);
|
||||
|
||||
|
||||
619
src/widget.ui
619
src/widget.ui
@@ -7,7 +7,7 @@
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>1053</width>
|
||||
<height>711</height>
|
||||
<height>754</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
@@ -51,291 +51,6 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="DTitlebar" name="titlebar" native="true">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0" rowspan="4">
|
||||
<widget class="QWidget" name="widget_menuList" native="true">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>150</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>150</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>11</pointsize>
|
||||
</font>
|
||||
</property>
|
||||
<property name="accessibleDescription">
|
||||
<string>background-color:#FFFFFF</string>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
<string notr="true"/>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout_5">
|
||||
<property name="leftMargin">
|
||||
<number>5</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>5</number>
|
||||
</property>
|
||||
<item row="1" column="0">
|
||||
<spacer name="verticalSpacer_7">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeType">
|
||||
<enum>QSizePolicy::Fixed</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="5" column="0" colspan="6">
|
||||
<widget class="QPushButton" name="menu_music">
|
||||
<property name="text">
|
||||
<string>Music</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="7" column="0" colspan="6">
|
||||
<widget class="QPushButton" name="menu_photo">
|
||||
<property name="text">
|
||||
<string>Graphics</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="11" column="0" colspan="6">
|
||||
<widget class="QPushButton" name="menu_dev">
|
||||
<property name="text">
|
||||
<string>Development</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0" colspan="2">
|
||||
<widget class="QLabel" name="icon">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>36</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>16777215</width>
|
||||
<height>36</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>icon</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="5">
|
||||
<spacer name="horizontalSpacer_8">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeType">
|
||||
<enum>QSizePolicy::Fixed</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>3</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="0" column="2">
|
||||
<spacer name="horizontalSpacer_9">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="12" column="0" colspan="6">
|
||||
<widget class="QPushButton" name="menu_system">
|
||||
<property name="text">
|
||||
<string>Tools</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="10" column="0" colspan="6">
|
||||
<widget class="QPushButton" name="menu_read">
|
||||
<property name="text">
|
||||
<string>Reading</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="9" column="0" colspan="6">
|
||||
<widget class="QPushButton" name="menu_office">
|
||||
<property name="text">
|
||||
<string>Office</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="3">
|
||||
<widget class="QPushButton" name="pushButton_refresh">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Reload</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset resource="../assets/icons.qrc">
|
||||
<normaloff>:/icons/icons/refresh-page.svg</normaloff>:/icons/icons/refresh-page.svg</iconset>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="0" colspan="6">
|
||||
<widget class="QPushButton" name="menu_chat">
|
||||
<property name="text">
|
||||
<string>Chat</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="4">
|
||||
<widget class="QPushButton" name="pushButton_return">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Back to category</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset resource="../assets/icons.qrc">
|
||||
<normaloff>:/icons/icons/category_active.svg</normaloff>:/icons/icons/category_active.svg</iconset>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="17" column="0">
|
||||
<spacer name="verticalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>40</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="13" column="0" colspan="6">
|
||||
<widget class="QPushButton" name="menu_theme">
|
||||
<property name="text">
|
||||
<string>Beautify</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="0" colspan="6">
|
||||
<widget class="QPushButton" name="menu_network">
|
||||
<property name="text">
|
||||
<string>Network</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="8" column="0" colspan="6">
|
||||
<widget class="QPushButton" name="menu_game">
|
||||
<property name="text">
|
||||
<string>Games</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="14" column="0" colspan="6">
|
||||
<widget class="QPushButton" name="menu_other">
|
||||
<property name="text">
|
||||
<string>Others</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0" colspan="6">
|
||||
<widget class="QPushButton" name="menu_main">
|
||||
<property name="styleSheet">
|
||||
<string notr="true">font: 11pt "Zeniq";</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Home</string>
|
||||
</property>
|
||||
<property name="flat">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="16" column="0" colspan="6">
|
||||
<widget class="QPushButton" name="menu_download">
|
||||
<property name="text">
|
||||
<string>Download</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="6" column="0" colspan="6">
|
||||
<widget class="QPushButton" name="menu_video">
|
||||
<property name="text">
|
||||
<string>Video</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="15" column="0" colspan="6">
|
||||
<widget class="QWidget" name="line1_widget" native="true">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>1</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>16777215</width>
|
||||
<height>4</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
<string notr="true">background-color:#808080</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<widget class="QStackedWidget" name="stackedWidget">
|
||||
<property name="styleSheet">
|
||||
@@ -345,7 +60,7 @@
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="currentIndex">
|
||||
<number>2</number>
|
||||
<number>0</number>
|
||||
</property>
|
||||
<widget class="QWidget" name="page">
|
||||
<layout class="QVBoxLayout" name="verticalLayout_4">
|
||||
@@ -365,19 +80,14 @@
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QWebEngineView" name="webEngineView" native="true">
|
||||
<property name="contextMenuPolicy">
|
||||
<enum>Qt::DefaultContextMenu</enum>
|
||||
<layout class="QVBoxLayout" name="page1MainLayout">
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="url" stdset="0">
|
||||
<url>
|
||||
<string>about:blank</string>
|
||||
</url>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QWidget" name="webfoot" native="true"/>
|
||||
<item>
|
||||
<widget class="WebEngineView" name="webEngineView" native="true"/>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
@@ -490,7 +200,7 @@
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>889</width>
|
||||
<height>849</height>
|
||||
<height>853</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_17">
|
||||
@@ -1123,8 +833,8 @@
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>889</width>
|
||||
<height>716</height>
|
||||
<width>743</width>
|
||||
<height>839</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_23">
|
||||
@@ -1373,7 +1083,7 @@
|
||||
<item>
|
||||
<widget class="QLabel" name="label_5">
|
||||
<property name="text">
|
||||
<string><html><head/><body><p>We are <span style=" font-weight:600;">NOT</span> the official team, just like you, we are just one of the many Linux/deepin system enthusiasts and users, we develop and run the &quot;Spark Store&quot;! &quot;, is to bring the community together to share useful software, or to participate in development together, so that we all use the latest and greatest software. </p><p>We don't make a profit from this, all developers and maintainers don't get paid, and we rely on the community's donations to us for most of our expenses, which we are grateful for and which allow us not to spend too much energy worrying about funding. </p><p>Our service and software are free for everyone to use, communicate, and learn, but you must comply with local laws and regulations in the process of your use, otherwise any problems have nothing to do with us. </p><p>If any part of the store infringes your rights, please tell us &lt;jifengshenmo@outlook.com&gt; we will remove the infringing content as soon as possible. </p><p>If you'd like to get involved with us too, whether you're involved in development, design, pitching or submitting work, we welcome you to join us. </p><p>QQ group:872690351<br/></p></body></html></string>
|
||||
<string><html><head/><body><p>We are <span style=" font-weight:600;">NOT</span> the official team, just like you, we are just one of the many Linux/deepin system enthusiasts and users, we develop and run the &quot;Spark Store&quot;! &quot;, is to bring the community together to share useful software, or to participate in development together, so that we all use the latest and greatest software. </p><p>We don't make a profit from this, all developers and maintainers don't get paid, and we rely on the community's donations to us for most of our expenses, which we are grateful for and which allow us not to spend too much energy worrying about funding. </p><p>Our service and software are free for everyone to use, communicate, and learn, but you must comply with local laws and regulations in the process of your use, otherwise any problems have nothing to do with us. </p><p>If any part of the store infringes your rights, please tell us &lt;jifengshenmo@outlook.com&gt; we will remove the infringing content as soon as possible. </p><p>If you'd like to get involved with us too, whether you're involved in development, design, pitching or submitting work, we welcome you to join us. </p><p>Connect us on Spark IM: https://chat.shenmo.tech<br/></p></body></html></string>
|
||||
</property>
|
||||
<property name="wordWrap">
|
||||
<bool>true</bool>
|
||||
@@ -1446,14 +1156,301 @@
|
||||
</widget>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0" rowspan="4">
|
||||
<widget class="QWidget" name="widget_menuList" native="true">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>150</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>150</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>11</pointsize>
|
||||
</font>
|
||||
</property>
|
||||
<property name="accessibleDescription">
|
||||
<string>background-color:#FFFFFF</string>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
<string notr="true"/>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout_5">
|
||||
<property name="leftMargin">
|
||||
<number>5</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>5</number>
|
||||
</property>
|
||||
<item row="13" column="0" colspan="6">
|
||||
<widget class="QPushButton" name="menu_theme">
|
||||
<property name="text">
|
||||
<string>Beautify</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="0" colspan="6">
|
||||
<widget class="QPushButton" name="menu_chat">
|
||||
<property name="text">
|
||||
<string>Chat</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<spacer name="verticalSpacer_7">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeType">
|
||||
<enum>QSizePolicy::Fixed</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="3" column="0" colspan="6">
|
||||
<widget class="QPushButton" name="menu_network">
|
||||
<property name="text">
|
||||
<string>Network</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="18" column="0">
|
||||
<spacer name="verticalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>40</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="8" column="0" colspan="6">
|
||||
<widget class="QPushButton" name="menu_game">
|
||||
<property name="text">
|
||||
<string>Games</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="9" column="0" colspan="6">
|
||||
<widget class="QPushButton" name="menu_office">
|
||||
<property name="text">
|
||||
<string>Office</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="17" column="0" colspan="6">
|
||||
<widget class="QPushButton" name="menu_download">
|
||||
<property name="text">
|
||||
<string>Download</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="3">
|
||||
<widget class="QPushButton" name="pushButton_refresh">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Reload</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset resource="../assets/icons.qrc">
|
||||
<normaloff>:/icons/icons/refresh-page.svg</normaloff>:/icons/icons/refresh-page.svg</iconset>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="6" column="0" colspan="6">
|
||||
<widget class="QPushButton" name="menu_video">
|
||||
<property name="text">
|
||||
<string>Video</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="4">
|
||||
<widget class="QPushButton" name="pushButton_return">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Back to category</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset resource="../assets/icons.qrc">
|
||||
<normaloff>:/icons/icons/category_active.svg</normaloff>:/icons/icons/category_active.svg</iconset>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="12" column="0" colspan="6">
|
||||
<widget class="QPushButton" name="menu_system">
|
||||
<property name="text">
|
||||
<string>Tools</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0" colspan="6">
|
||||
<widget class="QPushButton" name="menu_main">
|
||||
<property name="styleSheet">
|
||||
<string notr="true">font: 11pt "Zeniq";</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Home</string>
|
||||
</property>
|
||||
<property name="flat">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="10" column="0" colspan="6">
|
||||
<widget class="QPushButton" name="menu_read">
|
||||
<property name="text">
|
||||
<string>Reading</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="14" column="0" colspan="6">
|
||||
<widget class="QPushButton" name="menu_other">
|
||||
<property name="text">
|
||||
<string>Others</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="7" column="0" colspan="6">
|
||||
<widget class="QPushButton" name="menu_photo">
|
||||
<property name="text">
|
||||
<string>Graphics</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0" colspan="2">
|
||||
<widget class="QLabel" name="icon">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>36</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>16777215</width>
|
||||
<height>36</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>icon</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="2">
|
||||
<spacer name="horizontalSpacer_9">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="11" column="0" colspan="6">
|
||||
<widget class="QPushButton" name="menu_dev">
|
||||
<property name="text">
|
||||
<string>Development</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="15" column="0" colspan="6">
|
||||
<widget class="QWidget" name="line1_widget" native="true">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>1</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>16777215</width>
|
||||
<height>4</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
<string notr="true">background-color:#808080</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="5">
|
||||
<spacer name="horizontalSpacer_8">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeType">
|
||||
<enum>QSizePolicy::Fixed</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>3</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="5" column="0" colspan="6">
|
||||
<widget class="QPushButton" name="menu_music">
|
||||
<property name="text">
|
||||
<string>Music</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="16" column="0" colspan="6">
|
||||
<widget class="QPushButton" name="menu_upgrade">
|
||||
<property name="text">
|
||||
<string>Upgrade</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="DTitlebar" name="titlebar" native="true">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<customwidgets>
|
||||
<customwidget>
|
||||
<class>QWebEngineView</class>
|
||||
<extends>QWidget</extends>
|
||||
<header location="global">QtWebEngineWidgets/QWebEngineView</header>
|
||||
</customwidget>
|
||||
<customwidget>
|
||||
<class>image_show</class>
|
||||
<extends>QWidget</extends>
|
||||
@@ -1472,6 +1469,12 @@
|
||||
<header location="global">progressload.h</header>
|
||||
<container>1</container>
|
||||
</customwidget>
|
||||
<customwidget>
|
||||
<class>WebEngineView</class>
|
||||
<extends>QWidget</extends>
|
||||
<header location="global">webengine/webengineview.h</header>
|
||||
<container>1</container>
|
||||
</customwidget>
|
||||
</customwidgets>
|
||||
<resources>
|
||||
<include location="../assets/icons.qrc"/>
|
||||
|
||||
646
tool/apt-fast/ss-apt-fast
Executable file
646
tool/apt-fast/ss-apt-fast
Executable file
@@ -0,0 +1,646 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# apt-fast v1.9
|
||||
# Use this just like aptitude or apt-get for faster package downloading.
|
||||
#
|
||||
# Copyright: 2008-2012 Matt Parnell, http://www.mattparnell.com
|
||||
# Improvements, maintenance, revisions - 2012, 2017-2018 Dominique Lasserre
|
||||
#
|
||||
# You may distribute this file under the terms of the GNU General
|
||||
# Public License as published by the Free Software Foundation; either
|
||||
# version 3 of the License, or (at your option) any later version.
|
||||
#
|
||||
[ -n "$DEBUG" ] && set -xv
|
||||
|
||||
# Print colored messages.
|
||||
# Usage: msg "message text" "message type" "optional: err"
|
||||
# Message types are 'normal', 'hint' or 'warning'. Warnings and messages with a
|
||||
# third argument are piped to stderr.
|
||||
msg(){
|
||||
msg_options=()
|
||||
case "$2" in
|
||||
normal) beginColor="$cGreen";;
|
||||
hint) beginColor="$cBlue";;
|
||||
warning) beginColor="$cRed";;
|
||||
question) beginColor="$cRed"; msg_options=(-n);;
|
||||
*) beginColor= ;;
|
||||
esac
|
||||
|
||||
if [ -z "$3" ] && [ "$2" != "warning" ]; then
|
||||
echo -e "${msg_options[@]}" "${aptfast_prefix}${beginColor}$1${endColor}"
|
||||
else
|
||||
echo -e "${msg_options[@]}" "${aptfast_prefix}${beginColor}$1${endColor}" >&2
|
||||
fi
|
||||
}
|
||||
|
||||
# Search for known options and decide if root privileges are needed.
|
||||
root=1 # default value: we need root privileges
|
||||
option=
|
||||
for argument in "$@"; do
|
||||
case "$argument" in
|
||||
upgrade | full-upgrade | install | dist-upgrade | build-dep)
|
||||
option="install"
|
||||
;;
|
||||
clean | autoclean)
|
||||
option="clean"
|
||||
;;
|
||||
download)
|
||||
option="download"
|
||||
root=0
|
||||
;;
|
||||
source)
|
||||
option="source"
|
||||
root=0
|
||||
;;
|
||||
changelog)
|
||||
root=0
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
# To handle priority of options correctly (environment over config file vars)
|
||||
# we need to preserve all interesting env variables. As this wouldn't be
|
||||
# difficult enough we have to preserve complete env vars (especially if value
|
||||
# ist set (even empty) or not) when changing context (sudo)...
|
||||
# Set a 'random' string to all unset variables.
|
||||
TMP_RANDOM="13979853562951413"
|
||||
TMP_LCK_FILE="${LCK_FILE-${TMP_RANDOM}}"
|
||||
TMP_DOWNLOADBEFORE="${DOWNLOADBEFORE-${TMP_RANDOM}}"
|
||||
TMP__APTMGR="${_APTMGR-${TMP_RANDOM}}"
|
||||
TMP_APTCACHE="${APTCACHE-${TMP_RANDOM}}"
|
||||
TMP_DLDIR="${DLDIR-${TMP_RANDOM}}"
|
||||
TMP_DLLIST="${DLLIST-${TMP_RANDOM}}"
|
||||
TMP_LISTDIR="${LISTDIR-${TMP_RANDOM}}"
|
||||
TMP__MAXNUM="${MAXNUM-${TMP_RANDOM}}"
|
||||
TMP__MAXCONPERSRV="${MAXCONPERSRV-${TMP_RANDOM}}"
|
||||
TMP__SPLITCON="${SPLITCON-${TMP_RANDOM}}"
|
||||
TMP__MINSPLITSZ=${MINSPLITSZ-${TMP_RANDOM}}
|
||||
TMP__PIECEALGO=${PIECEALGO-${TMP_RANDOM}}
|
||||
TMP_aptfast_prefix="${aptfast_prefix-${TMP_RANDOM}}"
|
||||
TMP_APT_FAST_TIMEOUT="${APT_FAST_TIMEOUT-${TMP_RANDOM}}"
|
||||
TMP_VERBOSE_OUTPUT="${VERBOSE_OUTPUT-${TMP_RANDOM}}"
|
||||
TMP_ftp_proxy="${ftp_proxy-${TMP_RANDOM}}"
|
||||
TMP_http_proxy="${http_proxy-${TMP_RANDOM}}"
|
||||
TMP_https_proxy="${https_proxy-${TMP_RANDOM}}"
|
||||
|
||||
# Check for proper privileges.
|
||||
# Call explicitly with environment variables to get them into root conext.
|
||||
if [ "$root" = 1 ] && [ "$UID" != 0 ]; then
|
||||
exec sudo DEBUG="$DEBUG" \
|
||||
LCK_FILE="$TMP_LCK_FILE" \
|
||||
DOWNLOADBEFORE="$TMP_DOWNLOADBEFORE" \
|
||||
_APTMGR="$TMP__APTMGR" \
|
||||
APTCACHE="$TMP_APTCACHE" \
|
||||
DLDIR="$TMP_DLDIR" \
|
||||
DLLIST="$TMP_DLLIST" \
|
||||
LISTDIR="$TMP_LISTDIR" \
|
||||
_MAXNUM="$TMP__MAXNUM" \
|
||||
_MAXCONPERSRV="$TMP__MAXCONPERSRV" \
|
||||
_SPLITCON="$TMP__SPLITCON" \
|
||||
_MINSPLITSZ="$TMP__MINSPLITSZ" \
|
||||
_PIECEALGO="$TMP__PIECEALGO" \
|
||||
aptfast_prefix="$TMP_aptfast_prefix" \
|
||||
APT_FAST_TIMEOUT="$TMP_APT_FAST_TIMEOUT" \
|
||||
VERBOSE_OUTPUT="$TMP_VERBOSE_OUTPUT" \
|
||||
ftp_proxy="$TMP_ftp_proxy" \
|
||||
http_proxy="$TMP_http_proxy" \
|
||||
https_proxy="$TMP_https_proxy" \
|
||||
"$0" "$@"
|
||||
fi
|
||||
|
||||
|
||||
# Define lockfile.
|
||||
# Use /tmp as directory because everybody (not only root) has to have write
|
||||
# permissions.
|
||||
# We need lock for non-root commands too, because we only have one download
|
||||
# list file.
|
||||
LCK_FILE="/tmp/apt-fast"
|
||||
LCK_FD=99
|
||||
|
||||
# Set default package manager, APT cache, temporary download dir,
|
||||
# temporary download list file, and maximal parallel downloads
|
||||
_APTMGR=apt-get
|
||||
eval "$(apt-config shell APTCACHE Dir::Cache::archives/d)"
|
||||
# Check if APT config option Dir::Cache::archives::apt-fast-partial is set.
|
||||
eval "$(apt-config shell apt_fast_partial Dir::Cache::archives::apt-fast-partial/d)"
|
||||
if [ -z "$apt_fast_partial" ]; then
|
||||
eval "$(apt-config -o Dir::Cache::archives::apt-fast-partial=apt-fast shell DLDIR Dir::Cache::archives::apt-fast-partial/d)"
|
||||
else
|
||||
eval "$(apt-config shell DLDIR Dir::Cache::archives::apt-fast-partial/d)"
|
||||
fi
|
||||
# Currently not needed.
|
||||
eval "$(apt-config shell LISTDIR Dir::State::lists/d)"
|
||||
DLLIST="/tmp/apt-fast.list"
|
||||
_MAXNUM=5
|
||||
_MAXCONPERSRV=10
|
||||
_SPLITCON=8
|
||||
_MINSPLITSZ="1M"
|
||||
_PIECEALGO="default"
|
||||
|
||||
# Prefix in front of apt-fast output:
|
||||
aptfast_prefix=
|
||||
# aptfast_prefix="$(date '+%b %_d %T.%N') apt-fast: "
|
||||
|
||||
# Set color variables.
|
||||
cGreen='\e[0;32m'
|
||||
cRed='\e[0;31m'
|
||||
cBlue='\e[0;34m'
|
||||
endColor='\e[0m'
|
||||
|
||||
# Set timout value for apt-fast download confirmation dialog.
|
||||
# Value is in seconds.
|
||||
APT_FAST_TIMEOUT=60
|
||||
|
||||
# Ask for download confirmation if unset
|
||||
DOWNLOADBEFORE=
|
||||
|
||||
# Formatted package list in download confirmation if unset
|
||||
VERBOSE_OUTPUT=
|
||||
|
||||
# Download command.
|
||||
_DOWNLOADER='aria2c --no-conf -c -j ${_MAXNUM} -x ${_MAXCONPERSRV} -s ${_SPLITCON} -i ${DLLIST} --min-split-size=${_MINSPLITSZ} --stream-piece-selector=${_PIECEALGO} --connect-timeout=600 --timeout=600 -m0'
|
||||
|
||||
# Load config file.
|
||||
CONFFILE="/etc/apt-fast.conf"
|
||||
if [ -e "$CONFFILE" ]; then
|
||||
source "$CONFFILE"
|
||||
fi
|
||||
|
||||
# no proxy as default
|
||||
ftp_proxy=
|
||||
http_proxy=
|
||||
https_proxy=
|
||||
|
||||
# Now overwrite with preserved values if values were set before (compare with
|
||||
# 'random' string).
|
||||
[ "$TMP_LCK_FILE" = "$TMP_RANDOM" ] || LCK_FILE="$TMP_LCK_FILE"
|
||||
[ "$TMP_DOWNLOADBEFORE" = "$TMP_RANDOM" ] || DOWNLOADBEFORE="$TMP_DOWNLOADBEFORE"
|
||||
[ "$TMP__APTMGR" = "$TMP_RANDOM" ] || _APTMGR="$TMP__APTMGR"
|
||||
[ "$TMP_APTCACHE" = "$TMP_RANDOM" ] || APTCACHE="$TMP_APTCACHE"
|
||||
[ "$TMP_DLDIR" = "$TMP_RANDOM" ] || DLDIR="$TMP_DLDIR"
|
||||
[ "$TMP_DLLIST" = "$TMP_RANDOM" ] || DLLIST="$TMP_DLLIST"
|
||||
[ "$TMP_LISTDIR" = "$TMP_RANDOM" ] || LISTDIR="$TMP_LISTDIR"
|
||||
[ "$TMP__MAXNUM" = "$TMP_RANDOM" ] || _MAXNUM="$TMP__MAXNUM"
|
||||
[ "$TMP__MAXCONPERSRV" = "$TMP_RANDOM" ] || _MAXCONPERSRV="$TMP__MAXCONPERSRV"
|
||||
[ "$TMP__SPLITCON" = "$TMP_RANDOM" ] || _SPLITCON="$TMP__SPLITCON"
|
||||
[ "$TMP__MINSPLITSZ" = "$TMP_RANDOM" ] || _MINSPLITSZ="$TMP__MINSPLITSZ"
|
||||
[ "$TMP__PIECEALGO" = "$TMP_RANDOM" ] || _PIECEALGO="$TMP__PIECEALGO"
|
||||
[ "$TMP_aptfast_prefix" = "$TMP_RANDOM" ] || aptfast_prefix="$TMP_aptfast_prefix"
|
||||
[ "$TMP_APT_FAST_TIMEOUT" = "$TMP_RANDOM" ] || APT_FAST_TIMEOUT="$TMP_APT_FAST_TIMEOUT"
|
||||
[ "$TMP_VERBOSE_OUTPUT" = "$TMP_RANDOM" ] || VERBOSE_OUTPUT="$TMP_VERBOSE_OUTPUT"
|
||||
[ "$TMP_ftp_proxy" = "$TMP_RANDOM" ] || ftp_proxy="$TMP_ftp_proxy"
|
||||
[ "$TMP_http_proxy" = "$TMP_RANDOM" ] || http_proxy="$TMP_http_proxy"
|
||||
[ "$TMP_https_proxy" = "$TMP_RANDOM" ] || https_proxy="$TMP_https_proxy"
|
||||
|
||||
|
||||
# Disable colors if not executed in terminal.
|
||||
if [ ! -t 1 ]; then
|
||||
cGreen=
|
||||
cRed=
|
||||
cBlue=
|
||||
endColor=
|
||||
#FIXME: Time not updated.
|
||||
[ -z "$aptfast_prefix" ] && aptfast_prefix="[apt-fast $(date +"%T")]"
|
||||
fi
|
||||
|
||||
|
||||
msg_already_running()
|
||||
{
|
||||
msg "apt-fast already running!" "warning"
|
||||
msg "Verify that all apt-fast processes are finished then remove $LCK_FILE.lock and try again." "hint"
|
||||
}
|
||||
|
||||
# Check if a lock file exists.
|
||||
if [ -f "$LCK_FILE.lock" ]; then
|
||||
msg_already_running
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
# create the lock file and lock it, die on failure
|
||||
_create_lock()
|
||||
{
|
||||
eval "exec $LCK_FD>\"$LCK_FILE.lock\""
|
||||
|
||||
trap "cleanup_aptfast; exit_cleanup_state" EXIT
|
||||
trap "cleanup_aptfast; exit 1" INT TERM
|
||||
|
||||
flock -n $LCK_FD || { msg_already_running; exit 1; }
|
||||
}
|
||||
|
||||
# unlock and remove the lock file
|
||||
_remove_lock()
|
||||
{
|
||||
flock -u "$LCK_FD" 2>/dev/null
|
||||
rm -f "$LCK_FILE.lock"
|
||||
}
|
||||
|
||||
# Move download file away so missing permissions won't stop usage.
|
||||
CLEANUP_STATE=0
|
||||
cleanup_dllist()
|
||||
{
|
||||
if [ -f "$DLLIST" ]
|
||||
then
|
||||
if ! mv -- "$DLLIST{,.old}" 2>/dev/null
|
||||
then
|
||||
if ! rm -f -- "$DLLIST" 2>/dev/null
|
||||
then
|
||||
msg "Could not clean up download list file." "warning"
|
||||
CLEANUP_STATE=1
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
cleanup_aptfast()
|
||||
{
|
||||
[ "$CLEANUP_STATE" -eq 0 ] && CLEANUP_STATE=$?
|
||||
cleanup_dllist
|
||||
_remove_lock
|
||||
}
|
||||
|
||||
exit_cleanup_state()
|
||||
{
|
||||
exit $CLEANUP_STATE
|
||||
}
|
||||
|
||||
# decode url string
|
||||
# translates %xx but must not convert '+' in spaces
|
||||
urldecode()
|
||||
{
|
||||
printf '%b' "${1//%/\\x}"
|
||||
}
|
||||
|
||||
# Check if mirrors are available. And if so add all mirrors to download list.
|
||||
get_mirrors(){
|
||||
# Check all mirror lists.
|
||||
for mirrorstr in "${MIRRORS[@]}"; do
|
||||
# Build mirrors array from comma separated string.
|
||||
IFS=", " read -r -a mirrors <<< "$mirrorstr"
|
||||
# Check for all mirrors if URI of $1 is from mirror. If so add all other
|
||||
# mirrors to (resmirror) list and break all loops.
|
||||
for mirror in "${mirrors[@]}"; do
|
||||
# Real expension.
|
||||
if [[ "$1" == "$mirror"* ]]; then
|
||||
filepath=${1#${mirror}}
|
||||
# Build list for aria download list.
|
||||
list="${mirrors[*]}"
|
||||
echo -e "${list// /${filepath}\\t}$filepath\n"
|
||||
return 0
|
||||
fi
|
||||
done
|
||||
done
|
||||
# No other mirrors found.
|
||||
echo "$1"
|
||||
}
|
||||
|
||||
# Globals to save package name, version, size and overall size.
|
||||
DOWNLOAD_DISPLAY=
|
||||
DOWNLOAD_SIZE=0
|
||||
# Get the package URLs.
|
||||
get_uris(){
|
||||
if [ ! -d "$(dirname "$DLLIST")" ]
|
||||
then
|
||||
if ! mkdir -p -- "$(dirname "$DLLIST")"
|
||||
then
|
||||
msg "Could not create download file directory." "warning"
|
||||
exit 1
|
||||
fi
|
||||
elif [ -f "$DLLIST" ]; then
|
||||
if ! rm -f -- "$DLLIST" 2>/dev/null && ! touch -- "$DLLIST" 2>/dev/null
|
||||
then
|
||||
msg "Unable to write to download file. Try restarting with root permissions or run 'apt-fast clean' first." "warning"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
# Add header to overwrite file.
|
||||
echo "# apt-fast mirror list: $(date)" > "$DLLIST"
|
||||
#NOTE: aptitude doesn't have this functionality, so we use apt-get to get
|
||||
# package URIs.
|
||||
case "$_APTMGR" in
|
||||
apt|apt-get) uri_mgr=$_APTMGR;;
|
||||
*) uri_mgr=apt-get;;
|
||||
esac
|
||||
uris_full="$("$uri_mgr" "${APT_SCRIPT_WARNING[@]}" -y --print-uris "$@")"
|
||||
uris_full_ret="$?"
|
||||
if [ "$uris_full_ret" -ne 0 ]
|
||||
then
|
||||
msg "Package manager quit with exit code." "warning"
|
||||
exit "$uris_full_ret"
|
||||
fi
|
||||
while read -r pkg_uri_info
|
||||
do
|
||||
[ -z "$pkg_uri_info" ] && continue
|
||||
## --print-uris format is:
|
||||
# 'fileurl' filename filesize checksum_hint:filechecksum
|
||||
uri="$(echo "$pkg_uri_info" | cut -d' ' -f1 | tr -d "'")"
|
||||
filename="$(echo "$pkg_uri_info" | cut -d' ' -f2)"
|
||||
filesize="$(echo "$pkg_uri_info" | cut -d' ' -f3)"
|
||||
checksum_string="$(echo "$pkg_uri_info" | cut -d' ' -f4)"
|
||||
hash_algo="$(echo "$checksum_string" | cut -d':' -f1)"
|
||||
checksum="$(echo "$checksum_string" | cut -d':' -f2)"
|
||||
|
||||
filename_decoded="$(urldecode "$filename")"
|
||||
DOWNLOAD_DISPLAY="${DOWNLOAD_DISPLAY}$(echo "$filename_decoded" | cut -d'_' -f1)"
|
||||
DOWNLOAD_DISPLAY="${DOWNLOAD_DISPLAY} $(echo "$filename_decoded" | cut -d'_' -f2)"
|
||||
DOWNLOAD_DISPLAY="${DOWNLOAD_DISPLAY} $(echo "$filesize" | numfmt --to=iec-i --suffix=B)\n"
|
||||
DOWNLOAD_SIZE=$((DOWNLOAD_SIZE + filesize))
|
||||
|
||||
## whole uri comes encoded (urlencoded). Filename must NOT be decoded because
|
||||
# plain aptitude do not decode it when download and install it. Therefore, we
|
||||
# will have ugly named packages at /var/cache/apt/archives but is the standard
|
||||
# behavior.
|
||||
# But package version must be decoded, otherways package=version calls will
|
||||
# not work.
|
||||
|
||||
if [ -n "$HASH_SUPPORTED" ]; then
|
||||
case "$hash_algo" in
|
||||
SHA512) [ -z "$SHA512_SUPPORTED" ] && hash_algo= || hash_algo=sha-512 ;;
|
||||
SHA256) [ -z "$SHA256_SUPPORTED" ] && hash_algo= || hash_algo=sha-256 ;;
|
||||
SHA1) [ -z "$SHA1_SUPPORTED" ] && hash_algo= || hash_algo=sha-1 ;;
|
||||
MD5Sum) [ -z "$MD5sum_SUPPORTED" ] && hash_algo= || hash_algo=md5 ;;
|
||||
*) hash_algo=
|
||||
esac
|
||||
|
||||
# Using apt-cache show package=version to ensure recover single and
|
||||
# correct package version.
|
||||
# Warning: assuming that package naming uses '_' as field separator.
|
||||
# Therefore, this code expects package-name_version_arch.deb Otherways
|
||||
# below code will fail resoundingly
|
||||
if [ -z "$hash_algo" ]; then
|
||||
pkg_name="$(echo "$filename" | cut -d'_' -f1)"
|
||||
pkg_version="$(echo "$filename" | cut -d'_' -f2)"
|
||||
pkg_version="$(urldecode "$pkg_version")"
|
||||
package_info="$(apt-cache show "$pkg_name=$pkg_version")"
|
||||
|
||||
patch_checksum=
|
||||
if [ -n "$SHA512_SUPPORTED" ]; then
|
||||
patch_checksum="$(echo "$package_info" | grep SHA512 | head -n 1)"
|
||||
[ -n "$patch_checksum" ] && hash_algo="sha-512"
|
||||
fi
|
||||
if [ -z "$patch_checksum" ] && [ -n "$SHA256_SUPPORTED" ]; then
|
||||
patch_checksum="$(echo "$package_info" | grep SHA256 | head -n 1)"
|
||||
[ -n "$patch_checksum" ] && hash_algo="sha-256"
|
||||
fi
|
||||
if [ -z "$patch_checksum" ] && [ -n "$SHA1_SUPPORTED" ]; then
|
||||
patch_checksum="$(echo "$package_info" | grep SHA1 | head -n 1)"
|
||||
[ -n "$patch_checksum" ] && hash_algo="sha-1"
|
||||
fi
|
||||
if [ -z "$patch_checksum" ] && [ -n "$MD5sum_SUPPORTED" ]; then
|
||||
patch_checksum="$(echo "$package_info" | grep MD5sum | head -n 1)"
|
||||
[ -n "$patch_checksum" ] && hash_algo="md5"
|
||||
fi
|
||||
|
||||
if [ -n "$patch_checksum" ]; then
|
||||
checksum="$(echo "$patch_checksum" | cut -d' ' -f2)"
|
||||
else
|
||||
msg "Couldn't get supported checksum for $pkg_name ($pkg_version)." "warning"
|
||||
REMOVE_WORKING_MESSAGE=
|
||||
fi
|
||||
fi
|
||||
else
|
||||
hash_algo=
|
||||
fi
|
||||
|
||||
{
|
||||
get_mirrors "$uri"
|
||||
#echo " dir=$DLDIR"
|
||||
if [ -n "$hash_algo" ]; then
|
||||
echo " checksum=$hash_algo=$checksum"
|
||||
fi
|
||||
echo " out=$filename"
|
||||
} >> "$DLLIST"
|
||||
done <<<"$(echo "$uris_full" | grep -E "^'(http(s|)|(s|)ftp)://")"
|
||||
|
||||
#cat "$DLLIST"
|
||||
#LCK_RM
|
||||
#exit
|
||||
}
|
||||
|
||||
display_downloadfile(){
|
||||
if [ -n "$VERBOSE_OUTPUT" ]; then
|
||||
cat "$DLLIST"
|
||||
else
|
||||
DISPLAY_SORT_OPTIONS=(-k 1,1)
|
||||
# Sort output after package download size (decreasing):
|
||||
#DISPLAY_SORT_OPTIONS=(-k 3,3 -hr)
|
||||
while read -r line; do
|
||||
[ -z "$line" ] && continue
|
||||
pkg="$(echo "$line" | cut -d' ' -f1)"
|
||||
ver="$(echo "$line" | cut -d' ' -f2)"
|
||||
size="$(echo "$line" | cut -d' ' -f3)"
|
||||
printf '%s%-40s %-20s %10s\n' "$aptfast_prefix" "$pkg" "$ver" "$size"
|
||||
done <<<"$(echo -e "$DOWNLOAD_DISPLAY" | sort "${DISPLAY_SORT_OPTIONS[@]}")"
|
||||
fi
|
||||
msg "Download size: $(echo "$DOWNLOAD_SIZE" | numfmt --to=iec-i --suffix=B)" "normal"
|
||||
}
|
||||
|
||||
# Create and insert a PID number to lockfile.
|
||||
_create_lock
|
||||
|
||||
# Make sure aria2c (in general first parameter from _DOWNLOADER) is available.
|
||||
CMD="$(echo "$_DOWNLOADER" | sed 's/^\s*\([^ ]\+\).*$/\1/')"
|
||||
if [ ! "$(command -v "$CMD")" ]; then
|
||||
msg "Command not found: $CMD" "normal" "err"
|
||||
msg "You must configure $CONFFILE to use aria2c or another supported download manager" "normal" "err"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Make sure package manager is available.
|
||||
if [ ! "$(command -v "$_APTMGR")" ]; then
|
||||
msg "\`$_APTMGR\` command not available." "warning"
|
||||
msg "You must configure $CONFFILE to use either apt-get or aptitude." "normal" "err"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Disable script warning if apt is used.
|
||||
APT_SCRIPT_WARNING=()
|
||||
if [ "$_APTMGR" == "apt" ]; then
|
||||
APT_SCRIPT_WARNING=(-o "Apt::Cmd::Disable-Script-Warning=true")
|
||||
fi
|
||||
|
||||
# Set supported hash algorithms by aria2c (and also by Debian repository).
|
||||
SHA512_SUPPORTED=
|
||||
SHA256_SUPPORTED=
|
||||
SHA1_SUPPORTED=
|
||||
MD5sum_SUPPORTED=
|
||||
HASH_SUPPORTED=
|
||||
if [ "$CMD" == "aria2c" ]; then
|
||||
for supported_hash in $(LC_ALL=C aria2c -v | sed '/^Hash Algorithms:/!d; s/\(^Hash Algorithms: \|,\)\+//g'); do
|
||||
case "$supported_hash" in
|
||||
sha-512) SHA512_SUPPORTED=y; HASH_SUPPORTED=y ;;
|
||||
sha-256) SHA256_SUPPORTED=y; HASH_SUPPORTED=y ;;
|
||||
sha-1) SHA1_SUPPORTED=y; HASH_SUPPORTED=y ;;
|
||||
md5) MD5sum_SUPPORTED=y; HASH_SUPPORTED=y ;;
|
||||
esac
|
||||
done
|
||||
if [ -z "$HASH_SUPPORTED" ]; then
|
||||
msg "Couldn't find supported checksum algorithm from aria2c. Checksums disabled." "warning"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Check if "assume yes" switch is enabled and if yes enable $DOWNLOADBEFORE.
|
||||
# Also check if "download only" switch is enabled.
|
||||
#TODO: Get real value over APT items APT::Get::Assume-Yes and
|
||||
# APT::Get::Assume-No .
|
||||
# Respectively Aptitude::CmdLine::Download-Only and APT::Get::Download-Only.
|
||||
DOWNLOAD_ONLY=
|
||||
while true; do
|
||||
while getopts ":dy-:" optchar; do
|
||||
case "${optchar}" in
|
||||
-)
|
||||
case "${OPTARG}" in
|
||||
yes | assume-yes) DOWNLOADBEFORE=true ;;
|
||||
assume-no) DOWNLOADBEFORE= ;;
|
||||
download-only) DOWNLOAD_ONLY=true ;;
|
||||
esac
|
||||
;;
|
||||
y)
|
||||
DOWNLOADBEFORE=true
|
||||
;;
|
||||
d)
|
||||
DOWNLOAD_ONLY=true
|
||||
;;
|
||||
esac
|
||||
done
|
||||
((OPTIND++))
|
||||
[ $OPTIND -gt $# ] && break
|
||||
done
|
||||
|
||||
# Configure proxies. Use apt values over environment variables.
|
||||
# Note: If proxy setting is not set, there is no apt-config output.
|
||||
# Therefore variable doesn't get overriden, which is intended.
|
||||
# Export the variables to make them available in subshells (aka the
|
||||
# downloader command).
|
||||
eval "$(apt-config shell ftp_proxy Acquire::ftp::proxy)"
|
||||
export ftp_proxy
|
||||
eval "$(apt-config shell http_proxy Acquire::http::proxy)"
|
||||
export http_proxy
|
||||
eval "$(apt-config shell https_proxy Acquire::https::proxy)"
|
||||
export https_proxy
|
||||
|
||||
# aria2 has no socks support (see https://github.com/aria2/aria2/issues/153)
|
||||
if echo "$http_proxy" | grep -q "^socks5h://" || echo "$https_proxy" | grep -q "^socks5h://"; then
|
||||
msg "Socks proxy detected. Falling back to ${_APTMGR}" "hint"
|
||||
"${_APTMGR}" "${APT_SCRIPT_WARNING[@]}" "$@"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Run actions.
|
||||
if [ "$option" == "install" ]; then
|
||||
msg
|
||||
msg "Working... this may take a while." "normal"
|
||||
REMOVE_WORKING_MESSAGE=y
|
||||
|
||||
get_uris "$@"
|
||||
|
||||
[ -t 1 ] && [ -n "$REMOVE_WORKING_MESSAGE" ] && tput cuu 1 && tput el && tput cuu 1
|
||||
# Test /tmp/apt-fast.list file exists and not just the apt-fast comment line.
|
||||
# Then download all files from the list.
|
||||
if [ -f "$DLLIST" ] && [ "$(wc -l "$DLLIST" | cut -d' ' -f1)" -gt 1 ] && [ ! "$DOWNLOADBEFORE" ]; then
|
||||
display_downloadfile
|
||||
msg
|
||||
msg "Do you want to download the packages? [Y/n] " "question"
|
||||
|
||||
while ((!updsys)); do
|
||||
read -r -sn1 -t "$APT_FAST_TIMEOUT" answer || { msg; msg "Timed out." "warning"; exit 1; }
|
||||
case "$answer" in
|
||||
[JjYy]) result=1; updsys=1 ;;
|
||||
[Nn]) result=0; updsys=1 ;;
|
||||
"") result=1; updsys=1 ;;
|
||||
*) updsys=0 ;;
|
||||
esac
|
||||
done
|
||||
else
|
||||
result=1
|
||||
fi
|
||||
|
||||
if ((DOWNLOAD_SIZE)); then
|
||||
msg
|
||||
# Continue if answer was right or DOWNLOADBEFORE is enabled.
|
||||
if ((result)); then
|
||||
if [ -s "$DLLIST" ]; then
|
||||
# Test if apt-fast directory is present where we put packages.
|
||||
if [ ! -d "$DLDIR" ]; then
|
||||
mkdir -p -- "$DLDIR"
|
||||
fi
|
||||
|
||||
cd "$DLDIR" &>/dev/null || exit 1
|
||||
|
||||
eval "${_DOWNLOADER}" # execute downloadhelper command
|
||||
if [ "$(find "$DLDIR" -printf . | wc -c)" -gt 1 ]; then
|
||||
# Move all packages to the apt install directory by force to ensure
|
||||
# already existing debs which may be incomplete are replaced
|
||||
find . -type f -name "*.deb" -execdir mv -ft "$APTCACHE" {} \+
|
||||
fi
|
||||
cd - &>/dev/null || msg "Failed to change back directory" "warning"
|
||||
fi
|
||||
else
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
[ -t 1 ] && tput el
|
||||
fi
|
||||
|
||||
if [ -z "$DOWNLOAD_ONLY" ] || [ "$_APTMGR" == "aptitude" ]; then
|
||||
"${_APTMGR}" "${APT_SCRIPT_WARNING[@]}" "$@"
|
||||
fi
|
||||
|
||||
|
||||
elif [ "$option" == "clean" ]; then
|
||||
"${_APTMGR}" "${APT_SCRIPT_WARNING[@]}" "$@" && {
|
||||
find "$DLDIR" -maxdepth 1 -type f -delete
|
||||
CLEANUP_STATE="$?"
|
||||
[ -f "$DLLIST" ] && rm -f -- "$DLLIST"* || true
|
||||
}
|
||||
|
||||
elif [ "$option" == "download" ]; then
|
||||
msg
|
||||
msg "Working... this may take a while." "normal"
|
||||
REMOVE_WORKING_MESSAGE=y
|
||||
|
||||
get_uris "$@"
|
||||
|
||||
[ -t 1 ] && [ -n "$REMOVE_WORKING_MESSAGE" ] && tput cuu 1 && tput el && tput cuu 1
|
||||
|
||||
if [ -f "$DLLIST" ] && [ "$(wc -l "$DLLIST" | cut -d' ' -f1)" -gt 1 ]; then
|
||||
display_downloadfile
|
||||
eval "${_DOWNLOADER}"
|
||||
fi
|
||||
|
||||
if [ "$_APTMGR" == "aptitude" ]; then
|
||||
"${_APTMGR}" "$@"
|
||||
fi
|
||||
|
||||
elif [ "$option" == "source" ]; then
|
||||
msg
|
||||
msg "Working... this may take a while." "normal"
|
||||
REMOVE_WORKING_MESSAGE=y
|
||||
|
||||
get_uris "$@"
|
||||
|
||||
[ -t 1 ] && [ -n "$REMOVE_WORKING_MESSAGE" ] && tput cuu 1 && tput el && tput cuu 1
|
||||
|
||||
if [ -f "$DLLIST" ] && [ "$(wc -l "$DLLIST" | cut -d' ' -f1)" -gt 1 ]; then
|
||||
display_downloadfile
|
||||
eval "${_DOWNLOADER}"
|
||||
fi
|
||||
# We use APT manager here to provide more verbose output. This method is
|
||||
# slightly slower then extractiong packages manually after download but also
|
||||
# more hardened (e.g. some options like --compile are available).
|
||||
"${_APTMGR}" "${APT_SCRIPT_WARNING[@]}" "$@"
|
||||
# Uncomment following snippet to extract source directly and comment
|
||||
# both lines before.
|
||||
#while read srcfile; do
|
||||
# # extract only .dsc files
|
||||
# echo "$srcfile" | grep -q '\.dsc$' || continue
|
||||
# dpkg-source -x "$(basename "$srcfile")"
|
||||
#done < "$DLLIST"
|
||||
|
||||
# Execute package manager directly if unknown options are passed.
|
||||
else
|
||||
"${_APTMGR}" "${APT_SCRIPT_WARNING[@]}" "$@"
|
||||
fi
|
||||
|
||||
# After error or all done remove our lockfile (done with EXIT trap)
|
||||
25
tool/aptss
25
tool/aptss
@@ -1,4 +1,8 @@
|
||||
#/bin/bash
|
||||
#!/bin/bash
|
||||
|
||||
apt-fast(){
|
||||
/opt/durapps/spark-store/bin/apt-fast/ss-apt-fast "$@"
|
||||
}
|
||||
|
||||
if [ ! -e "/tmp/aptss-conf/apt-fast.conf" ];then
|
||||
###刷新apt-fast配置
|
||||
@@ -14,17 +18,8 @@ fi
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
if [ "$1" = "install" ] || [ "$1" = "upgrade" ] || [ "$1" = "full-upgrade" ] ; then
|
||||
|
||||
DEPEND=`which apt-fast`
|
||||
if [ "$DEPEND" = "" ] ; then
|
||||
echo "未安装依赖:apt-fast 开始安装"
|
||||
aptss ssupdate && 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 install apt-fast -y
|
||||
fi
|
||||
|
||||
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"
|
||||
|
||||
@@ -36,11 +31,6 @@ bwrap --dev-bind / / \
|
||||
|
||||
|
||||
elif [ "$1" = "download" ];then
|
||||
DEPEND=`which apt-fast`
|
||||
if [ "$DEPEND" = "" ] ; then
|
||||
echo "未安装依赖:apt-fast 开始安装"
|
||||
aptss ssupdate && 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 install apt-fast -y
|
||||
fi
|
||||
|
||||
###执行
|
||||
bwrap --dev-bind / / \
|
||||
@@ -64,11 +54,10 @@ mkdir -p /tmp/aptss-conf/
|
||||
echo "从服务器获取配置和镜像列表..."
|
||||
echo "Getting server and mirror lists..."
|
||||
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 --silent -o /tmp/aptss-conf/apt-fast.conf "https://gitee.com/deepin-community-store/repo_auto_update_script/raw/master/mirror-list-for-apt-fast/apt-fast.conf"
|
||||
chmod -R 755 /tmp/aptss-conf
|
||||
|
||||
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"
|
||||
### 额外一份拿来给aptss自动补全用
|
||||
sudo curl --silent -o /opt/durapps/spark-store/bin/apt-fast-conf/sources.list.d/sparkstore.list "https://gitee.com/deepin-community-store/repo_auto_update_script/raw/master/mirror-list-for-apt-fast/sources.list.d/sparkstore.list"
|
||||
sudo bwrap --dev-bind / / --bind '/opt/durapps/spark-store/bin/apt-fast-conf/sources.list.d/sparkstore.list' /etc/apt/sources.list.d/sparkstore.list apt update -o Dir::Etc::sourcelist="sources.list.d/sparkstore.list" -o Dir::Etc::sourceparts="-" -o APT::Get::List-Cleanup="0"
|
||||
|
||||
#只更新星火源
|
||||
|
||||
@@ -1,17 +0,0 @@
|
||||
#!/bin/bash
|
||||
uname=`whoami`
|
||||
echo "Now input the password of $uname"
|
||||
read upass
|
||||
passcheck=`echo "$upass" | sudo -S echo "i love amber forever"`
|
||||
passcheck=`echo "$upass" | sudo -S echo "i love amber forever"`
|
||||
reset
|
||||
###UOS魔改的sudo返回了验证成功干扰判断,会变成验证成功i love amber forever
|
||||
### 听我说谢谢你,因为有你,温暖了四季
|
||||
###fuck♂you 就不能改的不那么坑爹吗???还是我用来捕捉的方法太笨了。。。
|
||||
if [ "$passcheck" != "i love amber forever" ];then
|
||||
echo "114514首"
|
||||
exit 1
|
||||
else
|
||||
reset
|
||||
echo "go go Baron Bunny"
|
||||
fi
|
||||
@@ -1,6 +1,10 @@
|
||||
#!/bin/bash
|
||||
#将来可能可以换成apt-metalink来直接用种子/链接下载
|
||||
|
||||
apt-fast(){
|
||||
/opt/durapps/spark-store/bin/apt-fast/ss-apt-fast "$@"
|
||||
}
|
||||
|
||||
echo "Spark Store Install script.星火商店安装脚本"
|
||||
|
||||
#################检测文件是否存在
|
||||
@@ -35,50 +39,18 @@ fi
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
##################apt-fast/metalink测试
|
||||
DEPEND="这里一定会安装所以放弃处理"
|
||||
|
||||
##############判断是否是root运行,如果是,则正常走;如果不是,则代输密码
|
||||
if [ "$(id -u)" != "0" ];then
|
||||
#############################无root权限时
|
||||
|
||||
IS_INSTALLED=`which apt-fast`
|
||||
if [ "$IS_INSTALLED" = "" ] ; then
|
||||
echo "未安装依赖:apt-fast 开始安装"
|
||||
echo "$upass" | sudo -S aptss ssupdate && echo "$upass" | sudo -S 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 install apt-fast -y
|
||||
|
||||
fi
|
||||
|
||||
|
||||
if [ "$DEPEND" != "" ]; then
|
||||
echo "检测到apt-fast,使用aptss进行多线程下载加速"
|
||||
echo ----------------------------------------------------------------------------------
|
||||
----------------------------------------------------------------------------------
|
||||
echo "$upass" | sudo -S dpkg -i $1 || sudo aptss install -yf
|
||||
fi
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
else
|
||||
###########################有root权限时
|
||||
|
||||
IS_INSTALLED=`which apt-fast`
|
||||
if [ "$IS_INSTALLED" = "" ] ; then
|
||||
echo "未安装依赖:apt-fast 开始安装"
|
||||
aptss ssupdate && 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 install apt-fast -y
|
||||
fi
|
||||
|
||||
|
||||
if [ "$DEPEND" != "" ]; then
|
||||
echo "检测到apt-fast,使用aptss进行多线程下载加速"
|
||||
echo ----------------------------------------------------------------------------------
|
||||
echo ----------------------------------------------------------------------------------
|
||||
dpkg -i $1 || aptss install -yf
|
||||
fi
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
26
tool/update-upgrade/ss-do-upgrade-worker.sh
Executable file
26
tool/update-upgrade/ss-do-upgrade-worker.sh
Executable file
@@ -0,0 +1,26 @@
|
||||
#!/bin/bash
|
||||
if [ "$(id -u)" != "0" ];then
|
||||
pkexec "$0" "$@"
|
||||
exit
|
||||
fi
|
||||
|
||||
|
||||
case $1 in
|
||||
ssupdate)
|
||||
aptss ssupdate 2>&1 | tee /tmp/spark-store-app-ssupdate-log.txt
|
||||
IS_SSUPDATE_ERROR=`cat /tmp/spark-store-app-ssupdate-log.txt | grep "E: "`
|
||||
echo "$IS_SSUPDATE_ERROR" > /tmp/spark-store-app-ssupdate-status.txt
|
||||
;;
|
||||
upgradable-list)
|
||||
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 list --upgradable -o Dir::Etc::sourcelist="sources.list.d/sparkstore.list" -o Dir::Etc::sourceparts="-" -o APT::Get::List-Cleanup="0" | awk 'BEGIN {FS="/"} {print $1}' | awk NR\>1
|
||||
;;
|
||||
upgrade-app)
|
||||
aptss install "${@:2}" --only-upgrade 2>&1 | tee /tmp/spark-store-app-upgrade-log.txt
|
||||
IS_UPGRADE_ERROR=`cat /tmp/spark-store-app-upgrade-log.txt | grep "Package manager quit with exit code."`
|
||||
echo "$IS_UPGRADE_ERROR" > /tmp/spark-store-app-upgrade-status.txt
|
||||
;;
|
||||
|
||||
clean-log)
|
||||
rm -f /tmp/spark-store-app-ssupdate-status.txt /tmp/spark-store-app-ssupdate-log.txt /tmp/spark-store-app-upgrade-log.txt /tmp/spark-store-app-upgrade-status.txt
|
||||
;;
|
||||
esac
|
||||
@@ -1,27 +1,58 @@
|
||||
#!/bin/bash
|
||||
PKG_LIST="$(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 list --upgradable -o Dir::Etc::sourcelist="sources.list.d/sparkstore.list" -o Dir::Etc::sourceparts="-" -o APT::Get::List-Cleanup="0" | awk 'BEGIN {FS="/"} {print $1}' | awk NR\>1)"
|
||||
|
||||
touch /tmp/spark-store/upgradeStatus.txt
|
||||
pkexec /opt/durapps/spark-store/bin/update-upgrade/ss-do-upgrade-worker.sh ssupdate | zenity --progress --auto-close --pulsate --no-cancel --text="正在检查更新,请稍候..." --height 70 --width 400 --title="星火商店更新模块" --window-icon=/usr/share/icons/hicolor/scalable/apps/spark-store.svg
|
||||
|
||||
if [ -z `cat /tmp/spark-store-app-ssupdate-status.txt` != "0" ];then
|
||||
echo "无错误"
|
||||
else
|
||||
zenity --error --text "检查更新进程出现错误!按确定查看报错,可用于反馈" --title "星火商店更新检测模块" --height 200 --width 350 --window-icon=/usr/share/icons/hicolor/scalable/apps/spark-store.svg
|
||||
zenity --text-info --filename=/tmp/spark-store-app-ssupdate-log.txt --checkbox="我已复制了此文本框中的日志,且将会在反馈时附上 。反馈渠道可以在右上角菜单的设置中找到" --title="反馈渠道在商店右上角的设置里" --window-icon=/usr/share/icons/hicolor/scalable/apps/spark-store.svg
|
||||
pkexec /opt/durapps/spark-store/bin/update-upgrade/ss-do-upgrade-worker.sh clean-log
|
||||
exit
|
||||
fi
|
||||
pkexec /opt/durapps/spark-store/bin/update-upgrade/ss-do-upgrade-worker.sh clean-log
|
||||
|
||||
PKG_LIST="$(pkexec /opt/durapps/spark-store/bin/update-upgrade/ss-do-upgrade-worker.sh upgradable-list)"
|
||||
####如果没更新,就弹出不需要更新
|
||||
if [ -z "$PKG_LIST" ];then
|
||||
zenity --info --icon-name=spark-store --text "没有软件需要更新\n但是你并没有站在世界之巅" --title "星火商店更新检测服务" --height 150 --width 300
|
||||
zenity --info --text "没有软件需要更新\n但是你并没有站在世界之巅" --title "星火商店更新检测模块" --height 150 --width 300 --window-icon=/usr/share/icons/hicolor/scalable/apps/spark-store.svg
|
||||
else
|
||||
PKG_UPGRADE_LIST=`for PKG_NAME in $PKG_LIST;
|
||||
do
|
||||
#### 检测是否是hold状态
|
||||
if [ "$(dpkg-query -W -f='${Status}' $PKG_NAME | grep hold)" = "" ];then
|
||||
echo "true"
|
||||
echo "$PKG_NAME"
|
||||
echo "$PKG_NAME"
|
||||
else
|
||||
echo "false"
|
||||
echo "$PKG_NAME (无法更新:请先执行 sudo apt-mark unhold 后再更新)"
|
||||
echo "$PKG_NAME(无法更新:已被标记为保留)"
|
||||
echo "$PKG_NAME"
|
||||
fi
|
||||
done | zenity --list --text="选择你想更新的应用" --column=是否更新 --column=应用包名 --separator=" " --checklist --print-column=2 --multiple --height 350 --width 550 `
|
||||
done | zenity --list --text="选择你想更新的应用" --column=是否更新 --column=应用包名 --column="真的应用包名" --separator=" " --checklist --print-column=3 --multiple --height 350 --width 550 --hide-column=3 --window-icon=/usr/share/icons/hicolor/scalable/apps/spark-store.svg`
|
||||
|
||||
#### 如果没有选择,则直接退出
|
||||
|
||||
if [ "$PKG_UPGRADE_LIST" = "" ];then
|
||||
zenity --info --icon-name=spark-store --text "没有选中任何软件\n但是你并没有站在世界之巅" --title "星火商店更新检测服务" --height 150 --width 300
|
||||
zenity --info --text "没有选中任何软件\n但是你并没有站在世界之巅" --title "星火商店更新检测服务" --height 150 --width 300 --window-icon=/usr/share/icons/hicolor/scalable/apps/spark-store.svg
|
||||
else
|
||||
sudo aptss install $PKG_UPGRADE_LIST -y
|
||||
|
||||
pkexec /opt/durapps/spark-store/bin/update-upgrade/ss-do-upgrade-worker.sh upgrade-app $PKG_UPGRADE_LIST -y | zenity --progress --auto-close --no-cancel --pulsate --text=正在更新已选中的应用,请稍候... --height 70 --width 400 --title="星火商店更新模块" --window-icon=/usr/share/icons/hicolor/scalable/apps/spark-store.svg
|
||||
|
||||
if [ -z "`cat /tmp/spark-store-app-upgrade-status.txt`" ];then
|
||||
|
||||
zenity --info --text "选中的软件已经更新完毕" --title "星火商店更新检测模块" --height 150 --width 300 --window-icon=/usr/share/icons/hicolor/scalable/apps/spark-store.svg
|
||||
else
|
||||
zenity --error --text "更新出现错误!按确定查看报错,可用于反馈" --title "星火商店更新检测模块" --height 200 --width 350 --window-icon=/usr/share/icons/hicolor/scalable/apps/spark-store.svg
|
||||
zenity --text-info --filename=/tmp/spark-store-app-upgrade-log.txt --checkbox="我已复制了此文本框中的日志,且将会在反馈时附上 。反馈渠道可以在右上角菜单的设置中找到" --title="反馈渠道在商店右上角的设置里往下拉" --window-icon=/usr/share/icons/hicolor/scalable/apps/spark-store.svg
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
rm -f touch /tmp/spark-store/upgradeStatus.txt
|
||||
####从最开头
|
||||
|
||||
@@ -40,7 +40,7 @@ case $option in
|
||||
;;
|
||||
|
||||
2)
|
||||
pkexec /opt/durapps/spark-store/bin/update-upgrade/ss-do-upgrade.sh
|
||||
/opt/durapps/spark-store/bin/update-upgrade/ss-do-upgrade.sh
|
||||
;;
|
||||
3)
|
||||
if [ -f /usr/share/polkit-1/actions/store.spark-app.ssinstall.policy ];then
|
||||
|
||||
@@ -19,7 +19,7 @@ function notify-send() {
|
||||
function network()
|
||||
{
|
||||
#超时时间
|
||||
local timeout=5
|
||||
local timeout=15
|
||||
|
||||
#目标网站
|
||||
local target=www.baidu.com
|
||||
|
||||
@@ -12,9 +12,9 @@
|
||||
<context>
|
||||
<name>QLabel</name>
|
||||
<message>
|
||||
<location filename="../src/main.cpp" line="42"/>
|
||||
<location filename="../src/main.cpp" line="50"/>
|
||||
<location filename="../src/main.cpp" line="56"/>
|
||||
<location filename="../src/main.cpp" line="67"/>
|
||||
<location filename="../src/main.cpp" line="75"/>
|
||||
<location filename="../src/main.cpp" line="81"/>
|
||||
<source>Spark Store</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
@@ -22,22 +22,22 @@
|
||||
<context>
|
||||
<name>QObject</name>
|
||||
<message>
|
||||
<location filename="../src/main.cpp" line="39"/>
|
||||
<location filename="../src/main.cpp" line="64"/>
|
||||
<source>We publish this program under GPL V3</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/main.cpp" line="44"/>
|
||||
<location filename="../src/main.cpp" line="69"/>
|
||||
<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>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/main.cpp" line="52"/>
|
||||
<location filename="../src/main.cpp" line="77"/>
|
||||
<source>The Spark Project</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/main.cpp" line="64"/>
|
||||
<location filename="../src/main.cpp" line="89"/>
|
||||
<source><span style='font-size:10pt;font-weight:60;'>An appstore powered by deepin 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><br/><br/>Published under GPL V3</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
@@ -103,435 +103,436 @@
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="84"/>
|
||||
<location filename="../src/widget.ui" line="1179"/>
|
||||
<source>background-color:#FFFFFF</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="184"/>
|
||||
<location filename="../src/widget.ui" line="1312"/>
|
||||
<source>Tools</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="265"/>
|
||||
<location filename="../src/widget.ui" line="1194"/>
|
||||
<source>Beautify</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="115"/>
|
||||
<location filename="../src/widget.ui" line="1427"/>
|
||||
<source>Music</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="198"/>
|
||||
<location filename="../src/widget.ui" line="1251"/>
|
||||
<source>Office</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="286"/>
|
||||
<location filename="../src/widget.ui" line="1339"/>
|
||||
<source>Others</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="279"/>
|
||||
<location filename="../src/widget.ui" line="1244"/>
|
||||
<source>Games</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="560"/>
|
||||
<location filename="../src/widget.ui" line="270"/>
|
||||
<source>Name</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="606"/>
|
||||
<location filename="../src/widget.ui" line="316"/>
|
||||
<source>ICON</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="547"/>
|
||||
<location filename="../src/widget.cpp" line="943"/>
|
||||
<location filename="../src/widget.cpp" line="1152"/>
|
||||
<location filename="../src/widget.ui" line="257"/>
|
||||
<location filename="../src/widget.cpp" line="984"/>
|
||||
<location filename="../src/widget.cpp" line="1194"/>
|
||||
<source>Install</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="661"/>
|
||||
<location filename="../src/widget.ui" line="371"/>
|
||||
<source>Uninstall</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="677"/>
|
||||
<location filename="../src/widget.ui" line="387"/>
|
||||
<source>Site</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="750"/>
|
||||
<location filename="../src/widget.ui" line="753"/>
|
||||
<location filename="../src/widget.ui" line="460"/>
|
||||
<location filename="../src/widget.ui" line="463"/>
|
||||
<source><html><head/><body><p>This app is developed by community user,we give this tag to honor those who contribute to the Linux Ecology</p></body></html></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="756"/>
|
||||
<location filename="../src/widget.ui" line="466"/>
|
||||
<source><html><head/><body><p><img src=":/tags/community-small.png"/></p></body></html></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="775"/>
|
||||
<location filename="../src/widget.ui" line="485"/>
|
||||
<source><html><head/><body><p><img src=":/tags/ubuntu-small.png"/></p></body></html></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="813"/>
|
||||
<location filename="../src/widget.ui" line="523"/>
|
||||
<source><html><head/><body><p><img src=":/tags/uos-small.png"/></p></body></html></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="788"/>
|
||||
<location filename="../src/widget.ui" line="791"/>
|
||||
<location filename="../src/widget.ui" line="498"/>
|
||||
<location filename="../src/widget.ui" line="501"/>
|
||||
<source><html><head/><body><p>Capable to deepin 20</p></body></html></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="313"/>
|
||||
<location filename="../src/widget.ui" line="1285"/>
|
||||
<source>Video</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="306"/>
|
||||
<location filename="../src/widget.ui" line="1258"/>
|
||||
<source>Download</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="238"/>
|
||||
<location filename="../src/widget.ui" line="1298"/>
|
||||
<source>Back to category</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="191"/>
|
||||
<location filename="../src/widget.ui" line="1332"/>
|
||||
<source>Reading</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="225"/>
|
||||
<location filename="../src/widget.ui" line="1201"/>
|
||||
<source>Chat</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="211"/>
|
||||
<location filename="../src/widget.ui" line="1271"/>
|
||||
<source>Reload</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="415"/>
|
||||
<location filename="../src/widget.ui" line="125"/>
|
||||
<source>The list is currently empty. Go and download some softwares!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="447"/>
|
||||
<location filename="../src/widget.ui" line="157"/>
|
||||
<source>Open download directory</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="794"/>
|
||||
<location filename="../src/widget.ui" line="504"/>
|
||||
<source><html><head/><body><p><img src=":/tags/deepin-small.png"/></p></body></html></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="807"/>
|
||||
<location filename="../src/widget.ui" line="810"/>
|
||||
<location filename="../src/widget.ui" line="517"/>
|
||||
<location filename="../src/widget.ui" line="520"/>
|
||||
<source><html><head/><body><p>Capable to UOS home 20</p></body></html></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="826"/>
|
||||
<location filename="../src/widget.ui" line="829"/>
|
||||
<location filename="../src/widget.ui" line="536"/>
|
||||
<location filename="../src/widget.ui" line="539"/>
|
||||
<source><html><head/><body><p>This is a DTK5 app,which means it would have better effect on Deepin Desktop Environment</p></body></html></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="832"/>
|
||||
<location filename="../src/widget.ui" line="542"/>
|
||||
<source><html><head/><body><p><img src=":/tags/dtk-small.png"/></p></body></html></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="867"/>
|
||||
<location filename="../src/widget.ui" line="577"/>
|
||||
<source><html><head/><body><p>A deepin-wine5 app.If you are using ubuntu or other non-deepin distro,you should deploy deepin-wine5 by your self.</p></body></html></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="883"/>
|
||||
<location filename="../src/widget.ui" line="886"/>
|
||||
<location filename="../src/widget.ui" line="593"/>
|
||||
<location filename="../src/widget.ui" line="596"/>
|
||||
<source><html><head/><body><p>An Appimage to deb app.</p></body></html></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="889"/>
|
||||
<location filename="../src/widget.ui" line="599"/>
|
||||
<source><html><head/><body><p><img src=":/tags/a2d-small.png"/></p></body></html></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="716"/>
|
||||
<location filename="../src/widget.ui" line="426"/>
|
||||
<source>Share</source>
|
||||
<translation type="unfinished">Spk share link</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="129"/>
|
||||
<location filename="../src/widget.ui" line="1385"/>
|
||||
<source>Development</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="296"/>
|
||||
<location filename="../src/widget.ui" line="1322"/>
|
||||
<source>Home</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="122"/>
|
||||
<location filename="../src/widget.ui" line="1346"/>
|
||||
<source>Graphics</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="272"/>
|
||||
<location filename="../src/widget.ui" line="1224"/>
|
||||
<source>Network</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="769"/>
|
||||
<location filename="../src/widget.ui" line="772"/>
|
||||
<location filename="../src/widget.ui" line="479"/>
|
||||
<location filename="../src/widget.ui" line="482"/>
|
||||
<source><html><head/><body><p>Capable to Ubuntu 22.04</p></body></html></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="845"/>
|
||||
<location filename="../src/widget.ui" line="555"/>
|
||||
<source><html><head/><body><p>A deepin-wine2 app. Spark Store will configure the wine environment for you, so don‘t worry.</p></body></html></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="848"/>
|
||||
<location filename="../src/widget.ui" line="558"/>
|
||||
<source><html><head/><body><p>A deepin-wine2 app.If you are using ubuntu or other non-deepin distro,you should deploy deepin-wine2 by your self.</p></body></html></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="851"/>
|
||||
<location filename="../src/widget.ui" line="561"/>
|
||||
<source><html><head/><body><p><img src=":/tags/dwine2-small.png"/></p></body></html></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="864"/>
|
||||
<location filename="../src/widget.ui" line="574"/>
|
||||
<source><html><head/><body><p>A deepin-wine5 app.Spark Store will configure the wine environment for you, so don‘t worry.</p></body></html></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="870"/>
|
||||
<location filename="../src/widget.ui" line="580"/>
|
||||
<source><html><head/><body><p><img src=":/tags/dwine5-small.png"/></p></body></html></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="930"/>
|
||||
<location filename="../src/widget.ui" line="640"/>
|
||||
<source>Info</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="937"/>
|
||||
<location filename="../src/widget.ui" line="647"/>
|
||||
<source><html><head/><body><p>An app store developed by community enthusiasts</p></body></html></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="979"/>
|
||||
<location filename="../src/widget.ui" line="689"/>
|
||||
<source>Screenshots</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="1142"/>
|
||||
<location filename="../src/widget.ui" line="852"/>
|
||||
<source>Line Settings</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="1158"/>
|
||||
<location filename="../src/widget.ui" line="868"/>
|
||||
<source>Choose Line:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="1181"/>
|
||||
<location filename="../src/widget.ui" line="891"/>
|
||||
<source>Refresh</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="1233"/>
|
||||
<location filename="../src/widget.ui" line="943"/>
|
||||
<source>Update</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="1240"/>
|
||||
<location filename="../src/widget.ui" line="950"/>
|
||||
<source>Spark Store Update</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="1260"/>
|
||||
<location filename="../src/widget.ui" line="970"/>
|
||||
<source>Server</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="1281"/>
|
||||
<location filename="../src/widget.ui" line="991"/>
|
||||
<source>Temp</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="1328"/>
|
||||
<location filename="../src/widget.ui" line="1038"/>
|
||||
<source>Clean</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="1294"/>
|
||||
<location filename="../src/widget.ui" line="1004"/>
|
||||
<source>Since the dictionary is at /tmp,It would be cleaned automatically when system reboot.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="1341"/>
|
||||
<location filename="../src/widget.ui" line="1051"/>
|
||||
<source>Size:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="1308"/>
|
||||
<location filename="../src/widget.ui" line="1018"/>
|
||||
<source>Location:/tmp/spark-store</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="1348"/>
|
||||
<location filename="../src/widget.ui" line="1058"/>
|
||||
<source>Clear Web Cache</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="1369"/>
|
||||
<location filename="../src/widget.ui" line="1079"/>
|
||||
<source>About us</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="1376"/>
|
||||
<source><html><head/><body><p>We are <span style=" font-weight:600;">NOT</span> the official team, just like you, we are just one of the many Linux/deepin system enthusiasts and users, we develop and run the &quot;Spark Store&quot;! &quot;, is to bring the community together to share useful software, or to participate in development together, so that we all use the latest and greatest software. </p><p>We don't make a profit from this, all developers and maintainers don't get paid, and we rely on the community's donations to us for most of our expenses, which we are grateful for and which allow us not to spend too much energy worrying about funding. </p><p>Our service and software are free for everyone to use, communicate, and learn, but you must comply with local laws and regulations in the process of your use, otherwise any problems have nothing to do with us. </p><p>If any part of the store infringes your rights, please tell us &lt;jifengshenmo@outlook.com&gt; we will remove the infringing content as soon as possible. </p><p>If you'd like to get involved with us too, whether you're involved in development, design, pitching or submitting work, we welcome you to join us. </p><p>QQ group:872690351<br/></p></body></html></source>
|
||||
<location filename="../src/widget.ui" line="1086"/>
|
||||
<source><html><head/><body><p>We are <span style=" font-weight:600;">NOT</span> the official team, just like you, we are just one of the many Linux/deepin system enthusiasts and users, we develop and run the &quot;Spark Store&quot;! &quot;, is to bring the community together to share useful software, or to participate in development together, so that we all use the latest and greatest software. </p><p>We don't make a profit from this, all developers and maintainers don't get paid, and we rely on the community's donations to us for most of our expenses, which we are grateful for and which allow us not to spend too much energy worrying about funding. </p><p>Our service and software are free for everyone to use, communicate, and learn, but you must comply with local laws and regulations in the process of your use, otherwise any problems have nothing to do with us. </p><p>If any part of the store infringes your rights, please tell us &lt;jifengshenmo@outlook.com&gt; we will remove the infringing content as soon as possible. </p><p>If you'd like to get involved with us too, whether you're involved in development, design, pitching or submitting work, we welcome you to join us. </p><p>Connect us on Spark IM: https://chat.shenmo.tech<br/></p></body></html></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="148"/>
|
||||
<location filename="../src/widget.ui" line="1365"/>
|
||||
<source>icon</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="374"/>
|
||||
<source>about:blank</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="575"/>
|
||||
<location filename="../src/widget.ui" line="285"/>
|
||||
<source><html><head/><body><p><br/></p></body></html></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="912"/>
|
||||
<location filename="../src/widget.ui" line="622"/>
|
||||
<source>Request Update</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="1194"/>
|
||||
<location filename="../src/widget.ui" line="904"/>
|
||||
<source>Take effect when restart</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="1223"/>
|
||||
<location filename="../src/widget.ui" line="933"/>
|
||||
<source><html><head/><body><p>Check update for Spark Store. </p></body></html></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="1301"/>
|
||||
<location filename="../src/widget.ui" line="1011"/>
|
||||
<source>0B</source>
|
||||
<translation type="unfinished">0B</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.cpp" line="192"/>
|
||||
<location filename="../src/widget.cpp" line="193"/>
|
||||
<source>Spark Store</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.cpp" line="193"/>
|
||||
<location filename="../src/widget.cpp" line="194"/>
|
||||
<source>Search or enter spk://</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.cpp" line="199"/>
|
||||
<location filename="../src/widget.cpp" line="200"/>
|
||||
<source>Submit App</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.cpp" line="200"/>
|
||||
<location filename="../src/widget.cpp" line="201"/>
|
||||
<source>Submit App with client(Recommanded)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.cpp" line="201"/>
|
||||
<location filename="../src/widget.cpp" line="202"/>
|
||||
<source>Settings</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.cpp" line="202"/>
|
||||
<location filename="../src/widget.cpp" line="203"/>
|
||||
<source>APP Upgrade and Install Settings</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.cpp" line="371"/>
|
||||
<location filename="../src/widget.cpp" line="373"/>
|
||||
<source>Not Exist</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.cpp" line="141"/>
|
||||
<location filename="../src/widget.cpp" line="433"/>
|
||||
<location filename="../src/widget.cpp" line="438"/>
|
||||
<location filename="../src/widget.cpp" line="448"/>
|
||||
<location filename="../src/widget.cpp" line="453"/>
|
||||
<location filename="../src/widget.cpp" line="142"/>
|
||||
<location filename="../src/widget.cpp" line="435"/>
|
||||
<location filename="../src/widget.cpp" line="440"/>
|
||||
<location filename="../src/widget.cpp" line="450"/>
|
||||
<location filename="../src/widget.cpp" line="455"/>
|
||||
<source>Spark\ Store</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.cpp" line="692"/>
|
||||
<location filename="../src/widget.cpp" line="932"/>
|
||||
<location filename="../src/widget.cpp" line="714"/>
|
||||
<location filename="../src/widget.cpp" line="973"/>
|
||||
<source>Reinstall</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.cpp" line="658"/>
|
||||
<location filename="../src/widget.cpp" line="680"/>
|
||||
<source>Failed to get the name to the file to be downloaded.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.cpp" line="937"/>
|
||||
<location filename="../src/widget.ui" line="1434"/>
|
||||
<location filename="../src/widget.cpp" line="978"/>
|
||||
<source>Upgrade</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.cpp" line="1124"/>
|
||||
<location filename="../src/widget.cpp" line="1166"/>
|
||||
<source>Updating, please wait...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.cpp" line="1156"/>
|
||||
<location filename="../src/widget.cpp" line="1198"/>
|
||||
<source>Uninstall succeeded</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.cpp" line="739"/>
|
||||
<location filename="../src/widget.cpp" line="767"/>
|
||||
<source>Relative apps Not Found!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.cpp" line="747"/>
|
||||
<location filename="../src/widget.cpp" line="749"/>
|
||||
<source>Do not repeat searches!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.cpp" line="781"/>
|
||||
<source>Request Error: %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.cpp" line="1178"/>
|
||||
<location filename="../src/widget.cpp" line="1220"/>
|
||||
<source>Temporary cache was cleaned</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.cpp" line="1270"/>
|
||||
<location filename="../src/widget.cpp" line="1312"/>
|
||||
<source>The URL has been copied to the clipboard</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
||||
@@ -12,20 +12,9 @@
|
||||
<context>
|
||||
<name>QLabel</name>
|
||||
<message>
|
||||
<source>Spark应用商店</source>
|
||||
<translation type="vanished">Spark Store</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>社区驱动的一款为第三方应用商店,为改变而生
|
||||
本程序按GPL第三版开源</source>
|
||||
<translation type="vanished">Un app store tier alimenté par la communauté Deepin
|
||||
Spark Store est publié sous licence GPL V3
|
||||
Nous sommes nés pour le changement.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/main.cpp" line="42"/>
|
||||
<location filename="../src/main.cpp" line="50"/>
|
||||
<location filename="../src/main.cpp" line="56"/>
|
||||
<location filename="../src/main.cpp" line="67"/>
|
||||
<location filename="../src/main.cpp" line="75"/>
|
||||
<location filename="../src/main.cpp" line="81"/>
|
||||
<source>Spark Store</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
@@ -33,22 +22,22 @@ Nous sommes nés pour le changement.</translation>
|
||||
<context>
|
||||
<name>QObject</name>
|
||||
<message>
|
||||
<location filename="../src/main.cpp" line="39"/>
|
||||
<location filename="../src/main.cpp" line="64"/>
|
||||
<source>We publish this program under GPL V3</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/main.cpp" line="44"/>
|
||||
<location filename="../src/main.cpp" line="69"/>
|
||||
<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>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/main.cpp" line="52"/>
|
||||
<location filename="../src/main.cpp" line="77"/>
|
||||
<source>The Spark Project</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/main.cpp" line="64"/>
|
||||
<location filename="../src/main.cpp" line="89"/>
|
||||
<source><span style='font-size:10pt;font-weight:60;'>An appstore powered by deepin 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><br/><br/>Published under GPL V3</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
@@ -114,597 +103,436 @@ Nous sommes nés pour le changement.</translation>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="84"/>
|
||||
<location filename="../src/widget.ui" line="1179"/>
|
||||
<source>background-color:#FFFFFF</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="313"/>
|
||||
<location filename="../src/widget.ui" line="1285"/>
|
||||
<source>Video</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="306"/>
|
||||
<location filename="../src/widget.ui" line="1258"/>
|
||||
<source>Download</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="184"/>
|
||||
<location filename="../src/widget.ui" line="1312"/>
|
||||
<source>Tools</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="265"/>
|
||||
<location filename="../src/widget.ui" line="1194"/>
|
||||
<source>Beautify</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="115"/>
|
||||
<location filename="../src/widget.ui" line="1427"/>
|
||||
<source>Music</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="129"/>
|
||||
<location filename="../src/widget.ui" line="1385"/>
|
||||
<source>Development</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="198"/>
|
||||
<location filename="../src/widget.ui" line="1251"/>
|
||||
<source>Office</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="238"/>
|
||||
<location filename="../src/widget.ui" line="1298"/>
|
||||
<source>Back to category</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="191"/>
|
||||
<location filename="../src/widget.ui" line="1332"/>
|
||||
<source>Reading</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="286"/>
|
||||
<location filename="../src/widget.ui" line="1339"/>
|
||||
<source>Others</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="296"/>
|
||||
<location filename="../src/widget.ui" line="1322"/>
|
||||
<source>Home</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="122"/>
|
||||
<location filename="../src/widget.ui" line="1346"/>
|
||||
<source>Graphics</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="279"/>
|
||||
<location filename="../src/widget.ui" line="1244"/>
|
||||
<source>Games</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="225"/>
|
||||
<location filename="../src/widget.ui" line="1201"/>
|
||||
<source>Chat</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="272"/>
|
||||
<location filename="../src/widget.ui" line="1224"/>
|
||||
<source>Network</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="211"/>
|
||||
<location filename="../src/widget.ui" line="1271"/>
|
||||
<source>Reload</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="415"/>
|
||||
<location filename="../src/widget.ui" line="125"/>
|
||||
<source>The list is currently empty. Go and download some softwares!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="447"/>
|
||||
<location filename="../src/widget.ui" line="157"/>
|
||||
<source>Open download directory</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="547"/>
|
||||
<location filename="../src/widget.cpp" line="943"/>
|
||||
<location filename="../src/widget.cpp" line="1152"/>
|
||||
<location filename="../src/widget.ui" line="257"/>
|
||||
<location filename="../src/widget.cpp" line="984"/>
|
||||
<location filename="../src/widget.cpp" line="1194"/>
|
||||
<source>Install</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="560"/>
|
||||
<location filename="../src/widget.ui" line="270"/>
|
||||
<source>Name</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="606"/>
|
||||
<location filename="../src/widget.ui" line="316"/>
|
||||
<source>ICON</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="661"/>
|
||||
<location filename="../src/widget.ui" line="371"/>
|
||||
<source>Uninstall</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="677"/>
|
||||
<location filename="../src/widget.ui" line="387"/>
|
||||
<source>Site</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="716"/>
|
||||
<location filename="../src/widget.ui" line="426"/>
|
||||
<source>Share</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="750"/>
|
||||
<location filename="../src/widget.ui" line="753"/>
|
||||
<location filename="../src/widget.ui" line="460"/>
|
||||
<location filename="../src/widget.ui" line="463"/>
|
||||
<source><html><head/><body><p>This app is developed by community user,we give this tag to honor those who contribute to the Linux Ecology</p></body></html></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="756"/>
|
||||
<location filename="../src/widget.ui" line="466"/>
|
||||
<source><html><head/><body><p><img src=":/tags/community-small.png"/></p></body></html></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="769"/>
|
||||
<location filename="../src/widget.ui" line="772"/>
|
||||
<location filename="../src/widget.ui" line="479"/>
|
||||
<location filename="../src/widget.ui" line="482"/>
|
||||
<source><html><head/><body><p>Capable to Ubuntu 22.04</p></body></html></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="775"/>
|
||||
<location filename="../src/widget.ui" line="485"/>
|
||||
<source><html><head/><body><p><img src=":/tags/ubuntu-small.png"/></p></body></html></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="788"/>
|
||||
<location filename="../src/widget.ui" line="791"/>
|
||||
<location filename="../src/widget.ui" line="498"/>
|
||||
<location filename="../src/widget.ui" line="501"/>
|
||||
<source><html><head/><body><p>Capable to deepin 20</p></body></html></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="794"/>
|
||||
<location filename="../src/widget.ui" line="504"/>
|
||||
<source><html><head/><body><p><img src=":/tags/deepin-small.png"/></p></body></html></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="807"/>
|
||||
<location filename="../src/widget.ui" line="810"/>
|
||||
<location filename="../src/widget.ui" line="517"/>
|
||||
<location filename="../src/widget.ui" line="520"/>
|
||||
<source><html><head/><body><p>Capable to UOS home 20</p></body></html></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="813"/>
|
||||
<location filename="../src/widget.ui" line="523"/>
|
||||
<source><html><head/><body><p><img src=":/tags/uos-small.png"/></p></body></html></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="826"/>
|
||||
<location filename="../src/widget.ui" line="829"/>
|
||||
<location filename="../src/widget.ui" line="536"/>
|
||||
<location filename="../src/widget.ui" line="539"/>
|
||||
<source><html><head/><body><p>This is a DTK5 app,which means it would have better effect on Deepin Desktop Environment</p></body></html></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="832"/>
|
||||
<location filename="../src/widget.ui" line="542"/>
|
||||
<source><html><head/><body><p><img src=":/tags/dtk-small.png"/></p></body></html></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="845"/>
|
||||
<location filename="../src/widget.ui" line="555"/>
|
||||
<source><html><head/><body><p>A deepin-wine2 app. Spark Store will configure the wine environment for you, so don‘t worry.</p></body></html></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="848"/>
|
||||
<location filename="../src/widget.ui" line="558"/>
|
||||
<source><html><head/><body><p>A deepin-wine2 app.If you are using ubuntu or other non-deepin distro,you should deploy deepin-wine2 by your self.</p></body></html></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="851"/>
|
||||
<location filename="../src/widget.ui" line="561"/>
|
||||
<source><html><head/><body><p><img src=":/tags/dwine2-small.png"/></p></body></html></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="864"/>
|
||||
<location filename="../src/widget.ui" line="574"/>
|
||||
<source><html><head/><body><p>A deepin-wine5 app.Spark Store will configure the wine environment for you, so don‘t worry.</p></body></html></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="867"/>
|
||||
<location filename="../src/widget.ui" line="577"/>
|
||||
<source><html><head/><body><p>A deepin-wine5 app.If you are using ubuntu or other non-deepin distro,you should deploy deepin-wine5 by your self.</p></body></html></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="870"/>
|
||||
<location filename="../src/widget.ui" line="580"/>
|
||||
<source><html><head/><body><p><img src=":/tags/dwine5-small.png"/></p></body></html></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="883"/>
|
||||
<location filename="../src/widget.ui" line="886"/>
|
||||
<location filename="../src/widget.ui" line="593"/>
|
||||
<location filename="../src/widget.ui" line="596"/>
|
||||
<source><html><head/><body><p>An Appimage to deb app.</p></body></html></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="889"/>
|
||||
<location filename="../src/widget.ui" line="599"/>
|
||||
<source><html><head/><body><p><img src=":/tags/a2d-small.png"/></p></body></html></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="912"/>
|
||||
<location filename="../src/widget.ui" line="622"/>
|
||||
<source>Request Update</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="930"/>
|
||||
<location filename="../src/widget.ui" line="640"/>
|
||||
<source>Info</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="937"/>
|
||||
<location filename="../src/widget.ui" line="647"/>
|
||||
<source><html><head/><body><p>An app store developed by community enthusiasts</p></body></html></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="979"/>
|
||||
<location filename="../src/widget.ui" line="689"/>
|
||||
<source>Screenshots</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="1142"/>
|
||||
<location filename="../src/widget.ui" line="852"/>
|
||||
<source>Line Settings</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="1158"/>
|
||||
<location filename="../src/widget.ui" line="868"/>
|
||||
<source>Choose Line:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="1181"/>
|
||||
<location filename="../src/widget.ui" line="891"/>
|
||||
<source>Refresh</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="1194"/>
|
||||
<location filename="../src/widget.ui" line="904"/>
|
||||
<source>Take effect when restart</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="1223"/>
|
||||
<location filename="../src/widget.ui" line="933"/>
|
||||
<source><html><head/><body><p>Check update for Spark Store. </p></body></html></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="1233"/>
|
||||
<location filename="../src/widget.ui" line="943"/>
|
||||
<source>Update</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="1240"/>
|
||||
<location filename="../src/widget.ui" line="950"/>
|
||||
<source>Spark Store Update</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="1260"/>
|
||||
<location filename="../src/widget.ui" line="970"/>
|
||||
<source>Server</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="1281"/>
|
||||
<location filename="../src/widget.ui" line="991"/>
|
||||
<source>Temp</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="1328"/>
|
||||
<location filename="../src/widget.ui" line="1038"/>
|
||||
<source>Clean</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="1294"/>
|
||||
<location filename="../src/widget.ui" line="1004"/>
|
||||
<source>Since the dictionary is at /tmp,It would be cleaned automatically when system reboot.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="1341"/>
|
||||
<location filename="../src/widget.ui" line="1051"/>
|
||||
<source>Size:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="1308"/>
|
||||
<location filename="../src/widget.ui" line="1018"/>
|
||||
<source>Location:/tmp/spark-store</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="1348"/>
|
||||
<location filename="../src/widget.ui" line="1058"/>
|
||||
<source>Clear Web Cache</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="1369"/>
|
||||
<location filename="../src/widget.ui" line="1079"/>
|
||||
<source>About us</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="1376"/>
|
||||
<source><html><head/><body><p>We are <span style=" font-weight:600;">NOT</span> the official team, just like you, we are just one of the many Linux/deepin system enthusiasts and users, we develop and run the &quot;Spark Store&quot;! &quot;, is to bring the community together to share useful software, or to participate in development together, so that we all use the latest and greatest software. </p><p>We don't make a profit from this, all developers and maintainers don't get paid, and we rely on the community's donations to us for most of our expenses, which we are grateful for and which allow us not to spend too much energy worrying about funding. </p><p>Our service and software are free for everyone to use, communicate, and learn, but you must comply with local laws and regulations in the process of your use, otherwise any problems have nothing to do with us. </p><p>If any part of the store infringes your rights, please tell us &lt;jifengshenmo@outlook.com&gt; we will remove the infringing content as soon as possible. </p><p>If you'd like to get involved with us too, whether you're involved in development, design, pitching or submitting work, we welcome you to join us. </p><p>QQ group:872690351<br/></p></body></html></source>
|
||||
<location filename="../src/widget.ui" line="1086"/>
|
||||
<source><html><head/><body><p>We are <span style=" font-weight:600;">NOT</span> the official team, just like you, we are just one of the many Linux/deepin system enthusiasts and users, we develop and run the &quot;Spark Store&quot;! &quot;, is to bring the community together to share useful software, or to participate in development together, so that we all use the latest and greatest software. </p><p>We don't make a profit from this, all developers and maintainers don't get paid, and we rely on the community's donations to us for most of our expenses, which we are grateful for and which allow us not to spend too much energy worrying about funding. </p><p>Our service and software are free for everyone to use, communicate, and learn, but you must comply with local laws and regulations in the process of your use, otherwise any problems have nothing to do with us. </p><p>If any part of the store infringes your rights, please tell us &lt;jifengshenmo@outlook.com&gt; we will remove the infringing content as soon as possible. </p><p>If you'd like to get involved with us too, whether you're involved in development, design, pitching or submitting work, we welcome you to join us. </p><p>Connect us on Spark IM: https://chat.shenmo.tech<br/></p></body></html></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>视频播放</source>
|
||||
<translatorcomment>Lecteurs vidéo et créateurs vidéo</translatorcomment>
|
||||
<translation type="vanished">Vidéo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>下载列表</source>
|
||||
<translation type="vanished">Liste de téléchargement</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>系统工具</source>
|
||||
<translation type="vanished">Outils</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>主题美化</source>
|
||||
<translatorcomment>Thème des icônes et autres </translatorcomment>
|
||||
<translation type="vanished">Thèmes</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>音乐欣赏</source>
|
||||
<translation type="vanished">Musique</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="148"/>
|
||||
<location filename="../src/widget.ui" line="1365"/>
|
||||
<source>icon</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>编程开发</source>
|
||||
<translation type="vanished">Développement</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>办公学习</source>
|
||||
<translation type="vanished">Bureau</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>阅读翻译</source>
|
||||
<translation type="vanished">Traduire</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>其他应用</source>
|
||||
<translation type="vanished">Autres</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>商店首页</source>
|
||||
<translation type="vanished">Accueil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>图形图像</source>
|
||||
<translation type="vanished">Images</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>游戏娱乐</source>
|
||||
<translation type="vanished">Jeux</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>社交沟通</source>
|
||||
<translation type="vanished">Chat</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>网络应用</source>
|
||||
<translation type="vanished">Réseau</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="374"/>
|
||||
<source>about:blank</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>当前下载列表为空</source>
|
||||
<translation type="vanished">La liste de téléchargement est vide</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>打开文件夹</source>
|
||||
<translation type="vanished">Ouvrir dans le gestionnaire de fichiers</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>安装</source>
|
||||
<translation type="vanished">Installer</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>卸载</source>
|
||||
<translation type="vanished">Supprimer</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>官网</source>
|
||||
<translation type="vanished">Site</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>软件名</source>
|
||||
<translation type="vanished">Nom</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="575"/>
|
||||
<location filename="../src/widget.ui" line="285"/>
|
||||
<source><html><head/><body><p><br/></p></body></html></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>图标</source>
|
||||
<translation type="vanished">Icon</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>分享</source>
|
||||
<translation type="vanished">Partager</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>详细介绍</source>
|
||||
<translation type="vanished">Détails</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source><html><head/><body><p>由社区爱好者开发的软件商店</p></body></html></source>
|
||||
<translation type="vanished"><html><head/><body><p>magasin de logiciels développé par des passionnés de la communauté</p></body></html></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>软件截图</source>
|
||||
<translation type="vanished">Captures d'écran</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>线路设置</source>
|
||||
<translation type="vanished">Line Settings</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>线路选择:</source>
|
||||
<translation type="vanished">Choisissez: </translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>刷新</source>
|
||||
<translation type="vanished">Mise à jour</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source> 重启商店后生效</source>
|
||||
<translation type="vanished">Redémarrez pour prendre effet</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source><html><head/><body><p>跳转到星火应用商店主页检测更新。</p></body></html></source>
|
||||
<translation type="vanished"><html><head/><body><p>Le rôle du serveur source est de s'assurer que le logiciel est mis à jour et prend en charge l'utilisation de l'outil apt pour obtenir le logiciel. Nous préférons généralement que vous utilisiez la première ligne comme source de mise à jour, qui est généralement la plus stable. </p></body></html></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>跳转更新</source>
|
||||
<translation type="vanished">Mettre à jour la source APT</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>星火应用商店更新检测:</source>
|
||||
<translation type="vanished">Source APT: </translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>服务器</source>
|
||||
<translation type="vanished">serveur</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>缓存目录</source>
|
||||
<translation type="vanished">Temp</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>清空</source>
|
||||
<translation type="vanished">Nettoyer</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>因为这个目录位于/tmp下,所以即使你不手动清空的话,其也将在系统重启时自动清空。</source>
|
||||
<translation type="vanished">Étant donné que ce répertoire se trouve sous /tmp, même si vous ne l'effacez pas manuellement, il sera effacé automatiquement au redémarrage du système.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>目录大小:</source>
|
||||
<translation type="vanished">Taille: </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="1301"/>
|
||||
<location filename="../src/widget.ui" line="1011"/>
|
||||
<source>0B</source>
|
||||
<translation type="unfinished">0B</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>目录位置:/tmp/spark-store</source>
|
||||
<translation type="vanished">Emplacement:/tmp/spark-store</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>关于我们</source>
|
||||
<translation type="vanished">À propos de nous</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source><html><head/><body><p>我们并不是官方团队,和你一样,我们也只是众多Linux/deepin系统爱好者和用户之中的一员,我们开发并且运营这个“Spark应用商店”,是为了让社区的朋友们一起分享好用的软件,或者一起参与开发,让大家都用到最新的,最优秀的软件。</p><p>我们并没有因此盈利,所有开发和维护人员都不会获得报酬,我们的主要支出大部分依赖于社区对我们的捐助,很感谢大家,这部分捐助让我们并不需要耗费太多精力去担心资金问题。</p><p>我们的服务和开发的软件都是免费供给大家使用,交流,学习的,但是在您的使用过程中一定要遵守当地的法律法规,否则出现任何问题和我们无关。</p><p>如果商店中任何一部分有侵犯您权益的行为,请告知我们&lt;jifengshenmo@outlook.com&gt;,我们会第一时间删除侵权内容。</p><p>如果你也想参与我们,不管是参与开发,设计,投递还是投稿作品,我们都欢迎你的加入。</p><p>QQ群:872690351<br/></p></body></html></source>
|
||||
<translation type="vanished"><html><head/><body><p>Nous ne sommes pas l'équipe officielle, tout comme vous, nous ne sommes qu'un des nombreux passionnés et utilisateurs de systèmes Linux / deepin, nous développons et gérons le "Spark Store"! ", est de rassembler la communauté pour partager des logiciels utiles, ou pour participer au développement ensemble, afin que nous utilisions tous les derniers et meilleurs logiciels. </p><p> Nous n'en tirons aucun profit, tous les développeurs et mainteneurs ne sont pas payés, et nous comptons sur les dons de la communauté pour la plupart de nos dépenses, dont nous sommes reconnaissants et qui nous permettent de ne pas dépenser trop d'énergie se soucier du financement. </p><p>Notre service et nos logiciels sont gratuits pour tout le monde à utiliser, à communiquer et à apprendre, mais vous devez vous conformer aux lois et réglementations locales dans le processus de votre utilisation, sinon tout problème n'a rien à voir avec nous. </p><p>Si une partie du magasin enfreint vos droits, veuillez nous en informer &lt;jifengshenmo@outlook.com&gt; nous retirerons le contenu en infraction dès que possible. </p><p>Si vous souhaitez également vous impliquer avec nous, que vous soyez impliqué dans le développement, la conception, le pitching ou la soumission de travaux, nous vous invitons à nous rejoindre. </p><p>QQ group:872690351<br/></p></body></html></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.cpp" line="141"/>
|
||||
<location filename="../src/widget.cpp" line="433"/>
|
||||
<location filename="../src/widget.cpp" line="438"/>
|
||||
<location filename="../src/widget.cpp" line="448"/>
|
||||
<location filename="../src/widget.cpp" line="453"/>
|
||||
<location filename="../src/widget.cpp" line="142"/>
|
||||
<location filename="../src/widget.cpp" line="435"/>
|
||||
<location filename="../src/widget.cpp" line="440"/>
|
||||
<location filename="../src/widget.cpp" line="450"/>
|
||||
<location filename="../src/widget.cpp" line="455"/>
|
||||
<source>Spark\ Store</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.cpp" line="192"/>
|
||||
<location filename="../src/widget.cpp" line="193"/>
|
||||
<source>Spark Store</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.cpp" line="193"/>
|
||||
<location filename="../src/widget.cpp" line="194"/>
|
||||
<source>Search or enter spk://</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.cpp" line="199"/>
|
||||
<location filename="../src/widget.cpp" line="200"/>
|
||||
<source>Submit App</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.cpp" line="200"/>
|
||||
<location filename="../src/widget.cpp" line="201"/>
|
||||
<source>Submit App with client(Recommanded)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.cpp" line="201"/>
|
||||
<location filename="../src/widget.cpp" line="202"/>
|
||||
<source>Settings</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.cpp" line="202"/>
|
||||
<location filename="../src/widget.cpp" line="203"/>
|
||||
<source>APP Upgrade and Install Settings</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.cpp" line="371"/>
|
||||
<location filename="../src/widget.cpp" line="373"/>
|
||||
<source>Not Exist</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.cpp" line="692"/>
|
||||
<location filename="../src/widget.cpp" line="932"/>
|
||||
<location filename="../src/widget.cpp" line="714"/>
|
||||
<location filename="../src/widget.cpp" line="973"/>
|
||||
<source>Reinstall</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.cpp" line="658"/>
|
||||
<location filename="../src/widget.cpp" line="680"/>
|
||||
<source>Failed to get the name to the file to be downloaded.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.cpp" line="739"/>
|
||||
<location filename="../src/widget.cpp" line="749"/>
|
||||
<source>Do not repeat searches!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.cpp" line="767"/>
|
||||
<source>Relative apps Not Found!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.cpp" line="747"/>
|
||||
<location filename="../src/widget.cpp" line="781"/>
|
||||
<source>Request Error: %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.cpp" line="937"/>
|
||||
<location filename="../src/widget.ui" line="1434"/>
|
||||
<location filename="../src/widget.cpp" line="978"/>
|
||||
<source>Upgrade</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.cpp" line="1124"/>
|
||||
<location filename="../src/widget.cpp" line="1166"/>
|
||||
<source>Updating, please wait...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.cpp" line="1156"/>
|
||||
<location filename="../src/widget.cpp" line="1198"/>
|
||||
<source>Uninstall succeeded</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.cpp" line="1178"/>
|
||||
<location filename="../src/widget.cpp" line="1220"/>
|
||||
<source>Temporary cache was cleaned</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.cpp" line="1270"/>
|
||||
<location filename="../src/widget.cpp" line="1312"/>
|
||||
<source>The URL has been copied to the clipboard</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
@@ -751,27 +579,6 @@ Nous sommes nés pour le changement.</translation>
|
||||
<source>Info</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>名称</source>
|
||||
<translation type="vanished">Nom</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>等待开始下载</source>
|
||||
<translatorcomment>Attendez pour téléchargerd</translatorcomment>
|
||||
<translation type="vanished">Attendez pour télécharger</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>安装</source>
|
||||
<translation type="vanished">Installer</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>取消</source>
|
||||
<translation type="vanished">Annuler</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>详情</source>
|
||||
<translation type="vanished">Détail</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/downloadlist.cpp" line="34"/>
|
||||
<source>gdebi</source>
|
||||
|
||||
@@ -12,9 +12,9 @@
|
||||
<context>
|
||||
<name>QLabel</name>
|
||||
<message>
|
||||
<location filename="../src/main.cpp" line="42"/>
|
||||
<location filename="../src/main.cpp" line="50"/>
|
||||
<location filename="../src/main.cpp" line="56"/>
|
||||
<location filename="../src/main.cpp" line="67"/>
|
||||
<location filename="../src/main.cpp" line="75"/>
|
||||
<location filename="../src/main.cpp" line="81"/>
|
||||
<source>Spark Store</source>
|
||||
<translation>Spark 应用商店</translation>
|
||||
</message>
|
||||
@@ -22,34 +22,22 @@
|
||||
<context>
|
||||
<name>QObject</name>
|
||||
<message>
|
||||
<location filename="../src/main.cpp" line="39"/>
|
||||
<location filename="../src/main.cpp" line="64"/>
|
||||
<source>We publish this program under GPL V3</source>
|
||||
<translation>本程序按GPL V3开源</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/main.cpp" line="44"/>
|
||||
<location filename="../src/main.cpp" line="69"/>
|
||||
<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>
|
||||
</message>
|
||||
<message>
|
||||
<source>Version 2.0+2</source>
|
||||
<translation type="vanished">版本: 2.0+2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source><span style=' font-size:10pt;font-weight:60;'>An appstore powered by deepin 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="vanished"><span style=' font-size:10pt;font-weight:60;'>deepin 社区驱动的一款第三方应用商店</span><br/><a href='https://www.spark-app.store/'>https://www.spark-app.store</a><br/><span style=' font-size:12pt;'>Spark developers</span></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/main.cpp" line="52"/>
|
||||
<location filename="../src/main.cpp" line="77"/>
|
||||
<source>The Spark Project</source>
|
||||
<translation>星火计划 The Spark Project</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source><span style=' font-size:10pt;font-weight:60;'>An appstore powered by deepin 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><br/>We publish this program under GPL V3</source>
|
||||
<translation type="vanished"><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><br/>本程序遵循 GPL V3 协议发布</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/main.cpp" line="64"/>
|
||||
<location filename="../src/main.cpp" line="89"/>
|
||||
<source><span style='font-size:10pt;font-weight:60;'>An appstore powered by deepin 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><br/><br/>Published under GPL V3</source>
|
||||
<translation><span style='font-size:10pt;font-weight:60;'>由 Deepin 社区出品的应用商店</span><br/><a href='https://www.spark-app.store/'>https://www.spark-app.store</a><br/><span style='font-size:12pt;'>星火商店开发组</span><br/><br/>遵循 GPL V3 协议发布</translation>
|
||||
</message>
|
||||
@@ -115,582 +103,436 @@
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="84"/>
|
||||
<location filename="../src/widget.ui" line="1179"/>
|
||||
<source>background-color:#FFFFFF</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Videos</source>
|
||||
<translation type="vanished">视频播放</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Download List</source>
|
||||
<translation type="vanished">下载列表</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="184"/>
|
||||
<location filename="../src/widget.ui" line="1312"/>
|
||||
<source>Tools</source>
|
||||
<translation>系统工具</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="265"/>
|
||||
<location filename="../src/widget.ui" line="1194"/>
|
||||
<source>Beautify</source>
|
||||
<translation>主题美化</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="115"/>
|
||||
<location filename="../src/widget.ui" line="1427"/>
|
||||
<source>Music</source>
|
||||
<translation>音乐欣赏</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Coding</source>
|
||||
<translation type="vanished">编程开发</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="198"/>
|
||||
<location filename="../src/widget.ui" line="1251"/>
|
||||
<source>Office</source>
|
||||
<translation>办公学习</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Translate</source>
|
||||
<translation type="vanished">阅读翻译</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="286"/>
|
||||
<location filename="../src/widget.ui" line="1339"/>
|
||||
<source>Others</source>
|
||||
<translation>其他应用</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>FrontPage</source>
|
||||
<translation type="vanished">商店首页</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Images</source>
|
||||
<translation type="vanished">图形图像</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="279"/>
|
||||
<location filename="../src/widget.ui" line="1244"/>
|
||||
<source>Games</source>
|
||||
<translation>游戏娱乐</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Chatting</source>
|
||||
<translation type="vanished">社交沟通</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="272"/>
|
||||
<location filename="../src/widget.ui" line="1224"/>
|
||||
<source>Network</source>
|
||||
<translation>网络应用</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="415"/>
|
||||
<location filename="../src/widget.ui" line="125"/>
|
||||
<source>The list is currently empty. Go and download some softwares!</source>
|
||||
<translation>当前下载列表为空。去下载些软件吧!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="447"/>
|
||||
<location filename="../src/widget.ui" line="157"/>
|
||||
<source>Open download directory</source>
|
||||
<translation>打开下载文件夹</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="560"/>
|
||||
<location filename="../src/widget.ui" line="270"/>
|
||||
<source>Name</source>
|
||||
<translation>软件名</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="606"/>
|
||||
<location filename="../src/widget.ui" line="316"/>
|
||||
<source>ICON</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="547"/>
|
||||
<location filename="../src/widget.cpp" line="943"/>
|
||||
<location filename="../src/widget.cpp" line="1152"/>
|
||||
<location filename="../src/widget.ui" line="257"/>
|
||||
<location filename="../src/widget.cpp" line="984"/>
|
||||
<location filename="../src/widget.cpp" line="1194"/>
|
||||
<source>Install</source>
|
||||
<translation>安装</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="313"/>
|
||||
<location filename="../src/widget.ui" line="1285"/>
|
||||
<source>Video</source>
|
||||
<translation>视频播放</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="306"/>
|
||||
<location filename="../src/widget.ui" line="1258"/>
|
||||
<source>Download</source>
|
||||
<translation>下载列表</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="191"/>
|
||||
<location filename="../src/widget.ui" line="1332"/>
|
||||
<source>Reading</source>
|
||||
<translation>阅读翻译</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="225"/>
|
||||
<location filename="../src/widget.ui" line="1201"/>
|
||||
<source>Chat</source>
|
||||
<translation>社交沟通</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="661"/>
|
||||
<location filename="../src/widget.ui" line="371"/>
|
||||
<source>Uninstall</source>
|
||||
<translation>卸载</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="677"/>
|
||||
<location filename="../src/widget.ui" line="387"/>
|
||||
<source>Site</source>
|
||||
<translation>官网</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="750"/>
|
||||
<location filename="../src/widget.ui" line="753"/>
|
||||
<location filename="../src/widget.ui" line="460"/>
|
||||
<location filename="../src/widget.ui" line="463"/>
|
||||
<source><html><head/><body><p>This app is developed by community user,we give this tag to honor those who contribute to the Linux Ecology</p></body></html></source>
|
||||
<translation><html><head/><body><p>这款应用是社区开发者开发的,我们为社区开发者颁发这款勋章以表彰他们对Linux生态的贡献</p></body></html></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="756"/>
|
||||
<location filename="../src/widget.ui" line="466"/>
|
||||
<source><html><head/><body><p><img src=":/tags/community-small.png"/></p></body></html></source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="769"/>
|
||||
<location filename="../src/widget.ui" line="772"/>
|
||||
<location filename="../src/widget.ui" line="479"/>
|
||||
<location filename="../src/widget.ui" line="482"/>
|
||||
<source><html><head/><body><p>Capable to Ubuntu 22.04</p></body></html></source>
|
||||
<translation><html><head/><body><p>支持Ubuntu 22.04</p></body></html></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="788"/>
|
||||
<location filename="../src/widget.ui" line="791"/>
|
||||
<location filename="../src/widget.ui" line="498"/>
|
||||
<location filename="../src/widget.ui" line="501"/>
|
||||
<source><html><head/><body><p>Capable to deepin 20</p></body></html></source>
|
||||
<translation><html><head/><body><p>支持deepin 20</p></body></html></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="794"/>
|
||||
<location filename="../src/widget.ui" line="504"/>
|
||||
<source><html><head/><body><p><img src=":/tags/deepin-small.png"/></p></body></html></source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="807"/>
|
||||
<location filename="../src/widget.ui" line="810"/>
|
||||
<location filename="../src/widget.ui" line="517"/>
|
||||
<location filename="../src/widget.ui" line="520"/>
|
||||
<source><html><head/><body><p>Capable to UOS home 20</p></body></html></source>
|
||||
<translation><html><head/><body><p>支持UOS家庭版 20</p></body></html></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="826"/>
|
||||
<location filename="../src/widget.ui" line="829"/>
|
||||
<location filename="../src/widget.ui" line="536"/>
|
||||
<location filename="../src/widget.ui" line="539"/>
|
||||
<source><html><head/><body><p>This is a DTK5 app,which means it would have better effect on Deepin Desktop Environment</p></body></html></source>
|
||||
<translation><html><head/><body><p>这是一款DTK5应用,请使用深度桌面环境来获得最完美的体验</p></body></html></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="832"/>
|
||||
<location filename="../src/widget.ui" line="542"/>
|
||||
<source><html><head/><body><p><img src=":/tags/dtk-small.png"/></p></body></html></source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="845"/>
|
||||
<location filename="../src/widget.ui" line="555"/>
|
||||
<source><html><head/><body><p>A deepin-wine2 app. Spark Store will configure the wine environment for you, so don‘t worry.</p></body></html></source>
|
||||
<translation>这是一个deepin-wine2应用。星火商店将会为你配置好wine环境,无需担心。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="864"/>
|
||||
<location filename="../src/widget.ui" line="574"/>
|
||||
<source><html><head/><body><p>A deepin-wine5 app.Spark Store will configure the wine environment for you, so don‘t worry.</p></body></html></source>
|
||||
<translation>这是一个deepin-wine5应用。星火商店将会为你配置好wine环境,无需担心。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="867"/>
|
||||
<location filename="../src/widget.ui" line="577"/>
|
||||
<source><html><head/><body><p>A deepin-wine5 app.If you are using ubuntu or other non-deepin distro,you should deploy deepin-wine5 by your self.</p></body></html></source>
|
||||
<translation><html><head/><body><p>这是一款deepin-wine5应用,如果你并没有在使用深度系列发行版(比如您在使用ubuntu),你需要自行配置deepin-wine5环境</p></body></html></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="883"/>
|
||||
<location filename="../src/widget.ui" line="886"/>
|
||||
<location filename="../src/widget.ui" line="593"/>
|
||||
<location filename="../src/widget.ui" line="596"/>
|
||||
<source><html><head/><body><p>An Appimage to deb app.</p></body></html></source>
|
||||
<translation><html><head/><body><p>这是一款Appimage转制应用.</p></body></html></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="889"/>
|
||||
<location filename="../src/widget.ui" line="599"/>
|
||||
<source><html><head/><body><p><img src=":/tags/a2d-small.png"/></p></body></html></source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="716"/>
|
||||
<location filename="../src/widget.ui" line="426"/>
|
||||
<source>Share</source>
|
||||
<translation>Spk分享链接</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="129"/>
|
||||
<location filename="../src/widget.ui" line="1385"/>
|
||||
<source>Development</source>
|
||||
<translation>编程开发</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Home </source>
|
||||
<translation type="vanished">商店首页</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="122"/>
|
||||
<location filename="../src/widget.ui" line="1346"/>
|
||||
<source>Graphics</source>
|
||||
<translation>图形图像</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Communication</source>
|
||||
<translation type="vanished">社交沟通</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="848"/>
|
||||
<location filename="../src/widget.ui" line="558"/>
|
||||
<source><html><head/><body><p>A deepin-wine2 app.If you are using ubuntu or other non-deepin distro,you should deploy deepin-wine2 by your self.</p></body></html></source>
|
||||
<translation><html><head/><body><p>这是一款 deepin-wine2 应用,如果你并没有在使用深度系列发行版(比如您在使用ubuntu),你需要自行配置 deepin-wine2 环境</p></body></html></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="851"/>
|
||||
<location filename="../src/widget.ui" line="561"/>
|
||||
<source><html><head/><body><p><img src=":/tags/dwine2-small.png"/></p></body></html></source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="870"/>
|
||||
<location filename="../src/widget.ui" line="580"/>
|
||||
<source><html><head/><body><p><img src=":/tags/dwine5-small.png"/></p></body></html></source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Contribute translation</source>
|
||||
<translation type="vanished">贡献翻译/应用反馈</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="930"/>
|
||||
<location filename="../src/widget.ui" line="640"/>
|
||||
<source>Info</source>
|
||||
<translation>详细</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="937"/>
|
||||
<location filename="../src/widget.ui" line="647"/>
|
||||
<source><html><head/><body><p>An app store developed by community enthusiasts</p></body></html></source>
|
||||
<translation><html><head/><body><p>由社区爱好者开发的一款应用商店</p></body></html></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="979"/>
|
||||
<location filename="../src/widget.ui" line="689"/>
|
||||
<source>Screenshots</source>
|
||||
<translation>屏幕截图</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="1142"/>
|
||||
<location filename="../src/widget.ui" line="852"/>
|
||||
<source>Line Settings</source>
|
||||
<translation>线路设置</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="1158"/>
|
||||
<location filename="../src/widget.ui" line="868"/>
|
||||
<source>Choose Line:</source>
|
||||
<translation>线路选择:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="1181"/>
|
||||
<location filename="../src/widget.ui" line="891"/>
|
||||
<source>Refresh</source>
|
||||
<translation>刷新</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Take effect when restart </source>
|
||||
<translation type="vanished">重启商店后生效</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source><html><head/><body><p>Jump to the Spark app store home page to check for updates. </p></body></html></source>
|
||||
<translation type="vanished"><html><head/><body><p>跳转到星火应用商店主页检测更新。</p></body></html></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="1233"/>
|
||||
<location filename="../src/widget.ui" line="943"/>
|
||||
<source>Update</source>
|
||||
<translation>跳转更新</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="1240"/>
|
||||
<location filename="../src/widget.ui" line="950"/>
|
||||
<source>Spark Store Update</source>
|
||||
<translation>星火应用商店更新检测</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="1260"/>
|
||||
<location filename="../src/widget.ui" line="970"/>
|
||||
<source>Server</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="1281"/>
|
||||
<location filename="../src/widget.ui" line="991"/>
|
||||
<source>Temp</source>
|
||||
<translation>缓存目录</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="1328"/>
|
||||
<location filename="../src/widget.ui" line="1038"/>
|
||||
<source>Clean</source>
|
||||
<translation>清空</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="1294"/>
|
||||
<location filename="../src/widget.ui" line="1004"/>
|
||||
<source>Since the dictionary is at /tmp,It would be cleaned automatically when system reboot.</source>
|
||||
<translation>因为这个目录位于/tmp下,所以即使你不手动清空的话,其也将在系统重启时自动清空。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="1341"/>
|
||||
<location filename="../src/widget.ui" line="1051"/>
|
||||
<source>Size:</source>
|
||||
<translation>目录大小:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="1308"/>
|
||||
<location filename="../src/widget.ui" line="1018"/>
|
||||
<source>Location:/tmp/spark-store</source>
|
||||
<translation>目录位置:/tmp/spark-store</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="1348"/>
|
||||
<location filename="../src/widget.ui" line="1058"/>
|
||||
<source>Clear Web Cache</source>
|
||||
<translation>清理网页缓存</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="1369"/>
|
||||
<location filename="../src/widget.ui" line="1079"/>
|
||||
<source>About us</source>
|
||||
<translation>关于我们</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="1376"/>
|
||||
<source><html><head/><body><p>We are <span style=" font-weight:600;">NOT</span> the official team, just like you, we are just one of the many Linux/deepin system enthusiasts and users, we develop and run the &quot;Spark Store&quot;! &quot;, is to bring the community together to share useful software, or to participate in development together, so that we all use the latest and greatest software. </p><p>We don't make a profit from this, all developers and maintainers don't get paid, and we rely on the community's donations to us for most of our expenses, which we are grateful for and which allow us not to spend too much energy worrying about funding. </p><p>Our service and software are free for everyone to use, communicate, and learn, but you must comply with local laws and regulations in the process of your use, otherwise any problems have nothing to do with us. </p><p>If any part of the store infringes your rights, please tell us &lt;jifengshenmo@outlook.com&gt; we will remove the infringing content as soon as possible. </p><p>If you'd like to get involved with us too, whether you're involved in development, design, pitching or submitting work, we welcome you to join us. </p><p>QQ group:872690351<br/></p></body></html></source>
|
||||
<translation><html><head/><body><p>我们并<span style=" font-weight:600;">不是</span>官方团队,和你一样,我们也只是众多Linux/deepin系统爱好者和用户之中的一员,我们开发并且运营这个“Spark应用商店”,是为了让社区的朋友们一起分享好用的软件,或者一起参与开发,让大家都用到最新的,最优秀的软件。</p><p>我们并没有因此盈利,所有开发和维护人员都不会获得报酬,我们的主要支出大部分依赖于社区对我们的捐助,很感谢大家,这部分捐助让我们并不需要耗费太多精力去担心资金问题。</p><p>我们的服务和开发的软件都是免费供给大家使用,交流,学习的,但是在您的使用过程中一定要遵守当地的法律法规,否则出现任何问题和我们无关。</p><p>如果商店中任何一部分有侵犯您权益的行为,请告知我们 &lt;jifengshenmo@outlook.com&gt;,我们会第一时间删除侵权内容。</p><p>如果你也想参与我们,不管是参与开发,设计,投递还是投稿作品,我们都欢迎你的加入。</p><p>QQ 群:872690351<br/></p></body></html></translation>
|
||||
<location filename="../src/widget.ui" line="1086"/>
|
||||
<source><html><head/><body><p>We are <span style=" font-weight:600;">NOT</span> the official team, just like you, we are just one of the many Linux/deepin system enthusiasts and users, we develop and run the &quot;Spark Store&quot;! &quot;, is to bring the community together to share useful software, or to participate in development together, so that we all use the latest and greatest software. </p><p>We don't make a profit from this, all developers and maintainers don't get paid, and we rely on the community's donations to us for most of our expenses, which we are grateful for and which allow us not to spend too much energy worrying about funding. </p><p>Our service and software are free for everyone to use, communicate, and learn, but you must comply with local laws and regulations in the process of your use, otherwise any problems have nothing to do with us. </p><p>If any part of the store infringes your rights, please tell us &lt;jifengshenmo@outlook.com&gt; we will remove the infringing content as soon as possible. </p><p>If you'd like to get involved with us too, whether you're involved in development, design, pitching or submitting work, we welcome you to join us. </p><p>Connect us on Spark IM: https://chat.shenmo.tech<br/></p></body></html></source>
|
||||
<translation><html><head/><body><p>我们并<span style=" font-weight:600;">不是</span>官方团队,和你一样,我们也只是众多Linux/deepin系统爱好者和用户之中的一员,我们开发并且运营这个“Spark应用商店”,是为了让社区的朋友们一起分享好用的软件,或者一起参与开发,让大家都用到最新的,最优秀的软件。</p><p>我们并没有因此盈利,所有开发和维护人员都不会获得报酬,我们的主要支出大部分依赖于社区对我们的捐助,很感谢大家,这部分捐助让我们并不需要耗费太多精力去担心资金问题。</p><p>我们的服务和开发的软件都是免费供给大家使用,交流,学习的,但是在您的使用过程中一定要遵守当地的法律法规,否则出现任何问题和我们无关。</p><p>如果商店中任何一部分有侵犯您权益的行为,请告知我们 &lt;jifengshenmo@outlook.com&gt;,我们会第一时间删除侵权内容。</p><p>如果你也想参与我们,不管是参与开发,设计,投递还是投稿作品,我们都欢迎你的加入。</p><p>在 Spark IM 联系我们: https://chat.shenmo.tech<br/></p></body></html></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="148"/>
|
||||
<location filename="../src/widget.ui" line="1365"/>
|
||||
<source>icon</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="238"/>
|
||||
<location filename="../src/widget.ui" line="1298"/>
|
||||
<source>Back to category</source>
|
||||
<translation>返回分类</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="296"/>
|
||||
<location filename="../src/widget.ui" line="1322"/>
|
||||
<source>Home</source>
|
||||
<translation>商店首页</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="211"/>
|
||||
<location filename="../src/widget.ui" line="1271"/>
|
||||
<source>Reload</source>
|
||||
<translation>刷新</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="374"/>
|
||||
<source>about:blank</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="575"/>
|
||||
<location filename="../src/widget.ui" line="285"/>
|
||||
<source><html><head/><body><p><br/></p></body></html></source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="775"/>
|
||||
<location filename="../src/widget.ui" line="485"/>
|
||||
<source><html><head/><body><p><img src=":/tags/ubuntu-small.png"/></p></body></html></source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="813"/>
|
||||
<location filename="../src/widget.ui" line="523"/>
|
||||
<source><html><head/><body><p><img src=":/tags/uos-small.png"/></p></body></html></source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="912"/>
|
||||
<location filename="../src/widget.ui" line="622"/>
|
||||
<source>Request Update</source>
|
||||
<translation>软件催更/应用反馈</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="1194"/>
|
||||
<location filename="../src/widget.ui" line="904"/>
|
||||
<source>Take effect when restart</source>
|
||||
<translation>重启商店后生效</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="1223"/>
|
||||
<location filename="../src/widget.ui" line="933"/>
|
||||
<source><html><head/><body><p>Check update for Spark Store. </p></body></html></source>
|
||||
<translation>检查星火应用商店更新</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.ui" line="1301"/>
|
||||
<location filename="../src/widget.ui" line="1011"/>
|
||||
<source>0B</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.cpp" line="192"/>
|
||||
<location filename="../src/widget.cpp" line="193"/>
|
||||
<source>Spark Store</source>
|
||||
<translation>Spark 应用商店</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.cpp" line="193"/>
|
||||
<location filename="../src/widget.cpp" line="194"/>
|
||||
<source>Search or enter spk://</source>
|
||||
<translation>搜索或打开链接</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.cpp" line="199"/>
|
||||
<location filename="../src/widget.cpp" line="200"/>
|
||||
<source>Submit App</source>
|
||||
<translation>投递应用</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.cpp" line="200"/>
|
||||
<location filename="../src/widget.cpp" line="201"/>
|
||||
<source>Submit App with client(Recommanded)</source>
|
||||
<translation>使用本地投稿器投递应用(推荐)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.cpp" line="201"/>
|
||||
<location filename="../src/widget.cpp" line="202"/>
|
||||
<source>Settings</source>
|
||||
<translation>设置</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.cpp" line="202"/>
|
||||
<location filename="../src/widget.cpp" line="203"/>
|
||||
<source>APP Upgrade and Install Settings</source>
|
||||
<translation>应用更新和安装设置</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.cpp" line="371"/>
|
||||
<location filename="../src/widget.cpp" line="373"/>
|
||||
<source>Not Exist</source>
|
||||
<translation>不存在</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Update finished</source>
|
||||
<translation type="obsolete">更新完毕</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.cpp" line="141"/>
|
||||
<location filename="../src/widget.cpp" line="433"/>
|
||||
<location filename="../src/widget.cpp" line="438"/>
|
||||
<location filename="../src/widget.cpp" line="448"/>
|
||||
<location filename="../src/widget.cpp" line="453"/>
|
||||
<location filename="../src/widget.cpp" line="142"/>
|
||||
<location filename="../src/widget.cpp" line="435"/>
|
||||
<location filename="../src/widget.cpp" line="440"/>
|
||||
<location filename="../src/widget.cpp" line="450"/>
|
||||
<location filename="../src/widget.cpp" line="455"/>
|
||||
<source>Spark\ Store</source>
|
||||
<translation>星火应用商店</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Failed to download app info. Please check internet connection.</source>
|
||||
<translation type="vanished">下载应用程序详细信息失败,请检查网络连接。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>PkgName: </source>
|
||||
<translation type="vanished">包名: </translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Version: </source>
|
||||
<translation type="vanished">版本: </translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Author: </source>
|
||||
<translation type="vanished">作者: </translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Official Site: </source>
|
||||
<translation type="vanished">官网: </translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Contributor: </source>
|
||||
<translation type="vanished">投稿者: </translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Update Time: </source>
|
||||
<translation type="vanished">更新时间: </translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Installed Size: </source>
|
||||
<translation type="vanished">大小: </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.cpp" line="692"/>
|
||||
<location filename="../src/widget.cpp" line="932"/>
|
||||
<location filename="../src/widget.cpp" line="714"/>
|
||||
<location filename="../src/widget.cpp" line="973"/>
|
||||
<source>Reinstall</source>
|
||||
<translation>重新安装</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Failed to load application icon.</source>
|
||||
<translation type="vanished">加载应用程序图标失败。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.cpp" line="658"/>
|
||||
<location filename="../src/widget.cpp" line="680"/>
|
||||
<source>Failed to get the name to the file to be downloaded.</source>
|
||||
<translation>获取安装包文件名失败。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.cpp" line="739"/>
|
||||
<location filename="../src/widget.cpp" line="749"/>
|
||||
<source>Do not repeat searches!</source>
|
||||
<translation>请勿频繁搜索!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.cpp" line="767"/>
|
||||
<source>Relative apps Not Found!</source>
|
||||
<translation>相关应用未找到!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.cpp" line="747"/>
|
||||
<location filename="../src/widget.cpp" line="781"/>
|
||||
<source>Request Error: %1</source>
|
||||
<translation>请求错误:%1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Spark store could only process spk:// links for now. The search feature is coming soon!</source>
|
||||
<translation type="vanished">目前仅支持商店专用链接的打开,搜索功能正在开发,请期待以后的版本!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.cpp" line="937"/>
|
||||
<location filename="../src/widget.ui" line="1434"/>
|
||||
<location filename="../src/widget.cpp" line="978"/>
|
||||
<source>Upgrade</source>
|
||||
<translation>升级</translation>
|
||||
<translation>软件升级</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.cpp" line="1124"/>
|
||||
<location filename="../src/widget.cpp" line="1166"/>
|
||||
<source>Updating, please wait...</source>
|
||||
<translation>正在更新,请稍候……</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Apt has reported an error. Please use apt update in terminal to locate the problem.</source>
|
||||
<translation type="vanished">更新中发生错误,请在终端使用apt update来查看错误原因。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unknown error!</source>
|
||||
<translation type="vanished">未知错误!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Yes</source>
|
||||
<translation type="vanished">是</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>No</source>
|
||||
<translation type="vanished">否</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Information for Contributors</source>
|
||||
<translation type="vanished">贡献者须知</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Currently the translation contribution is limited to English,
|
||||
and you will be redirected to our Gitee repository at which you are
|
||||
supposed to be creating pull requests to contribute app info
|
||||
translations.
|
||||
Tips:You can simply click the file to edit to create a flat pull request without create a full pull request
|
||||
Tips:You can use github account to login to Gitee
|
||||
Click yes to continue.</source>
|
||||
<translation type="vanished">目前商店仅支持应用程序英文详细信息的贡献。
|
||||
在你确认后你会被导向到我们的 Gitee 页面,
|
||||
请在此创建 Pull Request 以进行翻译贡献。
|
||||
备注:你可以直接在页面编辑以快速创建轻量级pr
|
||||
你也可以使用github账户直接登陆Gitee
|
||||
|
||||
单击“是”以继续。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Currently the translation contribution is limited to English,
|
||||
and you will be redirected to our Gitee repository at which you are
|
||||
supposed to be creating pull requests to contribute app info
|
||||
translations.
|
||||
|
||||
Click yes to continue.</source>
|
||||
<translation type="obsolete">目前商店仅支持应用程序英文详细信息的贡献。
|
||||
在你确认后你会被导向到我们的 Gitee 页面,
|
||||
请在此创建 Pull Request 以进行翻译贡献。
|
||||
备注:你可以直接在页面编辑以快速创建轻量级pr
|
||||
你也可以使用github账户直接登陆Gitee
|
||||
|
||||
单击“是”以继续。.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unknown server error!</source>
|
||||
<translation type="vanished">服务器未知错误</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.cpp" line="1156"/>
|
||||
<location filename="../src/widget.cpp" line="1198"/>
|
||||
<source>Uninstall succeeded</source>
|
||||
<translation>卸载成功</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.cpp" line="1178"/>
|
||||
<location filename="../src/widget.cpp" line="1220"/>
|
||||
<source>Temporary cache was cleaned</source>
|
||||
<translation>缓存目录已清空</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget.cpp" line="1270"/>
|
||||
<location filename="../src/widget.cpp" line="1312"/>
|
||||
<source>The URL has been copied to the clipboard</source>
|
||||
<translation>链接已复制到剪贴板</translation>
|
||||
</message>
|
||||
@@ -737,10 +579,6 @@ Click yes to continue.</source>
|
||||
<source>Info</source>
|
||||
<translation>详情</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>dpkg</source>
|
||||
<translation type="vanished">dpkg</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/downloadlist.cpp" line="32"/>
|
||||
<source>Spark Store App Installer</source>
|
||||
@@ -756,18 +594,6 @@ Click yes to continue.</source>
|
||||
<source>deepin deb installer</source>
|
||||
<translation>深度软件包安装器</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Downloaded, waiting to install</source>
|
||||
<translation type="vanished">已完成,等待安装</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Failed to download %1</source>
|
||||
<translation type="vanished">下载 %1 失败</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Download Failed,Check Your Connection</source>
|
||||
<translation type="vanished">下载失败,请检查网络连接</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/downloadlist.cpp" line="101"/>
|
||||
<source>Finished downloading %1, awaiting to install</source>
|
||||
@@ -778,10 +604,6 @@ Click yes to continue.</source>
|
||||
<source>Installing</source>
|
||||
<translation>正在安装</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Installing...</source>
|
||||
<translation type="obsolete">正在安装</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/downloadlist.cpp" line="74"/>
|
||||
<source>Downloaded. Open APP Upgrade and Install Settings to enable password-free installation</source>
|
||||
|
||||
Reference in New Issue
Block a user