From 0231ab4c5219ef88ec2e978c76cfbe00d1f0a84c Mon Sep 17 00:00:00 2001 From: huayadong Date: Mon, 28 Mar 2022 10:23:40 +0800 Subject: [PATCH] Fix crashes when installing or uninstalling software --- 0001-Optimize-Chinese-search.patch | 1369 ------ 0001-fix-uninstall-failed-issue.patch | 1310 ------ 0262-Adapt-the-light-color-theme.patch | 5803 ------------------------ ukui-menu-3.0.2.tar.gz | Bin 118626 -> 114045 bytes ukui-menu.spec | 13 +- 5 files changed, 5 insertions(+), 8490 deletions(-) delete mode 100644 0001-Optimize-Chinese-search.patch delete mode 100644 0001-fix-uninstall-failed-issue.patch delete mode 100644 0262-Adapt-the-light-color-theme.patch diff --git a/0001-Optimize-Chinese-search.patch b/0001-Optimize-Chinese-search.patch deleted file mode 100644 index d9a32c0..0000000 --- a/0001-Optimize-Chinese-search.patch +++ /dev/null @@ -1,1369 +0,0 @@ -From d999be87fa344c08b807560a86418bf42642a1d7 Mon Sep 17 00:00:00 2001 -From: huayadong -Date: Tue, 7 Dec 2021 20:24:59 +0800 -Subject: [PATCH] Optimize Chinese search - ---- - debian/changelog | 6 - - debian/source/format | 2 +- - src/RightClickMenu/rightclickmenu.cpp | 40 +--- - translations/ukui-menu_bo.ts | 261 +++++++++++++++++++------- - translations/ukui-menu_tr.ts | 134 ++++++------- - translations/ukui-menu_zh_CN.ts | 134 ++++++------- - 6 files changed, 315 insertions(+), 262 deletions(-) - mode change 100755 => 100644 debian/changelog - mode change 100755 => 100644 debian/source/format - mode change 100755 => 100644 src/RightClickMenu/rightclickmenu.cpp - mode change 100755 => 100644 translations/ukui-menu_bo.ts - mode change 100755 => 100644 translations/ukui-menu_tr.ts - mode change 100755 => 100644 translations/ukui-menu_zh_CN.ts - -diff --git a/debian/changelog b/debian/changelog -old mode 100755 -new mode 100644 -index 7cbf270..c27fafc ---- a/debian/changelog -+++ b/debian/changelog -@@ -1,9 +1,3 @@ --ukui-menu (3.0.1-1+1026) focal; urgency=medium -- -- * Daily build. -- -- -- liuliang Mon, 27 May 2019 15:48:18 +0800 -- - ukui-menu (3.0.1-1) unstable; urgency=medium - - * New upstream bugfix release. -diff --git a/debian/source/format b/debian/source/format -old mode 100755 -new mode 100644 -index 89ae9db..163aaf8 ---- a/debian/source/format -+++ b/debian/source/format -@@ -1 +1 @@ --3.0 (native) -+3.0 (quilt) -diff --git a/src/RightClickMenu/rightclickmenu.cpp b/src/RightClickMenu/rightclickmenu.cpp -old mode 100755 -new mode 100644 -index ab62848..657842b ---- a/src/RightClickMenu/rightclickmenu.cpp -+++ b/src/RightClickMenu/rightclickmenu.cpp -@@ -19,8 +19,6 @@ - #include "rightclickmenu.h" - #include "src/UtilityFunction/utility.h" - #include --#include --#include - - RightClickMenu::RightClickMenu(QWidget *parent): - QWidget(parent) -@@ -178,9 +176,7 @@ void RightClickMenu::addToDesktopActionTriggerSlot() - - void RightClickMenu::uninstallActionTriggerSlot() - { -- //QString cmd=QString("dpkg -S "+m_desktopfp); -- //on openEuler or fedora -- QString cmd=QString("rpm -qf "+m_desktopfp); -+ QString cmd=QString("dpkg -S "+m_desktopfp); - m_cmdProc->setReadChannel(QProcess::StandardOutput); - m_cmdProc->start("sh",QStringList()<<"-c"<waitForFinished(); -@@ -194,37 +190,9 @@ void RightClickMenu::onReadOutput() - QString packagestr=QString::fromLocal8Bit(m_cmdProc->readAllStandardOutput().data()); - QString packageName=packagestr.split(":").at(0); - // qDebug()<parent(),&event); -+ char command[100]; -+ sprintf(command,"kylin-installer -remove %s",packageName.toLocal8Bit().data()); -+ QProcess::startDetached(command); - } - - void RightClickMenu::attributeActionTriggerSlot() -diff --git a/translations/ukui-menu_bo.ts b/translations/ukui-menu_bo.ts -old mode 100755 -new mode 100644 -index 61d472c..7e9676c ---- a/translations/ukui-menu_bo.ts -+++ b/translations/ukui-menu_bo.ts -@@ -2,301 +2,416 @@ - - - -- FunctionClassifyButton -+ CommonUseWidget - -- -- Mobile -+ -+ Form -+ -+ -+ -+ -+ FullCommonUseWidget -+ -+ -+ Form -+ -+ -+ -+ -+ FullFunctionWidget -+ -+ -+ Form -+ -+ -+ -+ -+ -+ Android - - - -- -+ -+ - Internet - - - -- -+ -+ - Social - - - -- -+ -+ - Video - - - -- -+ -+ - Development - - - -- -+ -+ - Image - - - -- -+ -+ - Game - - - -- -+ -+ - Office - - - -- -+ -+ - Education - - - -- -+ -+ - System - - - -- -+ -+ - Others - - - - -- FunctionWidget -+ FullLetterWidget - -- -- Mobile -+ -+ Form - - -+ -+ -+ FullSearchResultWidget - -- -+ -+ Form -+ -+ -+ -+ -+ FunctionButtonWidget -+ -+ -+ Form -+ -+ -+ -+ -+ Android -+ -+ -+ -+ - Internet - - - -- -+ - Social - - - -- -+ - Video - - - -- -+ - Development - - - -- -+ - Image - - - -- -+ - Game - - - -- -+ - Office - - - -- -+ - Education - - - -- -+ - System - - - -- -+ - Others - - - - -- MainViewWidget -+ FunctionWidget - -- -- Search -+ -+ Form - - -- -- -- PushButton - -- -- Mobile -+ -+ -+ Android - - - -- -+ -+ - Internet - - - -- -+ -+ - Social - - - -- -+ -+ - Video - - - -- -+ -+ - Development - - - -- -+ -+ - Image - - - -- -+ -+ - Game - - - -- -+ -+ - Office - - - -- -+ -+ - Education - - - -- -+ -+ - System - - - -- -+ -+ - Others - - - - -- RightClickMenu -+ LetterButtonWidget - -- -- infomation -+ -+ Form - - -+ -+ -+ LetterWidget - -- -- Uninstall finished! -+ -+ Form - - -+ -+ -+ MainViewWidget -+ -+ -+ Form -+ -+ -+ -+ -+ Search -+ -+ -+ -+ -+ MainWindow - -- -- error -+ -+ MainWindow - - -+ -+ -+ RightClickMenu - -- -+ -+ - Pin to all - - - -- -+ -+ - Unpin from all - - - -- -- -+ -+ -+ - Pin to taskbar - - - -- -- -+ -+ -+ - Unpin from taskbar - - - -- -+ -+ - Add to desktop shortcuts - - - -- -+ -+ - Uninstall - - - -- -- Sleep -+ -+ Lock Screen - - - -- -+ -+ Switch User -+ -+ -+ -+ - Log Out - - - -- -+ - Restart - - - -- -+ - Power Off - - - -- -+ - Personalize this list - - - -+ -+ SearchResultWidget -+ -+ -+ Form -+ -+ -+ - - SideBarWidget - -- -+ -+ Form -+ -+ -+ -+ -+ - All - - - -- -+ -+ - Letter - - - -- -+ -+ - Function - - - -- -+ -+ - Computer - - - -- -+ -+ - Personal - - - -- -+ -+ - Settings - - - -- -+ -+ - Recycle Bin - - - -- -+ -+ - Power - - -diff --git a/translations/ukui-menu_tr.ts b/translations/ukui-menu_tr.ts -old mode 100755 -new mode 100644 -index 3fd8b62..5ae00ce ---- a/translations/ukui-menu_tr.ts -+++ b/translations/ukui-menu_tr.ts -@@ -4,57 +4,57 @@ - - FunctionClassifyButton - -- -+ - Mobile - Mobil - - -- -+ - Internet - İnternet - - -- -+ - Social - Sosyal - - -- -+ - Video - Video - - -- -+ - Development - Programlama - - -- -+ - Image - Grafik - - -- -+ - Game - Oyunlar - - -- -+ - Office - Ofis Uygulamaları - - -- -+ - Education - Eğitim - - -- -+ - System - Sistem - - -- -+ - Others - Diğer - -@@ -62,57 +62,57 @@ - - FunctionWidget - -- -+ - Mobile - Mobil - - -- -+ - Internet - İnternet - - -- -+ - Social - Sosyal - - -- -+ - Video - Video - - -- -+ - Development - Programlama - - -- -+ - Image - Grafik - - -- -+ - Game - Oyunlar - - -- -+ - Office - Ofis Uygulamaları - - -- -+ - Education - Eğitim - - -- -+ - System - Sistem - - -- -+ - Others - Diğer - -@@ -120,7 +120,7 @@ - - MainViewWidget - -- -+ - Search - Ara - -@@ -128,57 +128,57 @@ - - PushButton - -- -+ - Mobile - Mobil - - -- -+ - Internet - İnternet - - -- -+ - Social - Sosyal - - -- -+ - Video - Video - - -- -+ - Development - Programlama - - -- -+ - Image - Grafik - - -- -+ - Game - Oyunlar - - -- -+ - Office - Ofis Uygulamaları - - -- -+ - Education - Eğitim - - -- -+ - System - Sistem - - -- -+ - Others - Diğer - -@@ -186,86 +186,74 @@ - - RightClickMenu - -- -- infomation -- -- -- -- -- Uninstall finished! -- -- -- -- -- error -- -- -- -- -+ - Pin to all - Tümünü sabitle - - -- -+ - Unpin from all - Tüm sabitlemeleri kaldır - - -- -- -+ -+ - Pin to taskbar - Görev çubuğuna sabitle - - -- -- -+ -+ - Unpin from taskbar - Görev çubuğundan sabitlemeyi kaldır - - -- -+ - Add to desktop shortcuts - Masaüstü kısayollarına ekle - - -- -+ - Uninstall - Kaldır - - -+ - Hibernate -- Beklemeye Al -+ Beklemeye Al - - -- -+ - Sleep - Uyku Modu - - -+ - Lock Screen -- Ekranı Kilitle -+ Ekranı Kilitle - - -+ - Switch User -- Kullanıcı Değiştir -+ Kullanıcı Değiştir - - -- -+ - Log Out - Çıkış - - -- -+ - Restart - Yeniden Başlat - - -- -+ - Power Off - Kapat - - -- -+ - Personalize this list - Bu listeyi özelleştirin - -@@ -273,42 +261,42 @@ - - SideBarWidget - -- -+ - All - Tümü - - -- -+ - Letter - Alfabetik - - -- -+ - Function - Kategori - - -- -+ - Computer - Bilgisayar - - -- -+ - Personal - Kişisel - - -- -+ - Settings - Ayarlar - - -- -+ - Recycle Bin - Çöp - - -- -+ - Power - Kapat - -diff --git a/translations/ukui-menu_zh_CN.ts b/translations/ukui-menu_zh_CN.ts -old mode 100755 -new mode 100644 -index baa1a18..fc6a4d6 ---- a/translations/ukui-menu_zh_CN.ts -+++ b/translations/ukui-menu_zh_CN.ts -@@ -4,57 +4,57 @@ - - FunctionClassifyButton - -- -+ - Mobile - 移动 - - -- -+ - Internet - 网络 - - -- -+ - Social - 社交 - - -- -+ - Video - 影音 - - -- -+ - Development - 开发 - - -- -+ - Image - 图像 - - -- -+ - Game - 游戏 - - -- -+ - Office - 办公 - - -- -+ - Education - 教育 - - -- -+ - System - 系统 - - -- -+ - Others - 其它 - -@@ -62,57 +62,57 @@ - - FunctionWidget - -- -+ - Mobile - 移动 - - -- -+ - Internet - 网络 - - -- -+ - Social - 社交 - - -- -+ - Video - 影音 - - -- -+ - Development - 开发 - - -- -+ - Image - 图像 - - -- -+ - Game - 游戏 - - -- -+ - Office - 办公 - - -- -+ - Education - 教育 - - -- -+ - System - 系统 - - -- -+ - Others - 其它 - -@@ -120,7 +120,7 @@ - - MainViewWidget - -- -+ - Search - 搜索 - -@@ -128,57 +128,57 @@ - - PushButton - -- -+ - Mobile - 移动 - - -- -+ - Internet - 网络 - - -- -+ - Social - 社交 - - -- -+ - Video - 影音 - - -- -+ - Development - 开发 - - -- -+ - Image - 图像 - - -- -+ - Game - 游戏 - - -- -+ - Office - 办公 - - -- -+ - Education - 教育 - - -- -+ - System - 系统 - - -- -+ - Others - 其它 - -@@ -186,86 +186,74 @@ - - RightClickMenu - -- -- infomation -- 提示 -- -- -- -- Uninstall finished! -- 卸载成功! -- -- -- -- error -- 错误 -- -- -- -+ - Pin to all - 固定到“所有软件” - - -- -+ - Unpin from all - 从“所有软件”取消固定 - - -- -- -+ -+ - Pin to taskbar - 固定到任务栏 - - -- -- -+ -+ - Unpin from taskbar - 从任务栏取消固定 - - -- -+ - Add to desktop shortcuts - 添加到桌面快捷方式 - - -- -+ - Uninstall - 卸载 - - -+ - Hibernate -- 休眠 -+ 休眠 - - -- -+ - Sleep - 睡眠 - - -+ - Lock Screen -- 锁屏 -+ 锁屏 - - -+ - Switch User -- 切换用户 -+ 切换用户 - - -- -+ - Log Out - 注销 - - -- -+ - Restart - 重启 - - -- -+ - Power Off - 关机 - - -- -+ - Personalize this list - 设置开始菜单显示列表 - -@@ -273,42 +261,42 @@ - - SideBarWidget - -- -+ - All - 所有软件 - - -- -+ - Letter - 字母排序 - - -- -+ - Function - 功能分类 - - -- -+ - Computer - 计算机 - - -- -+ - Personal - 个人 - - -- -+ - Settings - 设置 - - -- -+ - Recycle Bin - 回收站 - - -- -+ - Power - 电源 - --- -2.30.0 - diff --git a/0001-fix-uninstall-failed-issue.patch b/0001-fix-uninstall-failed-issue.patch deleted file mode 100644 index a56caf6..0000000 --- a/0001-fix-uninstall-failed-issue.patch +++ /dev/null @@ -1,1310 +0,0 @@ -diff -ur ukui-menu-3.0.2/src/RightClickMenu/rightclickmenu.cpp ukui-menu-3.0.2~/src/RightClickMenu/rightclickmenu.cpp ---- ukui-menu-3.0.2/src/RightClickMenu/rightclickmenu.cpp 2019-05-27 15:48:18.000000000 +0800 -+++ ukui-menu-3.0.2~/src/RightClickMenu/rightclickmenu.cpp 2020-11-27 16:50:46.669322990 +0800 -@@ -19,6 +19,8 @@ - #include "rightclickmenu.h" - #include "src/UtilityFunction/utility.h" - #include -+#include -+#include - - RightClickMenu::RightClickMenu(QWidget *parent): - QWidget(parent) -@@ -176,7 +178,9 @@ - - void RightClickMenu::uninstallActionTriggerSlot() - { -- QString cmd=QString("dpkg -S "+m_desktopfp); -+ //QString cmd=QString("dpkg -S "+m_desktopfp); -+ //on openEuler or fedora -+ QString cmd=QString("rpm -qf "+m_desktopfp); - m_cmdProc->setReadChannel(QProcess::StandardOutput); - m_cmdProc->start("sh",QStringList()<<"-c"<waitForFinished(); -@@ -190,9 +194,37 @@ - QString packagestr=QString::fromLocal8Bit(m_cmdProc->readAllStandardOutput().data()); - QString packageName=packagestr.split(":").at(0); - // qDebug()<parent(),&event); - } - - void RightClickMenu::attributeActionTriggerSlot() -diff -ur ukui-menu-3.0.2/translations/ukui-menu_bo.ts ukui-menu-3.0.2~/translations/ukui-menu_bo.ts ---- ukui-menu-3.0.2/translations/ukui-menu_bo.ts 2019-05-27 15:48:18.000000000 +0800 -+++ ukui-menu-3.0.2~/translations/ukui-menu_bo.ts 2020-11-27 16:29:16.946121032 +0800 -@@ -2,416 +2,301 @@ - - - -- CommonUseWidget -+ FunctionClassifyButton - -- -- Form -- -- -- -- -- FullCommonUseWidget -- -- -- Form -- -- -- -- -- FullFunctionWidget -- -- -- Form -- -- -- -- -- -- Android -+ -+ Mobile - - - -- -- -+ - Internet - - - -- -- -+ - Social - - - -- -- -+ - Video - - - -- -- -+ - Development - - - -- -- -+ - Image - - - -- -- -+ - Game - - - -- -- -+ - Office - - - -- -- -+ - Education - - - -- -- -+ - System - - - -- -- -+ - Others - - - - -- FullLetterWidget -- -- -- Form -- -- -- -- -- FullSearchResultWidget -- -- -- Form -- -- -- -- -- FunctionButtonWidget -- -- -- Form -- -- -+ FunctionWidget - -- -- Android -+ -+ Mobile - - - -- -+ - Internet - - - -- -+ - Social - - - -- -+ - Video - - - -- -+ - Development - - - -- -+ - Image - - - -- -+ - Game - - - -- -+ - Office - - - -- -+ - Education - - - -- -+ - System - - - -- -+ - Others - - - - -- FunctionWidget -+ MainViewWidget - -- -- Form -+ -+ Search - - -+ -+ -+ PushButton - -- -- -- Android -+ -+ Mobile - - - -- -- -+ - Internet - - - -- -- -+ - Social - - - -- -- -+ - Video - - - -- -- -+ - Development - - - -- -- -+ - Image - - - -- -- -+ - Game - - - -- -- -+ - Office - - - -- -- -+ - Education - - - -- -- -+ - System - - - -- -- -+ - Others - - - - -- LetterButtonWidget -- -- -- Form -- -- -- -- -- LetterWidget -- -- -- Form -- -- -- -- -- MainViewWidget -+ RightClickMenu - -- -- Form -+ -+ infomation - - - -- -- Search -+ -+ Uninstall finished! - - -- -- -- MainWindow - -- -- MainWindow -+ -+ error - - -- -- -- RightClickMenu - -- -- -+ - Pin to all - - - -- -- -+ - Unpin from all - - - -- -- -- -+ -+ - Pin to taskbar - - - -- -- -- -+ -+ - Unpin from taskbar - - - -- -- -+ - Add to desktop shortcuts - - - -- -- -+ - Uninstall - - - -- -- Lock Screen -+ -+ Sleep - - - -- -- Switch User -- -- -- -- -+ - Log Out - - - -- -+ - Restart - - - -- -+ - Power Off - - - -- -+ - Personalize this list - - - - -- SearchResultWidget -- -- -- Form -- -- -- -- - SideBarWidget - -- -- Form -- -- -- -- -- -+ - All - - - -- -- -+ - Letter - - - -- -- -+ - Function - - - -- -- -+ - Computer - - - -- -- -+ - Personal - - - -- -- -+ - Settings - - - -- -- -+ - Recycle Bin - - - -- -- -+ - Power - - -diff -ur ukui-menu-3.0.2/translations/ukui-menu_tr.ts ukui-menu-3.0.2~/translations/ukui-menu_tr.ts ---- ukui-menu-3.0.2/translations/ukui-menu_tr.ts 2019-05-27 15:48:18.000000000 +0800 -+++ ukui-menu-3.0.2~/translations/ukui-menu_tr.ts 2020-11-27 16:29:16.949121048 +0800 -@@ -4,57 +4,57 @@ - - FunctionClassifyButton - -- -+ - Mobile - Mobil - - -- -+ - Internet - İnternet - - -- -+ - Social - Sosyal - - -- -+ - Video - Video - - -- -+ - Development - Programlama - - -- -+ - Image - Grafik - - -- -+ - Game - Oyunlar - - -- -+ - Office - Ofis Uygulamaları - - -- -+ - Education - Eğitim - - -- -+ - System - Sistem - - -- -+ - Others - Diğer - -@@ -62,57 +62,57 @@ - - FunctionWidget - -- -+ - Mobile - Mobil - - -- -+ - Internet - İnternet - - -- -+ - Social - Sosyal - - -- -+ - Video - Video - - -- -+ - Development - Programlama - - -- -+ - Image - Grafik - - -- -+ - Game - Oyunlar - - -- -+ - Office - Ofis Uygulamaları - - -- -+ - Education - Eğitim - - -- -+ - System - Sistem - - -- -+ - Others - Diğer - -@@ -120,7 +120,7 @@ - - MainViewWidget - -- -+ - Search - Ara - -@@ -128,57 +128,57 @@ - - PushButton - -- -+ - Mobile - Mobil - - -- -+ - Internet - İnternet - - -- -+ - Social - Sosyal - - -- -+ - Video - Video - - -- -+ - Development - Programlama - - -- -+ - Image - Grafik - - -- -+ - Game - Oyunlar - - -- -+ - Office - Ofis Uygulamaları - - -- -+ - Education - Eğitim - - -- -+ - System - Sistem - - -- -+ - Others - Diğer - -@@ -186,74 +186,86 @@ - - RightClickMenu - -- -+ -+ infomation -+ -+ -+ -+ -+ Uninstall finished! -+ -+ -+ -+ -+ error -+ -+ -+ -+ - Pin to all - Tümünü sabitle - - -- -+ - Unpin from all - Tüm sabitlemeleri kaldır - - -- -- -+ -+ - Pin to taskbar - Görev çubuğuna sabitle - - -- -- -+ -+ - Unpin from taskbar - Görev çubuğundan sabitlemeyi kaldır - - -- -+ - Add to desktop shortcuts - Masaüstü kısayollarına ekle - - -- -+ - Uninstall - Kaldır - - -- - Hibernate -- Beklemeye Al -+ Beklemeye Al - - -- -+ - Sleep - Uyku Modu - - -- - Lock Screen -- Ekranı Kilitle -+ Ekranı Kilitle - - -- - Switch User -- Kullanıcı Değiştir -+ Kullanıcı Değiştir - - -- -+ - Log Out - Çıkış - - -- -+ - Restart - Yeniden Başlat - - -- -+ - Power Off - Kapat - - -- -+ - Personalize this list - Bu listeyi özelleştirin - -@@ -261,42 +273,42 @@ - - SideBarWidget - -- -+ - All - Tümü - - -- -+ - Letter - Alfabetik - - -- -+ - Function - Kategori - - -- -+ - Computer - Bilgisayar - - -- -+ - Personal - Kişisel - - -- -+ - Settings - Ayarlar - - -- -+ - Recycle Bin - Çöp - - -- -+ - Power - Kapat - -二进制文件 ukui-menu-3.0.2/translations/ukui-menu_zh_CN.qm 和 ukui-menu-3.0.2~/translations/ukui-menu_zh_CN.qm 不同 -diff -ur ukui-menu-3.0.2/translations/ukui-menu_zh_CN.ts ukui-menu-3.0.2~/translations/ukui-menu_zh_CN.ts ---- ukui-menu-3.0.2/translations/ukui-menu_zh_CN.ts 2019-05-27 15:48:18.000000000 +0800 -+++ ukui-menu-3.0.2~/translations/ukui-menu_zh_CN.ts 2020-11-27 16:30:46.737593087 +0800 -@@ -4,57 +4,57 @@ - - FunctionClassifyButton - -- -+ - Mobile - 移动 - - -- -+ - Internet - 网络 - - -- -+ - Social - 社交 - - -- -+ - Video - 影音 - - -- -+ - Development - 开发 - - -- -+ - Image - 图像 - - -- -+ - Game - 游戏 - - -- -+ - Office - 办公 - - -- -+ - Education - 教育 - - -- -+ - System - 系统 - - -- -+ - Others - 其它 - -@@ -62,57 +62,57 @@ - - FunctionWidget - -- -+ - Mobile - 移动 - - -- -+ - Internet - 网络 - - -- -+ - Social - 社交 - - -- -+ - Video - 影音 - - -- -+ - Development - 开发 - - -- -+ - Image - 图像 - - -- -+ - Game - 游戏 - - -- -+ - Office - 办公 - - -- -+ - Education - 教育 - - -- -+ - System - 系统 - - -- -+ - Others - 其它 - -@@ -120,7 +120,7 @@ - - MainViewWidget - -- -+ - Search - 搜索 - -@@ -128,57 +128,57 @@ - - PushButton - -- -+ - Mobile - 移动 - - -- -+ - Internet - 网络 - - -- -+ - Social - 社交 - - -- -+ - Video - 影音 - - -- -+ - Development - 开发 - - -- -+ - Image - 图像 - - -- -+ - Game - 游戏 - - -- -+ - Office - 办公 - - -- -+ - Education - 教育 - - -- -+ - System - 系统 - - -- -+ - Others - 其它 - -@@ -186,74 +186,86 @@ - - RightClickMenu - -- -+ -+ infomation -+ 提示 -+ -+ -+ -+ Uninstall finished! -+ 卸载成功! -+ -+ -+ -+ error -+ 错误 -+ -+ -+ - Pin to all - 固定到“所有软件” - - -- -+ - Unpin from all - 从“所有软件”取消固定 - - -- -- -+ -+ - Pin to taskbar - 固定到任务栏 - - -- -- -+ -+ - Unpin from taskbar - 从任务栏取消固定 - - -- -+ - Add to desktop shortcuts - 添加到桌面快捷方式 - - -- -+ - Uninstall - 卸载 - - -- - Hibernate -- 休眠 -+ 休眠 - - -- -+ - Sleep - 睡眠 - - -- - Lock Screen -- 锁屏 -+ 锁屏 - - -- - Switch User -- 切换用户 -+ 切换用户 - - -- -+ - Log Out - 注销 - - -- -+ - Restart - 重启 - - -- -+ - Power Off - 关机 - - -- -+ - Personalize this list - 设置开始菜单显示列表 - -@@ -261,42 +273,42 @@ - - SideBarWidget - -- -+ - All - 所有软件 - - -- -+ - Letter - 字母排序 - - -- -+ - Function - 功能分类 - - -- -+ - Computer - 计算机 - - -- -+ - Personal - 个人 - - -- -+ - Settings - 设置 - - -- -+ - Recycle Bin - 回收站 - - -- -+ - Power - 电源 - diff --git a/0262-Adapt-the-light-color-theme.patch b/0262-Adapt-the-light-color-theme.patch deleted file mode 100644 index 53f6efd..0000000 --- a/0262-Adapt-the-light-color-theme.patch +++ /dev/null @@ -1,5803 +0,0 @@ -From 21e4c0bc7c47d5ee6b63d647410184b7f516b406 Mon Sep 17 00:00:00 2001 -From: liuhao-startmenu -Date: Tue, 10 Nov 2020 15:00:15 +0800 -Subject: [PATCH 262/262] Adapt the light color theme - ---- - main.cpp | 79 +-- - src/CommonUseWidget/commonusewidget.cpp | 11 +- - src/CommonUseWidget/fullcommonusewidget.cpp | 6 +- - src/FunctionWidget/fullfunctionwidget.cpp | 181 ++----- - src/FunctionWidget/fullfunctionwidget.h | 13 +- - src/FunctionWidget/functionbuttonwidget.cpp | 13 +- - src/FunctionWidget/functionbuttonwidget.h | 1 + - src/FunctionWidget/functionwidget.cpp | 13 +- - src/Interface/ukuimenuinterface.cpp | 2 +- - src/Interface/ukuimenuinterface.h | 6 +- - src/LetterWidget/fullletterwidget.cpp | 30 +- - src/LetterWidget/fullletterwidget.h | 11 +- - src/LetterWidget/letterbuttonwidget.cpp | 21 +- - src/LetterWidget/letterbuttonwidget.h | 2 +- - src/LetterWidget/letterwidget.cpp | 13 +- - src/MainViewWidget/mainviewwidget.cpp | 458 ++++++++++-------- - src/MainViewWidget/mainviewwidget.h | 6 +- - src/MainWindow/mainwindow.cpp | 355 +++++++------- - src/MainWindow/mainwindow.h | 4 +- - src/RightClickMenu/rightclickmenu.cpp | 50 +- - src/RightClickMenu/rightclickmenu.h | 6 - - .../fullsearchresultwidget.cpp | 5 +- - src/SearchResultWidget/searchresultwidget.cpp | 7 +- - src/SideBarWidget/sidebarwidget.cpp | 235 ++++++--- - src/SideBarWidget/sidebarwidget.h | 8 +- - src/Style/style.h | 11 +- - src/UtilityFunction/classifybtnscrollarea.cpp | 95 ++++ - ...fyscrollarea.h => classifybtnscrollarea.h} | 14 +- - src/UtilityFunction/classifyscrollarea.cpp | 36 -- - src/UtilityFunction/fullitemdelegate.cpp | 72 +-- - src/UtilityFunction/fulllistview.cpp | 68 ++- - src/UtilityFunction/fulllistview.h | 1 + - .../functionclassifybutton.cpp | 120 ++++- - src/UtilityFunction/functionclassifybutton.h | 2 + - src/UtilityFunction/itemdelegate.cpp | 43 +- - src/UtilityFunction/letterclassifybutton.cpp | 113 +++-- - src/UtilityFunction/letterclassifybutton.h | 11 +- - src/UtilityFunction/listview.cpp | 27 +- - src/UtilityFunction/listview.h | 1 + - src/UtilityFunction/proxystyle.cpp | 50 ++ - src/UtilityFunction/proxystyle.h | 28 ++ - src/UtilityFunction/scrollarea.cpp | 86 +++- - src/UtilityFunction/scrollarea.h | 16 +- - .../{pushbutton.cpp => splitbarframe.cpp} | 44 +- - .../{pushbutton.h => splitbarframe.h} | 7 +- - src/UtilityFunction/toolbutton.cpp | 30 +- - src/UtilityFunction/utility.cpp | 51 ++ - src/UtilityFunction/utility.h | 7 + - translations/ukui-menu_bo.ts | 326 ++++--------- - translations/ukui-menu_tr.ts | 194 +++++--- - translations/ukui-menu_zh_CN.ts | 194 +++++--- - ukui-menu.pro | 12 +- - 52 files changed, 1808 insertions(+), 1387 deletions(-) - create mode 100644 src/UtilityFunction/classifybtnscrollarea.cpp - rename src/UtilityFunction/{classifyscrollarea.h => classifybtnscrollarea.h} (76%) - delete mode 100644 src/UtilityFunction/classifyscrollarea.cpp - create mode 100644 src/UtilityFunction/proxystyle.cpp - create mode 100644 src/UtilityFunction/proxystyle.h - rename src/UtilityFunction/{pushbutton.cpp => splitbarframe.cpp} (72%) - rename src/UtilityFunction/{pushbutton.h => splitbarframe.h} (91%) - -diff --git a/main.cpp b/main.cpp -index a710cd3..f42f8dc 100644 ---- a/main.cpp -+++ b/main.cpp -@@ -23,9 +23,9 @@ - #include - #include - #include --#include - #include - #include -+#include "src/UtilityFunction/proxystyle.h" - - int main(int argc, char *argv[]) - { -@@ -44,6 +44,9 @@ int main(int argc, char *argv[]) - return EXIT_SUCCESS; - } - -+// auto Style=new ProxyStyle; -+// app.setStyle(Style); -+ - QTranslator translator; - if (translator.load(QLocale(), "ukui-menu", "_", QM_FILES_INSTALL_PATH)) - app.installTranslator(&translator); -@@ -52,44 +55,48 @@ int main(int argc, char *argv[]) - - MainWindow w; - app.setActivationWindow(&w); -- KWindowEffects::enableBlurBehind(w.winId(),true); -- --// int position=0; --// int panelSize=0; --// if(QGSettings::isSchemaInstalled(QString("org.ukui.panel.settings").toLocal8Bit())) --// { --// QGSettings* gsetting=new QGSettings(QString("org.ukui.panel.settings").toLocal8Bit()); --// if(gsetting->keys().contains(QString("panelposition"))) --// position=gsetting->get("panelposition").toInt(); --// else --// position=0; --// if(gsetting->keys().contains(QString("panelsize"))) --// panelSize=gsetting->get("panelsize").toInt(); --// else --// panelSize=46; --// } --// else --// { --// position=0; --// panelSize=46; --// } -+ w.setProperty("useSystemStyleBlur", true); - --// int x=QApplication::primaryScreen()->geometry().x(); --// int y=QApplication::primaryScreen()->geometry().y(); -+ //测试 -+ int position=0; -+ int panelSize=0; -+ if(QGSettings::isSchemaInstalled(QString("org.ukui.panel.settings").toLocal8Bit())) -+ { -+ QGSettings* gsetting=new QGSettings(QString("org.ukui.panel.settings").toLocal8Bit()); -+ if(gsetting->keys().contains(QString("panelposition"))) -+ position=gsetting->get("panelposition").toInt(); -+ else -+ position=0; -+ if(gsetting->keys().contains(QString("panelsize"))) -+ panelSize=gsetting->get("panelsize").toInt(); -+ else -+ panelSize=46; -+ } -+ else -+ { -+ position=0; -+ panelSize=46; -+ } - --// if(position==0) --// w.setGeometry(QRect(x,y+QApplication::primaryScreen()->geometry().height()-panelSize-Style::minh,Style::minw,Style::minh)); --// else if(position==1) --// w.setGeometry(QRect(x,y+panelSize,Style::minw,Style::minh)); --// else if(position==2) --// w.setGeometry(QRect(x+panelSize,y,Style::minw,Style::minh)); --// else --// w.setGeometry(QRect(x+QApplication::primaryScreen()->geometry().width()-panelSize-Style::minw,y,Style::minw,Style::minh)); -+ int x=QApplication::primaryScreen()->geometry().x(); -+ int y=QApplication::primaryScreen()->geometry().y(); - --// w.setFrameStyle(); --// w.show(); --// w.raise(); --// w.activateWindow(); -+ if(position==0) -+ w.setGeometry(QRect(x,y+QApplication::primaryScreen()->geometry().height()-panelSize-Style::minh, -+ Style::minw,Style::minh)); -+ else if(position==1) -+ w.setGeometry(QRect(x,y+panelSize,Style::minw,Style::minh)); -+ else if(position==2) -+ w.setGeometry(QRect(x+panelSize,y,Style::minw,Style::minh)); -+ else -+ w.setGeometry(QRect(x+QApplication::primaryScreen()->geometry().width()-panelSize-Style::minw,y, -+ Style::minw,Style::minh)); -+ w.show(); -+ w.raise(); -+ w.update(); -+ w.activateWindow(); -+ w.hide(); -+ //测试 - - return app.exec(); - } -diff --git a/src/CommonUseWidget/commonusewidget.cpp b/src/CommonUseWidget/commonusewidget.cpp -index 1b9f98d..25bb31f 100644 ---- a/src/CommonUseWidget/commonusewidget.cpp -+++ b/src/CommonUseWidget/commonusewidget.cpp -@@ -38,9 +38,8 @@ CommonUseWidget::~CommonUseWidget() - void CommonUseWidget::initUi() - { - this->setWindowFlags(Qt::CustomizeWindowHint | Qt::FramelessWindowHint); -- this->setAttribute(Qt::WA_StyledBackground,true); -- this->setStyleSheet("border:0px;background:transparent;"); - this->setSizePolicy(QSizePolicy::Fixed,QSizePolicy::Fixed); -+ this->setAttribute(Qt::WA_TranslucentBackground); - this->setFixedSize(Style::defaultMainViewWidWidth,Style::defaultContentWidHeight); - - m_ukuiMenuInterface=new UkuiMenuInterface; -@@ -54,8 +53,8 @@ void CommonUseWidget::initUi() - */ - void CommonUseWidget::initAppListWidget() - { -- m_listView=new ListView(this,this->width()-4,this->height(),0); -- m_listView->setGeometry(QRect(0,0,this->width()-4,this->height())); -+ m_listView=new ListView(this,this->width()-6,this->height()-6,0); -+ m_listView->setGeometry(QRect(6,0,this->width()-6,this->height()-6)); - m_listView->show(); - connect(m_listView,&ListView::sendItemClickedSignal,this,&CommonUseWidget::execApplication); - connect(m_listView,&ListView::sendUpdateAppListSignal,this,&CommonUseWidget::updateListViewSlot); -@@ -97,7 +96,7 @@ void CommonUseWidget::updateListViewSlot() - void CommonUseWidget::updateListView() - { - m_data.clear(); -- Q_FOREACH(QString desktopfp,m_ukuiMenuInterface->getAllApp()) -+ Q_FOREACH(QString desktopfp,m_ukuiMenuInterface->getAllClassification()) - m_data.append(QStringList()<updateData(m_data); - } -@@ -118,6 +117,6 @@ void CommonUseWidget::moveScrollBar(int type) - void CommonUseWidget::repaintWidget() - { - this->setFixedSize(Style::defaultMainViewWidWidth,Style::defaultContentWidHeight); -- m_listView->setGeometry(QRect(0,0,this->width()-4,this->height())); -+ m_listView->setGeometry(QRect(6,0,this->width()-6,this->height()-6)); - m_listView->show(); - } -diff --git a/src/CommonUseWidget/fullcommonusewidget.cpp b/src/CommonUseWidget/fullcommonusewidget.cpp -index d394fed..d9fd0e6 100644 ---- a/src/CommonUseWidget/fullcommonusewidget.cpp -+++ b/src/CommonUseWidget/fullcommonusewidget.cpp -@@ -36,13 +36,11 @@ void FullCommonUseWidget::initUi() - { - this->setWindowFlags(Qt::CustomizeWindowHint | Qt::FramelessWindowHint); - this->setAttribute(Qt::WA_StyledBackground,true); -- this->setStyleSheet("border:0px;background:transparent;"); - this->setSizePolicy(QSizePolicy::Fixed,QSizePolicy::Fixed); - this->setFixedSize(Style::MainViewWidWidth, - Style::AppListWidHeight); - - QHBoxLayout* mainLayout=new QHBoxLayout; --// mainLayout->setContentsMargins(Style::LeftWidWidth,0,0,0); - mainLayout->setContentsMargins(0,0,0,0); - this->setLayout(mainLayout); - m_spaceItem=new QSpacerItem(40,20,QSizePolicy::Expanding,QSizePolicy::Fixed); -@@ -57,7 +55,7 @@ void FullCommonUseWidget::initUi() - void FullCommonUseWidget::initAppListWidget() - { - m_listView=new FullListView(this,0); -- m_listView->setFixedSize(this->width()-Style::LeftWidWidth,this->height()); -+ m_listView->setFixedSize(this->width()-Style::LeftWidWidth+1,this->height()); - QHBoxLayout *mainLayout=qobject_cast(this->layout()); - mainLayout->insertWidget(1,m_listView); - connect(m_listView,&FullListView::sendItemClickedSignal,this,&FullCommonUseWidget::execApplication); -@@ -94,7 +92,7 @@ void FullCommonUseWidget::updateListViewSlot() - void FullCommonUseWidget::updateListView() - { - m_data.clear(); -- Q_FOREACH(QString desktopfp,m_ukuiMenuInterface->getAllApp()) -+ Q_FOREACH(QString desktopfp,m_ukuiMenuInterface->getAllClassification()) - m_data.append(desktopfp); - m_listView->updateData(m_data); - } -diff --git a/src/FunctionWidget/fullfunctionwidget.cpp b/src/FunctionWidget/fullfunctionwidget.cpp -index 92d9b17..0e43fb0 100644 ---- a/src/FunctionWidget/fullfunctionwidget.cpp -+++ b/src/FunctionWidget/fullfunctionwidget.cpp -@@ -38,9 +38,8 @@ FullFunctionWidget::~FullFunctionWidget() - void FullFunctionWidget::initUi() - { - this->setWindowFlags(Qt::CustomizeWindowHint | Qt::FramelessWindowHint); -- this->setAttribute(Qt::WA_StyledBackground,true); -- this->setStyleSheet("border:0px;background:transparent;"); - this->setSizePolicy(QSizePolicy::Fixed,QSizePolicy::Fixed); -+ this->setAttribute(Qt::WA_TranslucentBackground); - m_applistWid=new QWidget(this); - m_iconListWid=new QWidget(this); - this->setFixedSize(Style::MainViewWidWidth, -@@ -51,8 +50,6 @@ void FullFunctionWidget::initUi() - QHBoxLayout* mainLayout=new QHBoxLayout; - mainLayout->setContentsMargins(0,0,0,0); - mainLayout->setSpacing(0); -- m_applistWid->setStyleSheet("border:0px;background:transparent;"); -- m_iconListWid->setStyleSheet("border:0px;background:transparent"); - mainLayout->addWidget(m_iconListWid); - mainLayout->addWidget(m_applistWid); - this->setLayout(mainLayout); -@@ -73,7 +70,8 @@ void FullFunctionWidget::initAppListWidget() - m_applistWid->setLayout(layout); - - m_scrollArea=new ScrollArea; -- m_scrollAreaWid=new QWidget; -+ m_scrollAreaWid=new ScrollAreaWid; -+ m_scrollAreaWid->setAttribute(Qt::WA_TranslucentBackground); - m_scrollArea->setFixedSize(m_applistWid->width(),m_applistWid->height()); - m_scrollArea->setWidget(m_scrollAreaWid); - m_scrollArea->setWidgetResizable(true); -@@ -168,8 +166,7 @@ void FullFunctionWidget::fillAppList() - - void FullFunctionWidget::insertClassificationBtn(QString category) - { -- PushButton* classificationbtn=new PushButton(this,category,m_scrollArea->width()-12,30,2); --// classificationbtn->setFixedSize(m_scrollArea->width()-12,25); -+ SplitBarFrame* classificationbtn=new SplitBarFrame(this,category,m_scrollArea->width()-12,30,2); - m_scrollAreaWidLayout->addWidget(classificationbtn); - m_classificationList.append(category); - -@@ -178,6 +175,10 @@ void FullFunctionWidget::insertClassificationBtn(QString category) - void FullFunctionWidget::insertAppList(QStringList desktopfplist) - { - FullListView* listview=new FullListView(this,2); -+ //修复异常黑框问题 -+ connect(m_scrollArea, &ScrollArea::requestUpdate, listview->viewport(), [=](){ -+ listview->repaint(listview->rect()); -+ }); - m_scrollAreaWidLayout->addWidget(listview); - m_data.clear(); - for(int i=0;igetRecentApp(); --// if(!recentlist.isEmpty())//最近添加非空 --// { --// if(m_classificationList.contains(tr("Recently")))//有最近添加分类 --// { --// QLayoutItem *child; --// if((child = m_scrollAreaWidLayout->itemAt(1)) != 0) --// { --// QWidget* wid=child->widget(); --// FullListView* listview=qobject_cast(wid); --// for(int i=0;igetDesktopPathByAppName(recentlist.at(i)); --// data.append(desktopfp); --// } --// listview->updateData(data); --// } --// } --// else//无最近添加分类 --// { --// PushButton* classificationbtn=new PushButton(this,tr("Recently"),scrollarea->width()-12,20); --// classificationbtn->setFixedSize(scrollarea->width()-12,20); --// m_scrollAreaWidLayout->insertWidget(0,classificationbtn); --// m_classificationList.insert(0,tr("Recently")); -- --// FullListView* listview=new FullListView(this,2); --// m_scrollAreaWidLayout->insertWidget(1,listview); --// for(int i=0;igetDesktopPathByAppName(recentlist.at(i)); --// data.append(desktopfp); --// } --// listview->addData(data); --// connect(listview,SIGNAL(sendItemClickedSignal(QString)),this,SLOT(execApplication(QString))); -- --// //刷新图标列表界面 --// Q_FOREACH (QAbstractButton* button, m_buttonList){ --// m_btnGroup->removeButton(button); --// } --// m_buttonList.clear(); --// QLayoutItem *child; --// while ((child = m_iconListScrollAreaWidLayout->takeAt(0)) != 0) { --// QWidget* wid=child->widget(); --// m_iconListScrollAreaWidLayout->removeWidget(wid); --// wid->setParent(nullptr); --// delete wid; --// delete child; --// } --// initIconListScrollArea(); --// } --// } --// else//最近添加为空 --// { --// if(m_classificationList.contains(tr("Recently"))) --// { --// int num=0; --// QLayoutItem *child; --// while ((child = m_scrollAreaWidLayout->takeAt(0)) != 0) { --// QWidget* wid=child->widget(); --// m_scrollAreaWidLayout->removeWidget(wid); --// wid->setParent(nullptr); --// delete wid; --// delete child; --// num++; --// if(num==2) --// break; --// } --// m_classificationList.removeAt(0); -- --// //刷新图标列表界面 --// Q_FOREACH (QAbstractButton* button, m_buttonList){ --// m_btnGroup->removeButton(button); --// } --// m_buttonList.clear(); --// while ((child = m_iconListScrollAreaWidLayout->takeAt(0)) != 0) { --// QWidget* wid=child->widget(); --// m_iconListScrollAreaWidLayout->removeWidget(wid); --// wid->setParent(nullptr); --// delete wid; --// delete child; --// } --// initIconListScrollArea(); --// } --// } --// resizeScrollAreaControls(); --// setting->endGroup(); --//} -- - /** - * 执行应用程序 - */ -@@ -312,6 +219,8 @@ void FullFunctionWidget::updateAppListView() - m_btnGroup->removeButton(button); - } - m_buttonList.clear(); -+ m_iconListScrollAreaWidLayout->removeItem(m_topSpacerItem); -+ m_iconListScrollAreaWidLayout->removeItem(m_bottomSpacerItem); - while ((child = m_iconListScrollAreaWidLayout->takeAt(0)) != 0) { - QWidget* wid=child->widget(); - m_iconListScrollAreaWidLayout->removeWidget(wid); -@@ -358,14 +267,20 @@ void FullFunctionWidget::resizeScrollAreaControls() - */ - void FullFunctionWidget::initIconListWidget() - { -- m_iconListScrollArea=new ClassifyScrollArea(m_iconListWid); -- m_iconListScrollAreaWid=new QWidget; -+ m_iconListScrollArea=new ClassifyBtnScrollArea(m_iconListWid); -+ m_iconListScrollArea->setFixedSize(Style::LeftBtnWidth, -+ m_iconListWid->height()); -+ m_iconListScrollAreaWid=new ClassifyBtnScrollAreaWid; -+ m_iconListScrollAreaWid->setFixedSize(m_iconListScrollArea->width(),m_iconListScrollArea->height()); - m_iconListScrollAreaWidLayout=new QVBoxLayout; - m_iconListScrollAreaWidLayout->setContentsMargins(0,0,0,0); - m_iconListScrollAreaWidLayout->setSpacing(Style::LeftSpaceBetweenItem); - m_iconListScrollAreaWid->setLayout(m_iconListScrollAreaWidLayout); - m_iconListScrollArea->setWidget(m_iconListScrollAreaWid); - -+ m_topSpacerItem=new QSpacerItem(20,40,QSizePolicy::Fixed,QSizePolicy::Expanding); -+ m_bottomSpacerItem=new QSpacerItem(20,40,QSizePolicy::Fixed,QSizePolicy::Expanding); -+ - m_btnGroup=new QButtonGroup(m_iconListScrollAreaWid); - m_animation = new QPropertyAnimation(m_iconListScrollArea, "geometry"); - -@@ -382,33 +297,28 @@ void FullFunctionWidget::initIconListWidget() - */ - void FullFunctionWidget::initIconListScrollArea() - { -+ m_iconListScrollAreaWidLayout->addItem(m_topSpacerItem); - for(int i=0;i vector=UkuiMenuInterface::functionalVector; --// QStringList androidlist=vector.at(0); --// for(int index=0;indexsetChecked(false); -- m_buttonList.append(iconbtn); -- m_iconListScrollAreaWidLayout->addWidget(iconbtn); --// } -- -+ FunctionClassifyButton* iconbtn=new FunctionClassifyButton( -+ Style::LeftBtnWidth, -+ Style::LeftBtnHeight, -+ Style::LeftIconSize, -+ m_classificationList.at(i), -+ true, -+ true); -+ iconbtn->setChecked(false); -+ m_buttonList.append(iconbtn); -+ m_iconListScrollAreaWidLayout->addWidget(iconbtn); - } -+ m_iconListScrollAreaWidLayout->addItem(m_bottomSpacerItem); - - int id=0; - Q_FOREACH (QAbstractButton* btn, m_buttonList) { - m_btnGroup->addButton(btn,id++); - } - connect(m_btnGroup,static_cast(&QButtonGroup::buttonClicked),this,&FullFunctionWidget::btnGroupClickedSlot); -- m_iconListScrollArea->widget()->adjustSize(); -+// m_iconListScrollArea->widget()->adjustSize(); - m_btnGroup->button(0)->click(); - } - -@@ -489,14 +399,13 @@ void FullFunctionWidget::valueChangedSlot(int value) - - void FullFunctionWidget::enterAnimation() - { -- int height=m_classificationList.size()*Style::LeftBtnHeight+(m_classificationList.size()-1)*Style::LeftSpaceBetweenItem; - m_animation->setDuration(200);//动画总时间 -- m_animation->setStartValue(QRect(0,(m_iconListWid->height()-height)/2, -- 0,height)); -+ m_animation->setStartValue(QRect(0,0, -+ 0,m_iconListWid->height())); - m_animation->setEndValue(QRect(Style::LeftMargin, -- (m_iconListWid->height()-height)/2, -+ 0, - Style::LeftBtnWidth, -- height)); -+ m_iconListWid->height())); - m_animation->setEasingCurve(QEasingCurve::InQuart); - m_animation->start(); - m_iconListScrollArea->show(); -@@ -504,11 +413,11 @@ void FullFunctionWidget::enterAnimation() - - void FullFunctionWidget::setFunctionBtnGeometry() - { -- int height=m_classificationList.size()*Style::LeftBtnHeight+(m_classificationList.size()-1)*Style::LeftSpaceBetweenItem; -+// int height=m_classificationList.size()*Style::LeftBtnHeight+(m_classificationList.size()-1)*Style::LeftSpaceBetweenItem; - m_iconListScrollArea->setGeometry(QRect(Style::LeftMargin, -- (m_iconListWid->height()-height)/2, -+ 0, - Style::LeftBtnWidth, -- height)); -+ m_iconListWid->height())); - m_iconListScrollArea->show(); - - } -@@ -519,22 +428,16 @@ void FullFunctionWidget::repaintWidget() - Style::AppListWidHeight); - m_applistWid->setFixedSize(Style::AppListWidWidth,this->height()); - m_iconListWid->setFixedSize(Style::LeftWidWidth,this->height()); -+ m_iconListScrollArea->setFixedSize(Style::LeftBtnWidth, -+ m_iconListWid->height()); -+ m_iconListScrollAreaWid->setFixedSize(m_iconListScrollArea->width(),m_iconListScrollArea->height()); -+// m_iconListScrollArea->widget()->adjustSize(); - m_scrollArea->setFixedSize(m_applistWid->width(),m_applistWid->height()); - updateAppListView(); - } - - void FullFunctionWidget::widgetMakeZero() - { --// Q_FOREACH (QAbstractButton* button, m_buttonList) { --// int num=m_classificationList.indexOf(functionnamelist.at(m_buttonList.indexOf(button))); --// if(num!=-1) --// { --// m_btnGroup->button(num)->setChecked(true); --// m_btnGroup->button(num)->click(); --// m_iconListScrollArea->verticalScrollBar()->setSliderPosition(0); --// break; --// } --// } - m_btnGroup->button(0)->click(); - m_scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn); - } -diff --git a/src/FunctionWidget/fullfunctionwidget.h b/src/FunctionWidget/fullfunctionwidget.h -index 8912cb8..185dd8b 100644 ---- a/src/FunctionWidget/fullfunctionwidget.h -+++ b/src/FunctionWidget/fullfunctionwidget.h -@@ -35,9 +35,9 @@ - #include - #include "src/Interface/ukuimenuinterface.h" - #include "src/UtilityFunction/scrollarea.h" --#include "src/UtilityFunction/pushbutton.h" -+#include "src/UtilityFunction/splitbarframe.h" - #include "src/UtilityFunction/fulllistview.h" --#include "src/UtilityFunction/classifyscrollarea.h" -+#include "src/UtilityFunction/classifybtnscrollarea.h" - #include "src/UtilityFunction/toolbutton.h" - #include "src/UtilityFunction/functionclassifybutton.h" - #include "src/Style/style.h" -@@ -78,18 +78,20 @@ private: - UkuiMenuInterface* m_ukuiMenuInterface=nullptr; - QWidget* m_applistWid=nullptr; - ScrollArea* m_scrollArea=nullptr; -- QWidget* m_scrollAreaWid=nullptr; -+ ScrollAreaWid* m_scrollAreaWid=nullptr; - QVBoxLayout* m_scrollAreaWidLayout=nullptr; - QStringList m_classificationList;//Store the list of category buttons - QStringList m_data; - - /*Function classification list interface*/ - QWidget* m_iconListWid=nullptr; -- ClassifyScrollArea* m_iconListScrollArea=nullptr; -- QWidget* m_iconListScrollAreaWid=nullptr; -+ ClassifyBtnScrollArea* m_iconListScrollArea=nullptr; -+ ClassifyBtnScrollAreaWid* m_iconListScrollAreaWid=nullptr; - QVBoxLayout* m_iconListScrollAreaWidLayout=nullptr; - QList m_buttonList; - QButtonGroup* m_btnGroup=nullptr; -+ QSpacerItem* m_topSpacerItem=nullptr; -+ QSpacerItem* m_bottomSpacerItem=nullptr; - - /*Animation*/ - QPropertyAnimation* m_animation=nullptr;//Function category button animation -@@ -107,7 +109,6 @@ protected: - */ - void initIconListWidget(); - void initIconListScrollArea(); -- - /** - * @brief Initialize the application list interface - */ -diff --git a/src/FunctionWidget/functionbuttonwidget.cpp b/src/FunctionWidget/functionbuttonwidget.cpp -index 02f3738..0cde546 100644 ---- a/src/FunctionWidget/functionbuttonwidget.cpp -+++ b/src/FunctionWidget/functionbuttonwidget.cpp -@@ -48,7 +48,6 @@ void FunctionButtonWidget::initUi() - { - this->setWindowFlags(Qt::CustomizeWindowHint | Qt::FramelessWindowHint); - this->setAttribute(Qt::WA_StyledBackground,true); -- this->setStyleSheet("border:0px;background:transparent;"); - this->resize(Style::LeftBtnWidth*2+5,Style::LeftBtnHeight*6+25); - - QGridLayout* gridLayout=new QGridLayout; -@@ -67,9 +66,21 @@ void FunctionButtonWidget::initUi() - false); - - gridLayout->addWidget(iconbtn,row,col); -+ m_buttonList.append(iconbtn); - connect(iconbtn,&FunctionClassifyButton::buttonClicked,this, &FunctionButtonWidget::functionBtnClickedSlot); - if(row*2+col==10)break; - } -+ -+ if(QGSettings::isSchemaInstalled(QString("org.ukui.style").toLocal8Bit())) -+ { -+ QGSettings* gsetting=new QGSettings(QString("org.ukui.style").toLocal8Bit()); -+ connect(gsetting,&QGSettings::changed,this,[=]{ -+ Q_FOREACH (QAbstractButton* btn, m_buttonList) { -+ FunctionClassifyButton *fbtn=qobject_cast(btn); -+ fbtn->updateIconState(); -+ } -+ }); -+ } - } - - /** -diff --git a/src/FunctionWidget/functionbuttonwidget.h b/src/FunctionWidget/functionbuttonwidget.h -index 2b4bb9b..e2cc5d1 100644 ---- a/src/FunctionWidget/functionbuttonwidget.h -+++ b/src/FunctionWidget/functionbuttonwidget.h -@@ -39,6 +39,7 @@ public: - - private: - QStringList m_categoryList; -+ QList m_buttonList; - - protected: - /** -diff --git a/src/FunctionWidget/functionwidget.cpp b/src/FunctionWidget/functionwidget.cpp -index 0ea09a1..91303fd 100644 ---- a/src/FunctionWidget/functionwidget.cpp -+++ b/src/FunctionWidget/functionwidget.cpp -@@ -38,7 +38,6 @@ void FunctionWidget::initUi() - { - this->setWindowFlags(Qt::CustomizeWindowHint | Qt::FramelessWindowHint); - this->setAttribute(Qt::WA_StyledBackground,true); -- this->setStyleSheet("border:0px;background:transparent;"); - this->setSizePolicy(QSizePolicy::Fixed,QSizePolicy::Fixed); - this->setFixedSize(Style::defaultMainViewWidWidth,Style::defaultContentWidHeight); - -@@ -64,8 +63,8 @@ void FunctionWidget::initUi() - */ - void FunctionWidget::initAppListWidget() - { -- m_appListView=new ListView(this,this->width()-4,this->height(),2); -- m_appListView->setGeometry(QRect(0,0,this->width()-4,this->height())); -+ m_appListView=new ListView(this,this->width()-6,this->height()-6,2); -+ m_appListView->setGeometry(QRect(6,0,this->width()-6,this->height()-6)); - m_appListView->show(); - fillAppListView(0); - connect(m_appListView,&ListView::sendItemClickedSignal,this,&FunctionWidget::recvItemClickedSlot); -@@ -203,7 +202,7 @@ void FunctionWidget::updateAppListView() - */ - void FunctionWidget::appClassificationBtnClickedSlot() - { -- m_leaveAnimation->setStartValue(QRect(0,0,this->width()-4,this->height())); -+ m_leaveAnimation->setStartValue(QRect(6,0,this->width()-6,this->height()-6)); - m_leaveAnimation->setEndValue(QRect(20,20,this->width()-40,this->height()-40)); - m_enterAnimation->setStartValue(QRect(-40,-40,this->width()+80,this->height()+80)); - m_enterAnimation->setEndValue(QRect((this->width()-Style::LeftBtnWidth*2-5)/2, -@@ -240,7 +239,7 @@ void FunctionWidget::recvFunctionBtnSignal(QString btnname) - Style::LeftBtnHeight*6+25)); - m_leaveAnimation->setEndValue(QRect(-40,-40,this->width()+80,this->height()+80)); - m_enterAnimation->setStartValue(QRect(20,20,this->width()-40,this->height()-40)); -- m_enterAnimation->setEndValue(QRect(0,0,this->width()-4,this->height())); -+ m_enterAnimation->setEndValue(QRect(6,0,this->width()-6,this->height()-6)); - m_leaveAnimation->setDuration(80); - m_enterAnimation->setDuration(10); - -@@ -271,7 +270,7 @@ void FunctionWidget::animationFinishedSLot() - void FunctionWidget::widgetMakeZero() - { - m_functionBtnWid->hide(); -- m_appListView->setGeometry(QRect(0,0,this->width()-4,this->height())); -+ m_appListView->setGeometry(QRect(6,0,this->width()-6,this->height()-6)); - m_appListView->show(); - m_appListView->verticalScrollBar()->setValue(0); - } -@@ -287,6 +286,6 @@ void FunctionWidget::moveScrollBar(int type) - void FunctionWidget::repaintWidget() - { - this->setFixedSize(Style::defaultMainViewWidWidth,Style::defaultContentWidHeight); -- m_appListView->setGeometry(QRect(0,0,this->width()-4,this->height())); -+ m_appListView->setGeometry(QRect(6,0,this->width()-6,this->height()-6)); - m_appListView->show(); - } -diff --git a/src/Interface/ukuimenuinterface.cpp b/src/Interface/ukuimenuinterface.cpp -index 82a3d12..87489c5 100644 ---- a/src/Interface/ukuimenuinterface.cpp -+++ b/src/Interface/ukuimenuinterface.cpp -@@ -369,7 +369,7 @@ bool UkuiMenuInterface::cmpApp(QStringList &arg_1, QStringList &arg_2) - return false; - } - --QVector UkuiMenuInterface::getAllApp() -+QVector UkuiMenuInterface::getAllClassification() - { - QVector allAppVector; - QVector commonVector; -diff --git a/src/Interface/ukuimenuinterface.h b/src/Interface/ukuimenuinterface.h -index 4f2d498..e0f703c 100644 ---- a/src/Interface/ukuimenuinterface.h -+++ b/src/Interface/ukuimenuinterface.h -@@ -63,10 +63,10 @@ public: - QString getAppComment(QString desktopfp);//获取应用注释 - QStringList getDesktopFilePath();//获取系统deskyop文件路径 - -- QVector getAlphabeticClassification();//获取字母分类 -- QVector getFunctionalClassification();//获取功能分类 -+ QVector getAlphabeticClassification();//字母分类模块 -+ QVector getFunctionalClassification();//功能分类模块 - QVector getCommonUseApp();//获取常用App -- QVector getAllApp(); -+ QVector getAllClassification();//所有软件模块 - void getAndroidApp();//获取安卓应用 - static bool cmpApp(QStringList &arg_1,QStringList &arg_2); - bool matchingAppCategories(QString desktopfp,QStringList categorylist);//匹配应用Categories -diff --git a/src/LetterWidget/fullletterwidget.cpp b/src/LetterWidget/fullletterwidget.cpp -index 06641b8..21b46be 100644 ---- a/src/LetterWidget/fullletterwidget.cpp -+++ b/src/LetterWidget/fullletterwidget.cpp -@@ -37,9 +37,8 @@ FullLetterWidget::~FullLetterWidget() - void FullLetterWidget::initUi() - { - this->setWindowFlags(Qt::CustomizeWindowHint | Qt::FramelessWindowHint); -- this->setAttribute(Qt::WA_StyledBackground,true); -- this->setStyleSheet("border:0px;background:transparent;"); - this->setSizePolicy(QSizePolicy::Fixed,QSizePolicy::Fixed); -+ this->setAttribute(Qt::WA_TranslucentBackground); - - m_applistWid=new QWidget(this); - m_letterListWid=new QWidget(this); -@@ -51,8 +50,6 @@ void FullLetterWidget::initUi() - QHBoxLayout* mainLayout=new QHBoxLayout; - mainLayout->setContentsMargins(0,0,0,0); - mainLayout->setSpacing(0); -- m_applistWid->setStyleSheet("border:0px;background: transparent;"); -- m_letterListWid->setStyleSheet("border:0px;background: transparent;"); - mainLayout->addWidget(m_letterListWid); - mainLayout->addWidget(m_applistWid); - this->setLayout(mainLayout); -@@ -72,7 +69,7 @@ void FullLetterWidget::initAppListWidget() - m_applistWid->setLayout(layout); - - m_scrollArea=new ScrollArea; -- m_scrollAreaWid=new QWidget; -+ m_scrollAreaWid=new ScrollAreaWid; - m_scrollArea->setWidget(m_scrollAreaWid); - m_scrollArea->setFixedSize(m_applistWid->width(),m_applistWid->height()); - m_scrollArea->setWidgetResizable(true); -@@ -86,6 +83,7 @@ void FullLetterWidget::initAppListWidget() - - fillAppList(); - -+ - } - - /** -@@ -109,12 +107,17 @@ void FullLetterWidget::fillAppList() - letterstr="#"; - m_letterList.append(letterstr);//存储分类字符 - //插入字母分类按钮 -- PushButton* letterbtn=new PushButton(this,letterstr,m_scrollArea->width()-12,30,1); --// letterbtn->setFixedSize(m_scrollArea->width(),20); -+ SplitBarFrame* letterbtn=new SplitBarFrame(this,letterstr,m_scrollArea->width()-12,30,1); - m_scrollAreaWidLayout->addWidget(letterbtn); - - //插入应用列表 - FullListView* listview=new FullListView(this,1); -+ -+ //修复异常黑框问题 -+ connect(m_scrollArea, &ScrollArea::requestUpdate, listview->viewport(), [=](){ -+ listview->repaint(listview->rect()); -+ }); -+ - m_scrollAreaWidLayout->addWidget(listview); - m_data.clear(); - for(int i=0;isetContentsMargins(0,0,0,0); - m_letterListScrollAreaWidLayout->setSpacing(0); -@@ -238,19 +241,14 @@ void FullLetterWidget::initLetterListWidget() - */ - void FullLetterWidget::initLetterListScrollArea() - { --// m_letterListScrollArea->setStyleSheet("border:1px solid #ff0000;"); --// m_letterListScrollArea->setFixedSize(Style::LeftLetterBtnHeight*2, --// (m_letterList.size()+1)*Style::LeftLetterBtnHeight); -- --// m_letterListScrollArea->setStyleSheet("border:1px solid #ff0000;"); - if(m_letterList.contains("&")) - m_letterList.replace(m_letterList.indexOf("&"),"&&"); - for(int i=0;isetFixedSize(Style::LeftLetterBtnHeight,Style::LeftLetterBtnHeight); - m_buttonList.append(letterbtn); - m_letterListScrollAreaWidLayout->addWidget(letterbtn); - m_letterListScrollAreaWidLayout->setAlignment(letterbtn,Qt::AlignHCenter); -diff --git a/src/LetterWidget/fullletterwidget.h b/src/LetterWidget/fullletterwidget.h -index 8e7d9c0..dc3a4e4 100644 ---- a/src/LetterWidget/fullletterwidget.h -+++ b/src/LetterWidget/fullletterwidget.h -@@ -43,9 +43,9 @@ - #include - #include "src/UtilityFunction/letterclassifybutton.h" - #include "src/UtilityFunction/scrollarea.h" --#include "src/UtilityFunction/pushbutton.h" -+#include "src/UtilityFunction/splitbarframe.h" - #include "src/UtilityFunction/fulllistview.h" --#include "src/UtilityFunction/classifyscrollarea.h" -+#include "src/UtilityFunction/classifybtnscrollarea.h" - #include "src/UtilityFunction/toolbutton.h" - #include "src/Style/style.h" - -@@ -85,15 +85,15 @@ private: - UkuiMenuInterface* m_ukuiMenuInterface=nullptr; - QWidget* m_applistWid=nullptr; - ScrollArea* m_scrollArea=nullptr; -- QWidget* m_scrollAreaWid=nullptr; -+ ScrollAreaWid* m_scrollAreaWid=nullptr; - QVBoxLayout* m_scrollAreaWidLayout=nullptr; - QStringList m_letterList;//Store the list of letter buttons - QStringList m_data; - - /*Alphabetic classification list interface*/ - QWidget* m_letterListWid=nullptr; -- ClassifyScrollArea* m_letterListScrollArea=nullptr; -- QWidget* m_letterListScrollAreaWid=nullptr; -+ ClassifyBtnScrollArea* m_letterListScrollArea=nullptr; -+ ClassifyBtnScrollAreaWid* m_letterListScrollAreaWid=nullptr; - QVBoxLayout* m_letterListScrollAreaWidLayout=nullptr; - QList m_buttonList; - QButtonGroup* m_btnGroup=nullptr; -@@ -110,6 +110,7 @@ protected: - * @brief Initializes UI - */ - void initUi(); -+// void paintEvent(QPaintEvent *event); - /** - * @brief fill application list - */ -diff --git a/src/LetterWidget/letterbuttonwidget.cpp b/src/LetterWidget/letterbuttonwidget.cpp -index 31aa016..0af01bb 100644 ---- a/src/LetterWidget/letterbuttonwidget.cpp -+++ b/src/LetterWidget/letterbuttonwidget.cpp -@@ -35,7 +35,6 @@ void LetterButtonWidget::initUi() - { - this->setWindowFlags(Qt::CustomizeWindowHint | Qt::FramelessWindowHint); - this->setAttribute(Qt::WA_StyledBackground,true); -- this->setStyleSheet("border:0px;background:transparent;"); - this->resize(235,366); - - QGridLayout* gridLayout=new QGridLayout; -@@ -43,14 +42,6 @@ void LetterButtonWidget::initUi() - gridLayout->setSpacing(5); - this->setLayout(gridLayout); - -- char btncolor[400]; -- sprintf(btncolor,"QToolButton{background:transparent;color:#ffffff;padding-left:0px;}\ -- QToolButton:hover{background-color:%s;color:#ffffff;border-radius:4px;}\ -- QToolButton:pressed{background-color:%s;color:#ffffff;border-radius:4px;}\ -- QToolButton:disabled{color:rgba(255, 255, 255, 0.25);}", -- ClassifyBtnHoverBackground, -- ClassifyBtnHoverBackground); -- - QStringList letterlist; - letterlist.clear(); - for(int i=0;i<26;i++) -@@ -67,12 +58,12 @@ void LetterButtonWidget::initUi() - { - if(row*4+colsetFlat(true); -+ btn->setCheckable(false); - btn->setFixedSize(55,48); -- btn->setStyleSheet(QString::fromLocal8Bit(btncolor)); -- btn->setText(letterlist.at(row*4+col)); - gridLayout->addWidget(btn,row,col); -- connect(btn, &QToolButton::clicked, this, &LetterButtonWidget::letterBtnClickedSlot); -+ connect(btn,&LetterClassifyButton::buttonClicked,this, &LetterButtonWidget::letterBtnClickedSlot); - } - else { - break; -@@ -86,7 +77,7 @@ void LetterButtonWidget::initUi() - */ - void LetterButtonWidget::letterBtnClickedSlot() - { -- QToolButton* btn=dynamic_cast(QObject::sender()); -+ LetterClassifyButton* btn=dynamic_cast(QObject::sender()); - QString btnname=btn->text(); - Q_EMIT sendLetterBtnSignal(btnname); - } -@@ -102,7 +93,7 @@ void LetterButtonWidget::recvLetterBtnList(QStringList list) - for(int col=0;col<4;col++) - { - QLayoutItem* item=gridLayout->itemAt(row*4+col); -- QToolButton* btn=static_cast(item->widget()); -+ LetterClassifyButton* btn=static_cast(item->widget()); - QString letterstr=btn->text(); - if(list.indexOf(letterstr.at(0))==-1) - btn->setEnabled(false); -diff --git a/src/LetterWidget/letterbuttonwidget.h b/src/LetterWidget/letterbuttonwidget.h -index 904166c..7c03a67 100644 ---- a/src/LetterWidget/letterbuttonwidget.h -+++ b/src/LetterWidget/letterbuttonwidget.h -@@ -26,7 +26,7 @@ - #include - #include - #include --#include "src/UtilityFunction/functionclassifybutton.h" -+#include "src/UtilityFunction/letterclassifybutton.h" - - class LetterButtonWidget : public QWidget - { -diff --git a/src/LetterWidget/letterwidget.cpp b/src/LetterWidget/letterwidget.cpp -index 3c13fca..153a2b5 100644 ---- a/src/LetterWidget/letterwidget.cpp -+++ b/src/LetterWidget/letterwidget.cpp -@@ -47,7 +47,6 @@ void LetterWidget::initUi() - { - this->setWindowFlags(Qt::CustomizeWindowHint | Qt::FramelessWindowHint); - this->setAttribute(Qt::WA_StyledBackground,true); -- this->setStyleSheet("border:0px;background:transparent;"); - this->setSizePolicy(QSizePolicy::Fixed,QSizePolicy::Fixed); - this->setFixedSize(Style::defaultMainViewWidWidth,Style::defaultContentWidHeight); - -@@ -72,8 +71,8 @@ void LetterWidget::initUi() - */ - void LetterWidget::initAppListWidget() - { -- m_appListView=new ListView(this,this->width()-4,this->height(),1); -- m_appListView->setGeometry(QRect(0,0,this->width()-4,this->height())); -+ m_appListView=new ListView(this,this->width()-6,this->height()-6,1); -+ m_appListView->setGeometry(QRect(6,0,this->width()-6,this->height()-6)); - m_appListView->show(); - fillAppListView(); - connect(m_appListView,&ListView::sendItemClickedSignal,this,&LetterWidget::recvItemClickedSlot); -@@ -176,7 +175,7 @@ void LetterWidget::updateAppListView() - */ - void LetterWidget::appClassificationBtnClickedSlot() - { -- m_leaveAnimation->setStartValue(QRect(0,0,this->width()-4,this->height())); -+ m_leaveAnimation->setStartValue(QRect(6,0,this->width()-6,this->height()-6)); - m_leaveAnimation->setEndValue(QRect(20,20,this->width()-40,this->height()-40)); - m_enterAnimation->setStartValue(QRect(-40,-40,this->width()+80,this->height()+80)); - m_enterAnimation->setEndValue(QRect((this->width()-235)/2,(this->height()-366)/2,235,366)); -@@ -208,7 +207,7 @@ void LetterWidget::recvLetterBtnSlot(QString btnname) - m_leaveAnimation->setStartValue(QRect((this->width()-235)/2,(this->height()-366)/2,235,366)); - m_leaveAnimation->setEndValue(QRect(-40,-40,this->width()+80,this->height()+80)); - m_enterAnimation->setStartValue(QRect(20,20,this->width()-40,this->height()-40)); -- m_enterAnimation->setEndValue(QRect(0,0,this->width()-4,this->height())); -+ m_enterAnimation->setEndValue(QRect(6,0,this->width()-6,this->height()-6)); - m_leaveAnimation->setDuration(80); - m_enterAnimation->setDuration(10); - -@@ -239,7 +238,7 @@ void LetterWidget::animationFinishedSLot() - void LetterWidget::widgetMakeZero() - { - m_letterBtnWid->hide(); -- m_appListView->setGeometry(QRect(0,0,this->width()-4,this->height())); -+ m_appListView->setGeometry(QRect(6,0,this->width()-6,this->height()-6)); - m_appListView->show(); - m_appListView->verticalScrollBar()->setValue(0); - } -@@ -255,6 +254,6 @@ void LetterWidget::moveScrollBar(int type) - void LetterWidget::repaintWidget() - { - this->setFixedSize(Style::defaultMainViewWidWidth,Style::defaultContentWidHeight); -- m_appListView->setGeometry(QRect(0,0,this->width()-4,this->height())); -+ m_appListView->setGeometry(QRect(6,0,this->width()-6,this->height()-6)); - m_appListView->show(); - } -diff --git a/src/MainViewWidget/mainviewwidget.cpp b/src/MainViewWidget/mainviewwidget.cpp -index fc5c0cc..07bb13f 100644 ---- a/src/MainViewWidget/mainviewwidget.cpp -+++ b/src/MainViewWidget/mainviewwidget.cpp -@@ -33,15 +33,6 @@ MainViewWidget::MainViewWidget(QWidget *parent) : - - MainViewWidget::~MainViewWidget() - { --// delete m_commonUseWid; --// delete m_fullCommonUseWid; --// delete m_letterWid; --// delete m_fullLetterWid; --// delete m_functionWid; --// delete m_fullFunctionWid; --// delete m_searchResultWid; --// delete m_fullSearchResultWid; -- - delete m_ukuiMenuInterface; - delete m_fileWatcher; - delete m_directoryChangedThread; -@@ -54,29 +45,29 @@ void MainViewWidget::initUi() - { - this->setWindowFlags(Qt::CustomizeWindowHint | Qt::FramelessWindowHint); - this->setAttribute(Qt::WA_StyledBackground,true); -- this->setStyleSheet("border:0px;background:transparent;"); -+ this->setAttribute(Qt::WA_TranslucentBackground); - - QVBoxLayout* mainLayout=new QVBoxLayout; - mainLayout->setContentsMargins(0,0,0,0); - mainLayout->setSpacing(0); - m_topWidget=new QWidget; -- m_topWidget->setStyleSheet("border:0px;background:transparent;"); -+ m_contentWid=new QWidget; - -- m_verticalSpacer=new QSpacerItem(20,40, QSizePolicy::Fixed, QSizePolicy::Expanding); - mainLayout->addWidget(m_topWidget); -- mainLayout->addItem(m_verticalSpacer); -+ mainLayout->addWidget(m_contentWid); - this->setLayout(mainLayout); - - this->setFocusPolicy(Qt::NoFocus); - -- m_commonUseWid=new CommonUseWidget; -- m_fullCommonUseWid=new FullCommonUseWidget; -- m_letterWid=new LetterWidget; -- m_functionWid=new FunctionWidget; -- m_fullLetterWid=new FullLetterWidget; -- m_fullFunctionWid=new FullFunctionWidget; -- m_fullSearchResultWid=new FullSearchResultWidget; -- m_searchResultWid=new SearchResultWidget; -+ m_commonUseWid=new CommonUseWidget(m_contentWid); -+ m_fullCommonUseWid=new FullCommonUseWidget(m_contentWid); -+ m_letterWid=new LetterWidget(m_contentWid); -+ m_functionWid=new FunctionWidget(m_contentWid); -+ m_fullLetterWid=new FullLetterWidget(m_contentWid); -+ m_fullFunctionWid=new FullFunctionWidget(m_contentWid); -+ m_fullSearchResultWid=new FullSearchResultWidget(m_contentWid); -+ m_searchResultWid=new SearchResultWidget(m_contentWid); -+ hideWidget(); - - m_ukuiMenuInterface=new UkuiMenuInterface; - -@@ -105,8 +96,9 @@ void MainViewWidget::initUi() - - addTopControl(); - //加载默认视图 -+ //搜索区 - this->setFixedSize(Style::defaultMainViewWidWidth,Style::minh); -- m_topWidget->setFixedSize(Style::defaultMainViewWidWidth,Style::defaultTopWidHeight); -+ m_topWidget->setFixedSize(this->width(),Style::defaultTopWidHeight); - m_topLayout->setContentsMargins(0,0,0,0); - m_topLayout->setAlignment(m_queryLineEdit,Qt::AlignCenter); - m_queryLineEdit->setFixedSize(Style::defaultQueryLineEditWidth,Style::defaultQueryLineEditHeight); -@@ -114,7 +106,10 @@ void MainViewWidget::initUi() - m_queryWid->setGeometry(QRect((m_queryLineEdit->width()-(m_queryIcon->width()+m_queryText->width()+10))/2,0, - m_queryIcon->width()+m_queryText->width()+10,Style::QueryLineEditHeight)); - m_queryWid->show(); -- mainLayout->insertWidget(1,m_commonUseWid); -+ //内容区 -+ m_contentWid->setFixedSize(this->width(),this->height()-m_topWidget->height()); -+ m_commonUseWid->setGeometry(0,0,Style::defaultMainViewWidWidth,Style::defaultContentWidHeight); -+ m_commonUseWid->show(); - m_widgetState=1; - m_saveCurrentWidState=1; - -@@ -143,11 +138,17 @@ void MainViewWidget::addTopControl() - m_topLayout=new QHBoxLayout; - m_topLayout->setSpacing(0); - m_queryLineEdit=new QLineEdit; -- char style[100]; -- sprintf(style, "QLineEdit{border:0px;background-color:%s;border-radius:4px;}",QueryLineEditBackground); -- m_queryLineEdit->setStyleSheet(style); - m_topLayout->addWidget(m_queryLineEdit); - m_topWidget->setLayout(m_topLayout); -+ char style[200]; -+ QGSettings gsetting(QString("org.ukui.style").toLocal8Bit()); -+ if(gsetting.get("style-name").toString()=="ukui-light") -+ sprintf(style, "QLineEdit{border:1px solid %s;background-color:%s;border-radius:4px;color:#000000;}", -+ QueryLineEditClickedBorderDefault,QueryLineEditDefaultBackground); -+ else -+ sprintf(style, "QLineEdit{border:1px solid %s;background-color:%s;border-radius:4px;color:#ffffff;}", -+ QueryLineEditClickedBorder,QueryLineEditBackground); -+ m_queryLineEdit->setStyleSheet(style); - - initQueryLineEdit(); - -@@ -161,22 +162,27 @@ void MainViewWidget::initQueryLineEdit() - m_queryWid=new QWidget; - m_queryWid->setParent(m_queryLineEdit); - m_queryWid->setFocusPolicy(Qt::NoFocus); -- m_queryWid->setStyleSheet("border:0px;background:transparent"); - QHBoxLayout* queryWidLayout=new QHBoxLayout; -- queryWidLayout->setContentsMargins(5,0,0,0); -+ queryWidLayout->setContentsMargins(0,0,0,0); - queryWidLayout->setSpacing(5); - m_queryWid->setLayout(queryWidLayout); - QPixmap pixmap=loadSvg(QString(":/data/img/mainviewwidget/search.svg"),16); -+ QGSettings gsetting(QString("org.ukui.style").toLocal8Bit()); -+ if(gsetting.get("style-name").toString()=="ukui-light")//反黑 -+ pixmap=drawSymbolicBlackColoredPixmap(pixmap); -+ else -+ pixmap=drawSymbolicColoredPixmap(pixmap);//反白 -+ pixmap.setDevicePixelRatio(qApp->devicePixelRatio()); - m_queryIcon=new QLabel; -- m_queryIcon->setStyleSheet("background:transparent"); - m_queryIcon->setFixedSize(pixmap.size()); - m_queryIcon->setPixmap(pixmap); - m_queryText=new QLabel; - m_queryText->setText(tr("Search")); -- m_queryText->setStyleSheet("background:transparent;color:#626c6e;"); - m_queryText->adjustSize(); - queryWidLayout->addWidget(m_queryIcon); - queryWidLayout->addWidget(m_queryText); -+ queryWidLayout->setAlignment(m_queryIcon,Qt::AlignVCenter); -+ queryWidLayout->setAlignment(m_queryText,Qt::AlignVCenter); - m_queryLineEdit->setFocusPolicy(Qt::ClickFocus); - m_queryLineEdit->installEventFilter(this); - m_queryLineEdit->setContextMenuPolicy(Qt::NoContextMenu); -@@ -197,12 +203,23 @@ bool MainViewWidget::eventFilter(QObject *watched, QEvent *event) - { - if(watched==m_queryLineEdit) - { -+ char style[200]; - if(event->type()==QEvent::FocusIn) - { -- char style[200]; -- sprintf(style, "QLineEdit{border:1px solid %s;background-color:%s;border-radius:4px;color:#ffffff;}", -- QueryLineEditClickedBorder,QueryLineEditClickedBackground); -- m_queryLineEdit->setStyleSheet(style); -+ if(!m_isFullScreen) -+ { -+ QGSettings gsetting(QString("org.ukui.style").toLocal8Bit()); -+ if(gsetting.get("style-name").toString()=="ukui-light") -+ sprintf(style, "QLineEdit{border:1px solid %s;background-color:%s;border-radius:4px;color:#000000;}", -+ QueryLineEditClickedBorderDefault,QueryLineEditClickedDefaultBackground); -+ else -+ sprintf(style, "QLineEdit{border:1px solid %s;background-color:%s;border-radius:4px;color:#ffffff;}", -+ QueryLineEditClickedBorder,QueryLineEditClickedBackground); -+ } -+ else -+ sprintf(style, "QLineEdit{border:1px solid %s;background-color:%s;border-radius:4px;color:#ffffff;}", -+ QueryLineEditClickedBorder,QueryLineEditClickedBackground); -+ m_queryLineEdit->setStyleSheet(style); - if(!m_queryLineEdit->text().isEmpty()) - { - if(m_searchKeyWords.isEmpty()) -@@ -210,6 +227,8 @@ bool MainViewWidget::eventFilter(QObject *watched, QEvent *event) - } - else - { -+ m_queryWid->layout()->removeWidget(m_queryText); -+ m_queryText->setParent(nullptr); - m_animation->stop(); - m_animation->setStartValue(QRect((m_queryLineEdit->width()-(m_queryIcon->width()+m_queryText->width()+10))/2,0, - m_queryIcon->width()+m_queryText->width()+10,Style::QueryLineEditHeight)); -@@ -217,7 +236,6 @@ bool MainViewWidget::eventFilter(QObject *watched, QEvent *event) - m_queryIcon->width()+5,Style::QueryLineEditHeight)); - m_animation->setEasingCurve(QEasingCurve::OutQuad); - m_animation->start(); --// m_queryLineEdit->setReadOnly(true); - m_queryLineEdit->setTextMargins(-5,1,0,1); - } - m_isSearching=true; -@@ -229,10 +247,21 @@ bool MainViewWidget::eventFilter(QObject *watched, QEvent *event) - { - if(m_isSearching) - { -- char style[100]; -- sprintf(style, "QLineEdit{border:0px;background-color:%s;border-radius:4px;}",QueryLineEditBackground); -- m_animation->stop(); -+ if(!m_isFullScreen) -+ { -+ QGSettings gsetting(QString("org.ukui.style").toLocal8Bit()); -+ if(gsetting.get("style-name").toString()=="ukui-light") -+ sprintf(style, "QLineEdit{border:1px solid %s;background-color:%s;border-radius:4px;color:#000000;}", -+ QueryLineEditClickedBorderDefault,QueryLineEditDefaultBackground); -+ else -+ sprintf(style, "QLineEdit{border:1px solid %s;background-color:%s;border-radius:4px;color:#ffffff;}", -+ QueryLineEditClickedBorder,QueryLineEditBackground); -+ } -+ else -+ sprintf(style, "QLineEdit{border:1px solid %s;background-color:%s;border-radius:4px;color:#ffffff;}", -+ QueryLineEditClickedBorder,QueryLineEditBackground); - m_queryLineEdit->setStyleSheet(style); -+ m_animation->stop(); - m_queryText->adjustSize(); - m_animation->setStartValue(QRect(0,0, - m_queryIcon->width()+5,Style::QueryLineEditHeight)); -@@ -242,10 +271,21 @@ bool MainViewWidget::eventFilter(QObject *watched, QEvent *event) - m_animation->start(); - } - } -- else { -- char style[100]; -- sprintf(style, "QLineEdit{border:0px;background-color:%s;border-radius:4px;color:#ffffff;}", -- QueryLineEditBackground); -+ else -+ { -+ if(!m_isFullScreen) -+ { -+ QGSettings gsetting(QString("org.ukui.style").toLocal8Bit()); -+ if(gsetting.get("style-name").toString()=="ukui-light") -+ sprintf(style, "QLineEdit{border:1px solid %s;background-color:%s;border-radius:4px;color:#000000;}", -+ QueryLineEditClickedDefaultBackground,QueryLineEditDefaultBackground); -+ else -+ sprintf(style, "QLineEdit{border:1px solid %s;background-color:%s;border-radius:4px;color:#ffffff;}", -+ QueryLineEditClickedBorder,QueryLineEditBackground); -+ } -+ else -+ sprintf(style, "QLineEdit{border:1px solid %s;background-color:%s;border-radius:4px;color:#ffffff;}", -+ QueryLineEditClickedBorder,QueryLineEditBackground); - m_queryLineEdit->setStyleSheet(style); - } - m_isSearching=false; -@@ -271,73 +311,57 @@ void MainViewWidget::setLineEditFocus(QString arg) - */ - void MainViewWidget::searchAppSlot(QString arg) - { --// if(!m_isHiden) --// { -- if(!arg.isEmpty())//切换至搜索模块 -+ if(!arg.isEmpty())//切换至搜索模块 -+ { -+ if(m_widgetState!=0) - { -- if(m_widgetState!=0) -- { -- QLayoutItem* child; -- if((child=this->layout()->takeAt(1))!=nullptr) -- { -- QWidget* childWid=child->widget(); -- if(childWid!=nullptr) -- { -- this->layout()->removeWidget(childWid); -- childWid->setParent(nullptr); -- } -- } -- m_widgetState=0; -- QVBoxLayout *layout=qobject_cast(this->layout()); -- if(!m_isFullScreen) -- layout->insertWidget(1,m_searchResultWid); -- else -- layout->insertWidget(1,m_fullSearchResultWid); -- } -- Q_EMIT sendSearchKeyword(arg); -- m_searchAppThread->start(); -+ m_widgetState=0; -+ if(!m_isFullScreen) -+ loadSearchResultWidget(); -+ else -+ loadFullSearchResultWidget(); - } -- else{//切换至分类模块 -- if(m_isFullScreen) -- { -- switch (m_saveCurrentWidState) { -- case 1: -- loadFullCommonUseWidget(); -- break; -- case 2: -- loadFullLetterWidget(); -- break; -- case 3: -- loadFullFunctionWidget(); -- default: -- break; -- } -+ Q_EMIT sendSearchKeyword(arg); -+ m_searchAppThread->start(); -+ } -+ else{//搜索模块显示所有的软件 -+ if(m_isFullScreen) -+ { -+ switch (m_saveCurrentWidState) { -+ case 1: -+ loadFullCommonUseWidget(); -+ break; -+ case 2: -+ loadFullLetterWidget(); -+ break; -+ case 3: -+ loadFullFunctionWidget(); -+ default: -+ break; - } -- else { -- switch (m_saveCurrentWidState) { -- case 1: -- loadCommonUseWidget(); -- break; -- case 2: -- loadLetterWidget(); -- break; -- case 3: -- loadFunctionWidget(); -- break; -- default: -- break; -- } -+ } -+ else { -+ switch (m_saveCurrentWidState) { -+ case 1: -+ loadCommonUseWidget(); -+ break; -+ case 2: -+ loadLetterWidget(); -+ break; -+ case 3: -+ loadFunctionWidget(); -+ break; -+ default: -+ break; - } - } -- --// } --// else --// m_widgetState=m_saveCurrentWidState; -+ } - } - - void MainViewWidget::recvSearchResult(QVector arg) - { - m_searchAppThread->quit(); -+ m_searchAppThread->wait(); - m_fullSearchResultWid->updateAppListView(arg); - m_searchResultWid->updateAppListView(arg); - } -@@ -346,8 +370,8 @@ void MainViewWidget::animationFinishedSlot() - { - if(m_isSearching)//进入搜索状态 - { -- m_queryWid->layout()->removeWidget(m_queryText); -- m_queryText->setParent(nullptr); -+// m_queryWid->layout()->removeWidget(m_queryText); -+// m_queryText->setParent(nullptr); - m_queryLineEdit->setTextMargins(20,1,0,1); - if(!m_searchKeyWords.isEmpty()) - { -@@ -356,7 +380,28 @@ void MainViewWidget::animationFinishedSlot() - } - } - else//退出搜索状态 -+ { - m_queryWid->layout()->addWidget(m_queryText); -+ m_queryWid->layout()->setAlignment(m_queryIcon,Qt::AlignVCenter); -+ m_queryWid->layout()->setAlignment(m_queryText,Qt::AlignVCenter); -+ QPalette pe = m_queryText->palette(); -+ if(!m_isFullScreen) -+ { -+ QGSettings gsetting(QString("org.ukui.style").toLocal8Bit()); -+ if(gsetting.get("style-name").toString()=="ukui-light")//反黑 -+ { -+ pe.setColor(QPalette::Text,QColor(Qt::black)); -+ } -+ else -+ { -+ pe.setColor(QPalette::Text,QColor(Qt::white)); -+ } -+ } -+ else -+ pe.setColor(QPalette::Text,QColor(Qt::white)); -+ -+ m_queryText->setPalette(pe); -+ } - } - - /** -@@ -365,34 +410,53 @@ void MainViewWidget::animationFinishedSlot() - void MainViewWidget::loadMinMainView() - { - this->setFixedSize(Style::defaultMainViewWidWidth,Style::minh); -- m_topWidget->setFixedSize(Style::defaultMainViewWidWidth,Style::defaultTopWidHeight); -+ //搜索区 -+ m_topWidget->setFixedSize(this->width(),Style::defaultTopWidHeight); - m_topLayout->setContentsMargins(0,0,0,0); - m_topLayout->setAlignment(m_queryLineEdit,Qt::AlignCenter); - m_queryLineEdit->setFixedSize(Style::defaultQueryLineEditWidth,Style::defaultQueryLineEditHeight); - if(m_queryLineEdit->text().isEmpty()) - { - if(m_queryWid->layout()->count()==1) -+ { - m_queryWid->layout()->addWidget(m_queryText); -+ m_queryWid->layout()->setAlignment(m_queryIcon,Qt::AlignVCenter); -+ m_queryWid->layout()->setAlignment(m_queryText,Qt::AlignVCenter); -+ } - m_queryText->adjustSize(); - m_queryWid->setGeometry(QRect((m_queryLineEdit->width()-(m_queryIcon->width()+m_queryText->width()+10))/2,0, - m_queryIcon->width()+m_queryText->width()+10,Style::QueryLineEditHeight)); - m_queryWid->show(); - } - -+ char style[200]; -+ QPalette pe = m_queryText->palette(); -+ QPixmap pixmap=loadSvg(QString(":/data/img/mainviewwidget/search.svg"),16); -+ QGSettings gsetting(QString("org.ukui.style").toLocal8Bit()); -+ if(gsetting.get("style-name").toString()=="ukui-light") -+ { -+ pixmap=drawSymbolicBlackColoredPixmap(pixmap);//反黑 -+ pe.setColor(QPalette::Text,QColor(Qt::black)); -+ sprintf(style, "QLineEdit{border:1px solid %s;background-color:%s;border-radius:4px;color:#000000;}", -+ QueryLineEditClickedBorderDefault,QueryLineEditDefaultBackground); -+ } -+ else -+ { -+ pixmap=drawSymbolicColoredPixmap(pixmap);//反白 -+ pe.setColor(QPalette::Text,QColor(Qt::white)); -+ sprintf(style, "QLineEdit{border:1px solid %s;background-color:%s;border-radius:4px;color:#ffffff;}", -+ QueryLineEditClickedBorder,QueryLineEditBackground); -+ } -+ m_queryLineEdit->setStyleSheet(style); -+ pixmap.setDevicePixelRatio(qApp->devicePixelRatio()); -+ m_queryIcon->setPixmap(pixmap); -+ m_queryText->setPalette(pe); -+ -+ //内容区 -+ m_contentWid->setFixedSize(this->width(),this->height()-m_topWidget->height()); - if(m_widgetState==0) - { -- QLayoutItem* child; -- if((child=this->layout()->takeAt(1))!=nullptr) -- { -- QWidget* childWid=child->widget(); -- if(childWid!=nullptr) -- { -- this->layout()->removeWidget(childWid); -- childWid->setParent(nullptr); -- } -- } -- QVBoxLayout *layout=qobject_cast(this->layout()); -- layout->insertWidget(1,m_searchResultWid); -+ loadSearchResultWidget(); - } - else if(m_widgetState==1) - loadCommonUseWidget(); -@@ -401,7 +465,6 @@ void MainViewWidget::loadMinMainView() - else if(m_widgetState==3) - loadFunctionWidget(); - m_isFullScreen=false; --// m_isHiden=false; - } - - /** -@@ -411,6 +474,7 @@ void MainViewWidget::loadMaxMainView() - { - this->setFixedSize(Style::MainViewWidWidth, - Style::heightavailable); -+ //搜索区 - m_topWidget->setFixedSize(this->width(),Style::TopWidgetHeight); - m_queryLineEdit->setFixedSize(Style::QueryLineEditWidth,Style::QueryLineEditHeight); - -@@ -422,27 +486,36 @@ void MainViewWidget::loadMaxMainView() - if(m_queryLineEdit->text().isEmpty()) - { - if(m_queryWid->layout()->count()==1) -+ { - m_queryWid->layout()->addWidget(m_queryText); -+ m_queryWid->layout()->setAlignment(m_queryIcon,Qt::AlignVCenter); -+ m_queryWid->layout()->setAlignment(m_queryText,Qt::AlignVCenter); -+ } - m_queryText->adjustSize(); - m_queryWid->setGeometry(QRect((m_queryLineEdit->width()-(m_queryIcon->width()+m_queryText->width()+10))/2,0, - m_queryIcon->width()+m_queryText->width()+10,Style::QueryLineEditHeight)); - m_queryWid->show(); - } - -+ char style[200]; -+ sprintf(style, "QLineEdit{border:1px solid %s;background-color:%s;border-radius:4px;color:#ffffff;}", -+ QueryLineEditClickedBorder,QueryLineEditBackground); -+ m_queryLineEdit->setStyleSheet(style); -+ -+ QPixmap pixmap=loadSvg(QString(":/data/img/mainviewwidget/search.svg"),16); -+ pixmap=drawSymbolicColoredPixmap(pixmap);//反白 -+ QPalette pe = m_queryText->palette(); -+ pe.setColor(QPalette::Text,QColor(Qt::white)); -+ m_queryText->setPalette(pe); -+ -+ pixmap.setDevicePixelRatio(qApp->devicePixelRatio()); -+ m_queryIcon->setPixmap(pixmap); -+ -+ //内容区 -+ m_contentWid->setFixedSize(this->width(),this->height()-m_topWidget->height()); - if(m_widgetState==0) - { -- QLayoutItem* child; -- if((child=this->layout()->takeAt(1))!=nullptr) -- { -- QWidget* childWid=child->widget(); -- if(childWid!=nullptr) -- { -- this->layout()->removeWidget(childWid); -- childWid->setParent(nullptr); -- } -- } -- QVBoxLayout *layout=qobject_cast(this->layout()); -- layout->insertWidget(1,m_fullSearchResultWid); -+ loadFullSearchResultWidget(); - } - else if(m_widgetState==1) - loadFullCommonUseWidget(); -@@ -451,7 +524,6 @@ void MainViewWidget::loadMaxMainView() - else if(m_widgetState==3) - loadFullFunctionWidget(); - m_isFullScreen=true; --// m_isHiden=false; - } - - void MainViewWidget::resizeControl() -@@ -472,6 +544,7 @@ void MainViewWidget::resizeControl() - 0, - (m_topWidget->width()-Style::LeftWidWidth-m_queryLineEdit->width())/2, - 0); -+ m_contentWid->setFixedSize(this->width(),this->height()-m_topWidget->height()); - } - else - { -@@ -479,6 +552,7 @@ void MainViewWidget::resizeControl() - m_topWidget->setFixedSize(Style::defaultMainViewWidWidth,Style::defaultTopWidHeight); - m_topLayout->setContentsMargins(0,0,0,0); - m_topLayout->setAlignment(m_queryLineEdit,Qt::AlignCenter); -+ m_contentWid->setFixedSize(this->width(),this->height()-m_topWidget->height()); - } - - } -@@ -493,19 +567,11 @@ void MainViewWidget::loadCommonUseWidget() - m_fullLetterWid->widgetMakeZero(); - m_functionWid->widgetMakeZero(); - m_fullFunctionWid->widgetMakeZero(); -- QLayoutItem *child; -- if((child = this->layout()->takeAt(1)) != nullptr) { -- QWidget* childwid=child->widget(); -- if(childwid!=nullptr) -- { -- this->layout()->removeWidget(childwid); -- childwid->setParent(nullptr); -- } -- -- } -- QVBoxLayout *layout=qobject_cast(this->layout()); -- layout->insertWidget(1,m_commonUseWid); -+ hideWidget(); -+ m_commonUseWid->setGeometry(0,0,this->width(),this->height()-m_topWidget->height()); -+ m_commonUseWid->show(); - m_commonUseWid->updateListView(); -+ this->layout()->update(); - m_widgetState=1; - m_saveCurrentWidState=1; - } -@@ -520,18 +586,9 @@ void MainViewWidget::loadLetterWidget() - m_fullLetterWid->widgetMakeZero(); - m_functionWid->widgetMakeZero(); - m_fullFunctionWid->widgetMakeZero(); -- QLayoutItem *child; -- if((child = this->layout()->takeAt(1)) != nullptr) { -- QWidget* childwid=child->widget(); -- if(childwid!=nullptr) -- { -- this->layout()->removeWidget(childwid); -- childwid->setParent(nullptr); -- } -- -- } -- QVBoxLayout *layout=qobject_cast(this->layout()); -- layout->insertWidget(1,m_letterWid); -+ hideWidget(); -+ m_letterWid->setGeometry(0,0,this->width(),this->height()-m_topWidget->height()); -+ m_letterWid->show(); - m_widgetState=2; - m_saveCurrentWidState=2; - } -@@ -546,18 +603,9 @@ void MainViewWidget::loadFunctionWidget() - m_letterWid->widgetMakeZero(); - m_fullLetterWid->widgetMakeZero(); - m_fullFunctionWid->widgetMakeZero(); -- QLayoutItem *child; -- if((child = this->layout()->takeAt(1)) != nullptr) { -- QWidget* childwid=child->widget(); -- if(childwid!=nullptr) -- { -- this->layout()->removeWidget(childwid); -- childwid->setParent(nullptr); -- } -- -- } -- QVBoxLayout *layout=qobject_cast(this->layout()); -- layout->insertWidget(1,m_functionWid); -+ hideWidget(); -+ m_functionWid->setGeometry(0,0,this->width(),this->height()-m_topWidget->height()); -+ m_functionWid->show(); - m_widgetState=3; - m_saveCurrentWidState=3; - } -@@ -573,18 +621,9 @@ void MainViewWidget::loadFullCommonUseWidget() - m_fullLetterWid->widgetMakeZero(); - m_functionWid->widgetMakeZero(); - m_fullFunctionWid->widgetMakeZero(); -- QLayoutItem *child; -- if((child = this->layout()->takeAt(1)) != nullptr) { -- QWidget* childwid=child->widget(); -- if(childwid!=nullptr) -- { -- this->layout()->removeWidget(childwid); -- childwid->setParent(nullptr); -- } -- -- } -- QVBoxLayout *layout=qobject_cast(this->layout()); -- layout->insertWidget(1,m_fullCommonUseWid); -+ hideWidget(); -+ m_fullCommonUseWid->setGeometry(0,0,this->width(),this->height()-m_topWidget->height()); -+ m_fullCommonUseWid->show(); - m_fullCommonUseWid->updateListView(); - m_widgetState=1; - m_saveCurrentWidState=1; -@@ -600,19 +639,11 @@ void MainViewWidget::loadFullLetterWidget() - m_letterWid->widgetMakeZero(); - m_functionWid->widgetMakeZero(); - m_fullFunctionWid->widgetMakeZero(); -- QLayoutItem *child; -- if((child = this->layout()->takeAt(1)) != nullptr) { -- QWidget* childwid=child->widget(); -- if(childwid!=nullptr) -- { -- this->layout()->removeWidget(childwid); -- childwid->setParent(nullptr); -- } -- } -- QVBoxLayout *layout=qobject_cast(this->layout()); -- layout->insertWidget(1,m_fullLetterWid); -- if(!m_isFullScreen || (m_isFullScreen && m_saveCurrentWidState!=2)) -- m_fullLetterWid->enterAnimation(); -+ hideWidget(); -+ m_fullLetterWid->setGeometry(0,0,this->width(),this->height()-m_topWidget->height()); -+ m_fullLetterWid->show(); -+// if(!m_isFullScreen || (m_isFullScreen && m_saveCurrentWidState!=2)) -+ m_fullLetterWid->enterAnimation(); - m_widgetState=2; - m_saveCurrentWidState=2; - } -@@ -627,24 +658,41 @@ void MainViewWidget::loadFullFunctionWidget() - m_letterWid->widgetMakeZero(); - m_fullLetterWid->widgetMakeZero(); - m_functionWid->widgetMakeZero(); -- QLayoutItem *child; -- if((child = this->layout()->takeAt(1)) != nullptr) { -- QWidget* childwid=child->widget(); -- if(childwid!=nullptr) -- { -- this->layout()->removeWidget(childwid); -- childwid->setParent(nullptr); -- } -- -- } -- QVBoxLayout *layout=qobject_cast(this->layout()); -- layout->insertWidget(1,m_fullFunctionWid); -- if(!m_isFullScreen || (m_isFullScreen && m_saveCurrentWidState!=3)) -- m_fullFunctionWid->enterAnimation(); -+ hideWidget(); -+ m_fullFunctionWid->setGeometry(0,0,this->width(),this->height()-m_topWidget->height()); -+ m_fullFunctionWid->show(); -+// if(!m_isFullScreen || (m_isFullScreen && m_saveCurrentWidState!=3)) -+ m_fullFunctionWid->enterAnimation(); - m_widgetState=3; - m_saveCurrentWidState=3; - } - -+void MainViewWidget::loadSearchResultWidget() -+{ -+ hideWidget(); -+ m_searchResultWid->setGeometry(0,0,this->width(),this->height()-m_topWidget->height()); -+ m_searchResultWid->show(); -+} -+ -+void MainViewWidget::loadFullSearchResultWidget() -+{ -+ hideWidget(); -+ m_fullSearchResultWid->setGeometry(0,0,this->width(),this->height()-m_topWidget->height()); -+ m_fullSearchResultWid->show(); -+} -+ -+void MainViewWidget::hideWidget() -+{ -+ m_commonUseWid->hide(); -+ m_fullCommonUseWid->hide(); -+ m_letterWid->hide(); -+ m_fullLetterWid->hide(); -+ m_functionWid->hide(); -+ m_fullFunctionWid->hide(); -+ m_searchResultWid->hide(); -+ m_fullSearchResultWid->hide(); -+} -+ - /** - * 进程开启监控槽函数 - */ -@@ -730,7 +778,6 @@ void MainViewWidget::repaintWidget() - - void MainViewWidget::widgetMakeZero() - { --// m_isHiden=true; - m_isSearching=false; - m_widgetState=m_saveCurrentWidState; - m_commonUseWid->widgetMakeZero(); -@@ -743,9 +790,6 @@ void MainViewWidget::widgetMakeZero() - m_queryLineEdit->clear(); - m_queryLineEdit->clearFocus(); - m_queryLineEdit->blockSignals(false); -- char style[100]; -- sprintf(style, "QLineEdit{border:0px;background-color:%s;border-radius:2px;}",QueryLineEditBackground); -- m_queryLineEdit->setStyleSheet(style); - m_queryLineEdit->setTextMargins(0,1,0,1); - } - -diff --git a/src/MainViewWidget/mainviewwidget.h b/src/MainViewWidget/mainviewwidget.h -index 0df64b7..eb0a63a 100644 ---- a/src/MainViewWidget/mainviewwidget.h -+++ b/src/MainViewWidget/mainviewwidget.h -@@ -88,7 +88,7 @@ private: - QWidget *m_topWidget=nullptr; - QHBoxLayout *m_topLayout=nullptr; - -- QSpacerItem *m_verticalSpacer=nullptr; -+ QWidget *m_contentWid=nullptr; - - QLineEdit *m_queryLineEdit=nullptr; - QWidget *m_queryWid=nullptr; -@@ -134,6 +134,10 @@ protected: - * @brief Initializes the query box - */ - void initQueryLineEdit(); -+// void paintEvent(QPaintEvent* event); -+ void loadSearchResultWidget(); -+ void loadFullSearchResultWidget(); -+ void hideWidget(); - - public Q_SLOTS: - /** -diff --git a/src/MainWindow/mainwindow.cpp b/src/MainWindow/mainwindow.cpp -index 0329518..7f72fcc 100644 ---- a/src/MainWindow/mainwindow.cpp -+++ b/src/MainWindow/mainwindow.cpp -@@ -25,6 +25,7 @@ - #include - #include "src/XEventMonitor/xeventmonitor.h" - #include "src/Style/style.h" -+#include - - MainWindow::MainWindow(QWidget *parent) : - QMainWindow(parent) -@@ -33,7 +34,7 @@ MainWindow::MainWindow(QWidget *parent) : - UkuiMenuInterface::appInfoVector=m_ukuiMenuInterface->createAppInfoVector(); - UkuiMenuInterface::alphabeticVector=m_ukuiMenuInterface->getAlphabeticClassification(); - UkuiMenuInterface::functionalVector=m_ukuiMenuInterface->getFunctionalClassification(); -- UkuiMenuInterface::allAppVector=m_ukuiMenuInterface->getAllApp(); -+ UkuiMenuInterface::allAppVector=m_ukuiMenuInterface->getAllClassification(); - Style::initWidStyle(); - QString path=QDir::homePath()+"/.config/ukui/ukui-menu.ini"; - m_setting=new QSettings(path,QSettings::IniFormat); -@@ -71,10 +72,8 @@ void MainWindow::initUi() - m_line=new QFrame; - m_line->setFrameShape(QFrame::VLine); - m_line->setFixedSize(1,this->height()); -+ m_line->setEnabled(false); - mainlayout->addWidget(m_line); -- char linestyle[100]; -- sprintf(linestyle, "background-color:%s;",LineBackground); -- m_line->setStyleSheet(linestyle); - mainlayout->addWidget(m_sideBarWid); - - m_animation = new QPropertyAnimation(this, "geometry"); -@@ -125,6 +124,93 @@ void MainWindow::initUi() - // QString("sendStartMenuSignal"),this,SLOT(recvStartMenuSlot())); - } - -+void MainWindow::paintEvent(QPaintEvent *event) -+{ -+ QGSettings* gsetting=new QGSettings(QString("org.ukui.control-center.personalise").toLocal8Bit()); -+ double transparency=gsetting->get("transparency").toDouble(); -+ qreal radius = 0; -+ QRect rect = this->rect(); -+ rect.setWidth(rect.width()); -+ rect.setHeight(rect.height()); -+ rect.setX(this->rect().x()); -+ rect.setY(this->rect().y()); -+ rect.setWidth(this->rect().width()); -+ rect.setHeight(this->rect().height()); -+ if(!m_isFullScreen) -+ { -+ radius=6; -+ } -+ else -+ { -+ radius=0; -+ } -+ QPainterPath path; -+ path.moveTo(rect.topRight() - QPointF(radius, 0)); -+ path.lineTo(rect.topLeft() + QPointF(radius, 0)); -+ path.quadTo(rect.topLeft(), rect.topLeft() + QPointF(0, radius)); -+ path.lineTo(rect.bottomLeft() + QPointF(0, -radius)); -+ path.quadTo(rect.bottomLeft(), rect.bottomLeft() + QPointF(radius, 0)); -+ path.lineTo(rect.bottomRight() - QPointF(radius, 0)); -+ path.quadTo(rect.bottomRight(), rect.bottomRight() + QPointF(0, -radius)); -+ path.lineTo(rect.topRight() + QPointF(0, radius)); -+ path.quadTo(rect.topRight(), rect.topRight() + QPointF(-radius, -0)); -+ -+ QPainter painter(this); -+ painter.setRenderHint(QPainter::Antialiasing); // 反锯齿; -+ painter.setPen(Qt::transparent); -+ if(!m_isFullScreen) -+ { -+ painter.setBrush(this->palette().base()); -+ painter.setPen(Qt::transparent); -+ painter.setOpacity(transparency); -+ painter.drawPath(path); -+ setProperty("blurRegion", QRegion(path.toFillPolygon().toPolygon())); -+ } -+ else//全屏固定背景色(黑底白字) -+ { -+// QGSettings gsetting(QString("org.mate.background").toLocal8Bit()); -+// QString iconPath =gsetting.get("picture-filename").toString(); -+// painter.drawPixmap(0,0,this->width(),this->height(),QPixmap(iconPath)); -+ -+ if(QGSettings::isSchemaInstalled(QString("org.ukui.control-center.personalise").toLocal8Bit())) -+ { -+ QGSettings gsetting(QString("org.ukui.control-center.personalise").toLocal8Bit()); -+ if(gsetting.keys().contains(QString("effect"))) -+ { -+ if(gsetting.get("effect").toBool()) -+ { -+ painter.setBrush(Qt::black); -+ painter.setPen(Qt::transparent); -+ painter.setOpacity(0.25); -+ painter.drawRect(this->rect()); -+ } -+ else -+ { -+ painter.setBrush(this->palette().base()); -+ painter.setPen(Qt::transparent); -+ painter.setOpacity(transparency); -+ painter.drawRect(this->rect()); -+ } -+ } -+ else -+ { -+ painter.setBrush(this->palette().base()); -+ painter.setPen(Qt::transparent); -+ painter.setOpacity(transparency); -+ painter.drawRect(this->rect()); -+ } -+ } -+ else -+ { -+ painter.setBrush(this->palette().base()); -+ painter.setPen(Qt::transparent); -+ painter.setOpacity(transparency); -+ painter.drawRect(this->rect()); -+ } -+ } -+ QMainWindow::paintEvent(event); -+} -+ - /** - * 显示全屏窗口 - */ -@@ -282,7 +368,7 @@ void MainWindow::animationValueFinishedSlot() - m_sideBarWid->loadMinSidebar(); - m_mainViewWid->loadMinMainView(); - } -- setFrameStyle(); -+// setFrameStyle(); - } - - /** -@@ -447,20 +533,42 @@ void MainWindow::loadMainWindow() - int y=QApplication::primaryScreen()->geometry().y(); - if(m_isFullScreen) - { -+ //修复界面黑框问题 -+ QRect startRect; -+ QRect endRect; - if(position==0) -- this->setGeometry(QRect(x,y,QApplication::primaryScreen()->geometry().width(),QApplication::primaryScreen()->geometry().height()-panelSize)); -+ { -+ startRect.setRect(x,y+QApplication::primaryScreen()->geometry().height()-panelSize-Style::minh,Style::minw,Style::minh); -+ endRect.setRect(x,y,QApplication::primaryScreen()->geometry().width(),QApplication::primaryScreen()->geometry().height()-panelSize); -+ } - else if(position==1) -- this->setGeometry(QRect(x,y+panelSize,QApplication::primaryScreen()->geometry().width(),QApplication::primaryScreen()->geometry().height()-panelSize)); -+ { -+ startRect.setRect(x,y+panelSize,Style::minw,Style::minh); -+ endRect.setRect(x,y+panelSize,QApplication::primaryScreen()->geometry().width(),QApplication::primaryScreen()->geometry().height()-panelSize); -+ } - else if(position==2) -- this->setGeometry(QRect(x+panelSize,y,QApplication::primaryScreen()->geometry().width()-panelSize,QApplication::primaryScreen()->geometry().height())); -+ { -+ startRect.setRect(x+panelSize,y,Style::minw,Style::minh); -+ endRect.setRect(x+panelSize,y,QApplication::primaryScreen()->geometry().width()-panelSize,QApplication::primaryScreen()->geometry().height()); -+ } - else -- this->setGeometry(QRect(x,y,QApplication::primaryScreen()->geometry().width()-panelSize,QApplication::primaryScreen()->geometry().height())); -- m_sideBarWid->loadMaxSidebar(); -- m_sideBarWid->setSideBarBtnGeometry(); -- m_mainViewWid->loadMaxMainView(); -- QPainterPath path; -- path.addRect(this->rect()); -- setProperty("blurRegion", QRegion(path.toFillPolygon().toPolygon())); -+ { -+ startRect.setRect(x+QApplication::primaryScreen()->geometry().width()-panelSize-Style::minw,y,Style::minw,Style::minh); -+ endRect.setRect(x,y,QApplication::primaryScreen()->geometry().width()-panelSize,QApplication::primaryScreen()->geometry().height()); -+ } -+ -+ this->centralWidget()->layout()->removeWidget(m_mainViewWid); -+ m_mainViewWid->setParent(nullptr); -+ this->centralWidget()->layout()->removeWidget(m_line); -+ m_line->setParent(nullptr); -+ this->centralWidget()->layout()->removeWidget(m_sideBarWid); -+ m_sideBarWid->setParent(nullptr); -+ -+ m_animation->setDuration(1);//动画总时间 -+ m_animation->setStartValue(startRect); -+ m_animation->setEndValue(endRect); -+ m_animation->setEasingCurve(QEasingCurve::Linear); -+ m_animation->start(); - } - else - { -@@ -478,75 +586,6 @@ void MainWindow::loadMainWindow() - m_sideBarWid->loadMinSidebar(); - m_mainViewWid->loadMinMainView(); - } -- setFrameStyle(); -- -- //默认开启默认态 --// if(QGSettings::isSchemaInstalled(QString("org.ukui.control-center.desktop").toLocal8Bit())) --// { --// QGSettings* gsetting=new QGSettings(QString("org.ukui.control-center.desktop").toLocal8Bit()); --// bool ret=false; --// if(gsetting->keys().contains(QString("menufullScreen"))) --// ret=gsetting->get("menufull-screen").toBool(); --// if(ret) --// { --// if(position==0) --// this->setGeometry(QRect(x,y,QApplication::primaryScreen()->geometry().width(),QApplication::primaryScreen()->geometry().height()-panelSize)); --// else if(position==1) --// this->setGeometry(QRect(x,y+panelSize,QApplication::primaryScreen()->geometry().width(),QApplication::primaryScreen()->geometry().height()-panelSize)); --// else if(position==2) --// this->setGeometry(QRect(x+panelSize,y,QApplication::primaryScreen()->geometry().width()-panelSize,QApplication::primaryScreen()->geometry().height())); --// else --// this->setGeometry(QRect(x,y,QApplication::primaryScreen()->geometry().width()-panelSize,QApplication::primaryScreen()->geometry().height())); --// this->centralWidget()->layout()->removeWidget(m_line); --// m_line->setParent(nullptr); --// m_sideBarWid->loadMaxSidebar(); --// m_mainViewWid->loadMaxMainView(); --// m_sideBarWid->enterAnimation(); --// QPainterPath path; --// path.addRect(this->rect()); --// setProperty("blurRegion", QRegion(path.toFillPolygon().toPolygon())); --// m_isFullScreen=true; --// } --// else --// { --// if(position==0) --// this->setGeometry(QRect(x,y+QApplication::primaryScreen()->geometry().height()-panelSize-Style::minh, --// Style::minw,Style::minh)); --// else if(position==1) --// this->setGeometry(QRect(x,y+panelSize,Style::minw,Style::minh)); --// else if(position==2) --// this->setGeometry(QRect(x+panelSize,y,Style::minw,Style::minh)); --// else --// this->setGeometry(QRect(x+QApplication::primaryScreen()->geometry().width()-panelSize-Style::minw,y, --// Style::minw,Style::minh)); --// QHBoxLayout* mainLayout=qobject_cast(this->centralWidget()->layout()); --// mainLayout->insertWidget(1,m_line); --// m_sideBarWid->loadMinSidebar(); --// m_mainViewWid->loadMinMainView(); --// m_isFullScreen=false; --// } --// } --// else --// { --// if(position==0) --// this->setGeometry(QRect(x,y+QApplication::primaryScreen()->geometry().height()-panelSize-Style::minh, --// Style::minw,Style::minh)); --// else if(position==1) --// this->setGeometry(QRect(x,y+panelSize,Style::minw,Style::minh)); --// else if(position==2) --// this->setGeometry(QRect(x+panelSize,y,Style::minw,Style::minh)); --// else --// this->setGeometry(QRect(x+QApplication::primaryScreen()->geometry().width()-panelSize-Style::minw,y, --// Style::minw,Style::minh)); -- --// QHBoxLayout *mainLayout=qobject_cast(this->centralWidget()->layout()); --// mainLayout->insertWidget(1,m_line); --// m_sideBarWid->loadMinSidebar(); --// m_mainViewWid->loadMinMainView(); --// m_isFullScreen=false; --// } -- --// setFrameStyle(); - } - - void MainWindow::monitorResolutionChange(QRect rect) -@@ -628,114 +667,62 @@ void MainWindow::repaintWidget() - this->setGeometry(QRect(x+QApplication::primaryScreen()->geometry().width()-panelSize-Style::minw,y, - Style::minw,Style::minh)); - --// QHBoxLayout *mainLayout=qobject_cast(this->centralWidget()->layout()); --// mainLayout->insertWidget(1,m_line); - m_sideBarWid->loadMinSidebar(); - m_mainViewWid->resizeControl(); - } -- setFrameStyle(); - } - } - --void MainWindow::setFrameStyle() --{ -- int position=0; -- int panelSize=0; -- if(QGSettings::isSchemaInstalled(QString("org.ukui.panel.settings").toLocal8Bit())) -- { -- QGSettings* gsetting=new QGSettings(QString("org.ukui.panel.settings").toLocal8Bit()); -- if(gsetting->keys().contains(QString("panelposition"))) -- position=gsetting->get("panelposition").toInt(); -- else -- position=0; -- if(gsetting->keys().contains(QString("panelsize"))) -- panelSize=gsetting->get("panelsize").toInt(); -- else -- panelSize=46; -- } -- else -- { -- position=0; -- panelSize=46; -- } -- char style[100]; -- -- QString m_defaultBackground; -- if(QGSettings::isSchemaInstalled(QString("org.ukui.control-center.personalise").toLocal8Bit())) -- { -- QGSettings* gsetting=new QGSettings(QString("org.ukui.control-center.personalise").toLocal8Bit()); -- if(gsetting->keys().contains(QString("transparency"))) -- { -- double transparency=gsetting->get("transparency").toDouble(); -- m_defaultBackground=QString("rgba(19, 19, 20,"+QString::number(transparency)+")"); -- } -- else -- m_defaultBackground=QString("rgba(19, 19, 20, 0.7)"); -- } -- else -- m_defaultBackground=QString("rgba(19, 19, 20, 0.7)"); -+//void MainWindow::setFrameStyle() -+//{ -+// int position=0; -+// int panelSize=0; -+// if(QGSettings::isSchemaInstalled(QString("org.ukui.panel.settings").toLocal8Bit())) -+// { -+// QGSettings* gsetting=new QGSettings(QString("org.ukui.panel.settings").toLocal8Bit()); -+// if(gsetting->keys().contains(QString("panelposition"))) -+// position=gsetting->get("panelposition").toInt(); -+// else -+// position=0; -+// if(gsetting->keys().contains(QString("panelsize"))) -+// panelSize=gsetting->get("panelsize").toInt(); -+// else -+// panelSize=46; -+// } -+// else -+// { -+// position=0; -+// panelSize=46; -+// } - -- if(!m_isFullScreen) -- { -- QRectF rect; -- rect.setX(this->rect().x()+1); -- rect.setY(this->rect().y()+1); -- rect.setWidth(this->rect().width()-2); -- rect.setHeight(this->rect().height()-2); -- const qreal radius = 6; -- QPainterPath path; -+// QRectF rect; -+// rect.setX(this->rect().x()+1); -+// rect.setY(this->rect().y()+1); -+// rect.setWidth(this->rect().width()-2); -+// rect.setHeight(this->rect().height()-2); -+// qreal radius = 0; -+// QPainterPath path; -+// if(!m_isFullScreen) -+// { -+// radius=12; -+// } -+// else -+// { -+// radius=0; -+// } - -- if(position==0) -- { -- //右上角 -- sprintf(style, "border:0px;background-color:%s;border-top-right-radius:6px;",m_defaultBackground.toLocal8Bit().data()); -- path.moveTo(rect.topRight() - QPointF(radius, 0)); -- path.lineTo(rect.topLeft()); -- path.lineTo(rect.bottomLeft()); -- path.lineTo(rect.bottomRight()); -- path.lineTo(rect.topRight() + QPointF(0, radius)); -- path.quadTo(rect.topRight(), rect.topRight() + QPointF(-radius, -0)); -- } -- else if(position==1) -- { -- //右下角 -- sprintf(style, "border:0px;background-color:%s;border-bottom-right-radius:6px;",m_defaultBackground.toLocal8Bit().data()); -- path.moveTo(rect.topRight()); -- path.lineTo(rect.topLeft()); -- path.lineTo(rect.bottomLeft()); -- path.lineTo(rect.bottomRight() - QPointF(radius, 0)); -- path.quadTo(rect.bottomRight(), rect.bottomRight() + QPointF(0, -radius)); -- path.lineTo(rect.topRight()); -- } -- else if(position==2) -- { -- //右下角 -- sprintf(style, "border:0px;background-color:%s;border-bottom-right-radius:6px;",m_defaultBackground.toLocal8Bit().data()); -- path.moveTo(rect.topRight()); -- path.lineTo(rect.topLeft()); -- path.lineTo(rect.bottomLeft()); -- path.lineTo(rect.bottomRight() - QPointF(radius, 0)); -- path.quadTo(rect.bottomRight(), rect.bottomRight() + QPointF(0, -radius)); -- path.lineTo(rect.topRight()); -- } -- else -- { -- //左下角 -- sprintf(style, "border:0px;background-color:%s;border-bottom-left-radius:6px;",m_defaultBackground.toLocal8Bit().data()); -- path.moveTo(rect.topRight()); -- path.lineTo(rect.topLeft()); -- path.lineTo(rect.bottomLeft() + QPointF(0, -radius)); -- path.quadTo(rect.bottomLeft(), rect.bottomLeft() + QPointF(radius, 0)); -- path.lineTo(rect.bottomRight()); -- path.lineTo(rect.topRight()); -- } -- setProperty("blurRegion", QRegion(path.toFillPolygon().toPolygon())); -- } -- else { -- sprintf(style, "border:0px;background-color:%s;border-radius:0px;",m_defaultBackground.toLocal8Bit().data()); -- } -- m_frame->setStyleSheet(style); --} -+// path.moveTo(rect.topRight() - QPointF(radius, 0)); -+// path.lineTo(rect.topLeft() + QPointF(radius, 0)); -+// path.quadTo(rect.topLeft(), rect.topLeft() + QPointF(0, radius)); -+// path.lineTo(rect.bottomLeft() + QPointF(0, -radius)); -+// path.quadTo(rect.bottomLeft(), rect.bottomLeft() + QPointF(radius, 0)); -+// path.lineTo(rect.bottomRight() - QPointF(radius, 0)); -+// path.quadTo(rect.bottomRight(), rect.bottomRight() + QPointF(0, -radius)); -+// path.lineTo(rect.topRight() + QPointF(0, radius)); -+// path.quadTo(rect.topRight(), rect.topRight() + QPointF(-radius, -0)); -+ -+// setProperty("blurRegion", QRegion(path.toFillPolygon().toPolygon())); -+//} - - void MainWindow::keyPressEvent(QKeyEvent *e) - { -diff --git a/src/MainWindow/mainwindow.h b/src/MainWindow/mainwindow.h -index 67c1b0c..826092f 100644 ---- a/src/MainWindow/mainwindow.h -+++ b/src/MainWindow/mainwindow.h -@@ -48,7 +48,7 @@ public: - /** - * @brief Set the QFrame style - */ -- void setFrameStyle(); -+// void setFrameStyle(); - /** - * @brief Load the main window - */ -@@ -74,7 +74,7 @@ protected: - * @brief Handle events clicking on the outside of the window - */ - bool event(QEvent *event); --// void paintEvent(QPaintEvent*); -+ void paintEvent(QPaintEvent* event); - /** - * @brief The query box responds to keyboard events - */ -diff --git a/src/RightClickMenu/rightclickmenu.cpp b/src/RightClickMenu/rightclickmenu.cpp -index 657842b..7767b2a 100644 ---- a/src/RightClickMenu/rightclickmenu.cpp -+++ b/src/RightClickMenu/rightclickmenu.cpp -@@ -56,38 +56,6 @@ QPixmap RightClickMenu::getIconPixmap(QString iconstr, int type) - return pixmap; - } - --QPixmap RightClickMenu::drawSymbolicColoredPixmap(const QPixmap &source) --{ -- QColor gray(128,128,128); -- QColor standard (31,32,34); -- QImage img = source.toImage(); -- for (int x = 0; x < img.width(); x++) { -- for (int y = 0; y < img.height(); y++) { -- auto color = img.pixelColor(x, y); -- if (color.alpha() > 0) { -- if (qAbs(color.red()-gray.red())<20 && qAbs(color.green()-gray.green())<20 && qAbs(color.blue()-gray.blue())<20) { -- color.setRed(255); -- color.setGreen(255); -- color.setBlue(255); -- img.setPixelColor(x, y, color); -- } -- else if(qAbs(color.red()-standard.red())<20 && qAbs(color.green()-standard.green())<20 && qAbs(color.blue()-standard.blue())<20) -- { -- color.setRed(255); -- color.setGreen(255); -- color.setBlue(255); -- img.setPixelColor(x, y, color); -- } -- else -- { -- img.setPixelColor(x, y, color); -- } -- } -- } -- } -- return QPixmap::fromImage(img); --} -- - void RightClickMenu::fixToAllActionTriggerSlot() - { - m_actionNumber=1; -@@ -289,24 +257,8 @@ int RightClickMenu::showShutdownMenu() - { - m_actionNumber=0; - QMenu menu; --// menu.addAction(QIcon(getIconPixmap("stock-people-symbolic",1)),tr("Switch User"), --// this,SLOT(switchUserActionTriggerSlot())); --//#if (QT_VERSION < QT_VERSION_CHECK(5,12,0)) --// if(QGSettings::isSchemaInstalled(QString("org.ukui.session").toLocal8Bit())) --// { --// QGSettings* gsetting=new QGSettings(QString("org.ukui.session").toLocal8Bit()); --// if(gsetting->keys().contains(QString("canhibernate"))) --// { --// if(gsetting->get("canhibernate").toBool()) --// menu.addAction(QIcon(getIconPixmap("kylin-hebernate-symbolic",1)),tr("Hibernate"), --// this,SLOT(hibernateActionTriggerSlot())); --// } --// } --//#endif - menu.addAction(QIcon(getIconPixmap("kylin-sleep-symbolic",1)),tr("Sleep"), -- this,SLOT(sleepActionTriggerSlot())); --// menu.addAction(QIcon(getIconPixmap("system-lock-screen-symbolic",1)),tr("Lock Screen"), --// this,SLOT(lockScreenActionTriggerSlot())); -+ this,SLOT(hibernateActionTriggerSlot()));//休眠睡眠相同 - menu.addAction(QIcon(getIconPixmap("system-logout-symbolic",1)),tr("Log Out"), - this,SLOT(logoutActionTriggerSlot())); - menu.addAction(QIcon(getIconPixmap("system-restart-symbolic",1)),tr("Restart"), -diff --git a/src/RightClickMenu/rightclickmenu.h b/src/RightClickMenu/rightclickmenu.h -index 34d1526..9dd6f5a 100644 ---- a/src/RightClickMenu/rightclickmenu.h -+++ b/src/RightClickMenu/rightclickmenu.h -@@ -85,12 +85,6 @@ protected: - * @return - */ - QPixmap getIconPixmap(QString iconstr, int type); -- /** -- * @brief Process image color -- * @param source: QPixmap icon -- * @return return QPixmap icon -- */ -- QPixmap drawSymbolicColoredPixmap(const QPixmap &source); - - private Q_SLOTS: - /** -diff --git a/src/SearchResultWidget/fullsearchresultwidget.cpp b/src/SearchResultWidget/fullsearchresultwidget.cpp -index 83e4aa5..ddbc7e6 100644 ---- a/src/SearchResultWidget/fullsearchresultwidget.cpp -+++ b/src/SearchResultWidget/fullsearchresultwidget.cpp -@@ -36,7 +36,6 @@ void FullSearchResultWidget::initUi() - { - this->setWindowFlags(Qt::CustomizeWindowHint | Qt::FramelessWindowHint); - this->setAttribute(Qt::WA_StyledBackground,true); -- this->setStyleSheet("border:0px;background:transparent;"); - this->setSizePolicy(QSizePolicy::Fixed,QSizePolicy::Fixed); - this->setFixedSize(Style::MainViewWidWidth, - Style::AppListWidHeight); -@@ -46,7 +45,7 @@ void FullSearchResultWidget::initUi() - m_spaceItem=new QSpacerItem(40,20,QSizePolicy::Expanding,QSizePolicy::Fixed); - mainLayout->addItem(m_spaceItem); - m_listView=new FullListView(this,3); -- m_listView->setFixedSize(this->width()-Style::LeftWidWidth,this->height()); -+ m_listView->setFixedSize(this->width()-Style::LeftWidWidth+1,this->height()); - mainLayout->addWidget(m_listView); - this->setLayout(mainLayout); - -@@ -86,7 +85,7 @@ void FullSearchResultWidget::repaintWidget() - m_listView->setParent(nullptr); - delete m_listView; - m_listView=new FullListView(this,3); -- m_listView->setFixedSize(this->width()-Style::LeftWidWidth,this->height()); -+ m_listView->setFixedSize(this->width()-Style::LeftWidWidth+1,this->height()); - QHBoxLayout *mainLayout=qobject_cast(this->layout()); - mainLayout->insertWidget(1,m_listView); - m_data.clear(); -diff --git a/src/SearchResultWidget/searchresultwidget.cpp b/src/SearchResultWidget/searchresultwidget.cpp -index 43e3336..57dd2a9 100644 ---- a/src/SearchResultWidget/searchresultwidget.cpp -+++ b/src/SearchResultWidget/searchresultwidget.cpp -@@ -36,12 +36,11 @@ void SearchResultWidget::initUi() - { - this->setWindowFlags(Qt::CustomizeWindowHint | Qt::FramelessWindowHint); - this->setAttribute(Qt::WA_StyledBackground,true); -- this->setStyleSheet("border:0px;background:transparent;"); - this->setSizePolicy(QSizePolicy::Fixed,QSizePolicy::Fixed); - this->setFixedSize(Style::defaultMainViewWidWidth,Style::defaultContentWidHeight); - -- m_listView=new ListView(this,this->width()-4,this->height(),3); -- m_listView->setGeometry(QRect(0,0,this->width()-4,this->height())); -+ m_listView=new ListView(this,this->width()-6,this->height()-6,3); -+ m_listView->setGeometry(QRect(6,0,this->width()-6,this->height()-6)); - m_listView->show(); - - m_data.clear(); -@@ -83,6 +82,6 @@ void SearchResultWidget::moveScrollBar(int type) - void SearchResultWidget::repaintWidget() - { - this->setFixedSize(Style::defaultMainViewWidWidth,Style::defaultContentWidHeight); -- m_listView->setGeometry(QRect(0,0,this->width()-4,this->height())); -+ m_listView->setGeometry(QRect(6,0,this->width()-6,this->height()-6)); - m_listView->show(); - } -diff --git a/src/SideBarWidget/sidebarwidget.cpp b/src/SideBarWidget/sidebarwidget.cpp -index 7a75ac7..8435651 100644 ---- a/src/SideBarWidget/sidebarwidget.cpp -+++ b/src/SideBarWidget/sidebarwidget.cpp -@@ -46,7 +46,6 @@ void SideBarWidget::initUi() - { - this->setWindowFlags(Qt::CustomizeWindowHint | Qt::FramelessWindowHint); - this->setAttribute(Qt::WA_StyledBackground,true); -- this->setStyleSheet("border:0px;background:transparent;"); - this->setFocusPolicy(Qt::NoFocus); - - addSidebarBtn(); -@@ -65,31 +64,23 @@ void SideBarWidget::addSidebarBtn() - m_mainWidget=new QWidget; - m_mainWidget->setParent(this); - m_mainWidgetLayout=new QVBoxLayout; -- m_mainWidgetLayout->setContentsMargins(0,0,0,0); -+ m_mainWidgetLayout->setContentsMargins(0,0,0,6); - m_mainWidgetLayout->setSpacing(10); - m_mainWidget->setLayout(m_mainWidgetLayout); -- m_mainWidget->setStyleSheet("background:transparent;"); - - //放大缩小按钮界面 - m_minMaxWidget=new QWidget; -- m_minMaxWidget->setStyleSheet("QWidget{background:transparent;border:0px;}"); - m_minMaxLayout=new QHBoxLayout; -- m_minMaxBtn=new QToolButton; -+ m_minMaxBtn=new QPushButton; -+ m_minMaxBtn->setFlat(true); - // m_minMaxBtn->setShortcut(QKeySequence::InsertParagraphSeparator); - // m_minMaxBtn->setShortcut(Qt::Key_Enter); - m_minMaxBtn->setShortcut(Qt::Key_Return); - m_minMaxLayout->addWidget(m_minMaxBtn); - m_minMaxWidget->setLayout(m_minMaxLayout); -- char btncolor[300]; -- sprintf(btncolor,"QToolButton{background:transparent;border:0px;padding-left:0px;border-radius:4px;}\ -- QToolButton:hover{background-color:%s;border:0px;border-radius:4px;}\ -- QToolButton:pressed{background-color:%s;border:0px;border-radius:4px;}", -- MMBtnHoverBackground,MMBtnHoverBackground); -- m_minMaxBtn->setStyleSheet(QString::fromLocal8Bit(btncolor)); - - //分类按钮 - m_buttonList.clear(); --// m_buttonTextList.clear(); - m_btnGroup=new QButtonGroup(m_mainWidget); - m_allBtn=new QPushButton; - initBtn(m_allBtn,QString::fromLocal8Bit(":/data/img/sidebarwidget/commonuse.svg"),tr("All"),0); -@@ -100,6 +91,7 @@ void SideBarWidget::addSidebarBtn() - int id=0; - Q_FOREACH (QAbstractButton* btn, m_buttonList) { - m_btnGroup->addButton(btn,id++); -+ btn->setCheckable(true); - } - - QString usericon=m_ukuiMenuInterface->getUserIcon(); -@@ -109,7 +101,7 @@ void SideBarWidget::addSidebarBtn() - m_personalBtn=new QPushButton; - initBtn(m_personalBtn,QString::fromLocal8Bit(":/data/img/sidebarwidget/personal.svg"),tr("Personal"),4); - m_trashBtn=new QPushButton; -- initBtn(m_trashBtn,QString::fromLocal8Bit(":/data/img/sidebarwidget/trash.svg"),tr("Recycle Bin"),5); -+ initBtn(m_trashBtn,QString::fromLocal8Bit(":/data/img/sidebarwidget/trash.svg"),tr("Trash"),5); - m_computerBtn=new QPushButton; - initBtn(m_computerBtn,QString::fromLocal8Bit(":/data/img/sidebarwidget/computer.svg"),tr("Computer"),6); - m_controlBtn=new QPushButton; -@@ -128,7 +120,10 @@ void SideBarWidget::addSidebarBtn() - { - QPushButton* btn=qobject_cast(button); - if(m_buttonList.indexOf(button)>3 && m_buttonList.indexOf(button)setCheckable(false); - addRightClickMenu(btn); -+ } - } - m_shutDownBtn->setContextMenuPolicy(Qt::CustomContextMenu); - connect(m_shutDownBtn,&QPushButton::customContextMenuRequested,this, -@@ -169,6 +164,12 @@ void SideBarWidget::addSidebarBtn() - } - m_mainWidgetLayout->addWidget(m_buttonList.at(8)); - -+ if(QGSettings::isSchemaInstalled(QString("org.ukui.style").toLocal8Bit())) -+ { -+ QGSettings* gsetting=new QGSettings(QString("org.ukui.style").toLocal8Bit()); -+ connect(gsetting,&QGSettings::changed,this,&SideBarWidget::themeModeChangeSlot); -+ } -+ - m_animation = new QPropertyAnimation(m_mainWidget, "geometry"); - } - -@@ -201,20 +202,19 @@ void SideBarWidget::resetSidebarBtnSlot() - */ - void SideBarWidget::initBtn(QPushButton *btn, QString btnicon, QString text, int num) - { -- char btncolor[300]; -- sprintf(btncolor,"QPushButton{background:transparent;border:0px;padding-left:0;border-radius:4px;}\ -- QPushButton:hover{background-color:%s;border:0px;border-radius:4px;}\ -- QPushButton:pressed{background-color:%s;border:0px;border-radius:4px;}", -- SBFunBtnHoverBackground,SBFunBtnHoverBackground); -- btn->setStyleSheet(QString::fromLocal8Bit(btncolor)); -+ btn->setFlat(true); - QHBoxLayout* btnLayout=new QHBoxLayout; - QLabel* labelicon=new QLabel; - labelicon->setAlignment(Qt::AlignCenter); -- labelicon->setStyleSheet("background:transparent;border:0px;"); - const auto ratio=devicePixelRatioF(); -+ QGSettings gsetting(QString("org.ukui.style").toLocal8Bit()); - if(num!=3) - { - QPixmap pixmap=loadSvg(btnicon,Style::SideBarIconSize*ratio); -+ if(gsetting.get("style-name").toString()=="ukui-light")//反黑 -+ pixmap=drawSymbolicBlackColoredPixmap(pixmap); -+ else -+ pixmap=drawSymbolicColoredPixmap(pixmap);//反白 - pixmap.setDevicePixelRatio(qApp->devicePixelRatio()); - labelicon->setFixedSize(Style::SideBarIconSize,Style::SideBarIconSize); - labelicon->setPixmap(pixmap); -@@ -304,7 +304,6 @@ void SideBarWidget::shutdownBtnRightClickSlot() - void SideBarWidget::addRightClickMenu(QPushButton *btn) - { - btn->setContextMenuPolicy(Qt::CustomContextMenu); --// disconnect(btn,&QPushButton::customContextMenuRequested,this,&SideBarWidget::otherBtnRightClickSlot); - connect(btn,&QPushButton::customContextMenuRequested,this,&SideBarWidget::otherBtnRightClickSlot); - } - -@@ -391,9 +390,6 @@ void SideBarWidget::userAccountsChanged() - facePixmap = facePixmap.scaled((Style::SideBarIconSize+4)*ratio,(Style::SideBarIconSize+4)*ratio, Qt::KeepAspectRatio, Qt::SmoothTransformation); - facePixmap = PixmapToRound(facePixmap, (Style::SideBarIconSize+4)*ratio/2); - --// QLayoutItem* item=m_userIconBtn->layout()->itemAt(0); --// QLabel* labelicon=qobject_cast(item->widget()); --// labelicon->setScaledContents(true); - QLabel* labelicon=m_userIconBtn->findChild("faceLabel"); - facePixmap.setDevicePixelRatio(qApp->devicePixelRatio()); - labelicon->setPixmap(facePixmap); -@@ -413,15 +409,17 @@ void SideBarWidget::loadMinSidebar() - m_minMaxWidget->setFixedSize(37,70); - m_minMaxLayout->setContentsMargins(0,0,0,0); - -- m_mainWidgetLayout->setContentsMargins(8,0,10,0); -+ m_mainWidgetLayout->setContentsMargins(8,0,10,6); - - Q_FOREACH(QAbstractButton* button,m_buttonList) - { - QPushButton* btn=qobject_cast(button); - setMinSidebarBtn(btn); --// btn->setToolTip(m_textList.at(m_buttonList.indexOf(button))); -+ btn->setToolTip(m_textList.at(m_buttonList.indexOf(button))); - } - -+ changeIconColor(false); -+ - disconnect(m_minMaxBtn,&QToolButton::clicked,this, &SideBarWidget::sendDefaultBtnSignal); - connect(m_minMaxBtn, &QToolButton::clicked,this,&SideBarWidget::sendFullScreenBtnSignal); - } -@@ -431,14 +429,17 @@ void SideBarWidget::loadMinSidebar() - */ - void SideBarWidget::setMaxBtn() - { -+ const auto ratio=devicePixelRatioF(); -+ QGSettings gsetting(QString("org.ukui.style").toLocal8Bit()); -+ QPixmap pixmap=loadSvg(QString(":/data/img/sidebarwidget/max.svg"),14*ratio); -+ if(gsetting.get("style-name").toString()=="ukui-light")//反黑 -+ pixmap=drawSymbolicBlackColoredPixmap(pixmap); -+ else -+ pixmap=drawSymbolicColoredPixmap(pixmap);//反白 -+ pixmap.setDevicePixelRatio(qApp->devicePixelRatio()); -+ - m_minMaxBtn->setFixedSize(37,37); -- QSvgRenderer* svgRender = new QSvgRenderer(m_minMaxBtn); -- svgRender->load(QString(":/data/img/sidebarwidget/max.svg")); -- QPixmap* pixmap = new QPixmap(14,14); -- pixmap->fill(Qt::transparent);//设置背景透明 -- QPainter p(pixmap); -- svgRender->render(&p); -- m_minMaxBtn->setIcon(QIcon(*pixmap)); -+ m_minMaxBtn->setIcon(QIcon(pixmap)); - } - - /** -@@ -480,14 +481,23 @@ void SideBarWidget::loadMaxSidebar() - m_minMaxWidget->setFixedSize(Style::MinMaxWidWidth,Style::MinMaxWidHeight); - m_minMaxLayout->setContentsMargins(m_minMaxWidget->width()-m_minMaxBtn->width(),0,0,0); - -- m_mainWidgetLayout->setContentsMargins(0,0,0,0); -+ m_mainWidgetLayout->setContentsMargins(0,0,0,6); - - Q_FOREACH(QAbstractButton* button,m_buttonList) - { - QPushButton* btn=qobject_cast(button); - setMaxSidebarBtn(btn); -+ btn->setToolTip(""); -+ } -+ -+ Q_FOREACH(QAbstractButton* button,m_buttonList) -+ { -+ QPushButton* btn=qobject_cast(button); -+ btn->setFixedSize(m_btnWidth,Style::SideBarBtnHeight); - } - -+ changeIconColor(true); -+ - disconnect(m_minMaxBtn, &QToolButton::clicked,this,&SideBarWidget::sendFullScreenBtnSignal); - connect(m_minMaxBtn, &QToolButton::clicked,this,&SideBarWidget::sendDefaultBtnSignal); - } -@@ -497,14 +507,13 @@ void SideBarWidget::loadMaxSidebar() - */ - void SideBarWidget::setMinBtn() - { -+ const auto ratio=devicePixelRatioF(); -+ QPixmap pixmap=loadSvg(QString(":/data/img/sidebarwidget/min.svg"),14*ratio); -+ pixmap=drawSymbolicColoredPixmap(pixmap);//反白 -+ pixmap.setDevicePixelRatio(qApp->devicePixelRatio()); -+ - m_minMaxBtn->setFixedSize(Style::MinMaxBtnWidth,Style::MinMaxBtnWidth); -- QSvgRenderer* svgRender = new QSvgRenderer(m_minMaxBtn); -- svgRender->load(QString(":/data/img/sidebarwidget/min.svg")); -- QPixmap* pixmap = new QPixmap(Style::MinMaxIconSize,Style::MinMaxIconSize); -- pixmap->fill(Qt::transparent);//设置背景透明 -- QPainter p(pixmap); -- svgRender->render(&p); -- m_minMaxBtn->setIcon(QIcon(*pixmap)); -+ m_minMaxBtn->setIcon(QIcon(pixmap)); - } - - /** -@@ -539,7 +548,6 @@ void SideBarWidget::setMaxSidebarBtn(QPushButton *btn) - } - //添加文本 - QLabel* labeltext=new QLabel; -- labeltext->setStyleSheet(QString("QLabel{background:transparent;color:#ffffff;border:0px;}")); - if(m_buttonList.indexOf(btn)<=2) - { - labeltext->setAlignment(Qt::AlignLeft | Qt::AlignVCenter); -@@ -557,27 +565,18 @@ void SideBarWidget::setMaxSidebarBtn(QPushButton *btn) - labeltext->setFixedSize(m_btnWidth-44,Style::SideBarBtnHeight); - labeltext->adjustSize(); - } -- -+ QPalette pe = labeltext->palette(); -+ pe.setColor(QPalette::ButtonText,QColor(Qt::white)); -+ labeltext->setPalette(pe); - btn->layout()->addWidget(labeltext); -- btn->setFixedSize(m_btnWidth,Style::SideBarBtnHeight); --// btn->setToolTip(""); -+// btn->setFixedSize(m_btnWidth,Style::SideBarBtnHeight); - } - - void SideBarWidget::btnGroupClickedSlot(QAbstractButton *btn) - { -- char btncolor[300]; -- sprintf(btncolor,"QPushButton{background:transparent;border:0px;padding-left:0;border-radius:4px;}\ -- QPushButton:hover{background-color:%s;border:0px;border-radius:4px;}\ -- QPushButton:pressed{background-color:%s;border:0px;border-radius:4px;}", -- SBFunBtnHoverBackground,SBFunBtnHoverBackground); -- -- char pressstyle[200]; -- sprintf(pressstyle,"QPushButton{background-color:%s;border:0px;padding-left:0;border-radius:4px;}",SBClassifyBtnSelectedBackground); -- - Q_FOREACH (QAbstractButton* button, m_buttonList) { - if(m_btnGroup->id(btn)==m_buttonList.indexOf(button)) - { -- button->setStyleSheet(pressstyle); - if(m_btnGroup->id(btn)==0) - { - if(m_isFullScreen) -@@ -597,8 +596,116 @@ void SideBarWidget::btnGroupClickedSlot(QAbstractButton *btn) - else Q_EMIT sendFunctionBtnSignal(); - } - } -- else{ -- button->setStyleSheet(btncolor); -+ } -+} -+ -+void SideBarWidget::themeModeChangeSlot(QString styleName) -+{ -+ if(styleName=="styleName") -+ { -+ QGSettings* gsetting=new QGSettings(QString("org.ukui.style").toLocal8Bit()); -+ Q_FOREACH(QAbstractButton *button,m_buttonList) -+ { -+ QPushButton *btn=qobject_cast(button); -+ QLayoutItem *item=btn->layout()->itemAt(0); -+ QLabel *label=qobject_cast(item->widget()); -+ QString iconStr; -+ switch (m_buttonList.indexOf(button)) { -+ case 0: -+ iconStr=QString(":/data/img/sidebarwidget/commonuse.svg"); -+ break; -+ case 1: -+ iconStr=QString(":/data/img/sidebarwidget/letter.svg"); -+ break; -+ case 2: -+ iconStr=QString(":/data/img/sidebarwidget/function.svg"); -+ break; -+ case 3: -+ userAccountsChanged(); -+ break; -+ case 4: -+ iconStr=QString(":/data/img/sidebarwidget/personal.svg"); -+ break; -+ case 5: -+ iconStr=QString(":/data/img/sidebarwidget/trash.svg"); -+ break; -+ case 6: -+ iconStr=QString(":/data/img/sidebarwidget/computer.svg"); -+ break; -+ case 7: -+ iconStr=QString(":/data/img/sidebarwidget/setting.svg"); -+ break; -+ case 8: -+ iconStr=QString(":/data/img/sidebarwidget/shutdown.svg"); -+ break; -+ default: -+ break; -+ } -+ if(m_buttonList.indexOf(button)!=3) -+ { -+ const auto ratio=devicePixelRatioF(); -+ QPixmap pixmap=loadSvg(iconStr,19*ratio); -+ if(gsetting->get("style-name").toString()=="ukui-light")//反黑 -+ pixmap=drawSymbolicBlackColoredPixmap(pixmap); -+ else -+ pixmap=drawSymbolicColoredPixmap(pixmap);//反白 -+ pixmap.setDevicePixelRatio(qApp->devicePixelRatio()); -+ label->setPixmap(pixmap); -+ } -+ } -+ } -+} -+ -+void SideBarWidget::changeIconColor(bool isFullScreen) -+{ -+ QGSettings* gsetting=new QGSettings(QString("org.ukui.style").toLocal8Bit()); -+ Q_FOREACH(QAbstractButton *button,m_buttonList) -+ { -+ QPushButton *btn=qobject_cast(button); -+ QLayoutItem *item=btn->layout()->itemAt(0); -+ QLabel *label=qobject_cast(item->widget()); -+ QString iconStr; -+ switch (m_buttonList.indexOf(button)) { -+ case 0: -+ iconStr=QString(":/data/img/sidebarwidget/commonuse.svg"); -+ break; -+ case 1: -+ iconStr=QString(":/data/img/sidebarwidget/letter.svg"); -+ break; -+ case 2: -+ iconStr=QString(":/data/img/sidebarwidget/function.svg"); -+ break; -+ case 3: -+ userAccountsChanged(); -+ break; -+ case 4: -+ iconStr=QString(":/data/img/sidebarwidget/personal.svg"); -+ break; -+ case 5: -+ iconStr=QString(":/data/img/sidebarwidget/trash.svg"); -+ break; -+ case 6: -+ iconStr=QString(":/data/img/sidebarwidget/computer.svg"); -+ break; -+ case 7: -+ iconStr=QString(":/data/img/sidebarwidget/setting.svg"); -+ break; -+ case 8: -+ iconStr=QString(":/data/img/sidebarwidget/shutdown.svg"); -+ break; -+ default: -+ break; -+ } -+ if(m_buttonList.indexOf(button)!=3) -+ { -+ const auto ratio=devicePixelRatioF(); -+ QPixmap pixmap=loadSvg(iconStr,19*ratio); -+ if(gsetting->get("style-name").toString()=="ukui-light" && !isFullScreen)//反黑 -+ pixmap=drawSymbolicBlackColoredPixmap(pixmap); -+ else -+ pixmap=drawSymbolicColoredPixmap(pixmap);//反白 -+ pixmap.setDevicePixelRatio(qApp->devicePixelRatio()); -+ label->setPixmap(pixmap); - } - } - } -@@ -622,20 +729,6 @@ void SideBarWidget::setSideBarBtnGeometry() - m_mainWidget->show(); - } - --void SideBarWidget::widgetMakeZero() --{ -- char pressstyle[200]; -- sprintf(pressstyle,"QPushButton{background-color:%s;border:0px;padding-left:0;border-radius:4px;}",SBClassifyBtnSelectedBackground); -- m_allBtn->setStyleSheet(pressstyle); -- char btncolor[300]; -- sprintf(btncolor,"QPushButton{background:transparent;border:0px;padding-left:0;border-radius:4px;}\ -- QPushButton:hover{background-color:%s;border:0px;border-radius:4px;}\ -- QPushButton:pressed{background-color:%s;border:0px;border-radius:4px;}", -- SBFunBtnHoverBackground,SBFunBtnHoverBackground); -- m_letterBtn->setStyleSheet(btncolor); -- m_functionBtn->setStyleSheet(btncolor); --} -- - //void SideBarWidget::mousePressEvent(QMouseEvent *event) - //{ - // if(m_isFullScreen && event->button()==Qt::LeftButton) -diff --git a/src/SideBarWidget/sidebarwidget.h b/src/SideBarWidget/sidebarwidget.h -index 74cc62f..5ccf32d 100644 ---- a/src/SideBarWidget/sidebarwidget.h -+++ b/src/SideBarWidget/sidebarwidget.h -@@ -51,10 +51,6 @@ public: - * @brief Load the full-screen sidebar - */ - void loadMaxSidebar(); -- /** -- * @brief Initializes the interface state -- */ -- void widgetMakeZero(); - /** - * @brief Sidebar animation - */ -@@ -72,7 +68,7 @@ private: - - QWidget *m_minMaxWidget=nullptr; - QHBoxLayout *m_minMaxLayout=nullptr; -- QToolButton *m_minMaxBtn=nullptr; -+ QPushButton *m_minMaxBtn=nullptr; - - QButtonGroup *m_btnGroup=nullptr; - QList m_buttonList; -@@ -138,6 +134,7 @@ protected: - */ - void setMaxBtn(); - QPixmap PixmapToRound(const QPixmap &src, int radius); -+ void changeIconColor(bool isFullScreen); - // void mousePressEvent(QMouseEvent* event); - - private Q_SLOTS: -@@ -186,6 +183,7 @@ private Q_SLOTS: - * @brief Reset the sidebar button - */ - void resetSidebarBtnSlot(); -+ void themeModeChangeSlot(QString styleName); - - Q_SIGNALS: - /** -diff --git a/src/Style/style.h b/src/Style/style.h -index c1f6e64..a13fad5 100644 ---- a/src/Style/style.h -+++ b/src/Style/style.h -@@ -42,14 +42,17 @@ - #define RightClickMenuOpacity 0.95 - #define ToolTipBackground "rgba(26, 26, 26, 0.7)" - #define DefaultBackground "rgba(19, 19, 20, 0.7)" //默认态背景色 --#define LineBackground "rgba(255,255,255,0.06)" //分割线背景色 -+#define LineBackground "rgba(255,255,255)" //分割线背景色 - #define SBClassifyBtnSelectedBackground "#3D6BE5" //侧边栏上部分类按钮选择背景 - #define SBFunBtnHoverBackground "rgba(255, 255, 255, 0.14)" //侧边栏目下部功能按钮悬浮背景 - #define ClassifyBtnHoverBackground "rgba(255, 255, 255, 0.14)" //分类按钮悬浮背景 - #define MMBtnHoverBackground "rgba(255, 255, 255, 0.14)" //最大化最小化按钮悬浮背景 --#define QueryLineEditBackground "rgba(0, 0, 0,0.4)" //搜索框背景 --#define QueryLineEditClickedBackground "rgba(0, 0, 0,0.5)" //搜索框背景选中 --#define QueryLineEditClickedBorder "rgba(61, 107, 229, 1)" //搜索框背景选中边框 -+#define QueryLineEditDefaultBackground "rgba(0, 0, 0,0.04)" //搜索框默认态背景 -+#define QueryLineEditBackground "rgba(255, 255, 255,0.06)" //搜索框背景 -+#define QueryLineEditClickedDefaultBackground "rgba(0, 0, 0,0.04)" //搜索框默认态背景选中 -+#define QueryLineEditClickedBackground "rgba(255, 255, 255,0.06)" //搜索框背景选中 -+#define QueryLineEditClickedBorderDefault "rgba(0, 0, 0,0.1)" //搜索框默认态背景选中边框 -+#define QueryLineEditClickedBorder "rgba(255, 255, 255,0.15)" //搜索框背景选中边框 - #define AppBtnHover "#ffffff" //按钮悬浮 - - /** -diff --git a/src/UtilityFunction/classifybtnscrollarea.cpp b/src/UtilityFunction/classifybtnscrollarea.cpp -new file mode 100644 -index 0000000..4627604 ---- /dev/null -+++ b/src/UtilityFunction/classifybtnscrollarea.cpp -@@ -0,0 +1,95 @@ -+/* -+ * Copyright (C) 2019 Tianjin KYLIN Information Technology 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, 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 -+#include -+ -+ClassifyBtnScrollAreaWid::ClassifyBtnScrollAreaWid() -+{ -+ this->setWindowFlags(Qt::CustomizeWindowHint | Qt::FramelessWindowHint); -+ this->setAttribute(Qt::WA_TranslucentBackground); -+ -+} -+ -+void ClassifyBtnScrollAreaWid::paintEvent(QPaintEvent *event) -+{ -+ QGSettings* gsetting=new QGSettings(QString("org.ukui.control-center.personalise").toLocal8Bit()); -+ double transparency=gsetting->get("transparency").toDouble(); -+ QPainter painter(this); -+// painter.setRenderHint(QPainter::Antialiasing); -+// painter.setOpacity(0.25); -+// painter.setBrush(Qt::black); -+// painter.setPen(Qt::NoPen); -+// QRect rect = this->rect(); -+// rect.setWidth(rect.width()); -+// rect.setHeight(rect.height()); -+// painter.drawRect(rect); -+ -+ if(QGSettings::isSchemaInstalled(QString("org.ukui.control-center.personalise").toLocal8Bit())) -+ { -+ QGSettings gsetting(QString("org.ukui.control-center.personalise").toLocal8Bit()); -+ if(gsetting.keys().contains(QString("effect"))) -+ { -+ if(gsetting.get("effect").toBool()) -+ { -+ painter.setBrush(Qt::black); -+ painter.setPen(Qt::transparent); -+ painter.setOpacity(0.25); -+ painter.drawRect(this->rect()); -+ } -+ else -+ { -+ painter.setBrush(this->palette().base()); -+ painter.setPen(Qt::transparent); -+ painter.setOpacity(transparency); -+ painter.drawRect(this->rect()); -+ } -+ } -+ else -+ { -+ painter.setBrush(this->palette().base()); -+ painter.setPen(Qt::transparent); -+ painter.setOpacity(transparency); -+ painter.drawRect(this->rect()); -+ } -+ } -+ else{ -+ painter.setBrush(this->palette().base()); -+ painter.setPen(Qt::transparent); -+ painter.setOpacity(transparency); -+ painter.drawRect(this->rect()); -+ } -+ QWidget::paintEvent(event); -+} -+ -+ClassifyBtnScrollArea::ClassifyBtnScrollArea(QWidget *parent): -+ QScrollArea(parent) -+{ -+ initWid(); -+} -+ -+void ClassifyBtnScrollArea::initWid() -+{ -+ this->verticalScrollBar()->setHidden(true); -+ this->horizontalScrollBar()->setHidden(true); -+ this->setWidgetResizable(true); -+ this->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); -+ this->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); -+ this->setFrameShape(QFrame::NoFrame); -+} -diff --git a/src/UtilityFunction/classifyscrollarea.h b/src/UtilityFunction/classifybtnscrollarea.h -similarity index 76% -rename from src/UtilityFunction/classifyscrollarea.h -rename to src/UtilityFunction/classifybtnscrollarea.h -index d902862..465bd4f 100644 ---- a/src/UtilityFunction/classifyscrollarea.h -+++ b/src/UtilityFunction/classifybtnscrollarea.h -@@ -20,11 +20,21 @@ - #define CLASSIFYSCROLLAREA_H - #include - #include -+#include - --class ClassifyScrollArea : public QScrollArea -+class ClassifyBtnScrollAreaWid: public QWidget - { - public: -- explicit ClassifyScrollArea(QWidget* parent=nullptr); -+ ClassifyBtnScrollAreaWid(); -+ -+protected: -+ void paintEvent(QPaintEvent* event); -+}; -+ -+class ClassifyBtnScrollArea : public QScrollArea -+{ -+public: -+ explicit ClassifyBtnScrollArea(QWidget* parent=nullptr); - - protected: - void initWid(); -diff --git a/src/UtilityFunction/classifyscrollarea.cpp b/src/UtilityFunction/classifyscrollarea.cpp -deleted file mode 100644 -index 1725e3d..0000000 ---- a/src/UtilityFunction/classifyscrollarea.cpp -+++ /dev/null -@@ -1,36 +0,0 @@ --/* -- * Copyright (C) 2019 Tianjin KYLIN Information Technology 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, 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 verticalScrollBar()->setHidden(true); -- this->horizontalScrollBar()->setHidden(true); -- this->setWidgetResizable(true); -- this->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); -- this->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); -- --} -diff --git a/src/UtilityFunction/fullitemdelegate.cpp b/src/UtilityFunction/fullitemdelegate.cpp -index e01cc6e..c4476b2 100644 ---- a/src/UtilityFunction/fullitemdelegate.cpp -+++ b/src/UtilityFunction/fullitemdelegate.cpp -@@ -37,7 +37,6 @@ void FullItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &opti - { - if(index.isValid()) - { -- painter->save(); - QStyleOptionViewItem viewOption(option);//用来在视图中画一个item - QRectF rect; - rect.setX(option.rect.x()); -@@ -58,19 +57,20 @@ void FullItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &opti - path.lineTo(rect.topRight() + QPointF(0, radius)); - path.quadTo(rect.topRight(), rect.topRight() + QPointF(-radius, -0)); - --// painter->setRenderHint(QPainter::Antialiasing); --// if(option.state.testFlag(QStyle::State_Selected)) --// if(option.state & QStyle::State_MouseOver) --// { --// painter->setPen(QPen(Qt::NoPen)); --// QColor color; --// color.setNamedColor(QString::fromLocal8Bit(AppBtnHover)); --// painter->setBrush(QBrush(color)); -- --// painter->setOpacity(0.14); --// painter->drawPath(path); --// } -+ painter->setRenderHint(QPainter::Antialiasing); -+ if(option.state & QStyle::State_MouseOver) -+ { -+// QColor color = option.palette.text().color(); -+// color.setAlphaF(0.15); -+ painter->save(); -+ painter->setPen(QPen(Qt::NoPen)); -+ painter->setBrush(Qt::white); -+ painter->setOpacity(0.15); -+ painter->drawPath(path); -+ painter->restore(); -+ } - -+ painter->save(); - painter->setOpacity(1); - QString desktopfp=index.data(Qt::DisplayRole).value(); - QString iconstr=pUkuiMenuInterface->getAppIcon(desktopfp); -@@ -105,6 +105,10 @@ void FullItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &opti - icon=QIcon(QString("/usr/share/icons/hicolor/32x32/apps/%1.%2").arg(iconstr).arg("png")); - else if(QFile::exists(QString("/usr/share/icons/hicolor/32x32/apps/%1.%2").arg(iconstr).arg("svg"))) - icon=QIcon(QString("/usr/share/icons/hicolor/32x32/apps/%1.%2").arg(iconstr).arg("svg")); -+ else if(QFile::exists(QString("/usr/share/pixmaps/%1.%2").arg(iconstr).arg("png"))) -+ icon=QIcon(QString("/usr/share/pixmaps/%1.%2").arg(iconstr).arg("png")); -+ else if(QFile::exists(QString("/usr/share/pixmaps/%1.%2").arg(iconstr).arg("svg"))) -+ icon=QIcon(QString("/usr/share/pixmaps/%1.%2").arg(iconstr).arg("svg")); - else - icon=QIcon::fromTheme(QString("application-x-desktop")); - } -@@ -119,19 +123,13 @@ void FullItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &opti - Style::AppListIconSize, - Style::AppListIconSize); - icon.paint(painter,iconRect); -+ painter->restore(); - -- textRect=QRect(rect.x()+5, -- iconRect.bottom()+Style::AppSpaceBetweenIconText, -- rect.width()-10, -- rect.height()-iconRect.height()-Style::AppSpaceBetweenIconText); -- -+ painter->save(); - bool is_locked=false; -- bool is_recentapp=false; - QFileInfo fileInfo(desktopfp); - QString desktopfn=fileInfo.fileName(); -- QFontMetrics fm=painter->fontMetrics(); -- QString appnameElidedText=fm.elidedText(appname,Qt::ElideRight,rect.width()-10,Qt::TextShowMnemonic); -- -+ //添加固定图标 - if(module==0) - { - setting->beginGroup("lockapplication"); -@@ -143,6 +141,18 @@ void FullItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &opti - } - setting->endGroup(); - } -+ painter->restore(); -+ -+ textRect=QRect(rect.x()+5, -+ iconRect.bottom()+Style::AppSpaceBetweenIconText, -+ rect.width()-10, -+ rect.height()-iconRect.height()-Style::AppSpaceBetweenIconText); -+ -+ painter->save(); -+ //添加最近安装蓝色标签 -+ bool is_recentapp=false; -+ QFontMetrics fm=painter->fontMetrics(); -+ QString appnameElidedText=fm.elidedText(appname,Qt::ElideRight,rect.width()-10,Qt::TextShowMnemonic); - setting->beginGroup("recentapp"); - if(setting->contains(desktopfn) && !is_locked) - { -@@ -168,22 +178,18 @@ void FullItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &opti - - } - setting->endGroup(); -+ painter->restore(); - -+ painter->save(); -+// painter->setPen(QPen(option.palette.text().color())); - painter->setPen(QPen(Qt::white)); -+ painter->setBrush(Qt::NoBrush); - painter->drawText(textRect,Qt::AlignHCenter |Qt::AlignTop,appnameElidedText); -+// painter->drawText(textRect,Qt::TextWordWrap |Qt::AlignHCenter,appname); -+ painter->restore(); - -- painter->setRenderHint(QPainter::Antialiasing); --// if(option.state.testFlag(QStyle::State_Selected)) - if(option.state & QStyle::State_MouseOver) - { -- painter->setPen(QPen(Qt::NoPen)); -- QColor color; -- color.setNamedColor(QString::fromLocal8Bit(AppBtnHover)); -- painter->setBrush(QBrush(color)); -- -- painter->setOpacity(0.14); -- painter->drawPath(path); -- - int len=0; - if(!is_locked && is_recentapp) - len=fm.boundingRect(appname).width()+23; -@@ -197,8 +203,6 @@ void FullItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &opti - else { - QToolTip::hideText(); - } -- painter->restore(); -- - } - } - -diff --git a/src/UtilityFunction/fulllistview.cpp b/src/UtilityFunction/fulllistview.cpp -index dcfacd8..7b09a1d 100644 ---- a/src/UtilityFunction/fulllistview.cpp -+++ b/src/UtilityFunction/fulllistview.cpp -@@ -41,23 +41,7 @@ FullListView::~FullListView() - - void FullListView::initWidget() - { -- char style[500]; -- sprintf(style,"QListView{border:0px;}\ -- QListView:Item{background:transparent;border:0px;color:#ffffff;font-size:14px;padding-left:0px;}\ -- QListView:Item:hover{background:transparent;}\ -- QListView:Item:pressed{background:transparent;}"); -- -- if(module!=1 && module!=2) -- this->verticalScrollBar()->setStyleSheet("QScrollBar{width:3px;padding-top:0px;padding-bottom:0px;background:transparent;border-radius:6px;}" -- "QScrollBar::handle{background-color:rgba(255,255,255,0.25); width:3px;border-radius:1.5px;}" -- "QScrollBar::handle:hover{background-color:#697883;border-radius:1.5px;}" -- "QScrollBar::handle:pressed{background-color:#8897a3;border-radius:1.5px;}" -- "QScrollBar::sub-line{background-color:transparent;height:0px;width:0px;}" -- "QScrollBar::add-line{background-color:transparent;height:0px;width:0px;}" -- ); -- -- --// this->setStyleSheet(style); -+ viewport()->setAttribute(Qt::WA_TranslucentBackground); - this->setSelectionMode(QAbstractItemView::SingleSelection); - this->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - if(module==1 || module==2) -@@ -73,6 +57,7 @@ void FullListView::initWidget() - this->setVerticalScrollMode(QAbstractItemView::ScrollPerPixel); - this->setGridSize(QSize(Style::AppListGridSizeWidth,Style::AppListGridSizeWidth)); - this->verticalScrollBar()->setContextMenuPolicy(Qt::NoContextMenu); -+ this->setFrameShape(QFrame::NoFrame);//移除边框 - connect(this,&FullListView::customContextMenuRequested,this,&FullListView::rightClickedSlot); - connect(this,&FullListView::clicked,this,&FullListView::onClicked); - } -@@ -175,6 +160,55 @@ void FullListView::leaveEvent(QEvent *e) - this->verticalScrollBar()->setVisible(false); - } - -+void FullListView::paintEvent(QPaintEvent *e) -+{ -+ QGSettings* gsetting=new QGSettings(QString("org.ukui.control-center.personalise").toLocal8Bit()); -+ double transparency=gsetting->get("transparency").toDouble(); -+ QPainter painter(this->viewport()); -+// painter.setOpacity(0.25); -+// painter.setPen(Qt::NoPen); -+// painter.fillRect(this->rect(),QBrush(Qt::black)); -+// QListView::paintEvent(e); -+ -+ -+ if(QGSettings::isSchemaInstalled(QString("org.ukui.control-center.personalise").toLocal8Bit())) -+ { -+ QGSettings gsetting(QString("org.ukui.control-center.personalise").toLocal8Bit()); -+ if(gsetting.keys().contains(QString("effect"))) -+ { -+ if(gsetting.get("effect").toBool()) -+ { -+ painter.setBrush(Qt::black); -+ painter.setPen(Qt::transparent); -+ painter.setOpacity(0.25); -+ painter.drawRect(this->rect()); -+ } -+ else -+ { -+ painter.setBrush(this->palette().base()); -+ painter.setPen(Qt::transparent); -+ painter.setOpacity(transparency); -+ painter.drawRect(this->rect()); -+ } -+ } -+ else -+ { -+ painter.setBrush(this->palette().base()); -+ painter.setPen(Qt::transparent); -+ painter.setOpacity(transparency); -+ painter.drawRect(this->rect()); -+ } -+ } -+ else -+ { -+ painter.setBrush(this->palette().base()); -+ painter.setPen(Qt::transparent); -+ painter.setOpacity(transparency); -+ painter.drawRect(this->rect()); -+ } -+ QListView::paintEvent(e); -+} -+ - //void FullListView::mousePressEvent(QMouseEvent *event) - //{ - // if(!(this->indexAt(event->pos()).isValid()) && event->button()==Qt::LeftButton) -diff --git a/src/UtilityFunction/fulllistview.h b/src/UtilityFunction/fulllistview.h -index 9b7f455..36c14a0 100644 ---- a/src/UtilityFunction/fulllistview.h -+++ b/src/UtilityFunction/fulllistview.h -@@ -43,6 +43,7 @@ protected: - void initWidget(); - void enterEvent(QEvent* e) Q_DECL_OVERRIDE; - void leaveEvent(QEvent* e) Q_DECL_OVERRIDE; -+ void paintEvent(QPaintEvent *e) override; - // void mousePressEvent(QMouseEvent *event); - - private: -diff --git a/src/UtilityFunction/functionclassifybutton.cpp b/src/UtilityFunction/functionclassifybutton.cpp -index b4d6203..21ee26a 100644 ---- a/src/UtilityFunction/functionclassifybutton.cpp -+++ b/src/UtilityFunction/functionclassifybutton.cpp -@@ -20,6 +20,8 @@ - #include "utility.h" - #include - #include -+#include -+#include - - FunctionClassifyButton::FunctionClassifyButton(int width, - int height, -@@ -38,22 +40,30 @@ FunctionClassifyButton::FunctionClassifyButton(int width, - m_iconLabel(new QLabel), - m_textLabel(new QLabel) - { -- m_textLabel->setAutoFillBackground(true); -+ this->setFlat(true); - this->setFixedSize(m_width,m_height); -- this->setCheckable(true); - this->setFocusPolicy(Qt::NoFocus); - m_iconLabel->setFixedSize(m_iconSize,m_iconSize); - m_textLabel->adjustSize(); -- m_iconLabel->setStyleSheet("background:transparent;"); -+ if(m_fullscreen) -+ { -+ QPalette pe = m_textLabel->palette(); -+ pe.setColor(QPalette::ButtonText,QColor(Qt::white)); -+ m_textLabel->setPalette(pe); -+ } - setLabelText(); - if(m_fullscreen) -+ { - updateIconState(Normal); -+ this->setCheckable(true); -+ } - else - { - if(m_enabled) - updateIconState(Enabled); - else - updateIconState(Disabled); -+ this->setCheckable(false); - } - - QHBoxLayout* mainlayout=new QHBoxLayout; -@@ -66,6 +76,49 @@ FunctionClassifyButton::FunctionClassifyButton(int width, - connect(this,&FunctionClassifyButton::clicked,this,&FunctionClassifyButton::buttonClickedSlot); - } - -+void FunctionClassifyButton::paintEvent(QPaintEvent* e) -+{ -+ Q_UNUSED(e); -+ QStylePainter painter(this); -+ QStyleOptionButton option; -+ initStyleOption(&option); -+ if ((option.state & QStyle::State_Enabled) && (option.state & QStyle::State_MouseOver)) { -+ painter.save(); -+ painter.setPen(Qt::NoPen); -+ if(!m_fullscreen) -+ { -+ QColor color = option.palette.color(QPalette::Text); -+ color.setAlphaF(0.15); -+ painter.setBrush(color); -+ } -+ else -+ { -+ painter.setOpacity(0.15); -+ painter.setBrush(Qt::white); -+ } -+ painter.drawRoundedRect(option.rect, 4, 4); -+ painter.restore(); -+ } -+ if(m_fullscreen && (option.state & QStyle::State_On)) -+ { -+ painter.save(); -+ painter.setPen(Qt::NoPen); -+// QColor color = option.palette.color(QPalette::Text); -+// color.setAlphaF(0.15); -+// painter.setBrush(color); -+ painter.setOpacity(0.15); -+ painter.setBrush(Qt::white); -+ painter.drawRoundedRect(option.rect, 4, 4); -+ painter.restore(); -+ } -+ -+ QStyleOptionButton subopt = option; -+ subopt.rect = painter.style()->subElementRect(QStyle::SE_PushButtonContents, &option, this); -+ subopt.palette.setBrush(QPalette::HighlightedText, subopt.palette.text()); -+ painter.style()->drawControl(QStyle::CE_PushButtonLabel, &subopt, &painter, this); -+ return; -+} -+ - void FunctionClassifyButton::updateBtnState() - { - if(m_enabled) -@@ -77,26 +130,15 @@ void FunctionClassifyButton::updateBtnState() - void FunctionClassifyButton::enterEvent(QEvent *e) - { - Q_UNUSED(e); -- QByteArray byte=QString(ClassifyBtnHoverBackground).toLocal8Bit(); -- char* hover=byte.data(); -- char style[100]; - if(m_enabled) - { - updateIconState(Checked); -- if(!m_fullscreen) -- { -- sprintf(style,"border:0px;border-radius:4px;padding-left:0px;background-color:%s;",hover); -- this->setStyleSheet(QString::fromLocal8Bit(style)); -- } -- else -- this->setStyleSheet("border:0px;border-radius:4px;padding-left:0px;background:transparent;"); - } - } - - void FunctionClassifyButton::leaveEvent(QEvent *e) - { - Q_UNUSED(e); -- this->setStyleSheet("border:0px;border-radius:4px;padding-left:0px;background:transparent;"); - if(m_fullscreen) - { - if(!isChecked()) -@@ -125,6 +167,34 @@ void FunctionClassifyButton::buttonClickedSlot() - Q_EMIT buttonClicked(); - } - -+void FunctionClassifyButton::updateIconState() -+{ -+ this->setFlat(true); -+ QString picState; -+ switch (m_state) -+ { -+ case Enabled: picState="Enabled"; break; -+ case Disabled: picState="Disabled"; break; -+ case Normal: picState="Normal"; break; -+ case Checked: picState="Checked"; break; -+ default: break; -+ } -+ -+ const auto ratio = devicePixelRatioF(); -+ QPixmap pixmap = loadSvg(QString(":/data/img/mainviewwidget/%1-%2.svg").arg(m_category).arg(picState), m_iconSize*ratio); -+ QGSettings gsetting(QString("org.ukui.style").toLocal8Bit()); -+ if(gsetting.get("style-name").toString()=="ukui-light")//反黑 -+ { -+ pixmap=drawSymbolicBlackColoredPixmap(pixmap); -+ } -+ else -+ { -+ pixmap=drawSymbolicColoredPixmap(pixmap);//反白 -+ } -+ pixmap.setDevicePixelRatio(qApp->devicePixelRatio()); -+ m_iconLabel->setPixmap(pixmap); -+} -+ - void FunctionClassifyButton::updateIconState(const FunctionClassifyButton::State state) - { - if (state == m_state) -@@ -143,6 +213,20 @@ void FunctionClassifyButton::updateIconState(const FunctionClassifyButton::State - - const auto ratio = devicePixelRatioF(); - QPixmap pixmap = loadSvg(QString(":/data/img/mainviewwidget/%1-%2.svg").arg(m_category).arg(picState), m_iconSize*ratio); -+ if(!m_fullscreen) -+ { -+ QGSettings gsetting(QString("org.ukui.style").toLocal8Bit()); -+ if(gsetting.get("style-name").toString()=="ukui-light")//反黑 -+ { -+ pixmap=drawSymbolicBlackColoredPixmap(pixmap); -+ } -+ else -+ { -+ pixmap=drawSymbolicColoredPixmap(pixmap);//反白 -+ } -+ } -+ else -+ pixmap=drawSymbolicColoredPixmap(pixmap);//反白 - pixmap.setDevicePixelRatio(qApp->devicePixelRatio()); - m_iconLabel->setPixmap(pixmap); - updateTextState(state); -@@ -155,19 +239,19 @@ void FunctionClassifyButton::updateTextState(const FunctionClassifyButton::State - { - case Enabled: - // p.setColor(QPalette::WindowText,QColor::fromRgbF(1, 1, 1)); -- m_textLabel->setStyleSheet("background:transparent; color:rgba(255, 255, 255);"); -+// m_textLabel->setStyleSheet("background:transparent; color:rgba(255, 255, 255);"); - break; - case Disabled: - // p.setColor(QPalette::WindowText,QColor::fromRgbF(1, 1, 1, 0.25)); -- m_textLabel->setStyleSheet("background:transparent; color:rgba(255, 255, 255, 25%);"); -+// m_textLabel->setStyleSheet("background:transparent; color:rgba(255, 255, 255, 25%);"); - break; - case Normal: - // p.setColor(QPalette::WindowText,QColor::fromRgbF(1, 1, 1, 0.50)); -- m_textLabel->setStyleSheet("background:transparent; color:rgba(255, 255, 255, 50%);"); -+// m_textLabel->setStyleSheet("background:transparent; color:rgba(255, 255, 255, 50%);"); - break; - case Checked: - // p.setColor(QPalette::WindowText,QColor::fromRgbF(1, 1, 1)); -- m_textLabel->setStyleSheet("background:transparent;color:rgba(255, 255, 255);"); -+// m_textLabel->setStyleSheet("background:transparent;color:rgba(255, 255, 255);"); - break; - default: - break; -diff --git a/src/UtilityFunction/functionclassifybutton.h b/src/UtilityFunction/functionclassifybutton.h -index 2c1f998..1b80037 100644 ---- a/src/UtilityFunction/functionclassifybutton.h -+++ b/src/UtilityFunction/functionclassifybutton.h -@@ -78,10 +78,12 @@ public: - State m_state=Checked; - - void updateBtnState(); -+ void updateIconState();//根据主题修改图标 - - protected: - void enterEvent(QEvent* e); - void leaveEvent(QEvent* e); -+ void paintEvent(QPaintEvent* e); - void updateIconState(const State state); - void updateTextState(const State state); - void setLabelText(); -diff --git a/src/UtilityFunction/itemdelegate.cpp b/src/UtilityFunction/itemdelegate.cpp -index 87ef0c3..41d945b 100644 ---- a/src/UtilityFunction/itemdelegate.cpp -+++ b/src/UtilityFunction/itemdelegate.cpp -@@ -39,7 +39,6 @@ void ItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, - { - if(index.isValid()) - { -- painter->save(); - QStyleOptionViewItem viewOption(option);//用来在视图中画一个item - QRectF rect; - QStringList strlist1=index.model()->data(index,Qt::DisplayRole).toStringList(); -@@ -73,16 +72,15 @@ void ItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, - - QStringList strlist=index.model()->data(index,Qt::DisplayRole).toStringList(); - painter->setRenderHint(QPainter::Antialiasing); --// if(option.state.testFlag(QStyle::State_Selected)) - if(option.state & QStyle::State_MouseOver) - { -+ QColor color = option.palette.text().color(); -+ color.setAlphaF(0.15); -+ painter->save(); - painter->setPen(QPen(Qt::NoPen)); -- QColor color; -- color.setNamedColor(QString::fromLocal8Bit(AppBtnHover)); - painter->setBrush(color); -- painter->setOpacity(0.14); - painter->drawPath(path); -- -+ painter->restore(); - } - painter->setOpacity(1); - -@@ -111,15 +109,21 @@ void ItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, - icon=QIcon(QString("/usr/share/icons/hicolor/32x32/apps/%1.%2").arg(iconstr).arg("svg")); - else if(QFile::exists(QString("/usr/share/icons/hicolor/32x32/apps/%1.%2").arg(iconstr).arg("png"))) - icon=QIcon(QString("/usr/share/icons/hicolor/32x32/apps/%1.%2").arg(iconstr).arg("png")); -+ else if(QFile::exists(QString("/usr/share/pixmaps/%1.%2").arg(iconstr).arg("png"))) -+ icon=QIcon(QString("/usr/share/pixmaps/%1.%2").arg(iconstr).arg("png")); -+ else if(QFile::exists(QString("/usr/share/pixmaps/%1.%2").arg(iconstr).arg("svg"))) -+ icon=QIcon(QString("/usr/share/pixmaps/%1.%2").arg(iconstr).arg("svg")); - else - icon=QIcon::fromTheme(QString("application-x-desktop")); - } - } -+ painter->save(); - icon.paint(painter,iconRect,Qt::AlignLeft); -- painter->setPen(QPen(Qt::white)); - QString appname=pUkuiMenuInterface->getAppName(strlist.at(0)); - painter->drawText(QRect(iconRect.right()+15,rect.y(), - rect.width()-62,rect.height()),Qt::AlignVCenter,appname); -+ painter->restore(); -+ painter->save(); - setting->beginGroup("recentapp"); - QFileInfo fileInfo(strlist.at(0)); - QString desktopfn=fileInfo.fileName(); -@@ -130,22 +134,24 @@ void ItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, - painter->drawEllipse(QPoint(rect.topRight().x()-22,rect.y()+(rect.height()-8)/2+4),4,4); - } - setting->endGroup(); -+ painter->restore(); - } - else - { -- painter->setPen(QPen(Qt::white)); -+ //绘制分割线 -+ painter->save(); - QRect textRect=QRect(rect.x()+11,rect.y()+12,rect.width(),rect.height()); - painter->drawText(textRect,Qt::AlignLeft,strlist.at(0)); - painter->setRenderHint(QPainter::Antialiasing, true); -- painter->setPen(QPen(QColor("#FFFFFF"),1)); -- painter->setOpacity(0.06); -+ painter->setPen(QPen(QColor(option.palette.text().color()),1)); -+ painter->setOpacity(0.1); - painter->drawLine(QPoint(5,rect.bottom()),QPoint(rect.right(),rect.bottom())); -+ painter->restore(); - } - - } - else - { -- painter->setOpacity(1); - QRect iconRect=QRect(rect.left()+11,rect.y()+(rect.height()-32)/2,32,32); - QString iconstr=pUkuiMenuInterface->getAppIcon(strlist.at(0)); - QIcon icon; -@@ -159,8 +165,6 @@ void ItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, - icon=QIcon::fromTheme(iconstr); - if(icon.isNull()) - { -- if(pUkuiMenuInterface->getAppName(strlist.at(0))=="baidunetdisk") -- syslog(LOG_LOCAL0 | LOG_DEBUG ,"---2---"); - if(QFile::exists(QString("/usr/share/icons/hicolor/scalable/apps/%1.%2").arg(iconstr).arg("svg"))) - icon=QIcon(QString("/usr/share/icons/hicolor/scalable/apps/%1.%2").arg(iconstr).arg("svg")); - else if(QFile::exists(QString("/usr/share/icons/hicolor/scalable/apps/%1.%2").arg(iconstr).arg("png"))) -@@ -169,6 +173,10 @@ void ItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, - icon=QIcon(QString("/usr/share/icons/hicolor/32x32/apps/%1.%2").arg(iconstr).arg("png")); - else if(QFile::exists(QString("/usr/share/icons/hicolor/32x32/apps/%1.%2").arg(iconstr).arg("svg"))) - icon=QIcon(QString("/usr/share/icons/hicolor/32x32/apps/%1.%2").arg(iconstr).arg("svg")); -+ else if(QFile::exists(QString("/usr/share/pixmaps/%1.%2").arg(iconstr).arg("png"))) -+ icon=QIcon(QString("/usr/share/pixmaps/%1.%2").arg(iconstr).arg("png")); -+ else if(QFile::exists(QString("/usr/share/pixmaps/%1.%2").arg(iconstr).arg("svg"))) -+ icon=QIcon(QString("/usr/share/pixmaps/%1.%2").arg(iconstr).arg("svg")); - else - icon=QIcon::fromTheme(QString("application-x-desktop")); - } -@@ -186,6 +194,8 @@ void ItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, - icon.paint(painter,QRect(rect.topRight().x()-22,rect.y()+(rect.height()-16)/2,16,16)); - } - setting->endGroup(); -+ painter->setOpacity(1); -+ painter->save(); - setting->beginGroup("recentapp"); - if(setting->contains(desktopfn) && !is_locked) - { -@@ -194,12 +204,15 @@ void ItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, - painter->drawEllipse(QPoint(rect.topRight().x()-22,rect.y()+(rect.height()-8)/2+4),4,4); - } - setting->endGroup(); -+ painter->restore(); -+ painter->save(); -+ painter->setPen(QPen(option.palette.text().color())); -+ painter->setBrush(Qt::NoBrush); - painter->setOpacity(1); -- painter->setPen(QPen(Qt::white)); - painter->drawText(QRect(iconRect.right()+15,rect.y(), - rect.width()-62,rect.height()),Qt::AlignVCenter,appname); -+ painter->restore(); - } -- painter->restore(); - } - - } -diff --git a/src/UtilityFunction/letterclassifybutton.cpp b/src/UtilityFunction/letterclassifybutton.cpp -index 30c8339..25066da 100644 ---- a/src/UtilityFunction/letterclassifybutton.cpp -+++ b/src/UtilityFunction/letterclassifybutton.cpp -@@ -17,67 +17,116 @@ - */ - - #include "letterclassifybutton.h" -+#include -+#include - - LetterClassifyButton::LetterClassifyButton(QWidget *parent, -- QString hoverbg, -- QString pressedbg, -+ bool fullscreen, - QString letter): -- QToolButton(parent) -+ QPushButton(parent), -+ m_fullscreen(fullscreen) - { -- this->hoverbg=hoverbg; -- this->pressedbg=pressedbg; -- this->setStyleSheet(QString("background:transparent;color:#8b8b8b;padding-left:0px;")); -+ this->setFlat(true); - QFont font; - font.setPixelSize(Style::LeftLetterFontSize); - this->setFont(font); - this->setText(letter); -- this->setFixedSize(Style::LeftLetterBtnHeight,Style::LeftLetterBtnHeight); - this->setCheckable(true); - connect(this,&LetterClassifyButton::toggled,this,&LetterClassifyButton::reactToToggle); - } - -+void LetterClassifyButton::paintEvent(QPaintEvent* e) -+{ -+ QStylePainter painter(this); -+ QStyleOptionButton option; -+ initStyleOption(&option); -+ if ((option.state & QStyle::State_Enabled) && (option.state & QStyle::State_MouseOver)) { -+ painter.save(); -+ painter.setPen(Qt::NoPen); -+ if(!m_fullscreen) -+ { -+ QColor color = option.palette.color(QPalette::Text); -+ color.setAlphaF(0.15); -+ painter.setBrush(color); -+ } -+ else -+ { -+ painter.setOpacity(0.15); -+ painter.setBrush(Qt::white); -+ } -+ painter.drawRoundedRect(option.rect, 4, 4); -+ painter.restore(); -+ } -+ if(m_fullscreen && (option.state & QStyle::State_On)) -+ { -+ painter.save(); -+ painter.setPen(Qt::NoPen); -+// QColor color = option.palette.color(QPalette::Text); -+// color.setAlphaF(0.15); -+// painter.setBrush(color); -+ painter.setOpacity(0.15); -+ painter.setBrush(Qt::white); -+ painter.drawRoundedRect(option.rect, 4, 4); -+ painter.restore(); -+ } -+ -+ QStyleOptionButton subopt = option; -+ subopt.rect = painter.style()->subElementRect(QStyle::SE_PushButtonContents, &option, this); -+ if(m_fullscreen) -+ subopt.palette.setBrush(QPalette::ButtonText, QColor(Qt::white)); -+ else -+ subopt.palette.setBrush(QPalette::HighlightedText, subopt.palette.text()); -+ painter.style()->drawControl(QStyle::CE_PushButtonLabel, &subopt, &painter, this); -+ return; -+} -+ - void LetterClassifyButton::enterEvent(QEvent *e) - { - Q_UNUSED(e); -- this->setStyleSheet(QString("background:transparent;color:#ffffff;padding-left:0px;")); -- QFont font; -- font.setPixelSize(Style::LeftLetterFontSize*3); -- this->setFont(font); -- this->setFixedSize(Style::LeftLetterBtnHeight*2,Style::LeftLetterBtnHeight*2); -+ if(m_fullscreen) -+ { -+ QFont font; -+ font.setPixelSize(Style::LeftLetterFontSize*3); -+ this->setFont(font); -+ this->setFixedSize(Style::LeftLetterBtnHeight*2,Style::LeftLetterBtnHeight*2); -+ } - } - - void LetterClassifyButton::leaveEvent(QEvent *e) - { - Q_UNUSED(e); -- if(is_pressed) -- this->setStyleSheet(QString("background:transparent;color:#ffffff;padding-left:0px;")); -- else -- this->setStyleSheet(QString("background:transparent;color:#8b8b8b;padding-left:0px;")); -- QFont font; -- font.setPixelSize(Style::LeftLetterFontSize); -- this->setFont(font); -- this->setFixedSize(Style::LeftLetterBtnHeight,Style::LeftLetterBtnHeight); -+ if(m_fullscreen) -+ { -+ QFont font; -+ font.setPixelSize(Style::LeftLetterFontSize); -+ this->setFont(font); -+ this->setFixedSize(Style::LeftLetterBtnHeight,Style::LeftLetterBtnHeight); -+ } - } - - void LetterClassifyButton::mousePressEvent(QMouseEvent *event) - { - Q_UNUSED(event); -- this->setStyleSheet(QString("background:transparent;color:#ffffff;padding-left:0px;")); -- QFont font; -- font.setPixelSize(Style::LeftLetterFontSize*3); -- this->setFont(font); -- this->setFixedSize(Style::LeftLetterBtnHeight*2,Style::LeftLetterBtnHeight*2); -- is_pressed=true; -+ if(m_fullscreen) -+ { -+ QFont font; -+ font.setPixelSize(Style::LeftLetterFontSize*3); -+ this->setFont(font); -+ this->setFixedSize(Style::LeftLetterBtnHeight*2,Style::LeftLetterBtnHeight*2); -+ is_pressed=true; -+ } - } - - void LetterClassifyButton::mouseReleaseEvent(QMouseEvent *event) - { - Q_UNUSED(event); -- this->setStyleSheet(QString("background:transparent;color:#ffffff;padding-left:0px;")); -- QFont font; -- font.setPixelSize(Style::LeftLetterFontSize*3); -- this->setFont(font); -- this->setFixedSize(Style::LeftLetterBtnHeight*2,Style::LeftLetterBtnHeight*2); -+ if(m_fullscreen) -+ { -+ QFont font; -+ font.setPixelSize(Style::LeftLetterFontSize*3); -+ this->setFont(font); -+ this->setFixedSize(Style::LeftLetterBtnHeight*2,Style::LeftLetterBtnHeight*2); -+ } - Q_EMIT buttonClicked(this); - } - -@@ -85,12 +134,10 @@ void LetterClassifyButton::reactToToggle(bool checked) - { - if(checked) - { -- this->setStyleSheet(QString("background:transparent;color:#ffffff;padding-left:0px;")); - this->is_pressed=true; - } - else - { -- this->setStyleSheet(QString("background:transparent;color:#8b8b8b;padding-left:0px;")); - this->is_pressed=false; - } - } -diff --git a/src/UtilityFunction/letterclassifybutton.h b/src/UtilityFunction/letterclassifybutton.h -index 98d6112..7fa1307 100644 ---- a/src/UtilityFunction/letterclassifybutton.h -+++ b/src/UtilityFunction/letterclassifybutton.h -@@ -18,30 +18,29 @@ - - #ifndef LETTERCLASSIFYBUTTON_H - #define LETTERCLASSIFYBUTTON_H --#include -+#include - #include - #include - #include "src/Style/style.h" - --class LetterClassifyButton : public QToolButton -+class LetterClassifyButton : public QPushButton - { - Q_OBJECT - public: - LetterClassifyButton(QWidget *parent, -- QString hoverbg, -- QString pressedbg, -+ bool fullscreen, - QString letter - ); - - bool is_pressed=false; - - private: -- QString hoverbg; -- QString pressedbg; -+ bool m_fullscreen=false; - - protected: - void enterEvent(QEvent* e); - void leaveEvent(QEvent* e); -+ void paintEvent(QPaintEvent* e); - void mousePressEvent(QMouseEvent *event); - void mouseReleaseEvent(QMouseEvent *event); - -diff --git a/src/UtilityFunction/listview.cpp b/src/UtilityFunction/listview.cpp -index b0a413c..d4ea435 100644 ---- a/src/UtilityFunction/listview.cpp -+++ b/src/UtilityFunction/listview.cpp -@@ -32,7 +32,6 @@ ListView::ListView(QWidget *parent, int width, int height, int module): - - QString path=QDir::homePath()+"/.config/ukui/ukui-menu.ini"; - setting=new QSettings(path,QSettings::IniFormat); -- - } - ListView::~ListView() - { -@@ -42,19 +41,11 @@ ListView::~ListView() - - void ListView::initWidget() - { --// this->setFixedSize(w,h); -- -- this->verticalScrollBar()->setStyleSheet("QScrollBar{padding-top:0px;padding-bottom:0px;background:transparent;width:3px;border-radius:1.5px;}" -- "QScrollBar::handle{background-color:rgba(255,255,255,0.25); width:3px;border-radius:1.5px;}" -- "QScrollBar::handle:hover{background-color:#697883;width:3px;border-radius:1.5px;}" -- "QScrollBar::handle:pressed{background-color:#8897a3;width:3px;border-radius:1.5px;}" -- "QScrollBar::sub-line{background-color:transparent;height:0px;width:0px;}" -- "QScrollBar::add-line{background-color:transparent;height:0px;width:0px;}" -- ); -+ setAttribute(Qt::WA_TranslucentBackground); -+ viewport()->setAttribute(Qt::WA_TranslucentBackground); - this->setSelectionMode(QAbstractItemView::SingleSelection); - this->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded); - this->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); --// this->setGridSize(QSize(310,48)); - this->setResizeMode(QListView::Adjust); - this->setTextElideMode(Qt::ElideRight); - this->setViewMode(QListView::ListMode); -@@ -63,11 +54,11 @@ void ListView::initWidget() - this->setMovement(QListView::Static); - this->setEditTriggers(QAbstractItemView::NoEditTriggers); - this->setUpdatesEnabled(true); --// this->setVerticalScrollMode(QAbstractItemView::ScrollPerPixel); - this->setSpacing(0); - this->setContentsMargins(0, 0, 0, 0); - this->setMouseTracking(true); - this->verticalScrollBar()->setContextMenuPolicy(Qt::NoContextMenu); -+ this->setFrameShape(QFrame::NoFrame); - connect(this,&ListView::customContextMenuRequested,this,&ListView::rightClickedSlot); - connect(this,&ListView::clicked,this,&ListView::onClicked); - } -@@ -179,3 +170,15 @@ void ListView::leaveEvent(QEvent *e) - Q_UNUSED(e); - this->verticalScrollBar()->setVisible(false); - } -+ -+void ListView::paintEvent(QPaintEvent *e) -+{ -+ QGSettings* gsetting=new QGSettings(QString("org.ukui.control-center.personalise").toLocal8Bit()); -+ double transparency=gsetting->get("transparency").toDouble(); -+ QPainter painter(this->viewport()); -+ painter.setOpacity(transparency); -+ painter.setPen(Qt::NoPen); -+ painter.setBrush(this->palette().base()); -+ painter.fillRect(this->rect(), this->palette().base()); -+ QListView::paintEvent(e); -+} -diff --git a/src/UtilityFunction/listview.h b/src/UtilityFunction/listview.h -index addd5f9..37a61c4 100644 ---- a/src/UtilityFunction/listview.h -+++ b/src/UtilityFunction/listview.h -@@ -45,6 +45,7 @@ protected: - void initWidget(); - void enterEvent(QEvent* e) Q_DECL_OVERRIDE; - void leaveEvent(QEvent* e) Q_DECL_OVERRIDE; -+ void paintEvent(QPaintEvent *e) override; - - private: - QStandardItemModel* listmodel=nullptr; -diff --git a/src/UtilityFunction/proxystyle.cpp b/src/UtilityFunction/proxystyle.cpp -new file mode 100644 -index 0000000..ecd103e ---- /dev/null -+++ b/src/UtilityFunction/proxystyle.cpp -@@ -0,0 +1,50 @@ -+#include "proxystyle.h" -+#include -+#include -+ -+ProxyStyle::ProxyStyle() -+{ -+ if(QGSettings::isSchemaInstalled(QString("org.ukui.style").toLocal8Bit())) -+ { -+ QGSettings* gsetting=new QGSettings(QString("org.ukui.style").toLocal8Bit()); -+ connect(gsetting,&QGSettings::changed,this,[=]{ -+ for(auto widget: QApplication::allWidgets()) -+ { -+ qDebug()<<"---111---"; -+ widget->update(); -+ } -+ }); -+ } -+} -+ -+QPalette ProxyStyle::standardPalette() const -+{ -+ auto m_palette=QProxyStyle::standardPalette(); -+ QColor m_highlightbg; -+ if(QGSettings::isSchemaInstalled(QString("org.ukui.style").toLocal8Bit())) -+ { -+ QGSettings* gsetting=new QGSettings(QString("org.ukui.style").toLocal8Bit()); -+ if(gsetting->keys().contains(QString("styleName"))) -+ { -+ if(gsetting->get("style-name").toString()=="ukui-light") -+ { -+ m_highlightbg=QColor(0, 0, 0); -+ m_highlightbg.setAlphaF(0.15); -+ } -+ else -+ { -+ m_highlightbg=QColor(255,255,255); -+ m_highlightbg.setAlphaF(0.14); -+ } -+ } -+ m_palette.setBrush(QPalette::Highlight,m_highlightbg); -+ return m_palette; -+ } -+ return m_palette; -+} -+ -+void ProxyStyle::polish(QPalette &pal) -+{ -+ pal=standardPalette(); -+// QProxyStyle::polish(pal); -+} -diff --git a/src/UtilityFunction/proxystyle.h b/src/UtilityFunction/proxystyle.h -new file mode 100644 -index 0000000..397e74a ---- /dev/null -+++ b/src/UtilityFunction/proxystyle.h -@@ -0,0 +1,28 @@ -+#ifndef INTERNALSTYLE_H -+#define INTERNALSTYLE_H -+#include -+#include -+#include -+#include -+#include -+#include -+ -+class ProxyStyle : public QProxyStyle -+{ -+ Q_OBJECT -+public: -+ ProxyStyle(); -+ -+// void drawPrimitive(QStyle::PrimitiveElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget = nullptr) const; -+// void drawControl(QStyle::ControlElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget = nullptr) const; -+// void drawComplexControl(QStyle::ComplexControl control, const QStyleOptionComplex *option, QPainter *painter, const QWidget *widget = nullptr) const; -+ void polish(QPalette &pal); -+// void polish(QWidget *widget); -+ QPalette standardPalette() const; -+ -+private: -+ double transparency; -+ -+}; -+ -+#endif // INTERNALSTYLE_H -diff --git a/src/UtilityFunction/scrollarea.cpp b/src/UtilityFunction/scrollarea.cpp -index a86855b..6d72db4 100644 ---- a/src/UtilityFunction/scrollarea.cpp -+++ b/src/UtilityFunction/scrollarea.cpp -@@ -18,21 +18,75 @@ - - #include "scrollarea.h" - #include -+#include -+#include -+ -+ScrollAreaWid::ScrollAreaWid() -+{ -+ this->setWindowFlags(Qt::CustomizeWindowHint | Qt::FramelessWindowHint); -+ this->setAttribute(Qt::WA_TranslucentBackground); -+} -+ -+void ScrollAreaWid::paintEvent(QPaintEvent *event) -+{ -+ QGSettings* gsetting=new QGSettings(QString("org.ukui.control-center.personalise").toLocal8Bit()); -+ double transparency=gsetting->get("transparency").toDouble(); -+ QPainter painter(this); -+// painter.setRenderHint(QPainter::Antialiasing); -+// painter.setOpacity(0.25); -+// painter.setBrush(Qt::black); -+// painter.setPen(Qt::NoPen); -+// QRect rect = this->rect(); -+// rect.setWidth(rect.width()); -+// rect.setHeight(rect.height()); -+// painter.drawRect(rect); -+ -+ if(QGSettings::isSchemaInstalled(QString("org.ukui.control-center.personalise").toLocal8Bit())) -+ { -+ QGSettings gsetting(QString("org.ukui.control-center.personalise").toLocal8Bit()); -+ if(gsetting.keys().contains(QString("effect"))) -+ { -+ if(gsetting.get("effect").toBool()) -+ { -+ painter.setBrush(Qt::black); -+ painter.setPen(Qt::transparent); -+ painter.setOpacity(0.25); -+ painter.drawRect(this->rect()); -+ } -+ else -+ { -+ painter.setBrush(this->palette().base()); -+ painter.setPen(Qt::transparent); -+ painter.setOpacity(transparency); -+ painter.drawRect(this->rect()); -+ } -+ } -+ else -+ { -+ painter.setBrush(this->palette().base()); -+ painter.setPen(Qt::transparent); -+ painter.setOpacity(transparency); -+ painter.drawRect(this->rect()); -+ } -+ } -+ else -+ { -+ painter.setBrush(this->palette().base()); -+ painter.setPen(Qt::transparent); -+ painter.setOpacity(transparency); -+ painter.drawRect(this->rect()); -+ } -+ QWidget::paintEvent(event); -+} - - ScrollArea::ScrollArea() - { - this->verticalScrollBar()->setVisible(false); -- this->verticalScrollBar()->setStyleSheet("QScrollBar{width:3px;padding-top:0px;padding-bottom:0px;background:transparent;border-radius:6px;}" -- "QScrollBar::handle{background-color:rgba(255,255,255,0.25); width:3px;border-radius:1.5px;}" -- "QScrollBar::handle:hover{background-color:#697883;border-radius:1.5px;}" -- "QScrollBar::handle:pressed{background-color:#8897a3;border-radius:1.5px;}" -- "QScrollBar::sub-line{background-color:transparent;height:0px;width:0px;}" -- "QScrollBar::add-line{background-color:transparent;height:0px;width:0px;}" -- ); -- installEventFilter(this); -- this->setFocusPolicy(Qt::NoFocus); -- this->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded); -- this->verticalScrollBar()->setContextMenuPolicy(Qt::NoContextMenu); -+ installEventFilter(this); -+ this->setFocusPolicy(Qt::NoFocus); -+ this->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded); -+ this->verticalScrollBar()->setContextMenuPolicy(Qt::NoContextMenu); -+ this->setFrameShape(QFrame::NoFrame); - } - - void ScrollArea::enterEvent(QEvent *e) -@@ -46,3 +100,13 @@ void ScrollArea::leaveEvent(QEvent *e) - Q_UNUSED(e); - this->verticalScrollBar()->setVisible(false); - } -+ -+void ScrollArea::scrollContentsBy(int dx, int dy) -+{ -+ QScrollArea::scrollContentsBy(dx,dy); -+ -+ Q_EMIT requestUpdate(); -+ -+// update(); -+// viewport()->update(); -+} -diff --git a/src/UtilityFunction/scrollarea.h b/src/UtilityFunction/scrollarea.h -index 3892462..0660c15 100644 ---- a/src/UtilityFunction/scrollarea.h -+++ b/src/UtilityFunction/scrollarea.h -@@ -25,18 +25,32 @@ - #include - #include - -+class ScrollAreaWid: public QWidget -+{ -+public: -+ ScrollAreaWid(); -+ -+protected: -+ void paintEvent(QPaintEvent* event); -+}; -+ - class ScrollArea : public QScrollArea - { -+ Q_OBJECT - public: - ScrollArea(); - -+Q_SIGNALS: -+ void requestUpdate(); -+ - protected: - void enterEvent(QEvent* e) Q_DECL_OVERRIDE; - void leaveEvent(QEvent* e) Q_DECL_OVERRIDE; - -+ void scrollContentsBy(int dx, int dy) override; -+ - private: - double m_speedTime = 3; -- - }; - - #endif // SCROLLAREA_H -diff --git a/src/UtilityFunction/pushbutton.cpp b/src/UtilityFunction/splitbarframe.cpp -similarity index 72% -rename from src/UtilityFunction/pushbutton.cpp -rename to src/UtilityFunction/splitbarframe.cpp -index e0fa1a1..6a9b517 100644 ---- a/src/UtilityFunction/pushbutton.cpp -+++ b/src/UtilityFunction/splitbarframe.cpp -@@ -16,10 +16,10 @@ - * - */ - --#include "pushbutton.h" -+#include "splitbarframe.h" - --PushButton::PushButton(QWidget *parent, QString category, int width, int height, int module): -- QPushButton(parent), -+SplitBarFrame::SplitBarFrame(QWidget *parent, QString category, int width, int height, int module): -+ QFrame(parent), - m_category(category), - m_width(width), - m_height(height), -@@ -30,47 +30,49 @@ PushButton::PushButton(QWidget *parent, QString category, int width, int height, - initAppBtn(); - } - --PushButton::~PushButton() -+SplitBarFrame::~SplitBarFrame() - { - } - --void PushButton::initAppBtn() --{ -- char btnstyle[300]; -- sprintf(btnstyle,"QPushButton{background:transparent;border:0px;color:#ffffff;font-size:14px;padding-left:0px;text-align: left center;}\ -- QPushButton:hover{background-color:%s;}\ -- QPushButton:pressed{background-color:%s;}", ClassifyBtnHoverBackground,ClassifyBtnHoverBackground); -- -+void SplitBarFrame::initAppBtn() -+{ - this->setFixedSize(m_width,m_height); -- this->setStyleSheet(btnstyle); -+// this->setStyleSheet("background:transparent"); -+ //按钮透明 - this->setFocusPolicy(Qt::NoFocus); -- QHBoxLayout* layout=new QHBoxLayout(this); -+ this->setAttribute(Qt::WA_TranslucentBackground); -+ QHBoxLayout* layout=new QHBoxLayout; - layout->setContentsMargins(15,0,0,0); - layout->setSpacing(6); - -- char style[100]; -- sprintf(style,"color:#ffffff;"); -+ m_textLabel->setAutoFillBackground(false); - m_textLabel->setAlignment(Qt::AlignCenter); -- m_textLabel->setStyleSheet(style); - if(m_module==1) - m_textLabel->setText(m_category); - else - setLabelText(); - m_textLabel->adjustSize(); -+ QPalette pe=m_textLabel->palette(); -+ pe.setColor(QPalette::WindowText,Qt::white); -+ m_textLabel->setPalette(pe); - m_line->setFrameShape(QFrame::HLine); - m_line->setFixedHeight(1); -- m_line->setStyleSheet("background-color:rgba(255, 255, 255, 0.06)"); - m_line->setFixedSize(m_width-m_textLabel->width()-15,1); -+ m_line->setEnabled(false); -+ QPalette linePe=m_line->palette(); -+ QColor color(255,255,255); -+ color.setAlphaF(0.10); -+ linePe.setColor(QPalette::WindowText,color); -+ m_line->setPalette(linePe); - -+ this->setLayout(layout); - layout->addWidget(m_textLabel); - layout->addWidget(m_line); -- this->setLayout(layout); -- this->setEnabled(false); - } - --void PushButton::setLabelText() -+void SplitBarFrame::setLabelText() - { -- QMetaEnum metaEnum=QMetaEnum::fromType(); -+ QMetaEnum metaEnum=QMetaEnum::fromType(); - switch (metaEnum.keyToValue(m_category.toLocal8Bit().data())) - { - case Mobile: -diff --git a/src/UtilityFunction/pushbutton.h b/src/UtilityFunction/splitbarframe.h -similarity index 91% -rename from src/UtilityFunction/pushbutton.h -rename to src/UtilityFunction/splitbarframe.h -index ff51eae..ee33748 100644 ---- a/src/UtilityFunction/pushbutton.h -+++ b/src/UtilityFunction/splitbarframe.h -@@ -29,7 +29,7 @@ - #include "src/RightClickMenu/rightclickmenu.h" - #include "utility.h" - --class PushButton : public QPushButton -+class SplitBarFrame : public QFrame //全屏分隔栏 - { - Q_OBJECT - public: -@@ -37,8 +37,8 @@ public: - * @param classify为0时为分类按钮、1为应用按钮 - * @param module为0时为常用模块,1为字母模块、2为功能模块 - */ -- PushButton(QWidget *parent,QString category,int width,int height,int module); -- ~PushButton(); -+ SplitBarFrame(QWidget *parent,QString category,int width,int height,int module); -+ ~SplitBarFrame(); - - enum Category{ - Mobile, -@@ -66,7 +66,6 @@ private: - protected: - void initAppBtn(); - void setLabelText(); -- - }; - - #endif // PUSHBUTTON_H -diff --git a/src/UtilityFunction/toolbutton.cpp b/src/UtilityFunction/toolbutton.cpp -index d9fa992..330a353 100644 ---- a/src/UtilityFunction/toolbutton.cpp -+++ b/src/UtilityFunction/toolbutton.cpp -@@ -54,10 +54,10 @@ ToolButton::ToolButton(int width, - { - this->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); - this->setText(tr(text.toLocal8Bit().data())); -- this->setStyleSheet("border:0px;padding-left:16px;background:transparent;color:rgba(255, 255, 255, 50%);font-size:14px;"); -+// this->setStyleSheet("border:0px;padding-left:16px;background:transparent;color:rgba(255, 255, 255, 50%);font-size:14px;"); - } -- else -- this->setStyleSheet("border:0px;padding-left:0px;background:transparent;"); -+// else -+// this->setStyleSheet("border:0px;padding-left:0px;background:transparent;"); - } - - void ToolButton::enterEvent(QEvent *e) -@@ -70,7 +70,7 @@ void ToolButton::enterEvent(QEvent *e) - sprintf(style,"border:0px;padding-left:16px;background-color:%s;color:#ffffff;font-size:14px;",hover); - else - sprintf(style,"border:0px;padding-left:0px;background-color:%s;",hover); -- this->setStyleSheet(QString::fromLocal8Bit(style)); -+// this->setStyleSheet(QString::fromLocal8Bit(style)); - delete svgRender; - svgRender=new QSvgRenderer(this); - svgRender->load(piconstr); -@@ -89,15 +89,15 @@ void ToolButton::enterEvent(QEvent *e) - void ToolButton::leaveEvent(QEvent *e) - { - Q_UNUSED(e); -- if(module==2) -- { -- if(!is_pressed) -- this->setStyleSheet("border:0px;padding-left:16px;background:transparent;color:rgba(255, 255, 255, 50%);font-size:14px;"); -- else -- this->setStyleSheet("border:0px;padding-left:16px;background:transparent;color:rgba(255, 255, 255);font-size:14px;"); -- } -- else -- this->setStyleSheet("border:0px;padding-left:0px;background:transparent;"); -+// if(module==2) -+// { -+// if(!is_pressed) -+// this->setStyleSheet("border:0px;padding-left:16px;background:transparent;color:rgba(255, 255, 255, 50%);font-size:14px;"); -+// else -+// this->setStyleSheet("border:0px;padding-left:16px;background:transparent;color:rgba(255, 255, 255);font-size:14px;"); -+// } -+// else -+// this->setStyleSheet("border:0px;padding-left:0px;background:transparent;"); - delete svgRender; - svgRender=new QSvgRenderer(this); - if(module==2 && is_pressed) -@@ -127,7 +127,7 @@ void ToolButton::mousePressEvent(QMouseEvent *event) - sprintf(style,"border:0px;padding-left:0px;background-color:%s;",pressed); - if(event->button()==Qt::LeftButton) - { -- this->setStyleSheet(QString::fromLocal8Bit(style)); -+// this->setStyleSheet(QString::fromLocal8Bit(style)); - delete svgRender; - svgRender=new QSvgRenderer(this); - svgRender->load(piconstr); -@@ -157,7 +157,7 @@ void ToolButton::mouseReleaseEvent(QMouseEvent *event) - sprintf(style,"border:0px;padding-left:0px;background-color:%s;",hover); - if(event->button()==Qt::LeftButton) - { -- this->setStyleSheet(QString::fromLocal8Bit(style)); -+// this->setStyleSheet(QString::fromLocal8Bit(style)); - delete svgRender; - svgRender=new QSvgRenderer(this); - svgRender->load(piconstr); -diff --git a/src/UtilityFunction/utility.cpp b/src/UtilityFunction/utility.cpp -index ca2c517..11cf418 100644 ---- a/src/UtilityFunction/utility.cpp -+++ b/src/UtilityFunction/utility.cpp -@@ -34,3 +34,54 @@ const QPixmap loadSvg(const QString &fileName, const int size) - - return pixmap; - } -+ -+QPixmap drawSymbolicColoredPixmap(const QPixmap &source) -+{ -+ QColor gray(128,128,128); -+ QColor standard (31,32,34); -+ QImage img = source.toImage(); -+ for (int x = 0; x < img.width(); x++) { -+ for (int y = 0; y < img.height(); y++) { -+ auto color = img.pixelColor(x, y); -+ if (color.alpha() > 0) { -+ if (qAbs(color.red()-gray.red())<20 && qAbs(color.green()-gray.green())<20 && qAbs(color.blue()-gray.blue())<20) { -+ color.setRed(255); -+ color.setGreen(255); -+ color.setBlue(255); -+ img.setPixelColor(x, y, color); -+ } -+ else if(qAbs(color.red()-standard.red())<20 && qAbs(color.green()-standard.green())<20 && qAbs(color.blue()-standard.blue())<20) -+ { -+ color.setRed(255); -+ color.setGreen(255); -+ color.setBlue(255); -+ img.setPixelColor(x, y, color); -+ } -+ else -+ { -+ img.setPixelColor(x, y, color); -+ } -+ } -+ } -+ } -+ return QPixmap::fromImage(img); -+} -+ -+QPixmap drawSymbolicBlackColoredPixmap(const QPixmap &source) -+{ -+ QImage img = source.toImage(); -+ for (int x = 0; x < img.width(); x++) { -+ for (int y = 0; y < img.height(); y++) { -+ auto color = img.pixelColor(x, y); -+ if (color.alpha() > 0) { -+ if (qAbs(color.red())>=200 && qAbs(color.green())>=200 && qAbs(color.blue())>=200) { -+ color.setRed(56); -+ color.setGreen(56); -+ color.setBlue(56); -+ img.setPixelColor(x, y, color); -+ } -+ } -+ } -+ } -+ return QPixmap::fromImage(img); -+} -diff --git a/src/UtilityFunction/utility.h b/src/UtilityFunction/utility.h -index 943c67b..2ae9079 100644 ---- a/src/UtilityFunction/utility.h -+++ b/src/UtilityFunction/utility.h -@@ -23,4 +23,11 @@ - - const QPixmap loadSvg(const QString &fileName, const int size); - -+//图片反白 -+QPixmap drawSymbolicColoredPixmap(const QPixmap &source); -+ -+//图片反黑 -+QPixmap drawSymbolicBlackColoredPixmap(const QPixmap &source); -+ -+ - #endif // UTILITY_H -diff --git a/translations/ukui-menu_bo.ts b/translations/ukui-menu_bo.ts -index 7e9676c..bfc754a 100644 ---- a/translations/ukui-menu_bo.ts -+++ b/translations/ukui-menu_bo.ts -@@ -2,417 +2,287 @@ - - - -- CommonUseWidget -+ FunctionClassifyButton - -- -- Form -+ -+ Mobile - - -- -- -- FullCommonUseWidget - -- -- Form -- -- -- -- -- FullFunctionWidget -- -- -- Form -- -- -- -- -- -- Android -- -- -- -- -- -+ - Internet - - - -- -- -+ - Social - - - -- -- -+ - Video - - - -- -- -+ - Development - - - -- -- -+ - Image - - - -- -- -+ - Game - - - -- -- -+ - Office - - - -- -- -+ - Education - - - -- -- -+ - System - - - -- -- -+ - Others - - - - -- FullLetterWidget -- -- -- Form -- -- -- -- -- FullSearchResultWidget -- -- -- Form -- -- -- -- -- FunctionButtonWidget -- -- -- Form -- -- -+ FunctionWidget - -- -- Android -+ -+ Mobile - - - -- -+ - Internet - - - -- -+ - Social - - - -- -+ - Video - - - -- -+ - Development - - - -- -+ - Image - - - -- -+ - Game - - - -- -+ - Office - - - -- -+ - Education - - - -- -+ - System - - - -- -+ - Others - - - - -- FunctionWidget -- -- -- Form -- -- -- -- -- -- Android -- -- -- -- -- -- Internet -- -- -- -- -- -- Social -- -- -- -- -- -- Video -- -- -+ MainViewWidget - -- -- -- Development -+ -+ Search - - -+ -+ -+ RightClickMenu - -- -- -- Image -+ -+ Pin to all - - - -- -- -- Game -+ -+ Unpin from all - - - -- -- -- Office -+ -+ -+ Pin to taskbar - - - -- -- -- Education -+ -+ -+ Unpin from taskbar - - - -- -- -- System -+ -+ Add to desktop shortcuts - - - -- -- -- Others -+ -+ Uninstall - - -- -- -- LetterButtonWidget - -- -- Form -+ -+ Sleep - - -- -- -- LetterWidget - -- -- Form -+ -+ Log Out - - -- -- -- MainViewWidget - -- -- Form -+ -+ Restart - - - -- -- Search -+ -+ Power Off - - -- -- -- MainWindow - -- -- MainWindow -+ -+ Personalize this list - - - - -- RightClickMenu -- -- -- -- Pin to all -- -- -- -- -- -- Unpin from all -- -- -- -- -- -- -- Pin to taskbar -- -- -+ SideBarWidget - -- -- -- -- Unpin from taskbar -+ -+ All - - - -- -- -- Add to desktop shortcuts -+ -+ Letter - - - -- -- -- Uninstall -+ -+ Function - - - -- -- Lock Screen -+ -+ Trash - - - -- -- Switch User -+ -+ Computer - - - -- -- Log Out -+ -+ Personal - - - -- -- Restart -+ -+ Settings - - - -- -- Power Off -+ -+ Power - - -+ -+ -+ SplitBarFrame - -- -- Personalize this list -+ -+ Mobile - - -- -- -- SearchResultWidget - -- -- Form -+ -+ Internet - - -- -- -- SideBarWidget - -- -- Form -+ -+ Social - - - -- -- -- All -+ -+ Video - - - -- -- -- Letter -+ -+ Development - - - -- -- -- Function -+ -+ Image - - - -- -- -- Computer -+ -+ Game - - - -- -- -- Personal -+ -+ Office - - - -- -- -- Settings -+ -+ Education - - - -- -- -- Recycle Bin -+ -+ System - - - -- -- -- Power -+ -+ Others - - - -diff --git a/translations/ukui-menu_tr.ts b/translations/ukui-menu_tr.ts -index 5ae00ce..6460b5f 100644 ---- a/translations/ukui-menu_tr.ts -+++ b/translations/ukui-menu_tr.ts -@@ -4,57 +4,57 @@ - - FunctionClassifyButton - -- -+ - Mobile - Mobil - - -- -+ - Internet - İnternet - - -- -+ - Social - Sosyal - - -- -+ - Video - Video - - -- -+ - Development - Programlama - - -- -+ - Image - Grafik - - -- -+ - Game - Oyunlar - - -- -+ - Office - Ofis Uygulamaları - - -- -+ - Education - Eğitim - - -- -+ - System - Sistem - - -- -+ - Others - Diğer - -@@ -62,57 +62,57 @@ - - FunctionWidget - -- -+ - Mobile - Mobil - - -- -+ - Internet - İnternet - - -- -+ - Social - Sosyal - - -- -+ - Video - Video - - -- -+ - Development - Programlama - - -- -+ - Image - Grafik - - -- -+ - Game - Oyunlar - - -- -+ - Office - Ofis Uygulamaları - - -- -+ - Education - Eğitim - - -- -+ - System - Sistem - - -- -+ - Others - Diğer - -@@ -120,7 +120,7 @@ - - MainViewWidget - -- -+ - Search - Ara - -@@ -128,132 +128,118 @@ - - PushButton - -- - Mobile -- Mobil -+ Mobil - - -- - Internet -- İnternet -+ İnternet - - -- - Social -- Sosyal -+ Sosyal - - -- - Video -- Video -+ Video - - -- - Development -- Programlama -+ Programlama - - -- - Image -- Grafik -+ Grafik - - -- - Game -- Oyunlar -+ Oyunlar - - -- - Office -- Ofis Uygulamaları -+ Ofis Uygulamaları - - -- - Education -- Eğitim -+ Eğitim - - -- - System -- Sistem -+ Sistem - - -- - Others -- Diğer -+ Diğer - - - - RightClickMenu - -- -+ - Pin to all - Tümünü sabitle - - -- -+ - Unpin from all - Tüm sabitlemeleri kaldır - - -- -- -+ -+ - Pin to taskbar - Görev çubuğuna sabitle - - -- -- -+ -+ - Unpin from taskbar - Görev çubuğundan sabitlemeyi kaldır - - -- -+ - Add to desktop shortcuts - Masaüstü kısayollarına ekle - - -- -+ - Uninstall - Kaldır - - -- - Hibernate -- Beklemeye Al -+ Beklemeye Al - - -- -+ - Sleep - Uyku Modu - - -- - Lock Screen -- Ekranı Kilitle -+ Ekranı Kilitle - - -- - Switch User -- Kullanıcı Değiştir -+ Kullanıcı Değiştir - - -- -+ - Log Out - Çıkış - - -- -+ - Restart - Yeniden Başlat - - -- -+ - Power Off - Kapat - - -- -+ - Personalize this list - Bu listeyi özelleştirin - -@@ -261,44 +247,106 @@ - - SideBarWidget - -- -+ - All - Tümü - - -- -+ - Letter - Alfabetik - - -- -+ - Function - Kategori - - -- -+ -+ Trash -+ -+ -+ -+ - Computer - Bilgisayar - - -- -+ - Personal - Kişisel - - -- -+ - Settings - Ayarlar - - -- - Recycle Bin -- Çöp -+ Çöp - - -- -+ - Power - Kapat - - -+ -+ SplitBarFrame -+ -+ -+ Mobile -+ Mobil -+ -+ -+ -+ Internet -+ İnternet -+ -+ -+ -+ Social -+ Sosyal -+ -+ -+ -+ Video -+ Video -+ -+ -+ -+ Development -+ Programlama -+ -+ -+ -+ Image -+ Grafik -+ -+ -+ -+ Game -+ Oyunlar -+ -+ -+ -+ Office -+ Ofis Uygulamaları -+ -+ -+ -+ Education -+ Eğitim -+ -+ -+ -+ System -+ Sistem -+ -+ -+ -+ Others -+ Diğer -+ -+ - -diff --git a/translations/ukui-menu_zh_CN.ts b/translations/ukui-menu_zh_CN.ts -index fc6a4d6..5a37281 100644 ---- a/translations/ukui-menu_zh_CN.ts -+++ b/translations/ukui-menu_zh_CN.ts -@@ -4,57 +4,57 @@ - - FunctionClassifyButton - -- -+ - Mobile - 移动 - - -- -+ - Internet - 网络 - - -- -+ - Social - 社交 - - -- -+ - Video - 影音 - - -- -+ - Development - 开发 - - -- -+ - Image - 图像 - - -- -+ - Game - 游戏 - - -- -+ - Office - 办公 - - -- -+ - Education - 教育 - - -- -+ - System - 系统 - - -- -+ - Others - 其它 - -@@ -62,57 +62,57 @@ - - FunctionWidget - -- -+ - Mobile - 移动 - - -- -+ - Internet - 网络 - - -- -+ - Social - 社交 - - -- -+ - Video - 影音 - - -- -+ - Development - 开发 - - -- -+ - Image - 图像 - - -- -+ - Game - 游戏 - - -- -+ - Office - 办公 - - -- -+ - Education - 教育 - - -- -+ - System - 系统 - - -- -+ - Others - 其它 - -@@ -120,7 +120,7 @@ - - MainViewWidget - -- -+ - Search - 搜索 - -@@ -128,132 +128,118 @@ - - PushButton - -- - Mobile -- 移动 -+ 移动 - - -- - Internet -- 网络 -+ 网络 - - -- - Social -- 社交 -+ 社交 - - -- - Video -- 影音 -+ 影音 - - -- - Development -- 开发 -+ 开发 - - -- - Image -- 图像 -+ 图像 - - -- - Game -- 游戏 -+ 游戏 - - -- - Office -- 办公 -+ 办公 - - -- - Education -- 教育 -+ 教育 - - -- - System -- 系统 -+ 系统 - - -- - Others -- 其它 -+ 其它 - - - - RightClickMenu - -- -+ - Pin to all - 固定到“所有软件” - - -- -+ - Unpin from all - 从“所有软件”取消固定 - - -- -- -+ -+ - Pin to taskbar - 固定到任务栏 - - -- -- -+ -+ - Unpin from taskbar - 从任务栏取消固定 - - -- -+ - Add to desktop shortcuts - 添加到桌面快捷方式 - - -- -+ - Uninstall - 卸载 - - -- - Hibernate -- 休眠 -+ 休眠 - - -- -+ - Sleep - 睡眠 - - -- - Lock Screen -- 锁屏 -+ 锁屏 - - -- - Switch User -- 切换用户 -+ 切换用户 - - -- -+ - Log Out - 注销 - - -- -+ - Restart - 重启 - - -- -+ - Power Off - 关机 - - -- -+ - Personalize this list - 设置开始菜单显示列表 - -@@ -261,44 +247,106 @@ - - SideBarWidget - -- -+ - All - 所有软件 - - -- -+ - Letter - 字母排序 - - -- -+ - Function - 功能分类 - - -- -+ -+ Trash -+ 回收站 -+ -+ -+ - Computer - 计算机 - - -- -+ - Personal - 个人 - - -- -+ - Settings - 设置 - - -- - Recycle Bin -- 回收站 -+ 回收站 - - -- -+ - Power - 电源 - - -+ -+ SplitBarFrame -+ -+ -+ Mobile -+ 移动 -+ -+ -+ -+ Internet -+ 网络 -+ -+ -+ -+ Social -+ 社交 -+ -+ -+ -+ Video -+ 影音 -+ -+ -+ -+ Development -+ 开发 -+ -+ -+ -+ Image -+ 图像 -+ -+ -+ -+ Game -+ 游戏 -+ -+ -+ -+ Office -+ 办公 -+ -+ -+ -+ Education -+ 教育 -+ -+ -+ -+ System -+ 系统 -+ -+ -+ -+ Others -+ 其它 -+ -+ - -diff --git a/ukui-menu.pro b/ukui-menu.pro -index 639f803..58bb6c4 100644 ---- a/ukui-menu.pro -+++ b/ukui-menu.pro -@@ -4,7 +4,7 @@ - # - #------------------------------------------------- - --QT += core gui svg dbus x11extras KWindowSystem -+QT += core gui svg dbus x11extras - - greaterThan(QT_MAJOR_VERSION, 4): QT += widgets - include(src/QtSingleApplication/qtsingleapplication.pri) -@@ -62,15 +62,16 @@ SOURCES += \ - src/SearchResultWidget/searchresultwidget.cpp \ - src/SideBarWidget/sidebarwidget.cpp \ - src/Style/style.cpp \ -- src/UtilityFunction/classifyscrollarea.cpp \ -+ src/UtilityFunction/classifybtnscrollarea.cpp \ - src/UtilityFunction/fullitemdelegate.cpp \ - src/UtilityFunction/fulllistview.cpp \ - src/UtilityFunction/functionclassifybutton.cpp \ - src/UtilityFunction/itemdelegate.cpp \ - src/UtilityFunction/letterclassifybutton.cpp \ - src/UtilityFunction/listview.cpp \ -- src/UtilityFunction/pushbutton.cpp \ -+ src/UtilityFunction/proxystyle.cpp \ - src/UtilityFunction/scrollarea.cpp \ -+ src/UtilityFunction/splitbarframe.cpp \ - src/UtilityFunction/toolbutton.cpp \ - src/Interface/ukuichineseletter.cpp \ - src/Interface/ukuimenuinterface.cpp \ -@@ -96,15 +97,16 @@ HEADERS += \ - src/SearchResultWidget/searchresultwidget.h \ - src/SideBarWidget/sidebarwidget.h \ - src/Style/style.h \ -- src/UtilityFunction/classifyscrollarea.h \ -+ src/UtilityFunction/classifybtnscrollarea.h \ - src/UtilityFunction/fullitemdelegate.h \ - src/UtilityFunction/fulllistview.h \ - src/UtilityFunction/functionclassifybutton.h \ - src/UtilityFunction/itemdelegate.h \ - src/UtilityFunction/letterclassifybutton.h \ - src/UtilityFunction/listview.h \ -- src/UtilityFunction/pushbutton.h \ -+ src/UtilityFunction/proxystyle.h \ - src/UtilityFunction/scrollarea.h \ -+ src/UtilityFunction/splitbarframe.h \ - src/UtilityFunction/toolbutton.h \ - src/Interface/ukuichineseletter.h \ - src/Interface/ukuimenuinterface.h \ --- -2.30.0 - diff --git a/ukui-menu-3.0.2.tar.gz b/ukui-menu-3.0.2.tar.gz index c558d15eab5e8fd827b05234b4a211a815c1ccfe..c3dcf5d7b311e8ff5acf70f45c71ea8c8dfc4cf9 100644 GIT binary patch literal 114045 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�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�SPN5%Amo%dUO<`@2>*vJJ6*?e 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 literal 118626 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 A7XSbN diff --git a/ukui-menu.spec b/ukui-menu.spec index a22548f..7a0793e 100644 --- a/ukui-menu.spec +++ b/ukui-menu.spec @@ -2,7 +2,7 @@ Name: ukui-menu Version: 3.0.2 -Release: 4 +Release: 5 Summary: Advanced ukui menu License: GPL-3.0 URL: http://www.ukui.org @@ -28,9 +28,6 @@ Requires: libXtst Requires: libX11 Requires: accountsservice -patch0: 0001-fix-uninstall-failed-issue.patch -patch1: 0001-Optimize-Chinese-search.patch -patch2: 0262-Adapt-the-light-color-theme.patch #BuildArch: noarch @@ -42,9 +39,6 @@ patch2: 0262-Adapt-the-light-color-theme.patch %prep %setup -q -%patch0 -p1 -%patch1 -p1 -%patch2 -p1 %build mkdir build && cd build @@ -63,9 +57,12 @@ rm -rf $RPM_BUILD_ROOT %files %{_bindir}/ukui-menu %{_sysconfdir}/xdg/autostart/ukui-menu.desktop -%{_datadir}/ukui-menu/translations/ +##%{_datadir}/ukui-menu/translations/ %changelog +* Mon Mar 28 2022 huayadong - 3.0.2-5 +- Fix crashes when installing or uninstalling software + * Fri Dec 10 2021 huayadong - 3.0.2-4 - add patch:0262-Adapt-the-light-color-theme.patch