Skip to content

Commit 731fb96

Browse files
committed
refactor: improve loading widget animation and structure
1. Removed background logo layer and simplified widget hierarchy 2. Replaced oscillating opacity effect with smoother breathing animation 3. Changed opacity range from full oscillation (1.0 to -0.9) to breathing effect (0.3 to 1.0) 4. Updated icon theme from "deepin_unioncode_logo" to "ide" 5. Increased animation frequency by reducing timer interval from 150ms to 50ms 6. Added proper member variables for opacity state management Log: Improved loading animation with smoother breathing effect Influence: 1. Verify loading widget displays correctly during application startup 2. Test animation smoothness and visual appeal 3. Confirm icon displays properly with new theme name 4. Check animation performance on different hardware 5. Verify loading text alignment and positioning 6. Test widget behavior during different loading scenarios refactor: 优化加载控件动画和结构 1. 移除了背景logo层,简化了控件层次结构 2. 将振荡透明度效果改为更平滑的呼吸动画 3. 将透明度范围从完全振荡(1.0到-0.9)改为呼吸效果(0.3到1.0) 4. 将图标主题从"deepin_unioncode_logo"更新为"ide" 5. 通过将定时器间隔从150ms减少到50ms来提高动画频率 6. 添加了适当的成员变量用于透明度状态管理 Log: 改进了加载动画,采用更平滑的呼吸效果 Influence: 1. 验证应用程序启动时加载控件是否正确显示 2. 测试动画流畅度和视觉效果 3. 确认图标使用新主题名称正确显示 4. 在不同硬件上检查动画性能 5. 验证加载文本的对齐和定位 6. 测试不同加载场景下控件的行为
1 parent 6262cf2 commit 731fb96

File tree

3 files changed

+36
-25
lines changed

3 files changed

+36
-25
lines changed

debian/changelog

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,12 @@
1+
deepin-unioncode (1.4.20) unstable; urgency=medium
2+
3+
* chore: remove qt6-multimedia-dev build dependency
4+
* chore: downgrade cmake minimum required version
5+
* chore: update icon installation to follow freedesktop standards
6+
* refactor: improve loading widget animation and structure
7+
8+
-- Liu Zhangjian <liuzhangjian@uniontech.com> Tue, 10 Feb 2026 13:57:55 +0800
9+
110
deepin-unioncode (1.4.19) unstable; urgency=medium
211

312
* feat: update IDE icon design and installation

src/plugins/core/gui/loadingwidget.cpp

Lines changed: 25 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,6 @@
88

99
DWIDGET_USE_NAMESPACE
1010

11-
static float opacity = 1.0;
12-
1311
loadingWidget::loadingWidget(QWidget *parent)
1412
: DWidget(parent)
1513
{
@@ -21,33 +19,36 @@ loadingWidget::loadingWidget(QWidget *parent)
2119
loadingText->setText(tr("loading..."));
2220
loadingText->setAlignment(Qt::AlignCenter);
2321

24-
vlayout->addWidget(backgroundLogo);
22+
vlayout->addWidget(logo);
2523
vlayout->addWidget(loadingText);
2624
vlayout->setAlignment(Qt::AlignCenter);
2725
}
2826

2927
void loadingWidget::setLogo()
3028
{
31-
backgroundLogo = new DLabel(this);
32-
backgroundLogo->setPixmap(QIcon::fromTheme("deepin_unioncode_backgroundLogo").pixmap(128));
33-
34-
logo = new DLabel(backgroundLogo);
35-
logo->setPixmap(QIcon::fromTheme("deepin_unioncode_logo").pixmap(128));
36-
37-
QHBoxLayout *hlayout = new QHBoxLayout;
38-
hlayout->addWidget(logo);
39-
backgroundLogo->setLayout(hlayout);
40-
41-
opacityEffect = new QGraphicsOpacityEffect(this);
42-
43-
connect(&timer, &QTimer::timeout, this, [=]() {
44-
opacity -= 0.1;
45-
46-
if (opacity < -0.9)
47-
opacity = 1.0;
48-
49-
opacityEffect->setOpacity(qAbs(opacity));
50-
logo->setGraphicsEffect(opacityEffect);
29+
logo = new DLabel(this);
30+
logo->setPixmap(QIcon::fromTheme("ide").pixmap(128));
31+
logo->setAlignment(Qt::AlignCenter);
32+
33+
opacityEffect = new QGraphicsOpacityEffect(logo);
34+
logo->setGraphicsEffect(opacityEffect);
35+
36+
connect(&timer, &QTimer::timeout, this, [this]() {
37+
// 透明度在 0.3 到 1.0 之间循环变化,产生呼吸效果
38+
if (fadeOut) {
39+
logoOpacity -= 0.05;
40+
if (logoOpacity <= 0.3) {
41+
logoOpacity = 0.3;
42+
fadeOut = false;
43+
}
44+
} else {
45+
logoOpacity += 0.05;
46+
if (logoOpacity >= 1.0) {
47+
logoOpacity = 1.0;
48+
fadeOut = true;
49+
}
50+
}
51+
opacityEffect->setOpacity(logoOpacity);
5152
});
52-
timer.start(150);
53+
timer.start(50);
5354
}

src/plugins/core/gui/loadingwidget.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,11 @@ class loadingWidget : public DTK_WIDGET_NAMESPACE::DWidget
2121
void setLogo();
2222

2323
DTK_WIDGET_NAMESPACE::DLabel *logo { nullptr };
24-
DTK_WIDGET_NAMESPACE::DLabel *backgroundLogo { nullptr };
2524
DTK_WIDGET_NAMESPACE::DLabel *loadingText { nullptr };
2625
QGraphicsOpacityEffect *opacityEffect { nullptr };
2726
QTimer timer;
27+
float logoOpacity { 1.0 };
28+
bool fadeOut { true };
2829
};
2930

3031
#endif // LOADINGWIDGET_H

0 commit comments

Comments
 (0)