Compare commits

...

155 Commits

Author SHA1 Message Date
tanjing 90d2859fa2 主题走xdp对话框 2024-04-25 10:55:16 +08:00
xibowen 70ccd2fd03 Update changelog 2024.04.24 4.1.0.0-0k36 2024-04-24 10:12:24 +08:00
openkylin2 498a075e34 增加维哈柯多语言从右往左支持 2024-04-22 14:14:40 +08:00
xibowen c3a130b6bd Update changelog 2024.04.19 4.1.0.0-0k35 2024-04-19 15:10:04 +08:00
xibowen 1ae115a7ef BUGI8ZZBH, Fix checkbox animation easing curve 2024-04-19 15:02:01 +08:00
KevinDuan 026f934cd2
删除文件 qt5-ukui-filedialog/translations/qt5-ukui-filedialog_zh_Hans.ts 2024-04-18 06:00:08 +00:00
KevinDuan b4ecc59748
删除文件 qt5-ukui-platformtheme/translations/qt5-ukui-platformtheme_zh_Hans.ts 2024-04-18 05:54:44 +00:00
KevinDuan 14becf4e45
删除文件 translations/qt5-ukui-platformtheme_zh_Hans.ts 2024-04-18 05:53:15 +00:00
tanjing fbb4a8c3ef Update changelog 2024.04.16 4.1.0.0-0k34 2024-04-16 16:51:53 +08:00
tanjing 853dd45e9e 添加widget判空处理 2024-04-16 16:50:25 +08:00
tanjing 3d541d67bc Update changelog 2024.04.10 4.1.0.0-0k33 2024-04-10 10:46:49 +08:00
tanjing 5bde0955c3 fix issue#I8X8QY 滚动条在无焦点状态响应滚轮事件处理 2024-04-10 10:23:15 +08:00
tanjing c93b66b061 属性后的逗号对齐 2024-03-18 10:23:51 +08:00
tanjing b370c10b36 在app级别添加常用控件的默认状态的一些接口 2024-03-18 10:23:35 +08:00
xibowen 689ce75bd4 Update changelog 2024.03.11 4.1.0.0-0k31 2024-03-11 20:47:44 +08:00
xibowen faba92327c Remove ApplicationStyleSettings 2024-03-11 20:30:22 +08:00
xibowen 6acc6d5deb Remove depends qt5-gesture-extensions 2024-02-28 15:48:38 +08:00
tanjing 305b89a5b5 progressbar 外部属性设置没有响应处理 2024-02-28 15:15:59 +08:00
xibowen 7c45ead78b Remove gitignore 2024-02-28 15:12:22 +08:00
tanjing dc41022e04 Update changelog 4.1.0.0-0k31 2024-02-22 17:08:34 +08:00
tanjing d929708d74 按钮焦点策略改成只响应tab键 iconmode下圆角有问题修改 2024-02-22 17:06:08 +08:00
tanjing 66d31a879d 将软件商店移出黑名单 2024-02-20 10:24:48 +08:00
tanjing 8090c04f85 Update changelog 4.1.0.0-0k30 2024-02-02 11:22:29 +08:00
tanjing 37e866f12f qtreeview 高缩放比下有间隙问题处理 2024-02-02 11:19:16 +08:00
tanjing 9eb0d043bd 修复tooltip无毛玻璃的问题 2024-02-02 11:11:10 +08:00
tanjing c61ccd054b qtreeview图标反白问题修复 2024-02-02 11:10:54 +08:00
tanjing 2d013f7495 Update changelog 4.1.0.0-0k29 2024-01-31 14:04:33 +08:00
tanjing c4f525496f issues#I8XUSP qtreeview焦点样式绘制 2024-01-31 14:04:01 +08:00
tanjing 09e86432f1 修改qmenu、combobox下拉框的阴影圆角 2024-01-31 14:03:17 +08:00
tanjing 15cfe366fe 修改qmenu的阴影圆角 2024-01-31 10:17:24 +08:00
tanjing eca73264f6 设置filedialog侧边栏最小宽度 2024-01-30 15:19:29 +08:00
tanjing 306ac8e2ae Update changelog 4.1.0.0-0k28 2024-01-26 16:44:17 +08:00
tanjing 20755b995f checkable状态下按钮响应高亮色变化 2024-01-26 16:43:50 +08:00
tanjing 5cbd96d9be issues#I8XJF0 I8XJ84 Tooltip menu圆角响应窗口圆角,toolbutton文字颜色checked模式下修正 2024-01-26 16:04:14 +08:00
tanjing 365a930adf Update changelog 4.1.0.0-0k27 2024-01-25 15:46:14 +08:00
tanjing 685ab2a038 fix issues#I8WW8M 修改同时设置check和灰色按钮的样式 2024-01-25 11:16:47 +08:00
tanjing 740976ae2f 屏蔽cura软件 2024-01-22 10:01:15 +08:00
tanjing aff805d377 调整输出debug的接口,补全widget对象为空的判断 2024-01-18 11:39:05 +08:00
tanjing ea60b48fae 处理多个scrollbar sliderbar时获取的handlerect不正确的问题 2024-01-17 11:02:20 +08:00
tanjing b5f588c81c Update changelog 4.1.0.0-0k26 2024-01-17 09:42:52 +08:00
tanjing 97707e0029 fixbug#209942 工具箱从毛玻璃黑名单中移除 2024-01-17 09:36:17 +08:00
tanjing aaa8730adc 调整cmake 2024-01-16 16:42:25 +08:00
tanjing 0783243bee Update changelog 4.1.0.0-0k25 2024-01-15 18:12:42 +08:00
tanjing c999303b11 tabbar 配置化颜色提取 2024-01-15 18:10:46 +08:00
tanjing 606e0e5919 修改scrollbar radiobutton slider progressbar颜色配置等 2024-01-15 18:10:29 +08:00
tanjing f3741d9638 slider vertical状态响应鼠标中间键方向问题处理 scrollbar也存在这个问题修改 2024-01-15 18:10:15 +08:00
tanjing c19bd0a2dc 提取combobox list tree table里变换的颜色到色板 2024-01-15 18:10:04 +08:00
tanjing 85616aa633 提取lineedit spinbox里变换处理的颜色到配置文件 2024-01-15 18:09:55 +08:00
tanjing d6b765e21c 将button里之前一些转换来的颜色提取到配置文件 2024-01-15 18:09:46 +08:00
guorongfei fb43970942 fixed a0625c7 from https://gitee.com/yangxibowen/qt5-ukui-platformtheme/pulls/87
fix: icon theme search path
2024-01-10 09:02:50 +00:00
tanjing 6c1baa39e7 Refresh update changelog 4.1.0.0-0k24 2024-01-09 10:15:55 +08:00
tanjing 82e0831f58 Update changelog 4.1.0.0-0k24 2024-01-08 17:50:30 +08:00
tanjing c6e8fc40eb fix bug#203853 tabbar关闭按钮颜色调整 bug#203902文件对话框侧边栏选中高亮 2024-01-08 17:43:19 +08:00
tanjing e59dbf83ac messagebox、filedialog内存泄露部分正常析构 2024-01-08 17:43:09 +08:00
likehomedream 034adc52f0 Add rounded corners for tabbar hover state 2024-01-08 14:19:34 +08:00
tanjing 3d1a3f4256 Update changelog 4.1.0.0-0k23 2024-01-03 17:04:55 +08:00
tanjing 0e458afded qtreeview qmenu图标未反白处理 2024-01-03 17:01:12 +08:00
tanjing 1e498aa641 新增tabbar combobox list table等控件焦点 2024-01-03 16:40:30 +08:00
tanjing 8ec7794b9f Update changelog 4.1.0.0-0k22 2023-12-13 16:51:37 +08:00
tanjing 4d617a00d8 三联按钮添加便签应用 2023-12-13 16:38:16 +08:00
tanjing 0bd70c7a4b Update changelog 4.1.0.0-0k21 2023-12-12 10:21:55 +08:00
tanjing c76567fe97 添加cmake工程debuild依赖 2023-12-12 10:21:21 +08:00
tanjing 00d084d0ef Update changelog 4.1.0.0-0k20 2023-12-11 15:28:33 +08:00
tanjing 1359f65f78 task#187224 特殊三联按钮icon处理 2023-12-11 15:26:17 +08:00
tanjing 965b80406c 工程转为cmake 2023-12-11 15:20:27 +08:00
tanjing 9e99dec4b1 特殊三联按钮 2023-12-08 10:51:58 +08:00
tanjing 6f56cc88fb Update changelog 4.1.0.0-0k19 2023-12-05 18:16:20 +08:00
tanjing bfc20e34e1 释放掉读取文件的内存 2023-12-05 18:14:04 +08:00
tanjing 9e475d8602 Update changelog 4.1.0.0-0k18 2023-12-04 15:25:51 +08:00
tanjing 46e2f9edff Update changelog 4.1.0.0-0k17 2023-12-01 17:35:05 +08:00
tanjing 5d93d90744 filedialogplugin.json加点内容 2023-12-01 17:34:06 +08:00
tanjing 003ed975ba Update changelog 4.1.0.0-0k16 2023-12-01 14:17:54 +08:00
tanjing a85fbe8f34 删掉没有的ukui.json 2023-12-01 10:11:28 +08:00
tanjing 80982a65b4 pro加json文件,补上漏的初始化色板 2023-11-30 17:31:25 +08:00
tanjing 0d63f0e4c0 Update changelog 4.1.0.0-0k15 2023-11-30 09:17:47 +00:00
tanjing fc3e4dcbf7 issues#I8JS6X 右键菜单不跟随主题修复 2023-11-30 09:17:47 +00:00
xibowen d1a91aeff1 Task185114, add kysdk-conf2 config to replace gsettings 2023-11-30 16:38:12 +08:00
xibowen ddf1d6763c task185114, add org.ukui.style.yaml 2023-11-30 16:35:56 +08:00
tanjing ffa19ec267 Update changelog 4.1.0.0-0k14 2023-11-28 17:54:37 +08:00
tanjing 9fbcf7bcea 将platformtheme与filedialog的翻译分开 2023-11-28 17:49:21 +08:00
Wei Wei a0ae0c5a88 fix: can't load libqt5-gesture-extensions after it modify packaging specification 2023-11-28 15:01:07 +08:00
tanjing e9a60ff8ab filedialog通过插件加载 2023-11-27 09:58:16 +00:00
tanjing a51f6225f9 SCrollbar 在disable状态时handle不需要显示 2023-11-27 09:58:16 +00:00
handsome-feng 4c4719f634 rebuild for qt 5.15.10 2023-11-23 19:21:44 +08:00
tanjing 96d4a283fb tree描边只在画rect时不位移 2023-11-23 15:02:11 +08:00
tanjing f3292cf201 task#184178 在spinbox中数字最小值时按钮的样式不对修改 2023-11-23 15:01:57 +08:00
tanjing db73f508e9 tabbar default的颜色值修改 2023-11-23 15:01:49 +08:00
iaom ec7ccdd906 fix(treeview-PE_PanelItemViewItem):修复启典主题下viewItem描边在只有1列时底边被截断的问题 2023-11-22 17:03:35 +08:00
tanjing fc69959d4a 去掉qt5-style-ukui文件夹的内容 2023-11-21 17:49:23 +08:00
xibowen 8ec4a616dd Update changelog 4.1.0.0-0k12 2023-11-21 15:16:31 +08:00
xibowen c736c99277 Open focus style 2023-11-21 15:15:24 +08:00
xibowen be6b280e45 Add slider focus style 2023-11-21 14:32:14 +08:00
tanjing a8a36d4d91 修改窗管圆角最小值为0 2023-11-20 15:52:42 +08:00
tanjing 408ade7a5c qmenu启典图标需要反白 2023-11-17 16:27:15 +08:00
tanjing 93dd094cbc 修改控件最大圆角,不与窗口圆角挂钩 2023-11-17 11:40:30 +08:00
tanjing dfd7a0863f 同步 去掉对外接口的ukui_ 2023-11-17 11:15:21 +08:00
tanjing 3c843adefb task#184178 lineedit spinbox disable状态修改边框 2023-11-17 11:02:14 +08:00
xibowen 7944e13381 Update changelog 4.1.0.0-0k11 2023-11-16 16:15:43 +08:00
xibowen 958e295f69 Add ukui-greeter-dialog in focus list 2023-11-16 15:23:22 +08:00
xibowen 473946d36c sync blur and windowsmanager form yhkylin/v101
remove ukui on style property interface
adjust format
2023-11-14 16:17:56 +08:00
xibowen c5c909ae46 Set theme-color default value to #3790FA 2023-11-07 15:44:17 +08:00
tanjing fc1a2b2305 Add a changelog 2023.11.1 4.1.0.0-0k10 2023-11-07 15:44:17 +08:00
tanjing c88380eb16 对话框显示模式在内容加载后再设置 2023-11-07 15:44:17 +08:00
tanjing 8d4c5947f6 task#180726 新增多语言支持:维、哈、柯、蒙、藏、繁体 / qt5-ukui-platformtheme openkylin2.0 多语言翻译支持 2023-11-07 15:44:17 +08:00
tanjing fa93d65c64 commit#2c7dbff6 fixbug145709 文件对话框初始化时会跳转路径优化 2023-11-07 15:44:17 +08:00
tanjing 445d23ea88 commit f23b5fea fixbug192192 combobox下拉框里有的有图标,有的没有图标时,文字需要跟图标对齐 2023-11-07 15:44:17 +08:00
tanjing 2e672ea3cd fixbug192192 combobox下拉框里有的有图标,有的没有图标时,文字需要跟图标对齐 2023-11-07 15:44:17 +08:00
tanjing 3777b9f9d4 fixbug#190237 多次show同一个窗口时,使界面保持跟之前一样 2023-11-07 15:44:17 +08:00
tanjing 6238a48547 commit ebcee63b task#174428 添加繁体翻译 2023-11-07 15:44:17 +08:00
tanjing 810b1e4615 commit9aac7856 fixbug#191181响应鼠标双击的gsettings修改 2023-11-07 15:44:17 +08:00
tanjing 6843aba392 fixbug#182587 鼠标移动事件屏蔽讯飞输入法相关的应用 2023-11-07 15:44:17 +08:00
tanjing 5ecc0d558a commit 2c391627 fixbug#190590 窗管启动过程中右键菜单颜色会有问题 2023-11-07 15:44:17 +08:00
tanjing c9f1a5f421 fixbug#190590 窗管启动过程中右键菜单颜色会有问题 2023-11-07 15:44:17 +08:00
tanjing f95e11fa3b commit 9c3fa37c FixBug #180395, 响应应用语言设置接口 2023-11-07 15:44:17 +08:00
xibowen 4ce8839047 commite8e9f986a6e4b4f13372532d07752e9e5af7b6ee BUG190068,fix tooltips size error 2023-11-07 15:44:17 +08:00
tanjing a87d8c5a1c Add a changelog 2023.10.26 4.1.0.0-0k9 2023-11-07 15:44:17 +08:00
tanjing 3937492844 对外补充可获取主题框架里默认颜色相关接口 2023-11-07 15:44:17 +08:00
tanjing e500296d2d Add a changelog 2023.10.23 4.1.0.0-0k8 2023-11-07 15:44:17 +08:00
tanjing 49ec6447fc 只留窗口圆角的gsettings 2023-11-07 15:44:17 +08:00
tanjing 55975ef73f 支持设置任意色为高亮色 2023-11-07 15:44:17 +08:00
tanjing 9346a089f0 设置三个圆角gsettings 2023-11-07 15:44:17 +08:00
tanjing ad09c5e654 FileDialog路径跳转时增加当前路径与跳转路径是否一致的判断 2023-11-07 15:44:17 +08:00
xibowen 2213ce7189 Add ukui-greeter and ukui-screensaver in focus active list 2023-10-31 16:05:52 +08:00
xibowen 37303fd3f8 Add brighttext color on qml 2023-10-30 15:52:22 +08:00
tanjing 650a924b9d Add a changelog 2023.10.16 4.1.0.0-0k7 2023-10-16 10:43:06 +08:00
tanjing 9bcc3f4bb3 修改json名字、spinbox背景颜色调整、checkbox是否渐变、qmenu边框修改 2023-10-16 10:42:56 +08:00
tanjing d07cf438ec Add a changelog 2023.10.13 4.1.0.0-0k6 2023-10-13 10:25:14 +08:00
tanjing 87c10a0e78 combobox下拉菜单不需要透明度 2023-10-13 10:24:35 +08:00
tanjing f77d6bbc77 menu tooltip响应控制面板的透明度设置 2023-10-11 16:14:01 +08:00
tanjing b6b68dafd9 list tree table默认选中为灰色,并增加一个设置选中为高亮色的接口 2023-10-11 16:13:49 +08:00
tanjing 7ce82c4605 补齐漏的对外属性接口 2023-10-11 16:13:23 +08:00
tanjing 7d847cccb7 将圆角属性绑定到widget上,避免qApp修改了style获取不到 2023-10-11 16:10:11 +08:00
tanjing 71d96f9b20 Add a changelog 2023.10.11 4.1.0.0-0k5 2023-10-11 13:38:15 +08:00
tanjing eee0ce0201 task#176586 slider scrollbar响应鼠标滚轮事件 2023-10-11 13:36:03 +08:00
tanjing 95563ea198 优化sliderbar动效(在步长为1的情况下) 根据控件是否设置动效属性来加载动效,不能使用共用的变量来判断 2023-10-09 17:28:38 +08:00
tanjing 92128fc363 Add a changelog 2023.10.08 4.1.0.0-0k4 2023-10-08 18:20:36 +08:00
tanjing 6de27d4ea8 change debian 2023-10-08 18:19:56 +08:00
tanjing c868174a61 Update copyright 2023-10-08 17:50:47 +08:00
xibowen 4c581bf8dd Update copyright
adapt new sdk to compile
2023-10-08 17:43:54 +08:00
tanjing 7efab6e2b7 Add a changelog 2023.10.08 4.1.0.0-0k3 2023-10-08 10:24:01 +08:00
tanjing 32e560bca8 删除多余的proxystyle文件夹 2023-10-08 10:22:10 +08:00
Yue-Lan a7ee8af8e9 update changelog. 2023-09-05 10:59:15 +08:00
Yue-Lan 07b97b87f4 尝试修复wayland下窗口空白区域拖拽的问题 2023-09-05 10:58:00 +08:00
tanjing 78b91429d9 Add a changelog 2023.09.01 4.1.0.0-0k1 2023-09-01 11:32:08 +08:00
tanjing 7c846f6822 暂时先注释调用的文管新接口部分的内容 2023-09-01 11:28:12 +08:00
xibowen d7eda5ad93 Merge new upstream version 4.1.0.0 2023-08-30 18:59:24 +08:00
tanjing 9f4c98ee91 加入经典、控件对外接口、控件动效、控件颜色和圆角配置化等 2023-08-25 11:24:16 +08:00
tanjing ba95d026de Merge branch 'upstream' of https://gitee.com/openkylin/qt5-ukui-platformtheme into HEAD 2023-08-25 11:19:29 +08:00
tanjing 336414ff80 fix bug164533 文件对话框有两个标题栏的问题处理 2023-04-03 10:51:51 +08:00
xibowen f9bfc7b891 New upstream version 4.0.0.0 2023-03-24 16:47:15 +08:00
xibowen ca8cd9f37f New upstream version 3.22.0.0 2022-11-28 20:37:53 +08:00
xibowen 48f635f205 New upstream version 3.20.1.1 2022-10-20 14:35:01 +08:00
zhaikangning 0ccca7aa82
!18 Import openkylin/yangtze 3.1.4.1~0509-ok10 2022.08.23
Merge pull request !18 from tanjing/tanjing_openkylin/yangtze
2022-08-31 08:11:29 +00:00
tanjing 05c0de041d
!1 Import openkylin/yangtze 3.1.4.1~0509-ok10 2022.08.23
Merge pull request !1 from tanjing/tanjing_openkylin/yangtze
2022-08-23 01:59:05 +00:00
tanjing 46ddc4f2bf remove debian 2022-08-23 09:51:33 +08:00
304 changed files with 44324 additions and 11117 deletions

8
CMakeLists.txt Normal file
View File

@ -0,0 +1,8 @@
project(qt5-ukui)
add_subdirectory(ukui-styles)
add_subdirectory(libqt5-ukui-style)
add_subdirectory(qt5-ukui-filedialog)
add_subdirectory(qt5-ukui-platformtheme)
add_subdirectory(ukui-qqc2-style)
add_subdirectory(ukui-qml-style-helper)
add_subdirectory(test)

568
debian/changelog vendored
View File

@ -1,3 +1,570 @@
qt5-ukui-platformtheme (4.1.0.0-ok36) nile; urgency=medium
* 改动:
BUG号
需求号:无
其他改动:维哈柯多语言从右往左支持
影响域:维哈柯语言下控件布局
-- xibowen <xibowen@kylinos.cn> Wed, 24 Apr 2024 10:03:28 +0800
qt5-ukui-platformtheme (4.1.0.0-ok35) nile; urgency=medium
* 改动:
BUG号
需求号BUGI8ZZBH修复checkbox动效使用动画运动曲线不正确的问题
其他改动:调整翻译文件模板,触发翻译平台自动翻译同步功能
影响域:无
-- xibowen <xibowen@kylinos.cn> Fri, 19 Apr 2024 15:09:28 +0800
qt5-ukui-platformtheme (4.1.0.0-ok34) nile; urgency=medium
* 改动:
BUG号
需求号:无
其他改动qwidget添加判空处理
影响域:无
-- tanjing <tanjing@kylinos.cn> Tue, 16 Apr 2024 16:50:35 +0800
qt5-ukui-platformtheme (4.1.0.0-ok33) nile; urgency=medium
* 改动:
BUG号BUGI8X8QY修复qslider无焦点时会响应鼠标滚轮事件
需求号:无
其他改动给app新增控件默认颜色的接口
影响域:无
-- tanjing <tanjing@kylinos.cn> Wed, 10 Apr 2024 10:39:04 +0800
qt5-ukui-platformtheme (4.1.0.0-ok32) nile; urgency=medium
* 改动:
BUG号BUGI96VDL,修复ApplicationStyleSettings占用inotify的问题
需求号:无
其他改动移除qt5-gesture-extensions依赖
修复progressbar 外部属性设置没有响应的问题
影响域:无
-- xibowen <xibowen@kylinos.cn> Mon, 11 Mar 2024 20:07:32 +0800
qt5-ukui-platformtheme (4.1.0.0-ok31) nile; urgency=medium
* 改动:
BUG号
需求号:无
其他改动issues#I8XGK6 将软件商店移出黑名单, 按钮焦点改为tab键响应iconmode下圆角有问题修改
影响域:无
-- tanjing <tanjing@kylinos.cn> Thu, 22 Feb 2024 17:07:32 +0800
qt5-ukui-platformtheme (4.1.0.0-ok30) nile; urgency=medium
* 改动:
BUG号
需求号:无
其他改动qtreeview高缩放比下有间隙问题处理
qtooltip不显示毛玻璃的问题处理
qtreeview图标反白问题修复
影响域:无
-- tanjing <tanjing@kylinos.cn> Fri, 02 Feb 2024 11:20:17 +0800
qt5-ukui-platformtheme (4.1.0.0-ok29) nile; urgency=medium
* 改动:
BUG号
需求号:无
其他改动issues#I8XJAQ menu圆角响应窗口圆角
issues#I8XUSP qtreeview焦点样式绘制
QFileDialog侧边栏设置最小宽度
影响域:无
-- tanjing <tanjing@kylinos.cn> Wed, 31 Jan 2024 11:28:01 +0800
qt5-ukui-platformtheme (4.1.0.0-ok28) nile; urgency=medium
* 改动:
BUG号
需求号:无
其他改动issues#I8XJF0 #I8XJ84 tooltip menu圆角响应窗口圆角
qtoolbutton文字颜色修正
影响域:无
-- tanjing <tanjing@kylinos.cn> Fri, 26 Jan 2024 16:04:23 +0800
qt5-ukui-platformtheme (4.1.0.0-ok27) nile; urgency=medium
* 改动:
BUG号
需求号:无
其他改动issue#I8WW8M 修复同时设置chekable和灰色按钮样式问题;
处理多个scrollbar/sliderbar下重获焦点后handle移动不对的问题
屏蔽cura
修改debug输出接口
影响域:无
-- tanjing <tanjing@kylinos.cn> Thu, 25 Jan 2024 11:36:19 +0800
qt5-ukui-platformtheme (4.1.0.0-ok26) nile; urgency=medium
* 改动:
BUG号Bug#209942 工具箱从毛玻璃黑名单中移除
需求号:无
其他改动:无
影响域:无
-- tanjing <tanjing@kylinos.cn> Wed, 17 Jan 2024 09:36:27 +0800
qt5-ukui-platformtheme (4.1.0.0-ok25) nile; urgency=medium
* 改动:
BUG号
需求号:无
其他改动将click、hover等计算获得的颜色提取到配置文件中
影响域:无
-- tanjing <tanjing@kylinos.cn> Mon, 15 Jan 2024 18:10:55 +0800
qt5-ukui-platformtheme (4.1.0.0-ok24) nile; urgency=medium
* 改动:
BUG号Bug#203902 文件对话框侧边栏高亮模式
Bug#203853 tabbar里close按钮颜色调整
需求号:无
其他改动task#141714 tabbar样式调整
影响域:无
-- tanjing <tanjing@kylinos.cn> Mon, 08 Jan 2024 17:45:45 +0800
qt5-ukui-platformtheme (4.1.0.0-ok23) nile; urgency=medium
* 改动:
BUG号
需求号:无
其他改动task#184240 list tabbar combobox table等控件添加焦点treeview、qmenu部分图标没反白处理
影响域:无
-- tanjing <tanjing@kylinos.cn> Wed, 03 Jan 2024 17:02:12 +0800
qt5-ukui-platformtheme (4.1.0.0-ok22) nile; urgency=medium
* 改动:
BUG号
需求号:无
其他改动:特殊三联按钮添加便签应用
影响域:无
-- tanjing <tanjing@kylinos.cn> Wed, 13 Dec 2023 16:38:19 +0800
qt5-ukui-platformtheme (4.1.0.0-ok21) nile; urgency=medium
* 改动:
BUG号
需求号:无
其他改动control添加cmake依赖
影响域:无
-- tanjing <tanjing@kylinos.cn> Tue, 12 Dec 2023 09:57:12 +0800
qt5-ukui-platformtheme (4.1.0.0-ok20) nile; urgency=medium
* 改动:
BUG号
需求号:#187224 特殊三联按钮
其他改动工程转为cmake
影响域:无
-- tanjing <tanjing@kylinos.cn> Mon, 11 Dec 2023 15:26:36 +0800
qt5-ukui-platformtheme (4.1.0.0-ok19) nile; urgency=medium
* 改动:
BUG号
需求号:无
其他改动:释放读取文件的内存
影响域:无
-- tanjing <tanjing@kylinos.cn> Tue, 05 Dec 2023 18:14:43 +0800
qt5-ukui-platformtheme (4.1.0.0-ok18) nile; urgency=medium
* 改动:
BUG号
需求号:无
其他改动修改filedialogplugin.json的内容
影响域:无
-- tanjing <tanjing@kylinos.cn> Fri, 01 Dec 2023 17:51:55 +0800
qt5-ukui-platformtheme (4.1.0.0-ok17) nile; urgency=medium
* 改动:
BUG号
需求号:无
其他改动:修改编译不过问题
影响域:无
-- tanjing <tanjing@kylinos.cn> Fri, 01 Dec 2023 17:34:10 +0800
qt5-ukui-platformtheme (4.1.0.0-ok16) nile; urgency=medium
* 改动:
BUG号
需求号:无
其他改动:修改编译不过问题
影响域:无
-- tanjing <tanjing@kylinos.cn> Fri, 01 Dec 2023 14:15:56 +0800
qt5-ukui-platformtheme (4.1.0.0-ok15) nile; urgency=medium
* 改动:
BUG号#I8JS6X部分菜单不跟随主题
需求号:无
其他改动:无
影响域:无
-- tanjing <tanjing@kylinos.cn> Wed, 29 Nov 2023 14:27:31 +0800
qt5-ukui-platformtheme (4.1.0.0-ok14) nile; urgency=medium
* 改动:
BUG号
需求号:无
其他改动filedialog作为动态库加载修改libqt5-gesture-extensions的名字等
影响域filedialog的加载方式
-- tanjing <tanjing@kylinos.cn> Tue, 28 Nov 2023 17:49:56 +0800
qt5-ukui-platformtheme (4.1.0.0-ok13) nile; urgency=medium
* Rebuild for qt 5.15.10.
-- handsome_feng <jianfengli@ubuntukylin.com> Thu, 23 Nov 2023 19:18:05 +0800
qt5-ukui-platformtheme (4.1.0.0-0k12) nile; urgency=medium
* 改动:
BUG号
需求号:无
其他改动QMenu启典主题添加图标反白机制
修改窗管最小圆角值为0
调整控件圆角大小
task184178,调整spinbox的disable状态边框
task184240,slider添加焦点样式
开放焦点样式
影响域焦点样式QMenu图标控件圆角,spinbox启典主题边框
-- xibowen <xibowen@kylinos.cn> Tue, 21 Nov 2023 15:05:44 +0800
qt5-ukui-platformtheme (4.1.0.0-0k11) nile; urgency=medium
* 改动:
BUG号
需求号:无
其他改动:同步主线优化窗口移动与毛玻璃代码
主题对外接口移除ukui参数
ukui-greeter-dialog加入使用焦点列表
设置theme-color默认值为#3790FA
影响域:主题强调色,锁屏,主题对外接口
-- xibowen <xibowen@kylinos.cn> Thu, 16 Nov 2023 16:12:44 +0800
qt5-ukui-platformtheme (4.1.0.0-0k10) nile; urgency=medium
* 改动:
BUG号
需求号task#180726 新增多语言支持:维、哈、柯、蒙、藏、繁体 / qt5-ukui-platformtheme openkylin2.0 多语言翻译支持
其他改动:对话框显示模式修改
影响域:无
-- tanjing <tanjing@kylinos.cn> Wed, 01 Nov 2023 16:12:44 +0800
qt5-ukui-platformtheme (4.1.0.0-0k9) nile; urgency=medium
* 改动:
BUG号
需求号:无
其他改动:补充对外获取主题控件默认颜色相关的接口
影响域:无
-- tanjing <tanjing@kylinos.cn> Thu, 26 Oct 2023 09:47:22 +0800
qt5-ukui-platformtheme (4.1.0.0-0k8) nile; urgency=medium
* 改动:
BUG号
需求号:无
其他改动gsettings添加圆角响应gsettings设置任意色为高亮色
影响域:无
-- tanjing <tanjing@kylinos.cn> Mon, 23 Oct 2023 17:08:58 +0800
qt5-ukui-platformtheme (4.1.0.0-0k7) nile; urgency=medium
* 改动:
BUG号
需求号:无
其他改动spinbox背景色修改checkbox渐变等调整json名字等
影响域:无
-- tanjing <tanjing@kylinos.cn> Mon, 16 Oct 2023 10:38:03 +0800
qt5-ukui-platformtheme (4.1.0.0-0k6) nile; urgency=medium
* 改动:
BUG号
需求号:无
其他改动combobox下拉框不需要透明度radiobutton在disable下的颜色修改等
影响域:无
-- tanjing <tanjing@kylinos.cn> Fri, 13 Oct 2023 10:20:34 +0800
qt5-ukui-platformtheme (4.1.0.0-0k5) nile; urgency=medium
* 改动:
BUG号
需求号:#176586优化sliderbar scrollbar动效
其他改:无
影响域:无
-- tanjing <tanjing@kylinos.cn> Wed, 11 Oct 2023 13:36:13 +0800
qt5-ukui-platformtheme (4.1.0.0-0k4) nile; urgency=medium
* 改动:
BUG号
需求号:无
其他改同步copyright和Debian的修改
影响域:无
-- tanjing <tanjing@kylinos.cn> Sun, 08 Oct 2023 18:05:39 +0800
qt5-ukui-platformtheme (4.1.0.0-0k3) nile; urgency=medium
* 改动:
BUG号
需求号:无
其他改去掉proxystyle多余的文件
影响域:无
-- tanjing <tanjing@kylinos.cn> Sun, 08 Oct 2023 10:20:08 +0800
qt5-ukui-platformtheme (4.1.0.0-0k2) nile; urgency=medium
* 改动:
BUG号
需求号:无
其他改修复windowmanager类在wayland下设置drag状态错误导致的窗口拖拽异常问题
影响域wayland下窗口空白区域拖拽
-- Yue Lan <lanyue@kylinos.cn> Tue, 05 Sep 2023 10:58:04 +0800
qt5-ukui-platformtheme (4.1.0.0-0k1) nile; urgency=medium
* 改动:
BUG号
需求号:无
其他改:暂时屏蔽调用文管搜索部分的新接口
影响域:文件对话框搜索
-- tanjing <tanjing@kylinos.cn> Fri, 01 Sep 2023 11:28:53 +0800
qt5-ukui-platformtheme (4.1.0.0-0k0) nile; urgency=medium
* 改动:
BUG号
需求号:无
其他改:新增经典主题、控件动效、配置化主题、控件对外接口等
影响域:主题框架
-- tanjing <tanjing@kylinos.cn> Fri, 25 Aug 2023 15:29:30 +0800
qt5-ukui-platformtheme (4.0.0.0-0k4) yangtze; urgency=medium
* 改动:
BUG号Bug172547、171533影音、音乐打开文件夹闪退
需求号:无
其他改:无
影响域QFileDialog打开文件夹
-- tanjing <tanjing@kylinos.cn> Thu, 18 May 2023 16:30:03 +0800
qt5-ukui-platformtheme (4.0.0.0-0k3) yangtze; urgency=medium
* 改动:
BUG号PC模式下将桌面的文件删除后 桌面会随即刷新一次
用shift+delete删除文件再按下enter未删除文件
优化Tooltips描边显示效果
修改和印主题下tabbar的鼠标悬停样式
文件对话框添加翻译文件
修复文件对话框的文件格式下拉框过长问题,添加后缀省略
优化主题切换时主题框架内存释放相关问题
调整QMessagebox按钮布局方式为mac模式确认键在右边
鼠标悬浮在被禁用的tree控件上仍然有选中框
slider-禁用状态下横型/树型滑动条球球显示与设计不一致
调整QMessagebox上边距宽度
修复QMessagebox设置setwindowTitle不生效的问题
QMessagebox关闭按钮添加tooltip显示
需求号:无
其他改处理主题框架内save和restore不匹配的问题
正确释放new的内存
影响域QListview,QMessagebox,文件对话框
slider在disable下handle的颜色
(tablet5~tablet7)
-- xibowen <xibowen@kylinos.cn> Wed, 12 Apr 2023 18:30:22 +0800
qt5-ukui-platformtheme (4.0.0.0-0k2) yangtze; urgency=medium
* No change rebuild for openkylin.
-- Luoyaoming <luoyaoming@kylinos.cn> Thu, 11 May 2023 15:16:20 +0800
qt5-ukui-platformtheme (4.0.0.0-0k1) yangtze; urgency=medium
* 改动:
BUG号
需求号:无
其他改添加同步4.0.0.0上游后openkylin上遗留的改动
影响域:主题框架
-- xibowen <xibowen@kylinos.cn> Wed, 12 Apr 2023 18:30:22 +0800
qt5-ukui-platformtheme (4.0.0.0-0k0) yangtze; urgency=medium
* 改动:
BUG号
需求号:无
其他改同步新上游4.0.0.0
影响域:主题框架
-- xibowen <xibowen@kylinos.cn> Wed, 12 Apr 2023 17:30:22 +0800
qt5-ukui-platformtheme (3.20.1.1-0k11) yangtze; urgency=medium
* 改动:
BUG号BUGI643S1,修复文件对话框单击使得viewitem变为active状态
需求号:无
其他改:修复右键菜单没有毛玻璃效果的问题
影响域QMenu与QTooltip文件对话框
-- xibowen <xibowen@kylinos.cn> Tue, 11 Apr 2023 09:30:22 +0800
qt5-ukui-platformtheme (3.20.1.1-0k10) yangtze; urgency=medium
* 改动:
BUG号BUG137528,修复窗管未开启混成时候的QMenu与QTooltip的显示问题
需求号:无
其他改:无
影响域QMenu与QTooltip
-- xibowen <xibowen@kylinos.cn> Fri, 17 Mar 2023 11:20:22 +0800
qt5-ukui-platformtheme (3.20.1.1-0k9) yangtze; urgency=medium
* 改动:
BUG号
需求号:无
其他改:无
影响域:同步平板(3.20.1.1-1k13.1tablet2)的修改
-- tanjing <tanjing@kylinos.cn> Fri, 10 Feb 2023 17:56:22 +0800
qt5-ukui-platformtheme (3.20.1.1-0k8) yangtze; urgency=medium
* 改动:
BUG号BUGI686XN,修复侧边栏加载图标错误问题
需求号:无
其他改:无
影响域:图标加载
-- xibowen <xibowen@kylinos.cn> Fri, 06 Jan 2023 21:26:50 +0800
qt5-ukui-platformtheme (3.20.1.1-0k7) yangtze; urgency=medium
* 改动:
BUG号https://gitee.com/openkylin/peony/issues/I678W5 treeview item高度过窄
需求号:无
其他改:无
影响域viewitem的高度
-- tanjing <tanjing@kylinos.cn> Wed, 04 Jan 2023 09:26:50 +0800
qt5-ukui-platformtheme (3.20.1.1-0k6) yangtze; urgency=medium
* 改动:
BUG号
需求号:无
其他改:平台修改,升级版本号重新提交
影响域:无
-- xibowen <xibowen@kylinos.cn> Thu, 03 Nov 2022 18:37:22 +0800
qt5-ukui-platformtheme (3.20.1.1-0k5) yangtze; urgency=medium
* 改动:
BUG号
需求号:无
其他改:重新提高版本提交代码,使得仓库重新编译
影响域:无
-- xibowen <xibowen@kylinos.cn> Thu, 03 Nov 2022 15:37:22 +0800
qt5-ukui-platformtheme (3.20.1.1-0k4) yangtze; urgency=medium
* 改动:
BUG号
需求号:无
其他改:所有按钮添加支持半透明属性
调整spinbox按钮样式
按钮协议属性使用取消pushbutton与toolbutton类型判断
影响域spinbox,半透明按钮
-- xibowen <xibowen@kylinos.cn> Tue, 01 Nov 2022 17:31:22 +0800
qt5-ukui-platformtheme (3.20.1.1-0k3) yangtze; urgency=medium
* 改动:
BUG号
需求号:无
其他改:无(同步upstream分支更新、打tag)
影响域:无
-- tanjing <tanjing@kylinos.cn> Thu, 20 Oct 2022 16:07:38 +0800
qt5-ukui-platformtheme (3.20.1.1-0k2) yangtze; urgency=medium
* 改动:
BUG号
需求号:无
其他改:无(平台缺库没有编译过需要改changelog再提pr编包)
影响域:无
-- tanjing <tanjing@kylinos.cn> Thu, 20 Oct 2022 11:01:53 +0800
qt5-ukui-platformtheme (3.20.1.1-0k1) yangtze; urgency=medium
* 改动:
BUG号
需求号:无
其他改同步xc代码修改spinbox样式和tooltip高度
影响域spinbox样式和tooltip高度
-- tanjing <tanjing@kylinos.cn> Mon, 17 Oct 2022 16:34:39 +0800
qt5-ukui-platformtheme (3.20.1.1-0k0) yangtze; urgency=medium
* 改动:
BUG号
需求号:无
其他改:无
影响域代码同步适配xc模式
-- tanjing <tanjing@kylinos.cn> Wed, 12 Oct 2022 17:27:50 +0800
qt5-ukui-platformtheme (3.1.4.1~0509-ok10) yangtze; urgency=medium qt5-ukui-platformtheme (3.1.4.1~0509-ok10) yangtze; urgency=medium
* 改动: * 改动:
@ -104,3 +671,4 @@ qt5-ukui-platformtheme (3.1.4.1~0509-ok1) yangtze; urgency=medium
* Initial for openkylin. * Initial for openkylin.
-- xibowen <xibowen@kylinos.cn> Mon, 13 Jun 2022 16:22:00 +0800 -- xibowen <xibowen@kylinos.cn> Mon, 13 Jun 2022 16:22:00 +0800

72
debian/control vendored
View File

@ -1,42 +1,51 @@
Source: qt5-ukui-platformtheme Source: qt5-ukui-platformtheme
Section: libs Section: libs
Priority: optional Priority: optional
Maintainer: UKUI SIG <ukui@lists.openkylin.top> Maintainer: Kylin Team <team+kylin@tracker.debian.org>
Uploaders: handsome_feng <jianfengli@ubuntukylin.com> Uploaders: handsome_feng <jianfengli@ubuntukylin.com>,
Build-Depends: debhelper-compat (=12), xibowen <xibowen@kylinos.cn>
pkg-kde-tools, Build-Depends: dbus-x11,
debhelper-compat (=12),
kirigami2-dev,
libfontconfig-dev,
libfreetype-dev,
libglib2.0-dev, libglib2.0-dev,
libqt5x11extras5-dev,
libkf5windowsystem-dev,
libkf5wayland-dev,
libgsettings-qt-dev, libgsettings-qt-dev,
libkf5iconthemes-dev,
libkf5wayland-dev,
libkf5windowsystem-dev,
libkysdk-conf2-dev,
libkysdk-waylandhelper-dev,
libpeony-dev,
libqt5svg5-dev,
libqt5x11extras5-dev,
libqt5xdgiconloader-dev,
peony,
pkg-config, pkg-config,
pkg-kde-tools,
cmake,
qt5-qmake, qt5-qmake,
qtbase5-dev, qtbase5-dev,
qtbase5-dev-tools, qtbase5-dev-tools,
qtbase5-private-dev, qtbase5-private-dev,
qtchooser, qtchooser,
qttools5-dev-tools,
libqt5xdgiconloader-dev,
qtquickcontrols2-5-dev,
qtdeclarative5-dev, qtdeclarative5-dev,
dbus-x11, qtquickcontrols2-5-dev,
kirigami2-dev, qttools5-dev,
libkf5iconthemes-dev, qttools5-dev-tools
libqt5svg5-dev, Standards-Version: 4.6.1.0
libkysdk-waylandhelper-dev
Standards-Version: 4.5.1
Rules-Requires-Root: no Rules-Requires-Root: no
Homepage: https://www.ukui.org Homepage: https://gitee.com/openkylin/qt5-ukui-platformtheme
Vcs-Git: https://gitee.com/openkylin/qt5-ukui-platformtheme.git Vcs-Git: https://gitee.com/openkylin/qt5-ukui-platformtheme.git
Vcs-Browser: https://gitee.com/openkylin/qt5-ukui-platformtheme Vcs-Browser: https://gitee.com/openkylin/qt5-ukui-platformtheme
Package: qt5-ukui-platformtheme Package: qt5-ukui-platformtheme
Architecture: any Architecture: any
Depends: libqt5-ukui-style1, Depends: libqt5-ukui-style1 (= ${binary:Version}),
qt5-styles-ukui,
qt5-gesture-extensions,
libqt5xdgiconloader3, libqt5xdgiconloader3,
qml-module-org-ukui-qqc2desktopstyle (= ${binary:Version}),
qml-module-org-ukui-stylehelper (= ${binary:Version}),
qt5-styles-ukui (= ${binary:Version}),
${misc:Depends}, ${misc:Depends},
${shlibs:Depends} ${shlibs:Depends}
Description: Qt5 QPA platform theme of UKUI Description: Qt5 QPA platform theme of UKUI
@ -50,7 +59,7 @@ Description: Qt5 QPA platform theme of UKUI
Package: qt5-styles-ukui Package: qt5-styles-ukui
Architecture: any Architecture: any
Depends: libqt5-ukui-style1, Depends: libqt5-ukui-style1 (= ${binary:Version}),
${misc:Depends}, ${misc:Depends},
${shlibs:Depends} ${shlibs:Depends}
Description: QStyle plugins provided by ukui Description: QStyle plugins provided by ukui
@ -66,8 +75,8 @@ Description: QStyle plugins provided by ukui
Package: libqt5-ukui-style1 Package: libqt5-ukui-style1
Architecture: any Architecture: any
Depends: libglib2.0-0, Depends: libglib2.0-0,
libqt5widgets5,
libgsettings-qt1, libgsettings-qt1,
libqt5widgets5,
${misc:Depends}, ${misc:Depends},
${shlibs:Depends} ${shlibs:Depends}
Provides: libqt5-ukui-style Provides: libqt5-ukui-style
@ -98,19 +107,20 @@ Description: Development files of libqt5-ukui-style1
Package: qml-module-org-ukui-qqc2desktopstyle Package: qml-module-org-ukui-qqc2desktopstyle
Architecture: any Architecture: any
Depends: qml-module-qtgraphicaleffects, Depends: qml-module-org-ukui-stylehelper,
qml-module-qtgraphicaleffects,
qml-module-qtqml-models2, qml-module-qtqml-models2,
qml-module-qtquick-controls2, qml-module-qtquick-controls2,
qml-module-qtquick-layouts, qml-module-qtquick-layouts,
qml-module-qtquick-templates2, qml-module-qtquick-templates2,
qml-module-qtquick-window2, qml-module-qtquick-window2,
qml-module-qtquick2, qml-module-qtquick2,
qml-module-org-ukui-stylehelper,
${misc:Depends}, ${misc:Depends},
${shlibs:Depends}, ${shlibs:Depends}
Description: Qt Quick Controls 2: Kylin Style Description: Qt Quick Controls 2: Kylin Style
Small style written in QML for QtQuickControls2 intended to be used Small style written in QML for QtQuickControls2 intended
by default in QQC2-based apps when used in the Kylin tablet desktop to be used by default in QQC2-based apps when used in the
Kylin tablet desktop.
Package: qml-module-org-ukui-stylehelper Package: qml-module-org-ukui-stylehelper
Architecture: any Architecture: any
@ -122,6 +132,10 @@ Depends: qml-module-qtgraphicaleffects,
qml-module-qtquick-window2, qml-module-qtquick-window2,
qml-module-qtquick2, qml-module-qtquick2,
${misc:Depends}, ${misc:Depends},
${shlibs:Depends}, ${shlibs:Depends}
Description: qml stylehelper Description: qml stylehelper
The external dependency Lib of qml theme framework Ukui qml platformtheme library.It provide an UI style with
ukui for qml applications.Include theme color, widget, font,
icon.
.
The external dependency Lib of qml theme framework.

102
debian/copyright vendored
View File

@ -1,81 +1,45 @@
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: qt5-ukui-platformtheme Upstream-Name: qt5-ukui-platformtheme
Source: <https://github.com/ukui/qt5-ukui-platformtheme> Upstream-Contact: xibowen <xibowen@kylinos.cn>
Source: <https://gitee.com/openkylin/qt5-ukui-platformtheme>
Files: * Files: *
Copyright: 2020, Tianjin KYLIN Information Technology Co., Ltd. Copyright: 2023, KylinSoft Co., Ltd.
License: LGPL-3.0+ License: LGPL-3+
Files: debian/*
Copyright: 2020, Tianjin KYLIN Information Technology Co., Ltd.
License: GPL-3.0+
Files: libqt5-ukui-style/*
Copyright: 2020, Tianjin KYLIN Information Technology Co., Ltd.
License: LGPL-3.0+
Files: qt5-ukui-platformtheme/*
Copyright: 2020, Tianjin KYLIN Information Technology Co., Ltd.
License: LGPL-3.0+
Files: qt5-ukui-platformtheme/ukui.json
Copyright: 2020, Tianjin KYLIN Information Technology Co., Ltd.
License: LGPL-3.0+
Files: qt5-ukui-platformtheme/widget/* Files: qt5-ukui-platformtheme/widget/*
Copyright: 2020, KylinSoft Co., Ltd. Copyright: 2023, KylinSoft Co., Ltd.
License: GPL-3.0+ License: GPL-3+
Files: test/* Files: test/*
Copyright: 2020, Tianjin KYLIN Information Technology Co., Ltd. Copyright: 2023, KylinSoft Co., Ltd.
License: GPL-3.0+ License: GPL-3+
Files: test/messagebox/* Files: ukui-styles/qt5-style-ukui/breezeboxshadowrenderer.cpp
Copyright: 2020, Tianjin KYLIN Information Technology Co., Ltd. ukui-styles/qt5-style-ukui/breezeboxshadowrenderer.h
License: GPL-3.0+ Copyright: 2018, Vlad Zagorodniy <vlad.zahorodnii@kde.org>
License: GPL-2+
Files: ukui-styles/* License: GPL-2+
Copyright: 2020, Tianjin KYLIN Information Technology Co., Ltd. This program is free software; you can redistribute it and/or modify
License: LGPL-3.0+
Files: ukui-styles/proxy-style/ukui-style.json
Copyright: 2020, Tianjin KYLIN Information Technology Co., Ltd.
License: LGPL-3.0+
Files: ukui-styles/qt5-style-ukui/qt5-style-ukui.json
Copyright: 2020, Tianjin KYLIN Information Technology Co., Ltd.
License: LGPL-3.0+
License: GPL-3.0+
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 it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or the Free Software Foundation; version 2 dated June, 1991, or (at
(at your option) any later version. your option) any later version.
. On Debian systems, the complete text of version 2 of the GNU General
This program is distributed in the hope that it will be useful, Public License can be found in '/usr/share/common-licenses/GPL-2'.
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
.
On Debian systems, the complete text of the GNU General Public License
Version 3 can be found in `/usr/share/common-licenses/GPL-3'.
License: LGPL-3.0+ License: GPL-3+
This library is free software; you can redistribute it and/or This program is free software; you can redistribute it and/or modify
modify it under the terms of the GNU Lesser General Public it under the terms of the GNU General Public License as published by
License as published by the Free Software Foundation; either the Free Software Foundation; version 3 dated June, 2007, or (at
version 3 of the License, or (at your option) any later version. your option) any later version.
. On Debian systems, the complete text of version 3 of the GNU General
This library is distributed in the hope that it will be useful, Public License can be found in '/usr/share/common-licenses/GPL-3'.
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU License: LGPL-3+
Lesser General Public License for more details. This program is free software; you can redistribute it and/or modify it
. under the terms of the GNU Lesser General Public License as published by the
You should have received a copy of the GNU General Public License Free Software Foundation; version 3 of the License, or (at
along with this library. If not, see <https://www.gnu.org/licenses/>. your option) any later version.
. On Debian systems, the complete text of version 3 of the GNU Lesser
On Debian systems, the complete text of the GNU Lesser General Public License General Public License can be found in '/usr/share/common-licenses/LGPL-3'.
Version 3 can be found in `/usr/share/common-licenses/LGPL-3'.

View File

@ -1,5 +1,4 @@
libqt5-ukui-style/*.h usr/include/qt5-ukui
libqt5-ukui-style/*/*.h usr/include/qt5-ukui libqt5-ukui-style/*/*.h usr/include/qt5-ukui
libqt5-ukui-style/*/*/*.h usr/include/qt5-ukui libqt5-ukui-style/*/*/*.h usr/include/qt5-ukui
usr/lib/*/pkgconfig/*.pc
usr/lib/*/*.so usr/lib/*/*.so
usr/lib/*/pkgconfig/*.pc

View File

@ -1,2 +1,3 @@
etc/kylin-config/basic/org.ukui.style.yaml
usr/lib/*/*.so.* usr/lib/*/*.so.*
usr/share/glib-2.0/schemas/org.ukui.style.gschema.xml usr/share/glib-2.0/schemas/org.ukui.style.gschema.xml

View File

@ -1 +1,2 @@
usr/lib/*/qt5/plugins/styles/*.so usr/lib/*/qt5/plugins/styles/*.so
/usr/share/qt5-ukui-platformtheme/themeconfig/*

View File

@ -1 +1,2 @@
usr/share/qt5-ukui-platformtheme/*.qm
usr/lib/*/qt5/plugins/platformthemes/*.so usr/lib/*/qt5/plugins/platformthemes/*.so

3
debian/rules vendored
View File

@ -5,3 +5,6 @@ export DEB_BUILD_MAINT_OPTIONS = hardening=+all
%: %:
dh $@ --with pkgkde_symbolshelper dh $@ --with pkgkde_symbolshelper
override_dh_auto_configure:
echo `pkg-config --cflags peony`
dh_auto_configure

3
debian/watch vendored
View File

@ -1,3 +1,2 @@
version=4 version=4
opts=filenamemangle=s/.+\/v?(\d\S+)\.tar\.gz/qt5-ukui-platformtheme-$1\.tar\.gz/ \ https://gitee.com/openkylin/qt5-ukui-platformtheme/releases/ .*/qt5-ukui-platformtheme-(\d\S+)\.tar\.gz
https://github.com/ukui/qt5-ukui-platformtheme/releases .*/v?(\d\S+)\.tar\.gz

View File

@ -0,0 +1,98 @@
cmake_minimum_required(VERSION 3.16)
project(qt5-ukui-style)
#
set(QT5_UKUI-STYLE_VERSION_MAJOR 1)
set(QT5_UKUI-STYLE_VERSION_MINOR 0)
set(QT5_UKUI-STYLE_VERSION_PATCH 0)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(QT_MIN_VERSION "5.12.0")
set(KF5_MIN_VERSION "5.66.0")
find_package(Qt5Concurrent)
set(LIB_PATH ${imported_location})
get_filename_component(PARENT_PATH "${LIB_PATH}" PATH)
message("libqt5-ukui-style PARENT_PATH: ${PARENT_PATH}")
find_package(Qt5Widgets)
include_directories(${Qt5Widgets_PRIVATE_INCLUDE_DIRS})
include_directories(${Qt5Gui_PRIVATE_INCLUDE_DIRS})
#find_package(Qt5QtThemeSupport REQUIRED)
find_package(KF5WindowSystem ${KF5_MIN_VERSION} CONFIG REQUIRED COMPONENTS)
find_package(KF5Wayland CONFIG REQUIRED COMPONENTS)
find_package(X11)
find_package(PkgConfig)
pkg_check_modules(GLIB2 REQUIRED glib-2.0 gio-2.0 )
pkg_check_modules(Qsettings REQUIRED gsettings-qt)
pkg_check_modules(KYSDKCONF2 REQUIRED kysdk-conf2)
include_directories(${Qsettings_INCLUDE_DIRS})
include_directories(${GLIB2_INCLUDE_DIRS})
if (KYSDKCONF2_FOUND)
include_directories(${KYSDKCONF2_INCLUDE_DIRS})
link_directories(${KYSDKCONF2_LIBRARY_DIRS})
endif()
file(GLOB_RECURSE Header "*.h" "*.hpp")
file(GLOB_RECURSE Sources "*.cpp" "*.c" "*.ui")
file(GLOB_RECURSE XML "org.ukui.style.gschema.xml")
source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${Header} ${Sources} ${XML})
add_library(qt5-ukui-style SHARED ${Sources} ${Header} ${XML})
#
set_target_properties(qt5-ukui-style PROPERTIES
OUTPUT_NAME "qt5-ukui-style"
VERSION ${QT5_UKUI-STYLE_VERSION_MAJOR}.${QT5_UKUI-STYLE_VERSION_MINOR}.${QT5_UKUI-STYLE_VERSION_PATCH}
SOVERSION ${QT5_UKUI-STYLE_VERSION_MAJOR}
)
target_link_libraries(qt5-ukui-style PRIVATE
Qt5::Widgets
Qt5::Concurrent
gsettings-qt
gio-2.0
${KYSDKCONF2_LIBRARIES}
)
add_definitions(-DLIBQT5UKUISTYLE_LIBRARY)
add_definitions(-DQT_DEPRECATED_WARNINGS)
add_definitions(-DQT_MESSAGELOGCONTEXT)
if(UNIX)
set(TARGET_PATH ${PARENT_PATH})
MESSAGE("libqt5-ukui-style TARGET_PATH: ${TARGET_PATH}")
install(TARGETS ${PROJECT_NAME} DESTINATION ${TARGET_PATH})
set(GSCHEMA_PATH "/usr/share/glib-2.0/schemas")
set(GSCHEMA_FILE "${CMAKE_CURRENT_SOURCE_DIR}/settings/org.ukui.style.gschema.xml")
install(FILES ${GSCHEMA_FILE} DESTINATION ${GSCHEMA_PATH})
set(KCONF2_PATH "/etc/kylin-config/basic/")
set(KCONF2_FILE "${CMAKE_CURRENT_SOURCE_DIR}/settings/org.ukui.style.yaml")
install(FILES ${KCONF2_FILE} DESTINATION ${KCONF2_PATH})
set(PKGCONFIG_PATH "${PARENT_PATH}/pkgconfig")
set(PKGCONFIG_FILE "${CMAKE_CURRENT_SOURCE_DIR}/development-files/qt5-ukui.pc")
install(FILES ${PKGCONFIG_FILE} DESTINATION ${PKGCONFIG_PATH})
install(FILES ${Header} DESTINATION "libqt5-ukui-style/")
endif()

View File

@ -1,7 +1,7 @@
/* /*
* Qt5-UKUI's Library * Qt5-UKUI's Library
* *
* Copyright (C) 2020, Tianjin KYLIN Information Technology Co., Ltd. * Copyright (C) 2023, KylinSoft Co., Ltd.
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -32,8 +32,14 @@ AnimationHelper::AnimationHelper(QObject *parent) : QObject(parent)
AnimationHelper::~AnimationHelper() AnimationHelper::~AnimationHelper()
{ {
// for (auto animator : *m_animators) { for(auto item = m_animators->begin(); item != m_animators->end(); item++){
// delete animator; if(item.value()){
// } delete item.value();
item.value() = nullptr;
}
}
if(m_animators){
delete m_animators; delete m_animators;
m_animators = nullptr;
}
} }

View File

@ -1,7 +1,7 @@
/* /*
* Qt5-UKUI's Library * Qt5-UKUI's Library
* *
* Copyright (C) 2020, Tianjin KYLIN Information Technology Co., Ltd. * Copyright (C) 2023, KylinSoft Co., Ltd.
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public

View File

@ -1,13 +0,0 @@
INCLUDEPATH += $$PWD
INCLUDEPATH += $$PWD/..
include(tabwidget/tabwidget.pri)
include(scrollbar/scrollbar.pri)
HEADERS += \
$$PWD/animator-plugin-iface.h \
$$PWD/animator-iface.h \
$$PWD/animation-helper.h
SOURCES += \
$$PWD/animation-helper.cpp

View File

@ -1,7 +1,7 @@
/* /*
* Qt5-UKUI's Library * Qt5-UKUI's Library
* *
* Copyright (C) 2020, Tianjin KYLIN Information Technology Co., Ltd. * Copyright (C) 2023, KylinSoft Co., Ltd.
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -40,6 +40,8 @@ public:
virtual QVariant value(const QString &property) {return QVariant();} virtual QVariant value(const QString &property) {return QVariant();}
virtual bool setAnimatorStartValue(const QString &property, const QVariant &value) {return false;} virtual bool setAnimatorStartValue(const QString &property, const QVariant &value) {return false;}
virtual bool setAnimatorEndValue(const QString &property, const QVariant &value) {return false;} virtual bool setAnimatorEndValue(const QString &property, const QVariant &value) {return false;}
virtual QVariant animatorStartValue(const QString &property) {return QVariant();}
virtual QVariant animatorEndValue(const QString &property) {return QVariant();}
virtual bool setAnimatorDuration(const QString &property, int duration) {return false;} virtual bool setAnimatorDuration(const QString &property, int duration) {return false;}
virtual void setAnimatorDirectionForward(const QString &property = nullptr, bool forward = true) {} virtual void setAnimatorDirectionForward(const QString &property = nullptr, bool forward = true) {}
@ -49,6 +51,10 @@ public:
virtual int currentAnimatorTime(const QString &property = nullptr) {return 0;} virtual int currentAnimatorTime(const QString &property = nullptr) {return 0;}
virtual void setAnimatorCurrentTime(const QString &property = nullptr, const int msecs = 0) {} virtual void setAnimatorCurrentTime(const QString &property = nullptr, const int msecs = 0) {}
virtual int totalAnimationDuration(const QString &property = nullptr) {return 0;} virtual int totalAnimationDuration(const QString &property = nullptr) {return 0;}
virtual void setExtraProperty(const QString &property, const QVariant &value){}
virtual QVariant getExtraProperty(const QString &property) {return QVariant();}
}; };
#endif // ANIMATORIFACE_H #endif // ANIMATORIFACE_H

View File

@ -1,7 +1,7 @@
/* /*
* Qt5-UKUI's Library * Qt5-UKUI's Library
* *
* Copyright (C) 2020, Tianjin KYLIN Information Technology Co., Ltd. * Copyright (C) 2023, KylinSoft Co., Ltd.
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public

View File

@ -1,5 +0,0 @@
HEADERS += \
$$PWD/ukui-scrollbar-default-interaction-animator.h
SOURCES += \
$$PWD/ukui-scrollbar-default-interaction-animator.cpp

View File

@ -1,7 +1,7 @@
/* /*
* Qt5-UKUI's Library * Qt5-UKUI's Library
* *
* Copyright (C) 2020, Tianjin KYLIN Information Technology Co., Ltd. * Copyright (C) 2023, KylinSoft Co., Ltd.
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -34,6 +34,23 @@ DefaultInteractionAnimator::DefaultInteractionAnimator(QObject *parent) : QParal
} }
DefaultInteractionAnimator::~DefaultInteractionAnimator()
{
if(m_groove_width){
m_groove_width->deleteLater();
m_groove_width = nullptr;
}
if(m_slider_opacity){
m_slider_opacity->deleteLater();
m_slider_opacity = nullptr;
}
if(m_sunken_silder_additional_opacity){
m_sunken_silder_additional_opacity->deleteLater();
m_sunken_silder_additional_opacity = nullptr;
}
}
/*! /*!
* \brief DefaultInteractionAnimator::bindWidget * \brief DefaultInteractionAnimator::bindWidget
* \param w * \param w
@ -64,43 +81,88 @@ bool DefaultInteractionAnimator::bindWidget(QWidget *w)
return false; return false;
} }
if(m_groove_width){
delete(m_groove_width);
m_groove_width = nullptr;
}
m_groove_width = new QVariantAnimation(this); m_groove_width = new QVariantAnimation(this);
m_groove_width->setStartValue(0.0); m_groove_width->setStartValue(0.0);
m_groove_width->setEndValue(1.0); m_groove_width->setEndValue(1.0);
m_groove_width->setDuration(150); m_groove_width->setDuration(200);
m_groove_width->setEasingCurve(QEasingCurve::InOutCubic);
addAnimation(m_groove_width); addAnimation(m_groove_width);
if( m_slider_opacity){
delete(m_slider_opacity);
m_slider_opacity = nullptr;
}
m_slider_opacity = new QVariantAnimation(this); m_slider_opacity = new QVariantAnimation(this);
m_slider_opacity->setStartValue(0.0); m_slider_opacity->setStartValue(0.0);
m_slider_opacity->setEndValue(0.10); m_slider_opacity->setEndValue(1.0);
m_slider_opacity->setDuration(150); m_slider_opacity->setDuration(200);
m_slider_opacity->setEasingCurve(QEasingCurve::InOutCubic);
addAnimation(m_slider_opacity); addAnimation(m_slider_opacity);
if( m_hover_bg_width){
delete(m_hover_bg_width);
m_hover_bg_width = nullptr;
}
m_hover_bg_width = new QVariantAnimation(this);
m_hover_bg_width->setStartValue(0.0);
m_hover_bg_width->setEndValue(1.0);
m_hover_bg_width->setDuration(200);
m_hover_bg_width->setEasingCurve(QEasingCurve::InOutCubic);
addAnimation(m_hover_bg_width);
if( m_sunken_silder_additional_opacity){
delete(m_sunken_silder_additional_opacity);
m_sunken_silder_additional_opacity = nullptr;
}
m_sunken_silder_additional_opacity = new QVariantAnimation(this); m_sunken_silder_additional_opacity = new QVariantAnimation(this);
m_sunken_silder_additional_opacity->setStartValue(0.0); m_sunken_silder_additional_opacity->setStartValue(0.0);
m_sunken_silder_additional_opacity->setEndValue(0.10); m_sunken_silder_additional_opacity->setEndValue(0.10);
m_sunken_silder_additional_opacity->setDuration(150); m_sunken_silder_additional_opacity->setDuration(150);
addAnimation(m_sunken_silder_additional_opacity); addAnimation(m_sunken_silder_additional_opacity);
m_silder_move_position = new QVariantAnimation(this);
m_silder_move_position->setStartValue(0.0);
m_silder_move_position->setEndValue(1.0);
m_silder_move_position->setDuration(300);
m_silder_move_position->setEasingCurve(QEasingCurve::OutQuad);
addAnimation(m_silder_move_position);
setObjectName("ukui_scrollbar_default_interaction_animator"); setObjectName("ukui_scrollbar_default_interaction_animator");
connect(m_groove_width, &QVariantAnimation::valueChanged, w, [=]() { connect(m_groove_width, &QVariantAnimation::valueChanged, w, [=]() {
w->repaint(); w->update();
}); });
connect(m_slider_opacity, &QVariantAnimation::valueChanged, w, [=]() { connect(m_slider_opacity, &QVariantAnimation::valueChanged, w, [=]() {
w->repaint(); w->update();
}); });
connect(m_sunken_silder_additional_opacity, &QVariantAnimation::valueChanged, w, [=]() { connect(m_sunken_silder_additional_opacity, &QVariantAnimation::valueChanged, w, [=]() {
w->repaint(); w->update();
});
connect(m_silder_move_position, &QVariantAnimation::valueChanged, w, [=]() {
w->update();
});
connect(m_hover_bg_width, &QVariantAnimation::valueChanged, w, [=]() {
w->update();
}); });
connect(m_groove_width, &QVariantAnimation::finished, w, [=]() { connect(m_groove_width, &QVariantAnimation::finished, w, [=]() {
w->repaint(); w->update();
}); });
connect(m_slider_opacity, &QVariantAnimation::finished, w, [=]() { connect(m_slider_opacity, &QVariantAnimation::finished, w, [=]() {
w->repaint(); w->update();
}); });
connect(m_sunken_silder_additional_opacity, &QVariantAnimation::finished, w, [=]() { connect(m_sunken_silder_additional_opacity, &QVariantAnimation::finished, w, [=]() {
w->repaint(); w->update();
});
connect(m_silder_move_position, &QVariantAnimation::finished, w, [=]() {
w->update();
});
connect(m_hover_bg_width, &QVariantAnimation::finished, w, [=]() {
w->update();
}); });
return true; return true;
@ -110,9 +172,26 @@ bool DefaultInteractionAnimator::unboundWidget()
{ {
this->stop(); this->stop();
this->setDirection(QAbstractAnimation::Forward); this->setDirection(QAbstractAnimation::Forward);
m_groove_width->deleteLater(); if(m_groove_width){
m_slider_opacity->deleteLater(); delete(m_groove_width);
m_sunken_silder_additional_opacity->deleteLater(); m_groove_width = nullptr;
}
if(m_slider_opacity){
delete(m_slider_opacity);
m_slider_opacity = nullptr;
}
if(m_sunken_silder_additional_opacity){
delete(m_sunken_silder_additional_opacity);
m_sunken_silder_additional_opacity = nullptr;
}
if(m_silder_move_position){
delete(m_silder_move_position);
m_silder_move_position = nullptr;
}
if(m_hover_bg_width){
delete(m_hover_bg_width);
m_hover_bg_width = nullptr;
}
if (m_widget) { if (m_widget) {
this->setParent(nullptr); this->setParent(nullptr);
@ -129,6 +208,10 @@ QVariant DefaultInteractionAnimator::value(const QString &property)
return m_slider_opacity->currentValue(); return m_slider_opacity->currentValue();
} else if (property == "additional_opacity") { } else if (property == "additional_opacity") {
return m_sunken_silder_additional_opacity->currentValue(); return m_sunken_silder_additional_opacity->currentValue();
} else if (property == "move_position") {
return m_silder_move_position->currentValue();
} else if (property == "bg_width") {
return m_hover_bg_width->currentValue();
} else { } else {
return QVariant(); return QVariant();
} }
@ -146,6 +229,12 @@ bool DefaultInteractionAnimator::setAnimatorStartValue(const QString &property,
{ {
m_sunken_silder_additional_opacity->setStartValue(value); m_sunken_silder_additional_opacity->setStartValue(value);
return true; return true;
} else if (property == "move_position") {
m_silder_move_position->setStartValue(value);
return true;
} else if (property == "bg_width") {
m_hover_bg_width->setStartValue(value);
return true;
} else { } else {
return false; return false;
} }
@ -162,22 +251,69 @@ bool DefaultInteractionAnimator::setAnimatorEndValue(const QString &property, co
} else if (property == "additional_opacity") { } else if (property == "additional_opacity") {
m_sunken_silder_additional_opacity->setEndValue(value); m_sunken_silder_additional_opacity->setEndValue(value);
return true; return true;
} else if (property == "move_position") {
m_silder_move_position->setEndValue(value);
return true;
} else if (property == "bg_width") {
m_hover_bg_width->setEndValue(value);
return true;
} else { } else {
return false; return false;
} }
} }
QVariant DefaultInteractionAnimator::animatorStartValue(const QString &property)
{
if (property == "groove_width") {
return m_groove_width->startValue();
} else if (property == "slider_opacity") {
return m_slider_opacity->startValue();
} else if (property == "additional_opacity") {
return m_sunken_silder_additional_opacity->startValue();
} else if (property == "move_position") {
return m_silder_move_position->startValue();
} else if (property == "bg_width") {
return m_hover_bg_width->startValue();
} else {
return QVariant();
}
}
QVariant DefaultInteractionAnimator::animatorEndValue(const QString &property)
{
if (property == "groove_width") {
return m_groove_width->endValue();
} else if (property == "slider_opacity") {
return m_slider_opacity->endValue();
} else if (property == "additional_opacity") {
return m_sunken_silder_additional_opacity->endValue();
} else if (property == "move_position") {
return m_silder_move_position->endValue();
} else if (property == "bg_width") {
return m_hover_bg_width->endValue();
} else {
return QVariant();
}
}
bool DefaultInteractionAnimator::setAnimatorDuration(const QString &property, int duration) bool DefaultInteractionAnimator::setAnimatorDuration(const QString &property, int duration)
{ {
if (property == "groove_width") { if (property == "groove_width") {
m_groove_width->setDuration(duration); m_groove_width->setDuration(duration);
return true; return true;
} else if (property == "slider_opacity") { } else if (property == "slider_opacity") {
m_groove_width->setDuration(duration); m_slider_opacity->setDuration(duration);
return true; return true;
} else if (property == "additional_opacity") { } else if (property == "additional_opacity") {
m_sunken_silder_additional_opacity->setDuration(duration); m_sunken_silder_additional_opacity->setDuration(duration);
return true; return true;
} else if (property == "move_position") {
m_silder_move_position->setDuration(duration);
return true;
} else if (property == "bg_width") {
m_hover_bg_width->setDuration(duration);
return true;
} else { } else {
return false; return false;
} }
@ -192,6 +328,10 @@ void DefaultInteractionAnimator::setAnimatorDirectionForward(const QString &prop
m_slider_opacity->setDirection(d); m_slider_opacity->setDirection(d);
} else if (property == "additional_opacity") { } else if (property == "additional_opacity") {
m_sunken_silder_additional_opacity->setDirection(d); m_sunken_silder_additional_opacity->setDirection(d);
} else if (property == "move_position") {
m_silder_move_position->setDirection(d);
} else if (property == "bg_width") {
m_hover_bg_width->setDirection(d);
} else { } else {
return; return;
} }
@ -205,6 +345,10 @@ bool DefaultInteractionAnimator::isRunning(const QString &property)
return m_slider_opacity->state() == Running; return m_slider_opacity->state() == Running;
} else if (property == "additional_opacity") { } else if (property == "additional_opacity") {
return m_sunken_silder_additional_opacity->state() == Running; return m_sunken_silder_additional_opacity->state() == Running;
} else if (property == "move_position") {
return m_silder_move_position->state() == Running;
} else if (property == "bg_width") {
return m_hover_bg_width->state() == Running;
} else { } else {
return this->state() == Running; return this->state() == Running;
} }
@ -218,6 +362,10 @@ void DefaultInteractionAnimator::startAnimator(const QString &property)
m_slider_opacity->start(); m_slider_opacity->start();
} else if (property == "additional_opacity") { } else if (property == "additional_opacity") {
m_sunken_silder_additional_opacity->start(); m_sunken_silder_additional_opacity->start();
} else if (property == "move_position") {
m_silder_move_position->start();
} else if (property == "bg_width") {
m_hover_bg_width->start();
} else { } else {
this->start(); this->start();
} }
@ -231,6 +379,10 @@ void DefaultInteractionAnimator::stopAnimator(const QString &property)
m_slider_opacity->stop(); m_slider_opacity->stop();
} else if (property == "additional_opacity") { } else if (property == "additional_opacity") {
m_sunken_silder_additional_opacity->stop(); m_sunken_silder_additional_opacity->stop();
} else if (property == "move_position") {
m_silder_move_position->stop();
} else if (property == "bg_width") {
m_hover_bg_width->stop();
} else { } else {
this->stop(); this->stop();
} }
@ -244,11 +396,23 @@ int DefaultInteractionAnimator::currentAnimatorTime(const QString &property)
return m_slider_opacity->currentTime(); return m_slider_opacity->currentTime();
} else if (property == "additional_opacity") { } else if (property == "additional_opacity") {
return m_sunken_silder_additional_opacity->currentTime(); return m_sunken_silder_additional_opacity->currentTime();
} else if (property == "move_position") {
return m_silder_move_position->currentTime();
} else if (property == "bg_width") {
return m_hover_bg_width->currentTime();
} else { } else {
return this->currentTime(); return this->currentTime();
} }
} }
void DefaultInteractionAnimator::setAnimatorCurrentTime(const QString &property, const int msecs)
{
if ("move_position" == property) {
m_silder_move_position->setCurrentTime(msecs);
}
}
int DefaultInteractionAnimator::totalAnimationDuration(const QString &property) int DefaultInteractionAnimator::totalAnimationDuration(const QString &property)
{ {
if (property == "groove_width") { if (property == "groove_width") {
@ -257,7 +421,33 @@ int DefaultInteractionAnimator::totalAnimationDuration(const QString &property)
return m_slider_opacity->duration(); return m_slider_opacity->duration();
} else if (property == "additional_opacity") { } else if (property == "additional_opacity") {
return m_sunken_silder_additional_opacity->duration(); return m_sunken_silder_additional_opacity->duration();
} else if (property == "move_position") {
return m_silder_move_position->duration();
} else if (property == "bg_width") {
return m_hover_bg_width->duration();
} else { } else {
return this->duration(); return this->duration();
} }
} }
void DefaultInteractionAnimator::setExtraProperty(const QString &property, const QVariant &value)
{
if(property == "end_position")
m_endPosition = value.toInt();
else if(property == "start_position")
m_startPosition = value.toInt();
else if(property == "addValue")
m_addValue = value.toBool();
}
QVariant DefaultInteractionAnimator::getExtraProperty(const QString &property)
{
if(property == "end_position")
return m_endPosition;
else if(property == "start_position")
return m_startPosition;
else if(property == "addValue")
return m_addValue;
return QVariant();
}

View File

@ -1,7 +1,7 @@
/* /*
* Qt5-UKUI's Library * Qt5-UKUI's Library
* *
* Copyright (C) 2020, Tianjin KYLIN Information Technology Co., Ltd. * Copyright (C) 2023, KylinSoft Co., Ltd.
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -24,7 +24,7 @@
#define UKUISCROLLBARDEFAULTINTERACTIONANIMATOR_H #define UKUISCROLLBARDEFAULTINTERACTIONANIMATOR_H
#include <QParallelAnimationGroup> #include <QParallelAnimationGroup>
#include "animator-iface.h" #include "../animator-iface.h"
class QVariantAnimation; class QVariantAnimation;
@ -37,6 +37,7 @@ class DefaultInteractionAnimator : public QParallelAnimationGroup, public Animat
Q_OBJECT Q_OBJECT
public: public:
explicit DefaultInteractionAnimator(QObject *parent = nullptr); explicit DefaultInteractionAnimator(QObject *parent = nullptr);
~DefaultInteractionAnimator();
bool bindWidget(QWidget *w); bool bindWidget(QWidget *w);
bool unboundWidget(); bool unboundWidget();
@ -46,20 +47,30 @@ public:
bool isRunning(const QString &property = nullptr); bool isRunning(const QString &property = nullptr);
bool setAnimatorStartValue(const QString &property, const QVariant &value); bool setAnimatorStartValue(const QString &property, const QVariant &value);
bool setAnimatorEndValue(const QString &property, const QVariant &value); bool setAnimatorEndValue(const QString &property, const QVariant &value);
QVariant animatorStartValue(const QString &property);
QVariant animatorEndValue(const QString &property);
bool setAnimatorDuration(const QString &property, int duration); bool setAnimatorDuration(const QString &property, int duration);
void setAnimatorDirectionForward(const QString &property = nullptr, bool forward = true); void setAnimatorDirectionForward(const QString &property = nullptr, bool forward = true);
void startAnimator(const QString &property = nullptr); void startAnimator(const QString &property = nullptr);
void stopAnimator(const QString &property = nullptr); void stopAnimator(const QString &property = nullptr);
int currentAnimatorTime(const QString &property = nullptr); int currentAnimatorTime(const QString &property = nullptr);
void setAnimatorCurrentTime(const QString &property, const int msecs);
int totalAnimationDuration(const QString &property); int totalAnimationDuration(const QString &property);
void setExtraProperty(const QString &property, const QVariant &value);
QVariant getExtraProperty(const QString &property);
private: private:
QWidget *m_widget = nullptr; QWidget *m_widget = nullptr;
QVariantAnimation *m_groove_width; QVariantAnimation *m_groove_width = nullptr;
QVariantAnimation *m_slider_opacity; QVariantAnimation *m_slider_opacity = nullptr;
QVariantAnimation *m_sunken_silder_additional_opacity; QVariantAnimation *m_hover_bg_width = nullptr;
QVariantAnimation *m_sunken_silder_additional_opacity = nullptr;
QVariantAnimation *m_silder_move_position = nullptr;
int m_endPosition = 0;
int m_startPosition = 0;
bool m_addValue = true;
}; };
} }

View File

@ -1,13 +0,0 @@
INCLUDEPATH += $$PWD
HEADERS += \
$$PWD/ukui-tabwidget-animator-iface.h \
$$PWD/ukui-tabwidget-animator-plugin-iface.h \
$$PWD/ukui-tabwidget-default-slide-animator-factory.h \
$$PWD/ukui-tabwidget-default-slide-animator.h
SOURCES += \
$$PWD/ukui-tabwidget-default-slide-animator-factory.cpp \
$$PWD/ukui-tabwidget-default-slide-animator.cpp
INCLUDEPATH += $$PWD/..

View File

@ -1,7 +1,7 @@
/* /*
* Qt5-UKUI's Library * Qt5-UKUI's Library
* *
* Copyright (C) 2020, Tianjin KYLIN Information Technology Co., Ltd. * Copyright (C) 2023, KylinSoft Co., Ltd.
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -24,7 +24,7 @@
#define UKUITABWIDGETANIMATORIFACE_H #define UKUITABWIDGETANIMATORIFACE_H
#include <QTabWidget> #include <QTabWidget>
#include "animator-iface.h" #include "../animator-iface.h"
/*! /*!
* \brief The UKUITabWidgetAnimatorIface class * \brief The UKUITabWidgetAnimatorIface class

View File

@ -1,7 +1,7 @@
/* /*
* Qt5-UKUI's Library * Qt5-UKUI's Library
* *
* Copyright (C) 2020, Tianjin KYLIN Information Technology Co., Ltd. * Copyright (C) 2023, KylinSoft Co., Ltd.
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -24,7 +24,7 @@
#define UKUITABWIDGETANIMATORPLUGINIFACE_H #define UKUITABWIDGETANIMATORPLUGINIFACE_H
#include <QString> #include <QString>
#include "animator-plugin-iface.h" #include "../animator-plugin-iface.h"
#include "ukui-tabwidget-animator-iface.h" #include "ukui-tabwidget-animator-iface.h"
#define UKUITabWidgetAnimatorPluginInterface_iid "org.ukui.style.animatons.TabWidgetPluginInterface" #define UKUITabWidgetAnimatorPluginInterface_iid "org.ukui.style.animatons.TabWidgetPluginInterface"

View File

@ -1,7 +1,7 @@
/* /*
* Qt5-UKUI's Library * Qt5-UKUI's Library
* *
* Copyright (C) 2020, Tianjin KYLIN Information Technology Co., Ltd. * Copyright (C) 2023, KylinSoft Co., Ltd.
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public

View File

@ -1,7 +1,7 @@
/* /*
* Qt5-UKUI's Library * Qt5-UKUI's Library
* *
* Copyright (C) 2020, Tianjin KYLIN Information Technology Co., Ltd. * Copyright (C) 2023, KylinSoft Co., Ltd.
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -45,6 +45,7 @@ class DefaultSlideAnimatorFactory : public QObject, public UKUITabWidgetAnimator
Q_OBJECT Q_OBJECT
public: public:
explicit DefaultSlideAnimatorFactory(QObject *parent = nullptr); explicit DefaultSlideAnimatorFactory(QObject *parent = nullptr);
~DefaultSlideAnimatorFactory(){}
const QString id() {return tr("Default Slide");} const QString id() {return tr("Default Slide");}
const QString brief() {return tr("Let tab widget switch with a slide animation.");} const QString brief() {return tr("Let tab widget switch with a slide animation.");}

View File

@ -1,7 +1,7 @@
/* /*
* Qt5-UKUI's Library * Qt5-UKUI's Library
* *
* Copyright (C) 2020, Tianjin KYLIN Information Technology Co., Ltd. * Copyright (C) 2023, KylinSoft Co., Ltd.
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -60,6 +60,23 @@ DefaultSlideAnimator::DefaultSlideAnimator(QObject *parent) : QVariantAnimation
setEndValue(1.0); setEndValue(1.0);
} }
DefaultSlideAnimator::~DefaultSlideAnimator()
{
// if(m_bound_widget){
// m_bound_widget->deleteLater();
// m_bound_widget = nullptr;
// }
// if(m_stack){
// m_stack->deleteLater();
// m_stack = nullptr;
// }
if(m_tmp_page){
m_tmp_page->deleteLater();
m_tmp_page = nullptr;
}
}
/*! /*!
* \brief DefaultSlideAnimator::bindTabWidget * \brief DefaultSlideAnimator::bindTabWidget
* \param w A QTabWidget instance, most passed in QStyle::polish(). * \param w A QTabWidget instance, most passed in QStyle::polish().
@ -106,6 +123,9 @@ bool DefaultSlideAnimator::bindTabWidget(QTabWidget *w)
connect(w, &QTabWidget::currentChanged, this, [=](int index){ connect(w, &QTabWidget::currentChanged, this, [=](int index){
this->stop(); this->stop();
m_tmp_page->hide(); m_tmp_page->hide();
if(!w->isVisible()){
return ;
}
if (m_bound_widget->currentWidget() && m_bound_widget->currentWidget() != previous_widget) { if (m_bound_widget->currentWidget() && m_bound_widget->currentWidget() != previous_widget) {
left_right = m_bound_widget->currentIndex() > pervIndex; left_right = m_bound_widget->currentIndex() > pervIndex;
pervIndex = m_bound_widget->currentIndex(); pervIndex = m_bound_widget->currentIndex();

View File

@ -1,7 +1,7 @@
/* /*
* Qt5-UKUI's Library * Qt5-UKUI's Library
* *
* Copyright (C) 2020, Tianjin KYLIN Information Technology Co., Ltd. * Copyright (C) 2023, KylinSoft Co., Ltd.
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -44,6 +44,7 @@ class DefaultSlideAnimator : public QVariantAnimation, public UKUITabWidgetAnima
Q_OBJECT Q_OBJECT
public: public:
explicit DefaultSlideAnimator(QObject *parent = nullptr); explicit DefaultSlideAnimator(QObject *parent = nullptr);
~DefaultSlideAnimator();
bool bindTabWidget(QTabWidget *w); bool bindTabWidget(QTabWidget *w);
bool unboundTabWidget(); bool unboundTabWidget();

View File

@ -1,8 +0,0 @@
INCLUDEPATH += $$PWD
INCLUDEPATH += $$PWD/..
HEADERS += \
$$PWD/highlight-effect.h
SOURCES += \
$$PWD/highlight-effect.cpp

View File

@ -1,7 +1,7 @@
/* /*
* Qt5-UKUI's Library * Qt5-UKUI's Library
* *
* Copyright (C) 2020, Tianjin KYLIN Information Technology Co., Ltd. * Copyright (C) 2023, KylinSoft Co., Ltd.
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -38,7 +38,7 @@
#define ColorDifference 10 #define ColorDifference 10
QColor HighLightEffect::symbolic_color = QColor(31, 32, 34, 192); QColor HighLightEffect::symbolic_color = QColor(38, 38, 38);
void HighLightEffect::setSkipEffect(QWidget *w, bool skip) void HighLightEffect::setSkipEffect(QWidget *w, bool skip)
{ {
@ -99,6 +99,33 @@ bool HighLightEffect::isPixmapPureColor(const QPixmap &pixmap)
} }
bool HighLightEffect::isSymbolicColor(const QPixmap &pixmap)
{
if (pixmap.isNull()) {
qWarning("pixmap is null!");
return false;
}
QImage image = pixmap.toImage();
bool pure = true;
for (int y = 0; y < image.height(); ++y) {
for (int x = 0; x < image.width(); ++x) {
if (image.pixelColor(x, y).alphaF() > 0.3) {
QColor color = image.pixelColor(x, y);
//default symbolic color (38, 38, 38)
int dr = qAbs(color.red() - symbolic_color.red());
int dg = qAbs(color.green() - symbolic_color.green());
int db = qAbs(color.blue() - symbolic_color.blue());
if (dr > ColorDifference || dg > ColorDifference || db > ColorDifference)
pure = false;
}
}
}
return pure;
}
bool HighLightEffect::setMenuIconHighlightEffect(QMenu *menu, HighLightMode hlmode, EffectMode mode) bool HighLightEffect::setMenuIconHighlightEffect(QMenu *menu, HighLightMode hlmode, EffectMode mode)
{ {
@ -288,6 +315,8 @@ QPixmap HighLightEffect::ordinaryGeneratePixmap(const QPixmap &pixmap, const QSt
return pixmap; return pixmap;
if (!isPixmapPureColor(pixmap) || !(option->state & QStyle::State_Enabled)) if (!isPixmapPureColor(pixmap) || !(option->state & QStyle::State_Enabled))
return pixmap; return pixmap;
if (!isSymbolicColor(pixmap))
return pixmap;
QPixmap target = pixmap; QPixmap target = pixmap;
QColor color; QColor color;
@ -312,6 +341,8 @@ QPixmap HighLightEffect::hoverGeneratePixmap(const QPixmap &pixmap, const QStyle
return pixmap; return pixmap;
if (!isPixmapPureColor(pixmap) || !(option->state & QStyle::State_Enabled)) if (!isPixmapPureColor(pixmap) || !(option->state & QStyle::State_Enabled))
return pixmap; return pixmap;
if (!isSymbolicColor(pixmap))
return pixmap;
QPixmap target = pixmap; QPixmap target = pixmap;
QColor color; QColor color;
@ -347,6 +378,8 @@ QPixmap HighLightEffect::bothOrdinaryAndHoverGeneratePixmap(const QPixmap &pixma
return pixmap; return pixmap;
if (!isPixmapPureColor(pixmap) || !(option->state & QStyle::State_Enabled)) if (!isPixmapPureColor(pixmap) || !(option->state & QStyle::State_Enabled))
return pixmap; return pixmap;
if (!isSymbolicColor(pixmap))
return pixmap;
QPixmap target = pixmap; QPixmap target = pixmap;
QColor defaultColor, hoverColor; QColor defaultColor, hoverColor;

View File

@ -1,7 +1,7 @@
/* /*
* Qt5-UKUI's Library * Qt5-UKUI's Library
* *
* Copyright (C) 2020, Tianjin KYLIN Information Technology Co., Ltd. * Copyright (C) 2023, KylinSoft Co., Ltd.
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -61,6 +61,7 @@ public:
static QColor symbolic_color; static QColor symbolic_color;
static void setSkipEffect(QWidget *w, bool skip = true); static void setSkipEffect(QWidget *w, bool skip = true);
static bool isPixmapPureColor(const QPixmap &pixmap); static bool isPixmapPureColor(const QPixmap &pixmap);
static bool isSymbolicColor(const QPixmap &pixmap);
static bool setMenuIconHighlightEffect(QMenu *menu, HighLightMode hlmode = skipHighlight, EffectMode mode = HighlightOnly); static bool setMenuIconHighlightEffect(QMenu *menu, HighLightMode hlmode = skipHighlight, EffectMode mode = HighlightOnly);
static bool setViewItemIconHighlightEffect(QAbstractItemView *view, HighLightMode hlmode = skipHighlight, EffectMode mode = HighlightOnly); static bool setViewItemIconHighlightEffect(QAbstractItemView *view, HighLightMode hlmode = skipHighlight, EffectMode mode = HighlightOnly);
static HighLightMode isWidgetIconUseHighlightEffect(const QWidget *w); static HighLightMode isWidgetIconUseHighlightEffect(const QWidget *w);

View File

@ -1,10 +0,0 @@
INCLUDEPATH += $$PWD
INCLUDEPATH += $$PWD/..
HEADERS += \
$$PWD/ukui-two-finger-slide-gesture.h \
$$PWD/ukui-two-finger-zoom-gesture.h
SOURCES += \
$$PWD/ukui-two-finger-slide-gesture.cpp \
$$PWD/ukui-two-finger-zoom-gesture.cpp

View File

@ -1,7 +1,7 @@
/* /*
* Qt5-UKUI's Library * Qt5-UKUI's Library
* *
* Copyright (C) 2020, Tianjin KYLIN Information Technology Co., Ltd. * Copyright (C) 2023, KylinSoft Co., Ltd.
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public

View File

@ -1,7 +1,7 @@
/* /*
* Qt5-UKUI's Library * Qt5-UKUI's Library
* *
* Copyright (C) 2020, Tianjin KYLIN Information Technology Co., Ltd. * Copyright (C) 2023, KylinSoft Co., Ltd.
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -40,6 +40,7 @@ public:
}; };
explicit TwoFingerSlideGesture(QObject *parent = nullptr); explicit TwoFingerSlideGesture(QObject *parent = nullptr);
~TwoFingerSlideGesture(){}
Direction direction() {return m_direction;} Direction direction() {return m_direction;}
const QPoint startPos() {return m_start_pos;} const QPoint startPos() {return m_start_pos;}

View File

@ -1,7 +1,7 @@
/* /*
* Qt5-UKUI's Library * Qt5-UKUI's Library
* *
* Copyright (C) 2020, Tianjin KYLIN Information Technology Co., Ltd. * Copyright (C) 2023, KylinSoft Co., Ltd.
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public

View File

@ -1,7 +1,7 @@
/* /*
* Qt5-UKUI's Library * Qt5-UKUI's Library
* *
* Copyright (C) 2020, Tianjin KYLIN Information Technology Co., Ltd. * Copyright (C) 2023, KylinSoft Co., Ltd.
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -43,6 +43,7 @@ public:
}; };
explicit TwoFingerZoomGesture(QObject *parent = nullptr); explicit TwoFingerZoomGesture(QObject *parent = nullptr);
~TwoFingerZoomGesture(){}
Direction zoomDirection() {return m_zoom_direction;} Direction zoomDirection() {return m_zoom_direction;}
QPair<QPoint, QPoint> startPoints() {return m_start_points;} QPair<QPoint, QPoint> startPoints() {return m_start_points;}
@ -64,6 +65,7 @@ class TwoFingerZoomGestureRecognizer : public QGestureRecognizer
{ {
public: public:
explicit TwoFingerZoomGestureRecognizer(); explicit TwoFingerZoomGestureRecognizer();
~TwoFingerZoomGestureRecognizer(){}
QGesture *create(QObject *target) override; QGesture *create(QObject *target) override;
QGestureRecognizer::Result recognize(QGesture *gesture, QObject *watched, QEvent *event) override; QGestureRecognizer::Result recognize(QGesture *gesture, QObject *watched, QEvent *event) override;

View File

@ -1,7 +1,7 @@
/* /*
* Qt5-UKUI's Library * Qt5-UKUI's Library
* *
* Copyright (C) 2020, Tianjin KYLIN Information Technology Co., Ltd. * Copyright (C) 2023, KylinSoft Co., Ltd.
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public

View File

@ -1,7 +1,7 @@
/* /*
* Qt5-UKUI's Library * Qt5-UKUI's Library
* *
* Copyright (C) 2020, Tianjin KYLIN Information Technology Co., Ltd. * Copyright (C) 2023, KylinSoft Co., Ltd.
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public

View File

@ -1,8 +0,0 @@
INCLUDEPATH += $$PWD
INCLUDEPATH += $$PWD/..
SOURCES += $$PWD/internal-style.cpp \
$$PWD/mps-style.cpp
HEADERS += $$PWD/internal-style.h \
$$PWD/mps-style.h

View File

@ -1,7 +1,7 @@
/* /*
* Qt5-UKUI's Library * Qt5-UKUI's Library
* *
* Copyright (C) 2020, Tianjin KYLIN Information Technology Co., Ltd. * Copyright (C) 2023, KylinSoft Co., Ltd.
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public

View File

@ -1,7 +1,7 @@
/* /*
* Qt5-UKUI's Library * Qt5-UKUI's Library
* *
* Copyright (C) 2020, Tianjin KYLIN Information Technology Co., Ltd. * Copyright (C) 2023, KylinSoft Co., Ltd.
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public

View File

@ -1,7 +0,0 @@
INCLUDEPATH += $$PWD
include(animations/animations.pri)
include(settings/settings.pri)
include(internal-styles/internal-styles.pri)
include(effects/effects.pri)
include(gestures/gestures.pri)

View File

@ -1,46 +0,0 @@
#-------------------------------------------------
#
# Project created by QtCreator 2020-01-02T12:00:35
#
#-------------------------------------------------
QT += widgets concurrent
TARGET = qt5-ukui-style
TEMPLATE = lib
DEFINES += LIBQT5UKUISTYLE_LIBRARY
# The following define makes your compiler emit warnings if you use
# any feature of Qt which has been marked as deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS
#DEFINES += QT_NO_DEBUG_OUTPUT
DEFINES += QT_MESSAGELOGCONTEXT
# You can also make your code fail to compile if you use deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
include(libqt5-ukui-style.pri)
CONFIG += c++11 link_pkgconfig
PKGCONFIG += gsettings-qt
DISTFILES += \
org.ukui.style.gschema.xml
unix {
target.path = $$[QT_INSTALL_LIBS]
INSTALLS += target
gschema.path = /usr/share/glib-2.0/schemas
gschema.files += $$PWD/settings/org.ukui.style.gschema.xml
INSTALLS += gschema
pkgconfig.path = $$[QT_INSTALL_LIBS]/pkgconfig
pkgconfig.files += development-files/qt5-ukui.pc
INSTALLS += pkgconfig
}

View File

@ -1,7 +1,7 @@
/* /*
* Qt5-UKUI's Library * Qt5-UKUI's Library
* *
* Copyright (C) 2020, Tianjin KYLIN Information Technology Co., Ltd. * Copyright (C) 2023, KylinSoft Co., Ltd.
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public

View File

@ -1,7 +1,7 @@
/* /*
* Qt5-UKUI's Library * Qt5-UKUI's Library
* *
* Copyright (C) 2020, Tianjin KYLIN Information Technology Co., Ltd. * Copyright (C) 2023, KylinSoft Co., Ltd.
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public

View File

@ -1,7 +1,7 @@
/* /*
* Qt5-UKUI's Library * Qt5-UKUI's Library
* *
* Copyright (C) 2020, Tianjin KYLIN Information Technology Co., Ltd. * Copyright (C) 2023, KylinSoft Co., Ltd.
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -28,6 +28,7 @@
static const QStringList blackAppList() { static const QStringList blackAppList() {
QStringList l; QStringList l;
//l<<"ukui-control-center"; //l<<"ukui-control-center";
l<<"kylin-software-center.py";
l<<"ubuntu-kylin-software-center.py"; l<<"ubuntu-kylin-software-center.py";
// l<<"kylin-burner"; // l<<"kylin-burner";
l<<"assistant"; l<<"assistant";
@ -43,8 +44,8 @@ static const QStringList blackAppList() {
static const QStringList blackAppListWithBlurHelper() { static const QStringList blackAppListWithBlurHelper() {
QStringList l; QStringList l;
l<<"youker-assistant"; l<<"youker-assistant";
l<<"kylin-assistant"; // l<<"kylin-assistant";
l<<"kylin-video"; // l<<"kylin-video";
// l<<"ukui-control-center"; // l<<"ukui-control-center";
l<<"ubuntu-kylin-software-center.py"; l<<"ubuntu-kylin-software-center.py";
// l<<"kylin-burner"; // l<<"kylin-burner";
@ -59,8 +60,12 @@ static const QStringList useDarkPaletteList() {
// l<<"ukui-panel"; // l<<"ukui-panel";
// l<<"ukui-sidebar"; // l<<"ukui-sidebar";
// l<<"ukui-volume-control-applet-qt"; // l<<"ukui-volume-control-applet-qt";
// l<<"kylin-nm"; //网络
// l<<"panelukui-panel"; //日历
// l<<"ukui-power-manager-tray"; // l<<"ukui-power-manager-tray";
// l<<"kylin-nm"; //// l<<"ukui-bluetooth";
// l<<"sogouimebs"; //输入法
// l<<"kylin-device-daemon"; //U盘
l<<"ukui-flash-disk"; l<<"ukui-flash-disk";
// l<<"ukui-bluetooth"; // l<<"ukui-bluetooth";
l<<"mktip"; l<<"mktip";
@ -82,14 +87,39 @@ static const QStringList useDefaultPaletteList() {
static const QStringList useTransparentButtonList() { static const QStringList useTransparentButtonList() {
//use transparent button //use transparent button
QStringList l; QStringList l;
l<<"kybackup"; // l<<"kybackup";
l<<"biometric-manager"; // l<<"biometric-manager";
l<<"kylin-video"; l<<"kylin-video";
l<<"kylin-ipmsg"; l<<"kylin-ipmsg";
l<<"kylin-weather"; l<<"kylin-weather";
l<<"kylin-recorder"; l<<"ukui-notebook";
// l<<"kylin-recorder";
return l; return l;
} }
static const QStringList focusStateActiveList() {
//focus state style
QStringList l;
l<<"ukui-menu";
l<<"platformthemeDemo";
l<<"ukui-greeter-dialog";
l<<"ukui-screensaver";
return l;
}
static const QStringList windowManageBlackList() {
QStringList l;
l << "iflyime-spe-sym";
l << "iflyime-qimpanel";
l << "iflyime-setw";
l << "iflyime-sett";
l << "iflyime-qim";
l << "iflyime-hw";
l << "SpecificSymbol";
return l;
}
#endif // BLACKLIST_H #endif // BLACKLIST_H

View File

@ -1,7 +1,7 @@
/* /*
* Qt5-UKUI's Library * Qt5-UKUI's Library
* *
* Copyright (C) 2020, Tianjin KYLIN Information Technology Co., Ltd. * Copyright (C) 2023, KylinSoft Co., Ltd.
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public

View File

@ -60,17 +60,11 @@
<summary>System Palette</summary> <summary>System Palette</summary>
<description>Set default system palette for UKUI desktop environment.</description> <description>Set default system palette for UKUI desktop environment.</description>
</key> </key>
<key type="b" name="use-custom-highlight-color">
<default>false</default>
<summary>Use custom highlight color.</summary>
<description>
Globally enable or disable custom highlight color.
</description>
</key>
<key type="s" name="theme-color"> <key type="s" name="theme-color">
<default>"daybreakBlue"</default> <default>"#3790FA"</default>
<summary> theme color</summary> <summary> theme color</summary>
<description>Set theme color for UKUI desktop environment.include default,daybreakBlue,jamPurple,magenta,sunRed,sunsetOrange,dustGold,polarGreen</description> <description>Set theme color for UKUI desktop environment.include default,daybreakBlue,jamPurple,magenta,sunRed,sunsetOrange,dustGold,polarGreen,
and using rgba for example "(125,125,125) or #3790FA" </description>
</key> </key>
<key type="b" name="cursor-blink"> <key type="b" name="cursor-blink">
<default>true</default> <default>true</default>
@ -84,5 +78,21 @@
<summary>Blink text cursor interval.</summary> <summary>Blink text cursor interval.</summary>
<description>The interval of text cursor blink.</description> <description>The interval of text cursor blink.</description>
</key> </key>
<key type="b" name="use-custom-highlight-color">
<default>false</default>
<summary>Use custom highlight color.</summary>
<description>Globally enable or disable custom highlight color.Now is to compatible with third party application</description>
</key>
<key type="s" name="custom-highlight-color">
<default>"#3D6BE5"</default>
<summary>Custom highlight color</summary>
<description>Set custom highlight color for UKUI desktop environment.Now is to compatible with third party application</description>
</key>
<key type="i" name="window-radius">
<default>12</default>
<range min="0" max="12"/>
<summary>Window Radius</summary>
<description>Set the rounded corner size of the window</description>
</key>
</schema> </schema>
</schemalist> </schemalist>

View File

@ -0,0 +1,94 @@
style:
4.3.1.2:
keys:
blur-exception-classes:
_type: s
default: '[]'
description: 'Example: [QWidget, QWidget1, QWidget2]'
summary: a list of QWidget based classes do not blur.
cursor-blink:
_type: b
default: 'true'
description: Globally enable or disable blinking text cursor.
summary: Blink text cursor.
cursor-blink-time:
_type: i
default: '1200'
description: The interval of text cursor blink.
summary: Blink text cursor interval.
custom-highlight-color:
_type: s
default: '#3D6BE5'
description: Set custom highlight color for UKUI desktop environment.Now is
to compatible with third party application
summary: Custom highlight color
enabled-global-blur:
_type: b
default: 'true'
description: "Globally enable or disable the window blur effects for transparent\
\ window.\n Setting it to \"false\" will disable the effects."
summary: Enable Window Blur Effects.
icon-theme-name:
_type: s
default: ukui-icon-theme-default
description: Icon Theme for Qt Applications.Have ukui ukui-classical ukui-fashion
summary: Icon Theme for Qt Applications.
menu-transparency:
_type: i
default: '72'
description: The default transparency of menu.
summary: Menu's transparency.
peony-side-bar-transparency:
_type: i
default: '72'
description: The default transparency of the peony side bar.
summary: Peony::SideBar's transparency.
style-name:
_type: s
default: ukui-light
description: Set style for UKUI desktop environment. Have ukui-dark ukui-default
ukui-light
summary: Current Qt Style
system-font:
_type: s
default: Noto Sans CJK SC
description: System Font for Qt Applications.
summary: System Font for Qt Applications.
system-font-size:
_type: s
default: '11'
description: System Font Size for Qt Applications. Use point size.
summary: System Font Size for Qt Applications.
system-palette:
_type: s
default: ''
description: Set default system palette for UKUI desktop environment.
summary: System Palette
theme-color:
_type: s
default: '#3790FA'
description: "Set theme color for UKUI desktop environment.include default,daybreakBlue,jamPurple,magenta,sunRed,sunsetOrange,dustGold,polarGreen,\n\
\ and using rgba for example \"(125,125,125) or #3790FA"
summary: theme color
use-custom-highlight-color:
_type: b
default: 'false'
description: Globally enable or disable custom highlight color.Now is to compatible
with third party application
summary: Use custom highlight color.
use-system-palette:
_type: b
default: 'false'
description: Globally enable or disable system palette provided by ukui platform.
summary: Use system palette.
widget-theme-name:
_type: s
default: default
description: Set system theme. Have default,classical and fashion
summary: Current widget theme name
window-radius:
_type: i
default: '12'
description: Set the rounded corner size of the window
range: 0,12
summary: Window Radius

View File

@ -1,9 +0,0 @@
HEADERS += $$PWD/libqt5-ukui-style_global.h \
$$PWD/ukui-style-settings.h \
$$PWD/application-style-settings.h
SOURCES += $$PWD/ukui-style-settings.cpp \
$$PWD/application-style-settings.cpp
INCLUDEPATH += $$PWD/..
INCLUDEPATH += $$PWD

View File

@ -0,0 +1,231 @@
/*
* Qt5-UKUI's Library
*
* Copyright (C) 2023, KylinSoft Co., Ltd.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 3 of the License, or (at your option) any later version.
*
* This library 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this library. If not, see <https://www.gnu.org/licenses/>.
*
* Authors: xibowen <xibowen@kylinos.cn>
*
*/
#include "ukui-style-conf-settings.h"
#include "libkysettings.h"
#include <glib.h>
#include <QDebug>
//char to QString
QString qtify_name(const char *name)
{
bool next_cap = false;
QString result;
while (*name) {
if (*name == '-') {
next_cap = true;
} else if (next_cap) {
result.append(QChar(*name).toUpper().toLatin1());
next_cap = false;
} else {
result.append(*name);
}
name++;
}
return result;
}
//QString to char
char * unqtify_name(const QString &name)
{
const char *p;
QByteArray bytes;
GString *str;
bytes = name.toUtf8();
str = g_string_new (NULL);
for (p = bytes.constData(); *p; p++) {
const QChar c(*p);
if (c.isUpper()) {
g_string_append_c (str, '-');
g_string_append_c (str, c.toLower().toLatin1());
}
else {
g_string_append_c (str, *p);
}
}
return g_string_free(str, FALSE);
}
static void settingChanged(KSettings *ukuistyle_settings, const char *key, void *user_data)
{
ukuiStyleConfSettings *self = (ukuiStyleConfSettings *)user_data;
QMetaObject::invokeMethod(self, "changed", Qt::QueuedConnection, Q_ARG(QString, qtify_name(key)));
}
ukuiStyleConfSettings::ukuiStyleConfSettings(const QByteArray &schema_id)
{
if (!ukuistyle_settings)
ukuistyle_settings = kdk_conf2_new(schema_id, NULL);
signal_handler_id = kdk_conf2_connect_signal(ukuistyle_settings, "changed",
(KCallBack)settingChanged, this);
}
ukuiStyleConfSettings::~ukuiStyleConfSettings()
{
if (ukuistyle_settings) {
kdk_conf2_ksettings_destroy(ukuistyle_settings);
ukuistyle_settings = NULL;
}
}
QVariant ukuiStyleConfSettings::types_to_qvariant(const char *key,const char* value) const
{
char *type = kdk_conf2_get_type(this->ukuistyle_settings, key);
switch (*type) {
case VARIANT_CLASS_BOOLEAN:
return QVariant(value);
case VARIANT_CLASS_BYTE:
return QVariant(QString(value));
case VARIANT_CLASS_INT16:
return QVariant(QString(value).toShort());
case VARIANT_CLASS_UINT16:
return QVariant(QString(value).toUShort());
case VARIANT_CLASS_INT32:
return QVariant(QString(value).toInt());
case VARIANT_CLASS_UINT32:
return QVariant(QString(value).toUInt());
case VARIANT_CLASS_INT64:
return QVariant(QString(value).toLongLong());
case VARIANT_CLASS_UINT64:
return QVariant(QString(value).toULongLong());
case VARIANT_CLASS_DOUBLE:
return QVariant(QString(value).toDouble());
case VARIANT_CLASS_STRING:
return QVariant(QString(value));
case VARIANT_CLASS_ARRAY:
// if (g_variant_is_of_type(value, G_VARIANT_TYPE_STRING_ARRAY)) {
// GVariantIter iter;
// QStringList list;
// const gchar *str;
// g_variant_iter_init (&iter, value);
// while (g_variant_iter_next (&iter, "&s", &str))
// list.append (str);
// return QVariant(list);
// } else if (g_variant_is_of_type(value, G_VARIANT_TYPE_BYTESTRING)) {
// return QVariant(QByteArray(g_variant_get_bytestring(value)));
// } else if (g_variant_is_of_type(value, G_VARIANT_TYPE("a{ss}"))) {
// GVariantIter iter;
// QMap<QString, QVariant> map;
// const gchar *key;
// const gchar *val;
// g_variant_iter_init (&iter, value);
// while (g_variant_iter_next (&iter, "{&s&s}", &key, &val))
// map.insert(key, QVariant(val));
// return map;
// }
// fall through
default:
g_assert_not_reached();
}
}
QVariant ukuiStyleConfSettings::get(const QString &key) const
{
char *ckey = unqtify_name(key);
char *value = kdk_conf2_get_value(ukuistyle_settings, ckey);
QVariant qvalue = types_to_qvariant(ckey, value);
g_free(value);
g_free(ckey);
return qvalue;
}
void ukuiStyleConfSettings::set(const QString &key, const QVariant &value)
{
if (!this->trySet(key, value))
qWarning("unable to set key '%s' to value '%s'", key.toUtf8().constData(), value.toString().toUtf8().constData());
}
bool ukuiStyleConfSettings::trySet(const QString &key, const QVariant &value)
{
if (!ukuistyle_settings)
return false;
char *ckey = unqtify_name(key);
char *cvalue = unqtify_name(value.value<QString>());
bool success = false;
success = kdk_conf2_set_value(ukuistyle_settings, ckey, cvalue);
g_free(ckey);
g_free(cvalue);
return success;
}
QStringList ukuiStyleConfSettings::keys() const
{
QStringList list;
char **keys = kdk_conf2_list_keys(ukuistyle_settings);
for (int i = 0; keys[i]; i++)
list.append(qtify_name(keys[i]));
g_strfreev(keys);
return list;
}
void ukuiStyleConfSettings::reset(const QString &qkey)
{
if (!ukuistyle_settings)
return;
char *key = unqtify_name(qkey);
kdk_conf2_reset(ukuistyle_settings, key);
g_free(key);
}
bool ukuiStyleConfSettings::isSettingsAvailable(const QString &schema_id)
{
char *schema = unqtify_name(schema_id);
bool result = false;
if (kdk_conf2_new(schema, NULL)) {
result = true;
}
g_free(schema);
return result;
}

View File

@ -0,0 +1,87 @@
/*
* Qt5-UKUI's Library
*
* Copyright (C) 2023, KylinSoft Co., Ltd.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 3 of the License, or (at your option) any later version.
*
* This library 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this library. If not, see <https://www.gnu.org/licenses/>.
*
* Authors: xibowen <xibowen@kylinos.cn>
*
*/
#ifndef UKUISTYLECONFSETTINGS_H
#define UKUISTYLECONFSETTINGS_H
#include <QObject>
#include <QVariant>
typedef struct _KSettings KSettings;
class ukuiStyleConfSettings : public QObject
{
Q_OBJECT
public:
enum VariantClass {
VARIANT_CLASS_BOOLEAN = 'b',
VARIANT_CLASS_BYTE = 'y',
VARIANT_CLASS_INT16 = 'n',
VARIANT_CLASS_UINT16 = 'q',
VARIANT_CLASS_INT32 = 'i',
VARIANT_CLASS_UINT32 = 'u',
VARIANT_CLASS_INT64 = 'x',
VARIANT_CLASS_UINT64 = 't',
VARIANT_CLASS_HANDLE = 'h',
VARIANT_CLASS_DOUBLE = 'd',
VARIANT_CLASS_STRING = 's',
VARIANT_CLASS_OBJECT_PATH = 'o',
VARIANT_CLASS_SIGNATURE = 'g',
VARIANT_CLASS_VARIANT = 'v',
VARIANT_CLASS_MAYBE = 'm',
VARIANT_CLASS_ARRAY = 'a',
VARIANT_CLASS_TUPLE = '(',
VARIANT_CLASS_DICT_ENTRY = '{'
};
ukuiStyleConfSettings(const QByteArray &schema_id);
~ukuiStyleConfSettings();
QVariant types_to_qvariant(const char *key, const char *value) const;
static ukuiStyleConfSettings *globalInstance();
QVariant get(const QString &key) const;
void set(const QString &key, const QVariant &value);
bool trySet(const QString &key, const QVariant &value);
QStringList keys() const;
void reset(const QString &key);
static bool isSettingsAvailable(const QString &schema_id);
Q_SIGNALS:
void changed(const QString &key);
private:
KSettings *ukuistyle_settings = NULL;
long signal_handler_id;
};
#endif // UKUISTYLECONFSETTINGS_H

View File

@ -1,7 +1,7 @@
/* /*
* Qt5-UKUI's Library * Qt5-UKUI's Library
* *
* Copyright (C) 2020, Tianjin KYLIN Information Technology Co., Ltd. * Copyright (C) 2023, KylinSoft Co., Ltd.
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public

View File

@ -1,7 +1,7 @@
/* /*
* Qt5-UKUI's Library * Qt5-UKUI's Library
* *
* Copyright (C) 2020, Tianjin KYLIN Information Technology Co., Ltd. * Copyright (C) 2023, KylinSoft Co., Ltd.
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -26,6 +26,9 @@
#include "libqt5-ukui-style_global.h" #include "libqt5-ukui-style_global.h"
#include <QGSettings> #include <QGSettings>
//Fix me:after so
//#include "ukui-style-conf-settings.h"
/*! /*!
* \brief The UKUIStyleSettings class * \brief The UKUIStyleSettings class
* \details * \details

View File

@ -0,0 +1,279 @@
cmake_minimum_required(VERSION 3.16)
project(qt5-ukui-filedialog)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(QT_MIN_VERSION "5.12.0")
set(KF5_MIN_VERSION "5.66.0")
# QtCreator supports the following variables for Android, which are identical to qmake Android variables.
# Check http://doc.qt.io/qt-5/deployment-android.html for more information.
# They need to be set before the find_package(Qt5 ...) call.
#if(ANDROID)
# set(ANDROID_PACKAGE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/android")
# if (ANDROID_ABI STREQUAL "armeabi-v7a")
# set(ANDROID_EXTRA_LIBS
# ${CMAKE_CURRENT_SOURCE_DIR}/path/to/libcrypto.so
# ${CMAKE_CURRENT_SOURCE_DIR}/path/to/libssl.so)
# endif()
#endif()
find_package(Qt5Gui)
message(${imported_location})
set(LIB_PATH ${imported_location})
get_filename_component(PARENT_PATH "${LIB_PATH}" PATH)
get_filename_component(PARENT_PATH "${PARENT_PATH}" PATH)
message("qt5-ukui-filedialog PARENT_PATH: ${PARENT_PATH}")
set(TARGET_PATH ${PARENT_PATH})
find_package(Qt5 ${QT_MIN_VERSION} CONFIG REQUIRED COMPONENTS
DBus
Widgets
X11Extras
)
include_directories(${Qt5Widgets_PRIVATE_INCLUDE_DIRS})
include_directories(${Qt5Gui_PRIVATE_INCLUDE_DIRS})
find_package(Qt5LinguistTools)
find_package(KF5WindowSystem ${KF5_MIN_VERSION} CONFIG REQUIRED COMPONENTS)
find_package(KF5Wayland CONFIG REQUIRED COMPONENTS)
find_package(X11)
find_package(PkgConfig)
pkg_check_modules(QGSETTINGS REQUIRED gsettings-qt)
pkg_check_modules(PEONY REQUIRED peony)
pkg_check_modules(REQUIRED kysdk-waylandhelper)
pkg_check_modules(GLIB2 REQUIRED glib-2.0 gio-2.0 )
pkg_check_modules(KYSDKWAYLANDHELPER REQUIRED kysdk-waylandhelper)
pkg_check_modules(KYSDKCONF2 REQUIRED kysdk-conf2)
include_directories(${QGSETTINGS_INCLUDE_DIRS})
include_directories(${GLIB2_INCLUDE_DIRS})
if (PEONY_FOUND)
include_directories(${PEONY_INCLUDE_DIRS})
link_directories(${PEONY_LIBRARY_DIRS})
endif()
if (KYSDKWAYLANDHELPER_FOUND)
include_directories(${KYSDKWAYLANDHELPER_INCLUDE_DIRS})
link_directories(${KYSDKWAYLANDHELPER_LIBRARY_DIRS})
endif()
if (QGSETTINGS_FOUND)
include_directories(${QGSETTINGS_INCLUDE_DIRS})
link_directories(${QGSETTINGS_LIBRARY_DIRS})
endif()
if (KYSDKCONF2_FOUND)
include_directories(${KYSDKCONF2_INCLUDE_DIRS})
link_directories(${KYSDKCONF2_LIBRARY_DIRS})
endif()
include_directories(../libqt5-ukui-style/)
file(GLOB_RECURSE TS_FILES
translations/qt5-ukui-filedialog_zh_HK.ts
translations/qt5-ukui-filedialog_zh_Hant.ts
translations/qt5-ukui-filedialog_zh_Hans.ts
translations/qt5-ukui-filedialog_zh_CN.ts
translations/qt5-ukui-filedialog_ug.ts
translations/qt5-ukui-filedialog_tr.ts
translations/qt5-ukui-filedialog_mn.ts
translations/qt5-ukui-filedialog_ky.ts
translations/qt5-ukui-filedialog_kk.ts
translations/qt5-ukui-filedialog_fr.ts
translations/qt5-ukui-filedialog_fa.ts
translations/qt5-ukui-filedialog_es.ts
translations/qt5-ukui-filedialog_en_US.ts
translations/qt5-ukui-filedialog_de.ts
translations/qt5-ukui-filedialog_cs.ts
translations/qt5-ukui-filedialog_bo_CN.ts
)
set(Sources
sidebar.cpp
kyfiledialogprivate.cpp
kyfiledialog.cpp
uikyfiledialog.cpp
pathbar.cpp
menutoolbutoon.cpp
filedialogplugin.cpp
sidebar.h
kyfiledialogprivate.h
uikyfiledialog.h
pathbar.h
menutoolbutoon.h
kyfiledialog.h
filedialogplugin.h
filedialogplugin_global.h
filedialoginterface.h
debug.h
)
set(Json
filedialogplugin.json)
# i18n
set(UKUI_TRANSLATIONS_DIR "/usr/share/qt5-ukui-platformtheme")
add_definitions(
-DUKUI_TRANSLATIONS_DIR="${UKUI_TRANSLATIONS_DIR}"
)
if (NOT DEFINED UPDATE_TRANSLATIONS)
set(UPDATE_TRANSLATIONS "No")
endif()
# To create a new ts file: lupdate -recursive . -target-language en_US -ts translations/en_US.ts -no-ui-lines
#file(GLOB TS_FILES "${CMAKE_CURRENT_SOURCE_DIR}/translations/*.ts")
source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${TS_FILES})
# cmake -DUPDATE_TRANSLATIONS=yes
if (UPDATE_TRANSLATIONS)
qt5_create_translation(QM_FILES ${CMAKE_SOURCE_DIR} ${TS_FILES})
else()
qt5_add_translation(QM_FILES ${TS_FILES})
endif()
MESSAGE("QM_FILES PATH: ${QM_FILES}")
add_custom_target(translations ALL DEPENDS ${QM_FILES})
add_library(qt5-ukui-filedialog MODULE ${Sources} ${Json} ${TS_FILES})
target_link_libraries(qt5-ukui-filedialog
Qt5::Widgets
Qt5::DBus
Qt5::Gui
Qt5::X11Extras
KF5::WaylandClient
KF5::WindowSystem
${QGSETTINGS_LIBRARIES}
${KYSDKWAYLANDHELPER_LIBRARIES}
xcb
glib-2.0
${PEONY_LIBRARIES}
${XCB_LIBS}
qt5-ukui-style
${KYSDKCONF2_LIBRARIES}
)
add_definitions(-DQT5UKUIPLATFORMTHEME_LIBRARY)
add_definitions(-DQT_DEPRECATED_WARNINGS)
add_definitions(-DQT_MESSAGELOGCONTEXT)
if(UNIX)
MESSAGE("libqt5-ukui-filedialog TARGET_PATH: ${TARGET_PATH}")
install(TARGETS ${PROJECT_NAME} DESTINATION ${TARGET_PATH}/platformthemes/)
install(FILES ${QM_FILES} DESTINATION "${UKUI_TRANSLATIONS_DIR}")
endif()
set(test_libs
Qt5::Widgets
glib-2.0
peony
)
SET(_code "
#include <glib-object.h>
#include <peony-qt/search-vfs-uri-parser.h>
int main()
{
Peony::SearchVFSUriParser::addSearchKey(\"\", true);
return 0;
}")
SET(_file ${CMAKE_CURRENT_BINARY_DIR}/DetermineHavePeonyInterface.cpp)
FILE(WRITE "${_file}" "${_code}")
TRY_COMPILE(HAVE_PEONY_INTERFACE
"${CMAKE_CURRENT_BINARY_DIR}"
"${_file}"
LINK_LIBRARIES ${test_libs}
CMAKE_FLAGS "-DINCLUDE_DIRECTORIES=${GLIB2_INCLUDE_DIRS} ${PEONY_INCLUDE_DIRS}"
OUTPUT_VARIABLE OUTPUT)
MESSAGE("Build output: ${OUTPUT} HAVE_PEONY_INTERFACE: ${HAVE_PEONY_INTERFACE}")
if(HAVE_PEONY_INTERFACE)
add_definitions(-DHAVE_PEONY_INTERFACE=1)
endif()
#set(OPEN_ACTIONS_SEPARATOR "open-actions-seperator")
#set(CREATE_ACTIONS_SEPARATOR "create-actions-seperator")
#set(VIEW_ACTIONS_SEPARATOR "view-actions-seperator")
#set(FILE_OPERATION_ACTIONS_SEPARATOR "file-operation-actions-seperator")
#set(PLUGIN_ACTIONS_SEPARATOR "plugin-actions-seperator")
#set(PROPERTIES_ACTIONS_SEPARATOR "properties-actions-seperator")
#set(COMPUTER_ACTIONS_SEPARATOR "computer-actions-seperator")
#set(TRASH_ACTIONS_SEPARATOR "trash-actions-seperator")
#set(OPEN_IN_NEW_WINDOW_ACTION "open-in-new-window-action")
#set(OPEN_IN_NEW_TAB_ACTION "open-in-new-tab-action")
#set(ADD_TO_BOOKMARK_ACTION "add-to-bookmark-action")
#set(OPEN_ACTION "open-action")
#set(OPEN_WITH_ACTION "open-with-action")
#set(OPEN_SELECTED_FILES_ACTION "open-selected-files-action")
#set(CREATE_ACTION "create-action")
#set(VIEW_TYPE_ACTION "view-type-action")
#set(SORT_TYPE_ACTION "sort-type-action")
#set(SORT_ORDER_ACTION "sort-order-action")
#set(SORT_PREFERENCES_ACTION "sort-preferences-action")
#set(COPY_ACTION "copy-action")
#set(CUT_ACTION "cut-action")
#set(TRASH_ACTION "trash-action")
#set(DELETE_ACTION "delete-action")
#set(RENAME_ACTION "rename-action")
#set(PASTE_ACTION "paste-action")
#set(REFRESH_ACTION "refresh-action")
#set(SELECT_ALL_ACTION "select-all-action")
#set(REVERSE_SELECT_ACTION "reverse-select-action")
#set(PROPERTIES_ACTION "properties-action")
#set(FORMAT_ACTION "format-action")
#set(CLEAN_THE_TRASH_ACTION "clean-the-trash-action")
#set(RESTORE_ACTION "restore-action")
#set(CLEAN_THE_RECENT_ACTION "clean-the-recent-action")
#add_compile_definitions(OPEN_ACTIONS_SEPARATOR=${OPEN_ACTIONS_SEPARATOR})
#add_compile_definitions(CREATE_ACTIONS_SEPARATOR=${CREATE_ACTIONS_SEPARATOR})
#add_compile_definitions(VIEW_ACTIONS_SEPARATOR=${VIEW_ACTIONS_SEPARATOR})
#add_compile_definitions(FILE_OPERATION_ACTIONS_SEPARATOR=${FILE_OPERATION_ACTIONS_SEPARATOR})
#add_compile_definitions(PLUGIN_ACTIONS_SEPARATOR=${PLUGIN_ACTIONS_SEPARATOR})
#add_compile_definitions(PROPERTIES_ACTIONS_SEPARATOR=${PROPERTIES_ACTIONS_SEPARATOR})
#add_compile_definitions(COMPUTER_ACTIONS_SEPARATOR=${COMPUTER_ACTIONS_SEPARATOR})
#add_compile_definitions(TRASH_ACTIONS_SEPARATOR=${TRASH_ACTIONS_SEPARATOR})
#add_compile_definitions(OPEN_IN_NEW_WINDOW_ACTION=${OPEN_IN_NEW_WINDOW_ACTION})
#add_compile_definitions(OPEN_IN_NEW_TAB_ACTION=${OPEN_IN_NEW_TAB_ACTION})
#add_compile_definitions(ADD_TO_BOOKMARK_ACTION=${ADD_TO_BOOKMARK_ACTION})
#add_compile_definitions(OPEN_ACTION=${OPEN_ACTION})
#add_compile_definitions(OPEN_WITH_ACTION=${OPEN_WITH_ACTION})
#add_compile_definitions(OPEN_SELECTED_FILES_ACTION=${OPEN_SELECTED_FILES_ACTION})
#add_compile_definitions(CREATE_ACTION=${CREATE_ACTION})
#add_compile_definitions(VIEW_TYPE_ACTION=${VIEW_TYPE_ACTION})
#add_compile_definitions(SORT_TYPE_ACTION=${SORT_TYPE_ACTION})
#add_compile_definitions(SORT_ORDER_ACTION=${SORT_ORDER_ACTION})
#add_compile_definitions(SORT_PREFERENCES_ACTION=${SORT_PREFERENCES_ACTION})
#add_compile_definitions(COPY_ACTION=${COPY_ACTION})
#add_compile_definitions(CUT_ACTION=${CUT_ACTION})
#add_compile_definitions(TRASH_ACTION=${TRASH_ACTION})
#add_compile_definitions(DELETE_ACTION=${DELETE_ACTION})
#add_compile_definitions(RENAME_ACTION=${RENAME_ACTION})
#add_compile_definitions(PASTE_ACTION=${PASTE_ACTION})
#add_compile_definitions(REFRESH_ACTION=${REFRESH_ACTION})
#add_compile_definitions(SELECT_ALL_ACTION=${SELECT_ALL_ACTION})
#add_compile_definitions(REVERSE_SELECT_ACTION=${REVERSE_SELECT_ACTION})
#add_compile_definitions(PROPERTIES_ACTION=${PROPERTIES_ACTION})
#add_compile_definitions(FORMAT_ACTION=${FORMAT_ACTION})
#add_compile_definitions(CLEAN_THE_TRASH_ACTION=${CLEAN_THE_TRASH_ACTION})
#add_compile_definitions(RESTORE_ACTION=${RESTORE_ACTION})
#add_compile_definitions(CLEAN_THE_RECENT_ACTION=${CLEAN_THE_RECENT_ACTION})

View File

@ -0,0 +1,63 @@
/*
* KWin Style UKUI
*
* Copyright (C) 2023, KylinSoft Co., Ltd.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
* Authors: Jing Tan <tanjing@kylinos.cn>
*
*/
#ifndef PDEBUG_H
#define PDEBUG_H
#include <QDebug>
#include <QDateTime>
#define SERVICE "com.kylin.statusmanager.interface"
#define PATH "/"
#define INTERFACE "com.kylin.statusmanager.interface"
#define UKUI_SEARCH_SCHEMAS "org.ukui.search.settings"
#define SEARCH_METHOD_KEY "fileIndexEnable"
namespace UKUIFileDialog {
class NullDebug
{
public:
template<typename T>
NullDebug & operator <<(const T&){return *this;}
};
inline NullDebug nullDebug(){return NullDebug();}
}
//#define LOG_TIMI
#ifdef LOG_TIMI
# define pDebug qDebug() << QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss:zzz") << " platformtheme input:"
#else
# define pDebug UKUIFileDialog::nullDebug()
#endif
#endif // KYFILEDIALOG_H

View File

@ -0,0 +1,17 @@
#ifndef FILEDIALOGINTERFACE_H
#define FILEDIALOGINTERFACE_H
#include "qpa/qplatformdialoghelper.h"
//定义接口
class FileDialogInterface
{
public:
virtual ~FileDialogInterface() {}
virtual QPlatformDialogHelper* create() = 0;
};
//一定是唯一的标识符
#define FileDialogInterface_iid "UKUIPlatformTheme.Plugin.FileDialogInterface"
Q_DECLARE_INTERFACE(FileDialogInterface, FileDialogInterface_iid)
#endif // FILEDIALOGINTERFACE_H

View File

@ -0,0 +1,12 @@
#include "filedialogplugin.h"
#include <QDebug>
#include "kyfiledialog.h"
#if QT_VERSION < 0x050000
Q_EXPORT_PLUGIN2(plugin, myPlugin)
#endif // QT_VERSION < 0x050000
QPlatformDialogHelper *FileDialogPlugin::create()
{
return new UKUIFileDialog::KyFileDialogHelper;
}

View File

@ -0,0 +1,15 @@
#ifndef MYPLUGIN_H
#define MYPLUGIN_H
#include <QtPlugin>
#include "filedialoginterface.h"
class FileDialogPlugin : public QObject,public FileDialogInterface
{
Q_OBJECT
#if QT_VERSION >= 0x050000
Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QGenericPluginFactoryInterface" FILE "filedialogplugin.json")
Q_INTERFACES(FileDialogInterface);
#endif // QT_VERSION >= 0x050000
public:
QPlatformDialogHelper *create();
};
#endif

View File

@ -0,0 +1,3 @@
{
"Keys": [ "UKUIFiledialog" ]
}

View File

@ -0,0 +1,12 @@
#ifndef FILEDIALOGPLUGIN_GLOBAL_H
#define FILEDIALOGPLUGIN_GLOBAL_H
#include <QtCore/qglobal.h>
#if defined(QT5UKUIFILEDIALOG_LIBRARY)
# define FILEDIALOGPLUGIN_EXPORT Q_DECL_EXPORT
#else
# define FILEDIALOGPLUGIN_EXPORT Q_DECL_IMPORT
#endif
#endif // FILEDIALOGPLUGIN_GLOBAL_H

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,346 @@
/*
* KWin Style UKUI
*
* Copyright (C) 2023, KylinSoft Co., Ltd.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
* Authors: Jing Tan <tanjing@kylinos.cn>
*
*/
#include "debug.h"
#ifndef KYNATIVEFILEDIALOG_H
#define KYNATIVEFILEDIALOG_H
#include <QDialog>
#include <QDir>
#include <QFileDialog>
#include <QFileSystemModel>
#include <QCompleter>
#include <QListView>
#include <QStringListModel>
#include <QTranslator>
#include "qpa/qplatformdialoghelper.h"
#include <peony-qt/FMWindowIface.h>
#define OPEN_ACTIONS_SEPARATOR "open-actions-seperator"
#define CREATE_ACTIONS_SEPARATOR "create-actions-seperator"
#define VIEW_ACTIONS_SEPARATOR "view-actions-seperator"
#define FILE_OPERATION_ACTIONS_SEPARATOR "file-operation-actions-seperator"
#define PLUGIN_ACTIONS_SEPARATOR "plugin-actions-seperator"
#define PROPERTIES_ACTIONS_SEPARATOR "properties-actions-seperator"
#define COMPUTER_ACTIONS_SEPARATOR "computer-actions-seperator"
#define TRASH_ACTIONS_SEPARATOR "trash-actions-seperator"
#define OPEN_IN_NEW_WINDOW_ACTION "open-in-new-window-action"
#define OPEN_IN_NEW_TAB_ACTION "open-in-new-tab-action"
#define ADD_TO_BOOKMARK_ACTION "add-to-bookmark-action"
#define OPEN_ACTION "open-action"
#define OPEN_WITH_ACTION "open-with-action"
#define OPEN_SELECTED_FILES_ACTION "open-selected-files-action"
#define CREATE_ACTION "create-action"
#define VIEW_TYPE_ACTION "view-type-action"
#define SORT_TYPE_ACTION "sort-type-action"
#define SORT_ORDER_ACTION "sort-order-action")
#define SORT_PREFERENCES_ACTION "sort-preferences-action"
#define COPY_ACTION "copy-action"
#define CUT_ACTION "cut-action"
#define TRASH_ACTION "trash-action"
#define DELETE_ACTION "delete-action"
#define RENAME_ACTION "rename-action"
#define PASTE_ACTION "paste-action"
#define REFRESH_ACTION "refresh-action"
#define SELECT_ALL_ACTION "select-all-action"
#define REVERSE_SELECT_ACTION "reverse-select-action"
#define PROPERTIES_ACTION "properties-action"
#define FORMAT_ACTION "format-action"
#define CLEAN_THE_TRASH_ACTION "clean-the-trash-action"
#define RESTORE_ACTION "restore-action"
#define CLEAN_THE_RECENT_ACTION "clean-the-recent-action"
QT_BEGIN_NAMESPACE
namespace Ui { class KyNativeFileDialog; }
QT_END_NAMESPACE
namespace Peony {
class DirectoryViewContainer;
class DirectoryViewWidget;
class FMWindowIface;
}
namespace UKUIFileDialog {
class Ui_KyFileDialog;
class FileDialogSideBar;
class FileDialogPathBar;
class KyNativeFileDialogPrivate;
class KyFileDialogHelper;
class KyNativeFileDialog : public QDialog, public Peony::FMWindowIface
{
Q_OBJECT
friend class KyFileDialogHelper;
public:
enum ViewMode { List, Icon };
KyNativeFileDialog(QWidget *parent = nullptr);
~KyNativeFileDialog();
Peony::FMWindowIface *create(const QString &uri);
Peony::FMWindowIface *create(const QStringList &uris);
const QString getCurrentUri();
const QStringList getCurrentSelections();
const QStringList getCurrentAllFileUris();
const QStringList getCurrentSelectionsList();
const QList<std::shared_ptr<Peony::FileInfo>> getCurrentSelectionFileInfos();
void setCurrentSelections(QStringList selections);
Qt::SortOrder getCurrentSortOrder();
int getCurrentSortColumn();
bool getWindowShowHidden();
bool getWindowUseDefaultNameSortOrder();
bool getWindowSortFolderFirst();
void refresh();
void forceStopLoading();
void setShowHidden(bool showHidden);
void setUseDefaultNameSortOrder(bool use);
void setSortFolderFirst(bool set);
void setCurrentSelectionUris(const QStringList &uris);
void setCurrentSortOrder (Qt::SortOrder order);
void setCurrentSortColumn (int sortColumn);
void editUri(const QString &uri);
void editUris(const QStringList &uris);
bool getFilterWorking();
void beginSwitchView(const QString &viewId);
void setDirectory(const QString &directory);
void setDirectory(const QDir &directory);
QDir directory() const;
void selectFile(const QString &filename);
QStringList selectedFiles() const;
void setDirectoryUrl(const QUrl &directory);
QUrl directoryUrl() const;
void selectUrl(const QUrl &url);
QList<QUrl> selectedUrls() const;
void setNameFilterDetailsVisible(bool enabled);
bool isNameFilterDetailsVisible() const;
void setNameFilter(const QString &filter);
void setNameFilters(const QStringList &filters);
QStringList nameFilters() const;
void selectNameFilter(const QString &filter);
QString selectedMimeTypeFilter() const;
QString selectedNameFilter() const;
void selectNameFilterByIndex(int index);
void selectNameFilterCurrentIndex(int index);
int selectNameFilterIndex() const;
QDir::Filters filter();
void setFilter(QDir::Filters filters);
void setViewMode(ViewMode mode);
ViewMode viewMode() const;
void setFileMode(QFileDialog::FileMode mode);
QFileDialog::FileMode fileMode();
void setAcceptMode(QFileDialog::AcceptMode mode);
QFileDialog::AcceptMode acceptMode() const;
void setLabelText(QFileDialog::DialogLabel label, const QString &text);
QString labelText(QFileDialog::DialogLabel label) const;
void setOptions(QFileDialog::Options options);
void setOption(QFileDialog::Option option, bool on = true);
bool testOption(QFileDialog::Option option) const;
QFileDialog::Options options() const;
void setCurrentInputName(const QString &name);
Peony::DirectoryViewContainer *getCurrentPage();
Peony::DirectoryViewContainer *getCurrentPage() const;
Peony::DirectoryViewWidget *containerView() const;
void setComBoxItems(const QStringList &filters);
bool isDir(QString path);
void updateMaximizeState();
void intiContainerSort();
void refreshContainerSort();
void refreshCompleter();
bool doSave(QStringList sFiles);
bool doOpen(QStringList sFiles);
bool saveMessageBox(QString name);
void setHelper(KyFileDialogHelper* helepr);
void setShortCuts();
void initialViewId();
void delayShow();
void discardDelayedShow();
QString copyEditText();
void installTranslate(QString local);
Q_SIGNALS:
void switchViewRequest(const QString &viewId);
void fileSelected(const QUrl &file);
void filesSelected(const QList<QUrl> &files);
void currentChanged(const QUrl &path);
void directoryEntered(const QUrl &directory);
void selectedNameFilterChanged();
void filterSelected(const QString &filter);
void locationChangeEnd();
public Q_SLOTS:
void goToUri(const QString &uri, bool addToHistory = true, bool forceUpdate = false);
void goBack();
void goForward();
void goToParent();
void onSwitchView();
void updateWindowState();
QString selectName();
void updateStatusBar();
void onNewFolder();
void setSortType();
void searchButtonClicked();
void setSearchMode(bool mode);
void lineEditTextChange(QString text);
void containerMenuRequest(const QPoint &pos);
void updateTableModel(bool tableMode);
void updateSearchProgressBar();
protected:
void resizeEvent(QResizeEvent *e);
void paintEvent(QPaintEvent *e);
void keyPressEvent(QKeyEvent *e);
private:
Ui_KyFileDialog *mKyFileDialogUi = nullptr;
QScopedPointer<KyNativeFileDialogPrivate> d_ptr;
Q_DECLARE_PRIVATE_D(qGetPtrHelper(d_ptr), KyNativeFileDialog)
void onAcceptButtonClicked();
void onRejectButtonClicked();
void onCurrentInputNameChanged();
void handleEnterPressed();
void updateAcceptButtonState();
bool checkSaveFileExsits(QString path);
void isTableModel();
private:
bool m_searchMode = false;
// QFileSystemModel *m_fileSystemModel = nullptr;
QCompleter * m_completer = nullptr;
QListView *m_listView = nullptr;
QStringList m_CurrentPathAllFiles;
KyFileDialogHelper *m_fileDialogHelper = nullptr;
bool isInitialGoToUriNum = true;
bool m_shortcutsSet = false;
QString m_lastSearchPath;
bool m_isClearSearchKey = false;
QStringListModel *m_model = nullptr;
QString m_copyEditText;
bool m_istableModel = false;
QMap<int, QString> m_nameFilterMap;
QStringList m_uris_to_edit;
bool m_needSearch = false;
QTranslator *m_translator = nullptr;
QTranslator *m_translator0 = nullptr;
QTranslator *m_translator1 = nullptr;
QTranslator *m_translator2 = nullptr;
QTranslator *m_translator3 = nullptr;
};
class KyFileDialogHelper : public QPlatformFileDialogHelper
{
Q_OBJECT
public:
explicit KyFileDialogHelper();
~KyFileDialogHelper() override;
virtual void exec() override;
virtual bool show(Qt::WindowFlags windowFlags, Qt::WindowModality windowModality, QWindow *parent) override;
virtual void hide() override;
virtual bool defaultNameFilterDisables() const override;
virtual void setDirectory(const QUrl &directory) override;
virtual QUrl directory() const override;
virtual void selectFile(const QUrl &filename) override;
virtual QList<QUrl> selectedFiles() const override;
virtual void setFilter() override;
virtual void selectNameFilter(const QString &filter) override;
virtual void selectMimeTypeFilter(const QString &filter) override;
virtual QString selectedNameFilter() const override;
virtual QString selectedMimeTypeFilter() const override;
virtual bool isSupportedUrl(const QUrl &url) const override;
bool isViewInitialFinished();
bool isShow();
public Q_SLOTS:
void viewInitialFinished();
Q_SIGNALS:
void fileSelected(const QUrl &file);
void filesSelected(const QList<QUrl> &files);
void currentChanged(const QUrl &path);
void directoryEntered(const QUrl &directory);
void filterSelected(const QString &filter);
private:
KyNativeFileDialog* mKyFileDialog = nullptr;
QUrl m_selectedFiles;
bool m_viewInitialFinished = false;
bool m_isShow = false;
QUrl m_initialDirectory;
QList<QUrl> m_initialSelectFiles;
private:
void initDialog();
};
}
#endif // KYNATIVEFILEDIALOG_H

View File

@ -0,0 +1,88 @@
/*
* KWin Style UKUI
*
* Copyright (C) 2023, KylinSoft Co., Ltd.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
* Authors: Jing Tan <tanjing@kylinos.cn>
*
*/
#include "debug.h"
#include "kyfiledialogprivate.h"
#include <QFileDialog>
#include <QTimer>
#include <QLineEdit>
#include "kyfiledialog.h"
#include "uikyfiledialog.h"
using namespace UKUIFileDialog;
KyNativeFileDialogPrivate::KyNativeFileDialogPrivate()
{
// Q_Q(KyNativeFileDialog);
m_timer = new QTimer;
// m_container = q->m_container;
}
KyNativeFileDialogPrivate::~KyNativeFileDialogPrivate()
{
if(m_timer){
delete m_timer;
m_timer = nullptr;
}
}
QStringList KyNativeFileDialogPrivate::typedFiles()
{
/*
Q_Q(KyNativeFileDialog);
QStringList files;
QString editText = q->mKyFileDialogUi->m_fileNameEdit->text();
if (!editText.contains(QLatin1Char('"'))) {
#ifdef Q_OS_UNIX
const QString prefix = q->directory().absolutePath() + QDir::separator();
if (QFile::exists(prefix + editText))
files << editText;
else
files << qt_tildeExpansion(editText);
#else
files << editText;
Q_UNUSED(q)
#endif
} else {
// " is used to separate files like so: "file1" "file2" "file3" ...
// ### need escape character for filenames with quotes (")
QStringList tokens = editText.split(QLatin1Char('\"'));
for (int i=0; i<tokens.size(); ++i) {
if ((i % 2) == 0)
continue; // Every even token is a separator
#ifdef Q_OS_UNIX
const QString token = tokens.at(i);
const QString prefix = q->directory().absolutePath() + QDir::separator();
if (QFile::exists(prefix + token))
files << token;
else
files << qt_tildeExpansion(token);
#else
files << toInternal(tokens.at(i));
#endif
}
}
return addDefaultSuffixToFiles(files);
*/
return QStringList();
}

View File

@ -0,0 +1,106 @@
/*
* KWin Style UKUI
*
* Copyright (C) 2023, KylinSoft Co., Ltd.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
* Authors: Jing Tan <tanjing@kylinos.cn>
*
*/
#include "debug.h"
#ifndef KYNATIVEFILEDIALOGPRIVATE_H
#define KYNATIVEFILEDIALOGPRIVATE_H
#include <QFileDialog>
#include <QTimer>
namespace Peony {
class DirectoryViewContainer;
}
namespace UKUIFileDialog {
class KyFileDialogHelper;
class KyNativeFileDialogPrivate
{
friend class KyNativeFileDialog;
public:
KyNativeFileDialogPrivate();
~KyNativeFileDialogPrivate();
private:
QStringList typedFiles();
QStringList nameFilters;
QFileDialog::AcceptMode acceptMode;
QFileDialog::FileMode fileMode;
QFileDialog::Options options;
Peony::DirectoryViewContainer *m_container = nullptr;
QString currentInputName;
QTimer *m_timer = nullptr;
QDir::Filters filters = QDir::AllEntries;
};
}
#endif // KYNATIVEFILEDIALOGPRIVATE_H
/*
KyNativeFileDialogPrivate::KyNativeFileDialogPrivate()
{
// Q_Q(KyNativeFileDialog);
m_timer = new QTimer;
// m_container = q->m_container;
}
QStringList KyNativeFileDialogPrivate::typedFiles() const
{
Q_Q(KyNativeFileDialog);
QStringList files;
QString editText = q->mk ->text();
if (!editText.contains(QLatin1Char('"'))) {
#ifdef Q_OS_UNIX
const QString prefix = q->directory().absolutePath() + QDir::separator();
if (QFile::exists(prefix + editText))
files << editText;
else
files << qt_tildeExpansion(editText);
#else
files << editText;
Q_UNUSED(q)
#endif
} else {
// " is used to separate files like so: "file1" "file2" "file3" ...
// ### need escape character for filenames with quotes (")
QStringList tokens = editText.split(QLatin1Char('\"'));
for (int i=0; i<tokens.size(); ++i) {
if ((i % 2) == 0)
continue; // Every even token is a separator
#ifdef Q_OS_UNIX
const QString token = tokens.at(i);
const QString prefix = q->directory().absolutePath() + QDir::separator();
if (QFile::exists(prefix + token))
files << token;
else
files << qt_tildeExpansion(token);
#else
files << toInternal(tokens.at(i));
#endif
}
}
return addDefaultSuffixToFiles(files);
return QStringList();
}
*/

View File

@ -0,0 +1,98 @@
/*
* KWin Style UKUI
*
* Copyright (C) 2023, KylinSoft Co., Ltd.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
* Authors: Jing Tan <tanjing@kylinos.cn>
*
*/
#include "debug.h"
#include "menutoolbutoon.h"
#include <QApplication>
#include <QDBusInterface>
using namespace UKUIFileDialog;
static ToolButtonStyle *global_instance = nullptr;
MenuToolButton::MenuToolButton(QWidget *parent) : QToolButton(parent)
{
setStyle(ToolButtonStyle::getStyle());
QDBusInterface *interFace = new QDBusInterface(SERVICE, PATH, INTERFACE, QDBusConnection::sessionBus());
if(interFace->isValid()){
connect(interFace, SIGNAL(mode_change_signal(bool)), this, SLOT(tableModeChanged(bool)));
}
}
void MenuToolButton::tableModeChanged(bool isTableMode)
{
setStyle(ToolButtonStyle::getStyle());
}
ToolButtonStyle *ToolButtonStyle::getStyle()
{
if (!global_instance) {
global_instance = new ToolButtonStyle;
}
return global_instance;
}
int ToolButtonStyle::pixelMetric(QStyle::PixelMetric metric, const QStyleOption *option, const QWidget *widget) const
{
if (qobject_cast<const QToolButton *>(widget))
return 0;
switch (metric) {
case PM_ToolBarIconSize:
return 16;
case PM_ToolBarSeparatorExtent:
return 1;
case PM_ToolBarItemSpacing: {
return 1;
}
default:
return QProxyStyle::pixelMetric(metric, option, widget);
}
}
void ToolButtonStyle::drawComplexControl(QStyle::ComplexControl control, const QStyleOptionComplex *option, QPainter *painter, const QWidget *widget) const
{
//This is a "lie". We want to use instant popup menu for tool button, and we aslo
//want use popup menu style with this tool button, so we change the related flags
//to draw in our expected.
if (control == CC_ToolButton) {
QStyleOptionToolButton button = *qstyleoption_cast<const QStyleOptionToolButton *>(option);
if (button.features.testFlag(QStyleOptionToolButton::HasMenu)) {
button.features = QStyleOptionToolButton::None;
if (!widget->property("isOptionButton").toBool()) {
button.features |= QStyleOptionToolButton::HasMenu;
button.features |= QStyleOptionToolButton::MenuButtonPopup;
button.subControls |= QStyle::SC_ToolButtonMenu;
}
return qApp->style()->drawComplexControl(control, &button, painter, widget);
}
}
return qApp->style()->drawComplexControl(control, option, painter, widget);
}
void ToolButtonStyle::drawPrimitive(QStyle::PrimitiveElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget) const
{
if (element == PE_IndicatorToolBarSeparator) {
return;
}
return qApp->style()->drawPrimitive(element, option, painter, widget);
}

View File

@ -0,0 +1,62 @@
/*
* KWin Style UKUI
*
* Copyright (C) 2023, KylinSoft Co., Ltd.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
* Authors: Jing Tan <tanjing@kylinos.cn>
*
*/
#include "debug.h"
#ifndef MENUTOOLBUTTON_H
#define MENUTOOLBUTTON_H
#include <QToolButton>
#include <QProxyStyle>
#include <QStyleOption>
#include <QPainter>
namespace UKUIFileDialog {
class MenuToolButton : public QToolButton
{
Q_OBJECT
public:
explicit MenuToolButton(QWidget *parent = nullptr);
~MenuToolButton(){}
Q_SIGNALS:
public Q_SLOTS:
void tableModeChanged(bool isTableMode);
};
class ToolButtonStyle : public QProxyStyle
{
friend class MenuToolButton;
friend class HeaderBarContainer;
static ToolButtonStyle *getStyle();
ToolButtonStyle() {}
~ToolButtonStyle() {}
int pixelMetric(PixelMetric metric, const QStyleOption *option = nullptr, const QWidget *widget = nullptr) const override;
void drawComplexControl(ComplexControl control, const QStyleOptionComplex *option, QPainter *painter, const QWidget *widget = nullptr) const override;
void drawPrimitive(PrimitiveElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget = nullptr) const override;
};
}
#endif // MENUTOOLBUTTON_H

View File

@ -0,0 +1,104 @@
/*
* KWin Style UKUI
*
* Copyright (C) 2023, KylinSoft Co., Ltd.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
* Authors: Jing Tan <tanjing@kylinos.cn>
*
*/
#include "debug.h"
#include "pathbar.h"
#include <PeonyPathCompleter>
#include <PeonyPathBarModel>
#include <QDebug>
#include <QObject>
#include <QDBusInterface>
#include <QDBusMessage>
#include <peony-qt/file-utils.h>
#include "debug.h"
#include "settings/ukui-style-settings.h"
using namespace UKUIFileDialog;
FileDialogPathBar::FileDialogPathBar(QWidget *parent) : QWidget(parent)//Peony::AdvancedLocationBar(parent)//QLineEdit(parent)//
{
setAttribute(Qt::WA_TranslucentBackground);
setContentsMargins(0,0,0,0);
m_pathBar = new Peony::AdvancedLocationBar(this);
QDBusInterface *interFace = new QDBusInterface(SERVICE, PATH, INTERFACE, QDBusConnection::sessionBus());
if(interFace->isValid()){
connect(interFace, SIGNAL(mode_change_signal(bool)), this, SLOT(updateTableModel(bool)));
}
QDBusMessage message = QDBusMessage::createMethodCall("com.kylin.statusmanager.interface",
"/",
"com.kylin.statusmanager.interface",
"get_current_tabletmode");
QDBusMessage ret = QDBusConnection::sessionBus().call(message);
if (ret.type() != QDBusMessage::ReplyMessage)
{
//从返回参数获取返回值
pDebug << "complex type failed!";
updateTableModel(false);
}
else
{
updateTableModel(ret.arguments()[0].value<bool>());
}
}
FileDialogPathBar::~FileDialogPathBar()
{
m_pathBar->deleteLater();
m_pathBar = nullptr;
}
void FileDialogPathBar::updatePath(const QString &uri)
{
pDebug << "m_pathBar........ updatePath:" << uri << Peony::FileUtils::getEncodedUri(uri);
m_pathBar->updateLocation(Peony::FileUtils::urlEncode(uri));
// setText(uri);
// clearFocus();
}
void FileDialogPathBar::resizeEvent(QResizeEvent *e)
{
m_pathBar->setFixedWidth(this->width());
m_pathBar->setGeometry(0, (this->height() - m_pathBar->height()) / 2, this->width(), m_pathBar->height());
}
Peony::AdvancedLocationBar *FileDialogPathBar::getPathBar()
{
return m_pathBar;
}
void FileDialogPathBar::updateTableModel(bool isTable)
{
pDebug << "updateTableModel...." << isTable;
// m_pathBar->updateTabletModeValue(isTable);
if(isTable){
m_pathBar->setFixedHeight(48);
this->setFixedHeight(48);
}
else{
m_pathBar->setFixedHeight(36);
this->setFixedHeight(36);
}
pDebug << "m_pathBar height1111:" << m_pathBar->height() << this->height();
}

View File

@ -0,0 +1,54 @@
/*
* KWin Style UKUI
*
* Copyright (C) 2023, KylinSoft Co., Ltd.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
* Authors: Jing Tan <tanjing@kylinos.cn>
*
*/
#include "debug.h"
#ifndef PATHBAR_H
#define PATHBAR_H
#include <QLineEdit>
#include <QResizeEvent>
#include <peony-qt/controls/navigation-bar/advanced-location-bar.h>
namespace UKUIFileDialog {
class FileDialogPathBar : public QWidget//public QLineEdit//
{
Q_OBJECT
public:
explicit FileDialogPathBar(QWidget *parent = nullptr);
~FileDialogPathBar();
void resizeEvent(QResizeEvent *e);
Peony::AdvancedLocationBar *getPathBar();
Q_SIGNALS:
void goToUriRequest(const QString &uri, bool addToHistory = true);
void updateWindowLocationRequest(const QString &uri, bool addHistory, bool forceUpdate = false);
void refreshRequest();
void searchRequest(const QString &path, const QString &key);
public Q_SLOTS:
void updateTableModel(bool isTable);
void updatePath(const QString &uri);
private:
Peony::AdvancedLocationBar *m_pathBar = nullptr;
};
}
#endif // PATHBAR_H

View File

@ -0,0 +1,505 @@
/*
* KWin Style UKUI
*
* Copyright (C) 2023, KylinSoft Co., Ltd.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
* Authors: Jing Tan <tanjing@kylinos.cn>
*
*/
#include "debug.h"
#include "sidebar.h"
#include <QTimer>
#include <PeonySideBarModel>
#include <QScrollBar>
#include <QHeaderView>
#include <QPainterPath>
#include <QPainter>
#include <QDebug>
#include <QApplication>
#include <QTreeWidget>
#include <QMessageBox>
#include <QToolTip>
#include <QScreen>
#include <QDBusInterface>
#include "kyfiledialog.h"
#include "peony-qt/controls/menu/side-bar-menu/side-bar-menu.h"
#include "peony-qt/side-bar-abstract-item.h"
#include "peony-qt/volume-manager.h"
#include "peony-qt/file-enumerator.h"
#include "peony-qt/file-utils.h"
#include "peony-qt/file-info.h"
#include "settings/ukui-style-settings.h"
#include "debug.h"
using namespace UKUIFileDialog;
FileDialogComboBox::FileDialogComboBox(QWidget *parent):QComboBox(parent)
{
if (QGSettings::isSchemaInstalled("org.ukui.style")) {
auto settings = UKUIStyleSettings::globalInstance();
connect(settings, &QGSettings::changed, this, [=](const QString &key){
pDebug << "key changed:" << key << this->size();
m_styleChanged = true;
});
}
connect(this, &FileDialogComboBox::setStyleChanged, this, [=](bool change){
pDebug << "setStyleChanged m_styleChanged:" << change;
m_styleChanged = change;
});
QDBusInterface *interFace = new QDBusInterface(SERVICE, PATH, INTERFACE, QDBusConnection::sessionBus());
if(interFace->isValid()){
connect(interFace, SIGNAL(mode_change_signal(bool)), this, SLOT(tableModeChanged(bool)));
}
m_minSize = this->minimumSize();
pDebug << "combobox minsize...." << m_minSize;
}
void FileDialogComboBox::tableModeChanged(bool isTableMode)
{
m_styleChanged = true;
}
QSize FileDialogComboBox::minimumSizeHint() const
{
pDebug << "minimumSizeHint...." << m_styleChanged << this->size() << m_minSize;
if(m_styleChanged || (qApp->screenAt(QCursor::pos())->availableSize().width() - 300) < QComboBox::minimumSizeHint().width())
{
Q_EMIT setStyleChanged(false);
return m_minSize;//this->size();
}
QSize size = QComboBox::minimumSizeHint();
return size;
}
FileDialogSideBar::FileDialogSideBar(QWidget *parent) : QTreeView(parent)
{
// setStyle(SideBarStyle::getStyle());
setIconSize(QSize(16, 16));
// header()->setSectionResizeMode(QHeaderView::Stretch );
header()->setStretchLastSection(false);
header()->hide();
this->verticalScrollBar()->setProperty("drawScrollBarGroove", false);
setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
this->setFrameStyle(QFrame::NoFrame);
setSortingEnabled(true);
setProperty("useIconHighlightEffect", true);
setProperty("highlightMode", true);
setDragDropMode(QTreeView::NoDragDrop);
setProperty("doNotBlur", true);
viewport()->setProperty("doNotBlur", true);
setContextMenuPolicy(Qt::CustomContextMenu);
setExpandsOnDoubleClick(false);
setMouseTracking(true);//追踪鼠标
setAutoScrollMargin(0);
m_delegate = new SideBarItemDelegate(this);
setItemDelegate(m_delegate);
m_model = new Peony::SideBarModel(this);
m_proxyModel = new Peony::SideBarProxyFilterSortModel(this);
m_proxyModel->setSourceModel(m_model);
setModel(m_proxyModel);
Peony::VolumeManager *volumeManager = Peony::VolumeManager::getInstance();
connect(volumeManager,&Peony::VolumeManager::volumeAdded,this,[=](const std::shared_ptr<Peony::Volume> &volume){
m_proxyModel->invalidate();//display DVD device in real time.
});
connect(volumeManager,&Peony::VolumeManager::volumeRemoved,this,[=](const std::shared_ptr<Peony::Volume> &volume){
m_proxyModel->invalidate();//The drive does not display when the DVD device is removed.
//pDebug << "volumeRemoved:" <<QToolTip::text();
//fix abnormal pull out usb device tips not hide issue, link to bug#81190
if (QToolTip::isVisible()) {
QToolTip::hideText();
}
});
connect(volumeManager,&Peony::VolumeManager::driveDisconnected,this,[=](const std::shared_ptr<Peony::Drive> &drive){
m_proxyModel->invalidate();//Multiple udisk eject display problem
});
connect(volumeManager,&Peony::VolumeManager::mountAdded,this,[=](const std::shared_ptr<Peony::Mount> &mount){
m_proxyModel->invalidate();//display udisk in real time after format it.
});
connect(this, &FileDialogSideBar::clicked, this, [=](const QModelIndex &index){
switch (index.column()) {
case 0: {
auto item = m_proxyModel->itemFromIndex(index);
if (! item)
break;
//continue to fix crash issue, related to bug#116201,116589
if(item->isMountable()&&!item->isMounted())
item->mount();
else{
auto uri = item->uri();
if (!item->uri().isEmpty()){
if (uri == "computer:///ukui-data-volume") {
uri = "file:///data";
}
Q_EMIT goToUriRequest(uri);
}
}
break;
}
case 1: {
auto item = m_proxyModel->itemFromIndex(index);
if (item->isMounted() || item->isEjectable()||item->isStopable()) {
auto leftIndex = m_proxyModel->index(index.row(), 0, index.parent());
this->collapse(leftIndex);
item->ejectOrUnmount();
} else {
// if item is not unmountable, just be same with first column.
// fix #39716
auto uri = item->uri();
if (!item->uri().isNull()){
if (uri == "computer:///ukui-data-volume") {
uri = "file:///data";
}
Q_EMIT goToUriRequest(uri);
}
}
break;
}
default:
break;
}
});
connect(this, &FileDialogSideBar::expanded, this, [=](const QModelIndex &index){
auto item = m_proxyModel->itemFromIndex(index);
item->findChildrenAsync();
});
connect(this, &FileDialogSideBar::collapsed, this, [=](const QModelIndex &index){
auto item = m_proxyModel->itemFromIndex(index);
item->clearChildren();
});
connect(this, &QTreeView::customContextMenuRequested, this, [=](const QPoint &pos){
auto index = indexAt(pos);
auto item = m_proxyModel->itemFromIndex(index);
if (item) {
if (item->type() != Peony::SideBarAbstractItem::SeparatorItem) {
Peony::SideBarMenu menu(item, nullptr);
QList<QAction *> actionList;
if (item->type() == Peony::SideBarAbstractItem::FileSystemItem) {
if ((0 != QString::compare(item->uri(), "computer:///")) &&
(0 != QString::compare(item->uri(), "filesafe:///"))) {
for (const auto &actionItem : actionList) {
if(item->isVolume())/* 分区才去需要判断是否已挂载 */
actionItem->setEnabled(item->isMounted());
}
}
}
menu.exec(QCursor::pos());
}
}
});
QDBusInterface *interFace = new QDBusInterface(SERVICE, PATH, INTERFACE, QDBusConnection::sessionBus());
if(interFace->isValid()){
connect(interFace, SIGNAL(mode_change_signal(bool)), this, SLOT(tableModeChanged(bool)));
}
// if (QGSettings::isSchemaInstalled("org.ukui.style")) {
// auto settings = UKUIStyleSettings::globalInstance();
// connect(settings, &QGSettings::changed, this, [=](const QString &key){
// pDebug << "key changed:" << key << width();
// if (key == "styleName") {
// m_siderWidth = this->width();
// }
// });
// }
expandToDepth(1);
setViewportMargins(4, 4, 0, 0);
pDebug << "columndffffffffffffffff";
// setColumnHidden(1, true);
}
FileDialogSideBar::~FileDialogSideBar()
{
if(m_proxyModel){
m_proxyModel->deleteLater();
m_proxyModel = nullptr;
}
if(m_model){
m_model->deleteLater();
m_model = nullptr;
}
if(m_delegate){
m_delegate->deleteLater();
m_delegate = nullptr;
}
}
void FileDialogSideBar::tableModeChanged(bool isTableMode)
{
pDebug << "tableModeChanged........";
// setStyle(SideBarStyle::getStyle());
}
void FileDialogSideBar::resizeEvent(QResizeEvent *e)
{
setViewportMargins(4, 4, 0, 0);
// this->setGeometry(this->x(), this->y(), m_siderWidth, this->height());
QTreeView::resizeEvent(e);
pDebug << "FileDialogSideBar resizeEvent header count......:" << header()->count() << this->viewport()->width() << this->columnWidth(0) << this->columnWidth(1);
if (header()->count() > 0) {
this->setColumnWidth(1, 20);
header()->resizeSection(0, this->viewport()->width() - this->columnWidth(1));
}
}
void FileDialogSideBar::menuRequest(const QPoint &pos)
{
// auto index = indexAt(pos);
// auto item = proxyModel->itemFromIndex(index);
// if (item) {
// pDebug << "sider bar menu00000" << item->type() << index;
// if (item->type() != Peony::SideBarAbstractItem::SeparatorItem) {
// pDebug << "sider bar menu11111";
//// Peony::SideBarMenu *menu = new Peony::SideBarMenu(item, this);
// pDebug << "sider bar menu22222222";
//// menu->exec(QCursor::pos());
// pDebug << "sider bar menu3333333";
// }
// }
}
void FileDialogSideBar::paintEvent(QPaintEvent *event)
{
// pDebug << "sidebar paintEvent.......:" << this->size();
QTreeView::paintEvent(event);
}
//void FileDialogSideBar::paintEvent(QPaintEvent *e)
//{
// QColor color = this->palette().window().color();
// QColor colorBase = QColor(Qt::red); //this->palette().base().color();
// int R1 = color.red();
// int G1 = color.green();
// int B1 = color.blue();
// qreal a1 = 0.3;
// int R2 = colorBase.red();
// int G2 = colorBase.green();
// int B2 = colorBase.blue();
// qreal a2 = 1;
// qreal a = 1 - (1 - a1)*(1 - a2);
// qreal R = (a1*R1 + (1 - a1)*a2*R2) / a;
// qreal G = (a1*G1 + (1 - a1)*a2*G2) / a;
// qreal B = (a1*B1 + (1 - a1)*a2*B2) / a;
// colorBase.setRed(R);
// colorBase.setGreen(G);
// colorBase.setBlue(B);
// colorBase.setAlphaF(1);
//// QPainter p(this);
//// QPainterPath sidebarPath;
//// sidebarPath.addRoundedRect(this->geometry(), 6, 6);
//// p.fillPath(sidebarPath, colorBase);
//// viewport()->setObjectName("viewport");
//// viewport()->setStyleSheet("QWidget#viewport{background-color:rgba(255,255,255,0.5)");////" + QString::number(colorBase.red()) + "," + QString::number(colorBase.green()) + "," + QString::number(colorBase.blue()) + "," + QString::number(colorBase.alpha()) + "}");
// QTreeView::paintEvent(e);
//}
SideBarItemDelegate::SideBarItemDelegate(QObject *parent)
{
// if (QGSettings::isSchemaInstalled("org.ukui.style")) {
// auto settings = UKUIStyleSettings::globalInstance();
// connect(settings, &QGSettings::changed, this, [=](const QString &key){
// pDebug << "key changed:" << key;
// if (key == "styleName") {
// pDebug << "key changed....";
// this->paint();
// this->update();
// }
// });
// }
}
//QSize SideBarItemDelegate::sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const
//{
// auto size = QStyledItemDelegate::sizeHint(option, index);
// size.setHeight(36);
// return size;
//}
void SideBarItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
painter->save();
if (index.column() == 1) {
QPainterPath rightRoundedRegion;
rightRoundedRegion.setFillRule(Qt::WindingFill);
auto rect = option.rect;
auto view = qobject_cast<const QAbstractItemView *>(option.widget);
if (view) {
rect.setRight(view->viewport()->rect().right());
}
int radius = 4;
if(view && view->property("minRadius").isValid())
radius = view->property("minRadius").toInt();
rightRoundedRegion.addRoundedRect(rect, radius, radius);
rightRoundedRegion.addRect(rect.adjusted(0, 0, -1 * radius, 0));
painter->setClipPath(rightRoundedRegion);
}
painter->setRenderHint(QPainter::Antialiasing);
QStyledItemDelegate::paint(painter, option, index);
painter->restore();
}
static SideBarStyle *global_instance = nullptr;
SideBarStyle::SideBarStyle()
{
}
SideBarStyle* SideBarStyle::getStyle()
{
if (!global_instance) {
global_instance = new SideBarStyle;
}
return global_instance;
}
void SideBarStyle::drawPrimitive(QStyle::PrimitiveElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget) const
{
painter->save();
switch (element) {
case QStyle::PE_IndicatorItemViewItemDrop: {
painter->setRenderHint(QPainter::Antialiasing, true);/* 反锯齿 */
/* 按设计要求边框颜色为调色板highlight值圆角为6px */
QColor color = option->palette.color(QPalette::Highlight);
painter->setPen(color);
int radius = 6;
if(widget && widget->property("normalRadius").isValid())
radius = widget->property("normalRadius").toInt();
painter->drawRoundedRect(option->rect, radius, radius);
painter->restore();
return;
}
case QStyle::PE_IndicatorBranch: {
painter->setRenderHint(QPainter::Antialiasing, true);
if (option->rect.x() == 0) {
QPainterPath leftRoundedRegion;
leftRoundedRegion.setFillRule(Qt::WindingFill);
int radius = 4;
if(widget && widget->property("minRadius").isValid())
radius = widget->property("minRadius").toInt();
leftRoundedRegion.addRoundedRect(option->rect, radius, radius);
leftRoundedRegion.addRect(option->rect.adjusted(radius, 0, 0, 0));
painter->setClipPath(leftRoundedRegion);
}
const QStyleOptionViewItem *tmp = qstyleoption_cast<const QStyleOptionViewItem *>(option);
QStyleOptionViewItem opt = *tmp;
if (!opt.state.testFlag(QStyle::State_Selected)) {
if (opt.state & QStyle::State_Sunken) {
opt.palette.setColor(QPalette::Highlight, opt.palette.button().color());
// opt.palette.setColor(QPalette::Highlight, Qt::red);
}
if (opt.state & QStyle::State_MouseOver) {
opt.palette.setColor(QPalette::Highlight, opt.palette.mid().color());
// opt.palette.setColor(QPalette::Highlight, Qt::green);
}
}
qApp->style()->drawPrimitive(element, &opt, painter, widget);
painter->restore();
return;
}
case QStyle::PE_PanelItemViewRow: {
painter->restore();
return;
break;
}
case QStyle::PE_PanelItemViewItem: {
/*
const QStyleOptionViewItem *vi = qstyleoption_cast<const QStyleOptionViewItem *>(option);
QStyleOptionViewItem opt = *vi;
painter->save();
painter->setPen(Qt::NoPen);
QPainterPath path;
if (qobject_cast<const QTreeView*>(widget) || qobject_cast<const QTreeWidget*>(widget)) {
path.addRoundedRect(vi->rect, 6, 6);
}
else {
path.addRect(vi->rect);
}
// pDebug << "vi->rect:" << vi->rect;
if (!opt.state.testFlag(QStyle::State_Selected)) {
if (opt.state & QStyle::State_Sunken) {
opt.palette.setColor(QPalette::Highlight, opt.palette.button().color());
}
if (opt.state & QStyle::State_MouseOver) {
opt.palette.setColor(QPalette::Highlight, opt.palette.mid().color());
}
}
painter->drawPath(path);
*/
break;
}
default:
break;
}
qApp->style()->drawPrimitive(element, option, painter, widget);
painter->restore();
}
void SideBarStyle::drawControl(QStyle::ControlElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget) const
{
if (element == QStyle::CE_ItemViewItem) {
const QStyleOptionViewItem *tmp = qstyleoption_cast<const QStyleOptionViewItem *>(option);
QStyleOptionViewItem opt = *tmp;
if (!opt.state.testFlag(QStyle::State_Selected)) {
if (opt.state & QStyle::State_Sunken) {
opt.palette.setColor(QPalette::Highlight, opt.palette.button().color());
}
if (opt.state & QStyle::State_MouseOver) {
opt.palette.setColor(QPalette::Highlight, opt.palette.mid().color());
}
}
return qApp->style()->drawControl(element, &opt, painter, widget);
}
}

View File

@ -0,0 +1,105 @@
/*
* KWin Style UKUI
*
* Copyright (C) 2023, KylinSoft Co., Ltd.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
* Authors: Jing Tan <tanjing@kylinos.cn>
*
*/
#include "debug.h"
#ifndef SIDEBAR_H
#define SIDEBAR_H
#include <QTreeView>
#include <QPaintEvent>
#include <QStyledItemDelegate>
#include <QStyleOptionViewItem>
#include <QModelIndex>
#include <QPainter>
#include <QProxyStyle>
#include <QStyleOption>
#include <PeonySideBarProxyModel>
#include <QComboBox>
#include <QSize>
#include <PeonySideBarModel>
namespace UKUIFileDialog {
class FileDialogComboBox : public QComboBox
{
Q_OBJECT
public:
explicit FileDialogComboBox(QWidget *parent = nullptr);
~FileDialogComboBox(){}
QSize minimumSizeHint() const;
public Q_SLOTS:
void tableModeChanged(bool isTableMode);
Q_SIGNALS:
void setStyleChanged(bool change) const;
private:
bool m_styleChanged = false;
QSize m_minSize;
};
class SideBarItemDelegate : public QStyledItemDelegate
{
friend class FileDialogSideBar;
explicit SideBarItemDelegate(QObject *parent = nullptr);
~SideBarItemDelegate(){}
// QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const override;
void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const;
};
class FileDialogSideBar : public QTreeView
{
Q_OBJECT
public:
explicit FileDialogSideBar(QWidget *parent = nullptr);
~FileDialogSideBar();
void resizeEvent(QResizeEvent *e);
void paintEvent(QPaintEvent *event);
public Q_SLOTS:
void menuRequest(const QPoint &pos);
void tableModeChanged(bool isTableMode);
private:
Peony::SideBarProxyFilterSortModel *m_proxyModel = nullptr;
Peony::SideBarModel *m_model = nullptr;
SideBarItemDelegate *m_delegate = nullptr;
Q_SIGNALS:
void goToUriRequest(const QString &uri, bool addToHistory = true, bool forceUpdate = false);
};
class SideBarStyle : public QProxyStyle
{
public:
explicit SideBarStyle();
static SideBarStyle* getStyle();
~SideBarStyle(){}
void drawPrimitive(PrimitiveElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget) const override;
void drawControl(ControlElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget) const override;
};
}
#endif // SIDEBAR_H

View File

@ -0,0 +1,252 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="bo_CN">
<context>
<name>MessageBox</name>
<message>
<source>Close</source>
<translation type="vanished"></translation>
</message>
</context>
<context>
<name>QApplication</name>
<message>
<source>Executable &apos;%1&apos; requires Qt %2, found Qt %3.</source>
<translation type="vanished">&apos;%1&apos;Qt %2,Qt%3</translation>
</message>
<message>
<source>Incompatible Qt Library Error</source>
<translation type="vanished">Qt </translation>
</message>
</context>
<context>
<name>QDialogButtonBox</name>
<message>
<source>OK</source>
<translation type="vanished"></translation>
</message>
</context>
<context>
<name>QMessageBox</name>
<message>
<source>Show Details...</source>
<translation type="vanished"></translation>
</message>
<message>
<source>Hide Details...</source>
<translation type="vanished"></translation>
</message>
</context>
<context>
<name>QObject</name>
<message>
<location filename="../ui_kyfiledialog.cpp" line="259"/>
<source>File Name</source>
<translation></translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="263"/>
<source>Modified Date</source>
<translation></translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="267"/>
<source>File Type</source>
<translation></translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="271"/>
<source>File Size</source>
<translation></translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="275"/>
<source>Original Path</source>
<translation></translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="284"/>
<source>Descending</source>
<translation></translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="289"/>
<source>Ascending</source>
<translation></translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="295"/>
<source>Use global sorting</source>
<translation></translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="315"/>
<source>List View</source>
<translation></translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="316"/>
<source>Icon View</source>
<translation></translation>
</message>
<message>
<source>Close</source>
<translation type="vanished"></translation>
</message>
</context>
<context>
<name>UKUI::TabWidget::DefaultSlideAnimatorFactory</name>
<message>
<location filename="../../libqt5-ukui-style/animations/tabwidget/ukui-tabwidget-default-slide-animator-factory.h" line="50"/>
<source>Default Slide</source>
<translation></translation>
</message>
<message>
<location filename="../../libqt5-ukui-style/animations/tabwidget/ukui-tabwidget-default-slide-animator-factory.h" line="51"/>
<source>Let tab widget switch with a slide animation.</source>
<translation></translation>
</message>
</context>
<context>
<name>UKUIFileDialog::KyFileDialogHelper</name>
<message>
<location filename="../kyfiledialog.cpp" line="2715"/>
<source>Open File</source>
<translation></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="2716"/>
<source>Save File</source>
<translation></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="2729"/>
<source>All Files (*)</source>
<translation>(*)</translation>
</message>
</context>
<context>
<name>UKUIFileDialog::KyNativeFileDialog</name>
<message>
<location filename="../kyfiledialog.cpp" line="221"/>
<source>Go Back</source>
<translation></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="228"/>
<source>Go Forward</source>
<translation></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="234"/>
<source>Cd Up</source>
<translation></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="241"/>
<source>Search</source>
<translation></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="249"/>
<source>View Type</source>
<translation></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="260"/>
<source>Sort Type</source>
<translation></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="265"/>
<location filename="../kyfiledialog.cpp" line="378"/>
<source>Maximize</source>
<translation></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="279"/>
<source>Close</source>
<translation></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="375"/>
<source>Restore</source>
<translation></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="987"/>
<source>Name</source>
<translation></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="990"/>
<location filename="../kyfiledialog.cpp" line="1578"/>
<source>Open</source>
<translation></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="991"/>
<location filename="../kyfiledialog.cpp" line="1000"/>
<source>Cancel</source>
<translation></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="995"/>
<source>Save as</source>
<translation></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="997"/>
<source>New Folder</source>
<translation></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="999"/>
<location filename="../kyfiledialog.cpp" line="1582"/>
<source>Save</source>
<translation></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="1035"/>
<location filename="../kyfiledialog.cpp" line="1036"/>
<location filename="../kyfiledialog.cpp" line="1038"/>
<source>Directories</source>
<translation></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="1227"/>
<source>Warning</source>
<translation></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="1227"/>
<source>exist, are you sure replace?</source>
<translation> </translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="1920"/>
<source>NewFolder</source>
<translation></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="2208"/>
<source>Undo</source>
<translation></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="2215"/>
<source>Redo</source>
<translation></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="2414"/>
<source>warn</source>
<translation></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="2414"/>
<source>This operation is not supported.</source>
<translation></translation>
</message>
</context>
</TS>

View File

@ -0,0 +1,212 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="cs_CZ">
<context>
<name>QObject</name>
<message>
<location filename="../ui_kyfiledialog.cpp" line="259"/>
<source>File Name</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="263"/>
<source>Modified Date</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="267"/>
<source>File Type</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="271"/>
<source>File Size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="275"/>
<source>Original Path</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="284"/>
<source>Descending</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="289"/>
<source>Ascending</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="295"/>
<source>Use global sorting</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="315"/>
<source>List View</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="316"/>
<source>Icon View</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>UKUI::TabWidget::DefaultSlideAnimatorFactory</name>
<message>
<location filename="../../libqt5-ukui-style/animations/tabwidget/ukui-tabwidget-default-slide-animator-factory.h" line="50"/>
<source>Default Slide</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../libqt5-ukui-style/animations/tabwidget/ukui-tabwidget-default-slide-animator-factory.h" line="51"/>
<source>Let tab widget switch with a slide animation.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>UKUIFileDialog::KyFileDialogHelper</name>
<message>
<location filename="../kyfiledialog.cpp" line="2715"/>
<source>Open File</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="2716"/>
<source>Save File</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="2729"/>
<source>All Files (*)</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>UKUIFileDialog::KyNativeFileDialog</name>
<message>
<location filename="../kyfiledialog.cpp" line="221"/>
<source>Go Back</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="228"/>
<source>Go Forward</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="234"/>
<source>Cd Up</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="241"/>
<source>Search</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="249"/>
<source>View Type</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="260"/>
<source>Sort Type</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="265"/>
<location filename="../kyfiledialog.cpp" line="378"/>
<source>Maximize</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="279"/>
<source>Close</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="375"/>
<source>Restore</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="987"/>
<source>Name</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="990"/>
<location filename="../kyfiledialog.cpp" line="1578"/>
<source>Open</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="991"/>
<location filename="../kyfiledialog.cpp" line="1000"/>
<source>Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="995"/>
<source>Save as</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="997"/>
<source>New Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="999"/>
<location filename="../kyfiledialog.cpp" line="1582"/>
<source>Save</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="1035"/>
<location filename="../kyfiledialog.cpp" line="1036"/>
<location filename="../kyfiledialog.cpp" line="1038"/>
<source>Directories</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="1227"/>
<source>Warning</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="1227"/>
<source>exist, are you sure replace?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="1920"/>
<source>NewFolder</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="2208"/>
<source>Undo</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="2215"/>
<source>Redo</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="2414"/>
<source>warn</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="2414"/>
<source>This operation is not supported.</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@ -0,0 +1,361 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="de">
<context>
<name>MainWindow</name>
<message>
<location filename="../test/filedialog/mainwindow.ui" line="14"/>
<location filename="../test/highlighted-icon-button/mainwindow.ui" line="14"/>
<location filename="../test/mps-style-application/mainwindow.ui" line="14"/>
<location filename="../test/system-settings/mainwindow.ui" line="14"/>
<source>MainWindow</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../test/filedialog/mainwindow.ui" line="30"/>
<source>test open</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../test/filedialog/mainwindow.ui" line="37"/>
<source>directory</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../test/filedialog/mainwindow.ui" line="47"/>
<source>selected uri</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../test/filedialog/mainwindow.ui" line="54"/>
<source>test show</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../test/filedialog/mainwindow.ui" line="64"/>
<source>test exec</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../test/filedialog/mainwindow.ui" line="71"/>
<source>test save</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../test/filedialog/mainwindow.ui" line="78"/>
<source>test static open</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../test/highlighted-icon-button/mainwindow.ui" line="30"/>
<location filename="../test/mps-style-application/mainwindow.ui" line="36"/>
<source>PushButton</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../test/highlighted-icon-button/mainwindow.ui" line="47"/>
<source>use auto highlight icon</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../test/highlighted-icon-button/mainwindow.ui" line="54"/>
<location filename="../test/mps-style-application/mainwindow.ui" line="43"/>
<source>...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../test/highlighted-icon-button/mainwindow.ui" line="72"/>
<source>highlightOnly</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../test/highlighted-icon-button/mainwindow.ui" line="77"/>
<source>bothDefaultAndHighlight</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../test/mps-style-application/mainwindow.ui" line="50"/>
<source>RadioButton</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../test/system-settings/mainwindow.ui" line="21"/>
<source>style</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../test/system-settings/mainwindow.ui" line="31"/>
<source>icon</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../test/system-settings/mainwindow.ui" line="41"/>
<source>menu opacity</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../test/system-settings/mainwindow.ui" line="55"/>
<source>font</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MessageBox</name>
<message>
<location filename="../qt5-ukui-platformtheme/widget/messagebox/message-box.cpp" line="97"/>
<source>Close</source>
<translation>Schließen</translation>
</message>
</context>
<context>
<name>QApplication</name>
<message>
<location filename="../qt5-ukui-platformtheme/widget/messagebox/message-box.h" line="272"/>
<source>Executable &apos;%1&apos; requires Qt %2, found Qt %3.</source>
<translation>Die ausführbare Datei &apos;%1&apos; erfordert Qt %2, Qt %3 gefunden.</translation>
</message>
<message>
<location filename="../qt5-ukui-platformtheme/widget/messagebox/message-box.h" line="274"/>
<source>Incompatible Qt Library Error</source>
<translation>Fehler in der inkompatiblen Qt-Bibliothek</translation>
</message>
</context>
<context>
<name>QDialogButtonBox</name>
<message>
<location filename="../qt5-ukui-platformtheme/widget/messagebox/message-box.cpp" line="362"/>
<location filename="../qt5-ukui-platformtheme/widget/messagebox/message-box.cpp" line="1090"/>
<source>OK</source>
<translation>OKAY</translation>
</message>
</context>
<context>
<name>QMessageBox</name>
<message>
<location filename="../qt5-ukui-platformtheme/widget/messagebox/message-box.cpp" line="418"/>
<location filename="../qt5-ukui-platformtheme/widget/messagebox/message-box.cpp" line="881"/>
<location filename="../qt5-ukui-platformtheme/widget/messagebox/message-box.cpp" line="1517"/>
<source>Show Details...</source>
<translation>Details anzeigen...</translation>
</message>
<message>
<location filename="../qt5-ukui-platformtheme/widget/messagebox/message-box.cpp" line="881"/>
<location filename="../qt5-ukui-platformtheme/widget/messagebox/message-box.cpp" line="1517"/>
<source>Hide Details...</source>
<translation>Details ausblenden...</translation>
</message>
</context>
<context>
<name>QObject</name>
<message>
<location filename="../qt5-ukui-filedialog/ui_kyfiledialog.cpp" line="259"/>
<source>File Name</source>
<translation>Dateiname</translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/ui_kyfiledialog.cpp" line="263"/>
<source>Modified Date</source>
<translation>Änderungsdatum</translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/ui_kyfiledialog.cpp" line="267"/>
<source>File Type</source>
<translation>Dateityp</translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/ui_kyfiledialog.cpp" line="271"/>
<source>File Size</source>
<translation>Dateigröße</translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/ui_kyfiledialog.cpp" line="275"/>
<source>Original Path</source>
<translation>Ursprünglicher Pfad</translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/ui_kyfiledialog.cpp" line="284"/>
<source>Descending</source>
<translation>Absteigend</translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/ui_kyfiledialog.cpp" line="289"/>
<source>Ascending</source>
<translation>Aufsteigend</translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/ui_kyfiledialog.cpp" line="295"/>
<source>Use global sorting</source>
<translation>Globale Sortierung verwenden</translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/ui_kyfiledialog.cpp" line="315"/>
<source>List View</source>
<translation>Listenansicht</translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/ui_kyfiledialog.cpp" line="316"/>
<source>Icon View</source>
<translation>Icon-Ansicht</translation>
</message>
<message>
<location filename="../qt5-ukui-platformtheme/widget/messagebox/message-box.cpp" line="730"/>
<source>Close</source>
<translation>Schließen</translation>
</message>
</context>
<context>
<name>UKUI::TabWidget::DefaultSlideAnimatorFactory</name>
<message>
<location filename="../libqt5-ukui-style/animations/tabwidget/ukui-tabwidget-default-slide-animator-factory.h" line="50"/>
<source>Default Slide</source>
<translation>Standard-Folie</translation>
</message>
<message>
<location filename="../libqt5-ukui-style/animations/tabwidget/ukui-tabwidget-default-slide-animator-factory.h" line="51"/>
<source>Let tab widget switch with a slide animation.</source>
<translation>Lassen Sie das Tab-Widget mit einer Folienanimation wechseln.</translation>
</message>
</context>
<context>
<name>UKUIFileDialog::KyFileDialogHelper</name>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="2706"/>
<source>Open File</source>
<translation>Offene Linie</translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="2707"/>
<source>Save File</source>
<translation>Datei speichern</translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="2720"/>
<source>All Files (*)</source>
<translation>Alle Dateien (*)</translation>
</message>
</context>
<context>
<name>UKUIFileDialog::KyNativeFileDialog</name>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="221"/>
<source>Go Back</source>
<translation>Zurück</translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="228"/>
<source>Go Forward</source>
<translation>Vorwärts gehen</translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="234"/>
<source>Cd Up</source>
<translation>Cd nach oben</translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="241"/>
<source>Search</source>
<translation>Suchen</translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="249"/>
<source>View Type</source>
<translation>Typ der Ansicht</translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="260"/>
<source>Sort Type</source>
<translation>Art der Sortierung</translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="265"/>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="378"/>
<source>Maximize</source>
<translation>Maximieren</translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="279"/>
<source>Close</source>
<translation>Schließen</translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="375"/>
<source>Restore</source>
<translation>Wiederherstellen</translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="987"/>
<source>Name</source>
<translation>Name</translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="990"/>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="1578"/>
<source>Open</source>
<translation>Offen</translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="991"/>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="1000"/>
<source>Cancel</source>
<translation>Abbrechen</translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="995"/>
<source>Save as</source>
<translation>Speichern unter</translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="997"/>
<source>New Folder</source>
<translation>Neuer Ordner</translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="999"/>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="1582"/>
<source>Save</source>
<translation>Retten</translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="1035"/>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="1036"/>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="1038"/>
<source>Directories</source>
<translation>Verzeichnisse</translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="1227"/>
<source>Warning</source>
<translation>Warnung</translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="1227"/>
<source>exist, are you sure replace?</source>
<translation>existieren, sind Sie sicher, ersetzen?</translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="1920"/>
<source>NewFolder</source>
<translation>Neuer Ordner</translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="2208"/>
<source>Undo</source>
<translation>Aufmachen</translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="2215"/>
<source>Redo</source>
<translation>Noch einmal machen</translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="2414"/>
<source>warn</source>
<translation>warnen</translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="2414"/>
<source>This operation is not supported.</source>
<translation>Dieser Vorgang wird nicht unterstützt.</translation>
</message>
</context>
</TS>

View File

@ -0,0 +1,252 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="en_US">
<context>
<name>MessageBox</name>
<message>
<source>Close</source>
<translation type="vanished">Close</translation>
</message>
</context>
<context>
<name>QApplication</name>
<message>
<source>Executable &apos;%1&apos; requires Qt %2, found Qt %3.</source>
<translation type="vanished">Executable &apos;%1&apos; requires Qt %2, found Qt %3.</translation>
</message>
<message>
<source>Incompatible Qt Library Error</source>
<translation type="vanished">Incompatible Qt Library Error</translation>
</message>
</context>
<context>
<name>QDialogButtonBox</name>
<message>
<source>OK</source>
<translation type="vanished">OK</translation>
</message>
</context>
<context>
<name>QMessageBox</name>
<message>
<source>Show Details...</source>
<translation type="vanished">Show Details...</translation>
</message>
<message>
<source>Hide Details...</source>
<translation type="vanished">Hide Details...</translation>
</message>
</context>
<context>
<name>QObject</name>
<message>
<location filename="../ui_kyfiledialog.cpp" line="259"/>
<source>File Name</source>
<translation>File Name</translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="263"/>
<source>Modified Date</source>
<translation>Modified Date</translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="267"/>
<source>File Type</source>
<translation>File Type</translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="271"/>
<source>File Size</source>
<translation>File Size</translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="275"/>
<source>Original Path</source>
<translation>Original Path</translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="284"/>
<source>Descending</source>
<translation>Descending</translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="289"/>
<source>Ascending</source>
<translation>Ascending</translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="295"/>
<source>Use global sorting</source>
<translation>Use global sorting</translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="315"/>
<source>List View</source>
<translation>List View</translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="316"/>
<source>Icon View</source>
<translation>Icon View</translation>
</message>
<message>
<source>Close</source>
<translation type="vanished">Close</translation>
</message>
</context>
<context>
<name>UKUI::TabWidget::DefaultSlideAnimatorFactory</name>
<message>
<location filename="../../libqt5-ukui-style/animations/tabwidget/ukui-tabwidget-default-slide-animator-factory.h" line="50"/>
<source>Default Slide</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../libqt5-ukui-style/animations/tabwidget/ukui-tabwidget-default-slide-animator-factory.h" line="51"/>
<source>Let tab widget switch with a slide animation.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>UKUIFileDialog::KyFileDialogHelper</name>
<message>
<location filename="../kyfiledialog.cpp" line="2715"/>
<source>Open File</source>
<translation>Open File</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="2716"/>
<source>Save File</source>
<translation>Save File</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="2729"/>
<source>All Files (*)</source>
<translation>All Files (*)</translation>
</message>
</context>
<context>
<name>UKUIFileDialog::KyNativeFileDialog</name>
<message>
<location filename="../kyfiledialog.cpp" line="221"/>
<source>Go Back</source>
<translation>Go Back</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="228"/>
<source>Go Forward</source>
<translation>Go Forward</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="234"/>
<source>Cd Up</source>
<translation>Cd Up</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="241"/>
<source>Search</source>
<translation>Search</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="249"/>
<source>View Type</source>
<translation>View Type</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="260"/>
<source>Sort Type</source>
<translation>Sort Type</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="265"/>
<location filename="../kyfiledialog.cpp" line="378"/>
<source>Maximize</source>
<translation>Maximize</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="279"/>
<source>Close</source>
<translation>Close</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="375"/>
<source>Restore</source>
<translation>Restore</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="987"/>
<source>Name</source>
<translation>Name</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="990"/>
<location filename="../kyfiledialog.cpp" line="1578"/>
<source>Open</source>
<translation>Open</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="991"/>
<location filename="../kyfiledialog.cpp" line="1000"/>
<source>Cancel</source>
<translation>Cancel</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="995"/>
<source>Save as</source>
<translation>Save as</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="997"/>
<source>New Folder</source>
<translation>New Folder</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="999"/>
<location filename="../kyfiledialog.cpp" line="1582"/>
<source>Save</source>
<translation>Save</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="1035"/>
<location filename="../kyfiledialog.cpp" line="1036"/>
<location filename="../kyfiledialog.cpp" line="1038"/>
<source>Directories</source>
<translation>Directories</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="1227"/>
<source>Warning</source>
<translation>Warning</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="1227"/>
<source>exist, are you sure replace?</source>
<translation>exist, are you sure replace?</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="1920"/>
<source>NewFolder</source>
<translation>NewFolder</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="2208"/>
<source>Undo</source>
<translation>Undo</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="2215"/>
<source>Redo</source>
<translation>Redo</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="2414"/>
<source>warn</source>
<translation>warn</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="2414"/>
<source>This operation is not supported.</source>
<translation>This operation is not supported.</translation>
</message>
</context>
</TS>

View File

@ -0,0 +1,361 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="es">
<context>
<name>MainWindow</name>
<message>
<location filename="../test/filedialog/mainwindow.ui" line="14"/>
<location filename="../test/highlighted-icon-button/mainwindow.ui" line="14"/>
<location filename="../test/mps-style-application/mainwindow.ui" line="14"/>
<location filename="../test/system-settings/mainwindow.ui" line="14"/>
<source>MainWindow</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../test/filedialog/mainwindow.ui" line="30"/>
<source>test open</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../test/filedialog/mainwindow.ui" line="37"/>
<source>directory</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../test/filedialog/mainwindow.ui" line="47"/>
<source>selected uri</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../test/filedialog/mainwindow.ui" line="54"/>
<source>test show</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../test/filedialog/mainwindow.ui" line="64"/>
<source>test exec</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../test/filedialog/mainwindow.ui" line="71"/>
<source>test save</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../test/filedialog/mainwindow.ui" line="78"/>
<source>test static open</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../test/highlighted-icon-button/mainwindow.ui" line="30"/>
<location filename="../test/mps-style-application/mainwindow.ui" line="36"/>
<source>PushButton</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../test/highlighted-icon-button/mainwindow.ui" line="47"/>
<source>use auto highlight icon</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../test/highlighted-icon-button/mainwindow.ui" line="54"/>
<location filename="../test/mps-style-application/mainwindow.ui" line="43"/>
<source>...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../test/highlighted-icon-button/mainwindow.ui" line="72"/>
<source>highlightOnly</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../test/highlighted-icon-button/mainwindow.ui" line="77"/>
<source>bothDefaultAndHighlight</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../test/mps-style-application/mainwindow.ui" line="50"/>
<source>RadioButton</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../test/system-settings/mainwindow.ui" line="21"/>
<source>style</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../test/system-settings/mainwindow.ui" line="31"/>
<source>icon</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../test/system-settings/mainwindow.ui" line="41"/>
<source>menu opacity</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../test/system-settings/mainwindow.ui" line="55"/>
<source>font</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MessageBox</name>
<message>
<location filename="../qt5-ukui-platformtheme/widget/messagebox/message-box.cpp" line="97"/>
<source>Close</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>QApplication</name>
<message>
<location filename="../qt5-ukui-platformtheme/widget/messagebox/message-box.h" line="272"/>
<source>Executable &apos;%1&apos; requires Qt %2, found Qt %3.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qt5-ukui-platformtheme/widget/messagebox/message-box.h" line="274"/>
<source>Incompatible Qt Library Error</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>QDialogButtonBox</name>
<message>
<location filename="../qt5-ukui-platformtheme/widget/messagebox/message-box.cpp" line="362"/>
<location filename="../qt5-ukui-platformtheme/widget/messagebox/message-box.cpp" line="1090"/>
<source>OK</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>QMessageBox</name>
<message>
<location filename="../qt5-ukui-platformtheme/widget/messagebox/message-box.cpp" line="418"/>
<location filename="../qt5-ukui-platformtheme/widget/messagebox/message-box.cpp" line="881"/>
<location filename="../qt5-ukui-platformtheme/widget/messagebox/message-box.cpp" line="1517"/>
<source>Show Details...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qt5-ukui-platformtheme/widget/messagebox/message-box.cpp" line="881"/>
<location filename="../qt5-ukui-platformtheme/widget/messagebox/message-box.cpp" line="1517"/>
<source>Hide Details...</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>QObject</name>
<message>
<location filename="../qt5-ukui-filedialog/ui_kyfiledialog.cpp" line="259"/>
<source>File Name</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/ui_kyfiledialog.cpp" line="263"/>
<source>Modified Date</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/ui_kyfiledialog.cpp" line="267"/>
<source>File Type</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/ui_kyfiledialog.cpp" line="271"/>
<source>File Size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/ui_kyfiledialog.cpp" line="275"/>
<source>Original Path</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/ui_kyfiledialog.cpp" line="284"/>
<source>Descending</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/ui_kyfiledialog.cpp" line="289"/>
<source>Ascending</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/ui_kyfiledialog.cpp" line="295"/>
<source>Use global sorting</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/ui_kyfiledialog.cpp" line="315"/>
<source>List View</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/ui_kyfiledialog.cpp" line="316"/>
<source>Icon View</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qt5-ukui-platformtheme/widget/messagebox/message-box.cpp" line="730"/>
<source>Close</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>UKUI::TabWidget::DefaultSlideAnimatorFactory</name>
<message>
<location filename="../libqt5-ukui-style/animations/tabwidget/ukui-tabwidget-default-slide-animator-factory.h" line="50"/>
<source>Default Slide</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../libqt5-ukui-style/animations/tabwidget/ukui-tabwidget-default-slide-animator-factory.h" line="51"/>
<source>Let tab widget switch with a slide animation.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>UKUIFileDialog::KyFileDialogHelper</name>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="2706"/>
<source>Open File</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="2707"/>
<source>Save File</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="2720"/>
<source>All Files (*)</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>UKUIFileDialog::KyNativeFileDialog</name>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="221"/>
<source>Go Back</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="228"/>
<source>Go Forward</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="234"/>
<source>Cd Up</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="241"/>
<source>Search</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="249"/>
<source>View Type</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="260"/>
<source>Sort Type</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="265"/>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="378"/>
<source>Maximize</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="279"/>
<source>Close</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="375"/>
<source>Restore</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="987"/>
<source>Name</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="990"/>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="1578"/>
<source>Open</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="991"/>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="1000"/>
<source>Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="995"/>
<source>Save as</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="997"/>
<source>New Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="999"/>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="1582"/>
<source>Save</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="1035"/>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="1036"/>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="1038"/>
<source>Directories</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="1227"/>
<source>Warning</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="1227"/>
<source>exist, are you sure replace?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="1920"/>
<source>NewFolder</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="2208"/>
<source>Undo</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="2215"/>
<source>Redo</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="2414"/>
<source>warn</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="2414"/>
<source>This operation is not supported.</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@ -0,0 +1,212 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="fa_IR">
<context>
<name>QObject</name>
<message>
<location filename="../ui_kyfiledialog.cpp" line="259"/>
<source>File Name</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="263"/>
<source>Modified Date</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="267"/>
<source>File Type</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="271"/>
<source>File Size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="275"/>
<source>Original Path</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="284"/>
<source>Descending</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="289"/>
<source>Ascending</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="295"/>
<source>Use global sorting</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="315"/>
<source>List View</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="316"/>
<source>Icon View</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>UKUI::TabWidget::DefaultSlideAnimatorFactory</name>
<message>
<location filename="../../libqt5-ukui-style/animations/tabwidget/ukui-tabwidget-default-slide-animator-factory.h" line="50"/>
<source>Default Slide</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../libqt5-ukui-style/animations/tabwidget/ukui-tabwidget-default-slide-animator-factory.h" line="51"/>
<source>Let tab widget switch with a slide animation.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>UKUIFileDialog::KyFileDialogHelper</name>
<message>
<location filename="../kyfiledialog.cpp" line="2715"/>
<source>Open File</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="2716"/>
<source>Save File</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="2729"/>
<source>All Files (*)</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>UKUIFileDialog::KyNativeFileDialog</name>
<message>
<location filename="../kyfiledialog.cpp" line="221"/>
<source>Go Back</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="228"/>
<source>Go Forward</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="234"/>
<source>Cd Up</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="241"/>
<source>Search</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="249"/>
<source>View Type</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="260"/>
<source>Sort Type</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="265"/>
<location filename="../kyfiledialog.cpp" line="378"/>
<source>Maximize</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="279"/>
<source>Close</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="375"/>
<source>Restore</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="987"/>
<source>Name</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="990"/>
<location filename="../kyfiledialog.cpp" line="1578"/>
<source>Open</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="991"/>
<location filename="../kyfiledialog.cpp" line="1000"/>
<source>Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="995"/>
<source>Save as</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="997"/>
<source>New Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="999"/>
<location filename="../kyfiledialog.cpp" line="1582"/>
<source>Save</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="1035"/>
<location filename="../kyfiledialog.cpp" line="1036"/>
<location filename="../kyfiledialog.cpp" line="1038"/>
<source>Directories</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="1227"/>
<source>Warning</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="1227"/>
<source>exist, are you sure replace?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="1920"/>
<source>NewFolder</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="2208"/>
<source>Undo</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="2215"/>
<source>Redo</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="2414"/>
<source>warn</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="2414"/>
<source>This operation is not supported.</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@ -0,0 +1,252 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="fr_FR">
<context>
<name>MessageBox</name>
<message>
<source>Close</source>
<translation type="vanished">Fermer</translation>
</message>
</context>
<context>
<name>QApplication</name>
<message>
<source>Executable &apos;%1&apos; requires Qt %2, found Qt %3.</source>
<translation type="vanished">Lexécutable &apos;%1&apos; nécessite Qt %2, trouvé Qt %3.</translation>
</message>
<message>
<source>Incompatible Qt Library Error</source>
<translation type="vanished">Erreur de bibliothèque Qt incompatible</translation>
</message>
</context>
<context>
<name>QDialogButtonBox</name>
<message>
<source>OK</source>
<translation type="vanished">DACCORD</translation>
</message>
</context>
<context>
<name>QMessageBox</name>
<message>
<source>Show Details...</source>
<translation type="vanished">Afficher les détails...</translation>
</message>
<message>
<source>Hide Details...</source>
<translation type="vanished">Masquer les détails...</translation>
</message>
</context>
<context>
<name>QObject</name>
<message>
<location filename="../ui_kyfiledialog.cpp" line="259"/>
<source>File Name</source>
<translation>Nom du fichier</translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="263"/>
<source>Modified Date</source>
<translation>Date de modification</translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="267"/>
<source>File Type</source>
<translation>Type de fichier</translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="271"/>
<source>File Size</source>
<translation>Taille du fichier</translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="275"/>
<source>Original Path</source>
<translation>Chemin daccès dorigine</translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="284"/>
<source>Descending</source>
<translation>Descendant</translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="289"/>
<source>Ascending</source>
<translation>Ascendant</translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="295"/>
<source>Use global sorting</source>
<translation>Utiliser le tri global</translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="315"/>
<source>List View</source>
<translation>Affichage en liste</translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="316"/>
<source>Icon View</source>
<translation>Affichage de licône</translation>
</message>
<message>
<source>Close</source>
<translation type="obsolete">Fermer</translation>
</message>
</context>
<context>
<name>UKUI::TabWidget::DefaultSlideAnimatorFactory</name>
<message>
<location filename="../../libqt5-ukui-style/animations/tabwidget/ukui-tabwidget-default-slide-animator-factory.h" line="50"/>
<source>Default Slide</source>
<translation>Diapositive par défaut</translation>
</message>
<message>
<location filename="../../libqt5-ukui-style/animations/tabwidget/ukui-tabwidget-default-slide-animator-factory.h" line="51"/>
<source>Let tab widget switch with a slide animation.</source>
<translation>Laissez le widget donglet basculer avec une animation de diapositive.</translation>
</message>
</context>
<context>
<name>UKUIFileDialog::KyFileDialogHelper</name>
<message>
<location filename="../kyfiledialog.cpp" line="2715"/>
<source>Open File</source>
<translation>Ouvrir un fichier</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="2716"/>
<source>Save File</source>
<translation>Enregistrer le fichier</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="2729"/>
<source>All Files (*)</source>
<translation>Tous les fichiers (*)</translation>
</message>
</context>
<context>
<name>UKUIFileDialog::KyNativeFileDialog</name>
<message>
<location filename="../kyfiledialog.cpp" line="221"/>
<source>Go Back</source>
<translation>Retour</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="228"/>
<source>Go Forward</source>
<translation>Avancer</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="234"/>
<source>Cd Up</source>
<translation>Cd Up</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="241"/>
<source>Search</source>
<translation>Rechercher</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="249"/>
<source>View Type</source>
<translation>Type de vue</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="260"/>
<source>Sort Type</source>
<translation>Type de tri</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="265"/>
<location filename="../kyfiledialog.cpp" line="378"/>
<source>Maximize</source>
<translation>Maximiser</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="279"/>
<source>Close</source>
<translation>Fermer</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="375"/>
<source>Restore</source>
<translation>Restaurer</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="987"/>
<source>Name</source>
<translation>Nom</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="990"/>
<location filename="../kyfiledialog.cpp" line="1578"/>
<source>Open</source>
<translation>Ouvrir</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="991"/>
<location filename="../kyfiledialog.cpp" line="1000"/>
<source>Cancel</source>
<translation>Annuler</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="995"/>
<source>Save as</source>
<translation>Enregistrer sous</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="997"/>
<source>New Folder</source>
<translation>Nouveau dossier</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="999"/>
<location filename="../kyfiledialog.cpp" line="1582"/>
<source>Save</source>
<translation>Sauvegarder</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="1035"/>
<location filename="../kyfiledialog.cpp" line="1036"/>
<location filename="../kyfiledialog.cpp" line="1038"/>
<source>Directories</source>
<translation>Téléphonique</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="1227"/>
<source>Warning</source>
<translation>Avertissement</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="1227"/>
<source>exist, are you sure replace?</source>
<translation>exister, êtes-vous sûr de remplacer&#xa0;?</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="1920"/>
<source>NewFolder</source>
<translation>NouveauDossier</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="2208"/>
<source>Undo</source>
<translation>Défaire</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="2215"/>
<source>Redo</source>
<translation>Refaire</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="2414"/>
<source>warn</source>
<translation>avertir</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="2414"/>
<source>This operation is not supported.</source>
<translation>Cette opération nest pas prise en charge.</translation>
</message>
</context>
</TS>

View File

@ -0,0 +1,252 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="kk_KZ">
<context>
<name>MessageBox</name>
<message>
<source>Close</source>
<translation type="vanished">Жабу</translation>
</message>
</context>
<context>
<name>QApplication</name>
<message>
<source>Executable &apos;%1&apos; requires Qt %2, found Qt %3.</source>
<translation type="vanished">Орындалатын &apos;% 1&apos; Qt% 2 дегенді қажет етеді, табылған Qt% 3.</translation>
</message>
<message>
<source>Incompatible Qt Library Error</source>
<translation type="vanished">Үйлеспейтін Qt кітапхана қатесі</translation>
</message>
</context>
<context>
<name>QDialogButtonBox</name>
<message>
<source>OK</source>
<translation type="vanished">ЖАҚСЫ</translation>
</message>
</context>
<context>
<name>QMessageBox</name>
<message>
<source>Show Details...</source>
<translation type="vanished">Егжей-тегжейін көрсету...</translation>
</message>
<message>
<source>Hide Details...</source>
<translation type="vanished">Мәліметтерді жасыру...</translation>
</message>
</context>
<context>
<name>QObject</name>
<message>
<location filename="../ui_kyfiledialog.cpp" line="259"/>
<source>File Name</source>
<translation>Файл атауы</translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="263"/>
<source>Modified Date</source>
<translation>Өзгертілген күн</translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="267"/>
<source>File Type</source>
<translation>Файл түрі</translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="271"/>
<source>File Size</source>
<translation>Файл өлшемі</translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="275"/>
<source>Original Path</source>
<translation>Бастапқы жол</translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="284"/>
<source>Descending</source>
<translation>Кему</translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="289"/>
<source>Ascending</source>
<translation>Көтерілу</translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="295"/>
<source>Use global sorting</source>
<translation>Ғаламдық сұрыптауды пайдалану</translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="315"/>
<source>List View</source>
<translation>Тізім көрінісі</translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="316"/>
<source>Icon View</source>
<translation>Белгіше көрінісі</translation>
</message>
<message>
<source>Close</source>
<translation type="obsolete">Жабу</translation>
</message>
</context>
<context>
<name>UKUI::TabWidget::DefaultSlideAnimatorFactory</name>
<message>
<location filename="../../libqt5-ukui-style/animations/tabwidget/ukui-tabwidget-default-slide-animator-factory.h" line="50"/>
<source>Default Slide</source>
<translation>Әдетті слайд</translation>
</message>
<message>
<location filename="../../libqt5-ukui-style/animations/tabwidget/ukui-tabwidget-default-slide-animator-factory.h" line="51"/>
<source>Let tab widget switch with a slide animation.</source>
<translation>Слайд анимациясы бар tab widget ауыстырып қосқышына рұқсат етіңіз.</translation>
</message>
</context>
<context>
<name>UKUIFileDialog::KyFileDialogHelper</name>
<message>
<location filename="../kyfiledialog.cpp" line="2715"/>
<source>Open File</source>
<translation>Файлды ашу</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="2716"/>
<source>Save File</source>
<translation>Файлды сақтау</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="2729"/>
<source>All Files (*)</source>
<translation>Барлық файлдар (*)</translation>
</message>
</context>
<context>
<name>UKUIFileDialog::KyNativeFileDialog</name>
<message>
<location filename="../kyfiledialog.cpp" line="221"/>
<source>Go Back</source>
<translation>Қайтып бар</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="228"/>
<source>Go Forward</source>
<translation>Алға жылжу</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="234"/>
<source>Cd Up</source>
<translation>Cd Up</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="241"/>
<source>Search</source>
<translation>Іздеу</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="249"/>
<source>View Type</source>
<translation>Көрініс түрі</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="260"/>
<source>Sort Type</source>
<translation>Сұрыптау түрі</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="265"/>
<location filename="../kyfiledialog.cpp" line="378"/>
<source>Maximize</source>
<translation>Барынша көбейту</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="279"/>
<source>Close</source>
<translation>Жабу</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="375"/>
<source>Restore</source>
<translation>Қалпына келтіру</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="987"/>
<source>Name</source>
<translation>Атауы</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="990"/>
<location filename="../kyfiledialog.cpp" line="1578"/>
<source>Open</source>
<translation>Ашу</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="991"/>
<location filename="../kyfiledialog.cpp" line="1000"/>
<source>Cancel</source>
<translation>Болдырмау</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="995"/>
<source>Save as</source>
<translation>Басқаша сақтау</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="997"/>
<source>New Folder</source>
<translation>Жаңа қапшық</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="999"/>
<location filename="../kyfiledialog.cpp" line="1582"/>
<source>Save</source>
<translation>Сақтау</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="1035"/>
<location filename="../kyfiledialog.cpp" line="1036"/>
<location filename="../kyfiledialog.cpp" line="1038"/>
<source>Directories</source>
<translation>Каталогтар</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="1227"/>
<source>Warning</source>
<translation>Ескерту</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="1227"/>
<source>exist, are you sure replace?</source>
<translation>бар, сіз алмастырасыз ба?</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="1920"/>
<source>NewFolder</source>
<translation>NewFolder</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="2208"/>
<source>Undo</source>
<translation>Болдырмау</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="2215"/>
<source>Redo</source>
<translation>Редо</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="2414"/>
<source>warn</source>
<translation>Ескерту</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="2414"/>
<source>This operation is not supported.</source>
<translation>Бұл операцияға қолдау көрсетілмеген.</translation>
</message>
</context>
</TS>

View File

@ -0,0 +1,252 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="ky_KG">
<context>
<name>MessageBox</name>
<message>
<source>Close</source>
<translation type="vanished">Жабуу</translation>
</message>
</context>
<context>
<name>QApplication</name>
<message>
<source>Executable &apos;%1&apos; requires Qt %2, found Qt %3.</source>
<translation type="vanished">Аткарыла турган &apos;%1&apos; Qt %2 талап кылынат, Qt %3 табылган.</translation>
</message>
<message>
<source>Incompatible Qt Library Error</source>
<translation type="vanished">Qt китепканасынын шайкеш келбеген катасы</translation>
</message>
</context>
<context>
<name>QDialogButtonBox</name>
<message>
<source>OK</source>
<translation type="vanished">МАКУЛ</translation>
</message>
</context>
<context>
<name>QMessageBox</name>
<message>
<source>Show Details...</source>
<translation type="vanished">Егжей-тегжейин</translation>
</message>
<message>
<source>Hide Details...</source>
<translation type="vanished">Маалымат жашыруу...</translation>
</message>
</context>
<context>
<name>QObject</name>
<message>
<location filename="../ui_kyfiledialog.cpp" line="259"/>
<source>File Name</source>
<translation>Файлдын аты</translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="263"/>
<source>Modified Date</source>
<translation>Өзгөртүлгөн дата</translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="267"/>
<source>File Type</source>
<translation>Файл түрү</translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="271"/>
<source>File Size</source>
<translation>Файл өлчөмү</translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="275"/>
<source>Original Path</source>
<translation>Оригиналдуу жол</translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="284"/>
<source>Descending</source>
<translation>Түшүп</translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="289"/>
<source>Ascending</source>
<translation>Көтөрүлүш</translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="295"/>
<source>Use global sorting</source>
<translation>Глобалдык сорттоону колдонуу</translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="315"/>
<source>List View</source>
<translation>Тизменин көрүнүшү</translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="316"/>
<source>Icon View</source>
<translation>Икона көрүнүшү</translation>
</message>
<message>
<source>Close</source>
<translation type="obsolete">Жабуу</translation>
</message>
</context>
<context>
<name>UKUI::TabWidget::DefaultSlideAnimatorFactory</name>
<message>
<location filename="../../libqt5-ukui-style/animations/tabwidget/ukui-tabwidget-default-slide-animator-factory.h" line="50"/>
<source>Default Slide</source>
<translation>Дефолт слайды</translation>
</message>
<message>
<location filename="../../libqt5-ukui-style/animations/tabwidget/ukui-tabwidget-default-slide-animator-factory.h" line="51"/>
<source>Let tab widget switch with a slide animation.</source>
<translation>Таблица виджет слайд анимациясы менен которуп берсин.</translation>
</message>
</context>
<context>
<name>UKUIFileDialog::KyFileDialogHelper</name>
<message>
<location filename="../kyfiledialog.cpp" line="2715"/>
<source>Open File</source>
<translation>Файлды ачуу</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="2716"/>
<source>Save File</source>
<translation>Файлды сактоо</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="2729"/>
<source>All Files (*)</source>
<translation>Бардык файлдар (*)</translation>
</message>
</context>
<context>
<name>UKUIFileDialog::KyNativeFileDialog</name>
<message>
<location filename="../kyfiledialog.cpp" line="221"/>
<source>Go Back</source>
<translation>Артка кайрыл</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="228"/>
<source>Go Forward</source>
<translation>Алга илгерилетүү</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="234"/>
<source>Cd Up</source>
<translation>Cd Up</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="241"/>
<source>Search</source>
<translation>Издөө</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="249"/>
<source>View Type</source>
<translation>Көрүү түрү</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="260"/>
<source>Sort Type</source>
<translation>Түрүн сорттоо</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="265"/>
<location filename="../kyfiledialog.cpp" line="378"/>
<source>Maximize</source>
<translation>Максималдуу</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="279"/>
<source>Close</source>
<translation>Жабуу</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="375"/>
<source>Restore</source>
<translation>Калыбына келтирүү</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="987"/>
<source>Name</source>
<translation>Аты-жөнү</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="990"/>
<location filename="../kyfiledialog.cpp" line="1578"/>
<source>Open</source>
<translation>Ачуу</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="991"/>
<location filename="../kyfiledialog.cpp" line="1000"/>
<source>Cancel</source>
<translation>Жокко чыгаруу</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="995"/>
<source>Save as</source>
<translation>Үнөмдөө</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="997"/>
<source>New Folder</source>
<translation>Жаңы папка</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="999"/>
<location filename="../kyfiledialog.cpp" line="1582"/>
<source>Save</source>
<translation>Сактоо</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="1035"/>
<location filename="../kyfiledialog.cpp" line="1036"/>
<location filename="../kyfiledialog.cpp" line="1038"/>
<source>Directories</source>
<translation>Каталогдор</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="1227"/>
<source>Warning</source>
<translation>Эскертүү</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="1227"/>
<source>exist, are you sure replace?</source>
<translation>бар, сиз сөзсүз алмаштырып жатасызбы?</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="1920"/>
<source>NewFolder</source>
<translation>Жаңы папкалар</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="2208"/>
<source>Undo</source>
<translation>Ундо</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="2215"/>
<source>Redo</source>
<translation>Редо</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="2414"/>
<source>warn</source>
<translation>эскертүү</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="2414"/>
<source>This operation is not supported.</source>
<translation>Бул операция колдолбойт.</translation>
</message>
</context>
</TS>

View File

@ -0,0 +1,237 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="mn_MN">
<context>
<name>MessageBox</name>
<message>
<source>Close</source>
<translation type="vanished"></translation>
</message>
</context>
<context>
<name>QApplication</name>
<message>
<source>Executable &apos;%1&apos; requires Qt %2, found Qt %3.</source>
<translation type="vanished"> &apos;%1&apos; Qt% 2 Qt% 3 / .</translation>
</message>
</context>
<context>
<name>QDialogButtonBox</name>
<message>
<source>OK</source>
<translation type="vanished">OK</translation>
</message>
</context>
<context>
<name>QObject</name>
<message>
<location filename="../ui_kyfiledialog.cpp" line="259"/>
<source>File Name</source>
<translation> </translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="263"/>
<source>Modified Date</source>
<translation> </translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="267"/>
<source>File Type</source>
<translation> </translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="271"/>
<source>File Size</source>
<translation> </translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="275"/>
<source>Original Path</source>
<translation> </translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="284"/>
<source>Descending</source>
<translation></translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="289"/>
<source>Ascending</source>
<translation></translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="295"/>
<source>Use global sorting</source>
<translation> </translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="315"/>
<source>List View</source>
<translation> </translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="316"/>
<source>Icon View</source>
<translation> </translation>
</message>
<message>
<source>Close</source>
<translation type="vanished"></translation>
</message>
</context>
<context>
<name>UKUI::TabWidget::DefaultSlideAnimatorFactory</name>
<message>
<location filename="../../libqt5-ukui-style/animations/tabwidget/ukui-tabwidget-default-slide-animator-factory.h" line="50"/>
<source>Default Slide</source>
<translation>Default Slide</translation>
</message>
<message>
<location filename="../../libqt5-ukui-style/animations/tabwidget/ukui-tabwidget-default-slide-animator-factory.h" line="51"/>
<source>Let tab widget switch with a slide animation.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>UKUIFileDialog::KyFileDialogHelper</name>
<message>
<location filename="../kyfiledialog.cpp" line="2715"/>
<source>Open File</source>
<translation></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="2716"/>
<source>Save File</source>
<translation></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="2729"/>
<source>All Files (*)</source>
<translation> (*)</translation>
</message>
</context>
<context>
<name>UKUIFileDialog::KyNativeFileDialog</name>
<message>
<location filename="../kyfiledialog.cpp" line="221"/>
<source>Go Back</source>
<translation></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="228"/>
<source>Go Forward</source>
<translation></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="234"/>
<source>Cd Up</source>
<translation></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="241"/>
<source>Search</source>
<translation></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="249"/>
<source>View Type</source>
<translation> </translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="260"/>
<source>Sort Type</source>
<translation> </translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="265"/>
<location filename="../kyfiledialog.cpp" line="378"/>
<source>Maximize</source>
<translation> </translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="279"/>
<source>Close</source>
<translation></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="375"/>
<source>Restore</source>
<translation></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="987"/>
<source>Name</source>
<translation> </translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="990"/>
<location filename="../kyfiledialog.cpp" line="1578"/>
<source>Open</source>
<translation></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="991"/>
<location filename="../kyfiledialog.cpp" line="1000"/>
<source>Cancel</source>
<translation></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="995"/>
<source>Save as</source>
<translation> </translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="997"/>
<source>New Folder</source>
<translation> </translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="999"/>
<location filename="../kyfiledialog.cpp" line="1582"/>
<source>Save</source>
<translation></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="1035"/>
<location filename="../kyfiledialog.cpp" line="1036"/>
<location filename="../kyfiledialog.cpp" line="1038"/>
<source>Directories</source>
<translation></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="1227"/>
<source>Warning</source>
<translation></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="1227"/>
<source>exist, are you sure replace?</source>
<translation> ?</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="1920"/>
<source>NewFolder</source>
<translation> </translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="2208"/>
<source>Undo</source>
<translation> </translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="2215"/>
<source>Redo</source>
<translation> </translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="2414"/>
<source>warn</source>
<translation></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="2414"/>
<source>This operation is not supported.</source>
<translation> .</translation>
</message>
</context>
</TS>

View File

@ -0,0 +1,212 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="tr_TR">
<context>
<name>QObject</name>
<message>
<location filename="../ui_kyfiledialog.cpp" line="259"/>
<source>File Name</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="263"/>
<source>Modified Date</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="267"/>
<source>File Type</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="271"/>
<source>File Size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="275"/>
<source>Original Path</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="284"/>
<source>Descending</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="289"/>
<source>Ascending</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="295"/>
<source>Use global sorting</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="315"/>
<source>List View</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="316"/>
<source>Icon View</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>UKUI::TabWidget::DefaultSlideAnimatorFactory</name>
<message>
<location filename="../../libqt5-ukui-style/animations/tabwidget/ukui-tabwidget-default-slide-animator-factory.h" line="50"/>
<source>Default Slide</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../libqt5-ukui-style/animations/tabwidget/ukui-tabwidget-default-slide-animator-factory.h" line="51"/>
<source>Let tab widget switch with a slide animation.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>UKUIFileDialog::KyFileDialogHelper</name>
<message>
<location filename="../kyfiledialog.cpp" line="2715"/>
<source>Open File</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="2716"/>
<source>Save File</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="2729"/>
<source>All Files (*)</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>UKUIFileDialog::KyNativeFileDialog</name>
<message>
<location filename="../kyfiledialog.cpp" line="221"/>
<source>Go Back</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="228"/>
<source>Go Forward</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="234"/>
<source>Cd Up</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="241"/>
<source>Search</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="249"/>
<source>View Type</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="260"/>
<source>Sort Type</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="265"/>
<location filename="../kyfiledialog.cpp" line="378"/>
<source>Maximize</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="279"/>
<source>Close</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="375"/>
<source>Restore</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="987"/>
<source>Name</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="990"/>
<location filename="../kyfiledialog.cpp" line="1578"/>
<source>Open</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="991"/>
<location filename="../kyfiledialog.cpp" line="1000"/>
<source>Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="995"/>
<source>Save as</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="997"/>
<source>New Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="999"/>
<location filename="../kyfiledialog.cpp" line="1582"/>
<source>Save</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="1035"/>
<location filename="../kyfiledialog.cpp" line="1036"/>
<location filename="../kyfiledialog.cpp" line="1038"/>
<source>Directories</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="1227"/>
<source>Warning</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="1227"/>
<source>exist, are you sure replace?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="1920"/>
<source>NewFolder</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="2208"/>
<source>Undo</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="2215"/>
<source>Redo</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="2414"/>
<source>warn</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="2414"/>
<source>This operation is not supported.</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@ -0,0 +1,252 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="ug_CN">
<context>
<name>MessageBox</name>
<message>
<source>Close</source>
<translation type="vanished">ياپ</translation>
</message>
</context>
<context>
<name>QApplication</name>
<message>
<source>Executable &apos;%1&apos; requires Qt %2, found Qt %3.</source>
<translation type="vanished">ئىجرا قىلىشقا بولىدىغان &apos;٪1&apos; Qt ٪2 نى تەلەپ قىلىدۇ، تېپىلغان Qt ٪3.</translation>
</message>
<message>
<source>Incompatible Qt Library Error</source>
<translation type="vanished">بىردەك بولمىغان QT ئامبىرى خاتالىقى</translation>
</message>
</context>
<context>
<name>QDialogButtonBox</name>
<message>
<source>OK</source>
<translation type="vanished">ماقۇل</translation>
</message>
</context>
<context>
<name>QMessageBox</name>
<message>
<source>Show Details...</source>
<translation type="vanished">تەپسىلاتىنى كۆرسەت...</translation>
</message>
<message>
<source>Hide Details...</source>
<translation type="vanished">تەپسىلاتىنى يوشۇرۇش...</translation>
</message>
</context>
<context>
<name>QObject</name>
<message>
<location filename="../ui_kyfiledialog.cpp" line="259"/>
<source>File Name</source>
<translation>ھۆججەت نامى</translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="263"/>
<source>Modified Date</source>
<translation>ئۆزگەرتىلگەن ۋاقتى</translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="267"/>
<source>File Type</source>
<translation>ھۆججەت تۈرى</translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="271"/>
<source>File Size</source>
<translation>ھۆججەت چوڭلۇقى</translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="275"/>
<source>Original Path</source>
<translation>ئەسلى يول</translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="284"/>
<source>Descending</source>
<translation>پەسكە چۈشمەكتە</translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="289"/>
<source>Ascending</source>
<translation>ئۆرلەش</translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="295"/>
<source>Use global sorting</source>
<translation>يەر شارىنى تۈرگە ئايرىشنى ئىشلىتىش</translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="315"/>
<source>List View</source>
<translation>تىزىملىك كۆرۈش</translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="316"/>
<source>Icon View</source>
<translation>ئايكون كۆرۈش</translation>
</message>
<message>
<source>Close</source>
<translation type="obsolete">ياپ</translation>
</message>
</context>
<context>
<name>UKUI::TabWidget::DefaultSlideAnimatorFactory</name>
<message>
<location filename="../../libqt5-ukui-style/animations/tabwidget/ukui-tabwidget-default-slide-animator-factory.h" line="50"/>
<source>Default Slide</source>
<translation>كۆڭۈلدىكى سىيرىلما</translation>
</message>
<message>
<location filename="../../libqt5-ukui-style/animations/tabwidget/ukui-tabwidget-default-slide-animator-factory.h" line="51"/>
<source>Let tab widget switch with a slide animation.</source>
<translation>سىيرىلما كارتون ئارقىلىق تاختا ۋىكىپات ئالماشتۇرسۇن.</translation>
</message>
</context>
<context>
<name>UKUIFileDialog::KyFileDialogHelper</name>
<message>
<location filename="../kyfiledialog.cpp" line="2715"/>
<source>Open File</source>
<translation type="unfinished">ھۆججەتنى ئېچىش</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="2716"/>
<source>Save File</source>
<translation type="unfinished">ھۆججەت ساقلاش</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="2729"/>
<source>All Files (*)</source>
<translation type="unfinished">بارلىق ھۆججەتلەر (*)</translation>
</message>
</context>
<context>
<name>UKUIFileDialog::KyNativeFileDialog</name>
<message>
<location filename="../kyfiledialog.cpp" line="221"/>
<source>Go Back</source>
<translation type="unfinished">قايت</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="228"/>
<source>Go Forward</source>
<translation type="unfinished">ئالدىغا ماڭ</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="234"/>
<source>Cd Up</source>
<translation type="unfinished">Cd Up</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="241"/>
<source>Search</source>
<translation type="unfinished">ئىزدە</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="249"/>
<source>View Type</source>
<translation type="unfinished">كۆرۈش تىپى</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="260"/>
<source>Sort Type</source>
<translation type="unfinished">تۈر تۈرى</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="265"/>
<location filename="../kyfiledialog.cpp" line="378"/>
<source>Maximize</source>
<translation type="unfinished">ئەڭ چوڭ چەككە</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="279"/>
<source>Close</source>
<translation type="unfinished">ياپ</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="375"/>
<source>Restore</source>
<translation type="unfinished">ئەسلىگە كەلتۈرۈش</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="987"/>
<source>Name</source>
<translation type="unfinished">ئىسىم-فامىلىسى</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="990"/>
<location filename="../kyfiledialog.cpp" line="1578"/>
<source>Open</source>
<translation type="unfinished">ئېچىش</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="991"/>
<location filename="../kyfiledialog.cpp" line="1000"/>
<source>Cancel</source>
<translation type="unfinished">ئەمەلدىن قالدۇرۇش</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="995"/>
<source>Save as</source>
<translation type="unfinished">تېجەش</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="997"/>
<source>New Folder</source>
<translation type="unfinished">يېڭى ھۆججەت قىسقۇچ</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="999"/>
<location filename="../kyfiledialog.cpp" line="1582"/>
<source>Save</source>
<translation type="unfinished">ساقلاش</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="1035"/>
<location filename="../kyfiledialog.cpp" line="1036"/>
<location filename="../kyfiledialog.cpp" line="1038"/>
<source>Directories</source>
<translation type="unfinished">مۇندەرىجىلەر</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="1227"/>
<source>Warning</source>
<translation type="unfinished">دىققەت</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="1227"/>
<source>exist, are you sure replace?</source>
<translation type="unfinished">مەۋجۇت، سىز راستىنلا ئالماشتۇرۇۋاتامسىز؟</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="1920"/>
<source>NewFolder</source>
<translation type="unfinished">يېڭى قاتلىغۇچ</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="2208"/>
<source>Undo</source>
<translation type="unfinished">Undo</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="2215"/>
<source>Redo</source>
<translation type="unfinished">قايتا-قايتا</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="2414"/>
<source>warn</source>
<translation type="unfinished">ئاگاھلاندۇرۇش</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="2414"/>
<source>This operation is not supported.</source>
<translation type="unfinished">بۇ مەشغۇلات قوللىمايدۇ.</translation>
</message>
</context>
</TS>

View File

@ -0,0 +1,252 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="zh_CN">
<context>
<name>MessageBox</name>
<message>
<source>Close</source>
<translation type="vanished"></translation>
</message>
</context>
<context>
<name>QApplication</name>
<message>
<source>Executable &apos;%1&apos; requires Qt %2, found Qt %3.</source>
<translation type="vanished">%1%2%3</translation>
</message>
<message>
<source>Incompatible Qt Library Error</source>
<translation type="vanished">Qt库错误</translation>
</message>
</context>
<context>
<name>QDialogButtonBox</name>
<message>
<source>OK</source>
<translation type="vanished"></translation>
</message>
</context>
<context>
<name>QMessageBox</name>
<message>
<source>Show Details...</source>
<translation type="vanished"></translation>
</message>
<message>
<source>Hide Details...</source>
<translation type="vanished"></translation>
</message>
</context>
<context>
<name>QObject</name>
<message>
<location filename="../ui_kyfiledialog.cpp" line="259"/>
<source>File Name</source>
<translation></translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="263"/>
<source>Modified Date</source>
<translation></translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="267"/>
<source>File Type</source>
<translation></translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="271"/>
<source>File Size</source>
<translation></translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="275"/>
<source>Original Path</source>
<translation></translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="284"/>
<source>Descending</source>
<translation></translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="289"/>
<source>Ascending</source>
<translation></translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="295"/>
<source>Use global sorting</source>
<translation>使</translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="315"/>
<source>List View</source>
<translation></translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="316"/>
<source>Icon View</source>
<translation></translation>
</message>
<message>
<source>Close</source>
<translation type="vanished"></translation>
</message>
</context>
<context>
<name>UKUI::TabWidget::DefaultSlideAnimatorFactory</name>
<message>
<location filename="../../libqt5-ukui-style/animations/tabwidget/ukui-tabwidget-default-slide-animator-factory.h" line="50"/>
<source>Default Slide</source>
<translation>slide</translation>
</message>
<message>
<location filename="../../libqt5-ukui-style/animations/tabwidget/ukui-tabwidget-default-slide-animator-factory.h" line="51"/>
<source>Let tab widget switch with a slide animation.</source>
<translation></translation>
</message>
</context>
<context>
<name>UKUIFileDialog::KyFileDialogHelper</name>
<message>
<location filename="../kyfiledialog.cpp" line="2715"/>
<source>Open File</source>
<translation></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="2716"/>
<source>Save File</source>
<translation></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="2729"/>
<source>All Files (*)</source>
<translation>(*)</translation>
</message>
</context>
<context>
<name>UKUIFileDialog::KyNativeFileDialog</name>
<message>
<location filename="../kyfiledialog.cpp" line="221"/>
<source>Go Back</source>
<translation>退</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="228"/>
<source>Go Forward</source>
<translation></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="234"/>
<source>Cd Up</source>
<translation></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="241"/>
<source>Search</source>
<translation></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="249"/>
<source>View Type</source>
<translation></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="260"/>
<source>Sort Type</source>
<translation></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="265"/>
<location filename="../kyfiledialog.cpp" line="378"/>
<source>Maximize</source>
<translation></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="279"/>
<source>Close</source>
<translation></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="375"/>
<source>Restore</source>
<translation></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="987"/>
<source>Name</source>
<translation></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="990"/>
<location filename="../kyfiledialog.cpp" line="1578"/>
<source>Open</source>
<translation></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="991"/>
<location filename="../kyfiledialog.cpp" line="1000"/>
<source>Cancel</source>
<translation></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="995"/>
<source>Save as</source>
<translation></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="997"/>
<source>New Folder</source>
<translation></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="999"/>
<location filename="../kyfiledialog.cpp" line="1582"/>
<source>Save</source>
<translation></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="1035"/>
<location filename="../kyfiledialog.cpp" line="1036"/>
<location filename="../kyfiledialog.cpp" line="1038"/>
<source>Directories</source>
<translation></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="1227"/>
<source>Warning</source>
<translation></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="1227"/>
<source>exist, are you sure replace?</source>
<translation></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="1920"/>
<source>NewFolder</source>
<translation></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="2208"/>
<source>Undo</source>
<translation></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="2215"/>
<source>Redo</source>
<translation></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="2414"/>
<source>warn</source>
<translation></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="2414"/>
<source>This operation is not supported.</source>
<translation></translation>
</message>
</context>
</TS>

View File

@ -0,0 +1,252 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="zh_HK">
<context>
<name>MessageBox</name>
<message>
<source>Close</source>
<translation type="vanished"></translation>
</message>
</context>
<context>
<name>QApplication</name>
<message>
<source>Executable &apos;%1&apos; requires Qt %2, found Qt %3.</source>
<translation type="vanished">%1 %2%3</translation>
</message>
<message>
<source>Incompatible Qt Library Error</source>
<translation type="vanished">Qt庫錯誤</translation>
</message>
</context>
<context>
<name>QDialogButtonBox</name>
<message>
<source>OK</source>
<translation type="vanished"></translation>
</message>
</context>
<context>
<name>QMessageBox</name>
<message>
<source>Show Details...</source>
<translation type="vanished">......</translation>
</message>
<message>
<source>Hide Details...</source>
<translation type="vanished">......</translation>
</message>
</context>
<context>
<name>QObject</name>
<message>
<location filename="../ui_kyfiledialog.cpp" line="259"/>
<source>File Name</source>
<translation></translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="263"/>
<source>Modified Date</source>
<translation></translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="267"/>
<source>File Type</source>
<translation></translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="271"/>
<source>File Size</source>
<translation></translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="275"/>
<source>Original Path</source>
<translation></translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="284"/>
<source>Descending</source>
<translation></translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="289"/>
<source>Ascending</source>
<translation></translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="295"/>
<source>Use global sorting</source>
<translation>使</translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="315"/>
<source>List View</source>
<translation></translation>
</message>
<message>
<location filename="../ui_kyfiledialog.cpp" line="316"/>
<source>Icon View</source>
<translation></translation>
</message>
<message>
<source>Close</source>
<translation type="obsolete"></translation>
</message>
</context>
<context>
<name>UKUI::TabWidget::DefaultSlideAnimatorFactory</name>
<message>
<location filename="../../libqt5-ukui-style/animations/tabwidget/ukui-tabwidget-default-slide-animator-factory.h" line="50"/>
<source>Default Slide</source>
<translation>slide</translation>
</message>
<message>
<location filename="../../libqt5-ukui-style/animations/tabwidget/ukui-tabwidget-default-slide-animator-factory.h" line="51"/>
<source>Let tab widget switch with a slide animation.</source>
<translation></translation>
</message>
</context>
<context>
<name>UKUIFileDialog::KyFileDialogHelper</name>
<message>
<location filename="../kyfiledialog.cpp" line="2715"/>
<source>Open File</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="2716"/>
<source>Save File</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="2729"/>
<source>All Files (*)</source>
<translation type="unfinished">*</translation>
</message>
</context>
<context>
<name>UKUIFileDialog::KyNativeFileDialog</name>
<message>
<location filename="../kyfiledialog.cpp" line="221"/>
<source>Go Back</source>
<translation type="unfinished">退</translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="228"/>
<source>Go Forward</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="234"/>
<source>Cd Up</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="241"/>
<source>Search</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="249"/>
<source>View Type</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="260"/>
<source>Sort Type</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="265"/>
<location filename="../kyfiledialog.cpp" line="378"/>
<source>Maximize</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="279"/>
<source>Close</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="375"/>
<source>Restore</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="987"/>
<source>Name</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="990"/>
<location filename="../kyfiledialog.cpp" line="1578"/>
<source>Open</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="991"/>
<location filename="../kyfiledialog.cpp" line="1000"/>
<source>Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="995"/>
<source>Save as</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="997"/>
<source>New Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="999"/>
<location filename="../kyfiledialog.cpp" line="1582"/>
<source>Save</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="1035"/>
<location filename="../kyfiledialog.cpp" line="1036"/>
<location filename="../kyfiledialog.cpp" line="1038"/>
<source>Directories</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="1227"/>
<source>Warning</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="1227"/>
<source>exist, are you sure replace?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="1920"/>
<source>NewFolder</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="2208"/>
<source>Undo</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="2215"/>
<source>Redo</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="2414"/>
<source>warn</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../kyfiledialog.cpp" line="2414"/>
<source>This operation is not supported.</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@ -0,0 +1,386 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="zh">
<context>
<name>MainWindow</name>
<message>
<location filename="../../test/filedialog/mainwindow.ui" line="14"/>
<location filename="../../test/highlighted-icon-button/mainwindow.ui" line="14"/>
<location filename="../../test/mps-style-application/mainwindow.ui" line="14"/>
<location filename="../../test/system-settings/mainwindow.ui" line="14"/>
<location filename="../../test/filedialog/ui_mainwindow.h" line="117"/>
<location filename="../../test/highlighted-icon-button/ui_mainwindow.h" line="102"/>
<location filename="../../test/mps-style-application/ui_mainwindow.h" line="126"/>
<location filename="../../test/system-settings/ui_mainwindow.h" line="122"/>
<source>MainWindow</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../test/filedialog/mainwindow.ui" line="30"/>
<location filename="../../test/filedialog/ui_mainwindow.h" line="118"/>
<source>test open</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../test/filedialog/mainwindow.ui" line="37"/>
<location filename="../../test/filedialog/ui_mainwindow.h" line="119"/>
<source>directory</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../test/filedialog/mainwindow.ui" line="47"/>
<location filename="../../test/filedialog/ui_mainwindow.h" line="120"/>
<source>selected uri</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../test/filedialog/mainwindow.ui" line="54"/>
<location filename="../../test/filedialog/ui_mainwindow.h" line="121"/>
<source>test show</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../test/filedialog/mainwindow.ui" line="64"/>
<location filename="../../test/filedialog/ui_mainwindow.h" line="122"/>
<source>test exec</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../test/filedialog/mainwindow.ui" line="71"/>
<location filename="../../test/filedialog/ui_mainwindow.h" line="123"/>
<source>test save</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../test/filedialog/mainwindow.ui" line="78"/>
<location filename="../../test/filedialog/ui_mainwindow.h" line="124"/>
<source>test static open</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../test/highlighted-icon-button/mainwindow.ui" line="30"/>
<location filename="../../test/mps-style-application/mainwindow.ui" line="36"/>
<location filename="../../test/highlighted-icon-button/ui_mainwindow.h" line="103"/>
<location filename="../../test/mps-style-application/ui_mainwindow.h" line="127"/>
<source>PushButton</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../test/highlighted-icon-button/mainwindow.ui" line="47"/>
<location filename="../../test/highlighted-icon-button/ui_mainwindow.h" line="104"/>
<source>use auto highlight icon</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../test/highlighted-icon-button/mainwindow.ui" line="54"/>
<location filename="../../test/mps-style-application/mainwindow.ui" line="43"/>
<location filename="../../test/highlighted-icon-button/ui_mainwindow.h" line="105"/>
<location filename="../../test/mps-style-application/ui_mainwindow.h" line="128"/>
<source>...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../test/highlighted-icon-button/mainwindow.ui" line="72"/>
<location filename="../../test/highlighted-icon-button/ui_mainwindow.h" line="106"/>
<source>highlightOnly</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../test/highlighted-icon-button/mainwindow.ui" line="77"/>
<location filename="../../test/highlighted-icon-button/ui_mainwindow.h" line="107"/>
<source>bothDefaultAndHighlight</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../test/mps-style-application/mainwindow.ui" line="50"/>
<location filename="../../test/mps-style-application/ui_mainwindow.h" line="129"/>
<source>RadioButton</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../test/system-settings/mainwindow.ui" line="21"/>
<location filename="../../test/system-settings/ui_mainwindow.h" line="123"/>
<source>style</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../test/system-settings/mainwindow.ui" line="31"/>
<location filename="../../test/system-settings/ui_mainwindow.h" line="124"/>
<source>icon</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../test/system-settings/mainwindow.ui" line="41"/>
<location filename="../../test/system-settings/ui_mainwindow.h" line="125"/>
<source>menu opacity</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../test/system-settings/mainwindow.ui" line="55"/>
<location filename="../../test/system-settings/ui_mainwindow.h" line="126"/>
<source>font</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MessageBox</name>
<message>
<location filename="../widget/messagebox/message-box.cpp" line="97"/>
<source>Close</source>
<translation></translation>
</message>
</context>
<context>
<name>QApplication</name>
<message>
<location filename="../widget/messagebox/message-box.h" line="272"/>
<source>Executable &apos;%1&apos; requires Qt %2, found Qt %3.</source>
<translation>%1 %2%3</translation>
</message>
<message>
<location filename="../widget/messagebox/message-box.h" line="274"/>
<source>Incompatible Qt Library Error</source>
<translation>Qt庫錯誤</translation>
</message>
</context>
<context>
<name>QDialogButtonBox</name>
<message>
<location filename="../widget/messagebox/message-box.cpp" line="362"/>
<location filename="../widget/messagebox/message-box.cpp" line="1090"/>
<source>OK</source>
<translation></translation>
</message>
</context>
<context>
<name>QMessageBox</name>
<message>
<location filename="../widget/messagebox/message-box.cpp" line="418"/>
<location filename="../widget/messagebox/message-box.cpp" line="881"/>
<location filename="../widget/messagebox/message-box.cpp" line="1517"/>
<source>Show Details...</source>
<translation>......</translation>
</message>
<message>
<location filename="../widget/messagebox/message-box.cpp" line="881"/>
<location filename="../widget/messagebox/message-box.cpp" line="1517"/>
<source>Hide Details...</source>
<translation>......</translation>
</message>
</context>
<context>
<name>QObject</name>
<message>
<location filename="../widget/filedialog/ui_kyfiledialog.cpp" line="259"/>
<source>File Name</source>
<translation></translation>
</message>
<message>
<location filename="../widget/filedialog/ui_kyfiledialog.cpp" line="263"/>
<source>Modified Date</source>
<translation></translation>
</message>
<message>
<location filename="../widget/filedialog/ui_kyfiledialog.cpp" line="267"/>
<source>File Type</source>
<translation></translation>
</message>
<message>
<location filename="../widget/filedialog/ui_kyfiledialog.cpp" line="271"/>
<source>File Size</source>
<translation></translation>
</message>
<message>
<location filename="../widget/filedialog/ui_kyfiledialog.cpp" line="275"/>
<source>Original Path</source>
<translation></translation>
</message>
<message>
<location filename="../widget/filedialog/ui_kyfiledialog.cpp" line="284"/>
<source>Descending</source>
<translation></translation>
</message>
<message>
<location filename="../widget/filedialog/ui_kyfiledialog.cpp" line="289"/>
<source>Ascending</source>
<translation></translation>
</message>
<message>
<location filename="../widget/filedialog/ui_kyfiledialog.cpp" line="295"/>
<source>Use global sorting</source>
<translation>使</translation>
</message>
<message>
<location filename="../widget/filedialog/ui_kyfiledialog.cpp" line="315"/>
<source>List View</source>
<translation></translation>
</message>
<message>
<location filename="../widget/filedialog/ui_kyfiledialog.cpp" line="316"/>
<source>Icon View</source>
<translation></translation>
</message>
<message>
<location filename="../widget/messagebox/message-box.cpp" line="730"/>
<source>Close</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>UKUI::TabWidget::DefaultSlideAnimatorFactory</name>
<message>
<location filename="../../debian/libqt5-ukui-style-dev/usr/include/qt5-ukui/ukui-tabwidget-default-slide-animator-factory.h" line="50"/>
<location filename="../../libqt5-ukui-style/animations/tabwidget/ukui-tabwidget-default-slide-animator-factory.h" line="50"/>
<source>Default Slide</source>
<translation>slide</translation>
</message>
<message>
<location filename="../../debian/libqt5-ukui-style-dev/usr/include/qt5-ukui/ukui-tabwidget-default-slide-animator-factory.h" line="51"/>
<location filename="../../libqt5-ukui-style/animations/tabwidget/ukui-tabwidget-default-slide-animator-factory.h" line="51"/>
<source>Let tab widget switch with a slide animation.</source>
<translation></translation>
</message>
</context>
<context>
<name>UKUIFileDialog::KyFileDialogHelper</name>
<message>
<location filename="../widget/filedialog/kyfiledialog.cpp" line="2696"/>
<source>Open File</source>
<translation></translation>
</message>
<message>
<location filename="../widget/filedialog/kyfiledialog.cpp" line="2697"/>
<source>Save File</source>
<translation></translation>
</message>
<message>
<location filename="../widget/filedialog/kyfiledialog.cpp" line="2710"/>
<source>All Files (*)</source>
<translation>*</translation>
</message>
</context>
<context>
<name>UKUIFileDialog::KyNativeFileDialog</name>
<message>
<location filename="../widget/filedialog/kyfiledialog.cpp" line="221"/>
<source>Go Back</source>
<translation>退</translation>
</message>
<message>
<location filename="../widget/filedialog/kyfiledialog.cpp" line="228"/>
<source>Go Forward</source>
<translation></translation>
</message>
<message>
<location filename="../widget/filedialog/kyfiledialog.cpp" line="234"/>
<source>Cd Up</source>
<translation></translation>
</message>
<message>
<location filename="../widget/filedialog/kyfiledialog.cpp" line="241"/>
<source>Search</source>
<translation></translation>
</message>
<message>
<location filename="../widget/filedialog/kyfiledialog.cpp" line="249"/>
<source>View Type</source>
<translation></translation>
</message>
<message>
<location filename="../widget/filedialog/kyfiledialog.cpp" line="260"/>
<source>Sort Type</source>
<translation></translation>
</message>
<message>
<location filename="../widget/filedialog/kyfiledialog.cpp" line="265"/>
<location filename="../widget/filedialog/kyfiledialog.cpp" line="378"/>
<source>Maximize</source>
<translation></translation>
</message>
<message>
<location filename="../widget/filedialog/kyfiledialog.cpp" line="279"/>
<source>Close</source>
<translation></translation>
</message>
<message>
<location filename="../widget/filedialog/kyfiledialog.cpp" line="375"/>
<source>Restore</source>
<translation></translation>
</message>
<message>
<location filename="../widget/filedialog/kyfiledialog.cpp" line="987"/>
<source>Name</source>
<translation></translation>
</message>
<message>
<location filename="../widget/filedialog/kyfiledialog.cpp" line="990"/>
<location filename="../widget/filedialog/kyfiledialog.cpp" line="1578"/>
<source>Open</source>
<translation></translation>
</message>
<message>
<location filename="../widget/filedialog/kyfiledialog.cpp" line="991"/>
<location filename="../widget/filedialog/kyfiledialog.cpp" line="1000"/>
<source>Cancel</source>
<translation></translation>
</message>
<message>
<location filename="../widget/filedialog/kyfiledialog.cpp" line="995"/>
<source>Save as</source>
<translation></translation>
</message>
<message>
<location filename="../widget/filedialog/kyfiledialog.cpp" line="997"/>
<source>New Folder</source>
<translation></translation>
</message>
<message>
<location filename="../widget/filedialog/kyfiledialog.cpp" line="999"/>
<location filename="../widget/filedialog/kyfiledialog.cpp" line="1582"/>
<source>Save</source>
<translation></translation>
</message>
<message>
<location filename="../widget/filedialog/kyfiledialog.cpp" line="1035"/>
<location filename="../widget/filedialog/kyfiledialog.cpp" line="1036"/>
<location filename="../widget/filedialog/kyfiledialog.cpp" line="1038"/>
<source>Directories</source>
<translation></translation>
</message>
<message>
<location filename="../widget/filedialog/kyfiledialog.cpp" line="1227"/>
<source>Warning</source>
<translation></translation>
</message>
<message>
<location filename="../widget/filedialog/kyfiledialog.cpp" line="1227"/>
<source>exist, are you sure replace?</source>
<translation></translation>
</message>
<message>
<location filename="../widget/filedialog/kyfiledialog.cpp" line="1910"/>
<source>NewFolder</source>
<translation></translation>
</message>
<message>
<location filename="../widget/filedialog/kyfiledialog.cpp" line="2198"/>
<source>Undo</source>
<translation></translation>
</message>
<message>
<location filename="../widget/filedialog/kyfiledialog.cpp" line="2205"/>
<source>Redo</source>
<translation></translation>
</message>
<message>
<location filename="../widget/filedialog/kyfiledialog.cpp" line="2404"/>
<source>warn</source>
<translation></translation>
</message>
<message>
<location filename="../widget/filedialog/kyfiledialog.cpp" line="2404"/>
<source>This operation is not supported.</source>
<translation></translation>
</message>
</context>
</TS>

View File

@ -0,0 +1,506 @@
/*
* KWin Style UKUI
*
* Copyright (C) 2023, KylinSoft Co., Ltd.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
* Authors: Jing Tan <tanjing@kylinos.cn>
*
*/
#include "debug.h"
#include "uikyfiledialog.h"
#include <QFileDialog>
#include "kyfiledialog.h"
#include "debug.h"
using namespace UKUIFileDialog;
//Ui_KyFileDialog::Ui_KyFileDialog(QDialog *parent)
//{
// setupUi(parent);
//}
Ui_KyFileDialog::Ui_KyFileDialog(QWidget *parent) : QWidget(parent)
{
}
Ui_KyFileDialog::~Ui_KyFileDialog()
{
pDebug << "Ui_KyFileDialog destory111..........";
/*
if(m_pathbarWidget){
m_pathbarWidget->deleteLater();
m_pathbarWidget = nullptr;
}
qDebug() << "Ui_KyFileDialog destory122222..........";
if(m_pathbar){
m_pathbar->deleteLater();
m_pathbar = nullptr;
}
if(m_searchBtn){
m_searchBtn->deleteLater();
m_searchBtn = nullptr;
}
if(m_backButton){
m_backButton->deleteLater();
m_backButton = nullptr;
}
qDebug() << "Ui_KyFileDialog destory3223..........";
if(m_forwardButton){
m_forwardButton->deleteLater();
m_forwardButton = nullptr;
}
if(m_toParentButton){
m_toParentButton->deleteLater();
m_toParentButton = nullptr;
}
if(m_modeButton){
m_modeButton->deleteLater();
m_modeButton = nullptr;
}
if(m_sortButton){
m_sortButton->deleteLater();
m_sortButton = nullptr;
}
if(m_maximizeAndRestore){
m_maximizeAndRestore->deleteLater();
m_maximizeAndRestore = nullptr;
}
if(m_closeButton){
m_closeButton->deleteLater();
m_closeButton = nullptr;
}
if(m_modeMenu){
m_modeMenu->deleteLater();
m_modeMenu = nullptr;
}
qDebug() << "Ui_KyFileDialog destory3555423..........";
if(m_sortMenu){
m_sortMenu->deleteLater();
m_sortMenu = nullptr;
}
if(m_listModeAction){
m_listModeAction->deleteLater();
m_listModeAction = nullptr;
}
if(m_iconModeAction){
m_iconModeAction->deleteLater();
m_iconModeAction = nullptr;
}
if(m_sider){
m_sider->deleteLater();
m_sider = nullptr;
}
qDebug() << "Ui_KyFileDialog destory223322..........";
if(m_frame){
m_frame->deleteLater();
m_frame = nullptr;
}
if(m_splitter){
m_splitter->deleteLater();
m_splitter = nullptr;
}
if(vboxLayout){
vboxLayout->deleteLater();
vboxLayout = nullptr;
}
if(m_treeView){
m_treeView->deleteLater();
m_treeView = nullptr;
}
if(m_fileNameLabel){
m_fileNameLabel->deleteLater();
m_fileNameLabel = nullptr;
}
if(m_fileNameEdit){
m_fileNameEdit->deleteLater();
m_fileNameEdit = nullptr;
}
qDebug() << "Ui_KyFileDialog destory1245677..........";
if(m_fileTypeCombo){
m_fileTypeCombo->deleteLater();
m_fileTypeCombo = nullptr;
}
if(m_newFolderButton){
m_newFolderButton->deleteLater();
m_newFolderButton = nullptr;
}
if(m_acceptButton){
m_acceptButton->deleteLater();
m_acceptButton = nullptr;
}
if(m_rejectButton){
m_rejectButton->deleteLater();
m_rejectButton = nullptr;
}
qDebug() << "Ui_KyFileDialog destory23467899..........";
if(m_upSeperate){
m_upSeperate->deleteLater();
m_upSeperate = nullptr;
}
if(m_downSeperate){
m_downSeperate->deleteLater();
m_downSeperate = nullptr;
}
if(m_widget){
m_widget->deleteLater();
m_widget = nullptr;
}
qDebug() << "destory345..........";
if(m_container){
qDebug() << "destory555..........";
m_container->deleteLater();
m_container = nullptr;
qDebug() << "destory666..........";
}
qDebug() << "destory777..........";
if(m_siderWidget){
m_siderWidget->deleteLater();
m_siderWidget = nullptr;
}
if(m_sortTypeGroup){
m_sortTypeGroup->deleteLater();
m_sortTypeGroup = nullptr;
}
if(m_fileName){
m_fileName->deleteLater();
m_fileName = nullptr;
}
if(m_modifiedDate){
m_modifiedDate->deleteLater();
m_modifiedDate = nullptr;
}
if(m_fileType){
m_fileType->deleteLater();
m_fileType = nullptr;
}
if(m_fileSize){
m_fileSize->deleteLater();
m_fileSize = nullptr;
}
if(m_originalPath){
m_originalPath->deleteLater();
m_originalPath = nullptr;
}
if(m_sortOrderGroup){
m_sortOrderGroup->deleteLater();
m_sortOrderGroup = nullptr;
}
if(m_descending){
m_descending->deleteLater();
m_descending = nullptr;
}
if(m_ascending){
m_ascending->deleteLater();
m_ascending = nullptr;
}
if(m_useGlobalSortAction){
m_useGlobalSortAction->deleteLater();
m_useGlobalSortAction = nullptr;
}
qDebug() << "Ui_KyFileDialog destory8888..........";
if(m_siderLayout){
m_siderLayout->deleteLater();
m_siderLayout = nullptr;
}
// if(m_gridLayout){
// m_gridLayout->deleteLater();
// m_gridLayout= nullptr;
// }
if(m_hHeaderLayout){
m_hHeaderLayout->deleteLater();
m_hHeaderLayout = nullptr;
}
if(m_hLineEditLayout){
m_hLineEditLayout->deleteLater();
m_hLineEditLayout = nullptr;
}
if(m_hBtnLayout){
m_hBtnLayout->deleteLater();
m_hBtnLayout = nullptr;
}
qDebug() << "Ui_KyFileDialog destory123..........";
*/
}
void Ui_KyFileDialog::initSortMenu(QDialog *mKyFileDialog)
{
m_sortButton = new MenuToolButton(this);
m_sortMenu = new QMenu(m_sortButton);
m_sortTypeGroup = new QActionGroup(m_sortMenu);
m_sortTypeGroup->setExclusive(true);
m_fileName = m_sortMenu->addAction(QObject::tr("File Name"));
m_fileName->setCheckable(true);
m_sortTypeGroup->addAction(m_fileName);
m_modifiedDate = m_sortMenu->addAction(QObject::tr("Modified Date"));
m_modifiedDate->setCheckable(true);
m_sortTypeGroup->addAction(m_modifiedDate);
m_fileType = m_sortMenu->addAction(QObject::tr("File Type"));
m_fileType->setCheckable(true);
m_sortTypeGroup->addAction(m_fileType);
m_fileSize = m_sortMenu->addAction(QObject::tr("File Size"));
m_fileSize->setCheckable(true);
m_sortTypeGroup->addAction(m_fileSize);
m_originalPath = m_sortMenu->addAction(QObject::tr("Original Path"));
m_originalPath->setCheckable(true);
m_sortTypeGroup->addAction(m_originalPath);
m_sortMenu->addSeparator();
m_sortOrderGroup = new QActionGroup(m_sortMenu);
m_sortOrderGroup->setExclusive(true);
m_descending = m_sortMenu->addAction(QObject::tr("Descending"));
m_descending->setCheckable(true);
m_sortOrderGroup->addAction(m_descending);
//switch defautl Descending Ascending order, fix bug#99924
m_ascending = m_sortMenu->addAction(QObject::tr("Ascending"));
m_ascending->setCheckable(true);
m_sortOrderGroup->addAction(m_ascending);
m_sortMenu->addSeparator();
m_useGlobalSortAction = m_sortMenu->addAction(QObject::tr("Use global sorting"));
m_useGlobalSortAction->setCheckable(true);
m_sortButton->setMenu(m_sortMenu);
m_sortButton->setPopupMode(QToolButton::InstantPopup);
m_sortButton->setAutoRaise(true);
m_sortButton->setFixedSize(QSize(57, 40));
m_sortButton->setIconSize(QSize(16, 16));
}
void Ui_KyFileDialog::initModeMenu(QDialog *mKyFileDialog)
{
m_modeButton = new MenuToolButton(this);
m_modeButton->setPopupMode(QToolButton::InstantPopup);
m_modeButton->setAutoRaise(true);
m_modeButton->setFixedSize(QSize(57, 40));
m_modeButton->setIconSize(QSize(16, 16));
m_modeMenu = new QMenu(m_modeButton);
m_listModeAction = m_modeMenu->addAction(QIcon::fromTheme("view-list-symbolic"), QObject::tr("List View"));
m_iconModeAction = m_modeMenu->addAction(QIcon::fromTheme("view-grid-symbolic"), QObject::tr("Icon View"));
m_listModeAction->setCheckable(true);
m_iconModeAction->setCheckable(true);
m_modeButton->setMenu(m_modeMenu);
}
void Ui_KyFileDialog::initSiderBar(QDialog *mKyFileDialog)
{
m_siderWidget = new QWidget(this);
m_siderWidget->setMinimumWidth(144);
m_siderLayout = new QVBoxLayout();
m_siderLayout->setContentsMargins(0,0,0,0);
m_sider = new FileDialogSideBar(this);
m_sider->setAttribute(Qt::WA_TranslucentBackground);
}
void Ui_KyFileDialog::initHeaderBar(QDialog *mKyFileDialog)
{
m_hHeaderLayout = new QHBoxLayout(this);
initModeMenu(mKyFileDialog);
initSortMenu(mKyFileDialog);
m_hHeaderLayout->setContentsMargins(0,0,8,0);
m_hHeaderLayout->setObjectName(QString::fromUtf8("hboxLayout"));
m_backButton = new QToolButton(this);
m_forwardButton = new QToolButton(this);
m_toParentButton = new QToolButton(this);
m_pathbarWidget = new FileDialogPathBar(this);//new Peony::AdvancedLocationBar(mKyFileDialog);//
m_pathbar = m_pathbarWidget->getPathBar();
m_pathbar->setMinimumWidth(250);
m_pathbar->setFocusPolicy(Qt::FocusPolicy(m_pathbar->focusPolicy() & ~Qt::TabFocus));
m_searchBtn = new QToolButton(this);
m_maximizeAndRestore = new QToolButton(this);
m_closeButton = new QToolButton(this);
m_hHeaderLayout->setAlignment(Qt::AlignVCenter);
m_hHeaderLayout->addWidget(m_backButton);
m_hHeaderLayout->addWidget(m_forwardButton);
m_hHeaderLayout->addWidget(m_toParentButton);
m_hHeaderLayout->addWidget(m_pathbarWidget);
m_hHeaderLayout->addWidget(m_searchBtn);
m_hHeaderLayout->addWidget(m_modeButton);
m_hHeaderLayout->addWidget(m_sortButton);
m_hHeaderLayout->addWidget(m_maximizeAndRestore);
m_hHeaderLayout->addWidget(m_closeButton);
}
void Ui_KyFileDialog::initLineEditLayout(QDialog *mKyFileDialog)
{
m_hLineEditLayout = new QHBoxLayout(this);
m_hLineEditLayout->setContentsMargins(4,0,24,0);
m_fileNameLabel = new QLabel(this);
m_fileNameLabel->setObjectName(QString::fromUtf8("fileNameLabel"));
QSizePolicy sizePolicy2(QSizePolicy::Minimum, QSizePolicy::Preferred);
sizePolicy2.setHorizontalStretch(0);
sizePolicy2.setVerticalStretch(0);
sizePolicy2.setHeightForWidth(m_fileNameLabel->sizePolicy().hasHeightForWidth());
m_fileNameLabel->setSizePolicy(sizePolicy2);
m_fileNameLabel->setMinimumSize(QSize(0, 0));
pDebug << "3333333333333333333";
m_fileNameEdit = new QLineEdit(mKyFileDialog);
m_fileNameEdit->setObjectName("fileNameEdit");
QSizePolicy sizePolicy3(QSizePolicy::Minimum, QSizePolicy::Fixed);
sizePolicy3.setHorizontalStretch(1);
sizePolicy3.setVerticalStretch(0);
sizePolicy3.setHeightForWidth(m_fileNameEdit->sizePolicy().hasHeightForWidth());
m_fileNameEdit->setSizePolicy(sizePolicy3);
pDebug << "44444444444444444";
m_fileTypeCombo = new FileDialogComboBox(this);
QSizePolicy sizePolicy4(QSizePolicy::Expanding, QSizePolicy::Fixed);
sizePolicy4.setHorizontalStretch(0);
sizePolicy4.setVerticalStretch(0);
sizePolicy4.setHeightForWidth(m_fileTypeCombo->sizePolicy().hasHeightForWidth());
m_fileTypeCombo->setSizePolicy(sizePolicy4);
// m_fileTypeCombo->setSizeAdjustPolicy(QComboBox::AdjustToMinimumContentsLength);
//m_fileTypeCombo->setVisible(false);
m_hLineEditLayout->addWidget(m_fileNameLabel);
m_hLineEditLayout->addWidget(m_fileNameEdit);
m_hLineEditLayout->addWidget(m_fileTypeCombo);
m_hLineEditLayout->setSpacing(15);
}
void Ui_KyFileDialog::intiBtnLayout(QDialog *mKyFileDialog)
{
m_hBtnLayout = new QHBoxLayout(this);
m_hBtnLayout->addSpacing(20);
m_hBtnLayout->setContentsMargins(0,0,24,0);
m_newFolderButton =new QPushButton(mKyFileDialog);
m_newFolderButton->setObjectName(QString::fromUtf8("newFolderButton"));
m_hBtnLayout->addWidget(m_newFolderButton);
m_acceptButton = new QPushButton(mKyFileDialog);
m_rejectButton = new QPushButton(mKyFileDialog);
m_acceptButton->setEnabled(false);
m_hBtnLayout->addStretch();
m_hBtnLayout->addWidget(m_rejectButton, 0, Qt::AlignRight | Qt::AlignVCenter);
m_hBtnLayout->addSpacing(15);
m_hBtnLayout->addWidget(m_acceptButton, 0, Qt::AlignRight | Qt::AlignVCenter);
m_acceptButton->setObjectName(QString::fromUtf8("acceptButton"));
m_rejectButton->setObjectName(QString::fromUtf8("rejectButton"));
pDebug << "6666666666666666";
}
void Ui_KyFileDialog::setupUi(QDialog *mKyFileDialog)
{
if(mKyFileDialog->objectName().isEmpty()) {
mKyFileDialog->setObjectName(QString::fromUtf8("KyNativeFileDialog"));
}
mKyFileDialog->resize(1160, 635);
mKyFileDialog->setSizeGripEnabled(true);
mKyFileDialog->setAttribute(Qt::WA_TranslucentBackground);
mKyFileDialog->setContentsMargins(0,0,0,0);
m_gridLayout = new QGridLayout(mKyFileDialog);
m_gridLayout->setObjectName(QString::fromUtf8("gridLayout"));
m_container = new Peony::DirectoryViewContainer(this);
m_frame = new QFrame(this);
vboxLayout = new QVBoxLayout(this);
initSiderBar(mKyFileDialog);
initHeaderBar(mKyFileDialog);
initLineEditLayout(mKyFileDialog);
intiBtnLayout(mKyFileDialog);
vboxLayout->addSpacing(8);
vboxLayout->setObjectName(QString::fromUtf8("vboxLayout"));
vboxLayout->setContentsMargins(0, 0, 0, 0);
vboxLayout->addLayout(m_hHeaderLayout);
vboxLayout->addSpacing(6);
m_upSeperate = new QFrame(mKyFileDialog);
m_upSeperate->setFrameShape(QFrame::HLine);
m_upSeperate->setFrameShadow(QFrame::Plain);
vboxLayout->addWidget(m_upSeperate);
vboxLayout->addSpacing(6);
vboxLayout->addWidget(m_container);
vboxLayout->addSpacing(15);
vboxLayout->addLayout(m_hLineEditLayout);
vboxLayout->addSpacing(16);
m_downSeperate = new QFrame(mKyFileDialog);
m_downSeperate->setFrameShape(QFrame::HLine);
m_downSeperate->setFrameShadow(QFrame::Plain);
vboxLayout->addWidget(m_downSeperate);
vboxLayout->addSpacing(16);
vboxLayout->addLayout(m_hBtnLayout);
vboxLayout->addSpacing(25);
m_frame->setFrameShadow(QFrame::Raised);
m_frame->setFrameShape(QFrame::NoFrame);
m_frame->setLayout(vboxLayout);
m_splitter = new QSplitter(this);
m_splitter->setAttribute(Qt::WA_TranslucentBackground);
QSizePolicy sizePolicy1(QSizePolicy::Expanding, QSizePolicy::Expanding);
sizePolicy1.setHorizontalStretch(0);
sizePolicy1.setVerticalStretch(0);
sizePolicy1.setHeightForWidth(m_splitter->sizePolicy().hasHeightForWidth());
m_splitter->setSizePolicy(sizePolicy1);
m_splitter->setOrientation(Qt::Horizontal);
m_splitter->setHandleWidth(0);
m_siderLayout->addWidget(m_sider);
m_siderWidget->setLayout(m_siderLayout);
m_splitter->addWidget(m_siderWidget);
m_splitter->setStretchFactor(0, 20);
m_splitter->addWidget(m_frame);
m_splitter->setStretchFactor(1, 40);
int siderWidIndex = m_splitter->indexOf(m_siderWidget);
int frameIndex = m_splitter->indexOf(m_frame);
m_splitter->setCollapsible(siderWidIndex, false);
m_splitter->setCollapsible(frameIndex, false);
m_gridLayout->addWidget(m_splitter);
m_gridLayout->setContentsMargins(0,0,0,0);
}

View File

@ -0,0 +1,126 @@
/*
* KWin Style UKUI
*
* Copyright (C) 2023, KylinSoft Co., Ltd.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
* Authors: Jing Tan <tanjing@kylinos.cn>
*
*/
#include "debug.h"
#ifndef UI_KYFILEDIALOG_H
#define UI_KYFILEDIALOG_H
#include <QApplication>
#include <QComboBox>
#include <QTreeView>
#include <QToolButton>
#include <QLineEdit>
#include <QFrame>
#include <QSplitter>
#include <QLabel>
#include <QMenu>
#include <QAction>
#include <QGridLayout>
#include <QHBoxLayout>
#include <QVBoxLayout>
#include <QDialogButtonBox>
#include <QDebug>
#include "sidebar.h"
#include <QSizePolicy>
#include "kyfiledialog.h"
#include <peony-qt/controls/directory-view/directory-view-container.h>
#include <peony-qt/controls/navigation-bar/advanced-location-bar.h>
#include "pathbar.h"
#include <QPushButton>
#include <QToolBar>
#include <QObject>
#include <QDialog>
#include "menutoolbutoon.h"
namespace Peony {
class DirectoryViewContainer;
}
namespace UKUIFileDialog {
class Ui_KyFileDialog: public QWidget
{
QOBJECT_H
public:
explicit Ui_KyFileDialog(QWidget *parent = nullptr);
~Ui_KyFileDialog();
QGridLayout *m_gridLayout = nullptr;
QHBoxLayout *m_hHeaderLayout = nullptr;
QHBoxLayout *m_hLineEditLayout = nullptr;
QHBoxLayout *m_hBtnLayout = nullptr;
FileDialogPathBar *m_pathbarWidget = nullptr;
Peony::AdvancedLocationBar *m_pathbar = nullptr;
QToolButton *m_searchBtn = nullptr;
//QWidget *m_pathbar = nullptr;
QToolButton *m_backButton = nullptr;
QToolButton *m_forwardButton = nullptr;
QToolButton *m_toParentButton = nullptr;
MenuToolButton *m_modeButton = nullptr;
MenuToolButton *m_sortButton = nullptr;
QToolButton *m_maximizeAndRestore = nullptr;
QToolButton *m_closeButton = nullptr;
QMenu *m_modeMenu = nullptr;
QMenu *m_sortMenu = nullptr;
QAction *m_listModeAction = nullptr;
QAction *m_iconModeAction = nullptr;
FileDialogSideBar *m_sider = nullptr;
QFrame *m_frame = nullptr;
QSplitter *m_splitter = nullptr;
QVBoxLayout *vboxLayout = nullptr;
QTreeView *m_treeView = nullptr;
QLabel *m_fileNameLabel = nullptr;
QLineEdit *m_fileNameEdit = nullptr;
FileDialogComboBox *m_fileTypeCombo = nullptr;
QPushButton *m_newFolderButton = nullptr;
QPushButton *m_acceptButton = nullptr;
QPushButton *m_rejectButton = nullptr;
QFrame *m_upSeperate = nullptr;
QFrame *m_downSeperate = nullptr;
QWidget *m_widget = nullptr;
Peony::DirectoryViewContainer *m_container = nullptr;
QWidget *m_siderWidget = nullptr;
QVBoxLayout *m_siderLayout = nullptr;
QActionGroup *m_sortTypeGroup = nullptr;
QAction *m_fileName = nullptr;
QAction *m_modifiedDate = nullptr;
QAction *m_fileType = nullptr;
QAction *m_fileSize = nullptr;
QAction *m_originalPath = nullptr;
QActionGroup *m_sortOrderGroup = nullptr;
QAction *m_descending = nullptr;
QAction *m_ascending = nullptr;
QAction *m_useGlobalSortAction = nullptr;
public:
void setupUi(QDialog *mKyFileDialog);
private:
void initSortMenu(QDialog *mKyFileDialog);
void initModeMenu(QDialog *mKyFileDialog);
void initSiderBar(QDialog *mKyFileDialog);
void initHeaderBar(QDialog *mKyFileDialog);
void initLineEditLayout(QDialog *mKyFileDialog);
void intiBtnLayout(QDialog *mKyFileDialog);
};
}
#endif // UI_KYFILEDIALOG_H

View File

@ -0,0 +1,180 @@
cmake_minimum_required(VERSION 3.16)
project(qt5-ukui-platformtheme)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(QT_MIN_VERSION "5.12.0")
set(KF5_MIN_VERSION "5.66.0")
# QtCreator supports the following variables for Android, which are identical to qmake Android variables.
# Check http://doc.qt.io/qt-5/deployment-android.html for more information.
# They need to be set before the find_package(Qt5 ...) call.
#if(ANDROID)
# set(ANDROID_PACKAGE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/android")
# if (ANDROID_ABI STREQUAL "armeabi-v7a")
# set(ANDROID_EXTRA_LIBS
# ${CMAKE_CURRENT_SOURCE_DIR}/path/to/libcrypto.so
# ${CMAKE_CURRENT_SOURCE_DIR}/path/to/libssl.so)
# endif()
#endif()
find_package(Qt5Gui)
message(${imported_location})
set(LIB_PATH ${imported_location})
get_filename_component(PARENT_PATH "${LIB_PATH}" PATH)
get_filename_component(PARENT_PATH "${PARENT_PATH}" PATH)
message("qt5-ukui-platformtheme PARENT_PATH: ${PARENT_PATH}")
set(TARGET_PATH ${PARENT_PATH})
find_package(Qt5 ${QT_MIN_VERSION} CONFIG REQUIRED COMPONENTS
DBus
Widgets
X11Extras
Quick
QuickControls2
)
foreach(_dir ${Qt5Gui_PRIVATE_INCLUDE_DIRS})
message(${_dir})
string(REGEX MATCHALL "QtGui" matches "${_dir}")
list(LENGTH matches match_count)
# message(STATUS "字符串中包含 ${match_count} 个 'QtGui'")
if(${match_count} EQUAL 2)
string(REPLACE "QtGui" "QtThemeSupport" ThemeSupport_string "${_dir}")
endif()
endforeach()
message(${ThemeSupport_string})
include_directories(${ThemeSupport_string})
include_directories(${Qt5Widgets_PRIVATE_INCLUDE_DIRS})
include_directories(${Qt5Gui_PRIVATE_INCLUDE_DIRS})
find_package(Qt5LinguistTools)
find_package(KF5WindowSystem ${KF5_MIN_VERSION} CONFIG REQUIRED COMPONENTS)
find_package(KF5Wayland CONFIG REQUIRED COMPONENTS)
find_package(X11)
find_package(PkgConfig)
pkg_check_modules(QGSETTINGS REQUIRED gsettings-qt)
pkg_check_modules(REQUIRED Qt5XdgIconLoader)
pkg_check_modules(REQUIRED kysdk-waylandhelper)
pkg_check_modules(FONTCONFIG REQUIRED fontconfig)
pkg_check_modules(FREETYPE2 REQUIRED freetype2)
pkg_check_modules(GLIB2 REQUIRED glib-2.0 gio-2.0 )
pkg_check_modules(KYSDKWAYLANDHELPER REQUIRED kysdk-waylandhelper)
pkg_check_modules(KYSDKCONF2 REQUIRED kysdk-conf2)
include_directories(${QGSETTINGS_INCLUDE_DIRS})
include_directories(${GLIB2_INCLUDE_DIRS})
if (FONTCONFIG_FOUND)
include_directories(${FONTCONFIG_INCLUDE_DIRS})
link_directories(${FONTCONFIG_LIBRARY_DIRS})
endif()
if (FREETYPE2_FOUND)
include_directories(${FREETYPE2_INCLUDE_DIRS})
link_directories(${FREETYPE2_LIBRARY_DIRS})
endif()
if (KYSDKWAYLANDHELPER_FOUND)
include_directories(${KYSDKWAYLANDHELPER_INCLUDE_DIRS})
link_directories(${KYSDKWAYLANDHELPER_LIBRARY_DIRS})
endif()
if (QGSETTINGS_FOUND)
include_directories(${QGSETTINGS_INCLUDE_DIRS})
link_directories(${QGSETTINGS_LIBRARY_DIRS})
endif()
if (KYSDKCONF2_FOUND)
include_directories(${KYSDKCONF2_INCLUDE_DIRS})
link_directories(${KYSDKCONF2_LIBRARY_DIRS})
endif()
#message(${GLIB2_INCLUDE_DIRS})
#message(${FREETYPE2_INCLUDE_DIRS})
include_directories(../libqt5-ukui-style/)
file(GLOB_RECURSE sources "*.h" "*.hpp" "*.cpp" "*.c" "*.ui")
file(GLOB_RECURSE Json "*.json")
message("jsonfiles path:${Json}")
# To create a new ts file: lupdate -recursive . -target-language en_US -ts translations/en_US.ts -no-ui-lines
file(GLOB TS_FILES "${CMAKE_CURRENT_SOURCE_DIR}/translations/*.ts")
source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${sources} ${Json} ${TS_FILES})
# i18n
set(UKUI_TRANSLATIONS_DIR "/usr/share/qt5-ukui-platformtheme")
add_definitions(
-DUKUI_TRANSLATIONS_DIR="${UKUI_TRANSLATIONS_DIR}"
)
if (NOT DEFINED UPDATE_TRANSLATIONS)
set(UPDATE_TRANSLATIONS "No")
endif()
# cmake -DUPDATE_TRANSLATIONS=yes
if (UPDATE_TRANSLATIONS)
qt5_create_translation(QM_FILES ${CMAKE_SOURCE_DIR} ${TS_FILES})
else()
qt5_add_translation(QM_FILES ${TS_FILES})
endif()
MESSAGE("QM_FILES PATH: ${QM_FILES}")
add_custom_target(themetranslations ALL DEPENDS ${QM_FILES})
add_library(qt5-ukui-platformtheme MODULE ${sources} ${Json} ${TS_FILES})
get_filename_component(PARENT_PATH "${PARENT_PATH}" PATH)
get_filename_component(PARENT_PATH "${PARENT_PATH}" PATH)
set(themesupport_dir ${PARENT_PATH})
message("_qt5Widgets_install_prefix_path:${themesupport_dir}")
target_link_libraries(qt5-ukui-platformtheme
Qt5::Widgets
Qt5::DBus
Qt5::Gui
Qt5::X11Extras
Qt5::Quick
Qt5::QuickControls2
KF5::WaylandClient
KF5::WindowSystem
${QGSETTINGS_LIBRARIES}
${KYSDKWAYLANDHELPER_LIBRARIES}
xcb
glib-2.0
${XCB_LIBS}
qt5-ukui-style
${KYSDKCONF2_LIBRARIES}
${FONTCONFIG_LIBRARIES}
${FREETYPE2_LIBRARIES}
"${themesupport_dir}/libQt5ThemeSupport.a" #link Qt5ThemeSupport
)
add_definitions(-DQT5UKUIPLATFORMTHEME_LIBRARY)
add_definitions(-DQT_DEPRECATED_WARNINGS)
add_definitions(-DQT_MESSAGELOGCONTEXT)
set(UKUIPLATFORMTHEME_DIR ${TARGET_PATH})
target_compile_definitions(${PROJECT_NAME} PRIVATE UKUIPLATFORMTHEME_DIR="${UKUIPLATFORMTHEME_DIR}")
message("DUKUIPLATFORMTHEME_DIR path: ${UKUIPLATFORMTHEME_DIR}")
if(UNIX)
MESSAGE("libqt5-ukui-platformtheme TARGET_PATH: ${TARGET_PATH}")
install(TARGETS ${PROJECT_NAME} DESTINATION ${TARGET_PATH}/platformthemes/)
install(FILES ${QM_FILES} DESTINATION "${UKUI_TRANSLATIONS_DIR}")
endif()

View File

@ -1,7 +1,7 @@
/* /*
* Qt5-UKUI's Library * Qt5-UKUI's Library
* *
* Copyright (C) 2020, Tianjin KYLIN Information Technology Co., Ltd. * Copyright (C) 2023, KylinSoft Co., Ltd.
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public

View File

@ -0,0 +1,184 @@
/*
* Qt5-UKUI's Library
*
* Copyright (C) 2023, KylinSoft Co., Ltd.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 3 of the License, or (at your option) any later version.
*
* This library 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this library. If not, see <https://www.gnu.org/licenses/>.
*
* Authors: Yue Lan <lanyue@kylinos.cn>
*
*/
#include "platform-theme-fontdata.h"
#include <QDebug>
#undef signals
#undef slots
#undef emit
#include <gio/gio.h>
PlatformThemeFontData::PlatformThemeFontData()
{
}
PlatformThemeFontData::~PlatformThemeFontData()
{
}
bool PlatformThemeFontData::chooseFontFile(QString path)
{
QStringList list = path.split(".");
QString fontTypeTTF = "ttf";
QString fontTypeOTF = "otf";
QString fontType = list.at(list.size()-1);
if (fontType.compare(fontTypeTTF, Qt::CaseInsensitive) == 0) {
return true;
} else if (fontType.compare(fontTypeOTF, Qt::CaseInsensitive) == 0) {
return true;
}
return false;
}
QMap<QString, QString> PlatformThemeFontData::getAllFontInformation()
{
QMap<QString, QString> fontMap;
QList<FontInformation> ret;
ret.clear();
FT_Library ft_library;
FT_Error err = FT_Init_FreeType(&ft_library);
if (err != FT_Err_Ok) {
qCritical() << "Error : LibFun , getAllFontInformation , init freetype fail";
return fontMap;
}
if (!FcInitReinitialize()) {
qCritical() << "Error : LibFun , getAllFontInformation , init font list fail";
return fontMap;
}
FcConfig *config = FcInitLoadConfigAndFonts();
FcPattern *pat = FcPatternCreate();
FcObjectSet *os = FcObjectSetBuild(FC_FILE , FC_FAMILY , FC_STYLE , FC_INDEX , NULL);
FcFontSet *fs = FcFontList(config , pat , os);
qInfo() << "Info : LibFun , getAllFontInformation , total matching fonts is " << fs->nfont;
for (int i = 0 ; i < fs->nfont && fs != NULL ; i++) {
FontInformation item;
FcChar8 *path = NULL;
FcChar8 *family = NULL;
// FcChar8 *style = NULL;
int index;
FcPattern *font = fs->fonts[i];
if (FcPatternGetString(font , FC_FILE , 0 , &path) == FcResultMatch &&
FcPatternGetString(font , FC_FAMILY , 0 , &family) == FcResultMatch &&
// FcPatternGetString(font , FC_STYLE , 0 , &style) == FcResultMatch &&
FcPatternGetInteger(font , FC_INDEX , 0 , &index) == FcResultMatch)
{
item.path = QString((char *)path);
item.family = QString((char *)family);
// item.style = QString((char *)style);
}
/* 对字体文件进行判断(判断后缀名是否为.ttf .otf*/
if (!chooseFontFile(item.path)) {
continue;
}
gchar *fontData = NULL;
gsize fontDataLenth;
g_autoptr(GError) error = NULL;
GFile *fd = g_file_new_for_path((const gchar *)path);
if (!g_file_load_contents(fd , NULL , &fontData , &fontDataLenth , NULL , &error)) {
qWarning() << "Waring : LibFun , getAllFontInformation , load font file fail , Path is [ " << path << " ]" << " error is [ " << error->message << " ]";
ret << item;
continue;
}
FT_Error ft_error;
FT_Face ft_retval;
ft_error = FT_New_Memory_Face(ft_library , (const FT_Byte *)fontData , (FT_Long)fontDataLenth , index , &ft_retval);
if (ft_error != FT_Err_Ok) {
qWarning() << "Waring : LibFun , getAllFontInformation , read font data fail , Path is [ " << path << " ]";
ret << item;
continue;
}
/*
///名字
if (ft_retval->family_name) {
item.name = QString((char *)ft_retval->family_name);
}
///样式
if (ft_retval->style_name) {
item.style = QString((char *)ft_retval->style_name);
}
///路径
g_autofree gchar *location = NULL;
location = g_file_get_path(fd);
item.path = QString((char *)location);
///种类
g_autoptr(GFileInfo) fileInfo;
fileInfo = g_file_query_info(fd , G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE "," G_FILE_ATTRIBUTE_STANDARD_SIZE , G_FILE_QUERY_INFO_NONE , NULL , NULL);
if (fileInfo != NULL) {
g_autofree gchar *fileType = g_content_type_get_description(g_file_info_get_content_type(fileInfo));
item.type = QString((char *)fileType);
}
qDebug() << "name:" << item.name << "style:" << item.style << "path:" << item.path << "family:" << item.family;
*/
ret << item;
fontMap.insert(item.family, item.path);
FT_Done_Face(ft_retval);
g_object_unref(fd);
g_free(fontData);
}
if (pat) {
FcPatternDestroy(pat);
}
if (os) {
FcObjectSetDestroy(os);
}
if (fs) {
FcFontSetDestroy(fs);
}
return fontMap;
}

View File

@ -0,0 +1,61 @@
/*
* Qt5-UKUI's Library
*
* Copyright (C) 2023, KylinSoft Co., Ltd.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 3 of the License, or (at your option) any later version.
*
* This library 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this library. If not, see <https://www.gnu.org/licenses/>.
*
* Authors: Yue Lan <lanyue@kylinos.cn>
*
*/
#ifndef PLATFORMTHEMEFONTDATA_H
#define PLATFORMTHEMEFONTDATA_H
#include <QObject>
#include <QFont>
#include <fontconfig/fontconfig.h>
#include <freetype2/ft2build.h>
#include <freetype2/freetype/freetype.h>
typedef struct _FontInformation
{
QString path; /* 路径 */
QString family; /* 系列 */
QString style; /* 样式 */
// QString name; /* 名称 */
// QString type; /* 种类 */
// QString version; /* 版本 */
// QString copyright; /* 版权 */
// QString manufacturer; /* 商标 */
// QString description; /* 描述 */
// QString designer; /* 设计师 */
// QString license; /* 许可证 */
} FontInformation;
class PlatformThemeFontData : public QObject
{
Q_OBJECT
public:
PlatformThemeFontData();
~PlatformThemeFontData();
public:
QMap<QString, QString> getAllFontInformation();
bool chooseFontFile(QString path);
};
#endif // PLATFORMTHEMEFONTDATA_H

View File

@ -1,7 +1,7 @@
/* /*
* Qt5-UKUI's Library * Qt5-UKUI's Library
* *
* Copyright (C) 2020, Tianjin KYLIN Information Technology Co., Ltd. * Copyright (C) 2023, KylinSoft Co., Ltd.
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -23,8 +23,8 @@
#include <QVariant> #include <QVariant>
#include <QStandardPaths> #include <QStandardPaths>
#include "qt5-ukui-platform-theme.h" #include "qt5-ukui-platform-theme.h"
#include "ukui-style-settings.h" #include "settings/ukui-style-settings.h"
#include "highlight-effect.h" #include "effects/highlight-effect.h"
#include <QFontDatabase> #include <QFontDatabase>
#include <QApplication> #include <QApplication>
@ -46,8 +46,14 @@
#include <private/qdbustrayicon_p.h> #include <private/qdbustrayicon_p.h>
#include <QQuickStyle> #include <QQuickStyle>
#include <QDBusPendingCall>
#include "widget/message-box.h" #include <QDBusPendingCallWatcher>
#include <QDBusPendingReply>
#include "widget/messagebox/message-box.h"
//#include "widget/filedialog/kyfiledialog.h"
#include "platform-theme-fontdata.h"
#include "../qt5-ukui-filedialog/filedialoginterface.h"
#include "widget/filedialog/xdgdesktopportalfiledialog_p.h"
#if !defined(QT_NO_DBUS) && !defined(QT_NO_SYSTEMTRAYICON) #if !defined(QT_NO_DBUS) && !defined(QT_NO_SYSTEMTRAYICON)
static bool isDBusTrayAvailable() { static bool isDBusTrayAvailable() {
@ -63,6 +69,69 @@ static bool isDBusTrayAvailable() {
} }
#endif #endif
void Qt5UKUIPlatformTheme::slotChangeStyle(const QString& key)
{
auto settings = UKUIStyleSettings::globalInstance();
if (key == "iconThemeName" || key == "icon-theme-name") {
QString icontheme = settings->get("icon-theme-name").toString();
QIcon::setThemeName(icontheme);
QIcon icon = qApp->windowIcon();
qApp->setWindowIcon(QIcon::fromTheme(icon.name()));
// update all widgets for repaint new themed icons.
for (auto widget : QApplication::allWidgets()) {
widget->update();
}
}
if (key == "systemFont" || key == "system-font") {
//Skip QGuiApplication avoid it crash when we setfont
auto *app = qobject_cast<QApplication *>(qApp);
if(app == nullptr)
return;
QString font = settings->get("system-font").toString();
QFontDatabase db;
int id = 0;
if (!db.families().contains(font)) {
PlatformThemeFontData fontData;
QMap<QString, QString> fontMap = fontData.getAllFontInformation();
if(fontMap.contains(font)){
auto iter = fontMap.find(font);
id = QFontDatabase::addApplicationFont(iter.value());
}
}
QFontDatabase newDb;
if (newDb.families().contains(font)) {
QFont oldFont = QApplication::font();
m_system_font.setFamily(font);
m_fixed_font.setFamily(font);
oldFont.setFamily(font);
QApplication::setFont(oldFont);
}
}
if (key == "systemFontSize" || key == "system-font-size") {
//Skip QGuiApplication avoid it crash when we setfont
auto *app = qobject_cast<QApplication *>(qApp);
if(app == nullptr)
return;
if (qApp->property("noChangeSystemFontSize").isValid() && qApp->property("noChangeSystemFontSize").toBool())
return;
double fontSize = settings->get("system-font-size").toString().toDouble();
if (fontSize > 0) {
QFont oldFont = QApplication::font();
m_system_font.setPointSize(fontSize);
m_fixed_font.setPointSize(fontSize*1.2);
oldFont.setPointSizeF(fontSize);
QApplication::setFont(oldFont);
}
}
}
Qt5UKUIPlatformTheme::Qt5UKUIPlatformTheme(const QStringList &args) Qt5UKUIPlatformTheme::Qt5UKUIPlatformTheme(const QStringList &args)
{ {
//FIXME: //FIXME:
@ -93,62 +162,44 @@ Qt5UKUIPlatformTheme::Qt5UKUIPlatformTheme(const QStringList &args)
QApplication::setFont(m_system_font); QApplication::setFont(m_system_font);
} }
connect(settings, &QGSettings::changed, this, [=](const QString &key){ if (app->applicationName().toLower().contains(QLatin1String("kwin"))) {
if (key == "iconThemeName") { QDBusConnection::sessionBus().connect(QString(),
QString icontheme = settings->get("icon-theme-name").toString(); QStringLiteral("/UKUIPlatformTheme"),
QStringLiteral("org.ukui.UKUIPlatformTheme"),
QIcon::setThemeName(icontheme); QStringLiteral("refreshFonts"),
this,
QIcon icon = qApp->windowIcon(); SLOT(slotChangeStyle(QString)));
qApp->setWindowIcon(QIcon::fromTheme(icon.name()));
// update all widgets for repaint new themed icons.
for (auto widget : QApplication::allWidgets()) {
widget->update();
}
} }
if (key == "systemFont") { connect(settings, &QGSettings::changed, this, &Qt5UKUIPlatformTheme::slotChangeStyle);
//Skip QGuiApplication avoid it crash when we setfont
auto *app = qobject_cast<QApplication *>(qApp);
if(app == nullptr)
return;
QString font = settings->get("system-font").toString();
QFontDatabase db;
if (db.families().contains(font)) {
QFont oldFont = QApplication::font();
m_system_font.setFamily(font);
m_fixed_font.setFamily(font);
oldFont.setFamily(font);
QApplication::setFont(oldFont);
}
}
if (key == "systemFontSize") {
//Skip QGuiApplication avoid it crash when we setfont
auto *app = qobject_cast<QApplication *>(qApp);
if(app == nullptr)
return;
if (qApp->property("noChangeSystemFontSize").isValid() && qApp->property("noChangeSystemFontSize").toBool())
return;
double fontSize = settings->get("system-font-size").toString().toDouble();
if (fontSize > 0) {
QFont oldFont = QApplication::font();
m_system_font.setPointSize(fontSize);
m_fixed_font.setPointSize(fontSize*1.2);
oldFont.setPointSizeF(fontSize);
QApplication::setFont(oldFont);
}
}
});
} }
// // add qqc2 style // // add qqc2 style
// if (QFile::exists(QString("%1/kf5/kirigami/org.kylin.style.so").arg(QT_PLUGIN_INSTALL_DIRS))) { // if (QFile::exists(QString("%1/kf5/kirigami/org.kylin.style.so").arg(QT_PLUGIN_INSTALL_DIRS))) {
// QQuickStyle::setStyle("org.kylin.style"); // QQuickStyle::setStyle("org.kylin.style");
// } // }
if(qApp->inherits("QApplication") == true && qAppName() != "cura") {
QQuickStyle::setStyle("org.ukui.style"); QQuickStyle::setStyle("org.ukui.style");
}
// Get information about portal version
QDBusMessage message = QDBusMessage::createMethodCall(QLatin1String("org.freedesktop.portal.Desktop"),
QLatin1String("/org/freedesktop/portal/desktop"),
QLatin1String("org.freedesktop.DBus.Properties"),
QLatin1String("Get"));
message << QLatin1String("org.freedesktop.portal.FileChooser") << QLatin1String("version");
QDBusPendingCall pendingCall = QDBusConnection::sessionBus().asyncCall(message);
QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(pendingCall);
QObject::connect(watcher, &QDBusPendingCallWatcher::finished, [&] (QDBusPendingCallWatcher *watcher) {
QDBusPendingReply<QVariant> reply = *watcher;
if (reply.isValid()) {
qDebug() << "FileChooserPortalVersion......." << reply.value().toUInt();
m_portalVersion = reply.value().toUInt();
}
watcher->deleteLater();
});
} }
Qt5UKUIPlatformTheme::~Qt5UKUIPlatformTheme() Qt5UKUIPlatformTheme::~Qt5UKUIPlatformTheme()
@ -182,9 +233,21 @@ const QFont *Qt5UKUIPlatformTheme::font(Font type) const
QVariant Qt5UKUIPlatformTheme::themeHint(ThemeHint hint) const QVariant Qt5UKUIPlatformTheme::themeHint(ThemeHint hint) const
{ {
if(qAppName() == "cura")
return QPlatformTheme::themeHint(hint);
switch (hint) { switch (hint) {
case QPlatformTheme::StyleNames: case QPlatformTheme::StyleNames:{
return QStringList()<<"ukui"; // qDebug() << "Qt5UKUIPlatformTheme....";
// if (UKUIStyleSettings::isSchemaInstalled("org.ukui.style")) {
// if (auto settings = UKUIStyleSettings::globalInstance()) {
// QString themeName = settings->get("widget-theme-name").toString();
// if(themeName == "classical")
// return QStringList()<< "ukui-default";
// }
// }
return QStringList()<< "ukui";
}
case QPlatformTheme::SystemIconThemeName: { case QPlatformTheme::SystemIconThemeName: {
if (UKUIStyleSettings::isSchemaInstalled("org.ukui.style")) { if (UKUIStyleSettings::isSchemaInstalled("org.ukui.style")) {
@ -200,8 +263,7 @@ QVariant Qt5UKUIPlatformTheme::themeHint(ThemeHint hint) const
case QPlatformTheme::SystemIconFallbackThemeName: case QPlatformTheme::SystemIconFallbackThemeName:
return "hicolor"; return "hicolor";
case QPlatformTheme::IconThemeSearchPaths: case QPlatformTheme::IconThemeSearchPaths:
//FIXME: return xdgIconThemePaths();
return QStringList()<<".local/share/icons"<<"/usr/share/icons"<<"/usr/local/share/icons";
// case WheelScrollLines: // case WheelScrollLines:
// { // {
// return QVariant(1); // return QVariant(1);
@ -212,6 +274,19 @@ QVariant Qt5UKUIPlatformTheme::themeHint(ThemeHint hint) const
return QPlatformTheme::themeHint(hint); return QPlatformTheme::themeHint(hint);
} }
QStringList Qt5UKUIPlatformTheme::xdgIconThemePaths() const {
QStringList paths;
// Add home directory first in search path
const QFileInfo homeIconDir(QDir::homePath() + QLatin1String("/.icons"));
if (homeIconDir.isDir())
paths.prepend(homeIconDir.absoluteFilePath());
paths.append(QStandardPaths::locateAll(QStandardPaths::GenericDataLocation,
QStringLiteral("icons"),
QStandardPaths::LocateDirectory));
return paths;
}
QIconEngine *Qt5UKUIPlatformTheme::createIconEngine(const QString &iconName) const QIconEngine *Qt5UKUIPlatformTheme::createIconEngine(const QString &iconName) const
{ {
// QPluginLoader l(XDG_ICON_ENGINE_PATH); // QPluginLoader l(XDG_ICON_ENGINE_PATH);
@ -233,15 +308,15 @@ QIconEngine *Qt5UKUIPlatformTheme::createIconEngine(const QString &iconName) con
#if (QT_VERSION >= QT_VERSION_CHECK(5, 9, 0)) #if (QT_VERSION >= QT_VERSION_CHECK(5, 9, 0))
bool Qt5UKUIPlatformTheme::usePlatformNativeDialog(DialogType type) const bool Qt5UKUIPlatformTheme::usePlatformNativeDialog(DialogType type) const
{ {
return true;
switch (type) { switch (type) {
case QPlatformTheme::FileDialog: case QPlatformTheme::FileDialog:
return true;
case QPlatformTheme::FontDialog: case QPlatformTheme::FontDialog:
case QPlatformTheme::ColorDialog: case QPlatformTheme::ColorDialog:
return false; return false;
case QPlatformTheme::MessageDialog: case QPlatformTheme::MessageDialog:
if (qAppName() == "ukui-control-center" || qAppName() == "kybackup") // if (qAppName() == "ukui-control-center")
return false; // return false;
return true; return true;
default: default:
break; break;
@ -252,14 +327,29 @@ bool Qt5UKUIPlatformTheme::usePlatformNativeDialog(DialogType type) const
QPlatformDialogHelper *Qt5UKUIPlatformTheme::createPlatformDialogHelper(DialogType type) const QPlatformDialogHelper *Qt5UKUIPlatformTheme::createPlatformDialogHelper(DialogType type) const
{ {
QObject* plugin = nullptr;
const char* c = UKUIPLATFORMTHEME_DIR;
QString path = QString::fromUtf8(c);
//QString path = UKUIPLATFORMTHEME_DIR;
if (QFile::exists(QString("%1/platformthemes/libqt5-ukui-filedialog.so").arg(path))) {
QPluginLoader loader(QString("%1/platformthemes/libqt5-ukui-filedialog.so").arg(path));
plugin = loader.instance();
}
switch (type) { switch (type) {
case QPlatformTheme::FileDialog: case QPlatformTheme::FileDialog:
if (m_portalVersion >= 3) {
return new XdgDesktopPortalFileDialog;
//return qobject_cast<FileDialogInterface *>(plugin)->create();
}
//return new KyFileDialogHelper;
case QPlatformTheme::FontDialog: case QPlatformTheme::FontDialog:
case QPlatformTheme::ColorDialog: case QPlatformTheme::ColorDialog:
return QPlatformTheme::createPlatformDialogHelper(type); return QPlatformTheme::createPlatformDialogHelper(type);
case QPlatformTheme::MessageDialog: case QPlatformTheme::MessageDialog:
if (qAppName() == "kybackup")
return nullptr;
return new MessageBoxHelper; return new MessageBoxHelper;
default: default:
break; break;
@ -291,4 +381,5 @@ QPlatformSystemTrayIcon *Qt5UKUIPlatformTheme::createPlatformSystemTrayIcon() co
return new QDBusTrayIcon(); return new QDBusTrayIcon();
return nullptr; return nullptr;
} }
#endif #endif

View File

@ -1,7 +1,7 @@
/* /*
* Qt5-UKUI's Library * Qt5-UKUI's Library
* *
* Copyright (C) 2020, Tianjin KYLIN Information Technology Co., Ltd. * Copyright (C) 2023, KylinSoft Co., Ltd.
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -86,9 +86,16 @@ public:
QPlatformSystemTrayIcon *createPlatformSystemTrayIcon() const override; QPlatformSystemTrayIcon *createPlatformSystemTrayIcon() const override;
#endif #endif
public Q_SLOTS:
void slotChangeStyle(const QString& key);
private:
QStringList xdgIconThemePaths() const;
private: private:
QFont m_system_font; QFont m_system_font;
QFont m_fixed_font; QFont m_fixed_font;
int m_portalVersion = 0;
}; };
#endif // QT5UKUIPLATFORMTHEME_H #endif // QT5UKUIPLATFORMTHEME_H

View File

@ -1,59 +0,0 @@
#-------------------------------------------------
#
# Project created by QtCreator 2019-12-31T14:19:01
#
#-------------------------------------------------
QT += widgets dbus gui-private widgets-private x11extras quick quickcontrols2 KWindowSystem
greaterThan(QT_MAJOR_VERSION, 5)|greaterThan(QT_MINOR_VERSION, 7): \
QT += theme_support-private
else: \
QT += platformsupport-private
TARGET = qt5-ukui-platformtheme
TEMPLATE = lib
CONFIG += plugin
CONFIG += c++11 link_pkgconfig
PKGCONFIG += gsettings-qt Qt5XdgIconLoader kysdk-waylandhelper
include(../libqt5-ukui-style/libqt5-ukui-style.pri)
DEFINES += QT5UKUIPLATFORMTHEME_LIBRARY
XDG_ICON_ENGINE = $$[QT_INSTALL_PLUGINS]/iconengines/libQt5XdgIconPlugin.so
DEFINES += XDG_ICON_ENGINE_PATH='\\"$${XDG_ICON_ENGINE}\\"'
QT_PLUGIN_INSTALL_DIRS = $$[QT_INSTALL_PLUGINS]
DEFINES += QT_PLUGIN_INSTALL_DIRS='\\"$${QT_PLUGIN_INSTALL_DIRS}\\"'
# The following define makes your compiler emit warnings if you use
# any feature of Qt which has been marked as deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS
#DEFINES += QT_NO_DEBUG_OUTPUT
DEFINES += QT_MESSAGELOGCONTEXT
# You can also make your code fail to compile if you use deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
include(widget/widget.pri)
SOURCES += \
qt5-ukui-platform-theme.cpp \
main.cpp
HEADERS += \
qt5-ukui-platform-theme.h \
qt5-ukui-platformtheme_global.h
unix {
target.path = $$[QT_INSTALL_PLUGINS]/platformthemes
INSTALLS += target
}
DISTFILES += \
ukui.json

View File

@ -1,7 +1,7 @@
/* /*
* Qt5-UKUI's Library * Qt5-UKUI's Library
* *
* Copyright (C) 2020, Tianjin KYLIN Information Technology Co., Ltd. * Copyright (C) 2023, KylinSoft Co., Ltd.
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public

View File

@ -0,0 +1,221 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="bo_CN">
<context>
<name>MessageBox</name>
<message>
<location filename="../widget/messagebox/message-box.cpp" line="97"/>
<source>Close</source>
<translation></translation>
</message>
</context>
<context>
<name>QApplication</name>
<message>
<location filename="../widget/messagebox/message-box.h" line="272"/>
<source>Executable &apos;%1&apos; requires Qt %2, found Qt %3.</source>
<translation>&apos;%1&apos;Qt %2,Qt%3</translation>
</message>
<message>
<location filename="../widget/messagebox/message-box.h" line="274"/>
<source>Incompatible Qt Library Error</source>
<translation>Qt </translation>
</message>
</context>
<context>
<name>QDialogButtonBox</name>
<message>
<location filename="../widget/messagebox/message-box.cpp" line="362"/>
<location filename="../widget/messagebox/message-box.cpp" line="1090"/>
<source>OK</source>
<translation></translation>
</message>
</context>
<context>
<name>QMessageBox</name>
<message>
<location filename="../widget/messagebox/message-box.cpp" line="418"/>
<location filename="../widget/messagebox/message-box.cpp" line="881"/>
<location filename="../widget/messagebox/message-box.cpp" line="1517"/>
<source>Show Details...</source>
<translation></translation>
</message>
<message>
<location filename="../widget/messagebox/message-box.cpp" line="881"/>
<location filename="../widget/messagebox/message-box.cpp" line="1517"/>
<source>Hide Details...</source>
<translation></translation>
</message>
</context>
<context>
<name>QObject</name>
<message>
<source>File Name</source>
<translation type="vanished"></translation>
</message>
<message>
<source>Modified Date</source>
<translation type="vanished"></translation>
</message>
<message>
<source>File Type</source>
<translation type="vanished"></translation>
</message>
<message>
<source>File Size</source>
<translation type="vanished"></translation>
</message>
<message>
<source>Original Path</source>
<translation type="vanished"></translation>
</message>
<message>
<source>Descending</source>
<translation type="vanished"></translation>
</message>
<message>
<source>Ascending</source>
<translation type="vanished"></translation>
</message>
<message>
<source>Use global sorting</source>
<translation type="vanished"></translation>
</message>
<message>
<source>List View</source>
<translation type="vanished"></translation>
</message>
<message>
<source>Icon View</source>
<translation type="vanished"></translation>
</message>
<message>
<location filename="../widget/messagebox/message-box.cpp" line="730"/>
<source>Close</source>
<translation></translation>
</message>
</context>
<context>
<name>UKUI::TabWidget::DefaultSlideAnimatorFactory</name>
<message>
<location filename="../../libqt5-ukui-style/animations/tabwidget/ukui-tabwidget-default-slide-animator-factory.h" line="50"/>
<source>Default Slide</source>
<translation></translation>
</message>
<message>
<location filename="../../libqt5-ukui-style/animations/tabwidget/ukui-tabwidget-default-slide-animator-factory.h" line="51"/>
<source>Let tab widget switch with a slide animation.</source>
<translation></translation>
</message>
</context>
<context>
<name>UKUIFileDialog::KyFileDialogHelper</name>
<message>
<source>Open File</source>
<translation type="vanished"></translation>
</message>
<message>
<source>Save File</source>
<translation type="vanished"></translation>
</message>
<message>
<source>All Files (*)</source>
<translation type="vanished">(*)</translation>
</message>
</context>
<context>
<name>UKUIFileDialog::KyNativeFileDialog</name>
<message>
<source>Go Back</source>
<translation type="vanished"></translation>
</message>
<message>
<source>Go Forward</source>
<translation type="vanished"></translation>
</message>
<message>
<source>Cd Up</source>
<translation type="vanished"></translation>
</message>
<message>
<source>Search</source>
<translation type="vanished"></translation>
</message>
<message>
<source>View Type</source>
<translation type="vanished"></translation>
</message>
<message>
<source>Sort Type</source>
<translation type="vanished"></translation>
</message>
<message>
<source>Maximize</source>
<translation type="vanished"></translation>
</message>
<message>
<source>Close</source>
<translation type="vanished"></translation>
</message>
<message>
<source>Restore</source>
<translation type="vanished"></translation>
</message>
<message>
<source>Name</source>
<translation type="vanished"></translation>
</message>
<message>
<source>Open</source>
<translation type="vanished"></translation>
</message>
<message>
<source>Cancel</source>
<translation type="vanished"></translation>
</message>
<message>
<source>Save as</source>
<translation type="vanished"></translation>
</message>
<message>
<source>New Folder</source>
<translation type="vanished"></translation>
</message>
<message>
<source>Save</source>
<translation type="vanished"></translation>
</message>
<message>
<source>Directories</source>
<translation type="vanished"></translation>
</message>
<message>
<source>Warning</source>
<translation type="vanished"></translation>
</message>
<message>
<source>exist, are you sure replace?</source>
<translation type="vanished"> </translation>
</message>
<message>
<source>NewFolder</source>
<translation type="vanished"></translation>
</message>
<message>
<source>Undo</source>
<translation type="vanished"></translation>
</message>
<message>
<source>Redo</source>
<translation type="vanished"></translation>
</message>
<message>
<source>warn</source>
<translation type="vanished"></translation>
</message>
<message>
<source>This operation is not supported.</source>
<translation type="vanished"></translation>
</message>
</context>
</TS>

View File

@ -0,0 +1,71 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="cs_CZ">
<context>
<name>MessageBox</name>
<message>
<location filename="../widget/messagebox/message-box.cpp" line="97"/>
<source>Close</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>QApplication</name>
<message>
<location filename="../widget/messagebox/message-box.h" line="272"/>
<source>Executable &apos;%1&apos; requires Qt %2, found Qt %3.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widget/messagebox/message-box.h" line="274"/>
<source>Incompatible Qt Library Error</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>QDialogButtonBox</name>
<message>
<location filename="../widget/messagebox/message-box.cpp" line="362"/>
<location filename="../widget/messagebox/message-box.cpp" line="1090"/>
<source>OK</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>QMessageBox</name>
<message>
<location filename="../widget/messagebox/message-box.cpp" line="418"/>
<location filename="../widget/messagebox/message-box.cpp" line="881"/>
<location filename="../widget/messagebox/message-box.cpp" line="1517"/>
<source>Show Details...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widget/messagebox/message-box.cpp" line="881"/>
<location filename="../widget/messagebox/message-box.cpp" line="1517"/>
<source>Hide Details...</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>QObject</name>
<message>
<location filename="../widget/messagebox/message-box.cpp" line="730"/>
<source>Close</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>UKUI::TabWidget::DefaultSlideAnimatorFactory</name>
<message>
<location filename="../../libqt5-ukui-style/animations/tabwidget/ukui-tabwidget-default-slide-animator-factory.h" line="50"/>
<source>Default Slide</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../libqt5-ukui-style/animations/tabwidget/ukui-tabwidget-default-slide-animator-factory.h" line="51"/>
<source>Let tab widget switch with a slide animation.</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@ -0,0 +1,361 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="de">
<context>
<name>MainWindow</name>
<message>
<location filename="../test/filedialog/mainwindow.ui" line="14"/>
<location filename="../test/highlighted-icon-button/mainwindow.ui" line="14"/>
<location filename="../test/mps-style-application/mainwindow.ui" line="14"/>
<location filename="../test/system-settings/mainwindow.ui" line="14"/>
<source>MainWindow</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../test/filedialog/mainwindow.ui" line="30"/>
<source>test open</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../test/filedialog/mainwindow.ui" line="37"/>
<source>directory</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../test/filedialog/mainwindow.ui" line="47"/>
<source>selected uri</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../test/filedialog/mainwindow.ui" line="54"/>
<source>test show</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../test/filedialog/mainwindow.ui" line="64"/>
<source>test exec</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../test/filedialog/mainwindow.ui" line="71"/>
<source>test save</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../test/filedialog/mainwindow.ui" line="78"/>
<source>test static open</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../test/highlighted-icon-button/mainwindow.ui" line="30"/>
<location filename="../test/mps-style-application/mainwindow.ui" line="36"/>
<source>PushButton</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../test/highlighted-icon-button/mainwindow.ui" line="47"/>
<source>use auto highlight icon</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../test/highlighted-icon-button/mainwindow.ui" line="54"/>
<location filename="../test/mps-style-application/mainwindow.ui" line="43"/>
<source>...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../test/highlighted-icon-button/mainwindow.ui" line="72"/>
<source>highlightOnly</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../test/highlighted-icon-button/mainwindow.ui" line="77"/>
<source>bothDefaultAndHighlight</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../test/mps-style-application/mainwindow.ui" line="50"/>
<source>RadioButton</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../test/system-settings/mainwindow.ui" line="21"/>
<source>style</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../test/system-settings/mainwindow.ui" line="31"/>
<source>icon</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../test/system-settings/mainwindow.ui" line="41"/>
<source>menu opacity</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../test/system-settings/mainwindow.ui" line="55"/>
<source>font</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MessageBox</name>
<message>
<location filename="../qt5-ukui-platformtheme/widget/messagebox/message-box.cpp" line="97"/>
<source>Close</source>
<translation>Schließen</translation>
</message>
</context>
<context>
<name>QApplication</name>
<message>
<location filename="../qt5-ukui-platformtheme/widget/messagebox/message-box.h" line="272"/>
<source>Executable &apos;%1&apos; requires Qt %2, found Qt %3.</source>
<translation>Die ausführbare Datei &apos;%1&apos; erfordert Qt %2, Qt %3 gefunden.</translation>
</message>
<message>
<location filename="../qt5-ukui-platformtheme/widget/messagebox/message-box.h" line="274"/>
<source>Incompatible Qt Library Error</source>
<translation>Fehler in der inkompatiblen Qt-Bibliothek</translation>
</message>
</context>
<context>
<name>QDialogButtonBox</name>
<message>
<location filename="../qt5-ukui-platformtheme/widget/messagebox/message-box.cpp" line="362"/>
<location filename="../qt5-ukui-platformtheme/widget/messagebox/message-box.cpp" line="1090"/>
<source>OK</source>
<translation>OKAY</translation>
</message>
</context>
<context>
<name>QMessageBox</name>
<message>
<location filename="../qt5-ukui-platformtheme/widget/messagebox/message-box.cpp" line="418"/>
<location filename="../qt5-ukui-platformtheme/widget/messagebox/message-box.cpp" line="881"/>
<location filename="../qt5-ukui-platformtheme/widget/messagebox/message-box.cpp" line="1517"/>
<source>Show Details...</source>
<translation>Details anzeigen...</translation>
</message>
<message>
<location filename="../qt5-ukui-platformtheme/widget/messagebox/message-box.cpp" line="881"/>
<location filename="../qt5-ukui-platformtheme/widget/messagebox/message-box.cpp" line="1517"/>
<source>Hide Details...</source>
<translation>Details ausblenden...</translation>
</message>
</context>
<context>
<name>QObject</name>
<message>
<location filename="../qt5-ukui-filedialog/ui_kyfiledialog.cpp" line="259"/>
<source>File Name</source>
<translation>Dateiname</translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/ui_kyfiledialog.cpp" line="263"/>
<source>Modified Date</source>
<translation>Änderungsdatum</translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/ui_kyfiledialog.cpp" line="267"/>
<source>File Type</source>
<translation>Dateityp</translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/ui_kyfiledialog.cpp" line="271"/>
<source>File Size</source>
<translation>Dateigröße</translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/ui_kyfiledialog.cpp" line="275"/>
<source>Original Path</source>
<translation>Ursprünglicher Pfad</translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/ui_kyfiledialog.cpp" line="284"/>
<source>Descending</source>
<translation>Absteigend</translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/ui_kyfiledialog.cpp" line="289"/>
<source>Ascending</source>
<translation>Aufsteigend</translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/ui_kyfiledialog.cpp" line="295"/>
<source>Use global sorting</source>
<translation>Globale Sortierung verwenden</translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/ui_kyfiledialog.cpp" line="315"/>
<source>List View</source>
<translation>Listenansicht</translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/ui_kyfiledialog.cpp" line="316"/>
<source>Icon View</source>
<translation>Icon-Ansicht</translation>
</message>
<message>
<location filename="../qt5-ukui-platformtheme/widget/messagebox/message-box.cpp" line="730"/>
<source>Close</source>
<translation>Schließen</translation>
</message>
</context>
<context>
<name>UKUI::TabWidget::DefaultSlideAnimatorFactory</name>
<message>
<location filename="../libqt5-ukui-style/animations/tabwidget/ukui-tabwidget-default-slide-animator-factory.h" line="50"/>
<source>Default Slide</source>
<translation>Standard-Folie</translation>
</message>
<message>
<location filename="../libqt5-ukui-style/animations/tabwidget/ukui-tabwidget-default-slide-animator-factory.h" line="51"/>
<source>Let tab widget switch with a slide animation.</source>
<translation>Lassen Sie das Tab-Widget mit einer Folienanimation wechseln.</translation>
</message>
</context>
<context>
<name>UKUIFileDialog::KyFileDialogHelper</name>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="2706"/>
<source>Open File</source>
<translation>Offene Linie</translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="2707"/>
<source>Save File</source>
<translation>Datei speichern</translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="2720"/>
<source>All Files (*)</source>
<translation>Alle Dateien (*)</translation>
</message>
</context>
<context>
<name>UKUIFileDialog::KyNativeFileDialog</name>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="221"/>
<source>Go Back</source>
<translation>Zurück</translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="228"/>
<source>Go Forward</source>
<translation>Vorwärts gehen</translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="234"/>
<source>Cd Up</source>
<translation>Cd nach oben</translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="241"/>
<source>Search</source>
<translation>Suchen</translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="249"/>
<source>View Type</source>
<translation>Typ der Ansicht</translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="260"/>
<source>Sort Type</source>
<translation>Art der Sortierung</translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="265"/>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="378"/>
<source>Maximize</source>
<translation>Maximieren</translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="279"/>
<source>Close</source>
<translation>Schließen</translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="375"/>
<source>Restore</source>
<translation>Wiederherstellen</translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="987"/>
<source>Name</source>
<translation>Name</translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="990"/>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="1578"/>
<source>Open</source>
<translation>Offen</translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="991"/>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="1000"/>
<source>Cancel</source>
<translation>Abbrechen</translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="995"/>
<source>Save as</source>
<translation>Speichern unter</translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="997"/>
<source>New Folder</source>
<translation>Neuer Ordner</translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="999"/>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="1582"/>
<source>Save</source>
<translation>Retten</translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="1035"/>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="1036"/>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="1038"/>
<source>Directories</source>
<translation>Verzeichnisse</translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="1227"/>
<source>Warning</source>
<translation>Warnung</translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="1227"/>
<source>exist, are you sure replace?</source>
<translation>existieren, sind Sie sicher, ersetzen?</translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="1920"/>
<source>NewFolder</source>
<translation>Neuer Ordner</translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="2208"/>
<source>Undo</source>
<translation>Aufmachen</translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="2215"/>
<source>Redo</source>
<translation>Noch einmal machen</translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="2414"/>
<source>warn</source>
<translation>warnen</translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="2414"/>
<source>This operation is not supported.</source>
<translation>Dieser Vorgang wird nicht unterstützt.</translation>
</message>
</context>
</TS>

View File

@ -0,0 +1,221 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="en_US">
<context>
<name>MessageBox</name>
<message>
<location filename="../widget/messagebox/message-box.cpp" line="97"/>
<source>Close</source>
<translation>Close</translation>
</message>
</context>
<context>
<name>QApplication</name>
<message>
<location filename="../widget/messagebox/message-box.h" line="272"/>
<source>Executable &apos;%1&apos; requires Qt %2, found Qt %3.</source>
<translation>Executable &apos;%1&apos; requires Qt %2, found Qt %3.</translation>
</message>
<message>
<location filename="../widget/messagebox/message-box.h" line="274"/>
<source>Incompatible Qt Library Error</source>
<translation>Incompatible Qt Library Error</translation>
</message>
</context>
<context>
<name>QDialogButtonBox</name>
<message>
<location filename="../widget/messagebox/message-box.cpp" line="362"/>
<location filename="../widget/messagebox/message-box.cpp" line="1090"/>
<source>OK</source>
<translation>OK</translation>
</message>
</context>
<context>
<name>QMessageBox</name>
<message>
<location filename="../widget/messagebox/message-box.cpp" line="418"/>
<location filename="../widget/messagebox/message-box.cpp" line="881"/>
<location filename="../widget/messagebox/message-box.cpp" line="1517"/>
<source>Show Details...</source>
<translation>Show Details...</translation>
</message>
<message>
<location filename="../widget/messagebox/message-box.cpp" line="881"/>
<location filename="../widget/messagebox/message-box.cpp" line="1517"/>
<source>Hide Details...</source>
<translation>Hide Details...</translation>
</message>
</context>
<context>
<name>QObject</name>
<message>
<source>File Name</source>
<translation type="vanished">File Name</translation>
</message>
<message>
<source>Modified Date</source>
<translation type="vanished">Modified Date</translation>
</message>
<message>
<source>File Type</source>
<translation type="vanished">File Type</translation>
</message>
<message>
<source>File Size</source>
<translation type="vanished">File Size</translation>
</message>
<message>
<source>Original Path</source>
<translation type="vanished">Original Path</translation>
</message>
<message>
<source>Descending</source>
<translation type="vanished">Descending</translation>
</message>
<message>
<source>Ascending</source>
<translation type="vanished">Ascending</translation>
</message>
<message>
<source>Use global sorting</source>
<translation type="vanished">Use global sorting</translation>
</message>
<message>
<source>List View</source>
<translation type="vanished">List View</translation>
</message>
<message>
<source>Icon View</source>
<translation type="vanished">Icon View</translation>
</message>
<message>
<location filename="../widget/messagebox/message-box.cpp" line="730"/>
<source>Close</source>
<translation>Close</translation>
</message>
</context>
<context>
<name>UKUI::TabWidget::DefaultSlideAnimatorFactory</name>
<message>
<location filename="../../libqt5-ukui-style/animations/tabwidget/ukui-tabwidget-default-slide-animator-factory.h" line="50"/>
<source>Default Slide</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../libqt5-ukui-style/animations/tabwidget/ukui-tabwidget-default-slide-animator-factory.h" line="51"/>
<source>Let tab widget switch with a slide animation.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>UKUIFileDialog::KyFileDialogHelper</name>
<message>
<source>Open File</source>
<translation type="vanished">Open File</translation>
</message>
<message>
<source>Save File</source>
<translation type="vanished">Save File</translation>
</message>
<message>
<source>All Files (*)</source>
<translation type="vanished">All Files (*)</translation>
</message>
</context>
<context>
<name>UKUIFileDialog::KyNativeFileDialog</name>
<message>
<source>Go Back</source>
<translation type="vanished">Go Back</translation>
</message>
<message>
<source>Go Forward</source>
<translation type="vanished">Go Forward</translation>
</message>
<message>
<source>Cd Up</source>
<translation type="vanished">Cd Up</translation>
</message>
<message>
<source>Search</source>
<translation type="vanished">Search</translation>
</message>
<message>
<source>View Type</source>
<translation type="vanished">View Type</translation>
</message>
<message>
<source>Sort Type</source>
<translation type="vanished">Sort Type</translation>
</message>
<message>
<source>Maximize</source>
<translation type="vanished">Maximize</translation>
</message>
<message>
<source>Close</source>
<translation type="vanished">Close</translation>
</message>
<message>
<source>Restore</source>
<translation type="vanished">Restore</translation>
</message>
<message>
<source>Name</source>
<translation type="vanished">Name</translation>
</message>
<message>
<source>Open</source>
<translation type="vanished">Open</translation>
</message>
<message>
<source>Cancel</source>
<translation type="vanished">Cancel</translation>
</message>
<message>
<source>Save as</source>
<translation type="vanished">Save as</translation>
</message>
<message>
<source>New Folder</source>
<translation type="vanished">New Folder</translation>
</message>
<message>
<source>Save</source>
<translation type="vanished">Save</translation>
</message>
<message>
<source>Directories</source>
<translation type="vanished">Directories</translation>
</message>
<message>
<source>Warning</source>
<translation type="vanished">Warning</translation>
</message>
<message>
<source>exist, are you sure replace?</source>
<translation type="vanished">exist, are you sure replace?</translation>
</message>
<message>
<source>NewFolder</source>
<translation type="vanished">NewFolder</translation>
</message>
<message>
<source>Undo</source>
<translation type="vanished">Undo</translation>
</message>
<message>
<source>Redo</source>
<translation type="vanished">Redo</translation>
</message>
<message>
<source>warn</source>
<translation type="vanished">warn</translation>
</message>
<message>
<source>This operation is not supported.</source>
<translation type="vanished">This operation is not supported.</translation>
</message>
</context>
</TS>

View File

@ -0,0 +1,361 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="es">
<context>
<name>MainWindow</name>
<message>
<location filename="../test/filedialog/mainwindow.ui" line="14"/>
<location filename="../test/highlighted-icon-button/mainwindow.ui" line="14"/>
<location filename="../test/mps-style-application/mainwindow.ui" line="14"/>
<location filename="../test/system-settings/mainwindow.ui" line="14"/>
<source>MainWindow</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../test/filedialog/mainwindow.ui" line="30"/>
<source>test open</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../test/filedialog/mainwindow.ui" line="37"/>
<source>directory</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../test/filedialog/mainwindow.ui" line="47"/>
<source>selected uri</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../test/filedialog/mainwindow.ui" line="54"/>
<source>test show</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../test/filedialog/mainwindow.ui" line="64"/>
<source>test exec</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../test/filedialog/mainwindow.ui" line="71"/>
<source>test save</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../test/filedialog/mainwindow.ui" line="78"/>
<source>test static open</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../test/highlighted-icon-button/mainwindow.ui" line="30"/>
<location filename="../test/mps-style-application/mainwindow.ui" line="36"/>
<source>PushButton</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../test/highlighted-icon-button/mainwindow.ui" line="47"/>
<source>use auto highlight icon</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../test/highlighted-icon-button/mainwindow.ui" line="54"/>
<location filename="../test/mps-style-application/mainwindow.ui" line="43"/>
<source>...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../test/highlighted-icon-button/mainwindow.ui" line="72"/>
<source>highlightOnly</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../test/highlighted-icon-button/mainwindow.ui" line="77"/>
<source>bothDefaultAndHighlight</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../test/mps-style-application/mainwindow.ui" line="50"/>
<source>RadioButton</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../test/system-settings/mainwindow.ui" line="21"/>
<source>style</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../test/system-settings/mainwindow.ui" line="31"/>
<source>icon</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../test/system-settings/mainwindow.ui" line="41"/>
<source>menu opacity</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../test/system-settings/mainwindow.ui" line="55"/>
<source>font</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MessageBox</name>
<message>
<location filename="../qt5-ukui-platformtheme/widget/messagebox/message-box.cpp" line="97"/>
<source>Close</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>QApplication</name>
<message>
<location filename="../qt5-ukui-platformtheme/widget/messagebox/message-box.h" line="272"/>
<source>Executable &apos;%1&apos; requires Qt %2, found Qt %3.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qt5-ukui-platformtheme/widget/messagebox/message-box.h" line="274"/>
<source>Incompatible Qt Library Error</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>QDialogButtonBox</name>
<message>
<location filename="../qt5-ukui-platformtheme/widget/messagebox/message-box.cpp" line="362"/>
<location filename="../qt5-ukui-platformtheme/widget/messagebox/message-box.cpp" line="1090"/>
<source>OK</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>QMessageBox</name>
<message>
<location filename="../qt5-ukui-platformtheme/widget/messagebox/message-box.cpp" line="418"/>
<location filename="../qt5-ukui-platformtheme/widget/messagebox/message-box.cpp" line="881"/>
<location filename="../qt5-ukui-platformtheme/widget/messagebox/message-box.cpp" line="1517"/>
<source>Show Details...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qt5-ukui-platformtheme/widget/messagebox/message-box.cpp" line="881"/>
<location filename="../qt5-ukui-platformtheme/widget/messagebox/message-box.cpp" line="1517"/>
<source>Hide Details...</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>QObject</name>
<message>
<location filename="../qt5-ukui-filedialog/ui_kyfiledialog.cpp" line="259"/>
<source>File Name</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/ui_kyfiledialog.cpp" line="263"/>
<source>Modified Date</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/ui_kyfiledialog.cpp" line="267"/>
<source>File Type</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/ui_kyfiledialog.cpp" line="271"/>
<source>File Size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/ui_kyfiledialog.cpp" line="275"/>
<source>Original Path</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/ui_kyfiledialog.cpp" line="284"/>
<source>Descending</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/ui_kyfiledialog.cpp" line="289"/>
<source>Ascending</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/ui_kyfiledialog.cpp" line="295"/>
<source>Use global sorting</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/ui_kyfiledialog.cpp" line="315"/>
<source>List View</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/ui_kyfiledialog.cpp" line="316"/>
<source>Icon View</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qt5-ukui-platformtheme/widget/messagebox/message-box.cpp" line="730"/>
<source>Close</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>UKUI::TabWidget::DefaultSlideAnimatorFactory</name>
<message>
<location filename="../libqt5-ukui-style/animations/tabwidget/ukui-tabwidget-default-slide-animator-factory.h" line="50"/>
<source>Default Slide</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../libqt5-ukui-style/animations/tabwidget/ukui-tabwidget-default-slide-animator-factory.h" line="51"/>
<source>Let tab widget switch with a slide animation.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>UKUIFileDialog::KyFileDialogHelper</name>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="2706"/>
<source>Open File</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="2707"/>
<source>Save File</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="2720"/>
<source>All Files (*)</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>UKUIFileDialog::KyNativeFileDialog</name>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="221"/>
<source>Go Back</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="228"/>
<source>Go Forward</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="234"/>
<source>Cd Up</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="241"/>
<source>Search</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="249"/>
<source>View Type</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="260"/>
<source>Sort Type</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="265"/>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="378"/>
<source>Maximize</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="279"/>
<source>Close</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="375"/>
<source>Restore</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="987"/>
<source>Name</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="990"/>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="1578"/>
<source>Open</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="991"/>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="1000"/>
<source>Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="995"/>
<source>Save as</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="997"/>
<source>New Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="999"/>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="1582"/>
<source>Save</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="1035"/>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="1036"/>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="1038"/>
<source>Directories</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="1227"/>
<source>Warning</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="1227"/>
<source>exist, are you sure replace?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="1920"/>
<source>NewFolder</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="2208"/>
<source>Undo</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="2215"/>
<source>Redo</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="2414"/>
<source>warn</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qt5-ukui-filedialog/kyfiledialog.cpp" line="2414"/>
<source>This operation is not supported.</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@ -0,0 +1,71 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="fa_IR">
<context>
<name>MessageBox</name>
<message>
<location filename="../widget/messagebox/message-box.cpp" line="97"/>
<source>Close</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>QApplication</name>
<message>
<location filename="../widget/messagebox/message-box.h" line="272"/>
<source>Executable &apos;%1&apos; requires Qt %2, found Qt %3.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widget/messagebox/message-box.h" line="274"/>
<source>Incompatible Qt Library Error</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>QDialogButtonBox</name>
<message>
<location filename="../widget/messagebox/message-box.cpp" line="362"/>
<location filename="../widget/messagebox/message-box.cpp" line="1090"/>
<source>OK</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>QMessageBox</name>
<message>
<location filename="../widget/messagebox/message-box.cpp" line="418"/>
<location filename="../widget/messagebox/message-box.cpp" line="881"/>
<location filename="../widget/messagebox/message-box.cpp" line="1517"/>
<source>Show Details...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widget/messagebox/message-box.cpp" line="881"/>
<location filename="../widget/messagebox/message-box.cpp" line="1517"/>
<source>Hide Details...</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>QObject</name>
<message>
<location filename="../widget/messagebox/message-box.cpp" line="730"/>
<source>Close</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>UKUI::TabWidget::DefaultSlideAnimatorFactory</name>
<message>
<location filename="../../libqt5-ukui-style/animations/tabwidget/ukui-tabwidget-default-slide-animator-factory.h" line="50"/>
<source>Default Slide</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../libqt5-ukui-style/animations/tabwidget/ukui-tabwidget-default-slide-animator-factory.h" line="51"/>
<source>Let tab widget switch with a slide animation.</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

Some files were not shown because too many files have changed in this diff Show More