diff -Nru qt5-ukui-platformtheme-4.1.0.0/debian/changelog qt5-ukui-platformtheme-4.1.0.0/debian/changelog
--- qt5-ukui-platformtheme-4.1.0.0/debian/changelog	2024-11-08 09:49:00.000000000 +0800
+++ qt5-ukui-platformtheme-4.1.0.0/debian/changelog	2025-02-12 15:01:00.000000000 +0800
@@ -1,3 +1,13 @@
+qt5-ukui-platformtheme (4.1.0.0-ok54) nile; urgency=medium
+
+  * 改动:
+    BUG号: #IAY3M0 任务栏声音网络页签悬浮效果异常
+    需求号:无
+    其他改动:五
+    影响域:无
+
+ -- wuruiwen <wuruiwen@kylinos.cn>  Wed, 12 Feb 2025 15:01:00 +0800
+
 qt5-ukui-platformtheme (4.1.0.0-ok53) nile; urgency=medium
 
   * 改动:
diff -Nru qt5-ukui-platformtheme-4.1.0.0/debian/patches/0077-.patch qt5-ukui-platformtheme-4.1.0.0/debian/patches/0077-.patch
--- qt5-ukui-platformtheme-4.1.0.0/debian/patches/0077-.patch	1970-01-01 08:00:00.000000000 +0800
+++ qt5-ukui-platformtheme-4.1.0.0/debian/patches/0077-.patch	2025-02-12 15:01:00.000000000 +0800
@@ -0,0 +1,124 @@
+From: =?utf-8?b?5p2O5p+v?= <like1@kylinos.cn>
+Date: Wed, 27 Nov 2024 20:39:35 +0800
+Subject: =?utf-8?b?5a6M5oiQ5Li76aKY5qGG5p625Y2V5YWD5rWL6K+V5qGG5p625p6E5bu6?=
+
+---
+ CMakeLists.txt                   |  1 +
+ test/CMakeLists.txt              |  3 +++
+ test/auto-test/CMakeLists.txt    | 31 ++++++++++++++++++++++++++
+ test/auto-test/test-settings.cpp | 48 ++++++++++++++++++++++++++++++++++++++++
+ 4 files changed, 83 insertions(+)
+ create mode 100644 test/auto-test/CMakeLists.txt
+ create mode 100644 test/auto-test/test-settings.cpp
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 47ef06a..ce2a998 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -6,3 +6,4 @@ add_subdirectory(qt5-ukui-platformtheme)
+ add_subdirectory(ukui-qqc2-style)
+ add_subdirectory(ukui-qml-style-helper)
+ add_subdirectory(test)
++enable_testing()
+diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
+index c659fa4..fe698e6 100644
+--- a/test/CMakeLists.txt
++++ b/test/CMakeLists.txt
+@@ -7,3 +7,6 @@ add_subdirectory(region-blur)
+ add_subdirectory(system-settings)
+ add_subdirectory(tabwidget)
+ add_subdirectory(mps-style-application)
++add_subdirectory(auto-test)
++
++enable_testing()
+diff --git a/test/auto-test/CMakeLists.txt b/test/auto-test/CMakeLists.txt
+new file mode 100644
+index 0000000..0e3fe9b
+--- /dev/null
++++ b/test/auto-test/CMakeLists.txt
+@@ -0,0 +1,31 @@
++set(CMAKE_AUTOMOC on)
++
++# 查找Qt组件
++find_package(QT NAMES Qt6 Qt5 COMPONENTS Gui Test DBus Qml Widgets REQUIRED)
++find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Gui Test DBus Qml Widgets REQUIRED)
++
++# 查找PkgConfig工具
++find_package(PkgConfig REQUIRED)
++
++# 设置库文件名变量
++include_directories(../../libqt5-ukui-style)
++
++# 将库文件路径添加到库搜索路径中
++link_directories(${LIBRARY_DIR})
++
++# 添加可执行文件test-settings
++add_executable(test-settings
++    test-settings.cpp)
++
++include_directories("/usr/lib/x86_64-linux-gnu/qt5/plugins/platformthemes")
++
++# 链接Qt组件到可执行文件test-settings
++target_link_libraries(test-settings PRIVATE Qt${QT_VERSION_MAJOR}::Test
++    Qt${QT_VERSION_MAJOR}::DBus
++    Qt${QT_VERSION_MAJOR}::Gui
++    Qt5::Widgets
++    qt5-ukui-style)
++
++# 添加测试用例
++add_test(NAME test-settings COMMAND test-settings)
++
+diff --git a/test/auto-test/test-settings.cpp b/test/auto-test/test-settings.cpp
+new file mode 100644
+index 0000000..9dbee3a
+--- /dev/null
++++ b/test/auto-test/test-settings.cpp
+@@ -0,0 +1,48 @@
++/*
++ *  * Copyright (C) 2024, KylinSoft Co., Ltd.
++ *  *
++ *  * This program is free software: you can redistribute it and/or modify
++ *  * it 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.
++ *  *
++ *  * This program is distributed in the hope that it will be useful,
++ *  * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ *  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ *  * GNU General Public License for more details.
++ *  *
++ *  * You should have received a copy of the GNU General Public License
++ *  * along with this program.  If not, see <https://www.gnu.org/licenses/>.
++ *  *
++ *  * Authors: like <like1@kylinos.cn>
++ *
++ */
++#include <QtTest>
++#include <dlfcn.h>
++
++#include <dlfcn.h> // 用于动态加载库函数的头文件
++#include "effects/highlight-effect.h"
++
++// 定义函数指针类型,与库中函数的签名匹配
++typedef void (*FunctionInLibType)(void);
++
++// 测试用例类,继承自QObject
++class LibFunctionTest : public QObject
++{
++    Q_OBJECT
++public:
++
++private slots:
++    // 测试调用库中函数的功能
++    void testFunctionInLib()
++    {
++        QWidget w;
++
++        HighLightEffect::setSkipEffect(&w, true);
++    }
++};
++
++// 定义测试用例入口点setSkipEffect
++QTEST_MAIN(LibFunctionTest)
++
++#include "test-settings.moc"
diff -Nru qt5-ukui-platformtheme-4.1.0.0/debian/patches/0078-pc.patch qt5-ukui-platformtheme-4.1.0.0/debian/patches/0078-pc.patch
--- qt5-ukui-platformtheme-4.1.0.0/debian/patches/0078-pc.patch	1970-01-01 08:00:00.000000000 +0800
+++ qt5-ukui-platformtheme-4.1.0.0/debian/patches/0078-pc.patch	2025-02-12 15:01:00.000000000 +0800
@@ -0,0 +1,28 @@
+From: =?utf-8?b?6LCt6Z2Z?= <tanjing@kylinos.cn>
+Date: Mon, 9 Dec 2024 23:35:56 +0800
+Subject: =?utf-8?b?5bmz5p2/44CBcGPmqKHlvI/liIfmjaLlk43lupTlh73mlbDmlLnkuLo=?=
+ =?utf-8?b?5qe95Ye95pWw?=
+
+---
+ ukui-styles/ukui-style-plugin.h | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/ukui-styles/ukui-style-plugin.h b/ukui-styles/ukui-style-plugin.h
+index 6ee6041..99c57f5 100644
+--- a/ukui-styles/ukui-style-plugin.h
++++ b/ukui-styles/ukui-style-plugin.h
+@@ -46,9 +46,13 @@ public:
+ 
+     const QStringList blackList();
+ 
++
++public Q_SLOTS:
++    void tableModeChanged(bool isTableMode);
++
+ protected:
+     void onSystemPaletteChanged();
+-    void tableModeChanged(bool isTableMode);
++
+ 
+ private:
+     QString m_current_style_name;
diff -Nru qt5-ukui-platformtheme-4.1.0.0/debian/patches/0079-Translated-using-Weblate-Vietnamese.patch qt5-ukui-platformtheme-4.1.0.0/debian/patches/0079-Translated-using-Weblate-Vietnamese.patch
--- qt5-ukui-platformtheme-4.1.0.0/debian/patches/0079-Translated-using-Weblate-Vietnamese.patch	1970-01-01 08:00:00.000000000 +0800
+++ qt5-ukui-platformtheme-4.1.0.0/debian/patches/0079-Translated-using-Weblate-Vietnamese.patch	2025-02-12 15:01:00.000000000 +0800
@@ -0,0 +1,749 @@
+From: KevinDuan <duankaiwen@kylinos.cn>
+Date: Tue, 11 Feb 2025 08:50:28 +0000
+Subject: Translated using Weblate (Vietnamese)
+
+Currently translated at 100.0% (63 of 63 strings)
+
+Translation: openkylin-nile-new/qt5-ukui-platformtheme
+Translate-URL: http://weblate.openkylin.top/projects/openkylin-nile-new/qt5-ukui-platformtheme/vi/
+---
+ translations/qt5-ukui-platformtheme_ar.ts | 361 ++++++++++++++++++++++++++++++
+ translations/qt5-ukui-platformtheme_vi.ts | 361 ++++++++++++++++++++++++++++++
+ 2 files changed, 722 insertions(+)
+ create mode 100644 translations/qt5-ukui-platformtheme_ar.ts
+ create mode 100644 translations/qt5-ukui-platformtheme_vi.ts
+
+diff --git a/translations/qt5-ukui-platformtheme_ar.ts b/translations/qt5-ukui-platformtheme_ar.ts
+new file mode 100644
+index 0000000..d2242b2
+--- /dev/null
++++ b/translations/qt5-ukui-platformtheme_ar.ts
+@@ -0,0 +1,361 @@
++<?xml version="1.0" encoding="utf-8"?>
++<!DOCTYPE TS>
++<TS version="2.1" language="ar">
++<context>
++    <name>MainWindow</name>
++    <message>
++        <location filename="../test/filedialog/mainwindow.ui" line="14"/>
++        <location filename="../test/highlighted-icon-button/mainwindow.ui" line="14"/>
++        <location filename="../test/mps-style-application/mainwindow.ui" line="14"/>
++        <location filename="../test/system-settings/mainwindow.ui" line="14"/>
++        <source>MainWindow</source>
++        <translation>النافذة الرئيسية</translation>
++    </message>
++    <message>
++        <location filename="../test/filedialog/mainwindow.ui" line="30"/>
++        <source>test open</source>
++        <translation>اختبار مفتوح</translation>
++    </message>
++    <message>
++        <location filename="../test/filedialog/mainwindow.ui" line="37"/>
++        <source>directory</source>
++        <translation>دليل</translation>
++    </message>
++    <message>
++        <location filename="../test/filedialog/mainwindow.ui" line="47"/>
++        <source>selected uri</source>
++        <translation>URI محدد</translation>
++    </message>
++    <message>
++        <location filename="../test/filedialog/mainwindow.ui" line="54"/>
++        <source>test show</source>
++        <translation>عرض الاختبار</translation>
++    </message>
++    <message>
++        <location filename="../test/filedialog/mainwindow.ui" line="64"/>
++        <source>test exec</source>
++        <translation>اختبار التنفيذ</translation>
++    </message>
++    <message>
++        <location filename="../test/filedialog/mainwindow.ui" line="71"/>
++        <source>test save</source>
++        <translation>اختبار الحفظ</translation>
++    </message>
++    <message>
++        <location filename="../test/filedialog/mainwindow.ui" line="78"/>
++        <source>test static open</source>
++        <translation>اختبار ثابت مفتوح</translation>
++    </message>
++    <message>
++        <location filename="../test/highlighted-icon-button/mainwindow.ui" line="30"/>
++        <location filename="../test/mps-style-application/mainwindow.ui" line="36"/>
++        <source>PushButton</source>
++        <translation>زر الضغط</translation>
++    </message>
++    <message>
++        <location filename="../test/highlighted-icon-button/mainwindow.ui" line="47"/>
++        <source>use auto highlight icon</source>
++        <translation>استخدام أيقونة التمييز التلقائي</translation>
++    </message>
++    <message>
++        <location filename="../test/highlighted-icon-button/mainwindow.ui" line="54"/>
++        <location filename="../test/mps-style-application/mainwindow.ui" line="43"/>
++        <source>...</source>
++        <translation>...</translation>
++    </message>
++    <message>
++        <location filename="../test/highlighted-icon-button/mainwindow.ui" line="72"/>
++        <source>highlightOnly</source>
++        <translation>تسليط الضوئنافقط</translation>
++    </message>
++    <message>
++        <location filename="../test/highlighted-icon-button/mainwindow.ui" line="77"/>
++        <source>bothDefaultAndHighlight</source>
++        <translation>كلاهما الافتراضي والتمييز</translation>
++    </message>
++    <message>
++        <location filename="../test/mps-style-application/mainwindow.ui" line="50"/>
++        <source>RadioButton</source>
++        <translation>زر الراديو</translation>
++    </message>
++    <message>
++        <location filename="../test/system-settings/mainwindow.ui" line="21"/>
++        <source>style</source>
++        <translation>نمط</translation>
++    </message>
++    <message>
++        <location filename="../test/system-settings/mainwindow.ui" line="31"/>
++        <source>icon</source>
++        <translation>رمز</translation>
++    </message>
++    <message>
++        <location filename="../test/system-settings/mainwindow.ui" line="41"/>
++        <source>menu opacity</source>
++        <translation>عتامة القائمة</translation>
++    </message>
++    <message>
++        <location filename="../test/system-settings/mainwindow.ui" line="55"/>
++        <source>font</source>
++        <translation>الخط</translation>
++    </message>
++</context>
++<context>
++    <name>MessageBox</name>
++    <message>
++        <location filename="../qt5-ukui-platformtheme/widget/messagebox/message-box.cpp" line="97"/>
++        <source>Close</source>
++        <translation>غلق</translation>
++    </message>
++</context>
++<context>
++    <name>QApplication</name>
++    <message>
++        <location filename="../qt5-ukui-platformtheme/widget/messagebox/message-box.h" line="272"/>
++        <source>Executable &apos;%1&apos; requires Qt %2, found Qt %3.</source>
++        <translation>يتطلب الملف القابل للتنفيذ &apos;٪1&apos; Qt٪2، تم العثور على Qt٪3.</translation>
++    </message>
++    <message>
++        <location filename="../qt5-ukui-platformtheme/widget/messagebox/message-box.h" line="274"/>
++        <source>Incompatible Qt Library Error</source>
++        <translation>خطأ مكتبة Qt غير متوافق</translation>
++    </message>
++</context>
++<context>
++    <name>QDialogButtonBox</name>
++    <message>
++        <location filename="../qt5-ukui-platformtheme/widget/messagebox/message-box.cpp" line="362"/>
++        <location filename="../qt5-ukui-platformtheme/widget/messagebox/message-box.cpp" line="1090"/>
++        <source>OK</source>
++        <translation>موافق</translation>
++    </message>
++</context>
++<context>
++    <name>QMessageBox</name>
++    <message>
++        <location filename="../qt5-ukui-platformtheme/widget/messagebox/message-box.cpp" line="418"/>
++        <location filename="../qt5-ukui-platformtheme/widget/messagebox/message-box.cpp" line="881"/>
++        <location filename="../qt5-ukui-platformtheme/widget/messagebox/message-box.cpp" line="1517"/>
++        <source>Show Details...</source>
++        <translation>عرض التفاصيل...</translation>
++    </message>
++    <message>
++        <location filename="../qt5-ukui-platformtheme/widget/messagebox/message-box.cpp" line="881"/>
++        <location filename="../qt5-ukui-platformtheme/widget/messagebox/message-box.cpp" line="1517"/>
++        <source>Hide Details...</source>
++        <translation>إخفاء التفاصيل...</translation>
++    </message>
++</context>
++<context>
++    <name>QObject</name>
++    <message>
++        <location filename="../qt5-ukui-filedialog/ui_kyfiledialog.cpp" line="259"/>
++        <source>File Name</source>
++        <translation>اسم الملف</translation>
++    </message>
++    <message>
++        <location filename="../qt5-ukui-filedialog/ui_kyfiledialog.cpp" line="263"/>
++        <source>Modified Date</source>
++        <translation>تاريخ التعديل</translation>
++    </message>
++    <message>
++        <location filename="../qt5-ukui-filedialog/ui_kyfiledialog.cpp" line="267"/>
++        <source>File Type</source>
++        <translation>نوع الملف</translation>
++    </message>
++    <message>
++        <location filename="../qt5-ukui-filedialog/ui_kyfiledialog.cpp" line="271"/>
++        <source>File Size</source>
++        <translation>حجم الملف</translation>
++    </message>
++    <message>
++        <location filename="../qt5-ukui-filedialog/ui_kyfiledialog.cpp" line="275"/>
++        <source>Original Path</source>
++        <translation>المسار الأصلي</translation>
++    </message>
++    <message>
++        <location filename="../qt5-ukui-filedialog/ui_kyfiledialog.cpp" line="284"/>
++        <source>Descending</source>
++        <translation>تنازلي</translation>
++    </message>
++    <message>
++        <location filename="../qt5-ukui-filedialog/ui_kyfiledialog.cpp" line="289"/>
++        <source>Ascending</source>
++        <translation>تصاعدي</translation>
++    </message>
++    <message>
++        <location filename="../qt5-ukui-filedialog/ui_kyfiledialog.cpp" line="295"/>
++        <source>Use global sorting</source>
++        <translation>استخدام الفرز العمومي</translation>
++    </message>
++    <message>
++        <location filename="../qt5-ukui-filedialog/ui_kyfiledialog.cpp" line="315"/>
++        <source>List View</source>
++        <translation>عرض القائمة</translation>
++    </message>
++    <message>
++        <location filename="../qt5-ukui-filedialog/ui_kyfiledialog.cpp" line="316"/>
++        <source>Icon View</source>
++        <translation>عرض الأيقونة</translation>
++    </message>
++    <message>
++        <location filename="../qt5-ukui-platformtheme/widget/messagebox/message-box.cpp" line="730"/>
++        <source>Close</source>
++        <translation>غلق</translation>
++    </message>
++</context>
++<context>
++    <name>UKUI::TabWidget::DefaultSlideAnimatorFactory</name>
++    <message>
++        <location filename="../libqt5-ukui-style/animations/tabwidget/ukui-tabwidget-default-slide-animator-factory.h" line="50"/>
++        <source>Default Slide</source>
++        <translation>الشريحة الافتراضية</translation>
++    </message>
++    <message>
++        <location filename="../libqt5-ukui-style/animations/tabwidget/ukui-tabwidget-default-slide-animator-factory.h" line="51"/>
++        <source>Let tab widget switch with a slide animation.</source>
++        <translation>اسمح لعنصر واجهة مستخدم علامة التبويب بالتبديل باستخدام حركة شريحة.</translation>
++    </message>
++</context>
++<context>
++    <name>UKUIFileDialog::KyFileDialogHelper</name>
++    <message>
++        <location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="2706"/>
++        <source>Open File</source>
++        <translation>افتح ملف</translation>
++    </message>
++    <message>
++        <location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="2707"/>
++        <source>Save File</source>
++        <translation>حفظ الملف</translation>
++    </message>
++    <message>
++        <location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="2720"/>
++        <source>All Files (*)</source>
++        <translation>جميع الملفات (*)</translation>
++    </message>
++</context>
++<context>
++    <name>UKUIFileDialog::KyNativeFileDialog</name>
++    <message>
++        <location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="221"/>
++        <source>Go Back</source>
++        <translation>الرجوع للخلف</translation>
++    </message>
++    <message>
++        <location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="228"/>
++        <source>Go Forward</source>
++        <translation>المضي قدما</translation>
++    </message>
++    <message>
++        <location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="234"/>
++        <source>Cd Up</source>
++        <translation>القرص المضغوط</translation>
++    </message>
++    <message>
++        <location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="241"/>
++        <source>Search</source>
++        <translation>بحث</translation>
++    </message>
++    <message>
++        <location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="249"/>
++        <source>View Type</source>
++        <translation>نوع العرض</translation>
++    </message>
++    <message>
++        <location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="260"/>
++        <source>Sort Type</source>
++        <translation>نوع الفرز</translation>
++    </message>
++    <message>
++        <location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="265"/>
++        <location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="378"/>
++        <source>Maximize</source>
++        <translation>تعظيم</translation>
++    </message>
++    <message>
++        <location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="279"/>
++        <source>Close</source>
++        <translation>غلق</translation>
++    </message>
++    <message>
++        <location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="375"/>
++        <source>Restore</source>
++        <translation>يستعيد</translation>
++    </message>
++    <message>
++        <location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="987"/>
++        <source>Name</source>
++        <translation>اسم</translation>
++    </message>
++    <message>
++        <location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="990"/>
++        <location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="1578"/>
++        <source>Open</source>
++        <translation>مفتوح</translation>
++    </message>
++    <message>
++        <location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="991"/>
++        <location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="1000"/>
++        <source>Cancel</source>
++        <translation>إلغاء الأمر</translation>
++    </message>
++    <message>
++        <location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="995"/>
++        <source>Save as</source>
++        <translation>حفظ باسم</translation>
++    </message>
++    <message>
++        <location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="997"/>
++        <source>New Folder</source>
++        <translation>مجلد جديد</translation>
++    </message>
++    <message>
++        <location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="999"/>
++        <location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="1582"/>
++        <source>Save</source>
++        <translation>أنقذ</translation>
++    </message>
++    <message>
++        <location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="1035"/>
++        <location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="1036"/>
++        <location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="1038"/>
++        <source>Directories</source>
++        <translation>الدلائل</translation>
++    </message>
++    <message>
++        <location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="1227"/>
++        <source>Warning</source>
++        <translation>تحذير</translation>
++    </message>
++    <message>
++        <location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="1227"/>
++        <source>exist, are you sure replace?</source>
++        <translation>موجودة ، هل أنت متأكد من استبدالها؟</translation>
++    </message>
++    <message>
++        <location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="1920"/>
++        <source>NewFolder</source>
++        <translation>NewFolder</translation>
++    </message>
++    <message>
++        <location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="2208"/>
++        <source>Undo</source>
++        <translation>تراجع</translation>
++    </message>
++    <message>
++        <location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="2215"/>
++        <source>Redo</source>
++        <translation>اعاده</translation>
++    </message>
++    <message>
++        <location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="2414"/>
++        <source>warn</source>
++        <translation>حذر</translation>
++    </message>
++    <message>
++        <location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="2414"/>
++        <source>This operation is not supported.</source>
++        <translation>هذه العملية غير مدعومة.</translation>
++    </message>
++</context>
++</TS>
+diff --git a/translations/qt5-ukui-platformtheme_vi.ts b/translations/qt5-ukui-platformtheme_vi.ts
+new file mode 100644
+index 0000000..17da46d
+--- /dev/null
++++ b/translations/qt5-ukui-platformtheme_vi.ts
+@@ -0,0 +1,361 @@
++<?xml version="1.0" encoding="utf-8"?>
++<!DOCTYPE TS>
++<TS version="2.1" language="vi">
++<context>
++    <name>MainWindow</name>
++    <message>
++        <location filename="../test/filedialog/mainwindow.ui" line="14"/>
++        <location filename="../test/highlighted-icon-button/mainwindow.ui" line="14"/>
++        <location filename="../test/mps-style-application/mainwindow.ui" line="14"/>
++        <location filename="../test/system-settings/mainwindow.ui" line="14"/>
++        <source>MainWindow</source>
++        <translation>Cửa sổ chính</translation>
++    </message>
++    <message>
++        <location filename="../test/filedialog/mainwindow.ui" line="30"/>
++        <source>test open</source>
++        <translation>Thử nghiệm mở</translation>
++    </message>
++    <message>
++        <location filename="../test/filedialog/mainwindow.ui" line="37"/>
++        <source>directory</source>
++        <translation>thư mục</translation>
++    </message>
++    <message>
++        <location filename="../test/filedialog/mainwindow.ui" line="47"/>
++        <source>selected uri</source>
++        <translation>URI đã chọn</translation>
++    </message>
++    <message>
++        <location filename="../test/filedialog/mainwindow.ui" line="54"/>
++        <source>test show</source>
++        <translation>chương trình thử nghiệm</translation>
++    </message>
++    <message>
++        <location filename="../test/filedialog/mainwindow.ui" line="64"/>
++        <source>test exec</source>
++        <translation>Kiểm tra exec</translation>
++    </message>
++    <message>
++        <location filename="../test/filedialog/mainwindow.ui" line="71"/>
++        <source>test save</source>
++        <translation>Lưu thử nghiệm</translation>
++    </message>
++    <message>
++        <location filename="../test/filedialog/mainwindow.ui" line="78"/>
++        <source>test static open</source>
++        <translation>Kiểm tra tĩnh mở</translation>
++    </message>
++    <message>
++        <location filename="../test/highlighted-icon-button/mainwindow.ui" line="30"/>
++        <location filename="../test/mps-style-application/mainwindow.ui" line="36"/>
++        <source>PushButton</source>
++        <translation>Nút bấm</translation>
++    </message>
++    <message>
++        <location filename="../test/highlighted-icon-button/mainwindow.ui" line="47"/>
++        <source>use auto highlight icon</source>
++        <translation>Sử dụng biểu tượng tự động đánh dấu</translation>
++    </message>
++    <message>
++        <location filename="../test/highlighted-icon-button/mainwindow.ui" line="54"/>
++        <location filename="../test/mps-style-application/mainwindow.ui" line="43"/>
++        <source>...</source>
++        <translation>...</translation>
++    </message>
++    <message>
++        <location filename="../test/highlighted-icon-button/mainwindow.ui" line="72"/>
++        <source>highlightOnly</source>
++        <translation>highlightChỉ</translation>
++    </message>
++    <message>
++        <location filename="../test/highlighted-icon-button/mainwindow.ui" line="77"/>
++        <source>bothDefaultAndHighlight</source>
++        <translation>cả haiDefaultAndHighlight</translation>
++    </message>
++    <message>
++        <location filename="../test/mps-style-application/mainwindow.ui" line="50"/>
++        <source>RadioButton</source>
++        <translation>Nút radio</translation>
++    </message>
++    <message>
++        <location filename="../test/system-settings/mainwindow.ui" line="21"/>
++        <source>style</source>
++        <translation>phong cách</translation>
++    </message>
++    <message>
++        <location filename="../test/system-settings/mainwindow.ui" line="31"/>
++        <source>icon</source>
++        <translation>biểu tượng</translation>
++    </message>
++    <message>
++        <location filename="../test/system-settings/mainwindow.ui" line="41"/>
++        <source>menu opacity</source>
++        <translation>Độ mờ của menu</translation>
++    </message>
++    <message>
++        <location filename="../test/system-settings/mainwindow.ui" line="55"/>
++        <source>font</source>
++        <translation>phông</translation>
++    </message>
++</context>
++<context>
++    <name>MessageBox</name>
++    <message>
++        <location filename="../qt5-ukui-platformtheme/widget/messagebox/message-box.cpp" line="97"/>
++        <source>Close</source>
++        <translation>Đóng</translation>
++    </message>
++</context>
++<context>
++    <name>QApplication</name>
++    <message>
++        <location filename="../qt5-ukui-platformtheme/widget/messagebox/message-box.h" line="272"/>
++        <source>Executable &apos;%1&apos; requires Qt %2, found Qt %3.</source>
++        <translation>Tệp thực thi &apos;%1&apos; yêu cầu Qt %2, tìm thấy Qt %3.</translation>
++    </message>
++    <message>
++        <location filename="../qt5-ukui-platformtheme/widget/messagebox/message-box.h" line="274"/>
++        <source>Incompatible Qt Library Error</source>
++        <translation>Lỗi thư viện Qt không tương thích</translation>
++    </message>
++</context>
++<context>
++    <name>QDialogButtonBox</name>
++    <message>
++        <location filename="../qt5-ukui-platformtheme/widget/messagebox/message-box.cpp" line="362"/>
++        <location filename="../qt5-ukui-platformtheme/widget/messagebox/message-box.cpp" line="1090"/>
++        <source>OK</source>
++        <translation>OK</translation>
++    </message>
++</context>
++<context>
++    <name>QMessageBox</name>
++    <message>
++        <location filename="../qt5-ukui-platformtheme/widget/messagebox/message-box.cpp" line="418"/>
++        <location filename="../qt5-ukui-platformtheme/widget/messagebox/message-box.cpp" line="881"/>
++        <location filename="../qt5-ukui-platformtheme/widget/messagebox/message-box.cpp" line="1517"/>
++        <source>Show Details...</source>
++        <translation>Hiển thị chi tiết...</translation>
++    </message>
++    <message>
++        <location filename="../qt5-ukui-platformtheme/widget/messagebox/message-box.cpp" line="881"/>
++        <location filename="../qt5-ukui-platformtheme/widget/messagebox/message-box.cpp" line="1517"/>
++        <source>Hide Details...</source>
++        <translation>Ẩn chi tiết...</translation>
++    </message>
++</context>
++<context>
++    <name>QObject</name>
++    <message>
++        <location filename="../qt5-ukui-filedialog/ui_kyfiledialog.cpp" line="259"/>
++        <source>File Name</source>
++        <translation>Tên tập tin</translation>
++    </message>
++    <message>
++        <location filename="../qt5-ukui-filedialog/ui_kyfiledialog.cpp" line="263"/>
++        <source>Modified Date</source>
++        <translation>Ngày sửa đổi</translation>
++    </message>
++    <message>
++        <location filename="../qt5-ukui-filedialog/ui_kyfiledialog.cpp" line="267"/>
++        <source>File Type</source>
++        <translation>Loại tệp</translation>
++    </message>
++    <message>
++        <location filename="../qt5-ukui-filedialog/ui_kyfiledialog.cpp" line="271"/>
++        <source>File Size</source>
++        <translation>Kích thước tệp</translation>
++    </message>
++    <message>
++        <location filename="../qt5-ukui-filedialog/ui_kyfiledialog.cpp" line="275"/>
++        <source>Original Path</source>
++        <translation>Đường dẫn ban đầu</translation>
++    </message>
++    <message>
++        <location filename="../qt5-ukui-filedialog/ui_kyfiledialog.cpp" line="284"/>
++        <source>Descending</source>
++        <translation>Giảm dần</translation>
++    </message>
++    <message>
++        <location filename="../qt5-ukui-filedialog/ui_kyfiledialog.cpp" line="289"/>
++        <source>Ascending</source>
++        <translation>Tăng dần</translation>
++    </message>
++    <message>
++        <location filename="../qt5-ukui-filedialog/ui_kyfiledialog.cpp" line="295"/>
++        <source>Use global sorting</source>
++        <translation>Sử dụng sắp xếp toàn cầu</translation>
++    </message>
++    <message>
++        <location filename="../qt5-ukui-filedialog/ui_kyfiledialog.cpp" line="315"/>
++        <source>List View</source>
++        <translation>Chế độ xem danh sách</translation>
++    </message>
++    <message>
++        <location filename="../qt5-ukui-filedialog/ui_kyfiledialog.cpp" line="316"/>
++        <source>Icon View</source>
++        <translation>Chế độ xem biểu tượng</translation>
++    </message>
++    <message>
++        <location filename="../qt5-ukui-platformtheme/widget/messagebox/message-box.cpp" line="730"/>
++        <source>Close</source>
++        <translation>Đóng</translation>
++    </message>
++</context>
++<context>
++    <name>UKUI::TabWidget::DefaultSlideAnimatorFactory</name>
++    <message>
++        <location filename="../libqt5-ukui-style/animations/tabwidget/ukui-tabwidget-default-slide-animator-factory.h" line="50"/>
++        <source>Default Slide</source>
++        <translation>Trang trình bày mặc định</translation>
++    </message>
++    <message>
++        <location filename="../libqt5-ukui-style/animations/tabwidget/ukui-tabwidget-default-slide-animator-factory.h" line="51"/>
++        <source>Let tab widget switch with a slide animation.</source>
++        <translation>Hãy để tiện ích tab chuyển đổi với hoạt ảnh trang chiếu.</translation>
++    </message>
++</context>
++<context>
++    <name>UKUIFileDialog::KyFileDialogHelper</name>
++    <message>
++        <location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="2706"/>
++        <source>Open File</source>
++        <translation>Mở tập tin</translation>
++    </message>
++    <message>
++        <location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="2707"/>
++        <source>Save File</source>
++        <translation>Lưu tập tin</translation>
++    </message>
++    <message>
++        <location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="2720"/>
++        <source>All Files (*)</source>
++        <translation>Tất cả các tệp (*)</translation>
++    </message>
++</context>
++<context>
++    <name>UKUIFileDialog::KyNativeFileDialog</name>
++    <message>
++        <location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="221"/>
++        <source>Go Back</source>
++        <translation>Quay lại</translation>
++    </message>
++    <message>
++        <location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="228"/>
++        <source>Go Forward</source>
++        <translation>Tiếp tục</translation>
++    </message>
++    <message>
++        <location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="234"/>
++        <source>Cd Up</source>
++        <translation>Cd Up</translation>
++    </message>
++    <message>
++        <location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="241"/>
++        <source>Search</source>
++        <translation>Tìm kiếm</translation>
++    </message>
++    <message>
++        <location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="249"/>
++        <source>View Type</source>
++        <translation>Loại xem</translation>
++    </message>
++    <message>
++        <location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="260"/>
++        <source>Sort Type</source>
++        <translation>Loại sắp xếp</translation>
++    </message>
++    <message>
++        <location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="265"/>
++        <location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="378"/>
++        <source>Maximize</source>
++        <translation>Tối đa hóa</translation>
++    </message>
++    <message>
++        <location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="279"/>
++        <source>Close</source>
++        <translation>Đóng</translation>
++    </message>
++    <message>
++        <location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="375"/>
++        <source>Restore</source>
++        <translation>Khôi phục</translation>
++    </message>
++    <message>
++        <location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="987"/>
++        <source>Name</source>
++        <translation>Tên</translation>
++    </message>
++    <message>
++        <location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="990"/>
++        <location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="1578"/>
++        <source>Open</source>
++        <translation>Mở</translation>
++    </message>
++    <message>
++        <location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="991"/>
++        <location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="1000"/>
++        <source>Cancel</source>
++        <translation>Hủy</translation>
++    </message>
++    <message>
++        <location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="995"/>
++        <source>Save as</source>
++        <translation>Lưu dưới dạng</translation>
++    </message>
++    <message>
++        <location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="997"/>
++        <source>New Folder</source>
++        <translation>Thư mục mới</translation>
++    </message>
++    <message>
++        <location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="999"/>
++        <location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="1582"/>
++        <source>Save</source>
++        <translation>Cứu</translation>
++    </message>
++    <message>
++        <location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="1035"/>
++        <location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="1036"/>
++        <location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="1038"/>
++        <source>Directories</source>
++        <translation>Thư mục</translation>
++    </message>
++    <message>
++        <location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="1227"/>
++        <source>Warning</source>
++        <translation>Cảnh báo</translation>
++    </message>
++    <message>
++        <location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="1227"/>
++        <source>exist, are you sure replace?</source>
++        <translation>tồn tại, bạn có chắc chắn thay thế không?</translation>
++    </message>
++    <message>
++        <location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="1920"/>
++        <source>NewFolder</source>
++        <translation>Thư mục mới</translation>
++    </message>
++    <message>
++        <location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="2208"/>
++        <source>Undo</source>
++        <translation>Hoàn tác</translation>
++    </message>
++    <message>
++        <location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="2215"/>
++        <source>Redo</source>
++        <translation>Redo</translation>
++    </message>
++    <message>
++        <location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="2414"/>
++        <source>warn</source>
++        <translation>cảnh báo</translation>
++    </message>
++    <message>
++        <location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="2414"/>
++        <source>This operation is not supported.</source>
++        <translation>Hoạt động này không được hỗ trợ.</translation>
++    </message>
++</context>
++</TS>
diff -Nru qt5-ukui-platformtheme-4.1.0.0/debian/patches/0080-BUG-IAY3M0-fix-the-abnormal-hover-effect-of-the-ukui.patch qt5-ukui-platformtheme-4.1.0.0/debian/patches/0080-BUG-IAY3M0-fix-the-abnormal-hover-effect-of-the-ukui.patch
--- qt5-ukui-platformtheme-4.1.0.0/debian/patches/0080-BUG-IAY3M0-fix-the-abnormal-hover-effect-of-the-ukui.patch	1970-01-01 08:00:00.000000000 +0800
+++ qt5-ukui-platformtheme-4.1.0.0/debian/patches/0080-BUG-IAY3M0-fix-the-abnormal-hover-effect-of-the-ukui.patch	2025-02-12 15:01:00.000000000 +0800
@@ -0,0 +1,347 @@
+From: wuruiwen <wuruiwen@kylinos.cn>
+Date: Wed, 12 Feb 2025 17:01:33 +0800
+Subject: BUG#IAY3M0,
+ fix the abnormal hover effect of the ukui-volume-control-applet-qt and
+ kylin-nm tabs
+
+---
+ .../qt5-config-style-ukui/themeconfig/default.json |   4 +-
+ .../ukui-config-style-parameters.cpp               |   9 +-
+ .../qt5-config-style-ukui/ukui-config-style.cpp    | 213 +++++++++++++++++----
+ 3 files changed, 189 insertions(+), 37 deletions(-)
+
+diff --git a/ukui-styles/qt5-config-style-ukui/themeconfig/default.json b/ukui-styles/qt5-config-style-ukui/themeconfig/default.json
+index b34f25c..3f3c1be 100644
+--- a/ukui-styles/qt5-config-style-ukui/themeconfig/default.json
++++ b/ukui-styles/qt5-config-style-ukui/themeconfig/default.json
+@@ -449,7 +449,7 @@
+                 "WidgetBackgroundBrush"  : {"value": "Base_at",           "type": "paletterole"},
+                 "TabBarBackgroundBrush"  : {"value": "Window_at",         "type": "paletterole"},
+                 "TabBarDefaultBrush"     : {"value": "Window_at",         "type": "paletterole"},
+-                "TabBarHoverBrush"       : {"value": "0, 0, 0, 0.05",     "type": "color"},
++                "TabBarHoverBrush"       : {"value": "Window_at",         "type": "paletterole"},
+                 "TabBarSelectBrush"      : {"value": "Base_at",           "type": "paletterole"},
+                 "TabBarClickBrush"       : {"value": "Base_at",           "type": "paletterole"},
+                 "TabBarFocusPen"         : {"value": "HighLight_at",      "type": "paletterole"}
+@@ -908,7 +908,7 @@
+                 "WidgetBackgroundBrush"  : {"value": "Base_at",           "type": "paletterole"},
+                 "TabBarBackgroundBrush"  : {"value": "Window_at",         "type": "paletterole"},
+                 "TabBarDefaultBrush"     : {"value": "Window_at",         "type": "paletterole"},
+-                "TabBarHoverBrush"       : {"value": "255, 255, 255, 0.15","type": "color"},
++                "TabBarHoverBrush"       : {"value": "Window_at",         "type": "paletterole"},
+                 "TabBarSelectBrush"      : {"value": "Base_at",           "type": "paletterole"},
+                 "TabBarClickBrush"       : {"value": "Base_at",           "type": "paletterole"},
+                 "TabBarFocusPen"         : {"value": "HighLight_at",      "type": "paletterole"}
+diff --git a/ukui-styles/qt5-config-style-ukui/ukui-config-style-parameters.cpp b/ukui-styles/qt5-config-style-ukui/ukui-config-style-parameters.cpp
+index d929484..14de118 100644
+--- a/ukui-styles/qt5-config-style-ukui/ukui-config-style-parameters.cpp
++++ b/ukui-styles/qt5-config-style-ukui/ukui-config-style-parameters.cpp
+@@ -137,7 +137,6 @@ void UKUIConfigStyleParameters::initialDefaultPaletteColor(QString colorPath, bo
+         m_readCfg->deleteLater();
+         m_readCfg = nullptr;
+     }
+-
+     m_readCfg = new ReadThemeConfig(colorPath, isDark);
+     m_adjustColorRules = m_readCfg->getColorValueAdjustRules() == "HSL" ? AdjustColorRules::HSL : AdjustColorRules::DefaultRGB;
+     UKUIColorTheme::PaletteColorCfg paletteColorCfg = m_readCfg->paletteColorCfg();
+@@ -247,8 +246,9 @@ void UKUIConfigStyleParameters::initPalette(bool isDark)
+     cDebug << "homelocation:" << QStandardPaths::writableLocation(QStandardPaths::HomeLocation);
+     QString cfgPath = QStandardPaths::writableLocation(QStandardPaths::HomeLocation) +
+             HomeCFGColorPath + cfgName();
+-    if(!QFile::exists(cfgPath))
++    if (!QFile::exists(cfgPath)) {
+         cfgPath = ColorPath + cfgName();
++    }
+     initialDefaultPaletteColor(cfgPath, isDark);
+ }
+ 
+@@ -3891,7 +3891,7 @@ void UKUIConfigStyleParameters::getDefaultToolTipParameters(ConfigToolTipParamet
+     p->toolTipBackgroundBrush = m_ToolTipParameters.toolTipBackgroundBrush;
+     p->toolTipBackgroundPen   = m_ToolTipParameters.toolTipBackgroundPen  ;
+ }
+-
++//解析、初始化TabBar相关颜色
+ void UKUIConfigStyleParameters::initConfigTabWidgetParameters(bool isDark, const QStyleOption *option, const QWidget *widget)
+ {
+     QPalette palette = option ? option->palette : m_stylePalette;
+@@ -3927,6 +3927,9 @@ void UKUIConfigStyleParameters::initConfigTabWidgetParameters(bool isDark, const
+             linearGradient.setColorAt(0, startColor);
+             linearGradient.setColorAt(1, endColor);
+             tabBarHoverBrush = QBrush(linearGradient);
++        } else { //非渐变色类型解析
++            QColor targetColor = palette.color(QPalette::Active,QPalette::BrightText);
++            tabBarHoverBrush = QBrush(configMixColor(tabBarHoverBrush.color(),targetColor,0.1));
+         }
+         break;
+     case AdjustColorRules::HSL:{
+diff --git a/ukui-styles/qt5-config-style-ukui/ukui-config-style.cpp b/ukui-styles/qt5-config-style-ukui/ukui-config-style.cpp
+index cdf9e85..202ebfe 100644
+--- a/ukui-styles/qt5-config-style-ukui/ukui-config-style.cpp
++++ b/ukui-styles/qt5-config-style-ukui/ukui-config-style.cpp
+@@ -235,7 +235,7 @@ UKUIConfigStyle::UKUIConfigStyle(bool dark, bool useDefault, QString type) : QPr
+ 
+     if (m_style_name == "ukui-default") {
+         m_default_palette = true;
+-    } else if (m_style_name == "ukui-dark") {
++    } else if (m_style_name == "ukui-dark") {//根据系统切换的深浅主题,初始化 m_drak_palette
+         m_drak_palette = true;
+     }
+ 
+@@ -264,8 +264,9 @@ UKUIConfigStyle::UKUIConfigStyle(bool dark, bool useDefault, QString type) : QPr
+         }
+     }
+ 
+-    if(m_widget_theme == "")
++    if (m_widget_theme == "") {
+         m_widget_theme == "default";
++    }
+ 
+     sp = new UKUIConfigStyleParameters(this, isUseDarkPalette(), m_widget_theme);
+ 
+@@ -5161,7 +5162,7 @@ void UKUIConfigStyle::drawControl(QStyle::ControlElement element, const QStyleOp
+         }
+         break;
+     }
+-
++    //绘制TabBar形状
+     case CE_TabBarTabShape:
+     {
+         if (const QStyleOptionTab *tab = qstyleoption_cast<const QStyleOptionTab *>(option)) {
+@@ -5178,7 +5179,9 @@ void UKUIConfigStyle::drawControl(QStyle::ControlElement element, const QStyleOp
+ 
+             switch (tab->shape) {
+             case QTabBar::RoundedNorth:
++            {
+                 break;
++            }
+             case QTabBar::RoundedSouth:
+             {
+                 rotMatrix.rotate(180);
+@@ -5227,6 +5230,7 @@ void UKUIConfigStyle::drawControl(QStyle::ControlElement element, const QStyleOp
+ 
+             int tabOverlap = proxy()->pixelMetric(PM_TabBarTabOverlap, option, widget);
+             int TabBarTab_Radius = sp->m_TabWidgetParameters.radius;
++            //qDebug() << "sp->m_TabWidgetParameters.radius = " << sp->m_TabWidgetParameters.radius; 默认 == 6
+             int moveWidth = 0;
+             if(widget != NULL && qobject_cast<const QTabBar*>(widget)){
+                 const auto *tabbar = qobject_cast<const QTabBar*>(widget);
+@@ -5234,37 +5238,182 @@ void UKUIConfigStyle::drawControl(QStyle::ControlElement element, const QStyleOp
+             }
+             QPainterPath path;
+             QPainterPath penPath;
+-            if (selected) {
+-                drawRect.adjust(0, 0, tabOverlap, 0);
+-                path.moveTo(drawRect.left() + TabBarTab_Radius, drawRect.top());
+-                path.arcTo(QRect(drawRect.left(), drawRect.top(), TabBarTab_Radius * 2, TabBarTab_Radius * 2), 90, 90);
+-                path.lineTo(drawRect.left(), drawRect.bottom() - TabBarTab_Radius);
+-                path.arcTo(QRect(drawRect.left() - TabBarTab_Radius * 2, drawRect.bottom() - TabBarTab_Radius * 2,
+-                                 TabBarTab_Radius * 2, TabBarTab_Radius * 2), 0, -90);
+-                path.lineTo(drawRect.right() + TabBarTab_Radius, drawRect.bottom());
+-                path.arcTo(QRect(drawRect.right(), drawRect.bottom() - TabBarTab_Radius * 2,
+-                                 TabBarTab_Radius * 2, TabBarTab_Radius * 2), 270, -90);
+-                path.lineTo(drawRect.right(), drawRect.top() + TabBarTab_Radius);
+-                path.arcTo(QRect(drawRect.right() - TabBarTab_Radius * 2, drawRect.top(),
+-                                 TabBarTab_Radius * 2, TabBarTab_Radius * 2), 0, 90);
+-                path.lineTo(drawRect.left() + TabBarTab_Radius, drawRect.top());
+-
+-//                penPath.moveTo(drawRect.left() + TabBarTab_Radius, drawRect.top());
+-//                penPath.arcTo(QRect(drawRect.left(), drawRect.top(), TabBarTab_Radius * 2, TabBarTab_Radius * 2), 90, 90);
+-//                penPath.lineTo(drawRect.left(), drawRect.bottom() - TabBarTab_Radius);
+-//                penPath.arcTo(QRect(drawRect.left() - TabBarTab_Radius * 2, drawRect.bottom() - TabBarTab_Radius * 2,
++//            if (selected) {
++//                drawRect.adjust(0, 0, tabOverlap, 0);
++//                path.moveTo(drawRect.left() + TabBarTab_Radius, drawRect.top());
++//                path.arcTo(QRect(drawRect.left(), drawRect.top(), TabBarTab_Radius * 2, TabBarTab_Radius * 2), 90, 90);
++//                path.lineTo(drawRect.left(), drawRect.bottom() - TabBarTab_Radius);
++//                path.arcTo(QRect(drawRect.left() - TabBarTab_Radius * 2, drawRect.bottom() - TabBarTab_Radius * 2,
+ //                                 TabBarTab_Radius * 2, TabBarTab_Radius * 2), 0, -90);
+-//                penPath.moveTo(drawRect.right() - moveWidth + TabBarTab_Radius, drawRect.bottom());
+-//                penPath.arcTo(QRect(drawRect.right() - moveWidth, drawRect.bottom() - TabBarTab_Radius * 2,
++//                path.lineTo(drawRect.right() + TabBarTab_Radius, drawRect.bottom());
++//                path.arcTo(QRect(drawRect.right(), drawRect.bottom() - TabBarTab_Radius * 2,
+ //                                 TabBarTab_Radius * 2, TabBarTab_Radius * 2), 270, -90);
+-//                penPath.lineTo(drawRect.right() - moveWidth, drawRect.top() + TabBarTab_Radius);
+-//                penPath.arcTo(QRect(drawRect.right() - moveWidth - TabBarTab_Radius * 2, drawRect.top(),
++//                path.lineTo(drawRect.right(), drawRect.top() + TabBarTab_Radius);
++//                path.arcTo(QRect(drawRect.right() - TabBarTab_Radius * 2, drawRect.top(),
+ //                                 TabBarTab_Radius * 2, TabBarTab_Radius * 2), 0, 90);
+-//                penPath.lineTo(drawRect.left() + TabBarTab_Radius, drawRect.top());
+-            } else if (hover){
+-
+-                path.addRoundedRect(drawRect, TabBarTab_Radius, TabBarTab_Radius);
+-
++//                path.lineTo(drawRect.left() + TabBarTab_Radius, drawRect.top());
++
++////                penPath.moveTo(drawRect.left() + TabBarTab_Radius, drawRect.top());
++////                penPath.arcTo(QRect(drawRect.left(), drawRect.top(), TabBarTab_Radius * 2, TabBarTab_Radius * 2), 90, 90);
++////                penPath.lineTo(drawRect.left(), drawRect.bottom() - TabBarTab_Radius);
++////                penPath.arcTo(QRect(drawRect.left() - TabBarTab_Radius * 2, drawRect.bottom() - TabBarTab_Radius * 2,
++////                                 TabBarTab_Radius * 2, TabBarTab_Radius * 2), 0, -90);
++////                penPath.moveTo(drawRect.right() - moveWidth + TabBarTab_Radius, drawRect.bottom());
++////                penPath.arcTo(QRect(drawRect.right() - moveWidth, drawRect.bottom() - TabBarTab_Radius * 2,
++////                                 TabBarTab_Radius * 2, TabBarTab_Radius * 2), 270, -90);
++////                penPath.lineTo(drawRect.right() - moveWidth, drawRect.top() + TabBarTab_Radius);
++////                penPath.arcTo(QRect(drawRect.right() - moveWidth - TabBarTab_Radius * 2, drawRect.top(),
++////                                 TabBarTab_Radius * 2, TabBarTab_Radius * 2), 0, 90);
++////                penPath.lineTo(drawRect.left() + TabBarTab_Radius, drawRect.top());
++//            } else if (hover){
++
++//                path.addRoundedRect(drawRect, TabBarTab_Radius, TabBarTab_Radius);
++
++            if (widget != NULL && qobject_cast<const QTabBar*>(widget)) {
++                const auto *tabbar = qobject_cast<const QTabBar*>(widget);
++                int select_index = tabbar->currentIndex();
++                int now_index = tabbar->tabAt(QPoint(drawRect.x(),drawRect.y()));
++                int tab_count = tabbar->count();
++
++                if (qAppName() == "kylin-nm" || qAppName() == "ukui-volume-control-applet-qt") { //网络页和声音页
++                    drawRect.adjust(0, 0, tabOverlap, 0);
++                    if (now_index == 0) {
++                        if (selected) {
++                            path.moveTo(drawRect.left(), drawRect.top());
++                            path.lineTo(drawRect.left(), drawRect.bottom());
++                            path.lineTo(drawRect.right() + TabBarTab_Radius, drawRect.bottom());
++                            path.arcTo(QRect(drawRect.right(), drawRect.bottom() - TabBarTab_Radius * 2,
++                                             TabBarTab_Radius * 2, TabBarTab_Radius * 2), 270, -90);
++                            path.lineTo(drawRect.right(), drawRect.top() + TabBarTab_Radius);
++                            path.arcTo(QRect(drawRect.right() - TabBarTab_Radius * 2, drawRect.top(),
++                                             TabBarTab_Radius * 2, TabBarTab_Radius * 2), 0, 90);
++                            path.lineTo(drawRect.left(), drawRect.top());
++                        } else {
++                            path.moveTo(drawRect.left(), drawRect.top());
++                            path.lineTo(drawRect.left(), drawRect.bottom());
++                            path.lineTo(drawRect.right() - TabBarTab_Radius, drawRect.bottom());
++                            path.arcTo(QRect(drawRect.right() - TabBarTab_Radius * 2, drawRect.bottom() - TabBarTab_Radius * 2,
++                                             TabBarTab_Radius * 2, TabBarTab_Radius * 2), 270, 90);
++                            path.lineTo(drawRect.right(), drawRect.top() + TabBarTab_Radius);
++                            path.arcTo(QRect(drawRect.right(), drawRect.top(),
++                                             TabBarTab_Radius * 2, TabBarTab_Radius * 2), 180, -90);
++                            path.lineTo(drawRect.left(), drawRect.top());
++                        }
++                    } else if (now_index == tab_count - 1) {
++                        if (selected) {
++                            path.moveTo(drawRect.left() + TabBarTab_Radius, drawRect.top());
++                            path.arcTo(QRect(drawRect.left(), drawRect.top(), TabBarTab_Radius * 2, TabBarTab_Radius * 2), 90, 90);
++                            path.lineTo(drawRect.left(), drawRect.bottom() - TabBarTab_Radius);
++                            path.arcTo(QRect(drawRect.left() - TabBarTab_Radius * 2, drawRect.bottom() - TabBarTab_Radius * 2,
++                                             TabBarTab_Radius * 2, TabBarTab_Radius * 2), 0, -90);
++                            path.lineTo(drawRect.right(), drawRect.bottom());
++                            path.lineTo(drawRect.right(), drawRect.top());
++                            path.lineTo(drawRect.left() + TabBarTab_Radius, drawRect.top());
++                        } else {
++                            path.moveTo(drawRect.right(), drawRect.bottom());
++                            path.lineTo(drawRect.right(), drawRect.top());
++                            path.lineTo(drawRect.left() - TabBarTab_Radius, drawRect.top());
++                            path.arcTo(QRect(drawRect.left() - TabBarTab_Radius * 2, drawRect.top(), TabBarTab_Radius * 2, TabBarTab_Radius * 2), 90, -90);
++                            path.lineTo(drawRect.left(), drawRect.bottom() - TabBarTab_Radius);
++                            path.arcTo(QRect(drawRect.left(), drawRect.bottom() - TabBarTab_Radius * 2,
++                                             TabBarTab_Radius * 2, TabBarTab_Radius * 2), 180, 90);
++                            path.lineTo(drawRect.right(), drawRect.bottom());
++                        }
++                    } else {
++                        path.addRect(drawRect);
++                    }
++                } else {
++                    if (selected) {
++                        drawRect.adjust(0, 0, tabOverlap, 0);
++                        path.moveTo(drawRect.left() + TabBarTab_Radius, drawRect.top());
++                        path.arcTo(QRect(drawRect.left(), drawRect.top(), TabBarTab_Radius * 2, TabBarTab_Radius * 2), 90, 90);
++                        path.lineTo(drawRect.left(), drawRect.bottom() - TabBarTab_Radius);
++                        path.arcTo(QRect(drawRect.left() - TabBarTab_Radius * 2, drawRect.bottom() - TabBarTab_Radius * 2,
++                                         TabBarTab_Radius * 2, TabBarTab_Radius * 2), 0, -90);
++                        path.lineTo(drawRect.right() + TabBarTab_Radius, drawRect.bottom());
++                        path.arcTo(QRect(drawRect.right(), drawRect.bottom() - TabBarTab_Radius * 2,
++                                         TabBarTab_Radius * 2, TabBarTab_Radius * 2), 270, -90);
++                        path.lineTo(drawRect.right(), drawRect.top() + TabBarTab_Radius);
++                        path.arcTo(QRect(drawRect.right() - TabBarTab_Radius * 2, drawRect.top(),
++                                         TabBarTab_Radius * 2, TabBarTab_Radius * 2), 0, 90);
++                        path.lineTo(drawRect.left() + TabBarTab_Radius, drawRect.top());
++                    } else {
++                        if (select_index - now_index == 1) {
++                            //select rect left
++                            drawRect.adjust(0, 0, tabOverlap, 0);
++                            if (now_index == 0) {
++                                path.moveTo(drawRect.left(), drawRect.top() + TabBarTab_Radius);
++                                path.lineTo(drawRect.left(), drawRect.bottom());
++                                path.lineTo(drawRect.right() - TabBarTab_Radius, drawRect.bottom());
++                                path.arcTo(QRect(drawRect.right() - TabBarTab_Radius * 2, drawRect.bottom() - TabBarTab_Radius * 2,
++                                                 TabBarTab_Radius * 2, TabBarTab_Radius * 2), 270, 90);
++                                path.lineTo(drawRect.right(), drawRect.top() + TabBarTab_Radius);
++                                path.arcTo(QRect(drawRect.right(), drawRect.top(),
++                                                 TabBarTab_Radius * 2, TabBarTab_Radius * 2), 180, -90);
++                                path.lineTo(drawRect.left() + TabBarTab_Radius, drawRect.top());
++                                path.arcTo(QRect(drawRect.left(), drawRect.top(),
++                                                 TabBarTab_Radius * 2, TabBarTab_Radius * 2), 90, 90);
++                            } else {
++                                path.moveTo(drawRect.left(), drawRect.top());
++                                path.lineTo(drawRect.left(), drawRect.bottom());
++                                path.lineTo(drawRect.right() - TabBarTab_Radius, drawRect.bottom());
++                                path.arcTo(QRect(drawRect.right() - TabBarTab_Radius * 2, drawRect.bottom() - TabBarTab_Radius * 2,
++                                                 TabBarTab_Radius * 2, TabBarTab_Radius * 2), 270, 90);
++                                path.lineTo(drawRect.right(), drawRect.top() + TabBarTab_Radius);
++                                path.arcTo(QRect(drawRect.right(), drawRect.top(),
++                                                 TabBarTab_Radius * 2, TabBarTab_Radius * 2), 180, -90);
++                                path.lineTo(drawRect.left(), drawRect.top());
++                            }
++                        } else if (select_index - now_index == -1) {
++                            //select rect right
++                            drawRect.adjust(0, 0, tabOverlap, 0);
++                            if (now_index == tab_count - 1) {
++                                path.moveTo(drawRect.right(), drawRect.bottom());
++                                path.lineTo(drawRect.right(), drawRect.top() + TabBarTab_Radius);
++                                path.arcTo(QRect(drawRect.right() - TabBarTab_Radius * 2, drawRect.top(),
++                                                 TabBarTab_Radius * 2, TabBarTab_Radius * 2), 0, 90);
++                                path.lineTo(drawRect.left() - TabBarTab_Radius, drawRect.top());
++                                path.arcTo(QRect(drawRect.left() - TabBarTab_Radius * 2, drawRect.top(),
++                                                 TabBarTab_Radius * 2, TabBarTab_Radius * 2), 90, -90);
++                                path.lineTo(drawRect.left(), drawRect.bottom() - TabBarTab_Radius);
++                                path.arcTo(QRect(drawRect.left(), drawRect.bottom() - TabBarTab_Radius * 2,
++                                                 TabBarTab_Radius * 2, TabBarTab_Radius * 2), 180, 90);
++                                path.lineTo(drawRect.right(), drawRect.bottom());
++                            } else {
++                                path.moveTo(drawRect.right(), drawRect.bottom());
++                                path.lineTo(drawRect.right(), drawRect.top());
++                                path.lineTo(drawRect.left() - TabBarTab_Radius, drawRect.top());
++                                path.arcTo(QRect(drawRect.left() - TabBarTab_Radius * 2, drawRect.top(), TabBarTab_Radius * 2, TabBarTab_Radius * 2), 90, -90);
++                                path.lineTo(drawRect.left(), drawRect.bottom() - TabBarTab_Radius);
++                                path.arcTo(QRect(drawRect.left(), drawRect.bottom() - TabBarTab_Radius * 2,
++                                                 TabBarTab_Radius * 2, TabBarTab_Radius * 2), 180, 90);
++                                path.lineTo(drawRect.right(), drawRect.bottom());
++                            }
++                        } else {
++                            if (now_index == 0) {
++                                drawRect.adjust(0, 0, tabOverlap, 0);
++                                path.moveTo(drawRect.left(), drawRect.top() + TabBarTab_Radius);
++                                path.lineTo(drawRect.left(), drawRect.bottom());
++                                path.lineTo(drawRect.right(), drawRect.bottom());
++                                path.lineTo(drawRect.right(), drawRect.top());
++                                path.lineTo(drawRect.left() + TabBarTab_Radius, drawRect.top());
++                                path.arcTo(QRect(drawRect.left(), drawRect.top(),
++                                                 TabBarTab_Radius * 2, TabBarTab_Radius * 2), 90, 90);
++                            } else if (now_index == tab_count - 1) {
++                                drawRect.adjust(0, 0, tabOverlap, 0);
++                                path.moveTo(drawRect.right(), drawRect.bottom());
++                                path.lineTo(drawRect.right(), drawRect.top() + TabBarTab_Radius);
++                                path.arcTo(QRect(drawRect.right() - TabBarTab_Radius * 2, drawRect.top(),
++                                                 TabBarTab_Radius * 2, TabBarTab_Radius * 2), 0, 90);
++                                path.lineTo(drawRect.left(), drawRect.top());
++                                path.lineTo(drawRect.left(), drawRect.bottom());
++                                path.lineTo(drawRect.right(), drawRect.bottom());
++                            } else {
++                                path.addRect(drawRect);
++                            }
++                        }
++                    }
++                }
+             } else {
+ 
+                 path.addRect(drawRect);
+@@ -5912,7 +6061,7 @@ void UKUIConfigStyle::drawControl(QStyle::ControlElement element, const QStyleOp
+         painter->restore();
+         return;
+     }
+-
++    //绘制进度条内容部分
+     case CE_ProgressBarContents:
+     {
+         if (const QStyleOptionProgressBar *pb = qstyleoption_cast<const QStyleOptionProgressBar *>(option)) {
diff -Nru qt5-ukui-platformtheme-4.1.0.0/debian/patches/series qt5-ukui-platformtheme-4.1.0.0/debian/patches/series
--- qt5-ukui-platformtheme-4.1.0.0/debian/patches/series	2024-11-08 09:49:00.000000000 +0800
+++ qt5-ukui-platformtheme-4.1.0.0/debian/patches/series	2025-02-12 15:01:00.000000000 +0800
@@ -74,3 +74,7 @@
 0074-Translated-using-Weblate-Uyghur.patch
 0075-Translated-using-Weblate-Uyghur.patch
 0076-Update-changelog-2024.11.08-4.1.0.0-ok53.patch
+0077-.patch
+0078-pc.patch
+0079-Translated-using-Weblate-Vietnamese.patch
+0080-BUG-IAY3M0-fix-the-abnormal-hover-effect-of-the-ukui.patch