4.0 代号:Flamescion

Merge pull request  from shenmo/dev
This commit is contained in:
shenmo 2022-12-19 11:04:38 +00:00 committed by Gitee
commit 58f590560e
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
15 changed files with 271 additions and 66 deletions

@ -0,0 +1,82 @@
# 关于编写 "描述主体结构预览说明" 的规范
1. 主体结构预览
一般以 `tree` 命令进行获取目录结构进行展示所需要描述的预览内容。
2. 对主体结构中的内容单独说明
并使用所用语言进行非侵入式独立描述,而不是在代码中填充说明与注释。
在单行描述中,尽量不超过您认为最大的字符数量宽度,可以收缩内容的重要性。
在此种说明文档中,尽量使用您所描述的对象支持的代码注释,而不是以白底黑字进行描述。
对于规范的全部:主体结构 + 单独内容中进行简单(而不是简少)的说明。
一个简单的例子,例如: 有关项目源代码结构的预览说明
- 项目结构预览
```
.
├── assets
├── debian
├── DOCS
├── patchs
├── src
├── tool
└── translations
10 directories, 9 files
```
- 来自 debian 目录的说明
```shell
# 将此项目进行 debian 的标志,基于 debian 系列的发行版可对包含
# 此种目录的开源项目进行构建 deb 软件包。
# 1. 构建软件包(打包)
# 执行 dpkg-buildpackage 命令以尝试构建此软件包
dpkg-buildpackage
# 如果构建将会在上级目录中产生一个 deb而源代码目录不会有任何变化。
# 如果出现以下内容可忽视,仅需要查看是否已成功构建软件包:
# gpg: 已跳过 "" 无效的用户ID
# gpg: ...: clear-sign failed: 无效的用户ID
# dpkg-buildpackage: error: failed to sign .dsc file
```
- 来自 patchs 目录的说明
```shell
# 一种用于可扩展的补丁,主要目的是为项目提供可选的应用方案,而不是直接堆砌到
# 当前项目的分支中。您可以认为所有分支都是主线分支。
# 例如:
# 主线稳定分支: master
# 主线开发分支: dev
# 主线其它: ...
# 注意:
# 当您认为您所提交的内容并不会为主线带来 bug fix 之类的内容,请使用补丁。
# 当您所提交的内容会带来不可预知的问题的时候,或会改变目前主线的开发模式时,
# 此种方式可确保您提交的方案可被任意时间被弃用,而不是由其它维护者耗费精力
# 去试图移除您提交的内容,而不是等待由提交者进行新的维护。
```
- 来自其它的内容...可随时由任何人进行补充
- 一些在关此种预览描述的文档
```shell
# 此种描述还将出现在 `src/README.md` 的描述中。
# 当然,我预期会由其它维护者进行移动到 `DOCS` 之下。
# 另外在 `patchs/zinface-community-cmake-build-system.patch` 补丁文件中,
# 也随附过一个简要的文档内容,而它是记录了 `Spark` 为名的构建模式。
# 在未应用此补丁时,将不会出现在任何地方。
```

6
debian/changelog vendored

@ -1,3 +1,9 @@
spark-store (4.0.0) stable; urgency=medium
* feat: 修复了成吨的bug后开始正式版
-- shenmo <shenmo@spark-app.store> Fri, 30 Jan 2022 00:00:00 +0800
spark-store (4.0.0~test2) stable; urgency=medium
* feat: 修复了成吨的bug后开始公测

@ -1,7 +1,7 @@
From 8e13ffee97dc4ec1f9b6af8e7d712050ddc6d79a Mon Sep 17 00:00:00 2001
From 9d1714ec7ceb3748bd151af059389ed10d37e676 Mon Sep 17 00:00:00 2001
From: zinface <zinface@163.com>
Date: Sun, 11 Dec 2022 22:27:23 +0800
Subject: [PATCH 1/4] =?UTF-8?q?repo:=20=E4=B8=80=E6=AC=A1=E6=80=A7?=
Subject: [PATCH 1/5] =?UTF-8?q?repo:=20=E4=B8=80=E6=AC=A1=E6=80=A7?=
=?UTF-8?q?=E5=AF=BC=E5=85=A5=20spark=20=E9=AA=A8=E6=9E=B6=E4=BB=A5?=
=?UTF-8?q?=E5=8F=98=E4=B8=BA=20cmake=20=E6=9E=84=E5=BB=BA?=
MIME-Version: 1.0
@ -1789,10 +1789,10 @@ index 0000000..0fa070b
2.20.1
From f59d5f82b2ae22b538b84afbab1961b6bc03f826 Mon Sep 17 00:00:00 2001
From 1e1cb19995536d74626960ae863bf4c5cd9e3a4b Mon Sep 17 00:00:00 2001
From: zinface <zinface@163.com>
Date: Sun, 11 Dec 2022 22:37:26 +0800
Subject: [PATCH 2/4] =?UTF-8?q?repo:=20=E5=A4=84=E7=90=86=20deb=20?=
Subject: [PATCH 2/5] =?UTF-8?q?repo:=20=E5=A4=84=E7=90=86=20deb=20?=
=?UTF-8?q?=E5=AE=89=E8=A3=85=E8=84=9A=E6=9C=AC=E7=9A=84=E9=97=AE=E9=A2=98?=
=?UTF-8?q?=EF=BC=8C=E5=AE=8C=E6=88=90=20cmake=20=E5=8C=96=E6=9E=84?=
=?UTF-8?q?=E5=BB=BA?=
@ -1856,10 +1856,10 @@ index 2ab24e7..38ad2d7 100644
2.20.1
From 0ca1321e26e08819a89bc8c1b0abfccd8c6084c1 Mon Sep 17 00:00:00 2001
From 4f07b34bc268bc3c49ef1c51c524d50ccbbf6d07 Mon Sep 17 00:00:00 2001
From: zinface <zinface@163.com>
Date: Mon, 12 Dec 2022 00:50:01 +0800
Subject: [PATCH 3/4] =?UTF-8?q?docs:=20=E6=B7=BB=E5=8A=A0=20Spark=20?=
Subject: [PATCH 3/5] =?UTF-8?q?docs:=20=E6=B7=BB=E5=8A=A0=20Spark=20?=
=?UTF-8?q?=E6=9E=84=E5=BB=BA=20=E4=B8=8E=20CMake=20=E6=9E=84=E5=BB=BA?=
=?UTF-8?q?=E7=B3=BB=E7=BB=9F=E9=A2=84=E8=A7=88=E6=96=87=E6=A1=A3?=
MIME-Version: 1.0
@ -2184,10 +2184,10 @@ index 0000000..a807009
2.20.1
From ed6cee35b0d8d0a30f44c67f8fa7f4eee926477d Mon Sep 17 00:00:00 2001
From cb59139fcfd74b530a14f2a987aa38d28d403225 Mon Sep 17 00:00:00 2001
From: zinface <zinface@163.com>
Date: Thu, 15 Dec 2022 19:59:46 +0800
Subject: [PATCH 4/4] =?UTF-8?q?repo:=20=E6=9B=B4=E6=96=B0=E7=94=A8?=
Subject: [PATCH 4/5] =?UTF-8?q?repo:=20=E6=9B=B4=E6=96=B0=E7=94=A8?=
=?UTF-8?q?=E4=BA=8E=20Qt5=20Svg=20=E4=BE=9D=E8=B5=96=E7=9A=84=E6=9E=84?=
=?UTF-8?q?=E5=BB=BA=E5=86=85=E5=AE=B9?=
MIME-Version: 1.0
@ -2235,3 +2235,50 @@ index b56399f..67e29b6 100644
--
2.20.1
From 72e5ca47cef718cdbd4ea45134d574874fb43ba9 Mon Sep 17 00:00:00 2001
From: zinface <zinface@163.com>
Date: Mon, 19 Dec 2022 02:58:17 +0800
Subject: [PATCH 5/5] =?UTF-8?q?repo:=20=E6=9B=B4=E6=96=B0=E7=94=A8?=
=?UTF-8?q?=E4=BA=8E=E6=94=AF=E6=8C=81=20BaseWidgetOpacity=20=E5=9F=BA?=
=?UTF-8?q?=E7=A1=80=E7=B1=BB=E7=9A=84=E6=9E=84=E5=BB=BA?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
CMakeLists.txt | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 14530e1..b5e32d8 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -24,11 +24,13 @@ spark_add_library_realpaths(
src/dbus
src/utils+dbus
src/backend+utils
+ src/widgets/base
src/widgets/common+backend
src/widgets+common
src/pages+widgets
)
+target_link_dtk(base)
target_link_qt5_dbus(dbus)
target_link_qt5_Concurrent(common)
target_link_qt5_Concurrent(backend)
@@ -38,9 +40,9 @@ target_link_qt5_WebEngineWidgets(common)
spark_add_executable_path(${PROJECT_NAME} src
${QRC_SOURCES} ${SPARK_QM_TRANSLATIONS}
)
+target_link_base(${PROJECT_NAME})
target_link_dbus(${PROJECT_NAME})
target_link_pages(${PROJECT_NAME})
-target_link_dtk(${PROJECT_NAME})
spark_add_executable_path(spark-dstore-patch src/spark-dstore-patch)
--
2.20.1

30
src/README.md Normal file

@ -0,0 +1,30 @@
# 有关 src 下的一些改进预览
> 1. 主体结构预览
> 2. 主体结构中的内容单独说明
> 并使用所用语言进行非侵入式独立描述,而不是在代码中填充说明与注释。
>
> 这是简单的预览说明规范
- widget/base 结构
```
src/widgets/base/
├── basewidgetopacity.cpp
└── basewidgetopacity.h
0 directories, 2 files
```
- 来源于 widget/base 的说明
```c++
// BaseWidgetOpacity 是一个提供了淡出/淡入动画的基础类:
// 1. closeEvent 窗口关闭时进行淡出动画
// 此前在 MainWindow 中实现的淡出动画将由 BaseWidgetOpacity 来实现。
// 此前 MainWindow 原有的 DBlurEffectWidget 父类将移交至 BaseWidgetOpacity 继承。
// 注意:
// 如果 MainWindow 在未来重写 closeEvent 事件时将可能丢失 BaseWidgetOpacity 中的淡出效果
```

@ -13,7 +13,7 @@ DWIDGET_USE_NAMESPACE
int main(int argc, char *argv[])
{
// Get build time
static const QString version = "Version 4.0.0~test2";
static const QString version = "Version 4.0.0";
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");
@ -59,7 +59,7 @@ int main(int argc, char *argv[])
DAboutDialog dialog;
a.setAboutDialog(&dialog);
dialog.setLicense(QObject::tr("We publish this program under GPL V3"));
dialog.setVersion(DApplication::buildVersion(readConfig.value("build/version").toString()+"-"+readConfig.value("build/time").toString()));
dialog.setVersion(DApplication::buildVersion(readConfig.value("build/version").toString()+"-"+"Flamescion"+"-"+readConfig.value("build/time").toString()));
dialog.setProductIcon(QIcon::fromTheme("spark-store")); // 设置Logo
dialog.setProductName(QLabel::tr("Spark Store"));
dialog.setDescription(

@ -11,7 +11,7 @@
#define AppPageSettings 3
MainWindow::MainWindow(QWidget *parent)
: DBlurEffectWidget(parent)
: BaseWidgetOpacity(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
@ -299,32 +299,3 @@ void MainWindow::on_pushButton_14_clicked()
});
}
}
/// @brief 窗口关闭事件
/// @param event
void MainWindow::closeEvent(QCloseEvent *event)
{
if (!closeWindowAnimation) {
QPropertyAnimation *animation = new QPropertyAnimation(this, "windowOpacity");
animation->setEasingCurve(QEasingCurve::OutQuart);
animation->setDuration(500);
animation->setStartValue(1.0);
animation->setEndValue(0.0);
QObject::connect(animation, &QPropertyAnimation::valueChanged, this, [=](const QVariant &value){
this->update();
// setWindowTitle(QString("ヾ(⌒∇⌒*)See You♪ - %1%").arg(int(value.toFloat() * 100)));
});
QObject::connect(animation, &QPropertyAnimation::finished, this, [=](){
closeWindowAnimation = true;
this->close();
});
animation->start();
event->ignore();
} else {
event->accept();
}
}

@ -2,7 +2,6 @@
#define MAINWINDOWDTK_H
#include <DMainWindow>
#include <DBlurEffectWidget>
#include <DTitlebar>
#include <DSearchEdit>
#include <QGraphicsDropShadowEffect>
@ -12,6 +11,7 @@
#include <QDir>
#include <QDesktopServices>
#include "widgets/base/basewidgetopacity.h"
#include "widgets/downloadlistwidget.h"
#include "widgets/common/progressbutton.h"
#include "utils/widgetanimation.h"
@ -23,7 +23,7 @@ namespace Ui {
class MainWindow;
}
class MainWindow : public DBlurEffectWidget
class MainWindow : public BaseWidgetOpacity
{
Q_OBJECT
@ -53,10 +53,6 @@ private slots:
void onGetUrl(const QString &url);
void on_pushButton_14_clicked();
// QWidget interface
protected:
bool closeWindowAnimation = false;
void closeEvent(QCloseEvent *event) override;
};
#endif // MAINWINDOWDTK_H

@ -196,30 +196,28 @@ void AppIntoPage::openUrl(QUrl url)
void AppIntoPage::isDownloading(QUrl url)
{
if(dw->getUrlList().lastIndexOf(url) == -1)
{
if (dw->getUrlList().lastIndexOf(url) == -1) {
ui->downloadButton->setEnabled(true);
return;
}else{
} else {
ui->downloadButton->setEnabled(false);
}
if(dw->getDIList()[dw->getUrlList().lastIndexOf(url)]->download == 2)
{
ui->pushButton_3->hide();
if (dw->getDIList()[dw->getUrlList().lastIndexOf(url)]->download == 2) {
ui->downloadButton->setEnabled(true);
ui->downloadButton->setText(tr("Download"));
}
if(dw->getDIList()[dw->getUrlList().lastIndexOf(url)]->download == 1)
{
if (dw->getDIList()[dw->getUrlList().lastIndexOf(url)]->download == 1) {
ui->downloadButton->setEnabled(true);
ui->downloadButton->setText(tr("Install"));
}
if(dw->getDIList()[dw->getUrlList().lastIndexOf(url)]->isInstall)
{
if (dw->getDIList()[dw->getUrlList().lastIndexOf(url)]->isInstall) {
ui->downloadButton->setEnabled(false);
ui->downloadButton->setText(tr("Installing"));
return;
}
if(dw->getDIList()[dw->getUrlList().lastIndexOf(url)]->download == 3)
{
if (dw->getDIList()[dw->getUrlList().lastIndexOf(url)]->download == 3) {
ui->downloadButton->setEnabled(true);
ui->downloadButton->setText(tr("Reinstall"));
ui->downloadButton->show();

@ -58,7 +58,8 @@ SOURCES += \
backend/downloadworker.cpp \
pages/appintopage.cpp \
widgets/big_image.cpp \
backend/image_show.cpp
backend/image_show.cpp \
widgets/base/basewidgetopacity.cpp
HEADERS += \
dbus/dbussparkstoreservice.h \
@ -79,7 +80,8 @@ HEADERS += \
backend/downloadworker.h \
pages/appintopage.h \
widgets/big_image.h \
backend/image_show.h
backend/image_show.h \
widgets/base/basewidgetopacity.h
FORMS += \
mainwindow-dtk.ui \

@ -25,7 +25,7 @@ void WidgetAnimation::widgetShake(QWidget *pWidget, int nRange)
pAnimation->start(QAbstractAnimation::DeleteWhenStopped);
}
void WidgetAnimation::widgetOpacity(QWidget *pWidget, bool isAppear)
QPropertyAnimation* WidgetAnimation::createWidgetOpacity(QWidget *pWidget, bool isAppear)
{
QPropertyAnimation *animation = new QPropertyAnimation(pWidget, "windowOpacity", pWidget);
//设置动画效果
@ -42,6 +42,11 @@ void WidgetAnimation::widgetOpacity(QWidget *pWidget, bool isAppear)
animation->setKeyValueAt(0, 1);
animation->setKeyValueAt(1, 0);
}
// 开始动画
animation->start();
return animation;
}
void WidgetAnimation::widgetOpacity(QWidget *pWidget, bool isAppear)
{
// 开始动画
createWidgetOpacity(pWidget, isAppear)->start();
}

@ -10,6 +10,8 @@ class WidgetAnimation
public:
WidgetAnimation();
static void widgetShake(QWidget *pWidget, int nRange);
static QPropertyAnimation* createWidgetOpacity(QWidget *pWidget, bool isAppear);
static void widgetOpacity(QWidget *pWidget, bool isAppear);
};

@ -0,0 +1,38 @@
#include "basewidgetopacity.h"
#include <QCloseEvent>
#include <QPropertyAnimation>
BaseWidgetOpacity::BaseWidgetOpacity(QWidget *parent) : DBlurEffectWidget(parent)
{
// WidgetAnimation::widgetOpacity(this,true);
}
/// @brief 窗口关闭事件
/// @param event
void BaseWidgetOpacity::closeEvent(QCloseEvent *event)
{
if (!closeWindowAnimation) {
closeWindowAnimation = true;
QPropertyAnimation *animation = new QPropertyAnimation(this, "windowOpacity");
animation->setEasingCurve(QEasingCurve::OutQuart);
animation->setDuration(500);
animation->setStartValue(1.0);
animation->setEndValue(0.0);
QObject::connect(animation, &QPropertyAnimation::valueChanged, this, [=](const QVariant &value){
this->update();
// setWindowTitle(QString("ヾ(⌒∇⌒*)See You♪ - %1%").arg(int(value.toFloat() * 100)));
});
QObject::connect(animation, &QPropertyAnimation::finished, this, [=](){
this->close();
});
animation->start();
event->ignore();
} else {
event->accept();
}
}

@ -0,0 +1,24 @@
#ifndef BASEWIDGETOPACITY_H
#define BASEWIDGETOPACITY_H
#include <DBlurEffectWidget>
DWIDGET_USE_NAMESPACE
class BaseWidgetOpacity : public DBlurEffectWidget
{
Q_OBJECT
public:
explicit BaseWidgetOpacity(QWidget *parent = nullptr);
signals:
public slots:
// QWidget interface
protected:
bool closeWindowAnimation = false;
void closeEvent(QCloseEvent *event) override;
};
#endif // BASEWIDGETOPACITY_H

@ -164,11 +164,11 @@ void DownloadItem::install(int t)
ui->widget_spinner->hide();
DownloadItem::isInstall = false;
emit finished();
});
emit finished();
// emit finished();
qDebug()<<ui->label_filename->text().toUtf8();
}
}
void DownloadItem::on_pushButton_install_clicked()

@ -53,10 +53,14 @@ DownloadListWidget::DownloadListWidget(QWidget *parent) :
DownloadListWidget::~DownloadListWidget()
{
downloadController->stopDownload();
delete downloadController;
if (downloadController) {
downloadController->stopDownload();
downloadController->deleteLater();
}
delete ui;
}
void DownloadListWidget::clearItem()
{
ui->listWidget->vScrollBar->scrollTop();