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
* 改动:
@ -104,3 +671,4 @@ qt5-ukui-platformtheme (3.1.4.1~0509-ok1) yangtze; urgency=medium
* Initial for openkylin.
-- 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
Section: libs
Priority: optional
Maintainer: UKUI SIG <ukui@lists.openkylin.top>
Uploaders: handsome_feng <jianfengli@ubuntukylin.com>
Build-Depends: debhelper-compat (=12),
pkg-kde-tools,
Maintainer: Kylin Team <team+kylin@tracker.debian.org>
Uploaders: handsome_feng <jianfengli@ubuntukylin.com>,
xibowen <xibowen@kylinos.cn>
Build-Depends: dbus-x11,
debhelper-compat (=12),
kirigami2-dev,
libfontconfig-dev,
libfreetype-dev,
libglib2.0-dev,
libqt5x11extras5-dev,
libkf5windowsystem-dev,
libkf5wayland-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-kde-tools,
cmake,
qt5-qmake,
qtbase5-dev,
qtbase5-dev-tools,
qtbase5-private-dev,
qtchooser,
qttools5-dev-tools,
libqt5xdgiconloader-dev,
qtquickcontrols2-5-dev,
qtdeclarative5-dev,
dbus-x11,
kirigami2-dev,
libkf5iconthemes-dev,
libqt5svg5-dev,
libkysdk-waylandhelper-dev
Standards-Version: 4.5.1
qtquickcontrols2-5-dev,
qttools5-dev,
qttools5-dev-tools
Standards-Version: 4.6.1.0
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-Browser: https://gitee.com/openkylin/qt5-ukui-platformtheme
Package: qt5-ukui-platformtheme
Architecture: any
Depends: libqt5-ukui-style1,
qt5-styles-ukui,
qt5-gesture-extensions,
Depends: libqt5-ukui-style1 (= ${binary:Version}),
libqt5xdgiconloader3,
qml-module-org-ukui-qqc2desktopstyle (= ${binary:Version}),
qml-module-org-ukui-stylehelper (= ${binary:Version}),
qt5-styles-ukui (= ${binary:Version}),
${misc:Depends},
${shlibs:Depends}
Description: Qt5 QPA platform theme of UKUI
@ -50,7 +59,7 @@ Description: Qt5 QPA platform theme of UKUI
Package: qt5-styles-ukui
Architecture: any
Depends: libqt5-ukui-style1,
Depends: libqt5-ukui-style1 (= ${binary:Version}),
${misc:Depends},
${shlibs:Depends}
Description: QStyle plugins provided by ukui
@ -66,8 +75,8 @@ Description: QStyle plugins provided by ukui
Package: libqt5-ukui-style1
Architecture: any
Depends: libglib2.0-0,
libqt5widgets5,
libgsettings-qt1,
libqt5widgets5,
${misc:Depends},
${shlibs:Depends}
Provides: libqt5-ukui-style
@ -98,19 +107,20 @@ Description: Development files of libqt5-ukui-style1
Package: qml-module-org-ukui-qqc2desktopstyle
Architecture: any
Depends: qml-module-qtgraphicaleffects,
Depends: qml-module-org-ukui-stylehelper,
qml-module-qtgraphicaleffects,
qml-module-qtqml-models2,
qml-module-qtquick-controls2,
qml-module-qtquick-layouts,
qml-module-qtquick-templates2,
qml-module-qtquick-window2,
qml-module-qtquick2,
qml-module-org-ukui-stylehelper,
${misc:Depends},
${shlibs:Depends},
${shlibs:Depends}
Description: Qt Quick Controls 2: Kylin Style
Small style written in QML for QtQuickControls2 intended to be used
by default in QQC2-based apps when used in the Kylin tablet desktop
Small style written in QML for QtQuickControls2 intended
to be used by default in QQC2-based apps when used in the
Kylin tablet desktop.
Package: qml-module-org-ukui-stylehelper
Architecture: any
@ -122,6 +132,10 @@ Depends: qml-module-qtgraphicaleffects,
qml-module-qtquick-window2,
qml-module-qtquick2,
${misc:Depends},
${shlibs:Depends},
${shlibs:Depends}
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/
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: *
Copyright: 2020, Tianjin KYLIN Information Technology Co., Ltd.
License: LGPL-3.0+
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+
Copyright: 2023, KylinSoft Co., Ltd.
License: LGPL-3+
Files: qt5-ukui-platformtheme/widget/*
Copyright: 2020, KylinSoft Co., Ltd.
License: GPL-3.0+
Copyright: 2023, KylinSoft Co., Ltd.
License: GPL-3+
Files: test/*
Copyright: 2020, Tianjin KYLIN Information Technology Co., Ltd.
License: GPL-3.0+
Copyright: 2023, KylinSoft Co., Ltd.
License: GPL-3+
Files: test/messagebox/*
Copyright: 2020, Tianjin KYLIN Information Technology Co., Ltd.
License: GPL-3.0+
Files: ukui-styles/qt5-style-ukui/breezeboxshadowrenderer.cpp
ukui-styles/qt5-style-ukui/breezeboxshadowrenderer.h
Copyright: 2018, Vlad Zagorodniy <vlad.zahorodnii@kde.org>
License: GPL-2+
Files: ukui-styles/*
Copyright: 2020, Tianjin KYLIN Information Technology Co., Ltd.
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
License: GPL-2+
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/>.
.
On Debian systems, the complete text of the GNU General Public License
Version 3 can be found in `/usr/share/common-licenses/GPL-3'.
the Free Software Foundation; version 2 dated June, 1991, or (at
your option) any later version.
On Debian systems, the complete text of version 2 of the GNU General
Public License can be found in '/usr/share/common-licenses/GPL-2'.
License: LGPL-3.0+
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/>.
.
On Debian systems, the complete text of the GNU Lesser General Public License
Version 3 can be found in `/usr/share/common-licenses/LGPL-3'.
License: GPL-3+
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; version 3 dated June, 2007, or (at
your option) any later version.
On Debian systems, the complete text of version 3 of the GNU General
Public License can be found in '/usr/share/common-licenses/GPL-3'.
License: LGPL-3+
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
Free Software Foundation; version 3 of the License, or (at
your option) any later version.
On Debian systems, the complete text of version 3 of the GNU Lesser
General Public License 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
usr/lib/*/pkgconfig/*.pc
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/share/glib-2.0/schemas/org.ukui.style.gschema.xml

View File

@ -1 +1,2 @@
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

3
debian/rules vendored
View File

@ -5,3 +5,6 @@ export DEB_BUILD_MAINT_OPTIONS = hardening=+all
%:
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
opts=filenamemangle=s/.+\/v?(\d\S+)\.tar\.gz/qt5-ukui-platformtheme-$1\.tar\.gz/ \
https://github.com/ukui/qt5-ukui-platformtheme/releases .*/v?(\d\S+)\.tar\.gz
https://gitee.com/openkylin/qt5-ukui-platformtheme/releases/ .*/qt5-ukui-platformtheme-(\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
*
* 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
* modify it under the terms of the GNU Lesser General Public
@ -32,8 +32,14 @@ AnimationHelper::AnimationHelper(QObject *parent) : QObject(parent)
AnimationHelper::~AnimationHelper()
{
// for (auto animator : *m_animators) {
// delete animator;
// }
delete m_animators;
for(auto item = m_animators->begin(); item != m_animators->end(); item++){
if(item.value()){
delete item.value();
item.value() = nullptr;
}
}
if(m_animators){
delete m_animators;
m_animators = nullptr;
}
}

View File

@ -1,7 +1,7 @@
/*
* 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
* 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
*
* 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
* 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 bool setAnimatorStartValue(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 void setAnimatorDirectionForward(const QString &property = nullptr, bool forward = true) {}
@ -49,6 +51,10 @@ public:
virtual int currentAnimatorTime(const QString &property = nullptr) {return 0;}
virtual void setAnimatorCurrentTime(const QString &property = nullptr, const int msecs = 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

View File

@ -1,7 +1,7 @@
/*
* 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
* 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
*
* 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
* 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
* \param w
@ -64,43 +81,88 @@ bool DefaultInteractionAnimator::bindWidget(QWidget *w)
return false;
}
if(m_groove_width){
delete(m_groove_width);
m_groove_width = nullptr;
}
m_groove_width = new QVariantAnimation(this);
m_groove_width->setStartValue(0.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);
if( m_slider_opacity){
delete(m_slider_opacity);
m_slider_opacity = nullptr;
}
m_slider_opacity = new QVariantAnimation(this);
m_slider_opacity->setStartValue(0.0);
m_slider_opacity->setEndValue(0.10);
m_slider_opacity->setDuration(150);
m_slider_opacity->setEndValue(1.0);
m_slider_opacity->setDuration(200);
m_slider_opacity->setEasingCurve(QEasingCurve::InOutCubic);
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->setStartValue(0.0);
m_sunken_silder_additional_opacity->setEndValue(0.10);
m_sunken_silder_additional_opacity->setDuration(150);
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");
connect(m_groove_width, &QVariantAnimation::valueChanged, w, [=]() {
w->repaint();
w->update();
});
connect(m_slider_opacity, &QVariantAnimation::valueChanged, w, [=]() {
w->repaint();
w->update();
});
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, [=]() {
w->repaint();
w->update();
});
connect(m_slider_opacity, &QVariantAnimation::finished, w, [=]() {
w->repaint();
w->update();
});
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;
@ -110,9 +172,26 @@ bool DefaultInteractionAnimator::unboundWidget()
{
this->stop();
this->setDirection(QAbstractAnimation::Forward);
m_groove_width->deleteLater();
m_slider_opacity->deleteLater();
m_sunken_silder_additional_opacity->deleteLater();
if(m_groove_width){
delete(m_groove_width);
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) {
this->setParent(nullptr);
@ -129,6 +208,10 @@ QVariant DefaultInteractionAnimator::value(const QString &property)
return m_slider_opacity->currentValue();
} else if (property == "additional_opacity") {
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 {
return QVariant();
}
@ -146,6 +229,12 @@ bool DefaultInteractionAnimator::setAnimatorStartValue(const QString &property,
{
m_sunken_silder_additional_opacity->setStartValue(value);
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 {
return false;
}
@ -162,22 +251,69 @@ bool DefaultInteractionAnimator::setAnimatorEndValue(const QString &property, co
} else if (property == "additional_opacity") {
m_sunken_silder_additional_opacity->setEndValue(value);
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 {
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)
{
if (property == "groove_width") {
m_groove_width->setDuration(duration);
return true;
} else if (property == "slider_opacity") {
m_groove_width->setDuration(duration);
m_slider_opacity->setDuration(duration);
return true;
} else if (property == "additional_opacity") {
m_sunken_silder_additional_opacity->setDuration(duration);
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 {
return false;
}
@ -192,6 +328,10 @@ void DefaultInteractionAnimator::setAnimatorDirectionForward(const QString &prop
m_slider_opacity->setDirection(d);
} else if (property == "additional_opacity") {
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 {
return;
}
@ -205,6 +345,10 @@ bool DefaultInteractionAnimator::isRunning(const QString &property)
return m_slider_opacity->state() == Running;
} else if (property == "additional_opacity") {
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 {
return this->state() == Running;
}
@ -218,6 +362,10 @@ void DefaultInteractionAnimator::startAnimator(const QString &property)
m_slider_opacity->start();
} else if (property == "additional_opacity") {
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 {
this->start();
}
@ -231,6 +379,10 @@ void DefaultInteractionAnimator::stopAnimator(const QString &property)
m_slider_opacity->stop();
} else if (property == "additional_opacity") {
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 {
this->stop();
}
@ -244,11 +396,23 @@ int DefaultInteractionAnimator::currentAnimatorTime(const QString &property)
return m_slider_opacity->currentTime();
} else if (property == "additional_opacity") {
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 {
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)
{
if (property == "groove_width") {
@ -257,7 +421,33 @@ int DefaultInteractionAnimator::totalAnimationDuration(const QString &property)
return m_slider_opacity->duration();
} else if (property == "additional_opacity") {
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 {
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
*
* 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
* modify it under the terms of the GNU Lesser General Public
@ -24,7 +24,7 @@
#define UKUISCROLLBARDEFAULTINTERACTIONANIMATOR_H
#include <QParallelAnimationGroup>
#include "animator-iface.h"
#include "../animator-iface.h"
class QVariantAnimation;
@ -37,6 +37,7 @@ class DefaultInteractionAnimator : public QParallelAnimationGroup, public Animat
Q_OBJECT
public:
explicit DefaultInteractionAnimator(QObject *parent = nullptr);
~DefaultInteractionAnimator();
bool bindWidget(QWidget *w);
bool unboundWidget();
@ -46,20 +47,30 @@ public:
bool isRunning(const QString &property = nullptr);
bool setAnimatorStartValue(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);
void setAnimatorDirectionForward(const QString &property = nullptr, bool forward = true);
void startAnimator(const QString &property = nullptr);
void stopAnimator(const QString &property = nullptr);
int currentAnimatorTime(const QString &property = nullptr);
void setAnimatorCurrentTime(const QString &property, const int msecs);
int totalAnimationDuration(const QString &property);
void setExtraProperty(const QString &property, const QVariant &value);
QVariant getExtraProperty(const QString &property);
private:
QWidget *m_widget = nullptr;
QVariantAnimation *m_groove_width;
QVariantAnimation *m_slider_opacity;
QVariantAnimation *m_sunken_silder_additional_opacity;
QVariantAnimation *m_groove_width = nullptr;
QVariantAnimation *m_slider_opacity = nullptr;
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
*
* 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
* modify it under the terms of the GNU Lesser General Public
@ -24,7 +24,7 @@
#define UKUITABWIDGETANIMATORIFACE_H
#include <QTabWidget>
#include "animator-iface.h"
#include "../animator-iface.h"
/*!
* \brief The UKUITabWidgetAnimatorIface class

View File

@ -1,7 +1,7 @@
/*
* 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
* modify it under the terms of the GNU Lesser General Public
@ -24,7 +24,7 @@
#define UKUITABWIDGETANIMATORPLUGINIFACE_H
#include <QString>
#include "animator-plugin-iface.h"
#include "../animator-plugin-iface.h"
#include "ukui-tabwidget-animator-iface.h"
#define UKUITabWidgetAnimatorPluginInterface_iid "org.ukui.style.animatons.TabWidgetPluginInterface"

View File

@ -1,7 +1,7 @@
/*
* 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
* modify it under the terms of the GNU Lesser General Public

View File

@ -1,7 +1,7 @@
/*
* 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
* modify it under the terms of the GNU Lesser General Public
@ -45,6 +45,7 @@ class DefaultSlideAnimatorFactory : public QObject, public UKUITabWidgetAnimator
Q_OBJECT
public:
explicit DefaultSlideAnimatorFactory(QObject *parent = nullptr);
~DefaultSlideAnimatorFactory(){}
const QString id() {return tr("Default Slide");}
const QString brief() {return tr("Let tab widget switch with a slide animation.");}

View File

@ -1,7 +1,7 @@
/*
* 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
* modify it under the terms of the GNU Lesser General Public
@ -60,6 +60,23 @@ DefaultSlideAnimator::DefaultSlideAnimator(QObject *parent) : QVariantAnimation
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
* \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){
this->stop();
m_tmp_page->hide();
if(!w->isVisible()){
return ;
}
if (m_bound_widget->currentWidget() && m_bound_widget->currentWidget() != previous_widget) {
left_right = m_bound_widget->currentIndex() > pervIndex;
pervIndex = m_bound_widget->currentIndex();

View File

@ -1,7 +1,7 @@
/*
* 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
* modify it under the terms of the GNU Lesser General Public
@ -44,6 +44,7 @@ class DefaultSlideAnimator : public QVariantAnimation, public UKUITabWidgetAnima
Q_OBJECT
public:
explicit DefaultSlideAnimator(QObject *parent = nullptr);
~DefaultSlideAnimator();
bool bindTabWidget(QTabWidget *w);
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
*
* 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
* modify it under the terms of the GNU Lesser General Public
@ -38,7 +38,7 @@
#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)
{
@ -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)
{
@ -288,6 +315,8 @@ QPixmap HighLightEffect::ordinaryGeneratePixmap(const QPixmap &pixmap, const QSt
return pixmap;
if (!isPixmapPureColor(pixmap) || !(option->state & QStyle::State_Enabled))
return pixmap;
if (!isSymbolicColor(pixmap))
return pixmap;
QPixmap target = pixmap;
QColor color;
@ -312,6 +341,8 @@ QPixmap HighLightEffect::hoverGeneratePixmap(const QPixmap &pixmap, const QStyle
return pixmap;
if (!isPixmapPureColor(pixmap) || !(option->state & QStyle::State_Enabled))
return pixmap;
if (!isSymbolicColor(pixmap))
return pixmap;
QPixmap target = pixmap;
QColor color;
@ -347,6 +378,8 @@ QPixmap HighLightEffect::bothOrdinaryAndHoverGeneratePixmap(const QPixmap &pixma
return pixmap;
if (!isPixmapPureColor(pixmap) || !(option->state & QStyle::State_Enabled))
return pixmap;
if (!isSymbolicColor(pixmap))
return pixmap;
QPixmap target = pixmap;
QColor defaultColor, hoverColor;

View File

@ -1,7 +1,7 @@
/*
* 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
* modify it under the terms of the GNU Lesser General Public
@ -61,6 +61,7 @@ public:
static QColor symbolic_color;
static void setSkipEffect(QWidget *w, bool skip = true);
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 setViewItemIconHighlightEffect(QAbstractItemView *view, HighLightMode hlmode = skipHighlight, EffectMode mode = HighlightOnly);
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
*
* 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
* modify it under the terms of the GNU Lesser General Public

View File

@ -1,7 +1,7 @@
/*
* 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
* modify it under the terms of the GNU Lesser General Public
@ -40,6 +40,7 @@ public:
};
explicit TwoFingerSlideGesture(QObject *parent = nullptr);
~TwoFingerSlideGesture(){}
Direction direction() {return m_direction;}
const QPoint startPos() {return m_start_pos;}

View File

@ -1,7 +1,7 @@
/*
* 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
* modify it under the terms of the GNU Lesser General Public

View File

@ -1,7 +1,7 @@
/*
* 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
* modify it under the terms of the GNU Lesser General Public
@ -43,6 +43,7 @@ public:
};
explicit TwoFingerZoomGesture(QObject *parent = nullptr);
~TwoFingerZoomGesture(){}
Direction zoomDirection() {return m_zoom_direction;}
QPair<QPoint, QPoint> startPoints() {return m_start_points;}
@ -64,6 +65,7 @@ class TwoFingerZoomGestureRecognizer : public QGestureRecognizer
{
public:
explicit TwoFingerZoomGestureRecognizer();
~TwoFingerZoomGestureRecognizer(){}
QGesture *create(QObject *target) override;
QGestureRecognizer::Result recognize(QGesture *gesture, QObject *watched, QEvent *event) override;

View File

@ -1,7 +1,7 @@
/*
* 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
* modify it under the terms of the GNU Lesser General Public

View File

@ -1,7 +1,7 @@
/*
* 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
* 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
*
* 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
* modify it under the terms of the GNU Lesser General Public

View File

@ -1,7 +1,7 @@
/*
* 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
* 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
*
* 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
* modify it under the terms of the GNU Lesser General Public

View File

@ -1,7 +1,7 @@
/*
* 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
* modify it under the terms of the GNU Lesser General Public

View File

@ -1,7 +1,7 @@
/*
* 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
* modify it under the terms of the GNU Lesser General Public
@ -28,6 +28,7 @@
static const QStringList blackAppList() {
QStringList l;
//l<<"ukui-control-center";
l<<"kylin-software-center.py";
l<<"ubuntu-kylin-software-center.py";
// l<<"kylin-burner";
l<<"assistant";
@ -43,8 +44,8 @@ static const QStringList blackAppList() {
static const QStringList blackAppListWithBlurHelper() {
QStringList l;
l<<"youker-assistant";
l<<"kylin-assistant";
l<<"kylin-video";
// l<<"kylin-assistant";
// l<<"kylin-video";
// l<<"ukui-control-center";
l<<"ubuntu-kylin-software-center.py";
// l<<"kylin-burner";
@ -59,8 +60,12 @@ static const QStringList useDarkPaletteList() {
// l<<"ukui-panel";
// l<<"ukui-sidebar";
// l<<"ukui-volume-control-applet-qt";
// l<<"kylin-nm"; //网络
// l<<"panelukui-panel"; //日历
// l<<"ukui-power-manager-tray";
// l<<"kylin-nm";
//// l<<"ukui-bluetooth";
// l<<"sogouimebs"; //输入法
// l<<"kylin-device-daemon"; //U盘
l<<"ukui-flash-disk";
// l<<"ukui-bluetooth";
l<<"mktip";
@ -82,14 +87,39 @@ static const QStringList useDefaultPaletteList() {
static const QStringList useTransparentButtonList() {
//use transparent button
QStringList l;
l<<"kybackup";
l<<"biometric-manager";
// l<<"kybackup";
// l<<"biometric-manager";
l<<"kylin-video";
l<<"kylin-ipmsg";
l<<"kylin-weather";
l<<"kylin-recorder";
l<<"ukui-notebook";
// l<<"kylin-recorder";
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

View File

@ -1,7 +1,7 @@
/*
* 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
* modify it under the terms of the GNU Lesser General Public

View File

@ -60,17 +60,11 @@
<summary>System Palette</summary>
<description>Set default system palette for UKUI desktop environment.</description>
</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">
<default>"daybreakBlue"</default>
<default>"#3790FA"</default>
<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 type="b" name="cursor-blink">
<default>true</default>
@ -84,5 +78,21 @@
<summary>Blink text cursor interval.</summary>
<description>The interval of text cursor blink.</description>
</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>
</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
*
* 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
* modify it under the terms of the GNU Lesser General Public

View File

@ -1,7 +1,7 @@
/*
* 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
* modify it under the terms of the GNU Lesser General Public
@ -26,6 +26,9 @@
#include "libqt5-ukui-style_global.h"
#include <QGSettings>
//Fix me:after so
//#include "ukui-style-conf-settings.h"
/*!
* \brief The UKUIStyleSettings class
* \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
*
* 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
* 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
*
* 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
* modify it under the terms of the GNU Lesser General Public
@ -23,8 +23,8 @@
#include <QVariant>
#include <QStandardPaths>
#include "qt5-ukui-platform-theme.h"
#include "ukui-style-settings.h"
#include "highlight-effect.h"
#include "settings/ukui-style-settings.h"
#include "effects/highlight-effect.h"
#include <QFontDatabase>
#include <QApplication>
@ -46,8 +46,14 @@
#include <private/qdbustrayicon_p.h>
#include <QQuickStyle>
#include "widget/message-box.h"
#include <QDBusPendingCall>
#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)
static bool isDBusTrayAvailable() {
@ -63,6 +69,69 @@ static bool isDBusTrayAvailable() {
}
#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)
{
//FIXME:
@ -93,62 +162,44 @@ Qt5UKUIPlatformTheme::Qt5UKUIPlatformTheme(const QStringList &args)
QApplication::setFont(m_system_font);
}
connect(settings, &QGSettings::changed, this, [=](const QString &key){
if (key == "iconThemeName") {
QString icontheme = settings->get("icon-theme-name").toString();
if (app->applicationName().toLower().contains(QLatin1String("kwin"))) {
QDBusConnection::sessionBus().connect(QString(),
QStringLiteral("/UKUIPlatformTheme"),
QStringLiteral("org.ukui.UKUIPlatformTheme"),
QStringLiteral("refreshFonts"),
this,
SLOT(slotChangeStyle(QString)));
}
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") {
//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);
}
}
});
connect(settings, &QGSettings::changed, this, &Qt5UKUIPlatformTheme::slotChangeStyle);
}
// // add qqc2 style
// if (QFile::exists(QString("%1/kf5/kirigami/org.kylin.style.so").arg(QT_PLUGIN_INSTALL_DIRS))) {
// QQuickStyle::setStyle("org.kylin.style");
// }
QQuickStyle::setStyle("org.ukui.style");
if(qApp->inherits("QApplication") == true && qAppName() != "cura") {
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()
@ -182,9 +233,21 @@ const QFont *Qt5UKUIPlatformTheme::font(Font type) const
QVariant Qt5UKUIPlatformTheme::themeHint(ThemeHint hint) const
{
if(qAppName() == "cura")
return QPlatformTheme::themeHint(hint);
switch (hint) {
case QPlatformTheme::StyleNames:
return QStringList()<<"ukui";
case QPlatformTheme::StyleNames:{
// 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: {
if (UKUIStyleSettings::isSchemaInstalled("org.ukui.style")) {
@ -200,8 +263,7 @@ QVariant Qt5UKUIPlatformTheme::themeHint(ThemeHint hint) const
case QPlatformTheme::SystemIconFallbackThemeName:
return "hicolor";
case QPlatformTheme::IconThemeSearchPaths:
//FIXME:
return QStringList()<<".local/share/icons"<<"/usr/share/icons"<<"/usr/local/share/icons";
return xdgIconThemePaths();
// case WheelScrollLines:
// {
// return QVariant(1);
@ -212,6 +274,19 @@ QVariant Qt5UKUIPlatformTheme::themeHint(ThemeHint hint) const
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
{
// 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))
bool Qt5UKUIPlatformTheme::usePlatformNativeDialog(DialogType type) const
{
return true;
switch (type) {
case QPlatformTheme::FileDialog:
return true;
case QPlatformTheme::FontDialog:
case QPlatformTheme::ColorDialog:
return false;
case QPlatformTheme::MessageDialog:
if (qAppName() == "ukui-control-center" || qAppName() == "kybackup")
return false;
// if (qAppName() == "ukui-control-center")
// return false;
return true;
default:
break;
@ -252,14 +327,29 @@ bool Qt5UKUIPlatformTheme::usePlatformNativeDialog(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) {
case QPlatformTheme::FileDialog:
if (m_portalVersion >= 3) {
return new XdgDesktopPortalFileDialog;
//return qobject_cast<FileDialogInterface *>(plugin)->create();
}
//return new KyFileDialogHelper;
case QPlatformTheme::FontDialog:
case QPlatformTheme::ColorDialog:
return QPlatformTheme::createPlatformDialogHelper(type);
case QPlatformTheme::MessageDialog:
if (qAppName() == "kybackup")
return nullptr;
return new MessageBoxHelper;
default:
break;
@ -291,4 +381,5 @@ QPlatformSystemTrayIcon *Qt5UKUIPlatformTheme::createPlatformSystemTrayIcon() co
return new QDBusTrayIcon();
return nullptr;
}
#endif

View File

@ -1,7 +1,7 @@
/*
* 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
* modify it under the terms of the GNU Lesser General Public
@ -86,9 +86,16 @@ public:
QPlatformSystemTrayIcon *createPlatformSystemTrayIcon() const override;
#endif
public Q_SLOTS:
void slotChangeStyle(const QString& key);
private:
QStringList xdgIconThemePaths() const;
private:
QFont m_system_font;
QFont m_fixed_font;
int m_portalVersion = 0;
};
#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
*
* 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
* 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