Compare commits
226 Commits
| Author | SHA1 | Date |
|---|---|---|
|
|
b03849d6de | |
|
|
187be9a947 | |
|
|
16145642e1 | |
|
|
39a50cca37 | |
|
|
2767618f84 | |
|
|
36c06be095 | |
|
|
80db4dd238 | |
|
|
3d0713f7a2 | |
|
|
af1259edbb | |
|
|
3b5ba9bbda | |
|
|
c8f2955bd0 | |
|
|
96d0b45dd0 | |
|
|
00109d07e3 | |
|
|
d2c2efc49a | |
|
|
9842a0644e | |
|
|
9d3d659afe | |
|
|
eaf96e824d | |
|
|
7c05bace4a | |
|
|
a892ddc4e2 | |
|
|
65cf7b4161 | |
|
|
6b7e941839 | |
|
|
dc2eaeb61c | |
|
|
4dd22b538d | |
|
|
2ea4e762fe | |
|
|
18388f26f8 | |
|
|
9e54cbfad4 | |
|
|
6ff5c37579 | |
|
|
dd35e33644 | |
|
|
f834cb588d | |
|
|
9f500cbe94 | |
|
|
44bed9e070 | |
|
|
3f1cfd6800 | |
|
|
1f44c47e55 | |
|
|
28c53f37e7 | |
|
|
75d176f234 | |
|
|
6d6a4a4380 | |
|
|
ed252239b2 | |
|
|
aa13f2a82f | |
|
|
decbf724b3 | |
|
|
7c2b35ae42 | |
|
|
ec6fbaf651 | |
|
|
d3b68df561 | |
|
|
5eb6b4c403 | |
|
|
75208f151f | |
|
|
5ce8bf3755 | |
|
|
0a0182faac | |
|
|
c52610f23c | |
|
|
6cc9f8ac48 | |
|
|
8110fd861e | |
|
|
3c16e777fe | |
|
|
c0812b7af6 | |
|
|
b0c91b8714 | |
|
|
dc5aa91b44 | |
|
|
976aa9113c | |
|
|
b566c12e40 | |
|
|
329bf5a247 | |
|
|
7362e047b7 | |
|
|
1ede364ac6 | |
|
|
e0873d04b3 | |
|
|
acd947fa3e | |
|
|
b152721ae8 | |
|
|
4bdfc69e31 | |
|
|
e33a3945b2 | |
|
|
7871d7c448 | |
|
|
df159744c6 | |
|
|
4ff3a644af | |
|
|
3a2792c869 | |
|
|
06dedd11df | |
|
|
00584efe94 | |
|
|
f5a7cc22cd | |
|
|
79440d4b47 | |
|
|
726790ee06 | |
|
|
cf97c88b76 | |
|
|
76d00b0301 | |
|
|
fed4aae652 | |
|
|
e10215f3c1 | |
|
|
16d4999f1b | |
|
|
1f0b9ed118 | |
|
|
b75b68a604 | |
|
|
d07aca6786 | |
|
|
5ad7ed1ce8 | |
|
|
de728b0bee | |
|
|
d435f92784 | |
|
|
43624a42e9 | |
|
|
b975592ce1 | |
|
|
f0a7d5d44d | |
|
|
a0398d03d5 | |
|
|
a407dc4032 | |
|
|
255f171e9f | |
|
|
525beab369 | |
|
|
231c29ac65 | |
|
|
6038e6fcf8 | |
|
|
316a3e741c | |
|
|
806457e8bc | |
|
|
b25353026b | |
|
|
8cf037d44b | |
|
|
af9a6fc359 | |
|
|
2dae5b2e82 | |
|
|
7a49e9c164 | |
|
|
b2c91d0c2e | |
|
|
4fb86c1204 | |
|
|
afe212871f | |
|
|
3a6a15b9f2 | |
|
|
c227e1adce | |
|
|
9c99626771 | |
|
|
6f375cfc0c | |
|
|
7ec030f0b9 | |
|
|
1ab1d9234f | |
|
|
75ce762ed0 | |
|
|
820e3030be | |
|
|
1ffd986e97 | |
|
|
b10836217d | |
|
|
12b60a3c8a | |
|
|
b23ef7058a | |
|
|
8900594c9f | |
|
|
da12696b21 | |
|
|
9c06164a2e | |
|
|
da27fb74b3 | |
|
|
7fee7b54b1 | |
|
|
46d504a819 | |
|
|
1c814a9217 | |
|
|
51c7e35161 | |
|
|
aeaccd30ce | |
|
|
1b9c238bbc | |
|
|
bffcdde9ea | |
|
|
c42d36671e | |
|
|
f9607e01a4 | |
|
|
069289d500 | |
|
|
1aa57f8b4e | |
|
|
20f5fc1d3b | |
|
|
f08256da6e | |
|
|
9d2673082e | |
|
|
4013869e09 | |
|
|
3b6cb2e9f2 | |
|
|
8561847a13 | |
|
|
754d5baff5 | |
|
|
0f079b0838 | |
|
|
d5c1ae779b | |
|
|
01af1cbc93 | |
|
|
2299e3137e | |
|
|
2d7435324c | |
|
|
7e3569496e | |
|
|
3ea215d46f | |
|
|
0dfac4ca6e | |
|
|
df8a05e159 | |
|
|
9e0396c5e6 | |
|
|
8cabfe86aa | |
|
|
a66d7ccbf3 | |
|
|
d471c7221a | |
|
|
d35f8e10fd | |
|
|
71aaf6a024 | |
|
|
dec5572b9b | |
|
|
0e8a4e0b91 | |
|
|
d6434448c1 | |
|
|
3b2949bbf3 | |
|
|
75633580dc | |
|
|
6bee9a679d | |
|
|
4f8d3739b5 | |
|
|
eef2f42fea | |
|
|
1da5179b08 | |
|
|
de4dc37e39 | |
|
|
f9d2dcdeb9 | |
|
|
69e79f8e3a | |
|
|
09b956383e | |
|
|
d3d7096c0d | |
|
|
b211db014e | |
|
|
1bbeb9f475 | |
|
|
f08f6ea538 | |
|
|
cd822bb2c8 | |
|
|
c2b0782d00 | |
|
|
3f1960067b | |
|
|
8f4319308b | |
|
|
c2b8c1508b | |
|
|
07b454ccb7 | |
|
|
5f457d2225 | |
|
|
afb7340011 | |
|
|
994133ca16 | |
|
|
9523642508 | |
|
|
e7834e1763 | |
|
|
fa3ca10d03 | |
|
|
ba55aa6e7d | |
|
|
1cb3939cf9 | |
|
|
ff836690e5 | |
|
|
95f8b5ffd3 | |
|
|
0b63795ee7 | |
|
|
e17e250fe1 | |
|
|
20c5c09315 | |
|
|
724af5ebf3 | |
|
|
b810be77cb | |
|
|
98b9632f63 | |
|
|
d867a02cda | |
|
|
0d9e457d13 | |
|
|
2c4cc71e0d | |
|
|
4350475fe1 | |
|
|
3cf033b048 | |
|
|
536f1f9dff | |
|
|
6588a86d71 | |
|
|
0ad02e6ce7 | |
|
|
62b66a9f05 | |
|
|
dcede1f96d | |
|
|
b683e97cbc | |
|
|
58095a743f | |
|
|
6c4bbde470 | |
|
|
dd10f593b7 | |
|
|
3196e5d7a0 | |
|
|
6b366af60a | |
|
|
8aee0513e7 | |
|
|
d52cc4c111 | |
|
|
6dc214c70a | |
|
|
978be55303 | |
|
|
7abf16d31a | |
|
|
99d184978b | |
|
|
5327c027c3 | |
|
|
4bcd6d8474 | |
|
|
b153abe460 | |
|
|
19492cbfb7 | |
|
|
6c06cf37cd | |
|
|
99e450c1cd | |
|
|
42edd583a4 | |
|
|
a3677d4bbf | |
|
|
0faedd5009 | |
|
|
cd21667c52 | |
|
|
d30876386c | |
|
|
9e54cba93c | |
|
|
2e966e94bf | |
|
|
6549a67eb3 |
|
|
@ -1 +1,20 @@
|
|||
blank_issues_enabled: true
|
||||
blank_issues_enabled: false
|
||||
contact_links:
|
||||
- name: BUG Report | 缺陷报告
|
||||
url: https://github.com/linuxdeepin/dtk/issues/new?assignees=&labels=&template=bug-report.yml
|
||||
about: Please create bug reports to the issue board in our dtk repo.
|
||||
|
||||
- name: docs-update | 文档补充
|
||||
url: https://github.com/linuxdeepin/dtk/issues/new?assignees=&labels=&template=docs-update.yml
|
||||
about: Please create docs-update to the issue board in our dtk repo.
|
||||
|
||||
- name: unit-test-report | 单元测试报告
|
||||
url: https://github.com/linuxdeepin/dtk/issues/new?assignees=&labels=&template=unit-test-report.yml
|
||||
about: Please create unit-test-report to the issue board in our dtk repo.
|
||||
|
||||
- name: Feature Request | 特性请求
|
||||
url: https://github.com/linuxdeepin/developer-center/discussions/new?category=features-request-ideas-%E7%89%B9%E6%80%A7%E8%AF%B7%E6%B1%82-%E5%A4%B4%E8%84%91%E9%A3%8E%E6%9A%B4
|
||||
about: Please create feature requests to the discussion board in our developer-center repo.
|
||||
- name: General Discussion & Questions | 常规讨论与问答
|
||||
url: https://github.com/linuxdeepin/developer-center/discussions/categories/q-a-%E9%97%AE%E7%AD%94%E6%9D%BF%E5%9D%97
|
||||
about: Please use the discussion board in our developer-center repo.
|
||||
|
|
|
|||
|
|
@ -1,8 +0,0 @@
|
|||
---
|
||||
name: Empty issue
|
||||
about: File a Empty issue
|
||||
title: ''
|
||||
labels: ''
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
---
|
||||
name: Unit test report
|
||||
about: File a unit test report.
|
||||
title: 'Test: [class name]'
|
||||
labels: ''
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
Path: [class file path]
|
||||
Interface: [class interface name]
|
||||
|
||||
|
|
@ -8,10 +8,8 @@ concurrency:
|
|||
jobs:
|
||||
backup-to-gitlabwh:
|
||||
uses: linuxdeepin/.github/.github/workflows/backup-to-gitlabwh.yml@master
|
||||
secrets:
|
||||
BRIDGETOKEN: ${{ secrets.BRIDGETOKEN }}
|
||||
secrets: inherit
|
||||
|
||||
backup-to-gitee:
|
||||
uses: linuxdeepin/.github/.github/workflows/backup-to-gitee.yml@master
|
||||
secrets:
|
||||
GITEE_SYNC_TOKEN: ${{ secrets.GITEE_SYNC_TOKEN }}
|
||||
secrets: inherit
|
||||
|
|
|
|||
|
|
@ -0,0 +1,13 @@
|
|||
name: apiCheck
|
||||
on:
|
||||
pull_request_target:
|
||||
types: [opened, synchronize, reopened]
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
api-check:
|
||||
uses: linuxdeepin/.github/.github/workflows/api-check.yml@master
|
||||
secrets: inherit
|
||||
|
|
@ -0,0 +1,50 @@
|
|||
name: Auto Release
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
version:
|
||||
description: 'Release version (e.g., 1.0.0)'
|
||||
type: string
|
||||
required: false
|
||||
name:
|
||||
description: 'The name of the person to release the version'
|
||||
type: string
|
||||
required: false
|
||||
email:
|
||||
description: 'The email of the person to release the version'
|
||||
type: string
|
||||
required: false
|
||||
timezone:
|
||||
description: 'The timezone in the debian changelog file'
|
||||
required: false
|
||||
type: string
|
||||
default: 'Asia/Shanghai'
|
||||
workflow_call:
|
||||
inputs:
|
||||
version:
|
||||
description: 'Release version (e.g., 1.0.0)'
|
||||
type: string
|
||||
required: true
|
||||
name:
|
||||
description: 'The name of the person to release the version'
|
||||
type: string
|
||||
required: false
|
||||
email:
|
||||
description: 'The email of the person to release the version'
|
||||
type: string
|
||||
required: false
|
||||
timezone:
|
||||
description: 'The timezone in the debian changelog file'
|
||||
required: false
|
||||
type: string
|
||||
default: 'Asia/Shanghai'
|
||||
|
||||
jobs:
|
||||
auto_release:
|
||||
uses: linuxdeepin/.github/.github/workflows/auto-release.yml@master
|
||||
secrets: inherit
|
||||
with:
|
||||
version: ${{ inputs.version }}
|
||||
name: ${{ inputs.name }}
|
||||
email: ${{ inputs.email }}
|
||||
timezone: ${{ inputs.timezone }}
|
||||
|
|
@ -1,17 +0,0 @@
|
|||
name: Call build-deb
|
||||
on:
|
||||
pull_request_target:
|
||||
paths-ignore:
|
||||
- ".github/workflows/**"
|
||||
types: [ opened, closed, synchronize ]
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-pull/${{ github.event.number }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
check_job:
|
||||
if: github.event.action != 'closed' || github.event.pull_request.merged
|
||||
uses: linuxdeepin/.github/.github/workflows/build-deb.yml@master
|
||||
secrets:
|
||||
BridgeToken: ${{ secrets.BridgeToken }}
|
||||
|
|
@ -10,8 +10,4 @@ on:
|
|||
jobs:
|
||||
check_job:
|
||||
uses: linuxdeepin/.github/.github/workflows/build-distribution.yml@master
|
||||
secrets:
|
||||
BUILD_GPG_PRIVATE_KEY: ${{ secrets.BUILD_GPG_PRIVATE_KEY }}
|
||||
BUILD_SSH_PRIVATE_KEY: ${{ secrets.BUILD_SSH_PRIVATE_KEY }}
|
||||
WEBDAV_PASSWD: ${{ secrets.WEBDAV_PASSWD }}
|
||||
WEBDAV_USER: ${{ secrets.WEBDAV_USER }}
|
||||
secrets: inherit
|
||||
|
|
|
|||
|
|
@ -6,5 +6,4 @@ on:
|
|||
jobs:
|
||||
chatopt:
|
||||
uses: linuxdeepin/.github/.github/workflows/chatOps.yml@master
|
||||
secrets:
|
||||
APP_PRIVATE_KEY: ${{ secrets.APP_PRIVATE_KEY }}
|
||||
secrets: inherit
|
||||
|
|
|
|||
|
|
@ -12,5 +12,4 @@ concurrency:
|
|||
jobs:
|
||||
clacheck:
|
||||
uses: linuxdeepin/.github/.github/workflows/cla-check.yml@master
|
||||
secrets:
|
||||
APP_PRIVATE_KEY: ${{ secrets.APP_PRIVATE_KEY }}
|
||||
secrets: inherit
|
||||
|
|
|
|||
|
|
@ -0,0 +1,13 @@
|
|||
name: debianCheck
|
||||
on:
|
||||
pull_request_target:
|
||||
types: [opened, synchronize, reopened]
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
debian-check:
|
||||
uses: linuxdeepin/.github/.github/workflows/debian-check.yml@master
|
||||
secrets: inherit
|
||||
|
|
@ -23,5 +23,4 @@ jobs:
|
|||
uses: linuxdeepin/.github/.github/workflows/deploy-dev-doc.yml@master
|
||||
with:
|
||||
ref: ${{ inputs.tag }}
|
||||
secrets:
|
||||
APP_PRIVATE_KEY: ${{ secrets.APP_PRIVATE_KEY }}
|
||||
secrets: inherit
|
||||
|
|
|
|||
|
|
@ -11,5 +11,4 @@ concurrency:
|
|||
jobs:
|
||||
check_job:
|
||||
uses: linuxdeepin/.github/.github/workflows/doc-check.yml@master
|
||||
secrets:
|
||||
APP_PRIVATE_KEY: ${{ secrets.APP_PRIVATE_KEY }}
|
||||
secrets: inherit
|
||||
|
|
|
|||
|
|
@ -0,0 +1,13 @@
|
|||
name: staticCheck
|
||||
on:
|
||||
pull_request_target:
|
||||
types: [opened, synchronize, reopened]
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
static-check:
|
||||
uses: linuxdeepin/.github/.github/workflows/static-check.yml@master
|
||||
secrets: inherit
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
name: Call synchronize to dtk6
|
||||
on:
|
||||
pull_request_target:
|
||||
paths-ignore:
|
||||
- "debian/**"
|
||||
- "archlinux/**"
|
||||
- "rpm/**"
|
||||
- ".obs/**"
|
||||
- ".github/**"
|
||||
|
||||
jobs:
|
||||
call-synchronize:
|
||||
uses: linuxdeepin/dtk/.github/workflows/synchronize-to-dtk6.yml@master
|
||||
secrets: inherit
|
||||
with:
|
||||
dest_repo: linuxdeepin/dtk6gui
|
||||
source_repo: ${{ github.event.pull_request.head.repo.full_name }}
|
||||
source_ref: ${{ github.event.pull_request.head.ref }}
|
||||
pull_number: ${{ github.event.pull_request.number }}
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
name: tag build
|
||||
on:
|
||||
push:
|
||||
tags: "*"
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
build:
|
||||
uses: linuxdeepin/.github/.github/workflows/tag-build.yml@master
|
||||
secrets: inherit
|
||||
|
|
@ -14,7 +14,7 @@ jobs:
|
|||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- run: export
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
ref: ${{ github.event.pull_request.head.sha }}
|
||||
persist-credentials: false
|
||||
|
|
|
|||
|
|
@ -51,6 +51,9 @@ CMakeLists.txt.user*
|
|||
#clangformat
|
||||
.clang-format
|
||||
|
||||
# build
|
||||
compile_commands.json
|
||||
|
||||
bin
|
||||
DtkGuis
|
||||
dtkgui_config.h
|
||||
|
|
@ -61,3 +64,6 @@ dtkgui.pc
|
|||
DtkGuiConfig.cmake
|
||||
asan.*
|
||||
Testing
|
||||
|
||||
# Ignore Doxygen theme files
|
||||
docs/doxygen-theme/
|
||||
|
|
|
|||
|
|
@ -0,0 +1,51 @@
|
|||
test_build:
|
||||
steps:
|
||||
- link_package:
|
||||
source_project: deepin:Develop:dde
|
||||
source_package: %{SCM_REPOSITORY_NAME}
|
||||
target_project: deepin:CI
|
||||
|
||||
- configure_repositories:
|
||||
project: deepin:CI
|
||||
repositories:
|
||||
- name: deepin_develop
|
||||
paths:
|
||||
- target_project: deepin:CI
|
||||
target_repository: deepin_develop
|
||||
architectures:
|
||||
- x86_64
|
||||
- aarch64
|
||||
|
||||
- name: debian
|
||||
paths:
|
||||
- target_project: deepin:CI
|
||||
target_repository: debian_sid
|
||||
architectures:
|
||||
- x86_64
|
||||
|
||||
- name: archlinux
|
||||
paths:
|
||||
- target_project: deepin:CI
|
||||
target_repository: archlinux
|
||||
architectures:
|
||||
- x86_64
|
||||
|
||||
filters:
|
||||
event: pull_request
|
||||
|
||||
tag_build:
|
||||
steps:
|
||||
- branch_package:
|
||||
source_project: deepin:Develop:dde
|
||||
source_package: %{SCM_REPOSITORY_NAME}
|
||||
target_project: deepin:Unstable:dde
|
||||
filters:
|
||||
event: tag_push
|
||||
|
||||
commit_build:
|
||||
steps:
|
||||
- trigger_services:
|
||||
project: deepin:Develop:dde
|
||||
package: %{SCM_REPOSITORY_NAME}
|
||||
filters:
|
||||
event: push
|
||||
22
.reuse/dep5
22
.reuse/dep5
|
|
@ -4,12 +4,12 @@ Upstream-Contact: UnionTech Software Technology Co., Ltd. <>
|
|||
Source: https://github.com/linuxdeepin/dtkgui
|
||||
|
||||
# ci
|
||||
Files: .github/* .gitlab-ci.yml
|
||||
Files: .github/* .gitlab-ci.yml .obs/*
|
||||
Copyright: None
|
||||
License: CC0-1.0
|
||||
|
||||
# gitignore
|
||||
Files: .gitignore
|
||||
Files: .gitignore .syncexclude
|
||||
Copyright: None
|
||||
License: CC0-1.0
|
||||
|
||||
|
|
@ -34,7 +34,7 @@ Copyright: None
|
|||
License: LGPL-3.0-or-later
|
||||
|
||||
# README
|
||||
Files: *README.md *README.zh_CN.md
|
||||
Files: *README.md *README.zh_CN.md CHANGELOG.md
|
||||
Copyright: None
|
||||
License: CC-BY-4.0
|
||||
|
||||
|
|
@ -49,14 +49,20 @@ Copyright: None
|
|||
License: CC0-1.0
|
||||
|
||||
# Project file
|
||||
Files: *.pro *.prf *.pri *.qrc *CMakeLists.txt *.cmake *.in
|
||||
Files: *.pro *.prf *.pri *.qrc *CMakeLists.txt *.cmake *.in VERSION
|
||||
Copyright: None
|
||||
License: CC0-1.0
|
||||
|
||||
# images: svg dci webp
|
||||
# images: png svg dci webp
|
||||
Files: src/util/icons/actions/* src/util/icons/icons/* src/util/icons/texts/*
|
||||
src/util/icons/dci/* tests/images/logo_icon.svg
|
||||
examples/animation-dci/dci_heart.dci tests/images/dci_heart.dci
|
||||
tests/images/*.webp
|
||||
src/util/icons/dci/* tests/images/* tests/actions/* tests/dcis/* examples/animation-dci/*
|
||||
Copyright: UnionTech Software Technology Co., Ltd.
|
||||
License: LGPL-3.0-or-later
|
||||
|
||||
Files: toolGenerate/**/*
|
||||
Copyright: None
|
||||
License: CC0-1.0
|
||||
|
||||
Files: src/kernel/orgdeepindtkpreference.hpp
|
||||
Copyright: None
|
||||
License: CC0-1.0
|
||||
|
|
|
|||
|
|
@ -0,0 +1,13 @@
|
|||
# Paths that will be exclude from synchronize workflow
|
||||
# Please use relative path which use project directory as root
|
||||
# Notice that
|
||||
# * .git
|
||||
# * debian
|
||||
# * archlinux
|
||||
# * .obs
|
||||
# * .github
|
||||
# are always ignored
|
||||
linglong.yaml
|
||||
conanfile.py
|
||||
VERSION
|
||||
CHANGELOG.md
|
||||
|
|
@ -0,0 +1,97 @@
|
|||
# Changelog
|
||||
|
||||
All notable changes to this project will be documented in this file.
|
||||
|
||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
## [5.7.25] - 2025-10-30
|
||||
|
||||
### Changed
|
||||
|
||||
- Improve icon theme generation with scalable support
|
||||
|
||||
## [5.7.24] - 2025-10-16
|
||||
|
||||
### Added
|
||||
|
||||
- Support Qt 6.10
|
||||
|
||||
### Changed
|
||||
|
||||
- Improve icon size detection and duplicate handling
|
||||
|
||||
### Fixed
|
||||
|
||||
- Correct lockfile path construction
|
||||
- Fix Qt6 compilation error with libxdg
|
||||
|
||||
## [5.7.23] - 2025-09-25
|
||||
|
||||
### Fixed
|
||||
|
||||
- 解决控制中心闪烁问题
|
||||
- Fix build for Qt 6.9
|
||||
|
||||
## [5.7.22] - 2025-09-04
|
||||
|
||||
### Added
|
||||
|
||||
- Add T11 font size and adjust T5 default
|
||||
|
||||
### Fixed
|
||||
|
||||
- Improve PID namespace detection in setSingleInstance
|
||||
|
||||
## [5.7.21] - 2025-08-14
|
||||
|
||||
### Added
|
||||
|
||||
- Add flags parameter to DDciIconPlayer play method
|
||||
|
||||
### Fixed
|
||||
|
||||
- Resolve compilation warnings and deprecation issues
|
||||
|
||||
## [5.7.20] - 2025-07-31
|
||||
|
||||
### Added
|
||||
|
||||
- Add pid namespace isolation to setSingleInstance
|
||||
- Add concurrent processing for DCI icon conversion
|
||||
|
||||
### Changed
|
||||
|
||||
- Update REUSE license file for CHANGELOG
|
||||
- Move icon finder functionality to separate tool
|
||||
- Switch to QGuiApplication for SVG rendering
|
||||
|
||||
## [5.7.19] - 2025-07-03
|
||||
|
||||
### Fixed
|
||||
|
||||
- Enhance build security hardening
|
||||
|
||||
## [5.7.18] - 2025-06-27
|
||||
|
||||
### Fixed
|
||||
|
||||
- Make version parameter optional in release workflow
|
||||
|
||||
## [5.7.17] - 2025-06-19
|
||||
|
||||
### Added
|
||||
|
||||
- Add missing header
|
||||
- Fix: add missing prefix for QTranslator::load()
|
||||
|
||||
### Changed
|
||||
|
||||
- Chore: use another QTranslator::load overload to tidy code
|
||||
- Support VERSION file
|
||||
- Add auto release workflow
|
||||
- Update .syncexclude
|
||||
|
||||
[5.7.17]: https://github.com/linuxdeepin/dtkgui/compare/5.7.16..5.7.17
|
||||
|
||||
<!-- generated by git-cliff -->
|
||||
136
CMakeLists.txt
136
CMakeLists.txt
|
|
@ -1,134 +1,22 @@
|
|||
cmake_minimum_required(VERSION 3.5)
|
||||
cmake_minimum_required(VERSION 3.25)
|
||||
|
||||
set(DVERSION "5.6.8" CACHE STRING "define project version")
|
||||
file(READ "${CMAKE_CURRENT_SOURCE_DIR}/VERSION" DTK_FILE_VERSION)
|
||||
string(STRIP "${DTK_FILE_VERSION}" DTK_FILE_VERSION)
|
||||
set(DTK_VERSION "${DTK_FILE_VERSION}" CACHE STRING "define project version")
|
||||
project(DtkGui
|
||||
VERSION ${DVERSION}
|
||||
VERSION ${DTK_VERSION}
|
||||
DESCRIPTION "DTK Gui module"
|
||||
HOMEPAGE_URL "https://github.com/linuxdeepin/dtkgui"
|
||||
LANGUAGES CXX C
|
||||
)
|
||||
set(LIB_NAME dtkgui)
|
||||
|
||||
include(GNUInstallDirs)
|
||||
include(CMakePackageConfigHelpers)
|
||||
list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake")
|
||||
set(CMAKE_CXX_STANDARD 11)
|
||||
set(CMAKE_AUTOMOC ON)
|
||||
set(CMAKE_AUTORCC ON)
|
||||
set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
||||
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
||||
|
||||
# Set build option
|
||||
option(DTK_DISABLE_LIBXDG "Disable libxdg" OFF)
|
||||
option(DTK_DISABLE_LIBRSVG "Disable librsvg" OFF)
|
||||
option(DTK_DISABLE_EX_IMAGE_FORMAT "Disable libraw and freeimage" OFF)
|
||||
set(BUILD_DOCS ON CACHE BOOL "Generate doxygen-based documentation")
|
||||
|
||||
# Set install path
|
||||
if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
|
||||
set(CMAKE_INSTALL_PREFIX /usr)
|
||||
endif ()
|
||||
|
||||
set(INCLUDE_INSTALL_DIR "${CMAKE_INSTALL_INCLUDEDIR}/dtk${PROJECT_VERSION_MAJOR}/DGui")
|
||||
set(TOOL_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}/dtk${PROJECT_VERSION_MAJOR}/DGui/bin")
|
||||
set(LIBRARY_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}")
|
||||
set(MKSPECS_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}/qt5/mkspecs/modules" CACHE STRING "Install dir for qt pri module files")
|
||||
set(CONFIG_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}/cmake/DtkGui")
|
||||
set(PKGCONFIG_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
|
||||
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -Wall -Wextra -fopenmp")
|
||||
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--as-needed")
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pie")
|
||||
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||
set(BUILD_TESTING ON)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O0 -g -fno-omit-frame-pointer")
|
||||
if("${PROJECT_VERSION_MAJOR}" STREQUAL "5")
|
||||
set(QT_VERSION_MAJOR "5")
|
||||
elseif("${PROJECT_VERSION_MAJOR}" STREQUAL "6")
|
||||
set(QT_VERSION_MAJOR "6")
|
||||
set(DTK_VERSION_MAJOR "6")
|
||||
else()
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Ofast")
|
||||
message(SEND_ERROR "not support Prject Version ${PROJECT_VERSION}.")
|
||||
endif()
|
||||
|
||||
set(CONFIGNAME include/global/dtkgui_config.h)
|
||||
file(WRITE ${CONFIGNAME}
|
||||
"// This is an auto-generated header, please don't modify it.\n"
|
||||
)
|
||||
file(GLOB CONFIGSOURCE include/DtkGui/*)
|
||||
|
||||
foreach(FILENAME ${CONFIGSOURCE})
|
||||
get_filename_component(thefile ${FILENAME} NAME)
|
||||
file(APPEND ${CONFIGNAME} "#define DTKGUI_CLASS_${thefile}\n")
|
||||
endforeach()
|
||||
|
||||
# Generate cmake config file
|
||||
configure_package_config_file(misc/DtkGuiConfig.cmake.in
|
||||
${CMAKE_CURRENT_BINARY_DIR}/DtkGuiConfig.cmake
|
||||
INSTALL_DESTINATION "${CONFIG_INSTALL_DIR}"
|
||||
PATH_VARS TOOL_INSTALL_DIR
|
||||
)
|
||||
# Generate cmake version file
|
||||
write_basic_package_version_file(
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/DtkGuiConfigVersion.cmake"
|
||||
VERSION ${DVERSION}
|
||||
COMPATIBILITY SameMajorVersion
|
||||
)
|
||||
# Install cmake config file and version file to CONFIG_INSTALL_DIR
|
||||
install(FILES
|
||||
${CMAKE_CURRENT_BINARY_DIR}/DtkGuiConfig.cmake
|
||||
${CMAKE_CURRENT_BINARY_DIR}/DtkGuiConfigVersion.cmake
|
||||
DESTINATION "${CONFIG_INSTALL_DIR}"
|
||||
)
|
||||
# Install pkgconfig file
|
||||
configure_file(misc/dtkgui.pc.in dtkgui.pc @ONLY)
|
||||
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/dtkgui.pc DESTINATION "${PKGCONFIG_INSTALL_DIR}")
|
||||
# Install pri module
|
||||
configure_file(misc/qt_lib_dtkgui.pri.in qt_lib_dtkgui.pri @ONLY)
|
||||
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/qt_lib_dtkgui.pri DESTINATION "${MKSPECS_INSTALL_DIR}")
|
||||
|
||||
set(GUISGNAME DtkGuis)
|
||||
|
||||
file(WRITE ${GUISGNAME}
|
||||
"// This is an auto-generated header, please don't modify it.\n"
|
||||
"#ifndef DTK_GUI_MODULE_H\n"
|
||||
"#define DTK_GUI_MODULE_H\n"
|
||||
)
|
||||
file(GLOB FILEGRAGTOWRITSOURCE include/filedrag/*)
|
||||
|
||||
foreach(FILENAME ${FILEGRAGTOWRITSOURCE})
|
||||
get_filename_component(thefile ${FILENAME} NAME)
|
||||
file(APPEND ${GUISGNAME} "#include \"${thefile}\"\n")
|
||||
endforeach()
|
||||
file(GLOB KERNELTOWRITESOURCE include/kernel/*)
|
||||
foreach(FILENAME ${KERNELTOWRITESOURCE})
|
||||
get_filename_component(thefile ${FILENAME} NAME)
|
||||
file(APPEND ${GUISGNAME} "#include \"${thefile}\"\n")
|
||||
endforeach()
|
||||
file(GLOB UTILTOWRITESOURCE include/util/*)
|
||||
foreach(FILENAME ${UTILTOWRITESOURCE})
|
||||
get_filename_component(thefile ${FILENAME} NAME)
|
||||
file(APPEND ${GUISGNAME} "#include \"${thefile}\"\n")
|
||||
endforeach()
|
||||
file(APPEND ${GUISGNAME} "#endif")
|
||||
install(FILES DtkGuis DESTINATION "${INCLUDE_INSTALL_DIR}")
|
||||
|
||||
# Find common dependencies
|
||||
find_package(Qt5 REQUIRED COMPONENTS Gui DBus Network)
|
||||
find_package(PkgConfig REQUIRED)
|
||||
find_package(DtkCore 5.6 REQUIRED)
|
||||
pkg_check_modules(librsvg REQUIRED IMPORTED_TARGET librsvg-2.0)
|
||||
|
||||
# Check optional image handler dependencies.
|
||||
find_package(FreeImage)
|
||||
pkg_check_modules(libraw IMPORTED_TARGET libraw)
|
||||
if(FreeImage_FOUND AND libraw_FOUND)
|
||||
set(EX_IMAGE_FORMAT_LIBS_FOUND ON)
|
||||
endif()
|
||||
|
||||
add_subdirectory(src)
|
||||
if(BUILD_TESTING)
|
||||
enable_testing()
|
||||
add_subdirectory(tests)
|
||||
endif()
|
||||
add_subdirectory(tools)
|
||||
add_subdirectory(examples)
|
||||
|
||||
if (BUILD_DOCS)
|
||||
add_subdirectory(docs)
|
||||
endif ()
|
||||
include(dtkgui.cmake)
|
||||
|
|
|
|||
|
|
@ -0,0 +1 @@
|
|||
@version@
|
||||
|
|
@ -1,28 +1,30 @@
|
|||
# Maintainer: justforlxz <justforlxz@gmail.com>
|
||||
pkgname=dtkgui-git
|
||||
pkgver=5.5.22.r8.g6ef1509
|
||||
pkgver=5.7.25
|
||||
pkgrel=1
|
||||
sourcename=dtkgui
|
||||
sourcetars=("$sourcename"_"$pkgver".tar.xz)
|
||||
sourcedir="$sourcename"
|
||||
pkgdesc='Deepin Toolkit, gui module for DDE look and feel'
|
||||
arch=('x86_64' 'aarch64')
|
||||
url="https://github.com/linuxdeepin/dtkgui"
|
||||
license=('LGPL3')
|
||||
depends=('dtkcore-git' 'qt5-svg' 'libqtxdg' 'freeimage')
|
||||
depends=('dtkcore-git' 'dtkcommon-git' 'qt5-svg' 'libqtxdg' 'freeimage' 'librsvg' 'qt5-wayland')
|
||||
# INFO: you can disable freeimage not to support RAW images
|
||||
# Then set DTK_DISABLE_EX_IMAGE_FORMAT=OFF
|
||||
makedepends=('git' 'qt5-tools' 'dtkcommon-git' 'dtkcore-git' 'librsvg' 'gtest' 'gmock' 'libqtxdg' 'ninja' 'cmake' 'doxygen')
|
||||
makedepends=('git' 'qt5-tools' 'gtest' 'gmock' 'ninja' 'cmake' 'doxygen' 'extra-cmake-modules')
|
||||
conflicts=('dtkgui')
|
||||
provides=('dtkgui')
|
||||
groups=('deepin-git')
|
||||
source=('source.tar.gz')
|
||||
source=("${sourcetars[@]}")
|
||||
sha512sums=('SKIP')
|
||||
|
||||
|
||||
build() {
|
||||
cd $deepin_source_name
|
||||
cd $sourcedir
|
||||
cmake -GNinja \
|
||||
-DMKSPECS_INSTALL_DIR=lib/qt/mkspecs/modules/ \
|
||||
-DBUILD_DOCS=ON \
|
||||
-DDTK_DISABLE_LIBRSVG=ON \
|
||||
-DQCH_INSTALL_DESTINATION=share/doc/qt \
|
||||
-DCMAKE_INSTALL_LIBDIR=lib \
|
||||
-DCMAKE_INSTALL_PREFIX=/usr \
|
||||
|
|
@ -33,6 +35,6 @@ build() {
|
|||
}
|
||||
|
||||
package() {
|
||||
cd $deepin_source_name
|
||||
cd $sourcedir
|
||||
DESTDIR="$pkgdir" ninja install
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,3 +1,397 @@
|
|||
dtkgui (5.7.25) unstable; urgency=medium
|
||||
|
||||
* Release 5.7.25
|
||||
|
||||
-- yeshanshan <yeshanshan@uniontech.com> Thu, 30 Oct 2025 21:47:33 +0800
|
||||
|
||||
dtkgui (5.7.24) unstable; urgency=medium
|
||||
|
||||
* Release 5.7.24
|
||||
|
||||
-- yeshanshan <yeshanshan@uniontech.com> Thu, 16 Oct 2025 19:45:30 +0800
|
||||
|
||||
dtkgui (5.7.23) unstable; urgency=medium
|
||||
|
||||
* Release 5.7.23
|
||||
|
||||
-- yeshanshan <packages@deepin.org> Thu, 25 Sep 2025 16:49:18 +0800
|
||||
|
||||
dtkgui (5.7.22) unstable; urgency=medium
|
||||
|
||||
* Release 5.7.22
|
||||
|
||||
-- yeshanshan <yeshanshan@uniontech.com> Thu, 04 Sep 2025 19:27:38 +0800
|
||||
|
||||
dtkgui (5.7.21) unstable; urgency=medium
|
||||
|
||||
* Release 5.7.21
|
||||
|
||||
-- yeshanshan <packages@deepin.org> Thu, 14 Aug 2025 19:47:40 +0800
|
||||
|
||||
dtkgui (5.7.20) unstable; urgency=medium
|
||||
|
||||
* Release 5.7.20
|
||||
|
||||
-- yeshanshan <yeshanshan@uniontech.com> Thu, 31 Jul 2025 19:59:35 +0800
|
||||
|
||||
dtkgui (5.7.19) unstable; urgency=medium
|
||||
|
||||
* Release 5.7.19
|
||||
|
||||
-- yeshanshan <yeshanshan@uniontech.com> Thu, 03 Jul 2025 21:12:27 +0800
|
||||
|
||||
dtkgui (5.7.18) unstable; urgency=medium
|
||||
|
||||
* Release 5.7.18
|
||||
|
||||
-- yeshanshan <yeshanshan@uniontech.com> Fri, 27 Jun 2025 17:09:35 +0800
|
||||
|
||||
dtkgui (5.7.17) unstable; urgency=medium
|
||||
|
||||
* Release 5.7.17
|
||||
|
||||
-- yeshanshan <yeshanshan@uniontech.com> Thu, 19 Jun 2025 10:03:48 +0800
|
||||
|
||||
dtkgui (5.7.16) unstable; urgency=medium
|
||||
|
||||
* Release 5.7.16
|
||||
|
||||
-- YeShanShan <yeshanshan@uniontech.com> Mon, 19 May 2025 17:21:59 +0800
|
||||
|
||||
dtkgui (5.7.15) unstable; urgency=medium
|
||||
|
||||
* fix: correct bitwise operation in preference handling
|
||||
* fix: prevent theme saving when DontSaveApplicationTheme is set
|
||||
* refactor: improve thread safety in OrgDeepinDTKPreference
|
||||
* fix: build failed in qt5
|
||||
* feat: use dconfig2cpp for read/write the DConfig
|
||||
* fix: fix build on Qt 6.8
|
||||
|
||||
-- YeShanShan <yeshanshan@uniontech.com> Thu, 08 May 2025 17:53:09 +0800
|
||||
|
||||
dtkgui (5.7.14) unstable; urgency=medium
|
||||
|
||||
* build: compiling failed with Qt 6.9
|
||||
|
||||
-- YeShanShan <yeshanshan@uniontech.com> Thu, 17 Apr 2025 21:51:32 +0800
|
||||
|
||||
dtkgui (5.7.13) unstable; urgency=medium
|
||||
|
||||
* Release 5.7.13
|
||||
|
||||
-- YeShanShan <yeshanshan@uniontech.com> Thu, 20 Mar 2025 17:05:55 +0800
|
||||
|
||||
dtkgui (5.7.12) unstable; urgency=medium
|
||||
|
||||
* fix: palette refresh delayed in qt6
|
||||
* feat: Add files generated by qdbusXML2cpp and DCONG2cpp
|
||||
|
||||
-- YeShanShan <yeshanshan@uniontech.com> Thu, 06 Mar 2025 17:29:35 +0800
|
||||
|
||||
dtkgui (5.7.11) unstable; urgency=medium
|
||||
|
||||
* Release 5.7.11
|
||||
|
||||
-- YeShanShan <yeshanshan@uniontech.com> Thu, 27 Feb 2025 20:47:39 +0800
|
||||
|
||||
dtkgui (5.7.10) unstable; urgency=medium
|
||||
|
||||
* fix: icon is blurry
|
||||
|
||||
-- YeShanShan <yeshanshan@uniontech.com> Thu, 13 Feb 2025 17:18:19 +0800
|
||||
|
||||
dtkgui (5.7.9) unstable; urgency=medium
|
||||
|
||||
[ root ]
|
||||
* UNRELEASED
|
||||
|
||||
-- Deepin Packages Builder <packages@deepin.org> Thu, 23 Jan 2025 09:07:08 +0000
|
||||
|
||||
dtkgui (5.7.8) unstable; urgency=medium
|
||||
|
||||
* fix: missing window decoration for treeland
|
||||
* chore: update default window corner size
|
||||
|
||||
-- Deepin Packages Builder <packages@deepin.org> Tue, 14 Jan 2025 11:17:31 +0000
|
||||
|
||||
dtkgui (5.7.7) unstable; urgency=medium
|
||||
|
||||
* fix: accessing wild pointer in qt6
|
||||
* chore: correct typos about Dtk::Gui::DDciIcon::IconAttribute
|
||||
Thanks to Felix Yan
|
||||
|
||||
-- Deepin Packages Builder <packages@deepin.org> Thu, 09 Jan 2025 09:28:38 +0000
|
||||
|
||||
dtkgui (5.7.6) unstable; urgency=medium
|
||||
|
||||
* refact: refacting DPlatformHandle to adap treeland
|
||||
* Revert "refact: refacting DPlatformHandle to adap treeland"
|
||||
* refact: refacting DPlatformHandle to adapt treeland
|
||||
* fix: iterator out of bounds for dciicon
|
||||
* fix: set font family invalid
|
||||
|
||||
-- Deepin Packages Builder <packages@deepin.org> Thu, 02 Jan 2025 05:43:53 +0000
|
||||
|
||||
dtkgui (5.7.5) unstable; urgency=medium
|
||||
|
||||
* fix: availableSizes not work on Qt6
|
||||
|
||||
-- Deepin Packages Builder <packages@deepin.org> Thu, 12 Dec 2024 03:03:53 +0000
|
||||
|
||||
dtkgui (5.7.4) unstable; urgency=medium
|
||||
|
||||
* chore(CI): add debian check workflow
|
||||
Thanks to kuchune
|
||||
* refactor: xcb platform theme interface
|
||||
* refactor: treeland platform theme interface 扩展Treeland的个性化接口
|
||||
* fix: Possible null pointer dereference and Notitlebar input parameter error
|
||||
* feat: support treeland platform for wmHelper
|
||||
* fix: blur is invalid for treeland
|
||||
* feat: Limit maximum and minimum fonts
|
||||
* fix: app crashed when window destroyed in quick
|
||||
* fix: app crashed when window destroyed in quick
|
||||
* fix: linglong app load qt translations failed
|
||||
|
||||
-- Deepin Packages Builder <packages@deepin.org> Tue, 03 Dec 2024 02:00:46 +0000
|
||||
|
||||
dtkgui (5.7.3) unstable; urgency=medium
|
||||
|
||||
* fix: No judgment on the validity of the protocol(Bug: 286859)
|
||||
|
||||
-- Deepin Packages Builder <packages@deepin.org> Wed, 20 Nov 2024 02:19:06 +0000
|
||||
|
||||
dtkgui (5.7.2) unstable; urgency=medium
|
||||
|
||||
* chore: Correct the name of TreelandProtocols package in cmake
|
||||
* fix: Under treeland, the dialog has not disabled titlebar
|
||||
* fix: Print "load translate" debug log to channels(Bug: 284539)
|
||||
* chore: add IsWaylandPlatform attribute
|
||||
* chore: highlight color is inconsistency
|
||||
|
||||
-- Deepin Packages Builder <packages@deepin.org> Wed, 13 Nov 2024 01:53:26 +0000
|
||||
|
||||
dtkgui (5.7.1) unstable; urgency=medium
|
||||
|
||||
* Revert "feat: add close.dci"(Issue: https://github.com/linuxdeepin/developer-center/issues/10482)
|
||||
* feat: Add notitlebar function on wayland platform
|
||||
* feat: support qt5 and qt6
|
||||
* fix: cannot move window on wayland
|
||||
* fix: remove treeland personalization protocols useless function
|
||||
* feat: add fixme note
|
||||
* chore: update license info
|
||||
* chore: add build dep
|
||||
* chore: update license
|
||||
* chore: add extra cmake modules
|
||||
* chore: add dtkgui namespace
|
||||
* fix: app crashed in x11
|
||||
|
||||
-- Deepin Packages Builder <packages@deepin.org> Wed, 16 Oct 2024 03:30:46 +0000
|
||||
|
||||
dtkgui (5.6.34) unstable; urgency=medium
|
||||
|
||||
* feat: add close.dci
|
||||
Thanks to Yixue Wang
|
||||
* chore: animation-dci supports custom icon
|
||||
* fix: wrong judgment conditions
|
||||
* feat: support to change window effects(Bug: 244347)
|
||||
* feat: add window startup effect Type(Issue: https://github.com/linuxdeepin/developer-center/issues/10322)
|
||||
|
||||
-- Deepin Packages Builder <packages@deepin.org> Tue, 20 Aug 2024 05:03:52 +0000
|
||||
|
||||
dtkgui (5.6.32) unstable; urgency=medium
|
||||
|
||||
* Revert "fix: jagged edges on ddciicon"(Issue: https://github.com/linuxdeepin/developer-center/issues/9443)
|
||||
* chore: dci-icon-theme tool tweak
|
||||
|
||||
-- Deepin Packages Builder <packages@deepin.org> Mon, 08 Jul 2024 02:29:21 +0000
|
||||
|
||||
dtkgui (5.6.31) unstable; urgency=medium
|
||||
|
||||
* fix: jagged edges on ddciicon(Issue: https://github.com/linuxdeepin/developer-center/issues/8691)
|
||||
|
||||
-- Deepin Packages Builder <packages@deepin.org> Thu, 27 Jun 2024 09:11:34 +0000
|
||||
|
||||
dtkgui (5.6.30) unstable; urgency=medium
|
||||
|
||||
[ root ]
|
||||
* UNRELEASED
|
||||
|
||||
-- Deepin Packages Builder <packages@deepin.org> Thu, 30 May 2024 02:46:31 +0000
|
||||
|
||||
dtkgui (5.6.29) unstable; urgency=medium
|
||||
|
||||
[ root ]
|
||||
* UNRELEASED
|
||||
|
||||
-- Deepin Packages Builder <packages@deepin.org> Mon, 13 May 2024 03:02:53 +0000
|
||||
|
||||
dtkgui (5.6.28) unstable; urgency=medium
|
||||
|
||||
* chore: insert to cache when icon is not null
|
||||
* chore: add flag to disable noncache flag
|
||||
* fix: missing initialization for baseFont of fontManager(Issue: https://github.com/linuxdeepin/developer-center/issues/8040)
|
||||
* feat: dci-icon-theme support multiple icon size
|
||||
|
||||
-- Deepin Packages Builder <packages@deepin.org> Mon, 29 Apr 2024 08:23:44 +0000
|
||||
|
||||
dtkgui (5.6.27) unstable; urgency=medium
|
||||
|
||||
* fix: setWindowBlurAreaByWM only work once in qt6
|
||||
|
||||
-- Deepin Packages Builder <packages@deepin.org> Fri, 19 Apr 2024 08:55:34 +0000
|
||||
|
||||
dtkgui (5.6.26) unstable; urgency=medium
|
||||
|
||||
* fix: wrong availableSizes for DIconProxyEngine
|
||||
* fix: PlaceholderText color tweak(Issue: https://github.com/linuxdeepin/developer-center/issues/7554)
|
||||
* feat: support to get specified palette
|
||||
|
||||
-- Deepin Packages Builder <packages@deepin.org> Tue, 26 Mar 2024 05:47:35 +0000
|
||||
|
||||
dtkgui (5.6.25) unstable; urgency=medium
|
||||
|
||||
* fix: icon doesn't update when iconTheme changed
|
||||
* fix: font can't follow changes in qt6
|
||||
* fix: app refresh slowly
|
||||
* fix: changed paletteType's config value
|
||||
* fix: search icon can't change with theme change(Issue: #6230)
|
||||
|
||||
-- Deepin Packages Builder <packages@deepin.org> Mon, 11 Mar 2024 01:16:27 +0000
|
||||
|
||||
dtkgui (5.6.22) unstable; urgency=medium
|
||||
|
||||
* fix: menu icon incorrect in dark mode(Issue: https://github.com/linuxdeepin/developer-center/issues/6624)
|
||||
* feat: enable xdgIconLoader under Qt6
|
||||
* chore: warning for connect
|
||||
|
||||
-- Deepin Packages Builder <packages@deepin.org> Wed, 10 Jan 2024 02:30:59 +0000
|
||||
|
||||
dtkgui (5.6.21) unstable; urgency=medium
|
||||
|
||||
* chore: update cmake version
|
||||
* fix: xdg icon loading failed with qt6(Issue: https://github.com/linuxdeepin/developer-center/issues/6459)
|
||||
* fix: debian build failed
|
||||
* fix: DIconProxyEngine read not ensureEngine
|
||||
* chore: fix ut_dciiconengine failed on dark theme
|
||||
|
||||
-- Deepin Packages Builder <packages@deepin.org> Tue, 09 Jan 2024 01:45:43 +0000
|
||||
|
||||
dtkgui (5.6.20) unstable; urgency=medium
|
||||
|
||||
* chore: add synchronization workflow
|
||||
* fix: indirect inclusion of QSharedPointer
|
||||
* feat: move ddesktopservices to dtkgui(Issue: #134)
|
||||
|
||||
-- Deepin Packages Builder <packages@deepin.org> Tue, 28 Nov 2023 05:40:52 +0000
|
||||
|
||||
dtkgui (5.6.19) unstable; urgency=medium
|
||||
|
||||
[ root ]
|
||||
* UNRELEASED
|
||||
|
||||
-- Deepin Packages Builder <packages@deepin.org> Mon, 23 Oct 2023 07:33:18 +0000
|
||||
|
||||
dtkgui (5.6.18) unstable; urgency=medium
|
||||
|
||||
* fix: Wrong value of DPalette::TextLively
|
||||
* chore: find qhelpgenerator from property
|
||||
* fix: svg with filter attribute rendering exception
|
||||
* fix: when iconName is absolute path
|
||||
* fix: missing link when disable librsvg
|
||||
* fix: Wrong IconName for DIconEngine(Issue: https://github.com/linuxdeepin/developer-center/issues/5760)
|
||||
|
||||
-- Deepin Packages Builder <packages@deepin.org> Wed, 18 Oct 2023 06:01:44 +0000
|
||||
|
||||
dtkgui (5.6.17) unstable; urgency=medium
|
||||
|
||||
* Release 5.6.17
|
||||
|
||||
-- Deepin Packages Builder <packages@deepin.org> Fri, 08 Sep 2023 15:15:39 +0800
|
||||
|
||||
dtkgui (5.6.16) unstable; urgency=medium
|
||||
|
||||
* chore: ut build without source
|
||||
* fix: Compiling error in qt6.4
|
||||
* chore: add DtkBuildHelper depends
|
||||
* fix(build): ut failed on Qt6.4
|
||||
* fix: dci icon cache key miss theme name(Issue: https://github.com/linuxdeepin/developer-center/issues/4517)
|
||||
|
||||
-- Deepin Packages Builder <packages@deepin.org> Tue, 22 Aug 2023 06:13:45 +0000
|
||||
|
||||
dtkgui (5.6.15) unstable; urgency=medium
|
||||
|
||||
* chore: iconengine tweak and uint test
|
||||
* chore: do not show ui in ut
|
||||
* chore: add unit test
|
||||
* chore: Adaptation for Qt5.11
|
||||
* refator: rewrite hasUserManual function
|
||||
|
||||
-- Yixue Wang <wangyixue@deepin.org> Fri, 11 Aug 2023 13:57:02 +0800
|
||||
|
||||
dtkgui (5.6.14) unstable; urgency=medium
|
||||
|
||||
* chore: ignore doxygen-theme folder
|
||||
Thanks to syn(Task: 99)
|
||||
* chore: change OUTPUT_DIR variable in cmake (#163)
|
||||
Thanks to WangFei
|
||||
* chore: adjust builtiniconengine (#164)
|
||||
Thanks to WangFei
|
||||
* chore: adjust xdgiconproxyengine (#167)
|
||||
Thanks to WangFei
|
||||
* chore: add unit test about builtinengine
|
||||
* refactor!: deprecate some interfaces in dtk6
|
||||
* chore: add dciiconengine
|
||||
* chore: adjust icontheme
|
||||
* chore: add unit test about dciiconengine
|
||||
* chore: reduce compilation warnings
|
||||
Thanks to SPUER(Issue: #96)
|
||||
* chore: Sync by https://github.com/linuxdeepin/.github/commit/559e91167d4919644f37bbcf123eb0651c1528ea(Influence: none)
|
||||
* chore: add proxyiconengine
|
||||
* refactor: Move dotsPerInch from normal function to slots
|
||||
* chore: remove unused pro files
|
||||
* fix: build failed in qt6 due to proxyengine
|
||||
* feat: DIconTheme::findQIcon add fallback icon
|
||||
* fix(build): DIconTheme ut failed
|
||||
* fix: DFileDragClient::serverDestroyed nerver emit
|
||||
* feat: add helper for high dpi pixmap
|
||||
* fix: dplatformtheme fetchPalette crash
|
||||
* feat: load app and qt Translation files
|
||||
|
||||
-- Deepin Packages Builder <packages@deepin.org> Thu, 27 Jul 2023 06:56:34 +0000
|
||||
|
||||
dtkgui (5.6.12) unstable; urgency=medium
|
||||
|
||||
* chore: Sync by https://github.com/linuxdeepin/.github/commit/2e5e092ba3f86b16d1aabbabcf0bfd2ae65b19c8(Influence: none)
|
||||
* fix: fix build failure due to metasystem change
|
||||
* fix(build): suport build with Qt6 && Qt5
|
||||
* chore: Adapt Qt6 && Dtk6 compilation
|
||||
* fix: ut failed
|
||||
* chore: update dconfig appid
|
||||
|
||||
-- Deepin Packages Builder <packages@deepin.org> Sun, 25 Jun 2023 14:43:42 +0800
|
||||
|
||||
dtkgui (5.6.11) unstable; urgency=medium
|
||||
|
||||
* Release 5.6.11
|
||||
* Fix developer-center#4117
|
||||
* Fix bug-197713(App blocked by hasUserManual in live system)
|
||||
|
||||
-- Deepin Packages Builder <packages@deepin.com> Mon, 08 May 2023 13:16:17 +0800
|
||||
|
||||
dtkgui (5.6.10) unstable; urgency=medium
|
||||
|
||||
* Release 5.6.10
|
||||
* support XDG_SESSION_DESKTOP set to DDE
|
||||
* add DontSaveApplciationTheme Attribute
|
||||
|
||||
-- Deepin Packages Builder <packages@deepin.com> Mon, 17 Apr 2023 17:11:55 +0800
|
||||
|
||||
dtkgui (5.6.9) unstable; urgency=medium
|
||||
|
||||
* Release 5.6.9
|
||||
|
||||
-- Deepin Packages Builder <packages@deepin.com> Mon, 03 Apr 2023 10:13:06 +0800
|
||||
|
||||
dtkgui (5.6.8) unstable; urgency=medium
|
||||
|
||||
* Release 5.6.8
|
||||
|
|
|
|||
|
|
@ -3,14 +3,15 @@ Section: libdevel
|
|||
Priority: optional
|
||||
Maintainer: Deepin Packages Builder <packages@deepin.com>
|
||||
Build-Depends: debhelper-compat (= 12), pkg-config,
|
||||
qtbase5-private-dev, qtbase5-dev-tools, doxygen, graphviz, qttools5-dev-tools,
|
||||
qtbase5-private-dev, qtbase5-dev-tools, doxygen, graphviz, qttools5-dev,
|
||||
libdtkcore-dev, librsvg2-dev, libfreeimage-dev, libraw-dev, libgtest-dev, libgmock-dev,
|
||||
libqt5xdg-dev, libqt5xdgiconloader-dev, cmake, qt5-image-formats-plugins
|
||||
libqt5xdg-dev, libqt5xdgiconloader-dev, cmake, qt5-image-formats-plugins, libqt5waylandclient5-dev,
|
||||
extra-cmake-modules, qtwayland5-dev-tools, qtwayland5-private-dev, libkf5wayland-dev, treeland-protocols
|
||||
Standards-Version: 3.9.8
|
||||
|
||||
Package: libdtkgui5
|
||||
Architecture: any
|
||||
Depends: ${shlibs:Depends}, ${misc:Depends}, libdtkcommon,
|
||||
Depends: ${shlibs:Depends}, ${misc:Depends}, libdtkdata,
|
||||
qt5-image-formats-plugins
|
||||
Multi-Arch: same
|
||||
Description: Deepin Tool Kit Gui library
|
||||
|
|
@ -29,13 +30,14 @@ Description: Deepin Tool Kit Gui Utilities
|
|||
|
||||
Package: libdtkgui-dev
|
||||
Architecture: any
|
||||
Depends: ${shlibs:Depends}, ${misc:Depends}, libdtkgui5( =${binary:Version})
|
||||
Depends: ${shlibs:Depends}, ${misc:Depends}, libdtkgui5( =${binary:Version}), libdtkcommon-dev(>=5.6.16)
|
||||
Description: Deepin Tool Kit Gui Devel library
|
||||
DtkGui is base devel library of Deepin Qt/C++ applications.
|
||||
.
|
||||
This package contains the header files and static libraries of DtkGui
|
||||
|
||||
Package: libdtkgui-doc
|
||||
Build-Profiles: <!nodoc>
|
||||
Architecture: any
|
||||
Depends: ${misc:Depends}
|
||||
Description: Deepin Tool Kit Gui (Document)
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
usr/lib/*/*/DGui/bin/*
|
||||
usr/*/*/DGui/bin/*
|
||||
|
|
|
|||
|
|
@ -1 +1,2 @@
|
|||
usr/lib/*/lib*.so.*
|
||||
#usr/share/dsg/*/*
|
||||
|
|
|
|||
|
|
@ -3,6 +3,12 @@ DPKG_EXPORT_BUILDFLAGS = 1
|
|||
include /usr/share/dpkg/default.mk
|
||||
export QT_SELECT = qt5
|
||||
|
||||
# 安全编译参数
|
||||
export DEB_BUILD_MAINT_OPTIONS = hardening=+all
|
||||
export DEB_CFLAGS_MAINT_APPEND = -Wall
|
||||
export DEB_CXXFLAGS_MAINT_APPEND = -Wall
|
||||
export DEB_LDFLAGS_MAINT_APPEND = -Wl,--as-needed -Wl,-z,relro -Wl,-z,now -Wl,-z,noexecstack -Wl,-E
|
||||
|
||||
DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)
|
||||
|
||||
VERSION = $(DEB_VERSION_UPSTREAM)
|
||||
|
|
@ -18,7 +24,7 @@ endif
|
|||
dh $@
|
||||
|
||||
override_dh_auto_configure:
|
||||
dh_auto_configure -- -DBUILD_TESTING=OFF -DBUILD_DOCS=ON -DDVERSION=$(_PACK_VER)
|
||||
dh_auto_configure -- -DBUILD_TESTING=OFF -DBUILD_DOCS=ON -DDTK_VERSION=$(_PACK_VER)
|
||||
#override_dh_auto_test:
|
||||
# echo "skip auto test"
|
||||
|
||||
|
|
|
|||
|
|
@ -1,944 +0,0 @@
|
|||
libdtkgui.so.5 libdtkgui5 #MINVER#
|
||||
_Z27qRegisterNormalizedMetaTypeI5QListI12QPainterPathEEiRK10QByteArrayPT_N9QtPrivate21MetaTypeDefinedHelperIS6_Xaasr12QMetaTypeId2IS6_E7DefinedntsrSB_9IsBuiltInEE11DefinedTypeE@Base 5.2.2-1
|
||||
_Z27qRegisterNormalizedMetaTypeI5QListI5QRectEEiRK10QByteArrayPT_N9QtPrivate21MetaTypeDefinedHelperIS6_Xaasr12QMetaTypeId2IS6_E7DefinedntsrSB_9IsBuiltInEE11DefinedTypeE@Base 5.2.2-1
|
||||
_Z27qRegisterNormalizedMetaTypeI7QVectorIjEEiRK10QByteArrayPT_N9QtPrivate21MetaTypeDefinedHelperIS5_Xaasr12QMetaTypeId2IS5_E7DefinedntsrSA_9IsBuiltInEE11DefinedTypeE@Base 5.2.2-1
|
||||
_ZGVZN9QtPrivate19ValueTypeIsMetaTypeI5QListI12QPainterPathELb1EE17registerConverterEiE1f@Base 5.2.2-1
|
||||
_ZGVZN9QtPrivate19ValueTypeIsMetaTypeI5QListI5QRectELb1EE17registerConverterEiE1f@Base 5.2.2-1
|
||||
_ZGVZN9QtPrivate19ValueTypeIsMetaTypeI7QVectorIjELb1EE17registerConverterEiE1f@Base 5.2.2-1
|
||||
_ZN10QByteArrayD1Ev@Base 5.2.2-1
|
||||
_ZN10QByteArrayD2Ev@Base 5.2.2-1
|
||||
_ZN12QWeakPointerI14QDBusInterfaceED1Ev@Base 5.2.2-1
|
||||
_ZN12QWeakPointerI14QDBusInterfaceED2Ev@Base 5.2.2-1
|
||||
_ZN12QWeakPointerI7QObjectED1Ev@Base 5.2.2-1
|
||||
_ZN12QWeakPointerI7QObjectED2Ev@Base 5.2.2-1
|
||||
_ZN12QWeakPointerIN3Dtk3Gui19DDndSourceInterfaceEED1Ev@Base 5.2.2-1
|
||||
_ZN12QWeakPointerIN3Dtk3Gui19DDndSourceInterfaceEED2Ev@Base 5.2.2-1
|
||||
_ZN12QWeakPointerIN3Dtk3Gui21DDndClientSignalRelayEED1Ev@Base 5.2.2-1
|
||||
_ZN12QWeakPointerIN3Dtk3Gui21DDndClientSignalRelayEED2Ev@Base 5.2.2-1
|
||||
_ZN15QtSharedPointer33ExternalRefCountWithCustomDeleterIN3Dtk3Gui21DDndClientSignalRelayENS_13NormalDeleterEE7deleterEPNS_20ExternalRefCountDataE@Base 5.2.2-1
|
||||
_ZN17QtMetaTypePrivate13IteratorOwnerIPKjE5equalEPKPvS6_@Base 5.2.2-1
|
||||
_ZN17QtMetaTypePrivate13IteratorOwnerIPKjE6assignEPPvPKS4_@Base 5.2.2-1
|
||||
_ZN17QtMetaTypePrivate13IteratorOwnerIPKjE7advanceEPPvi@Base 5.2.2-1
|
||||
_ZN17QtMetaTypePrivate13IteratorOwnerIPKjE7destroyEPPv@Base 5.2.2-1
|
||||
_ZN17QtMetaTypePrivate19IteratorOwnerCommonIN5QListI12QPainterPathE14const_iteratorEE5equalEPKPvS8_@Base 5.2.2-1
|
||||
_ZN17QtMetaTypePrivate19IteratorOwnerCommonIN5QListI12QPainterPathE14const_iteratorEE6assignEPPvPKS6_@Base 5.2.2-1
|
||||
_ZN17QtMetaTypePrivate19IteratorOwnerCommonIN5QListI12QPainterPathE14const_iteratorEE7advanceEPPvi@Base 5.2.2-1
|
||||
_ZN17QtMetaTypePrivate19IteratorOwnerCommonIN5QListI12QPainterPathE14const_iteratorEE7destroyEPPv@Base 5.2.2-1
|
||||
_ZN17QtMetaTypePrivate19IteratorOwnerCommonIN5QListI5QRectE14const_iteratorEE5equalEPKPvS8_@Base 5.2.2-1
|
||||
_ZN17QtMetaTypePrivate19IteratorOwnerCommonIN5QListI5QRectE14const_iteratorEE6assignEPPvPKS6_@Base 5.2.2-1
|
||||
_ZN17QtMetaTypePrivate19IteratorOwnerCommonIN5QListI5QRectE14const_iteratorEE7advanceEPPvi@Base 5.2.2-1
|
||||
_ZN17QtMetaTypePrivate19IteratorOwnerCommonIN5QListI5QRectE14const_iteratorEE7destroyEPPv@Base 5.2.2-1
|
||||
_ZN17QtMetaTypePrivate23QMetaTypeFunctionHelperI12QPainterPathLb1EE8DestructEPv@Base 5.2.2-1
|
||||
_ZN17QtMetaTypePrivate23QMetaTypeFunctionHelperI12QPainterPathLb1EE9ConstructEPvPKv@Base 5.2.2-1
|
||||
_ZN17QtMetaTypePrivate23QMetaTypeFunctionHelperI13QDBusArgumentLb1EE8DestructEPv@Base 5.2.2-1
|
||||
_ZN17QtMetaTypePrivate23QMetaTypeFunctionHelperI13QDBusArgumentLb1EE9ConstructEPvPKv@Base 5.2.2-1
|
||||
_ZN17QtMetaTypePrivate23QMetaTypeFunctionHelperI5QListI12QPainterPathELb1EE8DestructEPv@Base 5.2.2-1
|
||||
_ZN17QtMetaTypePrivate23QMetaTypeFunctionHelperI5QListI12QPainterPathELb1EE9ConstructEPvPKv@Base 5.2.2-1
|
||||
_ZN17QtMetaTypePrivate23QMetaTypeFunctionHelperI5QListI5QRectELb1EE8DestructEPv@Base 5.2.2-1
|
||||
_ZN17QtMetaTypePrivate23QMetaTypeFunctionHelperI5QListI5QRectELb1EE9ConstructEPvPKv@Base 5.2.2-1
|
||||
_ZN17QtMetaTypePrivate23QMetaTypeFunctionHelperI7QVectorIjELb1EE8DestructEPv@Base 5.2.2-1
|
||||
_ZN17QtMetaTypePrivate23QMetaTypeFunctionHelperI7QVectorIjELb1EE9ConstructEPvPKv@Base 5.2.2-1
|
||||
_ZN17QtMetaTypePrivate23QMetaTypeFunctionHelperI8QMarginsLb1EE8DestructEPv@Base 5.2.2-1
|
||||
_ZN17QtMetaTypePrivate23QMetaTypeFunctionHelperI8QMarginsLb1EE9ConstructEPvPKv@Base 5.2.2-1
|
||||
_ZN17QtMetaTypePrivate23QMetaTypeFunctionHelperINS_23QSequentialIterableImplELb1EE8DestructEPv@Base 5.2.2-1
|
||||
_ZN17QtMetaTypePrivate23QMetaTypeFunctionHelperINS_23QSequentialIterableImplELb1EE9ConstructEPvPKv@Base 5.2.2-1
|
||||
_ZN17QtMetaTypePrivate23QMetaTypeFunctionHelperIPN3Dtk3Gui14DPlatformThemeELb1EE8DestructEPv@Base 5.2.2-1
|
||||
_ZN17QtMetaTypePrivate23QMetaTypeFunctionHelperIPN3Dtk3Gui14DPlatformThemeELb1EE9ConstructEPvPKv@Base 5.2.2-1
|
||||
_ZN17QtMetaTypePrivate23QSequentialIterableImpl13moveToEndImplI5QListI12QPainterPathEEEvPKvPPv@Base 5.2.2-1
|
||||
_ZN17QtMetaTypePrivate23QSequentialIterableImpl13moveToEndImplI5QListI5QRectEEEvPKvPPv@Base 5.2.2-1
|
||||
_ZN17QtMetaTypePrivate23QSequentialIterableImpl13moveToEndImplI7QVectorIjEEEvPKvPPv@Base 5.2.2-1
|
||||
_ZN17QtMetaTypePrivate23QSequentialIterableImpl15moveToBeginImplI5QListI12QPainterPathEEEvPKvPPv@Base 5.2.2-1
|
||||
_ZN17QtMetaTypePrivate23QSequentialIterableImpl15moveToBeginImplI5QListI5QRectEEEvPKvPPv@Base 5.2.2-1
|
||||
_ZN17QtMetaTypePrivate23QSequentialIterableImpl15moveToBeginImplI7QVectorIjEEEvPKvPPv@Base 5.2.2-1
|
||||
_ZN17QtMetaTypePrivate23QSequentialIterableImpl6atImplI5QListI12QPainterPathEEEPKvS6_i@Base 5.2.2-1
|
||||
_ZN17QtMetaTypePrivate23QSequentialIterableImpl6atImplI5QListI5QRectEEEPKvS6_i@Base 5.2.2-1
|
||||
_ZN17QtMetaTypePrivate23QSequentialIterableImpl6atImplI7QVectorIjEEEPKvS5_i@Base 5.2.2-1
|
||||
_ZN17QtMetaTypePrivate23QSequentialIterableImpl7getImplI5QListI12QPainterPathEEENS_11VariantDataEPKPvij@Base 5.2.2-1
|
||||
_ZN17QtMetaTypePrivate23QSequentialIterableImpl7getImplI5QListI5QRectEEENS_11VariantDataEPKPvij@Base 5.2.2-1
|
||||
_ZN17QtMetaTypePrivate23QSequentialIterableImpl7getImplI7QVectorIjEEENS_11VariantDataEPKPvij@Base 5.2.2-1
|
||||
_ZN17QtMetaTypePrivate23QSequentialIterableImpl8sizeImplI5QListI12QPainterPathEEEiPKv@Base 5.2.2-1
|
||||
_ZN17QtMetaTypePrivate23QSequentialIterableImpl8sizeImplI5QListI5QRectEEEiPKv@Base 5.2.2-1
|
||||
_ZN17QtMetaTypePrivate23QSequentialIterableImpl8sizeImplI7QVectorIjEEEiPKv@Base 5.2.2-1
|
||||
_ZN18QSharedDataPointerIN3Dtk3Gui12DPaletteDataEE13detach_helperEv@Base 5.2.2-1
|
||||
_ZN18QSharedDataPointerIN3Dtk3Gui12DPaletteDataEED1Ev@Base 5.2.2-1
|
||||
_ZN18QSharedDataPointerIN3Dtk3Gui12DPaletteDataEED2Ev@Base 5.2.2-1
|
||||
_ZN29QWindowSystemInterfacePrivate16ThemeChangeEventD0Ev@Base 5.2.2-1
|
||||
_ZN29QWindowSystemInterfacePrivate16ThemeChangeEventD1Ev@Base 5.2.2-1
|
||||
_ZN29QWindowSystemInterfacePrivate16ThemeChangeEventD2Ev@Base 5.2.2-1
|
||||
_ZN34ComDeepinApiXEventMonitorInterface10CursorIntoEiiRK7QString@Base 5.2.2-1
|
||||
_ZN34ComDeepinApiXEventMonitorInterface10CursorMoveEiiRK7QString@Base 5.2.2-1
|
||||
_ZN34ComDeepinApiXEventMonitorInterface10KeyReleaseERK7QStringiiS2_@Base 5.2.2-1
|
||||
_ZN34ComDeepinApiXEventMonitorInterface11ButtonPressEiiiRK7QString@Base 5.2.2-1
|
||||
_ZN34ComDeepinApiXEventMonitorInterface11qt_metacallEN11QMetaObject4CallEiPPv@Base 5.2.2-1
|
||||
_ZN34ComDeepinApiXEventMonitorInterface11qt_metacastEPKc@Base 5.2.2-1
|
||||
_ZN34ComDeepinApiXEventMonitorInterface13ButtonReleaseEiiiRK7QString@Base 5.2.2-1
|
||||
_ZN34ComDeepinApiXEventMonitorInterface13CancelAllAreaEv@Base 5.2.2-1
|
||||
_ZN34ComDeepinApiXEventMonitorInterface16staticMetaObjectE@Base 5.2.2-1
|
||||
_ZN34ComDeepinApiXEventMonitorInterface8KeyPressERK7QStringiiS2_@Base 5.2.2-1
|
||||
_ZN34ComDeepinApiXEventMonitorInterface9CursorOutEiiRK7QString@Base 5.2.2-1
|
||||
_ZN34ComDeepinApiXEventMonitorInterfaceC1ERK7QStringS2_RK15QDBusConnectionP7QObject@Base 5.2.2-1
|
||||
_ZN34ComDeepinApiXEventMonitorInterfaceC2ERK7QStringS2_RK15QDBusConnectionP7QObject@Base 5.2.2-1
|
||||
_ZN34ComDeepinApiXEventMonitorInterfaceD0Ev@Base 5.2.2-1
|
||||
_ZN34ComDeepinApiXEventMonitorInterfaceD1Ev@Base 5.2.2-1
|
||||
_ZN34ComDeepinApiXEventMonitorInterfaceD2Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui12DSvgRenderer10setViewBoxERK5QRect@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui12DSvgRenderer10setViewBoxERK6QRectF@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui12DSvgRenderer4loadERK10QByteArray@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui12DSvgRenderer4loadERK7QString@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui12DSvgRenderer6renderEP8QPainter@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui12DSvgRenderer6renderEP8QPainterRK6QRectF@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui12DSvgRenderer6renderEP8QPainterRK7QStringRK6QRectF@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui12DSvgRendererC1EP7QObject@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui12DSvgRendererC1ERK10QByteArrayP7QObject@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui12DSvgRendererC1ERK7QStringP7QObject@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui12DSvgRendererC2EP7QObject@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui12DSvgRendererC2ERK10QByteArrayP7QObject@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui12DSvgRendererC2ERK7QStringP7QObject@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui12DSvgRendererD0Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui12DSvgRendererD1Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui12DSvgRendererD2Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DForeignWindow10pidChangedEv@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DForeignWindow11qt_metacallEN11QMetaObject4CallEiPPv@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DForeignWindow11qt_metacastEPKc@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DForeignWindow14wmClassChangedEv@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DForeignWindow16staticMetaObjectE@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DForeignWindow5eventEP6QEvent@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DForeignWindow9fromWinIdEy@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DForeignWindowC1EP7QWindow@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DForeignWindowC2EP7QWindow@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DForeignWindowD0Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DForeignWindowD1Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DForeignWindowD2Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme10midChangedE6QColor@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme10setPaletteERKNS0_8DPaletteE@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme11baseChangedE6QColor@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme11darkChangedE6QColor@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme11linkChangedE6QColor@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme11qt_metacallEN11QMetaObject4CallEiPPv@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme11qt_metacastEPKc@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme11setFontNameERK10QByteArray@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme11setMidlightERK6QColor@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme11setTextTipsERK6QColor@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme11textChangedE6QColor@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme12lightChangedE6QColor@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme12setHighlightERK6QColor@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme12setTextTitleERK6QColor@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme12setThemeNameERK10QByteArray@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme13buttonChangedE6QColor@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme13setBrightTextERK6QColor@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme13setButtonTextERK6QColor@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme13setDarkLivelyERK6QColor@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme13setTextLivelyERK6QColor@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme13setWindowTextERK6QColor@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme13shadowChangedE6QColor@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme13windowChangedE6QColor@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme14paletteChangedENS0_8DPaletteE@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme14setActiveColorE6QColor@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme14setCursorBlinkEb@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme14setDotsPerInchERK7QStringi@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme14setFrameBorderERK6QColor@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme14setGtkFontNameERK10QByteArray@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme14setLightLivelyERK6QColor@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme14setLinkVisitedERK6QColor@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme14setTextWarningERK6QColor@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme14setToolTipBaseERK6QColor@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme14setToolTipTextERK6QColor@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme15fontNameChangedE10QByteArray@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme15midlightChangedE6QColor@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme15setMonoFontNameERK10QByteArray@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme15textTipsChangedE6QColor@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme16highlightChangedE6QColor@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme16setAlternateBaseERK6QColor@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme16setFontPointSizeEd@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme16setIconThemeNameERK10QByteArray@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme16staticMetaObjectE@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme16textTitleChangedE6QColor@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme16themeNameChangedE10QByteArray@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme17brightTextChangedE6QColor@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme17buttonTextChangedE6QColor@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme17darkLivelyChangedE6QColor@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme17setItemBackgroundERK6QColor@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme17setSoundThemeNameERK10QByteArray@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme17textLivelyChangedE6QColor@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme17windowTextChangedE6QColor@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme18activeColorChangedE6QColor@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme18cursorBlinkChangedEb@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme18dotsPerInchChangedERK7QStringi@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme18frameBorderChangedE6QColor@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme18gtkFontNameChangedE10QByteArray@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme18lightLivelyChangedE6QColor@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme18linkVisitedChangedE6QColor@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme18setCursorBlinkTimeEi@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme18setDoubleClickTimeEi@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme18setHighlightedTextERK6QColor@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme18textWarningChangedE6QColor@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme18toolTipBaseChangedE6QColor@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme18toolTipTextChangedE6QColor@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme19monoFontNameChangedE10QByteArray@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme19setDndDragThresholdEi@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme19setFallbackPropertyEb@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme20alternateBaseChangedE6QColor@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme20fontPointSizeChangedEd@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme20iconThemeNameChangedE10QByteArray@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme21itemBackgroundChangedE6QColor@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme21setCursorBlinkTimeoutEi@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme21soundThemeNameChangedE10QByteArray@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme22cursorBlinkTimeChangedEi@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme22doubleClickTimeChangedEi@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme22highlightedTextChangedE6QColor@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme22setDoubleClickDistanceEi@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme23dndDragThresholdChangedEi@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme25cursorBlinkTimeoutChangedEi@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme26doubleClickDistanceChangedEi@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme6setMidERK6QColor@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme7setBaseERK6QColor@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme7setDarkERK6QColor@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme7setLinkERK6QColor@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme7setTextERK6QColor@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme8setLightERK6QColor@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme9setButtonERK6QColor@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme9setShadowERK6QColor@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformTheme9setWindowERK6QColor@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformThemeC1EjP7QObject@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformThemeC1EjPS1_@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformThemeC2EjP7QObject@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformThemeC2EjPS1_@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformThemeD0Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformThemeD1Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DPlatformThemeD2Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DRegionMonitor11qt_metacallEN11QMetaObject4CallEiPPv@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DRegionMonitor11qt_metacastEPKc@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DRegionMonitor14registerRegionEv@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DRegionMonitor16setWatchedRegionERK7QRegion@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DRegionMonitor16staticMetaObjectE@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DRegionMonitor16unregisterRegionEv@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DRegionMonitor17setCoordinateTypeENS1_14CoordinateTypeE@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DRegionMonitorC1EP7QObject@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DRegionMonitorC2EP7QObject@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DRegionMonitorD0Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DRegionMonitorD1Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui14DRegionMonitorD2Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DFileDragClient11qt_metacallEN11QMetaObject4CallEiPPv@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DFileDragClient11qt_metacastEPKc@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DFileDragClient12setTargetUrlEPK9QMimeData4QUrl@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DFileDragClient12stateChangedENS0_14DFileDragStateE@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DFileDragClient13checkMimeDataEPK9QMimeData@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DFileDragClient13setTargetDataEPK9QMimeData7QString8QVariant@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DFileDragClient15progressChangedEi@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DFileDragClient15serverDestroyedEv@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DFileDragClient16staticMetaObjectE@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DFileDragClientC1EPK9QMimeDataP7QObject@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DFileDragClientC2EPK9QMimeDataP7QObject@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DFileDragClientD0Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DFileDragClientD1Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DFileDragClientD2Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DFileDragServer11qt_metacallEN11QMetaObject4CallEiPPv@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DFileDragServer11qt_metacastEPKc@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DFileDragServer11setProgressEi@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DFileDragServer16staticMetaObjectE@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DFileDragServer17targetDataChangedERK7QString@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DFileDragServer8setStateENS0_14DFileDragStateE@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DFileDragServerC1EP7QObject@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DFileDragServerC2EP7QObject@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DFileDragServerD0Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DFileDragServerD1Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DFileDragServerD2Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DNativeSettings10setSettingERK10QByteArrayRK8QVariant@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DNativeSettings11qt_metacallEN11QMetaObject4CallEiPPv@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DNativeSettings11qt_metacastEPKc@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DNativeSettings12__setAllKeysERK5QListI10QByteArrayE@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DNativeSettings14allKeysChangedEv@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DNativeSettings15propertyChangedERK10QByteArrayRK8QVariant@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DNativeSettings16staticMetaObjectE@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DNativeSettings4initEPK11QMetaObjectj@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DNativeSettingsC1EPK11QMetaObjectjRK10QByteArrayP7QObject@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DNativeSettingsC1ERNS0_22DNativeSettingsPrivateEPK11QMetaObjectjP7QObject@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DNativeSettingsC1EjRK10QByteArrayP7QObject@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DNativeSettingsC2EPK11QMetaObjectjRK10QByteArrayP7QObject@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DNativeSettingsC2ERNS0_22DNativeSettingsPrivateEPK11QMetaObjectjP7QObject@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DNativeSettingsC2EjRK10QByteArrayP7QObject@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DNativeSettingsD0Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DNativeSettingsD1Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DNativeSettingsD2Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DPlatformHandle11eventFilterEP7QObjectP6QEvent@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DPlatformHandle11qt_metacallEN11QMetaObject4CallEiPPv@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DPlatformHandle11qt_metacastEPKc@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DPlatformHandle11setClipPathERK12QPainterPath@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DPlatformHandle12setFrameMaskERK7QRegion@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DPlatformHandle12windowLeaderEv@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DPlatformHandle13isEnabledDXcbEPK7QWindow@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DPlatformHandle13pluginVersionEv@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DPlatformHandle14isDXcbPlatformEv@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DPlatformHandle14setBorderColorERK6QColor@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DPlatformHandle14setBorderWidthEi@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DPlatformHandle14setShadowColorERK6QColor@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DPlatformHandle15clipPathChangedEv@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DPlatformHandle15setShadowOffsetERK6QPoint@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DPlatformHandle15setShadowRadiusEi@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DPlatformHandle15setWindowRadiusEi@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DPlatformHandle16frameMaskChangedEv@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DPlatformHandle16staticMetaObjectE@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DPlatformHandle18borderColorChangedEv@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DPlatformHandle18borderWidthChangedEv@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DPlatformHandle18shadowColorChangedEv@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DPlatformHandle19enableDXcbForWindowEP7QWindow@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DPlatformHandle19enableDXcbForWindowEP7QWindowb@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DPlatformHandle19frameMarginsChangedEv@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DPlatformHandle19isEnabledNoTitlebarEPK7QWindow@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DPlatformHandle19setEnableBlurWindowEb@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DPlatformHandle19setEnableSystemMoveEb@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DPlatformHandle19shadowOffsetChangedEv@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DPlatformHandle19shadowRadiusChangedEv@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DPlatformHandle19windowRadiusChangedEv@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DPlatformHandle21setEnableSystemResizeEb@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DPlatformHandle21setWindowBlurAreaByWMEP7QWindowRK5QListI12QPainterPathE@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DPlatformHandle21setWindowBlurAreaByWMEP7QWindowRK7QVectorINS1_10WMBlurAreaEE@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DPlatformHandle21setWindowBlurAreaByWMERK5QListI12QPainterPathE@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DPlatformHandle21setWindowBlurAreaByWMERK7QVectorINS1_10WMBlurAreaEE@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DPlatformHandle23enableBlurWindowChangedEv@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DPlatformHandle23enableSystemMoveChangedEv@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DPlatformHandle24setTranslucentBackgroundEb@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DPlatformHandle25enableSystemResizeChangedEv@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DPlatformHandle26setAutoInputMaskByClipPathEb@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DPlatformHandle27connectHasBlurWindowChangedEP7QObjectSt8functionIFvvEE@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DPlatformHandle28translucentBackgroundChangedEv@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DPlatformHandle29setEnabledNoTitlebarForWindowEP7QWindowb@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DPlatformHandle30autoInputMaskByClipPathChangedEv@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DPlatformHandle30setDisableWindowOverrideCursorEP7QWindowb@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DPlatformHandle33connectWindowManagerChangedSignalEP7QObjectSt8functionIFvvEE@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DPlatformHandleC1EP7QWindowP7QObject@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DPlatformHandleC2EP7QWindowP7QObject@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DPlatformHandleD0Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DPlatformHandleD1Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DPlatformHandleD2Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DTaskbarControl10setCounterEbi@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DTaskbarControl10setUrgencyEb@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DTaskbarControl11qt_metacallEN11QMetaObject4CallEiPPv@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DTaskbarControl11qt_metacastEPKc@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DTaskbarControl11sendMessageERK4QMapI7QString8QVariantE@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DTaskbarControl11setProgressEbd@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DTaskbarControl14counterChangedEi@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DTaskbarControl15progressChangedEd@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DTaskbarControl16staticMetaObjectE@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DTaskbarControl17setCounterVisibleEb@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DTaskbarControl21counterVisibleChangedEb@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DTaskbarControl22progressVisibleChangedEb@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DTaskbarControlC1EP7QObject@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DTaskbarControlC2EP7QObject@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DTaskbarControlD0Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DTaskbarControlD1Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui15DTaskbarControlD2Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui16DFileDragPrivateD0Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui16DFileDragPrivateD1Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui16DFileDragPrivateD2Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui18DThumbnailProvider11qt_metacallEN11QMetaObject4CallEiPPv@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui18DThumbnailProvider11qt_metacastEPKc@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui18DThumbnailProvider12setSizeLimitERK9QMimeTypex@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui18DThumbnailProvider15createThumbnailERK9QFileInfoNS1_4SizeE@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui18DThumbnailProvider16staticMetaObjectE@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui18DThumbnailProvider19setDefaultSizeLimitEx@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui18DThumbnailProvider20appendToProduceQueueERK9QFileInfoNS1_4SizeESt8functionIFvRK7QStringEE@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui18DThumbnailProvider20removeInProduceQueueERK9QFileInfoNS1_4SizeE@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui18DThumbnailProvider3runEv@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui18DThumbnailProvider8instanceEv@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui18DThumbnailProviderC1EP7QObject@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui18DThumbnailProviderC2EP7QObject@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui18DThumbnailProviderD0Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui18DThumbnailProviderD1Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui18DThumbnailProviderD2Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui18DWindowGroupLeader12removeWindowEP7QWindow@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui18DWindowGroupLeader9addWindowEP7QWindow@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui18DWindowGroupLeaderC1Ej@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui18DWindowGroupLeaderC2Ej@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui18DWindowGroupLeaderD1Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui18DWindowGroupLeaderD2Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui19DDndSourceInterface11qt_metacallEN11QMetaObject4CallEiPPv@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui19DDndSourceInterface11qt_metacastEPKc@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui19DDndSourceInterface12stateChangedE7QStringi@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui19DDndSourceInterface15progressChangedE7QStringi@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui19DDndSourceInterface15serverDestroyedE7QString@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui19DDndSourceInterface16staticMetaObjectE@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui19DDndSourceInterfaceD0Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui19DDndSourceInterfaceD1Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui19DDndSourceInterfaceD2Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui19DSvgRendererPrivateC1EPNS_4Core7DObjectE@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui19DSvgRendererPrivateC2EPNS_4Core7DObjectE@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui19DSvgRendererPrivateD0Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui19DSvgRendererPrivateD1Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui19DSvgRendererPrivateD2Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui20DWindowManagerHelper11qt_metacallEN11QMetaObject4CallEiPPv@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui20DWindowManagerHelper11qt_metacastEPKc@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui20DWindowManagerHelper16staticMetaObjectE@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui20DWindowManagerHelper17getMotifFunctionsEPK7QWindow@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui20DWindowManagerHelper17setMotifFunctionsEPK7QWindow6QFlagsINS1_13MotifFunctionEE@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui20DWindowManagerHelper17setMotifFunctionsEPK7QWindow6QFlagsINS1_13MotifFunctionEEb@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui20DWindowManagerHelper17windowListChangedEv@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui20DWindowManagerHelper19getMotifDecorationsEPK7QWindow@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui20DWindowManagerHelper19hasCompositeChangedEv@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui20DWindowManagerHelper19setMotifDecorationsEPK7QWindow6QFlagsINS1_15MotifDecorationEE@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui20DWindowManagerHelper19setMotifDecorationsEPK7QWindow6QFlagsINS1_15MotifDecorationEEb@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui20DWindowManagerHelper20hasBlurWindowChangedEv@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui20DWindowManagerHelper20hasNoTitlebarChangedEv@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui20DWindowManagerHelper20windowManagerChangedEv@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui20DWindowManagerHelper21popupSystemWindowMenuEPK7QWindow@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui20DWindowManagerHelper25windowMotifWMHintsChangedEj@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui20DWindowManagerHelper8instanceEv@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui20DWindowManagerHelperC1EP7QObject@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui20DWindowManagerHelperC2EP7QObject@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui20DWindowManagerHelperD0Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui20DWindowManagerHelperD1Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui20DWindowManagerHelperD2Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui21DDndClientSignalRelay11qt_metacallEN11QMetaObject4CallEiPPv@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui21DDndClientSignalRelay11qt_metacastEPKc@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui21DDndClientSignalRelay12stateChangedE7QStringi@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui21DDndClientSignalRelay15progressChangedE7QStringi@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui21DDndClientSignalRelay15serverDestroyedE7QString@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui21DDndClientSignalRelay16staticMetaObjectE@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui21DDndClientSignalRelay8relayrefE@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui21DDndClientSignalRelayD0Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui21DDndClientSignalRelayD1Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui21DDndClientSignalRelayD2Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui21DForeignWindowPrivateD0Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui21DForeignWindowPrivateD1Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui21DForeignWindowPrivateD2Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui21DGuiApplicationHelper10blendColorERK6QColorS4_@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui21DGuiApplicationHelper10initializeEv@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui21DGuiApplicationHelper11adjustColorERK6QColoraaaaaaa@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui21DGuiApplicationHelper11qt_metacallEN11QMetaObject4CallEiPPv@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui21DGuiApplicationHelper11qt_metacastEPKc@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui21DGuiApplicationHelper11toColorTypeERK6QColor@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui21DGuiApplicationHelper11toColorTypeERK8QPalette@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui21DGuiApplicationHelper12fetchPaletteEPKNS0_14DPlatformThemeE@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui21DGuiApplicationHelper12setThemeTypeENS1_9ColorTypeE@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui21DGuiApplicationHelper14setPaletteTypeENS1_9ColorTypeE@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui21DGuiApplicationHelper15generatePaletteERNS0_8DPaletteENS1_9ColorTypeE@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui21DGuiApplicationHelper15standardPaletteENS1_9ColorTypeE@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui21DGuiApplicationHelper16staticMetaObjectE@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui21DGuiApplicationHelper16themeTypeChangedENS1_9ColorTypeE@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui21DGuiApplicationHelper17isXWindowPlatformEv@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui21DGuiApplicationHelper17setSingleInstanceERK7QStringNS1_11SingleScopeE@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui21DGuiApplicationHelper18newProcessInstanceExRK11QStringList@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui21DGuiApplicationHelper18paletteTypeChangedENS1_9ColorTypeE@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui21DGuiApplicationHelper20generatePaletteColorERNS0_8DPaletteEN8QPalette9ColorRoleENS1_9ColorTypeE@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui21DGuiApplicationHelper20generatePaletteColorERNS0_8DPaletteENS2_9ColorTypeENS1_9ColorTypeE@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui21DGuiApplicationHelper21setApplicationPaletteERKNS0_8DPaletteE@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui21DGuiApplicationHelper23registerInstanceCreatorEPFPS1_vE@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui21DGuiApplicationHelper24setUseInactiveColorGroupEb@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui21DGuiApplicationHelper25setSingelInstanceIntervalEi@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui21DGuiApplicationHelper25setSingleInstanceIntervalEi@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui21DGuiApplicationHelper26setColorCompositingEnabledEb@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui21DGuiApplicationHelper8instanceEv@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui21DGuiApplicationHelperC1Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui21DGuiApplicationHelperC2Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui21DGuiApplicationHelperD0Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui21DGuiApplicationHelperD1Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui21DGuiApplicationHelperD2Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui21DPlatformThemePrivate16onQtColorChangedEN8QPalette9ColorRoleERK6QColor@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui21DPlatformThemePrivate17onDtkColorChangedENS0_8DPalette9ColorTypeERK6QColor@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui21DPlatformThemePrivate20notifyPaletteChangedEv@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui21DPlatformThemePrivate25_q_onThemePropertyChangedERK10QByteArrayRK8QVariant@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui21DPlatformThemePrivateC1EPNS0_14DPlatformThemeE@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui21DPlatformThemePrivateC2EPNS0_14DPlatformThemeE@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui21DPlatformThemePrivateD0Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui21DPlatformThemePrivateD1Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui21DPlatformThemePrivateD2Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui21DRegionMonitorPrivate11_q_KeyPressERK7QStringiiS4_@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui21DRegionMonitorPrivate13_q_CursorMoveEiiRK7QString@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui21DRegionMonitorPrivate13_q_KeyReleaseERK7QStringiiS4_@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui21DRegionMonitorPrivate14_q_ButtonPressEiiiRK7QString@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui21DRegionMonitorPrivate16_q_ButtonReleaseEiiiRK7QString@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui21DRegionMonitorPrivate21registerMonitorRegionEv@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui21DRegionMonitorPrivate23unregisterMonitorRegionEv@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui21DRegionMonitorPrivate4initEv@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui21DRegionMonitorPrivateC1EPNS0_14DRegionMonitorE@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui21DRegionMonitorPrivateC2EPNS0_14DRegionMonitorE@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui21DRegionMonitorPrivateD0Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui21DRegionMonitorPrivateD1Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui21DRegionMonitorPrivateD2Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui21DWindowManagerHelper_D0Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui21DWindowManagerHelper_D1Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui21DWindowManagerHelper_D2Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui22DFileDragClientPrivate13connectionmapE@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui22DFileDragClientPrivate8ifacemapE@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui22DFileDragClientPrivateD0Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui22DFileDragClientPrivateD1Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui22DFileDragClientPrivateD2Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui22DFileDragServerPrivate10dbusifinstE@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui22DFileDragServerPrivate13writeMimeDataEP9QMimeData@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui22DFileDragServerPrivate9servermapE@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui22DFileDragServerPrivateC1EPNS0_15DFileDragServerE@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui22DFileDragServerPrivateC2EPNS0_15DFileDragServerE@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui22DFileDragServerPrivateD0Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui22DFileDragServerPrivateD1Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui22DFileDragServerPrivateD2Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui22DNativeSettingsPrivate4initEPK11QMetaObjectj@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui22DNativeSettingsPrivateC1EPNS0_15DNativeSettingsERK10QByteArray@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui22DNativeSettingsPrivateC2EPNS0_15DNativeSettingsERK10QByteArray@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui22DNativeSettingsPrivateD0Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui22DNativeSettingsPrivateD1Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui22DNativeSettingsPrivateD2Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui22DTaskbarControlPrivateC1EPNS0_15DTaskbarControlE@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui22DTaskbarControlPrivateC2EPNS0_15DTaskbarControlE@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui22DTaskbarControlPrivateD0Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui22DTaskbarControlPrivateD1Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui22DTaskbarControlPrivateD2Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui22_DGuiApplicationHelper14defaultCreatorEv@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui22_DGuiApplicationHelper7creatorE@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui25DThumbnailProviderPrivate11ProduceInfoD1Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui25DThumbnailProviderPrivate11ProduceInfoD2Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui25DThumbnailProviderPrivate20hasThumbnailMimeHashE@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui25DThumbnailProviderPrivate4initEv@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui25DThumbnailProviderPrivateC1EPNS0_18DThumbnailProviderE@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui25DThumbnailProviderPrivateC2EPNS0_18DThumbnailProviderE@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui25DThumbnailProviderPrivateD0Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui25DThumbnailProviderPrivateD1Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui25DThumbnailProviderPrivateD2Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui25DWindowGroupLeaderPrivate17ensureGroupLeaderEv@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui25DWindowGroupLeaderPrivate20setWindowGroupLeaderEjj@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui27DWindowManagerHelperPrivateD0Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui27DWindowManagerHelperPrivateD1Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui27DWindowManagerHelperPrivateD2Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui28DGuiApplicationHelperPrivate15initApplicationEP15QGuiApplication@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui28DGuiApplicationHelperPrivate16compositingColorE@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui28DGuiApplicationHelperPrivate16useInactiveColorE@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui28DGuiApplicationHelperPrivate21notifyAppThemeChangedEP15QGuiApplicationb@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui28DGuiApplicationHelperPrivate21staticInitApplicationEv@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui28DGuiApplicationHelperPrivate23_q_initApplicationThemeEb@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui28DGuiApplicationHelperPrivate4initEv@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui28DGuiApplicationHelperPrivate8waitTimeE@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui28DGuiApplicationHelperPrivateC1EPNS0_21DGuiApplicationHelperE@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui28DGuiApplicationHelperPrivateC2EPNS0_21DGuiApplicationHelperE@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui28DGuiApplicationHelperPrivateD0Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui28DGuiApplicationHelperPrivateD1Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui28DGuiApplicationHelperPrivateD2Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui29DFileThumbnailProviderPrivateD0Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui29DFileThumbnailProviderPrivateD1Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui29DFileThumbnailProviderPrivateD2Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui8DPalette8setBrushEN8QPalette10ColorGroupENS1_9ColorTypeERK6QBrush@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui8DPaletteC1ERK8QPalette@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui8DPaletteC1ERKS1_@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui8DPaletteC1Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui8DPaletteC2ERK8QPalette@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui8DPaletteC2ERKS1_@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui8DPaletteC2Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui8DPaletteD1Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui8DPaletteD2Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui8DPaletteaSERKS1_@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui9DFileDrag11qt_metacallEN11QMetaObject4CallEiPPv@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui9DFileDrag11qt_metacastEPKc@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui9DFileDrag11setMimeDataEP9QMimeData@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui9DFileDrag16staticMetaObjectE@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui9DFileDrag16targetUrlChangedE4QUrl@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui9DFileDrag9targetUrlEv@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui9DFileDragC1EP7QObjectPNS0_15DFileDragServerE@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui9DFileDragC2EP7QObjectPNS0_15DFileDragServerE@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui9DFileDragD0Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui9DFileDragD1Ev@Base 5.2.2-1
|
||||
_ZN3Dtk3Gui9DFileDragD2Ev@Base 5.2.2-1
|
||||
_ZN4QMapI7QString8QVariantE13detach_helperEv@Base 5.2.2-1
|
||||
_ZN4QMapI7QString8QVariantE6insertERKS0_RKS1_@Base 5.2.2-1
|
||||
_ZN4QMapI7QString8QVariantED1Ev@Base 5.2.2-1
|
||||
_ZN4QMapI7QString8QVariantED2Ev@Base 5.2.2-1
|
||||
_ZN4QSetI7QStringED1Ev@Base 5.2.2-1
|
||||
_ZN4QSetI7QStringED2Ev@Base 5.2.2-1
|
||||
_ZN5QHashI5QPairI7QStringN3Dtk3Gui18DThumbnailProvider4SizeEE15QHashDummyValueE11deleteNode2EPN9QHashData4NodeE@Base 5.2.2-1
|
||||
_ZN5QHashI5QPairI7QStringN3Dtk3Gui18DThumbnailProvider4SizeEE15QHashDummyValueE13duplicateNodeEPN9QHashData4NodeEPv@Base 5.2.2-1
|
||||
_ZN5QHashI5QPairI7QStringN3Dtk3Gui18DThumbnailProvider4SizeEE15QHashDummyValueE6removeERKS6_@Base 5.2.2-1
|
||||
_ZN5QHashI7QString12QWeakPointerI14QDBusInterfaceEE11deleteNode2EPN9QHashData4NodeE@Base 5.2.2-1
|
||||
_ZN5QHashI7QString12QWeakPointerI14QDBusInterfaceEE13duplicateNodeEPN9QHashData4NodeEPv@Base 5.2.2-1
|
||||
_ZN5QHashI7QString12QWeakPointerI14QDBusInterfaceEE6removeERKS0_@Base 5.2.2-1
|
||||
_ZN5QHashI7QString12QWeakPointerI14QDBusInterfaceEED1Ev@Base 5.2.2-1
|
||||
_ZN5QHashI7QString12QWeakPointerI14QDBusInterfaceEED2Ev@Base 5.2.2-1
|
||||
_ZN5QHashI7QString15QHashDummyValueE11deleteNode2EPN9QHashData4NodeE@Base 5.2.2-1
|
||||
_ZN5QHashI7QString15QHashDummyValueE13duplicateNodeEPN9QHashData4NodeEPv@Base 5.2.2-1
|
||||
_ZN5QHashI7QStringPN3Dtk3Gui15DFileDragClientEE11deleteNode2EPN9QHashData4NodeE@Base 5.2.2-1
|
||||
_ZN5QHashI7QStringPN3Dtk3Gui15DFileDragClientEE13duplicateNodeEPN9QHashData4NodeEPv@Base 5.2.2-1
|
||||
_ZN5QHashI7QStringPN3Dtk3Gui15DFileDragClientEE6removeERKS0_@Base 5.2.2-1
|
||||
_ZN5QHashI7QStringPN3Dtk3Gui15DFileDragClientEED1Ev@Base 5.2.2-1
|
||||
_ZN5QHashI7QStringPN3Dtk3Gui15DFileDragClientEED2Ev@Base 5.2.2-1
|
||||
_ZN5QHashI7QStringPN3Dtk3Gui15DFileDragServerEE11deleteNode2EPN9QHashData4NodeE@Base 5.2.2-1
|
||||
_ZN5QHashI7QStringPN3Dtk3Gui15DFileDragServerEE13duplicateNodeEPN9QHashData4NodeEPv@Base 5.2.2-1
|
||||
_ZN5QHashI7QStringPN3Dtk3Gui15DFileDragServerEE6removeERKS0_@Base 5.2.2-1
|
||||
_ZN5QHashI7QStringPN3Dtk3Gui15DFileDragServerEED1Ev@Base 5.2.2-1
|
||||
_ZN5QHashI7QStringPN3Dtk3Gui15DFileDragServerEED2Ev@Base 5.2.2-1
|
||||
_ZN5QHashI7QStringiE11deleteNode2EPN9QHashData4NodeE@Base 5.2.2-1
|
||||
_ZN5QHashI7QStringiE13duplicateNodeEPN9QHashData4NodeEPv@Base 5.2.2-1
|
||||
_ZN5QHashI9QMimeTypexE11deleteNode2EPN9QHashData4NodeE@Base 5.2.2-1
|
||||
_ZN5QHashI9QMimeTypexE13duplicateNodeEPN9QHashData4NodeEPv@Base 5.2.2-1
|
||||
_ZN5QListI10QByteArrayEC1ERKS1_@Base 5.2.2-1
|
||||
_ZN5QListI10QByteArrayEC2ERKS1_@Base 5.2.2-1
|
||||
_ZN5QListI10QByteArrayED1Ev@Base 5.2.2-1
|
||||
_ZN5QListI10QByteArrayED2Ev@Base 5.2.2-1
|
||||
_ZN5QListI12QPainterPathE13detach_helperEi@Base 5.2.2-1
|
||||
_ZN5QListI12QPainterPathE18detach_helper_growEii@Base 5.2.2-1
|
||||
_ZN5QListI12QPainterPathE6appendERKS0_@Base 5.2.2-1
|
||||
_ZN5QListI12QPainterPathEC1ERKS1_@Base 5.2.2-1
|
||||
_ZN5QListI12QPainterPathEC2ERKS1_@Base 5.2.2-1
|
||||
_ZN5QListI12QPainterPathED1Ev@Base 5.2.2-1
|
||||
_ZN5QListI12QPainterPathED2Ev@Base 5.2.2-1
|
||||
_ZN5QListI5QRectEC1ERKS1_@Base 5.2.2-1
|
||||
_ZN5QListI5QRectEC2ERKS1_@Base 5.2.2-1
|
||||
_ZN5QListI5QRectED1Ev@Base 5.2.2-1
|
||||
_ZN5QListI5QRectED2Ev@Base 5.2.2-1
|
||||
_ZN5QListI7QStringE18detach_helper_growEii@Base 5.2.2-1
|
||||
_ZN5QListI7QStringE5clearEv@Base 5.2.2-1
|
||||
_ZN5QListI7QStringE6appendERKS0_@Base 5.2.2-1
|
||||
_ZN5QListI7QStringED1Ev@Base 5.2.2-1
|
||||
_ZN5QListI7QStringED2Ev@Base 5.2.2-1
|
||||
_ZN5QListI8QPointerI7QWindowEE13detach_helperEi@Base 5.2.2-1
|
||||
_ZN5QListI8QPointerI7QWindowEE18detach_helper_growEii@Base 5.2.2-1
|
||||
_ZN5QListI8QPointerI7QWindowEE6appendERKS2_@Base 5.2.2-1
|
||||
_ZN5QListI8QPointerI7QWindowEED1Ev@Base 5.2.2-1
|
||||
_ZN5QListI8QPointerI7QWindowEED2Ev@Base 5.2.2-1
|
||||
_ZN5QListI8QVariantE18detach_helper_growEii@Base 5.2.2-1
|
||||
_ZN5QListI8QVariantE6appendERKS0_@Base 5.2.2-1
|
||||
_ZN5QListI8QVariantED1Ev@Base 5.2.2-1
|
||||
_ZN5QListI8QVariantED2Ev@Base 5.2.2-1
|
||||
_ZN5QListIN3Dtk3Gui25DThumbnailProviderPrivate11ProduceInfoEE13detach_helperEi@Base 5.2.2-1
|
||||
_ZN5QListIN3Dtk3Gui25DThumbnailProviderPrivate11ProduceInfoEE18detach_helper_growEii@Base 5.2.2-1
|
||||
_ZN5QListIN3Dtk3Gui25DThumbnailProviderPrivate11ProduceInfoEE6appendERKS3_@Base 5.2.2-1
|
||||
_ZN5QListIN3Dtk3Gui25DThumbnailProviderPrivate11ProduceInfoEED1Ev@Base 5.2.2-1
|
||||
_ZN5QListIN3Dtk3Gui25DThumbnailProviderPrivate11ProduceInfoEED2Ev@Base 5.2.2-1
|
||||
_ZN5QListIP7QScreenE13detach_helperEi@Base 5.2.2-1
|
||||
_ZN5QListIP7QScreenED1Ev@Base 5.2.2-1
|
||||
_ZN5QListIP7QScreenED2Ev@Base 5.2.2-1
|
||||
_ZN5QListIP7QWindowED1Ev@Base 5.2.2-1
|
||||
_ZN5QListIP7QWindowED2Ev@Base 5.2.2-1
|
||||
_ZN5QListIPN3Dtk3Gui14DForeignWindowEE13detach_helperEi@Base 5.2.2-1
|
||||
_ZN5QListIPN3Dtk3Gui14DForeignWindowEE18detach_helper_growEii@Base 5.2.2-1
|
||||
_ZN5QListIPN3Dtk3Gui14DForeignWindowEE6appendERKS3_@Base 5.2.2-1
|
||||
_ZN5QListIPN3Dtk3Gui14DForeignWindowEEC1ERKS4_@Base 5.2.2-1
|
||||
_ZN5QListIPN3Dtk3Gui14DForeignWindowEEC2ERKS4_@Base 5.2.2-1
|
||||
_ZN5QListIPN3Dtk3Gui14DForeignWindowEED1Ev@Base 5.2.2-1
|
||||
_ZN5QListIPN3Dtk3Gui14DForeignWindowEED2Ev@Base 5.2.2-1
|
||||
_ZN5QListIyE18detach_helper_growEii@Base 5.2.2-1
|
||||
_ZN5QListIyE6appendERKy@Base 5.2.2-1
|
||||
_ZN5QListIyED1Ev@Base 5.2.2-1
|
||||
_ZN5QListIyED2Ev@Base 5.2.2-1
|
||||
_ZN6QColorC1EPKc@Base 5.2.2-1
|
||||
_ZN6QColorC2EPKc@Base 5.2.2-1
|
||||
_ZN7QStringD1Ev@Base 5.2.2-1
|
||||
_ZN7QStringD2Ev@Base 5.2.2-1
|
||||
_ZN7QVectorIN3Dtk3Gui15DPlatformHandle10WMBlurAreaEE11reallocDataEii6QFlagsIN10QArrayData16AllocationOptionEE@Base 5.2.2-1
|
||||
_ZN7QVectorIN3Dtk3Gui15DPlatformHandle10WMBlurAreaEE6appendEOS3_@Base 5.2.2-1
|
||||
_ZN7QVectorIjE11reallocDataEii6QFlagsIN10QArrayData16AllocationOptionEE@Base 5.2.2-1
|
||||
_ZN7QVectorIjEC1ERKS0_@Base 5.2.2-1
|
||||
_ZN7QVectorIjEC2ERKS0_@Base 5.2.2-1
|
||||
_ZN8QMapNodeI7QString8QVariantE14destroySubTreeEv@Base 5.2.2-1
|
||||
_ZN9QtPrivate16ConverterFunctorI5QListI12QPainterPathEN17QtMetaTypePrivate23QSequentialIterableImplENS4_33QSequentialIterableConvertFunctorIS3_EEE7convertEPKNS_25AbstractConverterFunctionEPKvPv@Base 5.2.2-1
|
||||
_ZN9QtPrivate16ConverterFunctorI5QListI12QPainterPathEN17QtMetaTypePrivate23QSequentialIterableImplENS4_33QSequentialIterableConvertFunctorIS3_EEED1Ev@Base 5.2.2-1
|
||||
_ZN9QtPrivate16ConverterFunctorI5QListI12QPainterPathEN17QtMetaTypePrivate23QSequentialIterableImplENS4_33QSequentialIterableConvertFunctorIS3_EEED2Ev@Base 5.2.2-1
|
||||
_ZN9QtPrivate16ConverterFunctorI5QListI5QRectEN17QtMetaTypePrivate23QSequentialIterableImplENS4_33QSequentialIterableConvertFunctorIS3_EEE7convertEPKNS_25AbstractConverterFunctionEPKvPv@Base 5.2.2-1
|
||||
_ZN9QtPrivate16ConverterFunctorI5QListI5QRectEN17QtMetaTypePrivate23QSequentialIterableImplENS4_33QSequentialIterableConvertFunctorIS3_EEED1Ev@Base 5.2.2-1
|
||||
_ZN9QtPrivate16ConverterFunctorI5QListI5QRectEN17QtMetaTypePrivate23QSequentialIterableImplENS4_33QSequentialIterableConvertFunctorIS3_EEED2Ev@Base 5.2.2-1
|
||||
_ZN9QtPrivate16ConverterFunctorI7QVectorIjEN17QtMetaTypePrivate23QSequentialIterableImplENS3_33QSequentialIterableConvertFunctorIS2_EEE7convertEPKNS_25AbstractConverterFunctionEPKvPv@Base 5.2.2-1
|
||||
_ZN9QtPrivate16ConverterFunctorI7QVectorIjEN17QtMetaTypePrivate23QSequentialIterableImplENS3_33QSequentialIterableConvertFunctorIS2_EEED1Ev@Base 5.2.2-1
|
||||
_ZN9QtPrivate16ConverterFunctorI7QVectorIjEN17QtMetaTypePrivate23QSequentialIterableImplENS3_33QSequentialIterableConvertFunctorIS2_EEED2Ev@Base 5.2.2-1
|
||||
_ZN9QtPrivate16StreamStateSaverD1Ev@Base 5.2.2-1
|
||||
_ZN9QtPrivate16StreamStateSaverD2Ev@Base 5.2.2-1
|
||||
_ZN9QtPrivate18QFunctorSlotObjectISt5_BindIFMN3Dtk3Gui21DPlatformThemePrivateEFvN8QPalette9ColorRoleERK6QColorEPS4_S6_St12_PlaceholderILi1EEEELi1ENS_4ListIJS7_EEEvE4implEiPNS_15QSlotObjectBaseEP7QObjectPPvPb@Base 5.2.2-1
|
||||
_ZN9QtPrivate18QFunctorSlotObjectISt5_BindIFMN3Dtk3Gui21DPlatformThemePrivateEFvNS3_8DPalette9ColorTypeERK6QColorEPS4_S6_St12_PlaceholderILi1EEEELi1ENS_4ListIJS7_EEEvE4implEiPNS_15QSlotObjectBaseEP7QObjectPPvPb@Base 5.2.2-1
|
||||
_ZN9QtPrivate18QFunctorSlotObjectISt5_BindIFMN3Dtk3Gui28DGuiApplicationHelperPrivateEFvP15QGuiApplicationbEPS4_S6_bEELi1ENS_4ListIJ10QByteArrayEEEvE4implEiPNS_15QSlotObjectBaseEP7QObjectPPvPb@Base 5.2.2-1
|
||||
_ZN9QtPrivate18QFunctorSlotObjectISt5_BindIFMN3Dtk3Gui28DGuiApplicationHelperPrivateEFvP15QGuiApplicationbEPS4_S6_bEELi1ENS_4ListIJ6QColorEEEvE4implEiPNS_15QSlotObjectBaseEP7QObjectPPvPb@Base 5.2.2-1
|
||||
_ZN9QtPrivate18QFunctorSlotObjectISt5_BindIFMN3Dtk3Gui28DGuiApplicationHelperPrivateEFvP15QGuiApplicationbEPS4_S6_bEELi1ENS_4ListIJNS3_8DPaletteEEEEvE4implEiPNS_15QSlotObjectBaseEP7QObjectPPvPb@Base 5.2.2-1
|
||||
_ZN9QtPrivate18QFunctorSlotObjectISt8functionIFvvEELi0ENS_4ListIJEEEvE4implEiPNS_15QSlotObjectBaseEP7QObjectPPvPb@Base 5.2.2-1
|
||||
_ZN9QtPrivate23readArrayBasedContainerI5QListI7QStringEEER11QDataStreamS5_RT_@Base 5.2.2-1
|
||||
_ZN9QtPrivate24writeSequentialContainerI5QListI7QStringEEER11QDataStreamS5_RKT_@Base 5.2.2-1
|
||||
_ZN9QtPrivate8RefCount3refEv@Base 5.2.2-1
|
||||
_ZNK34ComDeepinApiXEventMonitorInterface10metaObjectEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui12DSvgRenderer11defaultSizeEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui12DSvgRenderer13elementExistsERK7QString@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui12DSvgRenderer15boundsOnElementERK7QString@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui12DSvgRenderer7isValidEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui12DSvgRenderer7toImageE5QSizeRK7QString@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui12DSvgRenderer7viewBoxEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui12DSvgRenderer8viewBoxFEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui14DForeignWindow10metaObjectEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui14DForeignWindow3pidEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui14DForeignWindow7wmClassEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui14DPlatformTheme10brightTextEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui14DPlatformTheme10buttonTextEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui14DPlatformTheme10darkLivelyEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui14DPlatformTheme10metaObjectEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui14DPlatformTheme10textLivelyEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui14DPlatformTheme10windowTextEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui14DPlatformTheme11activeColorEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui14DPlatformTheme11cursorBlinkEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui14DPlatformTheme11dotsPerInchERK7QString@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui14DPlatformTheme11frameBorderEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui14DPlatformTheme11gtkFontNameEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui14DPlatformTheme11lightLivelyEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui14DPlatformTheme11linkVisitedEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui14DPlatformTheme11parentThemeEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui14DPlatformTheme11textWarningEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui14DPlatformTheme11toolTipBaseEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui14DPlatformTheme11toolTipTextEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui14DPlatformTheme12fetchPaletteERKNS0_8DPaletteEPb@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui14DPlatformTheme12monoFontNameEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui14DPlatformTheme13alternateBaseEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui14DPlatformTheme13fontPointSizeEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui14DPlatformTheme13iconThemeNameEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui14DPlatformTheme14isValidPaletteEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui14DPlatformTheme14itemBackgroundEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui14DPlatformTheme14soundThemeNameEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui14DPlatformTheme15cursorBlinkTimeEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui14DPlatformTheme15doubleClickTimeEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui14DPlatformTheme15highlightedTextEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui14DPlatformTheme16dndDragThresholdEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui14DPlatformTheme18cursorBlinkTimeoutEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui14DPlatformTheme19doubleClickDistanceEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui14DPlatformTheme3midEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui14DPlatformTheme4baseEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui14DPlatformTheme4darkEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui14DPlatformTheme4linkEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui14DPlatformTheme4textEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui14DPlatformTheme5lightEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui14DPlatformTheme6buttonEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui14DPlatformTheme6shadowEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui14DPlatformTheme6windowEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui14DPlatformTheme7isValidEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui14DPlatformTheme7paletteEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui14DPlatformTheme8fontNameEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui14DPlatformTheme8midlightEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui14DPlatformTheme8textTipsEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui14DPlatformTheme9highlightEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui14DPlatformTheme9textTitleEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui14DPlatformTheme9themeNameEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui14DRegionMonitor10cursorMoveERK6QPoint@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui14DRegionMonitor10keyReleaseERK7QString@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui14DRegionMonitor10metaObjectEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui14DRegionMonitor10registeredEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui14DRegionMonitor11buttonPressERK6QPointi@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui14DRegionMonitor13buttonReleaseERK6QPointi@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui14DRegionMonitor13watchedRegionEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui14DRegionMonitor14coordinateTypeEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui14DRegionMonitor21coordinateTypeChangedENS1_14CoordinateTypeE@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui14DRegionMonitor8keyPressERK7QString@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui15DFileDragClient10metaObjectEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui15DFileDragClient5stateEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui15DFileDragClient8progressEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui15DFileDragServer10metaObjectEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui15DFileDragServer10targetDataERK7QString@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui15DNativeSettings10getSettingERK10QByteArray@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui15DNativeSettings10metaObjectEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui15DNativeSettings7allKeysEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui15DNativeSettings7isValidEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui15DPlatformHandle10metaObjectEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui15DPlatformHandle11borderColorEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui15DPlatformHandle11borderWidthEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui15DPlatformHandle11shadowColorEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui15DPlatformHandle12frameMarginsEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui15DPlatformHandle12realWindowIdEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui15DPlatformHandle12shadowOffsetEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui15DPlatformHandle12shadowRadiusEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui15DPlatformHandle12windowRadiusEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui15DPlatformHandle16enableBlurWindowEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui15DPlatformHandle16enableSystemMoveEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui15DPlatformHandle18enableSystemResizeEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui15DPlatformHandle21translucentBackgroundEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui15DPlatformHandle23autoInputMaskByClipPathEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui15DPlatformHandle8clipPathEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui15DPlatformHandle9frameMaskEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui15DTaskbarControl10metaObjectEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui15DTaskbarControl14counterVisibleEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui15DTaskbarControl7counterEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui18DThumbnailProvider10metaObjectEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui18DThumbnailProvider11errorStringEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui18DThumbnailProvider12hasThumbnailERK9QFileInfo@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui18DThumbnailProvider12hasThumbnailERK9QMimeType@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui18DThumbnailProvider16defaultSizeLimitEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui18DThumbnailProvider16thumbnailChangedERK7QStringS4_@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui18DThumbnailProvider17thumbnailFilePathERK9QFileInfoNS1_4SizeE@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui18DThumbnailProvider21createThumbnailFailedERK7QString@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui18DThumbnailProvider23createThumbnailFinishedERK7QStringS4_@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui18DThumbnailProvider9sizeLimitERK9QMimeType@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui18DWindowGroupLeader13groupLeaderIdEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui18DWindowGroupLeader14clientLeaderIdEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui19DDndSourceInterface10metaObjectEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui19DSvgRendererPrivate8getImageERK5QSizeRK7QString@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui20DWindowManagerHelper10metaObjectEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui20DWindowManagerHelper12hasCompositeEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui20DWindowManagerHelper13hasBlurWindowEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui20DWindowManagerHelper13hasNoTitlebarEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui20DWindowManagerHelper15allWindowIdListEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui20DWindowManagerHelper17windowManagerNameEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui20DWindowManagerHelper23currentWorkspaceWindowsEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui20DWindowManagerHelper23windowManagerNameStringEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui20DWindowManagerHelper28currentWorkspaceWindowIdListEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui21DDndClientSignalRelay10metaObjectEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui21DGuiApplicationHelper10metaObjectEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui21DGuiApplicationHelper11paletteTypeEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui21DGuiApplicationHelper11systemThemeEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui21DGuiApplicationHelper11windowThemeEP7QWindow@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui21DGuiApplicationHelper13windowPaletteEP7QWindow@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui21DGuiApplicationHelper16applicationThemeEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui21DGuiApplicationHelper18applicationPaletteEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui21DGuiApplicationHelper9themeTypeEv@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui21DRegionMonitorPrivate22deviceScaledCoordinateERK6QPointd@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui25DThumbnailProviderPrivate14sizeToFilePathENS0_18DThumbnailProvider4SizeE@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui28DGuiApplicationHelperPrivate10initWindowEP7QWindow@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui8DPalette5brushEN8QPalette10ColorGroupENS1_9ColorTypeE@Base 5.2.2-1
|
||||
_ZNK3Dtk3Gui9DFileDrag10metaObjectEv@Base 5.2.2-1
|
||||
_ZNK5QHashI5QPairI7QStringN3Dtk3Gui18DThumbnailProvider4SizeEE15QHashDummyValueE8findNodeERKS6_Pj@Base 5.2.2-1
|
||||
_ZNK5QHashI5QPairI7QStringN3Dtk3Gui18DThumbnailProvider4SizeEE15QHashDummyValueE8findNodeERKS6_j@Base 5.2.2-1
|
||||
_ZNK5QHashI7QString12QWeakPointerI14QDBusInterfaceEE8findNodeERKS0_Pj@Base 5.2.2-1
|
||||
_ZNK5QHashI7QString12QWeakPointerI14QDBusInterfaceEE8findNodeERKS0_j@Base 5.2.2-1
|
||||
_ZNK5QHashI7QString15QHashDummyValueE8findNodeERKS0_j@Base 5.2.2-1
|
||||
_ZNK5QHashI7QStringPN3Dtk3Gui15DFileDragClientEE8findNodeERKS0_Pj@Base 5.2.2-1
|
||||
_ZNK5QHashI7QStringPN3Dtk3Gui15DFileDragClientEE8findNodeERKS0_j@Base 5.2.2-1
|
||||
_ZNK5QHashI7QStringPN3Dtk3Gui15DFileDragServerEE8findNodeERKS0_Pj@Base 5.2.2-1
|
||||
_ZNK5QHashI7QStringPN3Dtk3Gui15DFileDragServerEE8findNodeERKS0_j@Base 5.2.2-1
|
||||
_ZNK5QHashI7QStringiE8findNodeERKS0_j@Base 5.2.2-1
|
||||
_ZNK5QHashI9QMimeTypexE8findNodeERKS0_j@Base 5.2.2-1
|
||||
_ZNK7QWindow4sizeEv@Base 5.2.2-1
|
||||
_ZNK8QMapDataI7QString8QVariantE8findNodeERKS0_@Base 5.2.2-1
|
||||
_ZNK8QMapNodeI7QString8QVariantE4copyEP8QMapDataIS0_S1_E@Base 5.2.2-1
|
||||
_ZNSt8functionIFvRK7QStringEEC1ERKS4_@Base 5.2.2-1
|
||||
_ZNSt8functionIFvRK7QStringEEC2ERKS4_@Base 5.2.2-1
|
||||
_ZNSt8functionIFvvEEC1ERKS1_@Base 5.2.2-1
|
||||
_ZNSt8functionIFvvEEC2ERKS1_@Base 5.2.2-1
|
||||
_ZTI34ComDeepinApiXEventMonitorInterface@Base 5.2.2-1
|
||||
_ZTIN29QWindowSystemInterfacePrivate16ThemeChangeEventE@Base 5.2.2-1
|
||||
_ZTIN29QWindowSystemInterfacePrivate17WindowSystemEventE@Base 5.2.2-1
|
||||
_ZTIN3Dtk3Gui12DSvgRendererE@Base 5.2.2-1
|
||||
_ZTIN3Dtk3Gui14DForeignWindowE@Base 5.2.2-1
|
||||
_ZTIN3Dtk3Gui14DPlatformThemeE@Base 5.2.2-1
|
||||
_ZTIN3Dtk3Gui14DRegionMonitorE@Base 5.2.2-1
|
||||
_ZTIN3Dtk3Gui15DFileDragClientE@Base 5.2.2-1
|
||||
_ZTIN3Dtk3Gui15DFileDragServerE@Base 5.2.2-1
|
||||
_ZTIN3Dtk3Gui15DNativeSettingsE@Base 5.2.2-1
|
||||
_ZTIN3Dtk3Gui15DPlatformHandleE@Base 5.2.2-1
|
||||
_ZTIN3Dtk3Gui15DTaskbarControlE@Base 5.2.2-1
|
||||
_ZTIN3Dtk3Gui16DFileDragPrivateE@Base 5.2.2-1
|
||||
_ZTIN3Dtk3Gui18DThumbnailProviderE@Base 5.2.2-1
|
||||
_ZTIN3Dtk3Gui19DDndSourceInterfaceE@Base 5.2.2-1
|
||||
_ZTIN3Dtk3Gui19DSvgRendererPrivateE@Base 5.2.2-1
|
||||
_ZTIN3Dtk3Gui20DWindowManagerHelperE@Base 5.2.2-1
|
||||
_ZTIN3Dtk3Gui21DDndClientSignalRelayE@Base 5.2.2-1
|
||||
_ZTIN3Dtk3Gui21DForeignWindowPrivateE@Base 5.2.2-1
|
||||
_ZTIN3Dtk3Gui21DGuiApplicationHelperE@Base 5.2.2-1
|
||||
_ZTIN3Dtk3Gui21DPlatformThemePrivateE@Base 5.2.2-1
|
||||
_ZTIN3Dtk3Gui21DRegionMonitorPrivateE@Base 5.2.2-1
|
||||
_ZTIN3Dtk3Gui21DWindowManagerHelper_E@Base 5.2.2-1
|
||||
_ZTIN3Dtk3Gui22DFileDragClientPrivateE@Base 5.2.2-1
|
||||
_ZTIN3Dtk3Gui22DFileDragServerPrivateE@Base 5.2.2-1
|
||||
_ZTIN3Dtk3Gui22DNativeSettingsPrivateE@Base 5.2.2-1
|
||||
_ZTIN3Dtk3Gui22DTaskbarControlPrivateE@Base 5.2.2-1
|
||||
_ZTIN3Dtk3Gui25DThumbnailProviderPrivateE@Base 5.2.2-1
|
||||
_ZTIN3Dtk3Gui27DWindowManagerHelperPrivateE@Base 5.2.2-1
|
||||
_ZTIN3Dtk3Gui28DGuiApplicationHelperPrivateE@Base 5.2.2-1
|
||||
_ZTIN3Dtk3Gui29DFileThumbnailProviderPrivateE@Base 5.2.2-1
|
||||
_ZTIN3Dtk3Gui9DFileDragE@Base 5.2.2-1
|
||||
_ZTS34ComDeepinApiXEventMonitorInterface@Base 5.2.2-1
|
||||
_ZTSN29QWindowSystemInterfacePrivate16ThemeChangeEventE@Base 5.2.2-1
|
||||
_ZTSN29QWindowSystemInterfacePrivate17WindowSystemEventE@Base 5.2.2-1
|
||||
_ZTSN3Dtk3Gui12DSvgRendererE@Base 5.2.2-1
|
||||
_ZTSN3Dtk3Gui14DForeignWindowE@Base 5.2.2-1
|
||||
_ZTSN3Dtk3Gui14DPlatformThemeE@Base 5.2.2-1
|
||||
_ZTSN3Dtk3Gui14DRegionMonitorE@Base 5.2.2-1
|
||||
_ZTSN3Dtk3Gui15DFileDragClientE@Base 5.2.2-1
|
||||
_ZTSN3Dtk3Gui15DFileDragServerE@Base 5.2.2-1
|
||||
_ZTSN3Dtk3Gui15DNativeSettingsE@Base 5.2.2-1
|
||||
_ZTSN3Dtk3Gui15DPlatformHandleE@Base 5.2.2-1
|
||||
_ZTSN3Dtk3Gui15DTaskbarControlE@Base 5.2.2-1
|
||||
_ZTSN3Dtk3Gui16DFileDragPrivateE@Base 5.2.2-1
|
||||
_ZTSN3Dtk3Gui18DThumbnailProviderE@Base 5.2.2-1
|
||||
_ZTSN3Dtk3Gui19DDndSourceInterfaceE@Base 5.2.2-1
|
||||
_ZTSN3Dtk3Gui19DSvgRendererPrivateE@Base 5.2.2-1
|
||||
_ZTSN3Dtk3Gui20DWindowManagerHelperE@Base 5.2.2-1
|
||||
_ZTSN3Dtk3Gui21DDndClientSignalRelayE@Base 5.2.2-1
|
||||
_ZTSN3Dtk3Gui21DForeignWindowPrivateE@Base 5.2.2-1
|
||||
_ZTSN3Dtk3Gui21DGuiApplicationHelperE@Base 5.2.2-1
|
||||
_ZTSN3Dtk3Gui21DPlatformThemePrivateE@Base 5.2.2-1
|
||||
_ZTSN3Dtk3Gui21DRegionMonitorPrivateE@Base 5.2.2-1
|
||||
_ZTSN3Dtk3Gui21DWindowManagerHelper_E@Base 5.2.2-1
|
||||
_ZTSN3Dtk3Gui22DFileDragClientPrivateE@Base 5.2.2-1
|
||||
_ZTSN3Dtk3Gui22DFileDragServerPrivateE@Base 5.2.2-1
|
||||
_ZTSN3Dtk3Gui22DNativeSettingsPrivateE@Base 5.2.2-1
|
||||
_ZTSN3Dtk3Gui22DTaskbarControlPrivateE@Base 5.2.2-1
|
||||
_ZTSN3Dtk3Gui25DThumbnailProviderPrivateE@Base 5.2.2-1
|
||||
_ZTSN3Dtk3Gui27DWindowManagerHelperPrivateE@Base 5.2.2-1
|
||||
_ZTSN3Dtk3Gui28DGuiApplicationHelperPrivateE@Base 5.2.2-1
|
||||
_ZTSN3Dtk3Gui29DFileThumbnailProviderPrivateE@Base 5.2.2-1
|
||||
_ZTSN3Dtk3Gui9DFileDragE@Base 5.2.2-1
|
||||
_ZTV34ComDeepinApiXEventMonitorInterface@Base 5.2.2-1
|
||||
_ZTVN29QWindowSystemInterfacePrivate16ThemeChangeEventE@Base 5.2.2-1
|
||||
_ZTVN3Dtk3Gui12DSvgRendererE@Base 5.2.2-1
|
||||
_ZTVN3Dtk3Gui14DForeignWindowE@Base 5.2.2-1
|
||||
_ZTVN3Dtk3Gui14DPlatformThemeE@Base 5.2.2-1
|
||||
_ZTVN3Dtk3Gui14DRegionMonitorE@Base 5.2.2-1
|
||||
_ZTVN3Dtk3Gui15DFileDragClientE@Base 5.2.2-1
|
||||
_ZTVN3Dtk3Gui15DFileDragServerE@Base 5.2.2-1
|
||||
_ZTVN3Dtk3Gui15DNativeSettingsE@Base 5.2.2-1
|
||||
_ZTVN3Dtk3Gui15DPlatformHandleE@Base 5.2.2-1
|
||||
_ZTVN3Dtk3Gui15DTaskbarControlE@Base 5.2.2-1
|
||||
_ZTVN3Dtk3Gui16DFileDragPrivateE@Base 5.2.2-1
|
||||
_ZTVN3Dtk3Gui18DThumbnailProviderE@Base 5.2.2-1
|
||||
_ZTVN3Dtk3Gui19DDndSourceInterfaceE@Base 5.2.2-1
|
||||
_ZTVN3Dtk3Gui19DSvgRendererPrivateE@Base 5.2.2-1
|
||||
_ZTVN3Dtk3Gui20DWindowManagerHelperE@Base 5.2.2-1
|
||||
_ZTVN3Dtk3Gui21DDndClientSignalRelayE@Base 5.2.2-1
|
||||
_ZTVN3Dtk3Gui21DForeignWindowPrivateE@Base 5.2.2-1
|
||||
_ZTVN3Dtk3Gui21DGuiApplicationHelperE@Base 5.2.2-1
|
||||
_ZTVN3Dtk3Gui21DPlatformThemePrivateE@Base 5.2.2-1
|
||||
_ZTVN3Dtk3Gui21DRegionMonitorPrivateE@Base 5.2.2-1
|
||||
_ZTVN3Dtk3Gui21DWindowManagerHelper_E@Base 5.2.2-1
|
||||
_ZTVN3Dtk3Gui22DFileDragClientPrivateE@Base 5.2.2-1
|
||||
_ZTVN3Dtk3Gui22DFileDragServerPrivateE@Base 5.2.2-1
|
||||
_ZTVN3Dtk3Gui22DNativeSettingsPrivateE@Base 5.2.2-1
|
||||
_ZTVN3Dtk3Gui22DTaskbarControlPrivateE@Base 5.2.2-1
|
||||
_ZTVN3Dtk3Gui25DThumbnailProviderPrivateE@Base 5.2.2-1
|
||||
_ZTVN3Dtk3Gui27DWindowManagerHelperPrivateE@Base 5.2.2-1
|
||||
_ZTVN3Dtk3Gui28DGuiApplicationHelperPrivateE@Base 5.2.2-1
|
||||
_ZTVN3Dtk3Gui29DFileThumbnailProviderPrivateE@Base 5.2.2-1
|
||||
_ZTVN3Dtk3Gui9DFileDragE@Base 5.2.2-1
|
||||
_ZThn16_N3Dtk3Gui12DSvgRendererD0Ev@Base 5.2.2-1
|
||||
_ZThn16_N3Dtk3Gui12DSvgRendererD1Ev@Base 5.2.2-1
|
||||
_ZThn16_N3Dtk3Gui14DForeignWindowD0Ev@Base 5.2.2-1
|
||||
_ZThn16_N3Dtk3Gui14DForeignWindowD1Ev@Base 5.2.2-1
|
||||
_ZThn16_N3Dtk3Gui14DPlatformThemeD0Ev@Base 5.2.2-1
|
||||
_ZThn16_N3Dtk3Gui14DPlatformThemeD1Ev@Base 5.2.2-1
|
||||
_ZThn16_N3Dtk3Gui14DRegionMonitorD0Ev@Base 5.2.2-1
|
||||
_ZThn16_N3Dtk3Gui14DRegionMonitorD1Ev@Base 5.2.2-1
|
||||
_ZThn16_N3Dtk3Gui15DFileDragClientD0Ev@Base 5.2.2-1
|
||||
_ZThn16_N3Dtk3Gui15DFileDragClientD1Ev@Base 5.2.2-1
|
||||
_ZThn16_N3Dtk3Gui15DFileDragServerD0Ev@Base 5.2.2-1
|
||||
_ZThn16_N3Dtk3Gui15DFileDragServerD1Ev@Base 5.2.2-1
|
||||
_ZThn16_N3Dtk3Gui15DNativeSettingsD0Ev@Base 5.2.2-1
|
||||
_ZThn16_N3Dtk3Gui15DNativeSettingsD1Ev@Base 5.2.2-1
|
||||
_ZThn16_N3Dtk3Gui15DTaskbarControlD0Ev@Base 5.2.2-1
|
||||
_ZThn16_N3Dtk3Gui15DTaskbarControlD1Ev@Base 5.2.2-1
|
||||
_ZThn16_N3Dtk3Gui18DThumbnailProviderD0Ev@Base 5.2.2-1
|
||||
_ZThn16_N3Dtk3Gui18DThumbnailProviderD1Ev@Base 5.2.2-1
|
||||
_ZThn16_N3Dtk3Gui20DWindowManagerHelperD0Ev@Base 5.2.2-1
|
||||
_ZThn16_N3Dtk3Gui20DWindowManagerHelperD1Ev@Base 5.2.2-1
|
||||
_ZThn16_N3Dtk3Gui21DGuiApplicationHelperD0Ev@Base 5.2.2-1
|
||||
_ZThn16_N3Dtk3Gui21DGuiApplicationHelperD1Ev@Base 5.2.2-1
|
||||
_ZThn16_N3Dtk3Gui21DWindowManagerHelper_D0Ev@Base 5.2.2-1
|
||||
_ZThn16_N3Dtk3Gui21DWindowManagerHelper_D1Ev@Base 5.2.2-1
|
||||
_ZThn16_N3Dtk3Gui29DFileThumbnailProviderPrivateD0Ev@Base 5.2.2-1
|
||||
_ZThn16_N3Dtk3Gui29DFileThumbnailProviderPrivateD1Ev@Base 5.2.2-1
|
||||
_ZThn16_N3Dtk3Gui9DFileDragD0Ev@Base 5.2.2-1
|
||||
_ZThn16_N3Dtk3Gui9DFileDragD1Ev@Base 5.2.2-1
|
||||
_ZThn16_NK7QWindow4sizeEv@Base 5.2.2-1
|
||||
_ZThn40_N3Dtk3Gui14DForeignWindowD0Ev@Base 5.2.2-1
|
||||
_ZThn40_N3Dtk3Gui14DForeignWindowD1Ev@Base 5.2.2-1
|
||||
_ZZN11QMetaTypeIdI12QPainterPathE14qt_metatype_idEvE11metatype_id@Base 5.2.2-1
|
||||
_ZZN11QMetaTypeIdI13QDBusArgumentE14qt_metatype_idEvE11metatype_id@Base 5.2.2-1
|
||||
_ZZN11QMetaTypeIdI5QListI12QPainterPathEE14qt_metatype_idEvE11metatype_id@Base 5.2.2-1
|
||||
_ZZN11QMetaTypeIdI5QListI5QRectEE14qt_metatype_idEvE11metatype_id@Base 5.2.2-1
|
||||
_ZZN11QMetaTypeIdI7QVectorIjEE14qt_metatype_idEvE11metatype_id@Base 5.2.2-1
|
||||
_ZZN11QMetaTypeIdI8QMarginsE14qt_metatype_idEvE11metatype_id@Base 5.2.2-1
|
||||
_ZZN11QMetaTypeIdIN17QtMetaTypePrivate23QSequentialIterableImplEE14qt_metatype_idEvE11metatype_id@Base 5.2.2-1
|
||||
_ZZN18QMetaTypeIdQObjectIPN3Dtk3Gui14DPlatformThemeELi8EE14qt_metatype_idEvE11metatype_id@Base 5.2.2-1
|
||||
_ZZN9QtPrivate19ValueTypeIsMetaTypeI5QListI12QPainterPathELb1EE17registerConverterEiE1f@Base 5.2.2-1
|
||||
_ZZN9QtPrivate19ValueTypeIsMetaTypeI5QListI5QRectELb1EE17registerConverterEiE1f@Base 5.2.2-1
|
||||
_ZZN9QtPrivate19ValueTypeIsMetaTypeI7QVectorIjELb1EE17registerConverterEiE1f@Base 5.2.2-1
|
||||
_ZZZN34ComDeepinApiXEventMonitorInterface12RegisterAreaEiiiiiENKUlvE_clEvE15qstring_literal@Base 5.2.2-1
|
||||
_ZZZN34ComDeepinApiXEventMonitorInterface13RegisterAreasE5QListI5QRectEiENKUlvE_clEvE15qstring_literal@Base 5.2.2-1
|
||||
_ZZZN34ComDeepinApiXEventMonitorInterface14UnregisterAreaERK7QStringENKUlvE_clEvE15qstring_literal@Base 5.2.2-1
|
||||
_ZZZN34ComDeepinApiXEventMonitorInterface18RegisterFullScreenEvENKUlvE_clEvE15qstring_literal@Base 5.2.2-1
|
||||
_Zls6QDebugRKN3Dtk3Gui15DNativeSettingsE@Base 5.2.2-1
|
||||
_Zls6QDebugRKN3Dtk3Gui15DPlatformHandle10WMBlurAreaE@Base 5.2.2-1
|
||||
_ZlsR11QDataStreamRKN3Dtk3Gui8DPaletteE@Base 5.2.2-1
|
||||
_ZrsR11QDataStreamRN3Dtk3Gui8DPaletteE@Base 5.2.2-1
|
||||
|
|
@ -2,7 +2,7 @@ cmake_minimum_required (VERSION 3.10)
|
|||
|
||||
find_package (Doxygen REQUIRED)
|
||||
|
||||
set (QCH_INSTALL_DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/qt5/doc CACHE STRING "QCH install location")
|
||||
set (QCH_INSTALL_DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/qt${QT_VERSION_MAJOR}/doc CACHE STRING "QCH install location")
|
||||
|
||||
set (DOXYGEN_GENERATE_HTML "YES" CACHE STRING "Doxygen HTML output")
|
||||
set (DOXYGEN_GENERATE_XML "YES" CACHE STRING "Doxygen XML output")
|
||||
|
|
@ -12,13 +12,24 @@ set (DOXYGEN_PROJECT_NUMBER ${CMAKE_PROJECT_VERSION} CACHE STRING "") # Should b
|
|||
set (DOXYGEN_EXTRACT_STATIC YES)
|
||||
set (DOXYGEN_OUTPUT_LANGUAGE "Chinese" CACHE STRING "Doxygen Output Language")
|
||||
set (DOXYGEN_IMAGE_PATH ${CMAKE_CURRENT_LIST_DIR}/images/)
|
||||
set (DOXYGEN_QHG_LOCATION "qhelpgenerator")
|
||||
set (DOXYGEN_QHP_NAMESPACE "org.deepin.dtk.gui")
|
||||
set (DOXYGEN_QCH_FILE "dtkgui.qch")
|
||||
set (DOXYGEN_QHP_VIRTUAL_FOLDER "dtkgui")
|
||||
set (DOXYGEN_HTML_EXTRA_STYLESHEET "" CACHE STRING "Doxygen custom stylesheet for HTML output")
|
||||
set (DOXYGEN_TAGFILES "qtcore.tags=qthelp://org.qt-project.qtcore/qtcore/" CACHE STRING "Doxygen tag files")
|
||||
|
||||
# find from cmake target property
|
||||
if("${QT_VERSION_MAJOR}" STREQUAL "5")
|
||||
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Help)
|
||||
else()
|
||||
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS ToolsTools)
|
||||
endif()
|
||||
get_target_property(_qhelpgenerator_location Qt${QT_VERSION_MAJOR}::qhelpgenerator IMPORTED_LOCATION)
|
||||
if("${_qhelpgenerator_location}" STREQUAL "")
|
||||
set(_qhelpgenerator_location "qhelpgenerator")
|
||||
endif()
|
||||
set (DOXYGEN_QHG_LOCATION ${_qhelpgenerator_location} CACHE STRING "Doxygen QHG path")
|
||||
|
||||
set (DOXYGEN_PREDEFINED
|
||||
"D_DECL_DEPRECATED_X(x)="
|
||||
"DCORE_BEGIN_NAMESPACE=namespace Dtk { namespace Core {"
|
||||
|
|
@ -75,5 +86,4 @@ doxygen_add_docs (doxygen
|
|||
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
||||
COMMENT "Generate documentation via Doxygen"
|
||||
)
|
||||
|
||||
install (FILES ${PROJECT_BINARY_DIR}/docs/html/dtkgui.qch DESTINATION ${QCH_INSTALL_DESTINATION})
|
||||
install (FILES ${CMAKE_CURRENT_BINARY_DIR}/html/dtkgui.qch DESTINATION ${QCH_INSTALL_DESTINATION})
|
||||
|
|
|
|||
|
|
@ -47,4 +47,9 @@
|
|||
|
||||
@fn void DGuiApplicationHelper::sizeModeChanged(DGuiApplicationHelper::SizeMode sizeMode)
|
||||
@brief 通知控件大小模式发生改变。
|
||||
|
||||
@fn static QStringList DGuiApplicationHelper::userManualPaths(const QString &appName)
|
||||
@brief 获取帮助手册已存在目录
|
||||
@param appName 目标应用名称
|
||||
@detail 目录深度具体到appName层级,例:一个典型的目录路径为:/usr/share/deepin-manual/manual-assets/application/appName
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -223,7 +223,7 @@ cmake --build build
|
|||
| Light | 0 |
|
||||
| Dark | 1 |
|
||||
|
||||
@enum Dtk::Gui::DDciIcon::IconAttibute
|
||||
@enum Dtk::Gui::DDciIcon::IconAttribute
|
||||
@brief DCI图标属性
|
||||
@details
|
||||
| 键 | 值 |
|
||||
|
|
@ -282,7 +282,7 @@ cmake --build build
|
|||
@param[in] theme 图标主题
|
||||
@param[in] mode 图标模式,默认为Normal
|
||||
|
||||
@fn bool Dtk::Gui::DDciIcon::isSupportedAttribute(DDciIconMatchResult result, IconAttibute attr)
|
||||
@fn bool Dtk::Gui::DDciIcon::isSupportedAttribute(DDciIconMatchResult result, IconAttribute attr)
|
||||
@brief 判断DCI图标是否支持指定属性
|
||||
@param[in] result DCI图标匹配结果
|
||||
@param[in] attr 图标属性
|
||||
|
|
|
|||
|
|
@ -171,6 +171,11 @@
|
|||
@details 为指定的图标模式计算要显示的内容,这可能会导致 currentImage 发生变化。这是个一次性行为,不会影响下一次调用 setMode 后的结果。
|
||||
@param[in] mode 指定要播放的图标模式,如果此模式支持动画,会触发此模式自身的动画播放(与 setMode 导致的动画不同的是,此动画不涉及两种模式变化时的过渡规则),否则将修改 currentImage 为此模式对应的静态图片资源。
|
||||
|
||||
@fn Dtk::Gui::DDciIconPlayer::play(DDciIcon::Mode mode, DDciIconImagePlayer::Flags flags)
|
||||
@details 为指定的图标模式和播放参数计算要显示的内容。
|
||||
@param[in] mode 指定要播放的图标模式。
|
||||
@param[in] flags 播放参数
|
||||
|
||||
@fn Dtk::Gui::DDciIconPlayer::stop()
|
||||
@details 如果当前正在播放动画,则停止当前动画的播放,但不会影响队列中下一个动画的播放。可能会导致 DDciIconPlayer::state 发生变化。
|
||||
@sa DDciIconPlayer::abort
|
||||
|
|
|
|||
|
|
@ -0,0 +1,164 @@
|
|||
/*!
|
||||
@~chinese
|
||||
@file include/util/ddesktopservices.h
|
||||
@ingroup DesktopServices
|
||||
@brief Dtk 提供常见桌面服务的方法工具类
|
||||
|
||||
@namespace Dtk::Gui::DDesktopServices ddesktopservices.h
|
||||
@details 用于提供一些接口,包括在文件管理器中显示目录,显示文件,显示文件属性,移入回收站,播放系统音效等。
|
||||
|
||||
@enum Dtk::Gui::DDesktopServices::SystemSoundEffect
|
||||
@brief 系统音效的枚举
|
||||
@var Dtk::Gui::DDesktopServices::SSE_Notifications
|
||||
@brief 显示通知的音效
|
||||
@var Dtk::Gui::DDesktopServices::SEE_Screenshot
|
||||
@brief 截屏的音效
|
||||
@var Dtk::Gui::DDesktopServices::SSE_EmptyTrash
|
||||
@brief 清空回收站的音效
|
||||
@var Dtk::Gui::DDesktopServices::SSE_SendFileComplete
|
||||
@brief 完成发送文件(到桌面)的音效
|
||||
@var Dtk::Gui::DDesktopServices::SSE_BootUp
|
||||
@brief 开机的音效
|
||||
@var Dtk::Gui::DDesktopServices::SSE_Shutdown
|
||||
@brief 关机的音效
|
||||
@var Dtk::Gui::DDesktopServices::SSE_Logout
|
||||
@brief 注销的音效
|
||||
@var Dtk::Gui::DDesktopServices::SSE_WakeUp
|
||||
@brief 唤醒的音效
|
||||
@var Dtk::Gui::DDesktopServices::SSE_VolumeChange
|
||||
@brief 音量调节的音效
|
||||
@var Dtk::Gui::DDesktopServices::SSE_LowBattery
|
||||
@brief 低电量的音效
|
||||
@var Dtk::Gui::DDesktopServices::SSE_PlugIn
|
||||
@brief 电源接入的音效
|
||||
@var Dtk::Gui::DDesktopServices::SSE_PlugOut
|
||||
@brief 电源移除的音效
|
||||
@var Dtk::Gui::DDesktopServices::SSE_DeviceAdded
|
||||
@brief 移动设备接入的音效
|
||||
@var Dtk::Gui::DDesktopServices::SSE_DeviceRemoved
|
||||
@brief 移动设备移除的音效
|
||||
@var Dtk::Gui::DDesktopServices::SSE_Error
|
||||
@brief 错误提示的音效
|
||||
|
||||
@fn Dtk::Gui::DDesktopServices::showFolder(const QString &localFilePath, const QString &startupId = QString())
|
||||
@details 通过文件管理器显示目录
|
||||
@param[in] localFilePath 要显示的目录路径
|
||||
@param[in] startupId 本次启动的id, 默认为空
|
||||
@return 调用成功返回 true, 否则返回 false
|
||||
|
||||
@fn Dtk::Gui::DDesktopServices::showFolders(const QList<QString> &localFilePaths, const QString &startupId = QString())
|
||||
@details 通过文件管理器显示多个目录
|
||||
@param[in] localFilePaths 要显示的目录路径列表
|
||||
@param[in] startupId 本次启动的id, 默认为空
|
||||
@return 调用成功返回 true, 否则返回 false
|
||||
|
||||
@fn Dtk::Gui::DDesktopServices::showFolder(const QUrl &url, const QString &startupId = QString())
|
||||
@details 通过文件管理器显示目录
|
||||
@param[in] url 要显示的目录 QUrl 形式路径
|
||||
@param[in] startupId 本次启动的id, 默认为空
|
||||
@return 调用成功返回 true, 否则返回 false
|
||||
|
||||
@fn Dtk::Gui::DDesktopServices::showFolders(const QList<QUrl> &urls, const QString &startupId = QString())
|
||||
@details 通过文件管理器显示多个目录
|
||||
@param[in] urls 要显示的目录路径 url 列表
|
||||
@param[in] startupId 本次启动的id, 默认为空
|
||||
@return 调用成功返回 true, 否则返回 false
|
||||
|
||||
@fn Dtk::Gui::DDesktopServices::showFileItemProperty(const QString &localFilePath, const QString &startupId = QString())
|
||||
@details 通过文件管理器显示文件的属性
|
||||
@param[in] localFilePath 要显示的文件路径
|
||||
@param[in] startupId 本次启动的id, 默认为空
|
||||
@return 调用成功返回 true, 否则返回 false
|
||||
|
||||
@fn Dtk::Gui::DDesktopServices::showFileItemProperties(const QList<QString> &localFilePaths, const QString &startupId = QString())
|
||||
@details 通过文件管理器显示多个文件的属性
|
||||
@param[in] localFilePaths 要显示的文件路径列表
|
||||
@param[in] startupId 本次启动的id, 默认为空
|
||||
@return 调用成功返回 true, 否则返回 false
|
||||
|
||||
@fn Dtk::Gui::DDesktopServices::showFileItemProperty(const QUrl &url, const QString &startupId = QString())
|
||||
@details 通过文件管理器显示文件的属性
|
||||
@param[in] url 要显示的文件 QUrl 形式路径
|
||||
@param[in] startupId 本次启动的id, 默认为空
|
||||
@return 调用成功返回 true, 否则返回 false
|
||||
|
||||
@fn Dtk::Gui::DDesktopServices::showFileItemProperties(const QList<QUrl> &urls, const QString &startupId = QString())
|
||||
@details 通过文件管理器显示多个文件的属性
|
||||
@param[in] urls 要显示的目录路径 url 列表
|
||||
@param[in] startupId 本次启动的id, 默认为空
|
||||
@return 调用成功返回 true, 否则返回 false
|
||||
|
||||
@fn Dtk::Gui::DDesktopServices::showFileItem(const QString &localFilePath, const QString &startupId = QString())
|
||||
@details 通过文件管理器在父目录中显示并选中文件(目录)
|
||||
@param[in] localFilePath 要显示(选中)的文件(目录)路径
|
||||
@param[in] startupId 本次启动的id, 默认为空
|
||||
@return 调用成功返回 true, 否则返回 false
|
||||
|
||||
@fn Dtk::Gui::DDesktopServices::showFileItems(const QList<QString> &localFilePaths, const QString &startupId = QString())
|
||||
@details 通过文件管理器父目录中显示并选中多个文件(目录)
|
||||
@param[in] localFilePaths 要显示(选中)的文件(目录)路径列表
|
||||
@param[in] startupId 本次启动的id, 默认为空
|
||||
@return 调用成功返回 true, 否则返回 false
|
||||
|
||||
@fn Dtk::Gui::DDesktopServices::showFileItem(const QUrl &url, const QString &startupId = QString())
|
||||
@details 通过文件管理器在父目录中显示并选中文件(目录)
|
||||
@param[in] url 要显示(选中)的文件(目录)QUrl 形式路径
|
||||
@param[in] startupId 本次启动的id, 默认为空
|
||||
@return 调用成功返回 true, 否则返回 false
|
||||
|
||||
@fn Dtk::Gui::DDesktopServices::showFileItems(const QList<QUrl> &urls, const QString &startupId = QString())
|
||||
@details 通过文件管理器父目录中显示并选中多个文件(目录)
|
||||
@param[in] urls 要显示选中)的文件(目录)路径 url 列表
|
||||
@param[in] startupId 本次启动的id, 默认为空
|
||||
@return 调用成功返回 true, 否则返回 false
|
||||
|
||||
@fn Dtk::Gui::DDesktopServices::trash(const QString &localFilePath)
|
||||
@details 通过文件管理器将文件移入回收站
|
||||
@param[in] localFilePath 要移入回收站的文件路径
|
||||
@return 调用成功返回 true, 否则返回 false
|
||||
|
||||
@fn Dtk::Gui::DDesktopServices::trash(const QList<QString> &localFilePaths)
|
||||
@details 通过文件管理器将多个文件移入回收站
|
||||
@param[in] localFilePaths 要移入回收站的文件路径列表
|
||||
@return 调用成功返回 true, 否则返回 false
|
||||
|
||||
@fn Dtk::Gui::DDesktopServices::trash(const QUrl &url)
|
||||
@details 通过文件管理器将文件移入回收站
|
||||
@param[in] url 要移入回收站的文件 url 路径
|
||||
@return 调用成功返回 true, 否则返回 false
|
||||
|
||||
@fn Dtk::Gui::DDesktopServices::trash(const QList<QUrl> &urls)
|
||||
@details 通过文件管理器将多个文件移入回收站
|
||||
@param[in] urls 要移入回收站的文件路径 url 列表
|
||||
@return 调用成功返回 true, 否则返回 false
|
||||
|
||||
@fn Dtk::Gui::DDesktopServices::playSystemSoundEffect(const SystemSoundEffect &effect)
|
||||
@details 播放系统音效。如果系统音效被禁用或者要播放音效被禁用将播放失败
|
||||
@param[in] effect 要播放的音效,见枚举 Dtk::Gui::DDesktopServices::SystemSoundEffect
|
||||
@return 调用成功返回 true, 否则返回 false
|
||||
|
||||
@fn Dtk::Gui::DDesktopServices::playSystemSoundEffect(const QString &name)
|
||||
@details 根据音效名播放系统音效。如果系统音效被禁用或者要播放音效被禁用将播放失败
|
||||
@param[in] name 要播放的音效名称,见 Dtk::Gui::DDesktopServices::getNameByEffectType
|
||||
@return 调用成功返回 true, 否则返回 false
|
||||
|
||||
@fn Dtk::Gui::DDesktopServices::previewSystemSoundEffect(const SystemSoundEffect &effect)
|
||||
@details 系统音效预览。
|
||||
@param[in] effect 要播放的音效,见枚举 Dtk::Gui::DDesktopServices::SystemSoundEffect
|
||||
@return 调用成功返回 true, 否则返回 false
|
||||
|
||||
@fn Dtk::Gui::DDesktopServices::previewSystemSoundEffect(const QString &name)
|
||||
@details 根据音效名预览系统音效。
|
||||
@param[in] name 要播放的音效名称,见 Dtk::Gui::DDesktopServices::getNameByEffectType
|
||||
@return 调用成功返回 true, 否则返回 false
|
||||
|
||||
@fn Dtk::Gui::DDesktopServices::getNameByEffectType(const SystemSoundEffect &effect)
|
||||
@details 根据音效名预览系统音效。
|
||||
@param[in] effect 要获取名称的音效,见枚举 Dtk::Gui::DDesktopServices::SystemSoundEffect
|
||||
@return QString effect 对应的音效名称
|
||||
|
||||
@fn Dtk::Gui::DDesktopServices::errorMessage()
|
||||
@details 文件管理器相关调用出错时可以通过此接口获取错误信息
|
||||
@return 错误信息
|
||||
|
||||
*/
|
||||
|
|
@ -0,0 +1,94 @@
|
|||
/*!
|
||||
@~chinese
|
||||
@file include/util/dicontheme.h
|
||||
@ingroup dci
|
||||
@brief Dtk 图标主题工具类
|
||||
|
||||
@namespace Dtk::Gui::DIconTheme dicontheme.h
|
||||
@details 用于提供一些接口,包括查找图标(包括 QIcon 和 DCI 图标 ),图标搜索路径等。
|
||||
|
||||
@enum Dtk::Gui::DIconTheme::Option
|
||||
@brief 查找图标时的选项
|
||||
@var Dtk::Gui::DIconTheme::DontFallbackToQIconFromTheme
|
||||
@brief 是否**不使用** QIcon::fromTheme 的方式去查找图标,当设置此 flag 时查找图标失败时直接返回空图标对象,否则回退到通过 QIcon::fromTheme 查找图标
|
||||
@var Dtk::Gui::DIconTheme::IgnoreBuiltinIcons
|
||||
@brief 是否忽略通过内置图标引擎方式查找图标资源,当设置此 flag 时查找图标会跳过内置图标引擎的方式查找图标资源,否则优先尝试内置图标引擎查找资源。
|
||||
|
||||
@class Dtk::Gui::DIconTheme::Cached
|
||||
@details 图标查找缓存类,提供的查找图标接口,如果找到会加入缓存,下次查找会更快。
|
||||
|
||||
@fn Dtk::Gui::DIconTheme::Cached::Cached()
|
||||
@details 图标缓存构造函数
|
||||
|
||||
@fn Dtk::Gui::DIconTheme::Cached::~Cached()
|
||||
@details 图标缓存析构函数
|
||||
|
||||
@fn Dtk::Gui::DIconTheme::Cached::maxCost() const
|
||||
@details 返回允许的最大缓存数量
|
||||
|
||||
@fn Dtk::Gui::DIconTheme::Cached::setMaxCost(int cost)
|
||||
@details 将最大允许的缓存数量设置为 cost 。如果当前的缓存数量大于 cost ,则某些缓存对象会立即删除。
|
||||
|
||||
@fn Dtk::Gui::DIconTheme::Cached::clear()
|
||||
@details 清理所有缓存
|
||||
|
||||
@fn Dtk::Gui::DIconTheme::Cached::findQIcon(const QString &iconName, Options options, const QIcon &fallback)
|
||||
@details 通过 iconName 查找 QIcon 的接口,找到时会加入缓存
|
||||
@param[in] iconName 要查找的图标名称
|
||||
@param[in] options 要查找的选项
|
||||
@param[in] fallback 图标查找失败时可以返回用户指定的 fallback 对象,默认为空
|
||||
@sa DIconTheme::findQIcon
|
||||
|
||||
@fn Dtk::Gui::DIconTheme::Cached::findDciIconFile(const QString &iconName, const QString &themeName, const QString &fallback)
|
||||
@details 通过指定图标名 iconName 和主题名 themeName 查找 DCI 图标文件路径的接口,找到时会加入缓存
|
||||
@param[in] iconName 要查找的图标名称
|
||||
@param[in] options 指定 DCI 图标主题
|
||||
@param[in] fallback 图标查找失败时可以返回用户指定的 fallback ,默认为空
|
||||
|
||||
@fn Dtk::Gui::DIconTheme::cached()
|
||||
@details 获取(首次次调用时构造)缓存对象。
|
||||
|
||||
@fn Dtk::Gui::DIconTheme::findQIcon(const QString &iconName, Options options)
|
||||
@details 返回 DIconTheme::createIconEngine 接口创建的图标引擎构造 QIcon,当没有设置 DontFallbackToQIconFromTheme 和 createIconEngine 失败时回退到 QIcon::fromTheme
|
||||
@param[in] iconName 要查找的图标名称
|
||||
@param[in] options 要查找的选项, 选项默认为空
|
||||
@sa DIconTheme::Cached::findQIcon
|
||||
@sa DIconTheme::createIconEngine
|
||||
|
||||
@fn Dtk::Gui::DIconTheme::findQIcon(const QString &iconName, const QIcon &fallback, Options options)
|
||||
@details 重载 DIconTheme::findQIcon, 当查找图标失败时返回调用者中提供的 fallback 图标
|
||||
@param[in] iconName 要查找的图标名称
|
||||
@param[in] options 要查找的选项, 选项默认为空
|
||||
@param[in] fallback 如果 iconName 无法找到, 返回此图标
|
||||
@sa DIconTheme::Cached::findQIcon
|
||||
@sa DIconTheme::createIconEngine
|
||||
|
||||
@fn Dtk::Gui::DIconTheme::createIconEngine(const QString &iconName, Options options)
|
||||
@details 通过图标名构造图标引擎, 如果未设置 IgnoreBuiltinIcons 标志则优先尝试 qrc:/icons/deepin/builtin 目录查找图标来构造内置图标引擎,否则构造 XDG 图标引擎。
|
||||
@param[in] iconName 图标名称
|
||||
@param[in] options 选项, 选项默认为 DIconTheme::DontFallbackToQIconFromTheme
|
||||
@return QIconEngine 对象指针,注意图标查找失败时返回 nullptr。
|
||||
|
||||
@fn Dtk::Gui::DIconTheme::findDciIconFile(const QString &iconName, const QString &themeName)
|
||||
@details 通过指定图标名 iconName 和主题名 themeName 查找 DCI 图标文件路径的接口
|
||||
@param[in] iconName 要查找的图标名称
|
||||
@param[in] options 指定 DCI 图标主题
|
||||
@return 返回找到的 DCI 图标文件路径
|
||||
@sa DDciIcon::fromTheme
|
||||
@sa DIconTheme::dciThemeSearchPaths()
|
||||
|
||||
@fn Dtk::Gui::DIconTheme::dciThemeSearchPaths()
|
||||
@details 返回 DCI 图标的搜索路径。默认会从这些路径查找 /usr/share/dsg/icons/$theme_name, qrc:/dsg/icons/$theme_name, qrc:/dsg/built-in-icons
|
||||
@sa DIconTheme::findDciIconFile
|
||||
|
||||
@fn Dtk::Gui::DIconTheme::setDciThemeSearchPaths(const QStringList &path)
|
||||
@details 设置查找 DCI 图标的搜索路径
|
||||
@sa DIconTheme::dciThemeSearchPaths
|
||||
|
||||
@fn Dtk::Gui::DIconTheme::isBuiltinIcon(const QIcon &icon)
|
||||
@details 返回 QIcon 是否为内置图标,`内置图标` 是 DTK 中规定的一类集成在二进制内部的图标资源,其一般放置于 qrc:/icons/deepin/builtin 的路径下,在使用 findQIcon 或 createIconEngine 时,如找到此路径下对应的图标文件,则会为其使用一个自定义的 QIconEngine 进行渲染。此方法即通过判断 icon 所使用的 QIconEngine 确认其是否为内置图标。
|
||||
|
||||
@fn Dtk::Gui::DIconTheme::isXdgIcon(const QIcon &icon)
|
||||
@details 返回 QIcon 是否为 XDG 图标, XDG 图标一般放置于系统图标主题目录(如:/usr/share/icons)。和 isBuiltinIcon 类似,此方法是通过判断 icon 所使用的 QIconEngine 确认其是否为 XDG 图标。
|
||||
|
||||
*/
|
||||
|
|
@ -0,0 +1,149 @@
|
|||
message(STATUS "Current Qt Version: ${QT_VERSION_MAJOR}")
|
||||
|
||||
set(LIB_NAME dtk${DTK_VERSION_MAJOR}gui)
|
||||
|
||||
# Set install path
|
||||
if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
|
||||
set(CMAKE_INSTALL_PREFIX /usr)
|
||||
endif ()
|
||||
|
||||
include(GNUInstallDirs)
|
||||
include(CMakePackageConfigHelpers)
|
||||
list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake")
|
||||
|
||||
set(CMAKE_AUTOMOC ON)
|
||||
set(CMAKE_AUTORCC ON)
|
||||
set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
||||
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
||||
|
||||
# Set build option
|
||||
option(DTK_DISABLE_LIBXDG "Disable libxdg" OFF)
|
||||
option(DTK_DISABLE_LIBRSVG "Disable librsvg" OFF)
|
||||
option(DTK_DISABLE_EX_IMAGE_FORMAT "Disable libraw and freeimage" OFF)
|
||||
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
|
||||
if("${QT_VERSION_MAJOR}" STREQUAL "5")
|
||||
set (BUILD_DOCS ON CACHE BOOL "Generate doxygen-based documentation")
|
||||
else()
|
||||
# dtk6 not build doc
|
||||
set (BUILD_DOCS OFF CACHE BOOL "Generate doxygen-based documentation")
|
||||
endif()
|
||||
|
||||
set(INCLUDE_INSTALL_DIR "${CMAKE_INSTALL_INCLUDEDIR}/dtk${PROJECT_VERSION_MAJOR}/DGui")
|
||||
set(TOOL_INSTALL_DIR "${CMAKE_INSTALL_LIBEXECDIR}/dtk${PROJECT_VERSION_MAJOR}/DGui/bin")
|
||||
set(LIBRARY_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}")
|
||||
set(MKSPECS_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}/qt${QT_VERSION_MAJOR}/mkspecs/modules" CACHE STRING "Install dir for qt pri module files")
|
||||
set(CONFIG_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}/cmake/Dtk${DTK_VERSION_MAJOR}Gui")
|
||||
set(PKGCONFIG_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
|
||||
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -Wall -Wextra -fopenmp")
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pie")
|
||||
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||
set(BUILD_TESTING ON)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O0 -g -fno-omit-frame-pointer")
|
||||
else ()
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Ofast")
|
||||
endif ()
|
||||
|
||||
set(CONFIGNAME include/global/dtkgui_config.h)
|
||||
file(WRITE ${CONFIGNAME}
|
||||
"// This is an auto-generated header, please don't modify it.\n"
|
||||
)
|
||||
file(GLOB CONFIGSOURCE include/DtkGui/*)
|
||||
|
||||
foreach(FILENAME ${CONFIGSOURCE})
|
||||
get_filename_component(thefile ${FILENAME} NAME)
|
||||
file(APPEND ${CONFIGNAME} "#define DTKGUI_CLASS_${thefile}\n")
|
||||
endforeach()
|
||||
|
||||
# Generate cmake config file
|
||||
configure_package_config_file(misc/DtkGuiConfig.cmake.in
|
||||
${CMAKE_CURRENT_BINARY_DIR}/Dtk${DTK_VERSION_MAJOR}GuiConfig.cmake
|
||||
INSTALL_DESTINATION "${CONFIG_INSTALL_DIR}"
|
||||
PATH_VARS TOOL_INSTALL_DIR
|
||||
)
|
||||
# Generate cmake version file
|
||||
write_basic_package_version_file(
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/Dtk${DTK_VERSION_MAJOR}GuiConfigVersion.cmake"
|
||||
VERSION ${DTK_VERSION}
|
||||
COMPATIBILITY SameMajorVersion
|
||||
)
|
||||
# Install cmake config file and version file to CONFIG_INSTALL_DIR
|
||||
install(FILES
|
||||
${CMAKE_CURRENT_BINARY_DIR}/Dtk${DTK_VERSION_MAJOR}GuiConfig.cmake
|
||||
${CMAKE_CURRENT_BINARY_DIR}/Dtk${DTK_VERSION_MAJOR}GuiConfigVersion.cmake
|
||||
DESTINATION "${CONFIG_INSTALL_DIR}"
|
||||
)
|
||||
# Install pkgconfig file
|
||||
configure_file(misc/dtkgui.pc.in dtk${DTK_VERSION_MAJOR}gui.pc @ONLY)
|
||||
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/dtk${DTK_VERSION_MAJOR}gui.pc DESTINATION "${PKGCONFIG_INSTALL_DIR}")
|
||||
# Install pri module
|
||||
configure_file(misc/qt_lib_dtkgui.pri.in qt_lib_dtkgui.pri @ONLY)
|
||||
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/qt_lib_dtkgui.pri DESTINATION "${MKSPECS_INSTALL_DIR}")
|
||||
|
||||
set(GUISGNAME DtkGuis)
|
||||
|
||||
file(WRITE ${GUISGNAME}
|
||||
"// This is an auto-generated header, please don't modify it.\n"
|
||||
"#ifndef DTK_GUI_MODULE_H\n"
|
||||
"#define DTK_GUI_MODULE_H\n"
|
||||
)
|
||||
file(GLOB FILEGRAGTOWRITSOURCE include/filedrag/*)
|
||||
|
||||
foreach(FILENAME ${FILEGRAGTOWRITSOURCE})
|
||||
get_filename_component(thefile ${FILENAME} NAME)
|
||||
file(APPEND ${GUISGNAME} "#include \"${thefile}\"\n")
|
||||
endforeach()
|
||||
file(GLOB KERNELTOWRITESOURCE include/kernel/*)
|
||||
foreach(FILENAME ${KERNELTOWRITESOURCE})
|
||||
get_filename_component(thefile ${FILENAME} NAME)
|
||||
file(APPEND ${GUISGNAME} "#include \"${thefile}\"\n")
|
||||
endforeach()
|
||||
file(GLOB UTILTOWRITESOURCE include/util/*)
|
||||
foreach(FILENAME ${UTILTOWRITESOURCE})
|
||||
get_filename_component(thefile ${FILENAME} NAME)
|
||||
file(APPEND ${GUISGNAME} "#include \"${thefile}\"\n")
|
||||
endforeach()
|
||||
file(APPEND ${GUISGNAME} "#endif")
|
||||
install(FILES DtkGuis DESTINATION "${INCLUDE_INSTALL_DIR}")
|
||||
|
||||
# Find common dependencies
|
||||
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Gui DBus Network)
|
||||
find_package(PkgConfig REQUIRED)
|
||||
find_package(Dtk${DTK_VERSION_MAJOR} REQUIRED Core)
|
||||
find_package(DtkBuildHelper REQUIRED)
|
||||
pkg_check_modules(librsvg REQUIRED IMPORTED_TARGET librsvg-2.0)
|
||||
|
||||
if(NOT DTK_DISABLE_LIBXDG)
|
||||
# Only use libxdg under Qt5
|
||||
if (${QT_VERSION_MAJOR} STREQUAL "5")
|
||||
find_package(Qt5XdgIconLoader REQUIRED)
|
||||
if (NOT Qt5XdgIconLoader_FOUND)
|
||||
message(WARNING " XdgIconLoader Not Found, DISABLE LIBXDG !")
|
||||
set (DTK_DISABLE_LIBXDG ON)
|
||||
endif()
|
||||
else()
|
||||
set (DTK_DISABLE_LIBXDG ON)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# Check optional image handler dependencies.
|
||||
find_package(FreeImage)
|
||||
pkg_check_modules(libraw IMPORTED_TARGET libraw)
|
||||
if(FreeImage_FOUND AND libraw_FOUND)
|
||||
set(EX_IMAGE_FORMAT_LIBS_FOUND ON)
|
||||
endif()
|
||||
|
||||
set(OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR})
|
||||
add_subdirectory(src ${OUTPUT_DIR}/src)
|
||||
if(BUILD_TESTING)
|
||||
enable_testing()
|
||||
add_subdirectory(tests ${OUTPUT_DIR}/tests)
|
||||
endif()
|
||||
add_subdirectory(tools ${OUTPUT_DIR}/tools)
|
||||
add_subdirectory(examples ${OUTPUT_DIR}/examples)
|
||||
|
||||
if (BUILD_DOCS)
|
||||
add_subdirectory(docs ${OUTPUT_DIR}/docs)
|
||||
endif ()
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
add_subdirectory(dnd-example)
|
||||
add_subdirectory(test-taskbar)
|
||||
#add_subdirectory(test-taskbar) # Don't build
|
||||
#add_subdirectory(frameless-window) # Don't build
|
||||
add_subdirectory(animation-dci)
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -1,9 +1,10 @@
|
|||
set(CMAKE_AUTOMOC ON)
|
||||
set(CMAKE_AUTORCC ON)
|
||||
find_package(DtkCore REQUIRED)
|
||||
find_package(Qt5 REQUIRED COMPONENTS Widgets)
|
||||
find_package(Dtk${DTK_VERSION_MAJOR}Core REQUIRED)
|
||||
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets)
|
||||
|
||||
set(TARGET animation-dci)
|
||||
set(BIN_NAME animation-dci)
|
||||
set(TARGET ${BIN_NAME}${DTK_VERSION_MAJOR})
|
||||
|
||||
add_executable(${TARGET}
|
||||
main.cpp
|
||||
|
|
@ -12,7 +13,7 @@ add_executable(${TARGET}
|
|||
|
||||
target_link_libraries(
|
||||
${TARGET} PRIVATE
|
||||
Qt5::Widgets
|
||||
dtkgui
|
||||
${DtkCore_LIBRARIES}
|
||||
Qt${QT_VERSION_MAJOR}::Widgets
|
||||
dtk${DTK_VERSION_MAJOR}gui
|
||||
)
|
||||
set_target_properties(${TARGET_NAME} PROPERTIES OUTPUT_NAME ${BIN_NAME})
|
||||
|
|
|
|||
|
|
@ -16,9 +16,12 @@
|
|||
#include <QMenuBar>
|
||||
#include <QPushButton>
|
||||
#include <QHBoxLayout>
|
||||
#include <QFileDialog>
|
||||
|
||||
#include <DDciIcon>
|
||||
#include <DDciIconPlayer>
|
||||
#include <QDropEvent>
|
||||
#include <QMimeData>
|
||||
|
||||
DGUI_USE_NAMESPACE
|
||||
|
||||
|
|
@ -43,9 +46,10 @@ static QString iconModeToString(DDciIcon::Mode mode)
|
|||
class IconWidget : public QMainWindow
|
||||
{
|
||||
public:
|
||||
IconWidget(const QString &iconFile)
|
||||
IconWidget(const QString &iconName)
|
||||
{
|
||||
setCentralWidget(label = new QLabel(this));
|
||||
label->setAcceptDrops(true);
|
||||
centralWidget()->setAttribute(Qt::WA_MouseTracking);
|
||||
centralWidget()->installEventFilter(this);
|
||||
statusBar()->addWidget(message = new QLabel());
|
||||
|
|
@ -66,15 +70,24 @@ public:
|
|||
connect(disabled, &QPushButton::clicked, this, [this] {
|
||||
player.setMode(DDciIcon::Disabled);
|
||||
});
|
||||
|
||||
auto open = new QPushButton("...");
|
||||
connect(open, &QPushButton::clicked, this, [this] {
|
||||
QString dciFile = QFileDialog::getOpenFileName(this, "select a dci icon file", "", "*.dci");
|
||||
player.setIcon(DDciIcon(dciFile));
|
||||
player.setMode(DDciIcon::Normal);
|
||||
});
|
||||
|
||||
QWidget *menuWidget = new QWidget(this);
|
||||
QHBoxLayout *layout = new QHBoxLayout(menuWidget);
|
||||
layout->addWidget(normal);
|
||||
layout->addWidget(hover);
|
||||
layout->addWidget(pressed);
|
||||
layout->addWidget(disabled);
|
||||
layout->addWidget(open);
|
||||
setMenuWidget(menuWidget);
|
||||
|
||||
icon = DDciIcon(iconFile);
|
||||
icon = DDciIcon::fromTheme(iconName);
|
||||
|
||||
connect(&player, &DDciIconPlayer::updated, this, [this] {
|
||||
auto image = player.currentImage();
|
||||
|
|
@ -112,6 +125,20 @@ private:
|
|||
player.setMode(DDciIcon::Pressed);
|
||||
} else if (event->type() == QEvent::MouseButtonRelease) {
|
||||
player.setMode(label->hasMouseTracking() ? DDciIcon::Hover : DDciIcon::Normal);
|
||||
} else if (event->type() == QEvent::DragEnter) {
|
||||
event->accept();
|
||||
} else if (event->type() == QEvent::Drop) {
|
||||
auto de = static_cast<QDropEvent *>(event);
|
||||
if (de->mimeData()->hasFormat("text/uri-list")) {
|
||||
QString uris = de->mimeData()->data("text/uri-list");
|
||||
QUrl url(uris.split("\r\n").value(0));
|
||||
|
||||
DDciIcon icon(url.path());
|
||||
if (!icon.isNull()) {
|
||||
player.setIcon(icon);
|
||||
player.setMode(DDciIcon::Normal);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
|
|
@ -130,7 +157,7 @@ int main(int argc, char *argv[])
|
|||
{
|
||||
QApplication app(argc, argv);
|
||||
|
||||
IconWidget *window = new IconWidget(QStringLiteral(":/dsg/bulit-in-icons/test_heart.dci"));
|
||||
IconWidget *window = new IconWidget(QStringLiteral("test_heart"));
|
||||
|
||||
window->setMinimumSize(300, 300);
|
||||
window->show();
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
<RCC>
|
||||
<qresource prefix="/">
|
||||
<file alias="/dsg/bulit-in-icons/test_heart.dci">dci_heart.dci</file>
|
||||
<file alias="/dsg/built-in-icons/test_heart.dci">dci_heart.dci</file>
|
||||
<file alias="/dsg/built-in-icons/test_static_3depict.dci">3depict.dci</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
|
|
|
|||
|
|
@ -1,31 +1,32 @@
|
|||
find_package(Qt5 REQUIRED COMPONENTS Widgets)
|
||||
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets)
|
||||
|
||||
set(BIN1 dnd-test-client)
|
||||
set(BIN2 dnd-test-server)
|
||||
set(TARGET1 ${BIN1}${DTK_VERSION_MAJOR})
|
||||
set(TARGET2 ${BIN2}${DTK_VERSION_MAJOR})
|
||||
|
||||
add_executable(${BIN1}
|
||||
add_executable(${TARGET1}
|
||||
dnd-test-client.cpp
|
||||
)
|
||||
|
||||
target_link_libraries(${BIN1} PRIVATE
|
||||
Qt5::Widgets
|
||||
Qt5::DBus
|
||||
target_link_libraries(${TARGET1} PRIVATE
|
||||
Qt${QT_VERSION_MAJOR}::Widgets
|
||||
Qt${QT_VERSION_MAJOR}::DBus
|
||||
${LIB_NAME}
|
||||
Dtk::Core
|
||||
)
|
||||
|
||||
install(TARGETS ${BIN1} DESTINATION "${TOOL_INSTALL_DIR}")
|
||||
|
||||
set(BIN2 dnd-test-server)
|
||||
|
||||
add_executable(${BIN2}
|
||||
add_executable(${TARGET2}
|
||||
dnd-test-server.cpp
|
||||
)
|
||||
|
||||
target_link_libraries(${BIN2} PRIVATE
|
||||
Qt5::Widgets
|
||||
Qt5::DBus
|
||||
target_link_libraries(${TARGET2} PRIVATE
|
||||
Qt${QT_VERSION_MAJOR}::Widgets
|
||||
Qt${QT_VERSION_MAJOR}::DBus
|
||||
${LIB_NAME}
|
||||
Dtk::Core
|
||||
)
|
||||
|
||||
install(TARGETS ${BIN2} DESTINATION "${TOOL_INSTALL_DIR}")
|
||||
set_target_properties(${TARGET1} PROPERTIES OUTPUT_NAME ${BIN1})
|
||||
set_target_properties(${TARGET2} PROPERTIES OUTPUT_NAME ${BIN2})
|
||||
|
||||
install(TARGETS ${TARGET1} DESTINATION "${TOOL_INSTALL_DIR}")
|
||||
install(TARGETS ${TARGET2} DESTINATION "${TOOL_INSTALL_DIR}")
|
||||
|
|
|
|||
|
|
@ -1,2 +0,0 @@
|
|||
TEMPLATE = subdirs
|
||||
SUBDIRS = dnd-test-server.pro dnd-test-client.pro
|
||||
|
|
@ -1,24 +0,0 @@
|
|||
TEMPLATE = app
|
||||
QT += dtkcore widgets
|
||||
|
||||
SOURCES += \
|
||||
$$PWD/dnd-test-client.cpp
|
||||
|
||||
DESTDIR = $$_PRO_FILE_PWD_/../../bin
|
||||
|
||||
win32:CONFIG(release, debug|release): LIBS += -L$$OUT_PWD/../../src/release -ldtkgui
|
||||
else:win32:CONFIG(debug, debug|release): LIBS += -L$$OUT_PWD/../../src/debug -ldtkgui
|
||||
else:unix: LIBS += -L$$OUT_PWD/../../src -ldtkgui
|
||||
|
||||
INCLUDEPATH += $$PWD/../../src \
|
||||
$$PWD/../../src/filedrag
|
||||
|
||||
CONFIG(debug, debug|release) {
|
||||
unix:QMAKE_RPATHDIR += $$OUT_PWD/../../src
|
||||
}
|
||||
|
||||
DTK_MODULE_NAME=dtkgui
|
||||
load(dtk_build_config)
|
||||
target.path = $$TOOL_INSTALL_DIR
|
||||
|
||||
INSTALLS += target
|
||||
|
|
@ -14,6 +14,7 @@
|
|||
#include <QVBoxLayout>
|
||||
#include <QProgressBar>
|
||||
#include <QDebug>
|
||||
#include <QRandomGenerator>
|
||||
|
||||
DGUI_USE_NAMESPACE
|
||||
|
||||
|
|
@ -97,7 +98,7 @@ int main(int argc, char **argv)
|
|||
});
|
||||
|
||||
QObject::connect(&t, &QTimer::timeout, [&t, &pg] {
|
||||
if (qrand() & 1) {
|
||||
if (QRandomGenerator::global()->generate() & 1) {
|
||||
s->setProgress(++p);
|
||||
pg.setValue(p);
|
||||
if(p == 100) {
|
||||
|
|
|
|||
|
|
@ -1,24 +0,0 @@
|
|||
TEMPLATE = app
|
||||
QT += dtkcore widgets
|
||||
|
||||
SOURCES += \
|
||||
$$PWD/dnd-test-server.cpp
|
||||
|
||||
DESTDIR = $$_PRO_FILE_PWD_/../../bin
|
||||
|
||||
win32:CONFIG(release, debug|release): LIBS += -L$$OUT_PWD/../../src/release -ldtkgui
|
||||
else:win32:CONFIG(debug, debug|release): LIBS += -L$$OUT_PWD/../../src/debug -ldtkgui
|
||||
else:unix: LIBS += -L$$OUT_PWD/../../src -ldtkgui
|
||||
|
||||
INCLUDEPATH += $$PWD/../../src \
|
||||
$$PWD/../../src/filedrag
|
||||
|
||||
CONFIG(debug, debug|release) {
|
||||
unix:QMAKE_RPATHDIR += $$OUT_PWD/../../src
|
||||
}
|
||||
|
||||
DTK_MODULE_NAME=dtkgui
|
||||
load(dtk_build_config)
|
||||
target.path = $$TOOL_INSTALL_DIR
|
||||
|
||||
INSTALLS += target
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
TEMPLATE = subdirs
|
||||
SUBDIRS += dnd-example
|
||||
#SUBDIRS += test-taskbar
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
find_package(Qt5 REQUIRED COMPONENTS X11Extras)
|
||||
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS X11Extras)
|
||||
pkg_check_modules(XCB IMPORTED_TARGET xcb)
|
||||
|
||||
set(BIN_NAME frameless-window)
|
||||
|
|
@ -8,8 +8,8 @@ add_executable(${BIN_NAME}
|
|||
)
|
||||
|
||||
target_link_libraries(${BIN_NAME} PRIVATE
|
||||
Qt5::Gui
|
||||
Qt5::GuiPrivate
|
||||
Qt5::X11Extras
|
||||
Qt${QT_VERSION_MAJOR}::Gui
|
||||
Qt${QT_VERSION_MAJOR}::GuiPrivate
|
||||
Qt${QT_VERSION_MAJOR}::X11Extras
|
||||
PkgConfig::XCB
|
||||
)
|
||||
|
|
|
|||
|
|
@ -1,16 +1,17 @@
|
|||
find_package(Qt5 REQUIRED COMPONENTS Widgets)
|
||||
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets)
|
||||
|
||||
set(BIN taskbar)
|
||||
set(TARGET_NAME ${BIN}${DTK_VERSION_MAJOR})
|
||||
|
||||
add_executable(${BIN}
|
||||
add_executable(${TARGET_NAME}
|
||||
testtaskbarwindow.h
|
||||
testtaskbarwindow.cpp
|
||||
main.cpp
|
||||
)
|
||||
|
||||
target_link_libraries(${BIN} PRIVATE
|
||||
Qt5::Widgets
|
||||
Qt5::Gui
|
||||
target_link_libraries(${TARGET_NAME} PRIVATE
|
||||
Qt${QT_VERSION_MAJOR}::Widgets
|
||||
Qt${QT_VERSION_MAJOR}::Gui
|
||||
${LIB_NAME}
|
||||
Dtk::Core
|
||||
)
|
||||
set_target_properties(${TARGET_NAME} PROPERTIES OUTPUT_NAME ${BIN})
|
||||
|
|
|
|||
|
|
@ -6,7 +6,6 @@
|
|||
#include <DFontManager>
|
||||
|
||||
#include <QApplication>
|
||||
#include <QDesktopWidget>
|
||||
|
||||
#include "testtaskbarwindow.h"
|
||||
|
||||
|
|
|
|||
|
|
@ -1,34 +0,0 @@
|
|||
QT += dtkcore gui widgets
|
||||
|
||||
TARGET = taskbar
|
||||
TEMPLATE = app
|
||||
|
||||
CONFIG += c++11
|
||||
|
||||
SOURCES += \
|
||||
main.cpp \
|
||||
testtaskbarwindow.cpp
|
||||
|
||||
HEADERS += \
|
||||
testtaskbarwindow.h
|
||||
|
||||
DESTDIR = $$_PRO_FILE_PWD_/../../bin
|
||||
|
||||
win32:CONFIG(release, debug|release): LIBS += -L$$OUT_PWD/../../src/release -ldtkgui
|
||||
else:win32:CONFIG(debug, debug|release): LIBS += -L$$OUT_PWD/../../src/debug -ldtkgui
|
||||
else:unix: LIBS += -L$$OUT_PWD/../../src -ldtkgui
|
||||
|
||||
INCLUDEPATH += \
|
||||
$$PWD/../../src \
|
||||
$$PWD/../../src/kernel \
|
||||
$$PWD/../../src/util
|
||||
|
||||
CONFIG(debug, debug|release) {
|
||||
unix:QMAKE_RPATHDIR += $$OUT_PWD/../../src
|
||||
}
|
||||
|
||||
DTK_MODULE_NAME=dtkgui
|
||||
load(dtk_build_config)
|
||||
target.path = $$TOOL_INSTALL_DIR
|
||||
|
||||
INSTALLS += target
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
TEMPLATE = subdirs
|
||||
SUBDIRS = taskbar.pro
|
||||
|
||||
|
|
@ -0,0 +1 @@
|
|||
#include "ddesktopservices.h"
|
||||
|
|
@ -50,6 +50,7 @@ public:
|
|||
enum Attribute {
|
||||
UseInactiveColorGroup = 1 << 0,
|
||||
ColorCompositing = 1 << 1,
|
||||
DontSaveApplicationTheme = 1 << 2,
|
||||
|
||||
/* readonly flag */
|
||||
ReadOnlyLimit = 1 << 22,
|
||||
|
|
@ -58,13 +59,18 @@ public:
|
|||
IsXWindowPlatform = ReadOnlyLimit << 2,
|
||||
IsTableEnvironment = ReadOnlyLimit << 3,
|
||||
IsDeepinEnvironment = ReadOnlyLimit << 4,
|
||||
IsSpecialEffectsEnvironment = ReadOnlyLimit << 5
|
||||
IsSpecialEffectsEnvironment = ReadOnlyLimit << 5,
|
||||
IsWaylandPlatform = ReadOnlyLimit << 6,
|
||||
IsTreelandPlatform Q_DECL_ENUMERATOR_DEPRECATED_X("Use DGuiApplicationHelper::IsWaylandPlatform instead") = IsWaylandPlatform,
|
||||
HasAnimations = ReadOnlyLimit << 7,
|
||||
};
|
||||
Q_ENUM(Attribute)
|
||||
Q_DECLARE_FLAGS(Attributes, Attribute)
|
||||
|
||||
#if DTK_VERSION < DTK_VERSION_CHECK(6, 0, 0, 0)
|
||||
typedef DGuiApplicationHelper *(*HelperCreator)();
|
||||
D_DECL_DEPRECATED static void registerInstanceCreator(HelperCreator creator);
|
||||
#endif
|
||||
static DGuiApplicationHelper *instance();
|
||||
~DGuiApplicationHelper();
|
||||
|
||||
|
|
@ -78,8 +84,10 @@ public:
|
|||
static void generatePaletteColor(DPalette &base, DPalette::ColorType role, ColorType type);
|
||||
static void generatePalette(DPalette &base, ColorType type = UnknownType);
|
||||
static DPalette fetchPalette(const DPlatformTheme *theme);
|
||||
#if DTK_VERSION < DTK_VERSION_CHECK(6, 0, 0, 0)
|
||||
Q_DECL_DEPRECATED_X("Use UseInactiveColorGroup enum with setAttribute.") static void setUseInactiveColorGroup(bool on);
|
||||
Q_DECL_DEPRECATED_X("Use ColorCompositing enum with setAttribute.") static void setColorCompositingEnabled(bool on);
|
||||
#endif
|
||||
static bool isXWindowPlatform();
|
||||
static bool isTabletEnvironment();
|
||||
static bool isSpecialEffectsEnvironment();
|
||||
|
|
@ -88,11 +96,16 @@ public:
|
|||
|
||||
DPlatformTheme *systemTheme() const;
|
||||
DPlatformTheme *applicationTheme() const;
|
||||
#if DTK_VERSION < DTK_VERSION_CHECK(6, 0, 0, 0)
|
||||
D_DECL_DEPRECATED DPlatformTheme *windowTheme(QWindow *window) const;
|
||||
#endif
|
||||
|
||||
DPalette applicationPalette() const;
|
||||
DPalette applicationPalette(ColorType paletteType) const;
|
||||
void setApplicationPalette(const DPalette &palette);
|
||||
#if DTK_VERSION < DTK_VERSION_CHECK(6, 0, 0, 0)
|
||||
D_DECL_DEPRECATED DPalette windowPalette(QWindow *window) const;
|
||||
#endif
|
||||
|
||||
const DFontManager *fontManager() const;
|
||||
|
||||
|
|
@ -103,14 +116,22 @@ public:
|
|||
|
||||
static bool setSingleInstance(const QString &key, SingleScope singleScope = UserScope);
|
||||
static void setSingleInstanceInterval(int interval = 3000);
|
||||
#if DTK_VERSION < DTK_VERSION_CHECK(6, 0, 0, 0)
|
||||
D_DECL_DEPRECATED static void setSingelInstanceInterval(int interval = 3000);
|
||||
#endif
|
||||
|
||||
// 获取帮助手册目录
|
||||
static QStringList userManualPaths(const QString &appName);
|
||||
bool hasUserManual() const;
|
||||
|
||||
static bool loadTranslator(const QString &fileName, const QString &appName, const QList<QLocale> &localeFallback = QList<QLocale>() << QLocale::system());
|
||||
static bool loadTranslator(const QString &fileName, const QList<QString> &translateDirs, const QList<QLocale> &localeFallback);
|
||||
static bool loadTranslator(const QList<QLocale> &localeFallback = QList<QLocale>() << QLocale::system());
|
||||
|
||||
public Q_SLOTS:
|
||||
#if DTK_VERSION < DTK_VERSION_CHECK(6, 0, 0, 0)
|
||||
D_DECL_DEPRECATED_X("Plase use setPaletteType") void setThemeType(ColorType themeType);
|
||||
#endif
|
||||
void setPaletteType(ColorType paletteType);
|
||||
void handleHelpAction();
|
||||
static void openUrl(const QString &url);
|
||||
|
|
|
|||
|
|
@ -56,7 +56,9 @@ public:
|
|||
inline const QBrush &brush(ColorType ct) const { return brush(Current, ct); }
|
||||
inline const QBrush &itemBackground() const { return brush(ItemBackground); }
|
||||
inline const QBrush &textTitle() const { return brush(TextTitle); }
|
||||
#if DTK_VERSION < DTK_VERSION_CHECK(6, 0, 0, 0)
|
||||
D_DECL_DEPRECATED inline const QBrush &textTiele() const { return textTitle();}
|
||||
#endif
|
||||
inline const QBrush &textTips() const { return brush(TextTips); }
|
||||
inline const QBrush &textWarning() const { return brush(TextWarning); }
|
||||
inline const QBrush &textLively() const { return brush(TextLively); }
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ class QWindow;
|
|||
QT_END_NAMESPACE
|
||||
|
||||
DGUI_BEGIN_NAMESPACE
|
||||
|
||||
// TODO: class DPlatformHandle will be removed in the future
|
||||
class DPlatformHandle : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
|
@ -30,6 +30,8 @@ class DPlatformHandle : public QObject
|
|||
Q_PROPERTY(int shadowRadius READ shadowRadius WRITE setShadowRadius NOTIFY shadowRadiusChanged)
|
||||
Q_PROPERTY(QPoint shadowOffset READ shadowOffset WRITE setShadowOffset NOTIFY shadowOffsetChanged)
|
||||
Q_PROPERTY(QColor shadowColor READ shadowColor WRITE setShadowColor NOTIFY shadowColorChanged)
|
||||
Q_PROPERTY(EffectScene windowEffect READ windowEffect WRITE setWindowEffect NOTIFY windowEffectChanged)
|
||||
Q_PROPERTY(EffectType windowStartUpEffect READ windowStartUpEffect WRITE setWindowStartUpEffect NOTIFY windowStartUpEffectChanged)
|
||||
Q_PROPERTY(QPainterPath clipPath READ clipPath WRITE setClipPath NOTIFY clipPathChanged)
|
||||
Q_PROPERTY(QRegion frameMask READ frameMask WRITE setFrameMask NOTIFY frameMaskChanged)
|
||||
Q_PROPERTY(QMargins frameMargins READ frameMargins NOTIFY frameMarginsChanged)
|
||||
|
|
@ -42,6 +44,7 @@ class DPlatformHandle : public QObject
|
|||
|
||||
public:
|
||||
explicit DPlatformHandle(QWindow *window, QObject *parent = 0);
|
||||
~DPlatformHandle();
|
||||
|
||||
static QString pluginVersion();
|
||||
static bool isDXcbPlatform();
|
||||
|
|
@ -72,6 +75,31 @@ public:
|
|||
PreserveAspectFit = 0x00000001
|
||||
};
|
||||
|
||||
enum EffectScene {
|
||||
EffectNoRadius = 0x01, // 取消窗口圆角
|
||||
EffectNoShadow = 0x02, // 取消窗口阴影
|
||||
EffectNoBorder = 0x04, // 取消窗口边框
|
||||
EffectNoStart = 0x10, // 取消启动场景动效
|
||||
EffectNoClose = 0x20, // 取消关闭场景动效
|
||||
EffectNoMaximize = 0x40, // 取消最大化场景动效
|
||||
EffectNoMinimize = 0x80 // 取消最小化场景动效
|
||||
};
|
||||
|
||||
enum EffectType {
|
||||
EffectNormal = 0x01, // 标准缩放动效
|
||||
EffectCursor = 0x02, // 鼠标位置展开动效
|
||||
EffectTop = 0x04, // 从上往下展开
|
||||
EffectBottom = 0x08, // 从下往上展开
|
||||
EffectOut = 0x10 // 由外向内
|
||||
};
|
||||
|
||||
Q_ENUM(EffectScene)
|
||||
Q_ENUM(EffectType)
|
||||
Q_DECLARE_FLAGS(EffectScenes, EffectScene)
|
||||
Q_DECLARE_FLAGS(EffectTypes, EffectType)
|
||||
Q_ENUM(EffectScenes)
|
||||
Q_ENUM(EffectTypes)
|
||||
|
||||
static bool setWindowBlurAreaByWM(QWindow *window, const QVector<WMBlurArea> &area);
|
||||
static bool setWindowBlurAreaByWM(QWindow *window, const QList<QPainterPath> &paths);
|
||||
static bool setWindowWallpaperParaByWM(QWindow *window, const QRect &area, WallpaperScaleMode sMode, WallpaperFillMode fMode);
|
||||
|
|
@ -92,6 +120,9 @@ public:
|
|||
QPoint shadowOffset() const;
|
||||
QColor shadowColor() const;
|
||||
|
||||
EffectScene windowEffect();
|
||||
EffectType windowStartUpEffect();
|
||||
|
||||
QPainterPath clipPath() const;
|
||||
QRegion frameMask() const;
|
||||
QMargins frameMargins() const;
|
||||
|
|
@ -107,10 +138,12 @@ public:
|
|||
|
||||
public Q_SLOTS:
|
||||
void setWindowRadius(int windowRadius);
|
||||
|
||||
void setBorderWidth(int borderWidth);
|
||||
void setBorderColor(const QColor &borderColor);
|
||||
|
||||
void setWindowEffect(EffectScenes effectScene);
|
||||
void setWindowStartUpEffect(EffectTypes effectType);
|
||||
|
||||
void setShadowRadius(int shadowRadius);
|
||||
void setShadowOffset(const QPoint &shadowOffset);
|
||||
void setShadowColor(const QColor &shadowColor);
|
||||
|
|
@ -132,6 +165,8 @@ Q_SIGNALS:
|
|||
void shadowRadiusChanged();
|
||||
void shadowOffsetChanged();
|
||||
void shadowColorChanged();
|
||||
void windowEffectChanged();
|
||||
void windowStartUpEffectChanged();
|
||||
void clipPathChanged();
|
||||
void frameMaskChanged();
|
||||
void translucentBackgroundChanged();
|
||||
|
|
@ -168,8 +203,12 @@ DGUI_USE_NAMESPACE
|
|||
QDebug operator<<(QDebug deg, const DPlatformHandle::WMBlurArea &area);
|
||||
QT_END_NAMESPACE
|
||||
|
||||
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
|
||||
Q_DECLARE_METATYPE(QPainterPath)
|
||||
Q_DECLARE_METATYPE(QRegion)
|
||||
Q_DECLARE_METATYPE(QMargins)
|
||||
#endif
|
||||
Q_DECLARE_METATYPE(QRegion)
|
||||
Q_DECLARE_OPERATORS_FOR_FLAGS(DPlatformHandle::EffectScenes)
|
||||
Q_DECLARE_OPERATORS_FOR_FLAGS(DPlatformHandle::EffectTypes)
|
||||
|
||||
#endif // DPLATFORMHANDLE_H
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@
|
|||
DGUI_BEGIN_NAMESPACE
|
||||
|
||||
class DPlatformThemePrivate;
|
||||
// TODO: class DPlatformTheme will be removed in the future
|
||||
class DPlatformTheme : public DNativeSettings
|
||||
{
|
||||
Q_OBJECT
|
||||
|
|
@ -35,6 +36,8 @@ class DPlatformTheme : public DNativeSettings
|
|||
Q_PROPERTY(QByteArray gtkFontName READ gtkFontName WRITE setGtkFontName NOTIFY gtkFontNameChanged)
|
||||
|
||||
Q_PROPERTY(QColor activeColor READ activeColor WRITE setActiveColor NOTIFY activeColorChanged)
|
||||
Q_PROPERTY(QColor darkActiveColor READ darkActiveColor WRITE setDarkActiveColor NOTIFY darkActiveColorChanged)
|
||||
#if DTK_VERSION < DTK_VERSION_CHECK(6, 0, 0, 0)
|
||||
// QPalette
|
||||
Q_PROPERTY(QColor window READ window WRITE setWindow NOTIFY windowChanged)
|
||||
Q_PROPERTY(QColor windowText READ windowText WRITE setWindowText NOTIFY windowTextChanged)
|
||||
|
|
@ -64,6 +67,7 @@ class DPlatformTheme : public DNativeSettings
|
|||
Q_PROPERTY(QColor lightLively READ lightLively WRITE setLightLively NOTIFY lightLivelyChanged)
|
||||
Q_PROPERTY(QColor darkLively READ darkLively WRITE setDarkLively NOTIFY darkLivelyChanged)
|
||||
Q_PROPERTY(QColor frameBorder READ frameBorder WRITE setFrameBorder NOTIFY frameBorderChanged)
|
||||
#endif
|
||||
// DSizeMode
|
||||
Q_PROPERTY(int sizeMode READ sizeMode NOTIFY sizeModeChanged)
|
||||
Q_PROPERTY(int scrollBarPolicy READ scrollBarPolicy NOTIFY scrollBarPolicyChanged)
|
||||
|
|
@ -99,9 +103,11 @@ public:
|
|||
QByteArray gtkFontName() const;
|
||||
|
||||
QColor activeColor() const;
|
||||
QColor darkActiveColor() const;
|
||||
|
||||
bool isValidPalette() const;
|
||||
|
||||
#if DTK_VERSION < DTK_VERSION_CHECK(6, 0, 0, 0)
|
||||
QColor window() const;
|
||||
QColor windowText() const;
|
||||
QColor base() const;
|
||||
|
|
@ -129,8 +135,7 @@ public:
|
|||
QColor lightLively() const;
|
||||
QColor darkLively() const;
|
||||
QColor frameBorder() const;
|
||||
|
||||
int dotsPerInch(const QString &screenName = QString()) const;
|
||||
#endif
|
||||
|
||||
int sizeMode() const;
|
||||
int scrollBarPolicy() const;
|
||||
|
|
@ -150,6 +155,8 @@ public Q_SLOTS:
|
|||
void setFontPointSize(qreal fontPointSize);
|
||||
void setGtkFontName(const QByteArray &fontName);
|
||||
void setActiveColor(const QColor activeColor);
|
||||
void setDarkActiveColor(const QColor &activeColor);
|
||||
#if DTK_VERSION < DTK_VERSION_CHECK(6, 0, 0, 0)
|
||||
void setWindow(const QColor &window);
|
||||
void setWindowText(const QColor &windowText);
|
||||
void setBase(const QColor &base);
|
||||
|
|
@ -177,7 +184,9 @@ public Q_SLOTS:
|
|||
void setLightLively(const QColor &lightLively);
|
||||
void setDarkLively(const QColor &darkLively);
|
||||
void setFrameBorder(const QColor &frameBorder);
|
||||
#endif
|
||||
|
||||
int dotsPerInch(const QString &screenName = QString()) const;
|
||||
void setDotsPerInch(const QString &screenName, int dpi);
|
||||
void setWindowRadius(int windowRadius);
|
||||
|
||||
|
|
@ -196,7 +205,9 @@ Q_SIGNALS:
|
|||
void fontPointSizeChanged(qreal fontPointSize);
|
||||
void gtkFontNameChanged(QByteArray fontName);
|
||||
void activeColorChanged(QColor activeColor);
|
||||
void darkActiveColorChanged(QColor activeColor);
|
||||
void paletteChanged(DPalette palette);
|
||||
#if DTK_VERSION < DTK_VERSION_CHECK(6, 0, 0, 0)
|
||||
void windowChanged(QColor window);
|
||||
void windowTextChanged(QColor windowText);
|
||||
void baseChanged(QColor base);
|
||||
|
|
@ -224,6 +235,7 @@ Q_SIGNALS:
|
|||
void lightLivelyChanged(QColor lightLively);
|
||||
void darkLivelyChanged(QColor darkLively);
|
||||
void frameBorderChanged(QColor frameBorder);
|
||||
#endif
|
||||
void dotsPerInchChanged(const QString &screen, int dpi);
|
||||
void windowRadiusChanged(int r);
|
||||
void sizeModeChanged(int sizeMode);
|
||||
|
|
@ -231,9 +243,6 @@ Q_SIGNALS:
|
|||
|
||||
private:
|
||||
friend class DPlatformThemePrivate;
|
||||
|
||||
private:
|
||||
D_PRIVATE_SLOT(void _q_onThemePropertyChanged(const QByteArray &name, const QVariant &value))
|
||||
};
|
||||
|
||||
DGUI_END_NAMESPACE
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@
|
|||
#include <dtkgui_global.h>
|
||||
|
||||
#include <QPixmap>
|
||||
#include <QSharedPointer>
|
||||
|
||||
DCORE_BEGIN_NAMESPACE
|
||||
class DDciFile;
|
||||
|
|
@ -76,9 +77,11 @@ public:
|
|||
Light = 0,
|
||||
Dark = 1
|
||||
};
|
||||
// IconAttibute is deprecated, please use IconAttribute instead.
|
||||
enum IconAttibute {
|
||||
HasPalette = 0x001
|
||||
};
|
||||
using IconAttribute = DDciIcon::IconAttibute;
|
||||
enum IconMatchedFlag {
|
||||
None = 0,
|
||||
DontFallbackMode = 0x01,
|
||||
|
|
@ -105,8 +108,8 @@ public:
|
|||
int actualSize(int size, Theme theme, Mode mode = Normal) const;
|
||||
|
||||
QList<int> availableSizes(Theme theme, Mode mode = Normal) const;
|
||||
bool isSupportedAttribute(DDciIconMatchResult result, IconAttibute attr) const;
|
||||
static bool isSupportedAttribute(const DDciIconImage &image, IconAttibute attr);
|
||||
bool isSupportedAttribute(DDciIconMatchResult result, IconAttribute attr) const;
|
||||
static bool isSupportedAttribute(const DDciIconImage &image, IconAttribute attr);
|
||||
|
||||
QPixmap pixmap(qreal devicePixelRatio, int iconSize, Theme theme, Mode mode = Normal,
|
||||
const DDciIconPalette &palette = DDciIconPalette()) const;
|
||||
|
|
|
|||
|
|
@ -106,6 +106,7 @@ public:
|
|||
|
||||
QImage currentImage() const;
|
||||
void play(DDciIcon::Mode mode);
|
||||
void play(DDciIcon::Mode mode, DDciIconImagePlayer::Flags flags);
|
||||
void stop();
|
||||
void abort();
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,70 @@
|
|||
// SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd.
|
||||
//
|
||||
// SPDX-License-Identifier: LGPL-3.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <dtkgui_global.h>
|
||||
|
||||
#include <QMetaType>
|
||||
#include <QUrl>
|
||||
|
||||
DGUI_BEGIN_NAMESPACE
|
||||
|
||||
class DDesktopServices
|
||||
{
|
||||
public:
|
||||
|
||||
enum SystemSoundEffect {
|
||||
SSE_Notifications,
|
||||
SEE_Screenshot,
|
||||
SSE_EmptyTrash,
|
||||
SSE_SendFileComplete,
|
||||
SSE_BootUp,
|
||||
SSE_Shutdown,
|
||||
SSE_Logout,
|
||||
SSE_WakeUp,
|
||||
SSE_VolumeChange,
|
||||
SSE_LowBattery,
|
||||
SSE_PlugIn,
|
||||
SSE_PlugOut,
|
||||
SSE_DeviceAdded,
|
||||
SSE_DeviceRemoved,
|
||||
SSE_Error,
|
||||
};
|
||||
|
||||
static bool showFolder(const QString &localFilePath, const QString &startupId = QString());
|
||||
static bool showFolders(const QList<QString> &localFilePaths, const QString &startupId = QString());
|
||||
static bool showFolder(const QUrl &url, const QString &startupId = QString());
|
||||
static bool showFolders(const QList<QUrl> &urls, const QString &startupId = QString());
|
||||
|
||||
static bool showFileItemProperty(const QString &localFilePath, const QString &startupId = QString());
|
||||
static bool showFileItemProperties(const QList<QString> &localFilePaths, const QString &startupId = QString());
|
||||
static bool showFileItemProperty(const QUrl &url, const QString &startupId = QString());
|
||||
static bool showFileItemProperties(const QList<QUrl> &urls, const QString &startupId = QString());
|
||||
|
||||
static bool showFileItem(const QString &localFilePath, const QString &startupId = QString());
|
||||
static bool showFileItems(const QList<QString> &localFilePaths, const QString &startupId = QString());
|
||||
static bool showFileItem(const QUrl &url, const QString &startupId = QString());
|
||||
static bool showFileItems(const QList<QUrl> &urls, const QString &startupId = QString());
|
||||
|
||||
static bool trash(const QString &localFilePath);
|
||||
static bool trash(const QList<QString> &localFilePaths);
|
||||
static bool trash(const QUrl &url);
|
||||
static bool trash(const QList<QUrl> &urls);
|
||||
|
||||
static bool playSystemSoundEffect(const SystemSoundEffect &effect);
|
||||
static bool playSystemSoundEffect(const QString &name);
|
||||
static bool previewSystemSoundEffect(const SystemSoundEffect &effect);
|
||||
static bool previewSystemSoundEffect(const QString &name);
|
||||
static QString getNameByEffectType(const SystemSoundEffect &effect);
|
||||
|
||||
static QString errorMessage();
|
||||
};
|
||||
|
||||
DGUI_END_NAMESPACE
|
||||
|
||||
#ifdef Q_OS_LINUX
|
||||
Q_DECLARE_METATYPE(DTK_GUI_NAMESPACE::DDesktopServices::SystemSoundEffect)
|
||||
#endif
|
||||
|
||||
|
|
@ -9,6 +9,7 @@
|
|||
#include <dtkgui_global.h>
|
||||
|
||||
#include <QFont>
|
||||
#include <QObject>
|
||||
|
||||
DGUI_BEGIN_NAMESPACE
|
||||
|
||||
|
|
@ -43,6 +44,7 @@ public:
|
|||
T8,
|
||||
T9,
|
||||
T10,
|
||||
T11,
|
||||
NSizeTypes
|
||||
};
|
||||
Q_ENUM(SizeType)
|
||||
|
|
@ -109,6 +111,10 @@ public:
|
|||
{
|
||||
return get(T10);
|
||||
}
|
||||
inline const QFont t11() const
|
||||
{
|
||||
return get(T11);
|
||||
}
|
||||
|
||||
Q_SIGNALS:
|
||||
void fontChanged();
|
||||
|
|
|
|||
|
|
@ -15,6 +15,8 @@ public:
|
|||
explicit DIcon(const QIcon &other);
|
||||
virtual ~DIcon();
|
||||
QPixmap pixmap(const QSize &size, qreal devicePixelRatio, Mode mode = Normal, State state = Off);
|
||||
|
||||
static QPixmap loadNxPixmap(const QString &fileName);
|
||||
};
|
||||
|
||||
DGUI_END_NAMESPACE
|
||||
|
|
|
|||
|
|
@ -16,7 +16,9 @@ namespace DIconTheme
|
|||
{
|
||||
enum Option {
|
||||
DontFallbackToQIconFromTheme = 1 << 0,
|
||||
IgnoreBuiltinIcons = 1 << 1
|
||||
IgnoreBuiltinIcons = 1 << 1,
|
||||
IgnoreDciIcons = 1 << 2,
|
||||
IgnoreIconCache = 1 << 3
|
||||
};
|
||||
Q_DECLARE_FLAGS(Options, Option)
|
||||
|
||||
|
|
@ -37,6 +39,8 @@ namespace DIconTheme
|
|||
|
||||
Cached *cached();
|
||||
QIcon findQIcon(const QString &iconName, Options options = Options());
|
||||
QIcon findQIcon(const QString &iconName, const QIcon &fallback, Options options = Options());
|
||||
QIconEngine *createIconEngine(const QString &iconName, Options options = DontFallbackToQIconFromTheme);
|
||||
|
||||
QString findDciIconFile(const QString &iconName, const QString &themeName);
|
||||
|
||||
|
|
|
|||
|
|
@ -1,18 +1,18 @@
|
|||
@PACKAGE_INIT@
|
||||
|
||||
include(CMakeFindDependencyMacro)
|
||||
find_dependency(DtkCore)
|
||||
find_dependency(Qt5Network)
|
||||
find_dependency(Qt5Gui)
|
||||
find_dependency(Dtk@DTK_VERSION_MAJOR@Core)
|
||||
find_dependency(Qt@QT_VERSION_MAJOR@Network)
|
||||
find_dependency(Qt@QT_VERSION_MAJOR@Gui)
|
||||
|
||||
include(${CMAKE_CURRENT_LIST_DIR}/DtkGuiTargets.cmake)
|
||||
include(${CMAKE_CURRENT_LIST_DIR}/Dtk@DTK_VERSION_MAJOR@GuiTargets.cmake)
|
||||
|
||||
set(DtkGui_LIBRARIES Dtk::Gui)
|
||||
get_target_property(DtkGui_INCLUDE_DIRS Dtk::Gui INTERFACE_INCLUDE_DIRECTORIES)
|
||||
get_target_property(DtkGui_LIBRARY_DIRS Dtk::Gui INTERFACE_LINK_DIRECTORIES)
|
||||
set(DtkGui_LIBRARIES Dtk@DTK_VERSION_MAJOR@::Gui)
|
||||
get_target_property(DtkGui_INCLUDE_DIRS Dtk@DTK_VERSION_MAJOR@::Gui INTERFACE_INCLUDE_DIRECTORIES)
|
||||
get_target_property(DtkGui_LIBRARY_DIRS Dtk@DTK_VERSION_MAJOR@::Gui INTERFACE_LINK_DIRECTORIES)
|
||||
set(DtkGui_TOOL_DIRS "@PACKAGE_TOOL_INSTALL_DIR@")
|
||||
|
||||
check_required_components(DtkGui)
|
||||
check_required_components(Dtk@DTK_VERSION_MAJOR@Gui)
|
||||
|
||||
# Keep deprecated variables for compatibility
|
||||
set(DTKGUI_INCLUDE_DIR ${DtkGui_INCLUDE_DIRS})
|
||||
|
|
|
|||
|
|
@ -2,10 +2,11 @@ prefix=@CMAKE_INSTALL_PREFIX@
|
|||
exec_prefix=${prefix}
|
||||
libdir=${prefix}/@LIBRARY_INSTALL_DIR@
|
||||
includedir=${prefix}/@INCLUDE_INSTALL_DIR@
|
||||
tooldir=${prefix}/@PACKAGE_TOOL_INSTALL_DIR@
|
||||
|
||||
Name: dtkgui
|
||||
Name: dtk@DTK_VERSION_MAJOR@gui
|
||||
Description: Deepin Tool Kit dtkgui header files
|
||||
Version: @PROJECT_VERSION@
|
||||
Libs: -L${libdir} -ldtkgui
|
||||
Libs: -L${libdir} -ldtk@DTK_VERSION_MAJOR@gui
|
||||
Cflags: -I${includedir}
|
||||
Requires: dtkcore
|
||||
Requires: dtk@DTK_VERSION_MAJOR@core
|
||||
|
|
|
|||
|
|
@ -0,0 +1,27 @@
|
|||
{
|
||||
"magic": "dsg.config.meta",
|
||||
"version": "1.0",
|
||||
"contents": {
|
||||
"titlebarHeight": {
|
||||
"value": -1,
|
||||
"serial": 0,
|
||||
"name": "The height of DTitleBar",
|
||||
"name[zh_CN]": "标题栏高度",
|
||||
"description": "Configure the height of the DTitleBar",
|
||||
"description[zh_CN]": "配置标题栏的高度",
|
||||
"permissions": "readwrite",
|
||||
"visibility": "public"
|
||||
},
|
||||
"themeType": {
|
||||
"value": 0,
|
||||
"serial": 0,
|
||||
"flags": [],
|
||||
"name": "The application theme type",
|
||||
"name[zh_CN]": "应用主题的颜色",
|
||||
"description": "The application theme type, which can be set to follow the system theme (0), light theme (1), dark theme (2)",
|
||||
"description[zh_CN]": "应用主题的颜色,可以设置为跟随系统(0)、浅色(1)、 深色(2),默认为跟随系统",
|
||||
"permissions": "readwrite",
|
||||
"visibility": "public"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -3,7 +3,7 @@ QT.dtkgui.MAJOR_VERSION = @PROJECT_VERSION_MAJOR@
|
|||
QT.dtkgui.MINOR_VERSION = @PROJECT_VERSION_MINOR@
|
||||
QT.dtkgui.PATCH_VERSION = @PROJECT_VERSION_PATCH@
|
||||
QT.dtkgui.name = dtkgui
|
||||
QT.dtkgui.module = dtkgui
|
||||
QT.dtkgui.module = dtk@DTK_VERSION_MAJOR@gui
|
||||
QT.dtkgui.tools = @CMAKE_INSTALL_PREFIX@/@TOOL_INSTALL_DIR@
|
||||
QT.dtkgui.libs = @CMAKE_INSTALL_PREFIX@/@LIBRARY_INSTALL_DIR@
|
||||
QT.dtkgui.includes = @CMAKE_INSTALL_PREFIX@/@INCLUDE_INSTALL_DIR@
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
Name: dtkgui
|
||||
Version: 5.5.17
|
||||
Version: 5.7.25
|
||||
Release: 1%{?dist}
|
||||
Summary: Deepin dtkgui
|
||||
License: LGPLv3+
|
||||
|
|
|
|||
|
|
@ -1,3 +1,14 @@
|
|||
if("${QT_VERSION_MAJOR}" STREQUAL "6")
|
||||
find_package(Qt6 REQUIRED COMPONENTS Core Gui Widgets WaylandClient)
|
||||
|
||||
if (${Qt6Core_VERSION} VERSION_GREATER_EQUAL "6.10.0")
|
||||
set(QT_NO_PRIVATE_MODULE_WARNING ON)
|
||||
find_package(Qt6 REQUIRED COMPONENTS CorePrivate GuiPrivate WaylandClientPrivate)
|
||||
endif()
|
||||
else()
|
||||
find_package(Qt5 REQUIRED COMPONENTS WaylandClient XkbCommonSupport)
|
||||
endif()
|
||||
|
||||
add_library(${LIB_NAME} SHARED)
|
||||
|
||||
include(dbus/dbus.cmake)
|
||||
|
|
@ -5,6 +16,7 @@ include(filedrag/dfiledrag.cmake)
|
|||
include(kernel/kernel.cmake)
|
||||
include(private/private.cmake)
|
||||
include(util/util.cmake)
|
||||
include(plugins/plugins.cmake)
|
||||
|
||||
target_sources(${LIB_NAME} PRIVATE
|
||||
${dbus_SRC}
|
||||
|
|
@ -27,16 +39,30 @@ target_include_directories(${LIB_NAME} PUBLIC
|
|||
|
||||
target_link_libraries(${LIB_NAME}
|
||||
PUBLIC
|
||||
Qt5::Gui
|
||||
Qt5::Network
|
||||
Dtk::Core
|
||||
Qt${QT_VERSION_MAJOR}::Gui
|
||||
Qt${QT_VERSION_MAJOR}::Network
|
||||
Dtk${DTK_VERSION_MAJOR}::Core
|
||||
PRIVATE
|
||||
Qt5::GuiPrivate
|
||||
Qt5::CorePrivate
|
||||
Qt5::DBus
|
||||
PkgConfig::librsvg
|
||||
Qt${QT_VERSION_MAJOR}::GuiPrivate
|
||||
Qt${QT_VERSION_MAJOR}::CorePrivate
|
||||
Qt${QT_VERSION_MAJOR}::DBus
|
||||
Qt${QT_VERSION_MAJOR}::WaylandClientPrivate
|
||||
)
|
||||
|
||||
if("${QT_VERSION_MAJOR}" STREQUAL "5")
|
||||
target_link_libraries(${LIB_NAME}
|
||||
PRIVATE
|
||||
Qt${QT_VERSION_MAJOR}::XkbCommonSupportPrivate
|
||||
)
|
||||
endif()
|
||||
|
||||
if(DTK_DISABLE_LIBRSVG)
|
||||
find_package(Qt${QT_VERSION_MAJOR}Svg REQUIRED)
|
||||
target_link_libraries(${LIB_NAME} PRIVATE Qt${QT_VERSION_MAJOR}::Svg)
|
||||
else()
|
||||
target_link_libraries(${LIB_NAME} PRIVATE PkgConfig::librsvg)
|
||||
endif()
|
||||
|
||||
if(NOT DTK_DISABLE_EX_IMAGE_FORMAT AND EX_IMAGE_FORMAT_LIBS_FOUND)
|
||||
target_link_libraries(${LIB_NAME} PRIVATE
|
||||
${libraw_LIBRARIES}
|
||||
|
|
@ -49,7 +75,7 @@ endif()
|
|||
|
||||
if(NOT DTK_DISABLE_LIBXDG)
|
||||
target_link_libraries(${LIB_NAME} PRIVATE
|
||||
Qt5XdgIconLoader
|
||||
Qt${QT_VERSION_MAJOR}XdgIconLoader
|
||||
)
|
||||
endif()
|
||||
|
||||
|
|
@ -67,10 +93,15 @@ target_link_directories(${LIB_NAME} INTERFACE
|
|||
$<INSTALL_INTERFACE:${LIBRARY_INSTALL_DIR}>
|
||||
)
|
||||
|
||||
install(TARGETS ${LIB_NAME} EXPORT DtkGuiTargets DESTINATION "${LIBRARY_INSTALL_DIR}")
|
||||
install(EXPORT DtkGuiTargets NAMESPACE Dtk:: FILE DtkGuiTargets.cmake DESTINATION "${CONFIG_INSTALL_DIR}")
|
||||
install(TARGETS ${LIB_NAME} EXPORT Dtk${DTK_VERSION_MAJOR}GuiTargets DESTINATION "${LIBRARY_INSTALL_DIR}")
|
||||
install(EXPORT Dtk${DTK_VERSION_MAJOR}GuiTargets NAMESPACE Dtk${DTK_VERSION_MAJOR}:: FILE Dtk${DTK_VERSION_MAJOR}GuiTargets.cmake DESTINATION "${CONFIG_INSTALL_DIR}")
|
||||
install(DIRECTORY ../include/util/ DESTINATION "${INCLUDE_INSTALL_DIR}" FILES_MATCHING PATTERN "*")
|
||||
install(DIRECTORY ../include/DtkGui/ DESTINATION "${INCLUDE_INSTALL_DIR}" FILES_MATCHING PATTERN "*")
|
||||
install(DIRECTORY ../include/global/ DESTINATION "${INCLUDE_INSTALL_DIR}" FILES_MATCHING PATTERN "*")
|
||||
install(DIRECTORY ../include/kernel/ DESTINATION "${INCLUDE_INSTALL_DIR}" FILES_MATCHING PATTERN "*")
|
||||
install(DIRECTORY ../include/filedrag/ DESTINATION "${INCLUDE_INSTALL_DIR}" FILES_MATCHING PATTERN "*")
|
||||
|
||||
set(EnableCov CACHE BOOL OFF)
|
||||
if (EnableCov)
|
||||
dtk_setup_code_coverage(${LIB_NAME})
|
||||
endif()
|
||||
|
|
|
|||
|
|
@ -68,6 +68,7 @@ void DDndClientSignalRelay::stateChanged(QString uuid, int state)
|
|||
void DDndClientSignalRelay::serverDestroyed(QString uuid)
|
||||
{
|
||||
if (DFileDragClientPrivate::connectionmap.contains(uuid)) {
|
||||
Q_EMIT DFileDragClientPrivate::connectionmap[uuid]->serverDestroyed();
|
||||
DFileDragClientPrivate::connectionmap[uuid]->deleteLater();
|
||||
DFileDragClientPrivate::connectionmap.remove(uuid);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -102,6 +102,7 @@ DFileDragServer::DFileDragServer(QObject *parent)
|
|||
DFileDragServer::~DFileDragServer()
|
||||
{
|
||||
D_D(DFileDragServer);
|
||||
Q_EMIT d->dbusif->serverDestroyed(d->uuid.toString());
|
||||
DFileDragServerPrivate::servermap.remove(d->uuid.toString());
|
||||
}
|
||||
|
||||
|
|
@ -165,7 +166,6 @@ DFileDragServerPrivate::DFileDragServerPrivate(DFileDragServer *q)
|
|||
|
||||
DFileDragServerPrivate::~DFileDragServerPrivate()
|
||||
{
|
||||
Q_EMIT dbusif->serverDestroyed(uuid.toString());
|
||||
}
|
||||
|
||||
void DFileDragServerPrivate::writeMimeData(QMimeData *dest)
|
||||
|
|
|
|||
|
|
@ -49,14 +49,14 @@ public:
|
|||
\property DForeignWindow::wmClass
|
||||
\brief 窗口 WM_CLASS 的值
|
||||
\note 只读
|
||||
\l {https://tronche.com/gui/x/icccm/sec-4.html#WM_CLASS}{WM_CLASS}
|
||||
\ref {https://tronche.com/gui/x/icccm/sec-4.html#WM_CLASS}{WM_CLASS}
|
||||
*/
|
||||
|
||||
/*!
|
||||
\property DForeignWindow::pid
|
||||
\brief 窗口所属进程的 pid
|
||||
\note 只读
|
||||
\l {https://specifications.freedesktop.org/wm-spec/1.3/ar01s05.html}{_NET_WM_PID}
|
||||
\ref {https://specifications.freedesktop.org/wm-spec/1.3/ar01s05.html}{_NET_WM_PID}
|
||||
*/
|
||||
|
||||
/*!
|
||||
|
|
|
|||
|
|
@ -1,11 +1,14 @@
|
|||
// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd.
|
||||
// SPDX-FileCopyrightText: 2019 - 2023 UnionTech Software Technology Co., Ltd.
|
||||
//
|
||||
// SPDX-License-Identifier: LGPL-3.0-or-later
|
||||
|
||||
#include "dguiapplicationhelper.h"
|
||||
#include "private/dguiapplicationhelper_p.h"
|
||||
#include "dplatformhandle.h"
|
||||
|
||||
#include <DFontManager>
|
||||
#include <DStandardPaths>
|
||||
#include <DSGApplication>
|
||||
|
||||
#include <QHash>
|
||||
#include <QColor>
|
||||
|
|
@ -22,6 +25,8 @@
|
|||
#include <QLockFile>
|
||||
#include <QDirIterator>
|
||||
#include <QDesktopServices>
|
||||
#include <QLibraryInfo>
|
||||
#include <QTimer>
|
||||
|
||||
#ifdef Q_OS_UNIX
|
||||
#include <QDBusError>
|
||||
|
|
@ -36,7 +41,6 @@
|
|||
#include <QLockFile>
|
||||
#include <QDirIterator>
|
||||
#include <QDesktopServices>
|
||||
#include <DStandardPaths>
|
||||
|
||||
#ifdef Q_OS_UNIX
|
||||
#include <QDBusError>
|
||||
|
|
@ -55,9 +59,13 @@
|
|||
#include <qpa/qplatformtheme.h>
|
||||
|
||||
#ifdef Q_OS_LINUX
|
||||
#include <pwd.h>
|
||||
#include <sys/stat.h>
|
||||
#include <unistd.h>
|
||||
#endif
|
||||
|
||||
#include "orgdeepindtkpreference.hpp"
|
||||
|
||||
#ifdef Q_OS_UNIX
|
||||
class EnvReplaceGuard
|
||||
{
|
||||
|
|
@ -93,6 +101,12 @@ EnvReplaceGuard::~EnvReplaceGuard()
|
|||
|
||||
DGUI_BEGIN_NAMESPACE
|
||||
|
||||
#if DTK_VERSION < DTK_VERSION_CHECK(6, 0, 0, 0)
|
||||
using HelperCreator = DGuiApplicationHelper::HelperCreator;
|
||||
#else
|
||||
using HelperCreator = DGuiApplicationHelper *(*)();
|
||||
#endif
|
||||
|
||||
#ifdef QT_DEBUG
|
||||
Q_LOGGING_CATEGORY(dgAppHelper, "dtk.dguihelper")
|
||||
#else
|
||||
|
|
@ -106,6 +120,10 @@ Q_GLOBAL_STATIC(DFontManager, _globalFM)
|
|||
|
||||
#define WINDOW_THEME_KEY "_d_platform_theme"
|
||||
|
||||
#define DTK_ANIMATIONS_ENV "D_DTK_DISABLE_ANIMATIONS"
|
||||
Q_GLOBAL_STATIC_WITH_ARGS(OrgDeepinDTKPreference, _d_dconfig, (DTK_CORE_NAMESPACE::DConfig::globalThread(), nullptr,
|
||||
"org.deepin.dtk.preference", DTK_CORE_NAMESPACE::DSGApplication::id(), {}, false, nullptr))
|
||||
|
||||
/*!
|
||||
@private
|
||||
*/
|
||||
|
|
@ -117,11 +135,17 @@ public:
|
|||
{
|
||||
// 临时存储一个无效的指针值, 用于此处条件变量的竞争
|
||||
if (m_helper.testAndSetRelaxed(nullptr, INVALID_HELPER)) {
|
||||
#if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)
|
||||
m_helper.storeRelaxed(creator());
|
||||
m_helper.loadRelaxed()->initialize();
|
||||
}
|
||||
return m_helper.loadRelaxed();
|
||||
#else
|
||||
m_helper.store(creator());
|
||||
m_helper.load()->initialize();
|
||||
}
|
||||
|
||||
return m_helper.load();
|
||||
#endif
|
||||
}
|
||||
|
||||
inline void clear()
|
||||
|
|
@ -136,7 +160,7 @@ public:
|
|||
}
|
||||
|
||||
QAtomicPointer<DGuiApplicationHelper> m_helper;
|
||||
static DGuiApplicationHelper::HelperCreator creator;
|
||||
static HelperCreator creator;
|
||||
};
|
||||
|
||||
class LoadManualServiceWorker : public QThread
|
||||
|
|
@ -176,7 +200,41 @@ void LoadManualServiceWorker::checkManualServiceWakeUp()
|
|||
start();
|
||||
}
|
||||
|
||||
DGuiApplicationHelper::HelperCreator _DGuiApplicationHelper::creator = _DGuiApplicationHelper::defaultCreator;
|
||||
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
|
||||
class Q_DECL_HIDDEN GuiApplicationEventFilter : public QObject
|
||||
{
|
||||
public:
|
||||
explicit GuiApplicationEventFilter(DGuiApplicationHelperPrivate *transmitter,
|
||||
QObject *parent = nullptr)
|
||||
: QObject(parent)
|
||||
, m_transmitter(transmitter)
|
||||
{
|
||||
}
|
||||
virtual bool eventFilter(QObject *watched, QEvent *event) override
|
||||
{
|
||||
if (watched != qApp)
|
||||
return QObject::eventFilter(watched, event);
|
||||
|
||||
switch(event->type()) {
|
||||
case QEvent::ApplicationFontChange: {
|
||||
const QFont font(qGuiApp->font());
|
||||
m_transmitter->q_func()->fontChanged(font);
|
||||
} break;
|
||||
case QEvent::ApplicationPaletteChange: {
|
||||
m_transmitter->onApplicationPaletteChanged();
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return QObject::eventFilter(watched, event);
|
||||
}
|
||||
private:
|
||||
DGuiApplicationHelperPrivate *m_transmitter = nullptr;
|
||||
};
|
||||
#endif
|
||||
|
||||
HelperCreator _DGuiApplicationHelper::creator = _DGuiApplicationHelper::defaultCreator;
|
||||
Q_GLOBAL_STATIC(_DGuiApplicationHelper, _globalHelper)
|
||||
|
||||
int DGuiApplicationHelperPrivate::waitTime = 3000;
|
||||
|
|
@ -217,18 +275,15 @@ void DGuiApplicationHelperPrivate::initApplication(QGuiApplication *app)
|
|||
// 跟随application销毁
|
||||
qAddPostRoutine(staticCleanApplication);
|
||||
|
||||
q->connect(app, &QGuiApplication::paletteChanged, q, [q, this, app] {
|
||||
// 如果用户没有自定义颜色类型, 则应该通知程序的颜色类型发送变化
|
||||
if (Q_LIKELY(!isCustomPalette())) {
|
||||
Q_EMIT q->themeTypeChanged(q->toColorType(app->palette()));
|
||||
Q_EMIT q->applicationPaletteChanged();
|
||||
} else {
|
||||
qWarning() << "DGuiApplicationHelper: Don't use QGuiApplication::setPalette on DTK application.";
|
||||
}
|
||||
});
|
||||
|
||||
// 转发程序自己变化的信号
|
||||
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
|
||||
app->installEventFilter(new GuiApplicationEventFilter(this, app));
|
||||
#else
|
||||
q->connect(app, &QGuiApplication::fontChanged, q, &DGuiApplicationHelper::fontChanged);
|
||||
q->connect(app, &QGuiApplication::paletteChanged, q, [this] {
|
||||
onApplicationPaletteChanged();
|
||||
});
|
||||
#endif
|
||||
|
||||
if (Q_UNLIKELY(!appTheme)) { // 此时说明appTheme可能已经被初始化为了systemtheme
|
||||
if (QGuiApplicationPrivate::is_app_running) {
|
||||
|
|
@ -251,7 +306,7 @@ void DGuiApplicationHelperPrivate::staticInitApplication()
|
|||
if (!_globalHelper.exists())
|
||||
return;
|
||||
|
||||
if (DGuiApplicationHelper *helper = _globalHelper->m_helper.load())
|
||||
if (DGuiApplicationHelper *helper = _globalHelper->helper())
|
||||
helper->d_func()->initApplication(qGuiApp);
|
||||
}
|
||||
|
||||
|
|
@ -267,7 +322,7 @@ DPlatformTheme *DGuiApplicationHelperPrivate::initWindow(QWindow *window) const
|
|||
window->setProperty(WINDOW_THEME_KEY, QVariant::fromValue(theme));
|
||||
theme->setParent(window); // 跟随窗口销毁
|
||||
|
||||
auto onWindowThemeChanged = [window, theme, this] {
|
||||
auto onWindowThemeChanged = [window, this] {
|
||||
// 如果程序自定义了调色板, 则没有必要再关心窗口自身平台主题的变化
|
||||
// 需要注意的是, 这里的信号和事件可能会与 notifyAppThemeChanged 中的重复
|
||||
// 但是不能因此而移除这里的通知, 当窗口自身所对应的平台主题发生变化时, 这里
|
||||
|
|
@ -301,10 +356,19 @@ void DGuiApplicationHelperPrivate::_q_initApplicationTheme(bool notifyChange)
|
|||
// 监听与程序主题相关的改变
|
||||
QObject::connect(appTheme, &DPlatformTheme::themeNameChanged, app, onAppThemeChanged);
|
||||
QObject::connect(appTheme, &DPlatformTheme::paletteChanged, app, onAppThemeChanged);
|
||||
QObject::connect(appTheme, &DPlatformTheme::activeColorChanged, app, [this] {
|
||||
QTimer *timer = new QTimer(app);
|
||||
timer->setInterval(100);
|
||||
timer->setSingleShot(true);
|
||||
QObject::connect(timer, &QTimer::timeout, timer, [this] {
|
||||
if (!appPalette)
|
||||
notifyAppThemeChanged();
|
||||
});
|
||||
QObject::connect(appTheme, &DPlatformTheme::activeColorChanged, app, [timer]{
|
||||
timer->start();
|
||||
});
|
||||
QObject::connect(appTheme, &DPlatformTheme::darkActiveColorChanged, app, [timer] {
|
||||
timer->start();
|
||||
});
|
||||
|
||||
// appTheme在此之前可能由systemTheme所代替被使用,此时在创建appTheme
|
||||
// 并初始化之后,应当发送信号通知程序主题的改变
|
||||
|
|
@ -316,16 +380,39 @@ void DGuiApplicationHelperPrivate::_q_initApplicationTheme(bool notifyChange)
|
|||
void DGuiApplicationHelperPrivate::notifyAppThemeChanged()
|
||||
{
|
||||
D_Q(DGuiApplicationHelper);
|
||||
|
||||
QWindowSystemInterfacePrivate::ThemeChangeEvent event(nullptr);
|
||||
// 此事件会促使QGuiApplication重新从QPlatformTheme中获取系统级别的QPalette.
|
||||
// 而在deepin平台下, 系统级别的QPalette来源自 \a applicationPalette()
|
||||
QGuiApplicationPrivate::processThemeChanged(&event);
|
||||
notifyAppThemeChangedByEvent();
|
||||
QMetaObject::invokeMethod(q, [q] () {
|
||||
// 通知主题类型发生变化, 此处可能存在误报的行为, 不过不应该对此做额外的约束
|
||||
// 此信号的行为应当等价于 applicationPaletteChanged
|
||||
Q_EMIT q->themeTypeChanged(q->themeType());
|
||||
// 通知调色板对象的改变
|
||||
Q_EMIT q->applicationPaletteChanged();
|
||||
}, Qt::QueuedConnection);
|
||||
}
|
||||
|
||||
void DGuiApplicationHelperPrivate::notifyAppThemeChangedByEvent()
|
||||
{
|
||||
// https://github.com/qt/qtbase/commit/68a9c5fe513e147e4cffd29b50a4714813df411e
|
||||
#if QT_VERSION >= QT_VERSION_CHECK(6, 10, 0)
|
||||
QWindowSystemInterfacePrivate::ThemeChangeEvent event;
|
||||
#else
|
||||
QWindowSystemInterfacePrivate::ThemeChangeEvent event(nullptr);
|
||||
#endif
|
||||
// 此事件会促使QGuiApplication重新从QPlatformTheme中获取系统级别的QPalette.
|
||||
// 而在deepin平台下, 系统级别的QPalette来源自 \a applicationPalette()
|
||||
QGuiApplicationPrivate::processThemeChanged(&event);
|
||||
}
|
||||
|
||||
void DGuiApplicationHelperPrivate::onApplicationPaletteChanged()
|
||||
{
|
||||
D_Q(DGuiApplicationHelper);
|
||||
// 如果用户没有自定义颜色类型, 则应该通知程序的颜色类型发送变化
|
||||
if (Q_LIKELY(!isCustomPalette())) {
|
||||
Q_EMIT q->themeTypeChanged(q->toColorType(qGuiApp->palette()));
|
||||
Q_EMIT q->applicationPaletteChanged();
|
||||
} else {
|
||||
qWarning() << "DGuiApplicationHelper: Don't use QGuiApplication::setPalette on DTK application.";
|
||||
}
|
||||
}
|
||||
|
||||
bool DGuiApplicationHelperPrivate::isCustomPalette() const
|
||||
|
|
@ -333,6 +420,57 @@ bool DGuiApplicationHelperPrivate::isCustomPalette() const
|
|||
return appPalette || paletteType != DGuiApplicationHelper::UnknownType;
|
||||
}
|
||||
|
||||
void DGuiApplicationHelperPrivate::setPaletteType(DGuiApplicationHelper::ColorType ct, bool emitSignal)
|
||||
{
|
||||
if (paletteType == ct)
|
||||
return;
|
||||
|
||||
if (qGuiApp && qGuiApp->testAttribute(Qt::AA_SetPalette))
|
||||
qWarning() << "DGuiApplicationHelper: Plase check 'QGuiApplication::setPalette',"
|
||||
" Don't use it on DTK application.";
|
||||
|
||||
paletteType = ct;
|
||||
|
||||
if (!emitSignal) {
|
||||
notifyAppThemeChangedByEvent();
|
||||
return;
|
||||
}
|
||||
|
||||
// 如果未固定调色板, 则paletteType的变化可能会导致调色板改变, 应当通知程序更新数据
|
||||
if (!appPalette)
|
||||
notifyAppThemeChanged();
|
||||
|
||||
D_Q(DGuiApplicationHelper);
|
||||
Q_EMIT q->paletteTypeChanged(paletteType);
|
||||
}
|
||||
|
||||
void DGuiApplicationHelperPrivate::initPaletteType() const
|
||||
{
|
||||
DCORE_USE_NAMESPACE
|
||||
if (DGuiApplicationHelper::testAttribute(DGuiApplicationHelper::DontSaveApplicationTheme))
|
||||
return;
|
||||
|
||||
if (_d_dconfig.exists())
|
||||
return;
|
||||
|
||||
auto applyThemeType = [this](bool emitSignal){
|
||||
int ct = _d_dconfig->themeType();
|
||||
if (ct > DGuiApplicationHelper::DarkType || ct < DGuiApplicationHelper::UnknownType)
|
||||
ct = DGuiApplicationHelper::UnknownType;
|
||||
|
||||
const_cast<DGuiApplicationHelperPrivate *>(this)->setPaletteType(DGuiApplicationHelper::ColorType(ct), emitSignal);
|
||||
};
|
||||
|
||||
// 读取配置文件中的主题类型并立即应用
|
||||
DTK_CORE_NAMESPACE::DConfig dconfig("org.deepin.dtk.preference");
|
||||
int ct = dconfig.value("themeType", DGuiApplicationHelper::UnknownType).toInt();
|
||||
const_cast<DGuiApplicationHelperPrivate *>(this)->setPaletteType(DGuiApplicationHelper::ColorType(ct), false);
|
||||
|
||||
QObject::connect(_d_dconfig.operator ()(), &OrgDeepinDTKPreference::themeTypeChanged, _d_dconfig, [applyThemeType] {
|
||||
applyThemeType(true);
|
||||
});
|
||||
}
|
||||
|
||||
void DGuiApplicationHelperPrivate::_q_sizeModeChanged(int mode)
|
||||
{
|
||||
D_Q(DGuiApplicationHelper);
|
||||
|
|
@ -430,6 +568,7 @@ void DGuiApplicationHelper::initialize()
|
|||
d->init();
|
||||
}
|
||||
|
||||
#if DTK_VERSION < DTK_VERSION_CHECK(6, 0, 0, 0)
|
||||
/*!
|
||||
\brief 创建 DGuiApplicationHelper 对象.
|
||||
|
||||
|
|
@ -447,6 +586,7 @@ void DGuiApplicationHelper::registerInstanceCreator(DGuiApplicationHelper::Helpe
|
|||
_globalHelper->clear();
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
inline static int adjustColorValue(int base, qint8 increment, int max = 255)
|
||||
{
|
||||
|
|
@ -602,15 +742,15 @@ QColor DGuiApplicationHelper::blendColor(const QColor &substrate, const QColor &
|
|||
}
|
||||
|
||||
static QColor light_qpalette[QPalette::NColorRoles] {
|
||||
QColor("#414d68"), //WindowText
|
||||
QColor(0, 0, 0, 0.7 * 255), //WindowText
|
||||
QColor("#e5e5e5"), //Button
|
||||
QColor("#e6e6e6"), //Light
|
||||
QColor("#e5e5e5"), //Midlight
|
||||
QColor("#e3e3e3"), //Dark
|
||||
QColor("#e4e4e4"), //Mid
|
||||
QColor("#414d68"), //Text
|
||||
QColor(0, 0, 0, 0.7 * 255), //Text
|
||||
Qt::black, //BrightText
|
||||
QColor("#414d68"), //ButtonText
|
||||
QColor(0, 0, 0, 0.7 * 255), //ButtonText
|
||||
Qt::white, //Base
|
||||
QColor("#f8f8f8"), //Window
|
||||
QColor(0, 0, 0, 0.05 * 255), //Shadow
|
||||
|
|
@ -621,39 +761,39 @@ static QColor light_qpalette[QPalette::NColorRoles] {
|
|||
QColor(0, 0, 0, 0.03 * 255), //AlternateBase
|
||||
Qt::white, //NoRole
|
||||
QColor(255, 255, 255, 0.8 * 255), //ToolTipBase
|
||||
Qt::black //ToolTipText
|
||||
QColor(0, 0, 0, 0.85 * 255) //ToolTipText
|
||||
};
|
||||
|
||||
static QColor dark_qpalette[QPalette::NColorRoles] {
|
||||
QColor("#c0c6d4"), //WindowText
|
||||
QColor(255, 255, 255, 0.7 * 255), //WindowText
|
||||
QColor("#444444"), //Button
|
||||
QColor("#484848"), //Light
|
||||
QColor("#474747"), //Midlight
|
||||
QColor("#414141"), //Dark
|
||||
QColor("#434343"), //Mid
|
||||
QColor("#c0c6d4"), //Text
|
||||
QColor(255, 255, 255, 0.7 * 255), //Text
|
||||
Qt::white, //BrightText
|
||||
QColor("#c0c6d4"), //ButtonText
|
||||
QColor(255, 255, 255, 0.7 * 255), //ButtonText
|
||||
QColor("#282828"), //Base
|
||||
QColor("#252525"), //Window
|
||||
QColor(0, 0, 0, 0.05 * 255), //Shadow
|
||||
QColor("#0081ff"), //Highlight
|
||||
QColor("#024CCA"), //Highlight
|
||||
QColor("#F1F6FF"), //HighlightedText
|
||||
QColor("#0082fa"), //Link
|
||||
QColor("#ad4579"), //LinkVisited
|
||||
QColor(0, 0, 0, 0.05 * 255), //AlternateBase
|
||||
Qt::black, //NoRole
|
||||
QColor(45, 45, 45, 0.8 * 255), //ToolTipBase
|
||||
QColor("#c0c6d4") //ToolTipText
|
||||
QColor(255, 255, 255, 0.85 * 255) //ToolTipText
|
||||
};
|
||||
|
||||
static QColor light_dpalette[DPalette::NColorTypes] {
|
||||
QColor(), //NoType
|
||||
QColor(0, 0, 0, 255 * 0.03), //ItemBackground
|
||||
QColor("#001A2E"), //TextTitle
|
||||
QColor("#526A7F"), //TextTips
|
||||
QColor(0, 0, 0, 0.85 * 255), //TextTitle
|
||||
QColor(0, 0, 0, 0.6 * 255), //TextTips
|
||||
QColor("#FF5736"), //TextWarning
|
||||
Qt::white, //TextLively
|
||||
Qt::black, //TextLively
|
||||
QColor("#0081FF"), //LightLively
|
||||
QColor("#0081FF"), //DarkLively
|
||||
QColor(0, 0, 0, 0.05 * 255), //FrameBorder
|
||||
|
|
@ -665,8 +805,8 @@ static QColor light_dpalette[DPalette::NColorTypes] {
|
|||
static QColor dark_dpalette[DPalette::NColorTypes] {
|
||||
QColor(), //NoType
|
||||
QColor(255, 255, 255, 255 * 0.05), //ItemBackground
|
||||
QColor("#C0C6D4"), //TextTitle
|
||||
QColor("#6D7C88"), //TextTips
|
||||
QColor(255, 255, 255, 0.85 * 255), //TextTitle
|
||||
QColor(255, 255, 255, 0.6 * 255), //TextTips
|
||||
QColor("#E43F2E"), //TextWarning
|
||||
Qt::white, //TextLively
|
||||
QColor("#0059d2"), //LightLively
|
||||
|
|
@ -744,9 +884,7 @@ DPalette DGuiApplicationHelper::standardPalette(DGuiApplicationHelper::ColorType
|
|||
|
||||
#if QT_VERSION >= QT_VERSION_CHECK(5, 12, 0)
|
||||
if (role == QPalette::PlaceholderText) {
|
||||
// 5.15新添加此颜色 这里使用5.11的颜色保证效果与5.11对齐
|
||||
color = dcolor_list[DPalette::PlaceholderText];
|
||||
continue;
|
||||
}
|
||||
#endif
|
||||
// 处理半透明色
|
||||
|
|
@ -860,15 +998,7 @@ void DGuiApplicationHelper::generatePaletteColor(DPalette &base, QPalette::Color
|
|||
base.setBrush(QPalette::Disabled, role, window);
|
||||
base.setBrush(QPalette::Inactive, role, window);
|
||||
return;
|
||||
} else if (role == QPalette::Highlight && toColorType(base) == DarkType) {
|
||||
// 暗色模式下的高亮色亮度要降低10%,避免太突兀
|
||||
QColor highlight = base.highlight().color();
|
||||
|
||||
if (highlight.isValid()) {
|
||||
base.setColor(QPalette::Highlight, adjustColor(highlight, 0, 0, -20, 0, 0, 0, 0));
|
||||
}
|
||||
}
|
||||
|
||||
generatePaletteColor_helper(base, role, type);
|
||||
}
|
||||
|
||||
|
|
@ -921,6 +1051,20 @@ void DGuiApplicationHelper::generatePalette(DPalette &base, ColorType type)
|
|||
}
|
||||
}
|
||||
|
||||
static inline QColor getActiveColor(const DPlatformTheme *theme, DGuiApplicationHelper::ColorType type)
|
||||
{
|
||||
QColor activeColor;
|
||||
if (type == DGuiApplicationHelper::DarkType) {
|
||||
activeColor = theme->darkActiveColor();
|
||||
if (!activeColor.isValid()) {
|
||||
activeColor = theme->activeColor();
|
||||
}
|
||||
} else {
|
||||
activeColor = theme->activeColor();
|
||||
}
|
||||
|
||||
return activeColor;
|
||||
}
|
||||
/*!
|
||||
\brief 获取调色板数据.
|
||||
|
||||
|
|
@ -946,7 +1090,7 @@ DPalette DGuiApplicationHelper::fetchPalette(const DPlatformTheme *theme)
|
|||
|
||||
bool ok = false;
|
||||
base_palette = theme->fetchPalette(standardPalette(type), &ok);
|
||||
const QColor &active_color = theme->activeColor();
|
||||
const QColor &active_color = getActiveColor(theme, type);
|
||||
|
||||
if (active_color.isValid()) {
|
||||
base_palette.setColor(QPalette::Normal, QPalette::Highlight, active_color);
|
||||
|
|
@ -964,6 +1108,7 @@ DPalette DGuiApplicationHelper::fetchPalette(const DPlatformTheme *theme)
|
|||
return base_palette;
|
||||
}
|
||||
|
||||
#if DTK_VERSION < DTK_VERSION_CHECK(6, 0, 0, 0)
|
||||
/*!
|
||||
\brief 设置是否将调色板的颜色改为半透明模式.
|
||||
|
||||
|
|
@ -984,6 +1129,7 @@ void DGuiApplicationHelper::setColorCompositingEnabled(bool on)
|
|||
{
|
||||
DGuiApplicationHelper::setAttribute(Attribute::ColorCompositing, on);
|
||||
}
|
||||
#endif
|
||||
|
||||
bool DGuiApplicationHelper::isXWindowPlatform()
|
||||
{
|
||||
|
|
@ -1045,6 +1191,7 @@ DPlatformTheme *DGuiApplicationHelper::applicationTheme() const
|
|||
return d->appTheme;
|
||||
}
|
||||
|
||||
#if DTK_VERSION < DTK_VERSION_CHECK(6, 0, 0, 0)
|
||||
/*!
|
||||
\brief 返回窗口级别的主题, 优先级高于 windowTheme 和 systemTheme.
|
||||
|
||||
|
|
@ -1066,6 +1213,7 @@ DPlatformTheme *DGuiApplicationHelper::windowTheme(QWindow *window) const
|
|||
|
||||
return theme;
|
||||
}
|
||||
#endif
|
||||
|
||||
/*!
|
||||
\brief 返回应用程序调色板.
|
||||
|
|
@ -1082,7 +1230,7 @@ DPlatformTheme *DGuiApplicationHelper::windowTheme(QWindow *window) const
|
|||
\warning 不应该在DTK程序中使用QGuiApplication/QApplication::setPalette
|
||||
\return 应用程序调色板
|
||||
*/
|
||||
DPalette DGuiApplicationHelper::applicationPalette() const
|
||||
DPalette DGuiApplicationHelper::applicationPalette(ColorType paletteType) const
|
||||
{
|
||||
D_DC(DGuiApplicationHelper);
|
||||
|
||||
|
|
@ -1090,7 +1238,7 @@ DPalette DGuiApplicationHelper::applicationPalette() const
|
|||
return *d->appPalette;
|
||||
}
|
||||
|
||||
ColorType type = d->paletteType;
|
||||
ColorType type = paletteType;
|
||||
bool aa_setPalette = qGuiApp && qGuiApp->testAttribute(Qt::AA_SetPalette);
|
||||
// 此时appTheme可能还未初始化, 因此先使用systemTheme, 待appTheme初始化之后会
|
||||
// 通知程序调色板发生改变
|
||||
|
|
@ -1113,7 +1261,7 @@ DPalette DGuiApplicationHelper::applicationPalette() const
|
|||
// 覆盖DPalette中的的QPalette数据
|
||||
pa.QPalette::operator =(qGuiApp->palette());
|
||||
} else {
|
||||
const QColor &active_color = theme->activeColor();
|
||||
const QColor &active_color = getActiveColor(theme, type);
|
||||
|
||||
if (active_color.isValid()) {
|
||||
// 应用Active Color
|
||||
|
|
@ -1125,6 +1273,13 @@ DPalette DGuiApplicationHelper::applicationPalette() const
|
|||
return pa;
|
||||
}
|
||||
|
||||
DPalette DGuiApplicationHelper::applicationPalette() const
|
||||
{
|
||||
D_DC(DGuiApplicationHelper);
|
||||
|
||||
return applicationPalette(d->paletteType);
|
||||
}
|
||||
|
||||
/*!
|
||||
\brief DGuiApplicationHelper::setApplicationPalette.
|
||||
|
||||
|
|
@ -1146,13 +1301,21 @@ void DGuiApplicationHelper::setApplicationPalette(const DPalette &palette)
|
|||
qWarning() << "DGuiApplicationHelper: Plase check 'QGuiApplication::setPalette', Don't use it on DTK application.";
|
||||
}
|
||||
|
||||
auto resolve = [](const DPalette &palette) ->bool {
|
||||
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
|
||||
return palette.resolveMask();
|
||||
#else
|
||||
return palette.resolve();
|
||||
#endif
|
||||
};
|
||||
|
||||
if (d->appPalette) {
|
||||
if (palette.resolve()) {
|
||||
if (resolve(palette)) {
|
||||
*d->appPalette = palette;
|
||||
} else {
|
||||
d->appPalette.reset();
|
||||
}
|
||||
} else if (palette.resolve()) {
|
||||
} else if (resolve(palette)) {
|
||||
d->appPalette.reset(new DPalette(palette));
|
||||
} else {
|
||||
return;
|
||||
|
|
@ -1162,6 +1325,7 @@ void DGuiApplicationHelper::setApplicationPalette(const DPalette &palette)
|
|||
d->notifyAppThemeChanged();
|
||||
}
|
||||
|
||||
#if DTK_VERSION < DTK_VERSION_CHECK(6, 0, 0, 0)
|
||||
/*!
|
||||
\brief DGuiApplicationHelper::windowPalette.
|
||||
|
||||
|
|
@ -1179,6 +1343,11 @@ void DGuiApplicationHelper::setApplicationPalette(const DPalette &palette)
|
|||
*/
|
||||
DPalette DGuiApplicationHelper::windowPalette(QWindow *window) const
|
||||
{
|
||||
#if DTK_VERSION >= DTK_VERSION_CHECK(5, 0, 0, 0)
|
||||
Q_UNUSED(window);
|
||||
qCWarning(dgAppHelper) << "DGuiApplicationHelper::windowPalette is deprecated, please use applicationPalette instead.";
|
||||
return applicationPalette();
|
||||
#else
|
||||
D_DC(DGuiApplicationHelper);
|
||||
|
||||
// 如果程序自定义了调色版, 则不再关心窗口对应的平台主题上的设置
|
||||
|
|
@ -1193,7 +1362,9 @@ DPalette DGuiApplicationHelper::windowPalette(QWindow *window) const
|
|||
}
|
||||
|
||||
return fetchPalette(theme);
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
/*!
|
||||
\brief DGuiApplicationHelper::fontManager.
|
||||
|
|
@ -1206,6 +1377,8 @@ const DFontManager *DGuiApplicationHelper::fontManager() const
|
|||
{
|
||||
// 为对象初始化信号链接
|
||||
if (!_globalFM.exists()) {
|
||||
// fontManager's base font is update from qGuiApp.
|
||||
_globalFM->setBaseFont(qGuiApp->font());
|
||||
connect(this, &DGuiApplicationHelper::fontChanged, _globalFM, &DFontManager::setBaseFont);
|
||||
}
|
||||
|
||||
|
|
@ -1248,7 +1421,7 @@ DGuiApplicationHelper::ColorType DGuiApplicationHelper::toColorType(const QColor
|
|||
*/
|
||||
DGuiApplicationHelper::ColorType DGuiApplicationHelper::toColorType(const QPalette &palette)
|
||||
{
|
||||
return toColorType(palette.background().color());
|
||||
return toColorType(palette.window().color());
|
||||
}
|
||||
|
||||
/*!
|
||||
|
|
@ -1266,6 +1439,7 @@ DGuiApplicationHelper::ColorType DGuiApplicationHelper::themeType() const
|
|||
{
|
||||
D_DC(DGuiApplicationHelper);
|
||||
|
||||
d->initPaletteType();
|
||||
if (d->paletteType != UnknownType) {
|
||||
return d->paletteType;
|
||||
}
|
||||
|
|
@ -1285,6 +1459,8 @@ DGuiApplicationHelper::ColorType DGuiApplicationHelper::themeType() const
|
|||
DGuiApplicationHelper::ColorType DGuiApplicationHelper::paletteType() const
|
||||
{
|
||||
D_DC(DGuiApplicationHelper);
|
||||
|
||||
d->initPaletteType();
|
||||
return d->paletteType;
|
||||
}
|
||||
|
||||
|
|
@ -1326,11 +1502,37 @@ bool DGuiApplicationHelper::setSingleInstance(const QString &key, DGuiApplicatio
|
|||
}
|
||||
|
||||
socket_key += key;
|
||||
|
||||
#ifdef Q_OS_LINUX
|
||||
auto info = QFileInfo{"/proc/self/ns/pid"};
|
||||
// maybe kernel doesn't support namespace
|
||||
while (info.exists()) {
|
||||
auto pidns = QFileInfo{info.symLinkTarget()}.fileName();
|
||||
if (pidns.isEmpty()) {
|
||||
break;
|
||||
}
|
||||
|
||||
// maybe format has been changed
|
||||
auto start = pidns.indexOf('[');
|
||||
auto end = pidns.indexOf(']');
|
||||
if (start == -1 || end == -1) {
|
||||
break;
|
||||
}
|
||||
|
||||
auto num = pidns.mid(start + 1, end - start - 1);
|
||||
|
||||
// append pid namespace
|
||||
socket_key += QStringLiteral("_%1").arg(num);
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
|
||||
QString lockfile = socket_key;
|
||||
if (!lockfile.startsWith(QLatin1Char('/'))) {
|
||||
lockfile = QDir::cleanPath(QDir::tempPath());
|
||||
lockfile += QLatin1Char('/') + socket_key;
|
||||
}
|
||||
|
||||
lockfile += QStringLiteral(".lock");
|
||||
static QScopedPointer <QLockFile> lock(new QLockFile(lockfile));
|
||||
// 同一个进程多次调用本接口使用最后一次设置的 key
|
||||
|
|
@ -1400,8 +1602,8 @@ bool DGuiApplicationHelper::setSingleInstance(const QString &key, DGuiApplicatio
|
|||
qCInfo(dgAppHelper) << "New instance: pid=" << pid << "arguments=" << arguments;
|
||||
|
||||
// 通知新进程的信息
|
||||
if (_globalHelper.exists() && _globalHelper->m_helper.load())
|
||||
Q_EMIT _globalHelper->m_helper.load()->newProcessInstance(pid, arguments);
|
||||
if (_globalHelper.exists() && _globalHelper->helper())
|
||||
Q_EMIT _globalHelper->helper()->newProcessInstance(pid, arguments);
|
||||
});
|
||||
|
||||
instance->flush(); //发送数据给新的实例
|
||||
|
|
@ -1424,6 +1626,7 @@ void DGuiApplicationHelper::setSingleInstanceInterval(int interval)
|
|||
DGuiApplicationHelperPrivate::waitTime = interval;
|
||||
}
|
||||
|
||||
#if DTK_VERSION < DTK_VERSION_CHECK(6, 0, 0, 0)
|
||||
/*!
|
||||
\brief 设置从QLocalServer获取消息的等待时间.
|
||||
|
||||
|
|
@ -1433,31 +1636,33 @@ void DGuiApplicationHelper::setSingelInstanceInterval(int interval)
|
|||
{
|
||||
DGuiApplicationHelperPrivate::waitTime = interval;
|
||||
}
|
||||
#endif
|
||||
|
||||
static bool hasLocalManualFile()
|
||||
/*!
|
||||
\brief 获取帮助手册目录
|
||||
|
||||
\return 帮助手册目录
|
||||
*/
|
||||
QStringList DGuiApplicationHelper::userManualPaths(const QString &appName)
|
||||
{
|
||||
Q_ASSERT(!appName.isEmpty());
|
||||
|
||||
// 获取主目录
|
||||
DCORE_USE_NAMESPACE
|
||||
if (QStandardPaths::findExecutable(QLatin1String("dman")).isEmpty())
|
||||
return false;
|
||||
QStringList manualPaths;
|
||||
const auto &pathlist = DStandardPaths::standardLocations(QStandardPaths::GenericDataLocation);
|
||||
|
||||
// search all subdirectories
|
||||
const QString xdgDataPath = qgetenv("XDG_DATA_DIRS");
|
||||
auto dataPath = xdgDataPath.split(":");
|
||||
// /usr/share /usr/loacal/share ...
|
||||
const auto &dataDirs = DStandardPaths::standardLocations(QStandardPaths::GenericDataLocation);
|
||||
dataPath.append(dataDirs);
|
||||
for (const auto &path : dataPath) {
|
||||
QString strManualPath = QStringList {path, "deepin-manual"}.join(QDir::separator());
|
||||
|
||||
QDirIterator it(strManualPath, QDir::AllDirs | QDir::NoDotAndDotDot,QDirIterator::Subdirectories);
|
||||
while (it.hasNext()) {
|
||||
it.next();
|
||||
if (it.fileName().contains(qApp->applicationName(), Qt::CaseInsensitive))
|
||||
return true;
|
||||
// 获取所有已存在的帮助手册目录
|
||||
for (int i = 0; i < pathlist.size(); ++i) {
|
||||
QString strAssetPath = QStringList{pathlist[i], "deepin-manual/manual-assets"}.join(QDir::separator());
|
||||
for (const QString &type : QDir(strAssetPath).entryList(QDir::NoDotAndDotDot | QDir::Dirs)) {
|
||||
QString appDirPath = QStringList{strAssetPath, type, appName}.join(QDir::separator());
|
||||
if (QDir(appDirPath).exists())
|
||||
manualPaths.push_back(appDirPath);
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
return manualPaths;
|
||||
}
|
||||
|
||||
/*!
|
||||
|
|
@ -1466,43 +1671,29 @@ static bool hasLocalManualFile()
|
|||
*/
|
||||
bool DGuiApplicationHelper::hasUserManual() const
|
||||
{
|
||||
#ifdef Q_OS_LINUX
|
||||
static qint8 hasManual = -1;
|
||||
if (hasManual >= 0)
|
||||
return hasManual;
|
||||
|
||||
QDBusConnection conn = QDBusConnection::sessionBus();
|
||||
if (!conn.isConnected()) {
|
||||
static LoadManualServiceWorker *manualWorker = new LoadManualServiceWorker;
|
||||
manualWorker->checkManualServiceWakeUp();
|
||||
|
||||
// 可能存在 dbus 服务有问题,但是文件存在,这时不更新缓存
|
||||
return /*hasManual = */hasLocalManualFile();
|
||||
return userManualPaths(qApp->applicationName()).size() > 0;
|
||||
}
|
||||
|
||||
QDBusInterface manualSearch("com.deepin.Manual.Search",
|
||||
"/com/deepin/Manual/Search",
|
||||
"com.deepin.Manual.Search");
|
||||
if (!manualSearch.isValid())
|
||||
return hasManual = hasLocalManualFile();
|
||||
static inline QStringList translateDirs(const QString &appName)
|
||||
{
|
||||
Q_ASSERT(!appName.isEmpty());
|
||||
|
||||
QDBusPendingCall call = manualSearch.asyncCall("ManualExists", qApp->applicationName());
|
||||
QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(call, const_cast<DGuiApplicationHelper *>(this));
|
||||
QObject::connect(watcher, &QDBusPendingCallWatcher::finished, this, [](QDBusPendingCallWatcher *pWatcher) {
|
||||
QDBusPendingReply<bool> reply = *pWatcher;
|
||||
if (reply.isError()) {
|
||||
qWarning() << reply.error();
|
||||
} else {
|
||||
hasManual = reply.value();
|
||||
QStringList dirs;
|
||||
|
||||
DCORE_USE_NAMESPACE
|
||||
//("/home/user/.local/share", "/usr/local/share", "/usr/share")
|
||||
auto dataDirs = DStandardPaths::standardLocations(QStandardPaths::GenericDataLocation);
|
||||
for (const auto &path : dataDirs) {
|
||||
DPathBuf pathBuf(path);
|
||||
dirs << (pathBuf / appName / "translations").toString();
|
||||
}
|
||||
|
||||
pWatcher->deleteLater();
|
||||
});
|
||||
return dirs;
|
||||
}
|
||||
|
||||
return hasManual >= 0 ? hasManual : false;
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
bool DGuiApplicationHelper::loadTranslator(const QString &fileName, const QString &appName, const QList<QLocale> &localeFallback)
|
||||
{
|
||||
return loadTranslator(fileName, translateDirs(appName), localeFallback);
|
||||
}
|
||||
|
||||
bool DGuiApplicationHelper::loadTranslator(const QString &fileName, const QList<QString> &translateDirs, const QList<QLocale> &localeFallback)
|
||||
|
|
@ -1517,39 +1708,55 @@ bool DGuiApplicationHelper::loadTranslator(const QString &fileName, const QList<
|
|||
for (auto item : defaultDirPrefix)
|
||||
dirs << item.join("translations").toString();
|
||||
|
||||
QStringList missingQmfiles;
|
||||
for (const auto &locale : localeFallback) {
|
||||
QStringList translateFilenames {QString("%1_%2").arg(fileName).arg(locale.name())};
|
||||
const QStringList parseLocalNameList = locale.name().split("_", QString::SkipEmptyParts);
|
||||
if (parseLocalNameList.length() > 0)
|
||||
translateFilenames << QString("%1_%2").arg(fileName).arg(parseLocalNameList.at(0));
|
||||
|
||||
for (const auto &translateFilename : translateFilenames) {
|
||||
for (const auto &dir : dirs) {
|
||||
DPathBuf path(dir);
|
||||
QString translatePath = (path / translateFilename).toString();
|
||||
if (QFile::exists(translatePath + ".qm")) {
|
||||
qDebug() << "load translate" << translatePath;
|
||||
auto translator = new QTranslator(qApp);
|
||||
translator->load(translatePath);
|
||||
// QTranslator::load(locale, filename, prefix, directory, suffix) automatically handles
|
||||
// locale fallback (e.g., zh_CN -> zh -> C) and file existence checking
|
||||
if (translator->load(locale, fileName, QString('_'), dir)) {
|
||||
qCDebug(dgAppHelper) << "load translate" << fileName << "for locale" << locale.name() << "from" << dir;
|
||||
qApp->installTranslator(translator);
|
||||
qApp->setProperty("dapp_locale", locale.name());
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
// fix english does not need to translation.
|
||||
if (locale.language() != QLocale::English)
|
||||
missingQmfiles << translateFilename + ".qm";
|
||||
delete translator; // Clean up if loading failed
|
||||
}
|
||||
}
|
||||
|
||||
if (missingQmfiles.size() > 0) {
|
||||
qWarning() << fileName << "can not find qm files" << missingQmfiles;
|
||||
// Collect locale names for warning message
|
||||
QStringList localeNames;
|
||||
for (const auto &locale : localeFallback) {
|
||||
if (locale.language() != QLocale::English) // English does not need translation
|
||||
localeNames << locale.name();
|
||||
}
|
||||
|
||||
if (!localeNames.isEmpty()) {
|
||||
qWarning() << fileName << "can not find qm files for locales" << localeNames;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool DGuiApplicationHelper::loadTranslator(const QList<QLocale> &localeFallback)
|
||||
{
|
||||
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
|
||||
auto qTranslationsPath = QLibraryInfo::location(QLibraryInfo::TranslationsPath);
|
||||
#else
|
||||
auto qTranslationsPath = QLibraryInfo::path(QLibraryInfo::TranslationsPath);
|
||||
#endif
|
||||
|
||||
DCORE_USE_NAMESPACE
|
||||
//("/home/user/.local/share", "/usr/local/share", "/usr/share")
|
||||
auto qtranslateDirs = translateDirs("qt" QT_STRINGIFY(QT_VERSION_MAJOR));
|
||||
qtranslateDirs.prepend(qTranslationsPath);
|
||||
|
||||
loadTranslator("qt", qtranslateDirs, localeFallback);
|
||||
loadTranslator("qtbase", qtranslateDirs, localeFallback);
|
||||
|
||||
auto appName = qApp->applicationName();
|
||||
|
||||
return loadTranslator(appName, appName, localeFallback);
|
||||
}
|
||||
|
||||
DGuiApplicationHelper::SizeMode DGuiApplicationHelper::sizeMode() const
|
||||
{
|
||||
D_DC(DGuiApplicationHelper);
|
||||
|
|
@ -1601,16 +1808,30 @@ bool DGuiApplicationHelper::testAttribute(DGuiApplicationHelper::Attribute attri
|
|||
return false;
|
||||
}
|
||||
return QString(typeid(*QGuiApplicationPrivate::platform_theme).name()).contains("QDeepinTheme");
|
||||
case IsDeepinEnvironment:
|
||||
return QGuiApplicationPrivate::instance()->platformIntegration()->services()->desktopEnvironment().toLower().contains("deepin");
|
||||
case IsDeepinEnvironment: {
|
||||
const auto &de = QGuiApplicationPrivate::instance()->platformIntegration()->services()->desktopEnvironment();
|
||||
return de.toLower().contains("deepin") || de == "DDE";
|
||||
}
|
||||
case IsSpecialEffectsEnvironment: {
|
||||
return qgetenv("DTK_DISABLED_SPECIAL_EFFECTS").toInt() != 1;
|
||||
}
|
||||
case IsWaylandPlatform: {
|
||||
static bool isTreeland = qApp->platformName() == QByteArrayLiteral("wayland");
|
||||
return isTreeland;
|
||||
}
|
||||
case HasAnimations: {
|
||||
static bool isDisable = qEnvironmentVariableIsSet(DTK_ANIMATIONS_ENV);
|
||||
if (isDisable)
|
||||
return false;
|
||||
|
||||
return _d_dconfig->enableDtkAnimations();
|
||||
}
|
||||
default:
|
||||
return DGuiApplicationHelperPrivate::attributes.testFlag(attribute);
|
||||
}
|
||||
}
|
||||
|
||||
#if DTK_VERSION < DTK_VERSION_CHECK(6, 0, 0, 0)
|
||||
/*!
|
||||
\brief DGuiApplicationHelper::setThemeType.
|
||||
\deprecated 同 setPaletteType, 已废弃,请不要再使用。
|
||||
|
|
@ -1620,6 +1841,7 @@ void DGuiApplicationHelper::setThemeType(DGuiApplicationHelper::ColorType themeT
|
|||
{
|
||||
setPaletteType(themeType);
|
||||
}
|
||||
#endif
|
||||
|
||||
/*!
|
||||
\brief 设置程序所应用的调色板类型.
|
||||
|
|
@ -1634,21 +1856,17 @@ void DGuiApplicationHelper::setThemeType(DGuiApplicationHelper::ColorType themeT
|
|||
*/
|
||||
void DGuiApplicationHelper::setPaletteType(DGuiApplicationHelper::ColorType paletteType)
|
||||
{
|
||||
D_D(DGuiApplicationHelper);
|
||||
|
||||
if (d->paletteType == paletteType)
|
||||
if (!qApp) {
|
||||
qWarning() << "Can't call `DGuiApplicationHelper::setPaletteType` before QCoreApplication constructed.";
|
||||
return;
|
||||
|
||||
if (qGuiApp && qGuiApp->testAttribute(Qt::AA_SetPalette)) {
|
||||
qWarning() << "DGuiApplicationHelper: Plase check 'QGuiApplication::setPalette', Don't use it on DTK application.";
|
||||
}
|
||||
|
||||
d->paletteType = paletteType;
|
||||
// 如果未固定调色板, 则paletteType的变化可能会导致调色板改变, 应当通知程序更新数据
|
||||
if (!d->appPalette)
|
||||
d->notifyAppThemeChanged();
|
||||
D_D(DGuiApplicationHelper);
|
||||
|
||||
Q_EMIT paletteTypeChanged(paletteType);
|
||||
d->initPaletteType();
|
||||
d->setPaletteType(paletteType, true);
|
||||
if (!DGuiApplicationHelper::testAttribute(DGuiApplicationHelper::DontSaveApplicationTheme))
|
||||
_d_dconfig->setThemeType(static_cast<int>(paletteType));
|
||||
}
|
||||
|
||||
/*!
|
||||
|
|
|
|||
|
|
@ -128,7 +128,12 @@ QDebug operator<<(QDebug debug, const DTK_GUI_NAMESPACE::DNativeSettings &settin
|
|||
const QByteArrayList &keys = settings.allKeys();
|
||||
|
||||
for (const QByteArray &key : keys) {
|
||||
debug << key << settings.getSetting(key) << endl;
|
||||
debug << key << settings.getSetting(key) <<
|
||||
#if QT_VERSION >= QT_VERSION_CHECK(5, 15, 0)
|
||||
Qt::endl;
|
||||
#else
|
||||
endl;
|
||||
#endif
|
||||
}
|
||||
|
||||
return debug;
|
||||
|
|
|
|||
|
|
@ -1,96 +1,24 @@
|
|||
// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd.
|
||||
// SPDX-FileCopyrightText: 2022-2024 UnionTech Software Technology Co., Ltd.
|
||||
//
|
||||
// SPDX-License-Identifier: LGPL-3.0-or-later
|
||||
|
||||
#include "dguiapplicationhelper.h"
|
||||
#include "dplatformhandle.h"
|
||||
#include "dplatformtheme.h"
|
||||
#include "dwindowmanagerhelper.h"
|
||||
|
||||
#include <QWindow>
|
||||
#include <QGuiApplication>
|
||||
#include <QDebug>
|
||||
#include <QPlatformSurfaceEvent>
|
||||
#include "dplatformwindowinterface_p.h"
|
||||
#include "dguiapplicationhelper.h"
|
||||
#ifndef DTK_DISABLE_XCB
|
||||
#include "plugins/platform/xcb/dxcbplatformwindowinterface.h"
|
||||
#endif
|
||||
#ifndef DTK_DISABLE_TREELAND
|
||||
#include "plugins/platform/treeland/dtreelandplatformwindowinterface.h"
|
||||
#endif
|
||||
|
||||
DGUI_BEGIN_NAMESPACE
|
||||
|
||||
#define DXCB_PLUGIN_KEY "dxcb"
|
||||
#define DXCB_PLUGIN_SYMBOLIC_PROPERTY "_d_isDxcb"
|
||||
static QHash<const DPlatformHandle*, DPlatformWindowInterface*> g_platformWindowImpls;
|
||||
|
||||
#define DEFINE_CONST_CHAR(Name) const char _##Name[] = "_d_" #Name
|
||||
|
||||
DEFINE_CONST_CHAR(useDxcb);
|
||||
DEFINE_CONST_CHAR(redirectContent);
|
||||
DEFINE_CONST_CHAR(netWmStates);
|
||||
DEFINE_CONST_CHAR(windowRadius);
|
||||
DEFINE_CONST_CHAR(borderWidth);
|
||||
DEFINE_CONST_CHAR(borderColor);
|
||||
DEFINE_CONST_CHAR(shadowRadius);
|
||||
DEFINE_CONST_CHAR(shadowOffset);
|
||||
DEFINE_CONST_CHAR(shadowColor);
|
||||
DEFINE_CONST_CHAR(clipPath);
|
||||
DEFINE_CONST_CHAR(frameMask);
|
||||
DEFINE_CONST_CHAR(frameMargins);
|
||||
DEFINE_CONST_CHAR(translucentBackground);
|
||||
DEFINE_CONST_CHAR(enableSystemResize);
|
||||
DEFINE_CONST_CHAR(enableSystemMove);
|
||||
DEFINE_CONST_CHAR(enableBlurWindow);
|
||||
DEFINE_CONST_CHAR(windowBlurAreas);
|
||||
DEFINE_CONST_CHAR(windowBlurPaths);
|
||||
DEFINE_CONST_CHAR(windowWallpaperParas);
|
||||
DEFINE_CONST_CHAR(autoInputMaskByClipPath);
|
||||
|
||||
DEFINE_CONST_CHAR(resolve_mask);
|
||||
enum PropRole {
|
||||
WindowRadius,
|
||||
|
||||
// TO BE CONTINUE
|
||||
};
|
||||
|
||||
// functions
|
||||
DEFINE_CONST_CHAR(setWmBlurWindowBackgroundArea);
|
||||
DEFINE_CONST_CHAR(setWmBlurWindowBackgroundPathList);
|
||||
DEFINE_CONST_CHAR(setWmBlurWindowBackgroundMaskImage);
|
||||
DEFINE_CONST_CHAR(setWmWallpaperParameter);
|
||||
DEFINE_CONST_CHAR(setWindowProperty);
|
||||
DEFINE_CONST_CHAR(pluginVersion);
|
||||
DEFINE_CONST_CHAR(disableOverrideCursor);
|
||||
DEFINE_CONST_CHAR(enableDxcb);
|
||||
DEFINE_CONST_CHAR(isEnableDxcb);
|
||||
DEFINE_CONST_CHAR(setEnableNoTitlebar);
|
||||
DEFINE_CONST_CHAR(isEnableNoTitlebar);
|
||||
DEFINE_CONST_CHAR(clientLeader);
|
||||
|
||||
static void resolve(QObject *obj, PropRole role)
|
||||
static DPlatformWindowInterface *platformWindowImpl(const DPlatformHandle *platformHandle)
|
||||
{
|
||||
int mask = obj->property(_resolve_mask).toInt();
|
||||
obj->setProperty(_resolve_mask, (mask |= 1 << role));
|
||||
}
|
||||
|
||||
static bool resolved(QObject *obj, PropRole role)
|
||||
{
|
||||
int mask = obj->property(_resolve_mask).toInt();
|
||||
return mask & (1 << role);
|
||||
}
|
||||
|
||||
static void setWindowProperty(QWindow *window, const char *name, const QVariant &value)
|
||||
{
|
||||
if (!window)
|
||||
return;
|
||||
|
||||
#if QT_VERSION >= QT_VERSION_CHECK(5, 4, 0)
|
||||
static QFunctionPointer setWindowProperty = qApp->platformFunction(_setWindowProperty);
|
||||
#else
|
||||
constexpr QFunctionPointer setWindowProperty = nullptr;
|
||||
#endif
|
||||
|
||||
if (!setWindowProperty) {
|
||||
window->setProperty(name, value);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
reinterpret_cast<void(*)(QWindow *, const char *, const QVariant &)>(setWindowProperty)(window, name, value);
|
||||
return g_platformWindowImpls.value(platformHandle);
|
||||
}
|
||||
|
||||
/*!
|
||||
|
|
@ -122,8 +50,8 @@ static void setWindowProperty(QWindow *window, const char *name, const QVariant
|
|||
</pre>
|
||||
\endraw
|
||||
|
||||
\l {http://doc.qt.io/qt-5/qpa.html}{QPA}
|
||||
\l {https://github.com/linuxdeepin/qt5dxcb-plugin/}{dxcb插件}
|
||||
\ref {http://doc.qt.io/qt-5/qpa.html}{QPA}
|
||||
\ref {https://github.com/linuxdeepin/qt5dxcb-plugin/}{dxcb插件}
|
||||
\sa Dtk::Gui::DPlatformHandle::isDXcbPlatform
|
||||
\sa QGuiApplication::platformNativeInterface
|
||||
\sa Dtk::Widget::DMainWindow
|
||||
|
|
@ -355,20 +283,50 @@ static void setWindowProperty(QWindow *window, const char *name, const QVariant
|
|||
|
||||
\brief 描述窗口背景模糊区域的数据结构,包含位置、大小、圆角半径等信息.
|
||||
|
||||
\value x
|
||||
\var x
|
||||
水平方向的坐标
|
||||
\value y
|
||||
\var y
|
||||
竖直方向的坐标
|
||||
\value width
|
||||
\var width
|
||||
区域的宽度
|
||||
\value height
|
||||
\var height
|
||||
区域的高度
|
||||
\value xRadius
|
||||
\var xRadius
|
||||
水平方向的圆角半径
|
||||
\value yRaduis
|
||||
\var yRaduis
|
||||
竖直方向的圆角半径
|
||||
*/
|
||||
|
||||
static DPlatformWindowInterfaceFactory::Creator OutsideWindowInterfaceCreator = nullptr;
|
||||
|
||||
void DPlatformWindowInterfaceFactory::registerInterface(Creator creator)
|
||||
{
|
||||
OutsideWindowInterfaceCreator = creator;
|
||||
}
|
||||
|
||||
static DPlatformWindowInterface *createWindowInterface(QWindow *window, DPlatformHandle *platformHandle)
|
||||
{
|
||||
DPlatformWindowInterface *impl = nullptr;
|
||||
if (OutsideWindowInterfaceCreator) {
|
||||
impl = OutsideWindowInterfaceCreator(window, platformHandle);
|
||||
}
|
||||
if (!impl) {
|
||||
#ifndef DTK_DISABLE_XCB
|
||||
if (DGuiApplicationHelper::testAttribute(DGuiApplicationHelper::IsXWindowPlatform)) {
|
||||
impl = new DXCBPlatformWindowInterface(window, platformHandle);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifndef DTK_DISABLE_TREELAND
|
||||
if (DGuiApplicationHelper::testAttribute(DGuiApplicationHelper::IsWaylandPlatform)) {
|
||||
impl = new DTreeLandPlatformWindowInterface(window, platformHandle);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
return impl;
|
||||
}
|
||||
|
||||
/*!
|
||||
\brief DPlatformHandle::DPlatformHandle
|
||||
将 \a window 对象传递给 enableDXcbForWindow
|
||||
|
|
@ -380,9 +338,21 @@ DPlatformHandle::DPlatformHandle(QWindow *window, QObject *parent)
|
|||
: QObject(parent)
|
||||
, m_window(window)
|
||||
{
|
||||
enableDXcbForWindow(window);
|
||||
auto impl = createWindowInterface(window, this);
|
||||
if (!impl) {
|
||||
qDebug() << "Use default DPlatformWindowInterface for the window" << window->winId();
|
||||
impl = new DPlatformWindowInterface(window, this);
|
||||
}
|
||||
g_platformWindowImpls.insert(this, impl);
|
||||
|
||||
window->installEventFilter(this);
|
||||
impl->setEnabled(true);
|
||||
}
|
||||
|
||||
DPlatformHandle::~DPlatformHandle()
|
||||
{
|
||||
if (auto item = g_platformWindowImpls.take(this)) {
|
||||
delete item;
|
||||
}
|
||||
}
|
||||
|
||||
/*!
|
||||
|
|
@ -392,16 +362,11 @@ DPlatformHandle::DPlatformHandle(QWindow *window, QObject *parent)
|
|||
*/
|
||||
QString DPlatformHandle::pluginVersion()
|
||||
{
|
||||
QFunctionPointer pv = 0;
|
||||
|
||||
#if QT_VERSION >= QT_VERSION_CHECK(5, 4, 0)
|
||||
pv = qApp->platformFunction(_pluginVersion);
|
||||
#ifndef DTK_DISABLE_XCB
|
||||
return DXCBPlatformWindowInterface::pluginVersion();
|
||||
#else
|
||||
return {};
|
||||
#endif
|
||||
|
||||
if (Q_UNLIKELY(!pv))
|
||||
return QString();
|
||||
|
||||
return reinterpret_cast<QString(*)()>(pv)();
|
||||
}
|
||||
|
||||
/*!
|
||||
|
|
@ -410,12 +375,11 @@ QString DPlatformHandle::pluginVersion()
|
|||
*/
|
||||
bool DPlatformHandle::isDXcbPlatform()
|
||||
{
|
||||
if (!qApp)
|
||||
#ifndef DTK_DISABLE_XCB
|
||||
return DXCBPlatformWindowInterface::isDXcbPlatform();
|
||||
#else
|
||||
return false;
|
||||
|
||||
static bool _is_dxcb = qApp->platformName() == DXCB_PLUGIN_KEY || qApp->property(DXCB_PLUGIN_SYMBOLIC_PROPERTY).toBool();
|
||||
|
||||
return _is_dxcb;
|
||||
#endif
|
||||
}
|
||||
|
||||
/*!
|
||||
|
|
@ -511,28 +475,9 @@ bool DPlatformHandle::isDXcbPlatform()
|
|||
*/
|
||||
void DPlatformHandle::enableDXcbForWindow(QWindow *window)
|
||||
{
|
||||
// 优先使用窗口管理器中实现的no titlebar接口实现自定义窗口修饰器的效果
|
||||
if (setEnabledNoTitlebarForWindow(window, true)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!isDXcbPlatform())
|
||||
return;
|
||||
|
||||
QFunctionPointer enable_dxcb = nullptr;
|
||||
|
||||
#if QT_VERSION >= QT_VERSION_CHECK(5, 4, 0)
|
||||
enable_dxcb = qApp->platformFunction(_enableDxcb);
|
||||
#endif
|
||||
|
||||
if (enable_dxcb) {
|
||||
(*reinterpret_cast<bool(*)(QWindow*)>(enable_dxcb))(window);
|
||||
} else if (window->handle()) {
|
||||
Q_ASSERT_X(window->property(_useDxcb).toBool(), "DPlatformHandler:",
|
||||
"Must be called before window handle has been created. See also QWindow::handle()");
|
||||
} else {
|
||||
window->setProperty(_useDxcb, true);
|
||||
}
|
||||
DPlatformHandle handle(window);
|
||||
auto impl = platformWindowImpl(&handle);
|
||||
impl->setEnabled(true);
|
||||
}
|
||||
|
||||
/*!
|
||||
|
|
@ -549,13 +494,16 @@ void DPlatformHandle::enableDXcbForWindow(QWindow *window)
|
|||
绘制的内容不受dxcb插件的控制,它的绘制内容可能会超过 Sub Window 的有效区域,这种
|
||||
情况下,应该使用此接口,并将 redirectContent 指定为 true。
|
||||
|
||||
\l {https://www.x.org/releases/X11R7.5/doc/damageproto/damageproto.txt}{X11 Damage}
|
||||
\ref {https://www.x.org/releases/X11R7.5/doc/damageproto/damageproto.txt}{X11 Damage}
|
||||
*/
|
||||
void DPlatformHandle::enableDXcbForWindow(QWindow *window, bool redirectContent)
|
||||
{
|
||||
window->setProperty(_redirectContent, redirectContent);
|
||||
|
||||
enableDXcbForWindow(window);
|
||||
DPlatformHandle handle(window);
|
||||
#ifndef DTK_DISABLE_XCB
|
||||
if (auto impl = dynamic_cast<DXCBPlatformWindowInterface *>(platformWindowImpl(&handle))) {
|
||||
impl->enableDXcb(redirectContent);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
/*!
|
||||
|
|
@ -566,55 +514,11 @@ void DPlatformHandle::enableDXcbForWindow(QWindow *window, bool redirectContent)
|
|||
*/
|
||||
bool DPlatformHandle::isEnabledDXcb(const QWindow *window)
|
||||
{
|
||||
if (isEnabledNoTitlebar(window))
|
||||
return true;
|
||||
|
||||
QFunctionPointer is_enable_dxcb = nullptr;
|
||||
|
||||
#if QT_VERSION >= QT_VERSION_CHECK(5, 4, 0)
|
||||
is_enable_dxcb = qApp->platformFunction(_isEnableDxcb);
|
||||
#endif
|
||||
|
||||
if (is_enable_dxcb) {
|
||||
return (*reinterpret_cast<bool(*)(const QWindow*)>(is_enable_dxcb))(window);
|
||||
DPlatformHandle handle(const_cast<QWindow *>(window));
|
||||
auto impl = platformWindowImpl(&handle);
|
||||
return impl->isEnabled();
|
||||
}
|
||||
|
||||
return window->property(_useDxcb).toBool();
|
||||
}
|
||||
|
||||
static void initWindowRadius(QWindow *window)
|
||||
{
|
||||
if (window->property(_windowRadius).isValid())
|
||||
return;
|
||||
|
||||
auto theme = DGuiApplicationHelper::instance()->windowTheme(window);
|
||||
int radius = theme->windowRadius(18); //###(zccrs): 暂时在此处给窗口默认设置为18px的圆角
|
||||
|
||||
setWindowProperty(window, _windowRadius, radius);
|
||||
window->connect(theme, &DPlatformTheme::windowRadiusChanged, window, [=] (int radius) {
|
||||
if (!resolved(window, PropRole::WindowRadius))
|
||||
setWindowProperty(window, _windowRadius, radius);
|
||||
}, Qt::UniqueConnection);
|
||||
}
|
||||
|
||||
class Q_DECL_HIDDEN CreatorWindowEventFile : public QObject {
|
||||
public:
|
||||
CreatorWindowEventFile(QObject *par= nullptr): QObject(par){}
|
||||
|
||||
public:
|
||||
bool eventFilter(QObject *watched, QEvent *event) override {
|
||||
if (event->type() == QEvent::PlatformSurface) {
|
||||
QPlatformSurfaceEvent *se = static_cast<QPlatformSurfaceEvent*>(event);
|
||||
if (se->surfaceEventType() == QPlatformSurfaceEvent::SurfaceCreated) { // 若收到此信号, 则 WinID 已被创建
|
||||
initWindowRadius(qobject_cast<QWindow *>(watched));
|
||||
deleteLater();
|
||||
}
|
||||
}
|
||||
|
||||
return QObject::eventFilter(watched, event);
|
||||
}
|
||||
};
|
||||
|
||||
/*!
|
||||
\brief DPlatformHandle::setEnabledNoTitlebarForWindow.
|
||||
|
||||
|
|
@ -629,35 +533,9 @@ public:
|
|||
*/
|
||||
bool DPlatformHandle::setEnabledNoTitlebarForWindow(QWindow *window, bool enable)
|
||||
{
|
||||
auto isDWaylandPlatform = [] {
|
||||
return qApp->platformName() == "dwayland" || qApp->property("_d_isDwayland").toBool();
|
||||
};
|
||||
if (!(isDXcbPlatform() || isDWaylandPlatform()))
|
||||
return false;
|
||||
|
||||
if (isEnabledNoTitlebar(window) == enable)
|
||||
return true;
|
||||
|
||||
QFunctionPointer enable_no_titlear = nullptr;
|
||||
|
||||
#if QT_VERSION >= QT_VERSION_CHECK(5, 4, 0)
|
||||
enable_no_titlear = qApp->platformFunction(_setEnableNoTitlebar);
|
||||
#endif
|
||||
|
||||
if (enable_no_titlear) {
|
||||
bool ok = (*reinterpret_cast<bool(*)(QWindow*, bool)>(enable_no_titlear))(window, enable);
|
||||
if (ok && enable) {
|
||||
if (window->handle()) {
|
||||
initWindowRadius(window);
|
||||
} else {
|
||||
window->installEventFilter(new CreatorWindowEventFile(window));
|
||||
}
|
||||
}
|
||||
|
||||
return ok;
|
||||
}
|
||||
|
||||
return false;
|
||||
DPlatformHandle handle(window);
|
||||
auto impl = platformWindowImpl(&handle);
|
||||
return impl->setEnabledNoTitlebar(enable);
|
||||
}
|
||||
|
||||
/*!
|
||||
|
|
@ -668,34 +546,9 @@ bool DPlatformHandle::setEnabledNoTitlebarForWindow(QWindow *window, bool enable
|
|||
*/
|
||||
bool DPlatformHandle::isEnabledNoTitlebar(const QWindow *window)
|
||||
{
|
||||
QFunctionPointer is_enable_no_titlebar = nullptr;
|
||||
|
||||
#if QT_VERSION >= QT_VERSION_CHECK(5, 4, 0)
|
||||
is_enable_no_titlebar = qApp->platformFunction(_isEnableNoTitlebar);
|
||||
#endif
|
||||
|
||||
if (is_enable_no_titlebar) {
|
||||
return (*reinterpret_cast<bool(*)(const QWindow*)>(is_enable_no_titlebar))(window);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
inline DPlatformHandle::WMBlurArea operator *(const DPlatformHandle::WMBlurArea &area, qreal scale)
|
||||
{
|
||||
if (qFuzzyCompare(scale, 1.0))
|
||||
return area;
|
||||
|
||||
DPlatformHandle::WMBlurArea new_area;
|
||||
|
||||
new_area.x = qRound64(area.x * scale);
|
||||
new_area.y = qRound64(area.y * scale);
|
||||
new_area.width = qRound64(area.width * scale);
|
||||
new_area.height = qRound64(area.height * scale);
|
||||
new_area.xRadius = qRound64(area.xRadius * scale);
|
||||
new_area.yRaduis = qRound64(area.yRaduis * scale);
|
||||
|
||||
return new_area;
|
||||
DPlatformHandle handle(const_cast<QWindow *>(window));
|
||||
auto impl = platformWindowImpl(&handle);
|
||||
return impl->isEnabledNoTitlebar();
|
||||
}
|
||||
|
||||
/*!
|
||||
|
|
@ -742,64 +595,14 @@ inline DPlatformHandle::WMBlurArea operator *(const DPlatformHandle::WMBlurArea
|
|||
*/
|
||||
bool DPlatformHandle::setWindowBlurAreaByWM(QWindow *window, const QVector<DPlatformHandle::WMBlurArea> &area)
|
||||
{
|
||||
if (!window) {
|
||||
return false;
|
||||
DPlatformHandle handle(const_cast<QWindow *>(window));
|
||||
#ifndef DTK_DISABLE_XCB
|
||||
if (auto impl = dynamic_cast<DXCBPlatformWindowInterface *>(platformWindowImpl(&handle))) {
|
||||
return impl->setWindowBlurArea(area);
|
||||
}
|
||||
|
||||
if (isEnabledDXcb(window)) {
|
||||
setWindowProperty(window, _windowBlurAreas, QVariant::fromValue(*(reinterpret_cast<const QVector<quint32>*>(&area))));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
QFunctionPointer setWmBlurWindowBackgroundArea = Q_NULLPTR;
|
||||
|
||||
#if QT_VERSION >= QT_VERSION_CHECK(5, 4, 0)
|
||||
setWmBlurWindowBackgroundArea = qApp->platformFunction(_setWmBlurWindowBackgroundArea);
|
||||
#endif
|
||||
|
||||
if (!setWmBlurWindowBackgroundArea) {
|
||||
qWarning("setWindowBlurAreaByWM is not support");
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
QSurfaceFormat format = window->format();
|
||||
|
||||
format.setAlphaBufferSize(8);
|
||||
window->setFormat(format);
|
||||
|
||||
const qreal device_ratio = window->devicePixelRatio();
|
||||
|
||||
if (qFuzzyCompare(device_ratio, 1.0)) {
|
||||
return reinterpret_cast<bool(*)(const quint32, const QVector<WMBlurArea>&)>(setWmBlurWindowBackgroundArea)(window->winId(), area);
|
||||
}
|
||||
|
||||
QVector<WMBlurArea> new_areas;
|
||||
|
||||
new_areas.reserve(area.size());
|
||||
|
||||
for (const WMBlurArea &a : area) {
|
||||
new_areas.append(a * device_ratio);
|
||||
}
|
||||
|
||||
return reinterpret_cast<bool(*)(const quint32, const QVector<WMBlurArea>&)>(setWmBlurWindowBackgroundArea)(window->winId(), new_areas);
|
||||
}
|
||||
|
||||
inline QPainterPath operator *(const QPainterPath &path, qreal scale)
|
||||
{
|
||||
if (qFuzzyCompare(1.0, scale))
|
||||
return path;
|
||||
|
||||
QPainterPath new_path = path;
|
||||
|
||||
for (int i = 0; i < path.elementCount(); ++i) {
|
||||
const QPainterPath::Element &e = path.elementAt(i);
|
||||
|
||||
new_path.setElementPositionAt(i, qRound(e.x * scale), qRound(e.y * scale));
|
||||
}
|
||||
|
||||
return new_path;
|
||||
handle.setEnableBlurWindow(true);
|
||||
return true;
|
||||
}
|
||||
|
||||
/*!
|
||||
|
|
@ -848,48 +651,14 @@ inline QPainterPath operator *(const QPainterPath &path, qreal scale)
|
|||
*/
|
||||
bool DPlatformHandle::setWindowBlurAreaByWM(QWindow *window, const QList<QPainterPath> &paths)
|
||||
{
|
||||
if (!window) {
|
||||
return false;
|
||||
DPlatformHandle handle(const_cast<QWindow *>(window));
|
||||
#ifndef DTK_DISABLE_XCB
|
||||
if (auto impl = dynamic_cast<DXCBPlatformWindowInterface *>(platformWindowImpl(&handle))) {
|
||||
return impl->setWindowBlurArea(paths);
|
||||
}
|
||||
|
||||
if (isEnabledDXcb(window)) {
|
||||
setWindowProperty(window, _windowBlurPaths, QVariant::fromValue(paths));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
QFunctionPointer setWmBlurWindowBackgroundPathList = Q_NULLPTR;
|
||||
|
||||
#if QT_VERSION >= QT_VERSION_CHECK(5, 4, 0)
|
||||
setWmBlurWindowBackgroundPathList = qApp->platformFunction(_setWmBlurWindowBackgroundPathList);
|
||||
#endif
|
||||
|
||||
if (!setWmBlurWindowBackgroundPathList) {
|
||||
qWarning("setWindowBlurAreaByWM is not support");
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
QSurfaceFormat format = window->format();
|
||||
|
||||
format.setAlphaBufferSize(8);
|
||||
window->setFormat(format);
|
||||
|
||||
const qreal device_ratio = window->devicePixelRatio();
|
||||
|
||||
if (qFuzzyCompare(device_ratio, 1.0)) {
|
||||
return reinterpret_cast<bool(*)(const quint32, const QList<QPainterPath>&)>(setWmBlurWindowBackgroundPathList)(window->winId(), paths);
|
||||
}
|
||||
|
||||
QList<QPainterPath> new_paths;
|
||||
|
||||
new_paths.reserve(paths.size());
|
||||
|
||||
for (const QPainterPath &p : paths) {
|
||||
new_paths.append(p * device_ratio);
|
||||
}
|
||||
|
||||
return reinterpret_cast<bool(*)(const quint32, const QList<QPainterPath>&)>(setWmBlurWindowBackgroundPathList)(window->winId(), new_paths);
|
||||
handle.setEnableBlurWindow(true);
|
||||
return true;
|
||||
}
|
||||
|
||||
/*!
|
||||
|
|
@ -931,51 +700,15 @@ bool DPlatformHandle::setWindowBlurAreaByWM(QWindow *window, const QList<QPainte
|
|||
*/
|
||||
bool DPlatformHandle::setWindowWallpaperParaByWM(QWindow *window, const QRect &area, WallpaperScaleMode sMode, WallpaperFillMode fMode)
|
||||
{
|
||||
if (!window) {
|
||||
return false;
|
||||
DPlatformHandle handle(window);
|
||||
#ifndef DTK_DISABLE_XCB
|
||||
if (auto impl = dynamic_cast<DXCBPlatformWindowInterface *>(platformWindowImpl(&handle))) {
|
||||
return impl->setWindowWallpaperPara(area, sMode, fMode);
|
||||
}
|
||||
|
||||
QFunctionPointer setWmWallpaperParameter = Q_NULLPTR;
|
||||
|
||||
#if QT_VERSION >= QT_VERSION_CHECK(5, 4, 0)
|
||||
setWmWallpaperParameter = qApp->platformFunction(_setWmWallpaperParameter);
|
||||
#endif
|
||||
|
||||
if (!setWmWallpaperParameter) {
|
||||
qWarning("setWindowWallpaperParaByWM is not support");
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
QSurfaceFormat format = window->format();
|
||||
|
||||
format.setAlphaBufferSize(8);
|
||||
window->setFormat(format);
|
||||
|
||||
quint32 bMode = sMode | fMode;
|
||||
|
||||
// 激活 backing store
|
||||
window->setProperty("_d_dxcb_wallpaper", QVariant::fromValue(QPair<QRect, int>(area, bMode)));
|
||||
|
||||
if (!window->handle()) {
|
||||
return true;
|
||||
} else {
|
||||
qWarning() << "because the window handle has been created, so 2D mode will have no effect";
|
||||
}
|
||||
|
||||
const qreal device_ratio = window->devicePixelRatio();
|
||||
if (qFuzzyCompare(device_ratio, 1.0) || !area.isValid()) {
|
||||
return reinterpret_cast<bool(*)(const quint32, const QRect&, const quint32)>(setWmWallpaperParameter)(window->winId(), area, bMode);
|
||||
}
|
||||
|
||||
QRect new_area(area.x() * device_ratio,
|
||||
area.y() * device_ratio,
|
||||
area.width() * device_ratio,
|
||||
area.height() * device_ratio);
|
||||
|
||||
return reinterpret_cast<bool(*)(const quint32, const QRect&, const quint32)>(setWmWallpaperParameter)(window->winId(), new_area, bMode);
|
||||
}
|
||||
|
||||
/*!
|
||||
\brief DPlatformHandle::connectWindowManagerChangedSignal
|
||||
将窗口管理器变化的信号链接到 \a object 对象的 \a slot 槽,建议使用 DWindowManager::windowManagerChanged
|
||||
|
|
@ -986,11 +719,10 @@ bool DPlatformHandle::setWindowWallpaperParaByWM(QWindow *window, const QRect &a
|
|||
*/
|
||||
bool DPlatformHandle::connectWindowManagerChangedSignal(QObject *object, std::function<void ()> slot)
|
||||
{
|
||||
if (object) {
|
||||
return QObject::connect(DWindowManagerHelper::instance(), &DWindowManagerHelper::windowManagerChanged, object, slot);
|
||||
}
|
||||
|
||||
return QObject::connect(DWindowManagerHelper::instance(), &DWindowManagerHelper::windowManagerChanged, slot);
|
||||
#ifndef DTK_DISABLE_XCB
|
||||
return DXCBPlatformWindowInterface::connectWindowManagerChangedSignal(object, slot);
|
||||
#endif
|
||||
return false;
|
||||
}
|
||||
|
||||
/*!
|
||||
|
|
@ -1004,11 +736,10 @@ bool DPlatformHandle::connectWindowManagerChangedSignal(QObject *object, std::fu
|
|||
*/
|
||||
bool DPlatformHandle::connectHasBlurWindowChanged(QObject *object, std::function<void ()> slot)
|
||||
{
|
||||
if (object) {
|
||||
return QObject::connect(DWindowManagerHelper::instance(), &DWindowManagerHelper::hasBlurWindowChanged, object, slot);
|
||||
}
|
||||
|
||||
return QObject::connect(DWindowManagerHelper::instance(), &DWindowManagerHelper::hasBlurWindowChanged, slot);
|
||||
#ifndef DTK_DISABLE_XCB
|
||||
return DXCBPlatformWindowInterface::connectHasBlurWindowChanged(object, slot);
|
||||
#endif
|
||||
return false;
|
||||
}
|
||||
|
||||
/*!
|
||||
|
|
@ -1046,204 +777,228 @@ bool DPlatformHandle::setWindowBlurAreaByWM(const QList<QPainterPath> &paths)
|
|||
*/
|
||||
void DPlatformHandle::setDisableWindowOverrideCursor(QWindow *window, bool disable)
|
||||
{
|
||||
window->setProperty(_disableOverrideCursor, disable);
|
||||
DPlatformHandle handler(window);
|
||||
#ifndef DTK_DISABLE_XCB
|
||||
if (auto impl = dynamic_cast<DXCBPlatformWindowInterface *>(platformWindowImpl(&handler))) {
|
||||
impl->setDisableWindowOverrideCursor(disable);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
int DPlatformHandle::windowRadius() const
|
||||
{
|
||||
return m_window->property(_windowRadius).toInt();
|
||||
auto impl = platformWindowImpl(this);
|
||||
return impl->windowRadius();
|
||||
}
|
||||
|
||||
int DPlatformHandle::borderWidth() const
|
||||
{
|
||||
return m_window->property(_borderWidth).toInt();
|
||||
auto impl = platformWindowImpl(this);
|
||||
return impl->borderWidth();
|
||||
}
|
||||
|
||||
QColor DPlatformHandle::borderColor() const
|
||||
{
|
||||
return qvariant_cast<QColor>(m_window->property(_borderColor));
|
||||
auto impl = platformWindowImpl(this);
|
||||
return impl->borderColor();
|
||||
}
|
||||
|
||||
int DPlatformHandle::shadowRadius() const
|
||||
{
|
||||
return m_window->property(_shadowRadius).toInt();
|
||||
auto impl = platformWindowImpl(this);
|
||||
return impl->shadowRadius();
|
||||
}
|
||||
|
||||
QPoint DPlatformHandle::shadowOffset() const
|
||||
{
|
||||
return m_window->property(_shadowOffset).toPoint();
|
||||
auto impl = platformWindowImpl(this);
|
||||
return impl->shadowOffset();
|
||||
}
|
||||
|
||||
QColor DPlatformHandle::shadowColor() const
|
||||
{
|
||||
return qvariant_cast<QColor>(m_window->property(_shadowColor));
|
||||
auto impl = platformWindowImpl(this);
|
||||
return impl->shadowColor();
|
||||
}
|
||||
|
||||
DPlatformHandle::EffectScene DPlatformHandle::windowEffect()
|
||||
{
|
||||
auto impl = platformWindowImpl(this);
|
||||
return impl->windowEffect();
|
||||
}
|
||||
|
||||
DPlatformHandle::EffectType DPlatformHandle::windowStartUpEffect()
|
||||
{
|
||||
auto impl = platformWindowImpl(this);
|
||||
return impl->windowStartUpEffect();
|
||||
}
|
||||
|
||||
QPainterPath DPlatformHandle::clipPath() const
|
||||
{
|
||||
return qvariant_cast<QPainterPath>(m_window->property(_clipPath));
|
||||
auto impl = platformWindowImpl(this);
|
||||
return impl->clipPath();
|
||||
}
|
||||
|
||||
QRegion DPlatformHandle::frameMask() const
|
||||
{
|
||||
return qvariant_cast<QRegion>(m_window->property(_frameMask));
|
||||
auto impl = platformWindowImpl(this);
|
||||
return impl->frameMask();
|
||||
}
|
||||
|
||||
QMargins DPlatformHandle::frameMargins() const
|
||||
{
|
||||
return qvariant_cast<QMargins>(m_window->property(_frameMargins));
|
||||
auto impl = platformWindowImpl(this);
|
||||
return impl->frameMargins();
|
||||
}
|
||||
|
||||
bool DPlatformHandle::translucentBackground() const
|
||||
{
|
||||
return m_window->property(_translucentBackground).toBool();
|
||||
auto impl = platformWindowImpl(this);
|
||||
return impl->translucentBackground();
|
||||
}
|
||||
|
||||
bool DPlatformHandle::enableSystemResize() const
|
||||
{
|
||||
return m_window->property(_enableSystemResize).toBool();
|
||||
auto impl = platformWindowImpl(this);
|
||||
return impl->enableSystemResize();
|
||||
}
|
||||
|
||||
bool DPlatformHandle::enableSystemMove() const
|
||||
{
|
||||
return m_window->property(_enableSystemMove).toBool();
|
||||
auto impl = platformWindowImpl(this);
|
||||
return impl->enableSystemMove();
|
||||
}
|
||||
|
||||
bool DPlatformHandle::enableBlurWindow() const
|
||||
{
|
||||
return m_window->property(_enableBlurWindow).toBool();
|
||||
auto impl = platformWindowImpl(this);
|
||||
return impl->enableBlurWindow();
|
||||
}
|
||||
|
||||
bool DPlatformHandle::autoInputMaskByClipPath() const
|
||||
{
|
||||
return m_window->property(_autoInputMaskByClipPath).toBool();
|
||||
#ifndef DTK_DISABLE_XCB
|
||||
if (auto impl = dynamic_cast<DXCBPlatformWindowInterface *>(platformWindowImpl(this))) {
|
||||
return impl->autoInputMaskByClipPath();
|
||||
}
|
||||
#endif
|
||||
return false;
|
||||
}
|
||||
|
||||
WId DPlatformHandle::realWindowId() const
|
||||
{
|
||||
return qvariant_cast<WId>(m_window->property("_d_real_content_window"));
|
||||
#ifndef DTK_DISABLE_XCB
|
||||
if (auto impl = dynamic_cast<DXCBPlatformWindowInterface *>(platformWindowImpl(this))) {
|
||||
return impl->realWindowId();
|
||||
}
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
WId DPlatformHandle::windowLeader()
|
||||
{
|
||||
QFunctionPointer clientLeader = Q_NULLPTR;
|
||||
|
||||
#if QT_VERSION >= QT_VERSION_CHECK(5, 4, 0)
|
||||
clientLeader = qApp->platformFunction(_clientLeader);
|
||||
#ifndef DTK_DISABLE_XCB
|
||||
return DXCBPlatformWindowInterface::windowLeader();
|
||||
#endif
|
||||
|
||||
if (!clientLeader) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
return reinterpret_cast<quint32(*)()>(clientLeader)();
|
||||
}
|
||||
|
||||
void DPlatformHandle::setWindowRadius(int windowRadius)
|
||||
{
|
||||
setWindowProperty(m_window, _windowRadius, windowRadius);
|
||||
resolve(m_window, PropRole::WindowRadius);
|
||||
auto impl = platformWindowImpl(this);
|
||||
impl->setWindowRadius(windowRadius);
|
||||
}
|
||||
|
||||
void DPlatformHandle::setBorderWidth(int borderWidth)
|
||||
{
|
||||
setWindowProperty(m_window, _borderWidth, borderWidth);
|
||||
auto impl = platformWindowImpl(this);
|
||||
impl->setBorderWidth(borderWidth);
|
||||
}
|
||||
|
||||
void DPlatformHandle::setBorderColor(const QColor &borderColor)
|
||||
{
|
||||
setWindowProperty(m_window, _borderColor, QVariant::fromValue(borderColor));
|
||||
auto impl = platformWindowImpl(this);
|
||||
impl->setBorderColor(borderColor);
|
||||
}
|
||||
|
||||
void DPlatformHandle::setWindowEffect(DPlatformHandle::EffectScenes effectScene)
|
||||
{
|
||||
auto impl = platformWindowImpl(this);
|
||||
impl->setWindowEffect(effectScene);
|
||||
}
|
||||
|
||||
void DPlatformHandle::setWindowStartUpEffect(DPlatformHandle::EffectTypes effectType)
|
||||
{
|
||||
auto impl = platformWindowImpl(this);
|
||||
impl->setWindowStartUpEffect(effectType);
|
||||
}
|
||||
|
||||
void DPlatformHandle::setShadowRadius(int shadowRadius)
|
||||
{
|
||||
setWindowProperty(m_window, _shadowRadius, shadowRadius);
|
||||
auto impl = platformWindowImpl(this);
|
||||
impl->setShadowRadius(shadowRadius);
|
||||
}
|
||||
|
||||
void DPlatformHandle::setShadowOffset(const QPoint &shadowOffset)
|
||||
{
|
||||
setWindowProperty(m_window, _shadowOffset, shadowOffset);
|
||||
auto impl = platformWindowImpl(this);
|
||||
impl->setShadowOffset(shadowOffset);
|
||||
}
|
||||
|
||||
void DPlatformHandle::setShadowColor(const QColor &shadowColor)
|
||||
{
|
||||
setWindowProperty(m_window, _shadowColor, QVariant::fromValue(shadowColor));
|
||||
auto impl = platformWindowImpl(this);
|
||||
impl->setShadowColor(shadowColor);
|
||||
}
|
||||
|
||||
void DPlatformHandle::setClipPath(const QPainterPath &clipPath)
|
||||
{
|
||||
setWindowProperty(m_window, _clipPath, QVariant::fromValue(clipPath));
|
||||
auto impl = platformWindowImpl(this);
|
||||
impl->setClipPath(clipPath);
|
||||
}
|
||||
|
||||
void DPlatformHandle::setFrameMask(const QRegion &frameMask)
|
||||
{
|
||||
setWindowProperty(m_window, _frameMask, QVariant::fromValue(frameMask));
|
||||
auto impl = platformWindowImpl(this);
|
||||
impl->setFrameMask(frameMask);
|
||||
}
|
||||
|
||||
void DPlatformHandle::setTranslucentBackground(bool translucentBackground)
|
||||
{
|
||||
setWindowProperty(m_window, _translucentBackground, translucentBackground);
|
||||
auto impl = platformWindowImpl(this);
|
||||
impl->setTranslucentBackground(translucentBackground);
|
||||
}
|
||||
|
||||
void DPlatformHandle::setEnableSystemResize(bool enableSystemResize)
|
||||
{
|
||||
setWindowProperty(m_window, _enableSystemResize, enableSystemResize);
|
||||
auto impl = platformWindowImpl(this);
|
||||
impl->setEnableSystemResize(enableSystemResize);
|
||||
}
|
||||
|
||||
void DPlatformHandle::setEnableSystemMove(bool enableSystemMove)
|
||||
{
|
||||
setWindowProperty(m_window, _enableSystemMove, enableSystemMove);
|
||||
auto impl = platformWindowImpl(this);
|
||||
impl->setEnableSystemMove(enableSystemMove);
|
||||
}
|
||||
|
||||
void DPlatformHandle::setEnableBlurWindow(bool enableBlurWindow)
|
||||
{
|
||||
setWindowProperty(m_window, _enableBlurWindow, enableBlurWindow);
|
||||
auto impl = platformWindowImpl(this);
|
||||
impl->setEnableBlurWindow(enableBlurWindow);
|
||||
}
|
||||
|
||||
void DPlatformHandle::setAutoInputMaskByClipPath(bool autoInputMaskByClipPath)
|
||||
{
|
||||
setWindowProperty(m_window, _autoInputMaskByClipPath, autoInputMaskByClipPath);
|
||||
#ifndef DTK_DISABLE_XCB
|
||||
if (auto impl = dynamic_cast<DXCBPlatformWindowInterface *>(platformWindowImpl(this))) {
|
||||
impl->setAutoInputMaskByClipPath(autoInputMaskByClipPath);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
bool DPlatformHandle::eventFilter(QObject *obj, QEvent *event)
|
||||
{
|
||||
if (obj == m_window) {
|
||||
if (event->type() == QEvent::DynamicPropertyChange) {
|
||||
QDynamicPropertyChangeEvent *e = static_cast<QDynamicPropertyChangeEvent *>(event);
|
||||
|
||||
if (e->propertyName() == _windowRadius) {
|
||||
Q_EMIT windowRadiusChanged();
|
||||
} else if (e->propertyName() == _borderWidth) {
|
||||
Q_EMIT borderWidthChanged();
|
||||
} else if (e->propertyName() == _borderColor) {
|
||||
Q_EMIT borderColorChanged();
|
||||
} else if (e->propertyName() == _shadowRadius) {
|
||||
Q_EMIT shadowRadiusChanged();
|
||||
} else if (e->propertyName() == _shadowOffset) {
|
||||
Q_EMIT shadowOffsetChanged();
|
||||
} else if (e->propertyName() == _shadowColor) {
|
||||
Q_EMIT shadowColorChanged();
|
||||
} else if (e->propertyName() == _clipPath) {
|
||||
Q_EMIT clipPathChanged();
|
||||
} else if (e->propertyName() == _frameMask) {
|
||||
Q_EMIT frameMaskChanged();
|
||||
} else if (e->propertyName() == _frameMargins) {
|
||||
Q_EMIT frameMarginsChanged();
|
||||
} else if (e->propertyName() == _translucentBackground) {
|
||||
Q_EMIT translucentBackgroundChanged();
|
||||
} else if (e->propertyName() == _enableSystemResize) {
|
||||
Q_EMIT enableSystemResizeChanged();
|
||||
} else if (e->propertyName() == _enableSystemMove) {
|
||||
Q_EMIT enableSystemMoveChanged();
|
||||
} else if (e->propertyName() == _enableBlurWindow) {
|
||||
Q_EMIT enableBlurWindowChanged();
|
||||
} else if (e->propertyName() == _autoInputMaskByClipPath) {
|
||||
Q_EMIT autoInputMaskByClipPathChanged();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
return QObject::eventFilter(obj, event);
|
||||
}
|
||||
|
||||
DGUI_END_NAMESPACE
|
||||
|
|
|
|||
|
|
@ -3,17 +3,33 @@
|
|||
// SPDX-License-Identifier: LGPL-3.0-or-later
|
||||
|
||||
#include "dplatformtheme.h"
|
||||
#include "dguiapplicationhelper.h"
|
||||
#include "private/dplatformtheme_p.h"
|
||||
|
||||
#ifndef DTK_DISABLE_XCB
|
||||
#include "plugins/platform/xcb/dxcbplatforminterface.h"
|
||||
#endif
|
||||
#ifndef DTK_DISABLE_TREELAND
|
||||
#include "plugins/platform/treeland/dtreelandplatforminterface.h"
|
||||
#endif
|
||||
#include "private/dplatforminterface_p.h"
|
||||
#include "orgdeepindtkpreference.hpp"
|
||||
|
||||
#include <QVariant>
|
||||
#include <QTimer>
|
||||
#include <QMetaProperty>
|
||||
#include <QDebug>
|
||||
|
||||
#include <functional>
|
||||
#include <DGuiApplicationHelper>
|
||||
|
||||
DGUI_BEGIN_NAMESPACE
|
||||
|
||||
static DPlatformInterfaceFactory::HelperCreator OutsideInterfaceCreator = nullptr;
|
||||
|
||||
void DPlatformInterfaceFactory::registerInterface(HelperCreator creator)
|
||||
{
|
||||
OutsideInterfaceCreator = creator;
|
||||
}
|
||||
|
||||
// "/deepin/palette" 为调色板属性的存储位置
|
||||
// 在x11平台下,将使用_DEEPIN_PALETTE作为存储调色板数据的窗口属性
|
||||
DPlatformThemePrivate::DPlatformThemePrivate(Dtk::Gui::DPlatformTheme *qq)
|
||||
|
|
@ -22,76 +38,6 @@ DPlatformThemePrivate::DPlatformThemePrivate(Dtk::Gui::DPlatformTheme *qq)
|
|||
|
||||
}
|
||||
|
||||
void DPlatformThemePrivate::_q_onThemePropertyChanged(const QByteArray &name, const QVariant &value)
|
||||
{
|
||||
D_Q(DPlatformTheme);
|
||||
|
||||
// 转发属性变化的信号,此信号来源可能为parent theme或“非调色板”的属性变化。
|
||||
// 使用队列的形式转发,避免多次发出同样的信号
|
||||
q->staticMetaObject.invokeMethod(q, "propertyChanged", Qt::QueuedConnection,
|
||||
Q_ARG(const QByteArray&, name), Q_ARG(const QVariant&, value));
|
||||
|
||||
if (QByteArrayLiteral("Gtk/FontName") == name) {
|
||||
Q_EMIT q->gtkFontNameChanged(value.toByteArray());
|
||||
return;
|
||||
}
|
||||
|
||||
if (name.startsWith("Qt/DPI/")) {
|
||||
const QString &screen_name = QString::fromLocal8Bit(name.mid(7));
|
||||
|
||||
if (!screen_name.isEmpty()) {
|
||||
bool ok = false;
|
||||
int dpi = value.toInt(&ok);
|
||||
|
||||
Q_EMIT q->dotsPerInchChanged(screen_name, ok ? dpi : -1);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (QByteArrayLiteral("Xft/DPI") == name) {
|
||||
bool ok = false;
|
||||
int dpi = value.toInt(&ok);
|
||||
Q_EMIT q->dotsPerInchChanged(QString(), ok ? dpi : -1);
|
||||
}
|
||||
|
||||
const QByteArrayList &list = name.split('/');
|
||||
|
||||
if (list.count() != 2)
|
||||
return;
|
||||
|
||||
QByteArray pn = list.last();
|
||||
|
||||
if (pn.isEmpty())
|
||||
return;
|
||||
|
||||
// 转换首字母为小写
|
||||
pn[0] = QChar(pn.at(0)).toLower().toLatin1();
|
||||
|
||||
// 直接使用静态的meta object,防止通过metaObject函数调用到dynamic metaobject
|
||||
const QMetaObject *mo = &DPlatformTheme::staticMetaObject;
|
||||
int index = mo->indexOfProperty(pn.constData());
|
||||
|
||||
if (index < 0)
|
||||
return;
|
||||
|
||||
const QMetaProperty &p = mo->property(index);
|
||||
bool is_parent_signal = q->sender() != theme;
|
||||
|
||||
// 当自己的属性有效时应该忽略父主题的属性变化信号,优先以自身的属性值为准。
|
||||
if (is_parent_signal && p.read(q).isValid()) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (p.hasNotifySignal()) {
|
||||
// invoke会做Q_ASSERT(mobj->cast(object))判断, DPlatformTheme的dynamic metaObject为
|
||||
// qt5platform-plugin插件的DNativeSettings. 导致崩溃.
|
||||
// invokeOnGadget与invoke代码逻辑一致, 只是少了异步支持.
|
||||
if (!p.notifySignal().invokeOnGadget(q, QGenericArgument(value.typeName(), value.constData())))
|
||||
qWarning() << "_q_onThemePropertyChanged() error when notify signal" << p.notifySignal().name();
|
||||
}
|
||||
}
|
||||
|
||||
void DPlatformThemePrivate::onQtColorChanged(QPalette::ColorRole role, const QColor &color)
|
||||
{
|
||||
if (!palette) {
|
||||
|
|
@ -142,8 +88,43 @@ DPlatformTheme::DPlatformTheme(quint32 window, QObject *parent)
|
|||
{
|
||||
D_D(DPlatformTheme);
|
||||
|
||||
if (OutsideInterfaceCreator) {
|
||||
d->platformInterface = OutsideInterfaceCreator(this);
|
||||
} else {
|
||||
#ifndef DTK_DISABLE_XCB
|
||||
if (DGuiApplicationHelper::testAttribute(DGuiApplicationHelper::IsXWindowPlatform)) {
|
||||
d->platformInterface = new DXCBPlatformInterface(0, this);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifndef DTK_DISABLE_TREELAND
|
||||
if (DGuiApplicationHelper::testAttribute(DGuiApplicationHelper::IsWaylandPlatform)) {
|
||||
d->platformInterface = new DTreelandPlatformInterface(this);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
if (!d->platformInterface) {
|
||||
d->platformInterface = new DPlatformInterface(this);
|
||||
}
|
||||
|
||||
d->theme = new DNativeSettings(window, QByteArray(), this);
|
||||
|
||||
d->dtkPreferenceConfig = OrgDeepinDTKPreference::createGeneric("", this);
|
||||
d->sizeMode = static_cast<DGuiApplicationHelper::SizeMode>(d->dtkPreferenceConfig->sizeMode());
|
||||
d->scrollBarPolicy = static_cast<Qt::ScrollBarPolicy>(d->dtkPreferenceConfig->scrollBarPolicy());
|
||||
connect(d->dtkPreferenceConfig, &OrgDeepinDTKPreference::sizeModeChanged, this, [this] {
|
||||
D_D(DPlatformTheme);
|
||||
d->sizeMode = static_cast<DGuiApplicationHelper::SizeMode>(d->dtkPreferenceConfig->sizeMode());
|
||||
Q_EMIT sizeModeChanged(d->sizeMode);
|
||||
});
|
||||
connect(d->dtkPreferenceConfig, &OrgDeepinDTKPreference::scrollBarPolicyChanged, this, [this] {
|
||||
D_D(DPlatformTheme);
|
||||
d->scrollBarPolicy = static_cast<Qt::ScrollBarPolicy>(d->dtkPreferenceConfig->scrollBarPolicy());
|
||||
Q_EMIT scrollBarPolicyChanged(d->scrollBarPolicy);
|
||||
});
|
||||
|
||||
#if DTK_VERSION < DTK_VERSION_CHECK(6, 0, 0, 0)
|
||||
connect(this, &DPlatformTheme::windowChanged, std::bind(&DPlatformThemePrivate::onQtColorChanged, d, QPalette::Window, std::placeholders::_1));
|
||||
connect(this, &DPlatformTheme::windowTextChanged, std::bind(&DPlatformThemePrivate::onQtColorChanged, d, QPalette::WindowText, std::placeholders::_1));
|
||||
connect(this, &DPlatformTheme::baseChanged, std::bind(&DPlatformThemePrivate::onQtColorChanged, d, QPalette::Base, std::placeholders::_1));
|
||||
|
|
@ -171,8 +152,7 @@ DPlatformTheme::DPlatformTheme(quint32 window, QObject *parent)
|
|||
connect(this, &DPlatformTheme::lightLivelyChanged, std::bind(&DPlatformThemePrivate::onDtkColorChanged, d, DPalette::LightLively, std::placeholders::_1));
|
||||
connect(this, &DPlatformTheme::darkLivelyChanged, std::bind(&DPlatformThemePrivate::onDtkColorChanged, d, DPalette::DarkLively, std::placeholders::_1));
|
||||
connect(this, &DPlatformTheme::frameBorderChanged, std::bind(&DPlatformThemePrivate::onDtkColorChanged, d, DPalette::FrameBorder, std::placeholders::_1));
|
||||
connect(d->theme, SIGNAL(propertyChanged(const QByteArray &, const QVariant &)),
|
||||
this, SLOT(_q_onThemePropertyChanged(const QByteArray &, const QVariant &)));
|
||||
#endif
|
||||
}
|
||||
|
||||
DPlatformTheme::DPlatformTheme(quint32 window, DPlatformTheme *parent)
|
||||
|
|
@ -193,6 +173,9 @@ DPlatformTheme::~DPlatformTheme()
|
|||
if (d->palette) {
|
||||
delete d->palette;
|
||||
}
|
||||
if (d->platformInterface) {
|
||||
delete d->platformInterface;
|
||||
}
|
||||
}
|
||||
|
||||
bool DPlatformTheme::isValid() const
|
||||
|
|
@ -266,7 +249,7 @@ DPalette DPlatformTheme::fetchPalette(const DPalette &base, bool *ok) const
|
|||
|
||||
DPalette palette = base;
|
||||
|
||||
if (isValidPalette()) {
|
||||
if (isValidPalette() && d->palette) {
|
||||
if (ok) {
|
||||
*ok = true;
|
||||
}
|
||||
|
|
@ -297,9 +280,10 @@ DPalette DPlatformTheme::fetchPalette(const DPalette &base, bool *ok) const
|
|||
|
||||
void DPlatformTheme::setPalette(const DPalette &palette)
|
||||
{
|
||||
Q_UNUSED(palette);
|
||||
#define SET_PALETTE(Role) \
|
||||
set##Role(palette.color(QPalette::Normal, DPalette::Role))
|
||||
|
||||
#if DTK_VERSION < DTK_VERSION_CHECK(6, 0, 0, 0)
|
||||
SET_PALETTE(Window);
|
||||
SET_PALETTE(WindowText);
|
||||
SET_PALETTE(Base);
|
||||
|
|
@ -327,136 +311,109 @@ void DPlatformTheme::setPalette(const DPalette &palette)
|
|||
SET_PALETTE(LightLively);
|
||||
SET_PALETTE(DarkLively);
|
||||
SET_PALETTE(FrameBorder);
|
||||
#endif
|
||||
}
|
||||
|
||||
#define FETCH_PROPERTY(Name, Function) \
|
||||
D_DC(DPlatformTheme); \
|
||||
QVariant value = d->theme->getSetting(QByteArrayLiteral(Name)); \
|
||||
if (d->fallbackProperty && !value.isValid() && d->parent) \
|
||||
return d->parent->Function(); \
|
||||
|
||||
#define FETCH_PROPERTY_WITH_ARGS(Name, Function, Args) \
|
||||
D_DC(DPlatformTheme); \
|
||||
QVariant value = d->theme->getSetting(Name); \
|
||||
if (d->fallbackProperty && !value.isValid() && d->parent) \
|
||||
return d->parent->Function(Args); \
|
||||
|
||||
int DPlatformTheme::cursorBlinkTime() const
|
||||
{
|
||||
FETCH_PROPERTY("Net/CursorBlinkTime", cursorBlinkTime)
|
||||
|
||||
return value.toInt();
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->cursorBlinkTime();
|
||||
}
|
||||
|
||||
int DPlatformTheme::cursorBlinkTimeout() const
|
||||
{
|
||||
FETCH_PROPERTY("Net/CursorBlinkTimeout", cursorBlinkTimeout)
|
||||
|
||||
return value.toInt();
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->cursorBlinkTimeout();
|
||||
}
|
||||
|
||||
bool DPlatformTheme::cursorBlink() const
|
||||
{
|
||||
FETCH_PROPERTY("Net/CursorBlink", cursorBlink)
|
||||
|
||||
return value.toInt();
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->cursorBlink();
|
||||
}
|
||||
|
||||
int DPlatformTheme::doubleClickDistance() const
|
||||
{
|
||||
FETCH_PROPERTY("Net/DoubleClickDistance", doubleClickDistance)
|
||||
|
||||
return value.toInt();
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->doubleClickDistance();
|
||||
}
|
||||
|
||||
int DPlatformTheme::doubleClickTime() const
|
||||
{
|
||||
FETCH_PROPERTY("Net/DoubleClickTime", doubleClickTime)
|
||||
|
||||
return value.toInt();
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->doubleClickTime();
|
||||
}
|
||||
|
||||
int DPlatformTheme::dndDragThreshold() const
|
||||
{
|
||||
FETCH_PROPERTY("Net/DndDragThreshold", dndDragThreshold)
|
||||
|
||||
return value.toInt();
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->dndDragThreshold();
|
||||
}
|
||||
|
||||
int DPlatformTheme::windowRadius() const
|
||||
{
|
||||
return windowRadius(-1);
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->windowRadius();
|
||||
}
|
||||
|
||||
int DPlatformTheme::windowRadius(int defaultValue) const
|
||||
{
|
||||
Q_D(const DPlatformTheme);
|
||||
|
||||
QVariant value = d->theme->getSetting(QByteArrayLiteral("DTK/WindowRadius"));
|
||||
bool ok = false;
|
||||
|
||||
if (d->fallbackProperty && !value.isValid() && d->parent)
|
||||
return d->parent->windowRadius(defaultValue);
|
||||
|
||||
int radius = value.toInt(&ok);
|
||||
|
||||
return ok ? radius : defaultValue;
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->windowRadius(defaultValue);
|
||||
}
|
||||
|
||||
QByteArray DPlatformTheme::themeName() const
|
||||
{
|
||||
FETCH_PROPERTY("Net/ThemeName", themeName)
|
||||
|
||||
return value.toByteArray();
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->themeName();
|
||||
}
|
||||
|
||||
QByteArray DPlatformTheme::iconThemeName() const
|
||||
{
|
||||
FETCH_PROPERTY("Net/IconThemeName", iconThemeName)
|
||||
|
||||
return value.toByteArray();
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->iconThemeName();
|
||||
}
|
||||
|
||||
QByteArray DPlatformTheme::soundThemeName() const
|
||||
{
|
||||
FETCH_PROPERTY("Net/SoundThemeName", soundThemeName)
|
||||
|
||||
return value.toByteArray();
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->soundThemeName();
|
||||
}
|
||||
|
||||
QByteArray DPlatformTheme::fontName() const
|
||||
{
|
||||
FETCH_PROPERTY("Qt/FontName", fontName)
|
||||
|
||||
return value.toByteArray();
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->fontName();
|
||||
}
|
||||
|
||||
QByteArray DPlatformTheme::monoFontName() const
|
||||
{
|
||||
FETCH_PROPERTY("Qt/MonoFontName", monoFontName)
|
||||
|
||||
return value.toByteArray();
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->monoFontName();
|
||||
}
|
||||
|
||||
qreal DPlatformTheme::fontPointSize() const
|
||||
{
|
||||
FETCH_PROPERTY("Qt/FontPointSize", fontPointSize)
|
||||
|
||||
return value.toDouble();
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->fontPointSize();
|
||||
}
|
||||
|
||||
QByteArray DPlatformTheme::gtkFontName() const
|
||||
{
|
||||
FETCH_PROPERTY("Gtk/FontName", gtkFontName)
|
||||
|
||||
return value.toByteArray();
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->gtkFontName();
|
||||
}
|
||||
|
||||
QColor DPlatformTheme::activeColor() const
|
||||
{
|
||||
FETCH_PROPERTY("Qt/ActiveColor", activeColor)
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->activeColor();
|
||||
}
|
||||
|
||||
return qvariant_cast<QColor>(value);
|
||||
QColor DPlatformTheme::darkActiveColor() const
|
||||
{
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->darkActiveColor();
|
||||
}
|
||||
|
||||
bool DPlatformTheme::isValidPalette() const
|
||||
|
|
@ -465,157 +422,174 @@ bool DPlatformTheme::isValidPalette() const
|
|||
}
|
||||
|
||||
#define GET_COLOR(Role) qvariant_cast<QColor>(getSetting(QByteArrayLiteral(#Role)))
|
||||
|
||||
#if DTK_VERSION < DTK_VERSION_CHECK(6, 0, 0, 0)
|
||||
QColor DPlatformTheme::window() const
|
||||
{
|
||||
return GET_COLOR(window);
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->window();
|
||||
}
|
||||
|
||||
QColor DPlatformTheme::windowText() const
|
||||
{
|
||||
return GET_COLOR(windowText);
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->windowText();
|
||||
}
|
||||
|
||||
QColor DPlatformTheme::base() const
|
||||
{
|
||||
return GET_COLOR(base);
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->base();
|
||||
}
|
||||
|
||||
QColor DPlatformTheme::alternateBase() const
|
||||
{
|
||||
return GET_COLOR(alternateBase);
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->alternateBase();
|
||||
}
|
||||
|
||||
QColor DPlatformTheme::toolTipBase() const
|
||||
{
|
||||
return GET_COLOR(toolTipBase);
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->toolTipBase();
|
||||
}
|
||||
|
||||
QColor DPlatformTheme::toolTipText() const
|
||||
{
|
||||
return GET_COLOR(toolTipText);
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->toolTipText();
|
||||
}
|
||||
|
||||
QColor DPlatformTheme::text() const
|
||||
{
|
||||
return GET_COLOR(text);
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->text();
|
||||
}
|
||||
|
||||
QColor DPlatformTheme::button() const
|
||||
{
|
||||
return GET_COLOR(button);
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->button();
|
||||
}
|
||||
|
||||
QColor DPlatformTheme::buttonText() const
|
||||
{
|
||||
return GET_COLOR(buttonText);
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->buttonText();
|
||||
}
|
||||
|
||||
QColor DPlatformTheme::brightText() const
|
||||
{
|
||||
return GET_COLOR(brightText);
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->brightText();
|
||||
}
|
||||
|
||||
QColor DPlatformTheme::light() const
|
||||
{
|
||||
return GET_COLOR(light);
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->light();
|
||||
}
|
||||
|
||||
QColor DPlatformTheme::midlight() const
|
||||
{
|
||||
return GET_COLOR(midlight);
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->midlight();
|
||||
}
|
||||
|
||||
QColor DPlatformTheme::dark() const
|
||||
{
|
||||
return GET_COLOR(dark);
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->dark();
|
||||
}
|
||||
|
||||
QColor DPlatformTheme::mid() const
|
||||
{
|
||||
return GET_COLOR(mid);
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->mid();
|
||||
}
|
||||
|
||||
QColor DPlatformTheme::shadow() const
|
||||
{
|
||||
return GET_COLOR(shadow);
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->shadow();
|
||||
}
|
||||
|
||||
QColor DPlatformTheme::highlight() const
|
||||
{
|
||||
return GET_COLOR(highlight);
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->highlight();
|
||||
}
|
||||
|
||||
QColor DPlatformTheme::highlightedText() const
|
||||
{
|
||||
return GET_COLOR(highlightedText);
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->highlightedText();
|
||||
}
|
||||
|
||||
QColor DPlatformTheme::link() const
|
||||
{
|
||||
return GET_COLOR(link);
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->link();
|
||||
}
|
||||
|
||||
QColor DPlatformTheme::linkVisited() const
|
||||
{
|
||||
return GET_COLOR(linkVisited);
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->linkVisited();
|
||||
}
|
||||
|
||||
QColor DPlatformTheme::itemBackground() const
|
||||
{
|
||||
return GET_COLOR(itemBackground);
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->itemBackground();
|
||||
}
|
||||
|
||||
QColor DPlatformTheme::textTitle() const
|
||||
{
|
||||
return GET_COLOR(textTitle);
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->textTitle();
|
||||
}
|
||||
|
||||
QColor DPlatformTheme::textTips() const
|
||||
{
|
||||
return GET_COLOR(textTips);
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->textTips();
|
||||
}
|
||||
|
||||
QColor DPlatformTheme::textWarning() const
|
||||
{
|
||||
return GET_COLOR(textWarning);
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->textWarning();
|
||||
}
|
||||
|
||||
QColor DPlatformTheme::textLively() const
|
||||
{
|
||||
return GET_COLOR(textLively);
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->textLively();
|
||||
}
|
||||
|
||||
QColor DPlatformTheme::lightLively() const
|
||||
{
|
||||
return GET_COLOR(lightLively);
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->lightLively();
|
||||
}
|
||||
|
||||
QColor DPlatformTheme::darkLively() const
|
||||
{
|
||||
return GET_COLOR(darkLively);
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->darkLively();
|
||||
}
|
||||
|
||||
QColor DPlatformTheme::frameBorder() const
|
||||
{
|
||||
return GET_COLOR(frameBorder);
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->frameBorder();
|
||||
}
|
||||
#endif
|
||||
|
||||
int DPlatformTheme::dotsPerInch(const QString &screenName) const
|
||||
{
|
||||
bool ok = false;
|
||||
|
||||
if (!screenName.isEmpty()) {
|
||||
FETCH_PROPERTY_WITH_ARGS("Qt/DPI/" + screenName.toLocal8Bit(), dotsPerInch, screenName);
|
||||
int dpi = value.toInt(&ok);
|
||||
|
||||
if (ok)
|
||||
return dpi;
|
||||
}
|
||||
|
||||
FETCH_PROPERTY_WITH_ARGS("Xft/DPI", dotsPerInch, screenName);
|
||||
int dpi = value.toInt(&ok);
|
||||
return ok ? dpi : -1;
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->dotsPerInch(screenName);
|
||||
}
|
||||
|
||||
/*!
|
||||
|
|
@ -625,8 +599,7 @@ int DPlatformTheme::dotsPerInch(const QString &screenName) const
|
|||
int DPlatformTheme::sizeMode() const
|
||||
{
|
||||
D_DC(DPlatformTheme);
|
||||
QVariant value = d->theme->getSetting(QByteArrayLiteral("DTK/SizeMode"));
|
||||
return value.toInt();
|
||||
return d->sizeMode;
|
||||
}
|
||||
|
||||
/*!
|
||||
|
|
@ -638,262 +611,275 @@ int DPlatformTheme::sizeMode() const
|
|||
*/
|
||||
int DPlatformTheme::scrollBarPolicy() const
|
||||
{
|
||||
FETCH_PROPERTY("Qt/ScrollBarPolicy", scrollBarPolicy)
|
||||
|
||||
return qvariant_cast<int>(value);
|
||||
D_DC(DPlatformTheme);
|
||||
return d->scrollBarPolicy;
|
||||
}
|
||||
|
||||
void DPlatformTheme::setCursorBlinkTime(int cursorBlinkTime)
|
||||
{
|
||||
D_D(DPlatformTheme);
|
||||
|
||||
d->theme->setSetting("Net/CursorBlinkTime", cursorBlinkTime);
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->setCursorBlinkTime(cursorBlinkTime);
|
||||
}
|
||||
|
||||
void DPlatformTheme::setCursorBlinkTimeout(int cursorBlinkTimeout)
|
||||
{
|
||||
D_D(DPlatformTheme);
|
||||
|
||||
d->theme->setSetting("Net/CursorBlinkTimeout", cursorBlinkTimeout);
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->setCursorBlinkTimeout(cursorBlinkTimeout);
|
||||
}
|
||||
|
||||
void DPlatformTheme::setCursorBlink(bool cursorBlink)
|
||||
{
|
||||
D_D(DPlatformTheme);
|
||||
|
||||
d->theme->setSetting("Net/CursorBlink", cursorBlink);
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->setCursorBlink(cursorBlink);
|
||||
}
|
||||
|
||||
void DPlatformTheme::setDoubleClickDistance(int doubleClickDistance)
|
||||
{
|
||||
D_D(DPlatformTheme);
|
||||
|
||||
d->theme->setSetting("Net/DoubleClickDistance", doubleClickDistance);
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->setDoubleClickDistance(doubleClickDistance);
|
||||
}
|
||||
|
||||
void DPlatformTheme::setDoubleClickTime(int doubleClickTime)
|
||||
{
|
||||
D_D(DPlatformTheme);
|
||||
|
||||
d->theme->setSetting("Net/DoubleClickTime", doubleClickTime);
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->setDoubleClickTime(doubleClickTime);
|
||||
}
|
||||
|
||||
void DPlatformTheme::setDndDragThreshold(int dndDragThreshold)
|
||||
{
|
||||
D_D(DPlatformTheme);
|
||||
|
||||
d->theme->setSetting("Net/DndDragThreshold", dndDragThreshold);
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->setDndDragThreshold(dndDragThreshold);
|
||||
}
|
||||
|
||||
void DPlatformTheme::setThemeName(const QByteArray &themeName)
|
||||
{
|
||||
D_D(DPlatformTheme);
|
||||
|
||||
d->theme->setSetting("Net/ThemeName", themeName);
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->setThemeName(themeName);
|
||||
}
|
||||
|
||||
void DPlatformTheme::setIconThemeName(const QByteArray &iconThemeName)
|
||||
{
|
||||
D_D(DPlatformTheme);
|
||||
|
||||
d->theme->setSetting("Net/IconThemeName", iconThemeName);
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->setIconThemeName(iconThemeName);
|
||||
}
|
||||
|
||||
void DPlatformTheme::setSoundThemeName(const QByteArray &soundThemeName)
|
||||
{
|
||||
D_D(DPlatformTheme);
|
||||
|
||||
d->theme->setSetting("Net/SoundThemeName", soundThemeName);
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->setSoundThemeName(soundThemeName);
|
||||
}
|
||||
|
||||
void DPlatformTheme::setFontName(const QByteArray &fontName)
|
||||
{
|
||||
D_D(DPlatformTheme);
|
||||
|
||||
d->theme->setSetting("Qt/FontName", fontName);
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->setFontName(fontName);
|
||||
}
|
||||
|
||||
void DPlatformTheme::setMonoFontName(const QByteArray &monoFontName)
|
||||
{
|
||||
D_D(DPlatformTheme);
|
||||
|
||||
d->theme->setSetting("Qt/MonoFontName", monoFontName);
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->setMonoFontName(monoFontName);
|
||||
}
|
||||
|
||||
void DPlatformTheme::setFontPointSize(qreal fontPointSize)
|
||||
{
|
||||
D_D(DPlatformTheme);
|
||||
|
||||
d->theme->setSetting("Qt/FontPointSize", fontPointSize);
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->setFontPointSize(fontPointSize);
|
||||
}
|
||||
|
||||
void DPlatformTheme::setGtkFontName(const QByteArray &fontName)
|
||||
{
|
||||
D_D(DPlatformTheme);
|
||||
|
||||
d->theme->setSetting("Gtk/FontName", fontName);
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->setGtkFontName(fontName);
|
||||
}
|
||||
|
||||
void DPlatformTheme::setActiveColor(const QColor activeColor)
|
||||
{
|
||||
D_D(DPlatformTheme);
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->setActiveColor(activeColor);
|
||||
}
|
||||
|
||||
d->theme->setSetting("Qt/ActiveColor", activeColor);
|
||||
void DPlatformTheme::setDarkActiveColor(const QColor &activeColor)
|
||||
{
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->setDarkActiveColor(activeColor);
|
||||
}
|
||||
|
||||
#define SET_COLOR(Role) setSetting(QByteArrayLiteral(#Role), Role)
|
||||
|
||||
#if DTK_VERSION < DTK_VERSION_CHECK(6, 0, 0, 0)
|
||||
void DPlatformTheme::setWindow(const QColor &window)
|
||||
{
|
||||
SET_COLOR(window);
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->setWindow(window);
|
||||
}
|
||||
|
||||
void DPlatformTheme::setWindowText(const QColor &windowText)
|
||||
{
|
||||
SET_COLOR(windowText);
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->setWindowText(windowText);
|
||||
}
|
||||
|
||||
void DPlatformTheme::setBase(const QColor &base)
|
||||
{
|
||||
SET_COLOR(base);
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->setBase(base);
|
||||
}
|
||||
|
||||
void DPlatformTheme::setAlternateBase(const QColor &alternateBase)
|
||||
{
|
||||
SET_COLOR(alternateBase);
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->setAlternateBase(alternateBase);
|
||||
}
|
||||
|
||||
void DPlatformTheme::setToolTipBase(const QColor &toolTipBase)
|
||||
{
|
||||
SET_COLOR(toolTipBase);
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->setToolTipBase(toolTipBase);
|
||||
}
|
||||
|
||||
void DPlatformTheme::setToolTipText(const QColor &toolTipText)
|
||||
{
|
||||
SET_COLOR(toolTipText);
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->setToolTipText(toolTipText);
|
||||
}
|
||||
|
||||
void DPlatformTheme::setText(const QColor &text)
|
||||
{
|
||||
SET_COLOR(text);
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->setText(text);
|
||||
}
|
||||
|
||||
void DPlatformTheme::setButton(const QColor &button)
|
||||
{
|
||||
SET_COLOR(button);
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->setButton(button);
|
||||
}
|
||||
|
||||
void DPlatformTheme::setButtonText(const QColor &buttonText)
|
||||
{
|
||||
SET_COLOR(buttonText);
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->setButtonText(buttonText);
|
||||
}
|
||||
|
||||
void DPlatformTheme::setBrightText(const QColor &brightText)
|
||||
{
|
||||
SET_COLOR(brightText);
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->setBrightText(brightText);
|
||||
}
|
||||
|
||||
void DPlatformTheme::setLight(const QColor &light)
|
||||
{
|
||||
SET_COLOR(light);
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->setLight(light);
|
||||
}
|
||||
|
||||
void DPlatformTheme::setMidlight(const QColor &midlight)
|
||||
{
|
||||
SET_COLOR(midlight);
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->setMidlight(midlight);
|
||||
}
|
||||
|
||||
void DPlatformTheme::setDark(const QColor &dark)
|
||||
{
|
||||
SET_COLOR(dark);
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->setDark(dark);
|
||||
}
|
||||
|
||||
void DPlatformTheme::setMid(const QColor &mid)
|
||||
{
|
||||
SET_COLOR(mid);
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->setMid(mid);
|
||||
}
|
||||
|
||||
void DPlatformTheme::setShadow(const QColor &shadow)
|
||||
{
|
||||
SET_COLOR(shadow);
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->setShadow(shadow);
|
||||
}
|
||||
|
||||
void DPlatformTheme::setHighlight(const QColor &highlight)
|
||||
{
|
||||
SET_COLOR(highlight);
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->setHighlight(highlight);
|
||||
}
|
||||
|
||||
void DPlatformTheme::setHighlightedText(const QColor &highlightText)
|
||||
{
|
||||
SET_COLOR(highlightText);
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->setHighlightedText(highlightText);
|
||||
}
|
||||
|
||||
void DPlatformTheme::setLink(const QColor &link)
|
||||
{
|
||||
SET_COLOR(link);
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->setLink(link);
|
||||
}
|
||||
|
||||
void DPlatformTheme::setLinkVisited(const QColor &linkVisited)
|
||||
{
|
||||
SET_COLOR(linkVisited);
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->setLinkVisited(linkVisited);
|
||||
}
|
||||
|
||||
void DPlatformTheme::setItemBackground(const QColor &itemBackground)
|
||||
{
|
||||
SET_COLOR(itemBackground);
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->setItemBackground(itemBackground);
|
||||
}
|
||||
|
||||
void DPlatformTheme::setTextTitle(const QColor &textTitle)
|
||||
{
|
||||
SET_COLOR(textTitle);
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->setTextTitle(textTitle);
|
||||
}
|
||||
|
||||
void DPlatformTheme::setTextTips(const QColor &textTips)
|
||||
{
|
||||
SET_COLOR(textTips);
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->setTextTips(textTips);
|
||||
}
|
||||
|
||||
void DPlatformTheme::setTextWarning(const QColor &textWarning)
|
||||
{
|
||||
SET_COLOR(textWarning);
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->setTextWarning(textWarning);
|
||||
}
|
||||
|
||||
void DPlatformTheme::setTextLively(const QColor &textLively)
|
||||
{
|
||||
SET_COLOR(textLively);
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->setTextLively(textLively);
|
||||
}
|
||||
|
||||
void DPlatformTheme::setLightLively(const QColor &lightLively)
|
||||
{
|
||||
SET_COLOR(lightLively);
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->setLightLively(lightLively);
|
||||
}
|
||||
|
||||
void DPlatformTheme::setDarkLively(const QColor &darkLively)
|
||||
{
|
||||
SET_COLOR(darkLively);
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->setDarkLively(darkLively);
|
||||
}
|
||||
|
||||
void DPlatformTheme::setFrameBorder(const QColor &frameBorder)
|
||||
{
|
||||
SET_COLOR(frameBorder);
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->setFrameBorder(frameBorder);
|
||||
}
|
||||
#endif
|
||||
|
||||
void DPlatformTheme::setDotsPerInch(const QString &screenName, int dpi)
|
||||
{
|
||||
D_D(DPlatformTheme);
|
||||
|
||||
if (screenName.isEmpty()) {
|
||||
d->theme->setSetting("Xft/DPI", dpi);
|
||||
} else {
|
||||
d->theme->setSetting("Qt/DPI/" + screenName.toLocal8Bit(), dpi);
|
||||
}
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->setDotsPerInch(screenName, dpi);
|
||||
}
|
||||
|
||||
void DPlatformTheme::setWindowRadius(int windowRadius)
|
||||
{
|
||||
D_D(DPlatformTheme);
|
||||
|
||||
d->theme->setSetting("DTK/WindowRadius", windowRadius);
|
||||
D_DC(DPlatformTheme);
|
||||
return d->platformInterface->setWindowRadius(windowRadius);
|
||||
}
|
||||
|
||||
DGUI_END_NAMESPACE
|
||||
|
|
|
|||
|
|
@ -22,13 +22,13 @@ DGUI_BEGIN_NAMESPACE
|
|||
\enum DRegionMonitor::RegisterdFlag
|
||||
DRegionMonitor::RegisterdFlag 定义了 DRegionMonitor 监听标志。
|
||||
|
||||
\value Motion
|
||||
\var Motion
|
||||
代表监听鼠标移动。
|
||||
|
||||
\value Button
|
||||
\var Button
|
||||
代表监听鼠标按键。
|
||||
|
||||
\value Key
|
||||
\var Key
|
||||
代表监听键盘按键。
|
||||
*/
|
||||
|
||||
|
|
|
|||
|
|
@ -102,7 +102,7 @@ bool DWindowGroupLeaderPrivate::setWindowGroupLeader(quint32 window, quint32 gro
|
|||
\image wa_wb_topWindow.gif
|
||||
如果一个组内同时存在多个未设置过 QWindow::setTransientParent 的 Qt::Dialog(其它会自动设置 WM_TRANSIENT_FOR
|
||||
属性的窗口也成立)类型的窗口,这些窗口之间不会互相影响显示顺序,具体的规则和 X11 ICCCM 标准一致。
|
||||
\l {https://tronche.com/gui/x/icccm/sec-4.html#WM_TRANSIENT_FOR}
|
||||
\ref {https://tronche.com/gui/x/icccm/sec-4.html#WM_TRANSIENT_FOR}
|
||||
\sa DWindowGroupLeader::clientLeaderId
|
||||
\sa Dtk::Widget::DApplication::loadDXcbPlugin
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -9,12 +9,25 @@
|
|||
#include <DGuiApplicationHelper>
|
||||
#include <QGuiApplication>
|
||||
|
||||
|
||||
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
|
||||
#include <qpa/qplatformwindow_p.h>
|
||||
#define D_XCB_WINDOW_TYPE QNativeInterface::Private::QXcbWindow::WindowType
|
||||
#else
|
||||
#include <QtPlatformHeaders/QXcbWindowFunctions>
|
||||
#define D_XCB_WINDOW_TYPE QXcbWindowFunctions::WmWindowType
|
||||
#endif
|
||||
|
||||
|
||||
#include <qpa/qplatformwindow.h>
|
||||
#include <qpa/qplatformnativeinterface.h>
|
||||
|
||||
#include <functional>
|
||||
|
||||
#ifndef DTK_DISABLE_TREELAND
|
||||
#include "plugins/platform/treeland/dtreelandwindowmanagerhelper.h"
|
||||
#endif
|
||||
|
||||
DGUI_BEGIN_NAMESPACE
|
||||
|
||||
#define DEFINE_CONST_CHAR(Name) const char _##Name[] = "_d_" #Name
|
||||
|
|
@ -44,81 +57,53 @@ DEFINE_CONST_CHAR(connectWindowMotifWMHintsChanged);
|
|||
DEFINE_CONST_CHAR(popupSystemWindowMenu);
|
||||
DEFINE_CONST_CHAR(setWMClassName);
|
||||
|
||||
static bool connectWindowManagerChangedSignal(QObject *object, std::function<void ()> slot)
|
||||
template<typename ReturnT, typename FunctionT, typename... Args>
|
||||
static inline ReturnT callPlatformFunction(const QByteArray &funcName, Args... args)
|
||||
{
|
||||
QFunctionPointer connectWindowManagerChangedSignal = Q_NULLPTR;
|
||||
QFunctionPointer func = Q_NULLPTR;
|
||||
|
||||
#if QT_VERSION >= QT_VERSION_CHECK(5, 4, 0)
|
||||
connectWindowManagerChangedSignal = qApp->platformFunction(_connectWindowManagerChangedSignal);
|
||||
func = qApp->platformFunction(funcName);
|
||||
#endif
|
||||
|
||||
return connectWindowManagerChangedSignal && reinterpret_cast<bool(*)(QObject *object, std::function<void ()>)>(connectWindowManagerChangedSignal)(object, slot);
|
||||
return func ? reinterpret_cast<FunctionT>(func)(args...) : ReturnT();
|
||||
}
|
||||
|
||||
typedef bool(*func_t)(QObject *object, std::function<void ()>);
|
||||
static bool connectWindowManagerChangedSignal(QObject *object, std::function<void ()> slot)
|
||||
{
|
||||
return callPlatformFunction<bool, func_t>(_connectWindowManagerChangedSignal, object, slot);
|
||||
}
|
||||
|
||||
static bool connectHasBlurWindowChanged(QObject *object, std::function<void ()> slot)
|
||||
{
|
||||
QFunctionPointer connectHasBlurWindowChanged = Q_NULLPTR;
|
||||
|
||||
#if QT_VERSION >= QT_VERSION_CHECK(5, 4, 0)
|
||||
connectHasBlurWindowChanged = qApp->platformFunction(_connectHasBlurWindowChanged);
|
||||
#endif
|
||||
|
||||
return connectHasBlurWindowChanged && reinterpret_cast<bool(*)(QObject *object, std::function<void ()>)>(connectHasBlurWindowChanged)(object, slot);
|
||||
return callPlatformFunction<bool, func_t>(_connectHasBlurWindowChanged, object, slot);
|
||||
}
|
||||
|
||||
static bool connectHasCompositeChanged(QObject *object, std::function<void ()> slot)
|
||||
{
|
||||
QFunctionPointer connectHasCompositeChanged = Q_NULLPTR;
|
||||
|
||||
#if QT_VERSION >= QT_VERSION_CHECK(5, 4, 0)
|
||||
connectHasCompositeChanged = qApp->platformFunction(_connectHasCompositeChanged);
|
||||
#endif
|
||||
|
||||
return connectHasCompositeChanged && reinterpret_cast<bool(*)(QObject *object, std::function<void ()>)>(connectHasCompositeChanged)(object, slot);
|
||||
return callPlatformFunction<bool, func_t>(_connectHasCompositeChanged, object, slot);
|
||||
}
|
||||
|
||||
static bool connectHasNoTitlebarChanged(QObject *object, std::function<void ()> slot)
|
||||
{
|
||||
QFunctionPointer connectHasNoTitlebarChanged = Q_NULLPTR;
|
||||
|
||||
#if QT_VERSION >= QT_VERSION_CHECK(5, 4, 0)
|
||||
connectHasNoTitlebarChanged = qApp->platformFunction(_connectHasNoTitlebarChanged);
|
||||
#endif
|
||||
|
||||
return connectHasNoTitlebarChanged && reinterpret_cast<bool(*)(QObject *object, std::function<void ()>)>(connectHasNoTitlebarChanged)(object, slot);
|
||||
return callPlatformFunction<bool, func_t>(_connectHasNoTitlebarChanged, object, slot);
|
||||
}
|
||||
|
||||
static bool connectHasWallpaperEffectChanged(QObject *object, std::function<void ()> slot)
|
||||
{
|
||||
QFunctionPointer connectHasWallpaperEffectChanged = Q_NULLPTR;
|
||||
|
||||
#if QT_VERSION >= QT_VERSION_CHECK(5, 4, 0)
|
||||
connectHasWallpaperEffectChanged = qApp->platformFunction(_connectHasWallpaperEffectChanged);
|
||||
#endif
|
||||
|
||||
return connectHasWallpaperEffectChanged && reinterpret_cast<bool(*)(QObject *object, std::function<void ()>)>(connectHasWallpaperEffectChanged)(object, slot);
|
||||
return callPlatformFunction<bool, func_t>(_connectHasWallpaperEffectChanged, object, slot);
|
||||
}
|
||||
|
||||
static bool connectWindowListChanged(QObject *object, std::function<void ()> slot)
|
||||
{
|
||||
QFunctionPointer connectWindowListChanged = Q_NULLPTR;
|
||||
|
||||
#if QT_VERSION >= QT_VERSION_CHECK(5, 4, 0)
|
||||
connectWindowListChanged = qApp->platformFunction(_connectWindowListChanged);
|
||||
#endif
|
||||
|
||||
return connectWindowListChanged && reinterpret_cast<bool(*)(QObject *object, std::function<void ()>)>(connectWindowListChanged)(object, slot);
|
||||
return callPlatformFunction<bool, func_t>(_connectWindowListChanged, object, slot);
|
||||
}
|
||||
|
||||
static bool connectWindowMotifWMHintsChanged(QObject *object, std::function<void (quint32)> slot)
|
||||
{
|
||||
QFunctionPointer connectWindowMotifWMHintsChanged = Q_NULLPTR;
|
||||
|
||||
#if QT_VERSION >= QT_VERSION_CHECK(5, 4, 0)
|
||||
connectWindowMotifWMHintsChanged = qApp->platformFunction(_connectWindowMotifWMHintsChanged);
|
||||
#endif
|
||||
|
||||
return connectWindowMotifWMHintsChanged && reinterpret_cast<bool(*)(QObject *object, std::function<void (quint32)>)>(connectWindowMotifWMHintsChanged)(object, slot);
|
||||
typedef bool(*quint32_func_t)(QObject *object, std::function<void (quint32)>);
|
||||
return callPlatformFunction<bool, quint32_func_t>(_connectWindowMotifWMHintsChanged, object, slot);
|
||||
}
|
||||
|
||||
class DWindowManagerHelperPrivate : public DTK_CORE_NAMESPACE::DObjectPrivate
|
||||
|
|
@ -130,6 +115,11 @@ public:
|
|||
mutable QList<DForeignWindow *> windowList;
|
||||
};
|
||||
|
||||
// TODO abstract an interface to adapt to various WM.
|
||||
#ifndef DTK_DISABLE_TREELAND
|
||||
Q_GLOBAL_STATIC(TreelandWindowManagerHelper, treelandWMHGlobal)
|
||||
#endif
|
||||
|
||||
class DWindowManagerHelper_ : public DWindowManagerHelper {};
|
||||
Q_GLOBAL_STATIC(DWindowManagerHelper_, wmhGlobal)
|
||||
|
||||
|
|
@ -342,6 +332,11 @@ DWindowManagerHelper::~DWindowManagerHelper()
|
|||
*/
|
||||
DWindowManagerHelper *DWindowManagerHelper::instance()
|
||||
{
|
||||
#ifndef DTK_DISABLE_TREELAND
|
||||
if (DGuiApplicationHelper::testAttribute(DGuiApplicationHelper::IsWaylandPlatform)) {
|
||||
return treelandWMHGlobal;
|
||||
}
|
||||
#endif
|
||||
return wmhGlobal;
|
||||
}
|
||||
|
||||
|
|
@ -494,7 +489,17 @@ DWindowManagerHelper::MotifDecorations DWindowManagerHelper::getMotifDecorations
|
|||
void DWindowManagerHelper::setWmWindowTypes(QWindow *window, WmWindowTypes types)
|
||||
{
|
||||
const int _types = static_cast<int>(types);
|
||||
QXcbWindowFunctions::setWmWindowType(window, static_cast<QXcbWindowFunctions::WmWindowType>(_types));
|
||||
|
||||
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
|
||||
typedef QNativeInterface::Private::QXcbWindow QXcbWindow_P;
|
||||
if (auto w = dynamic_cast<QXcbWindow_P *>(window->handle())) {
|
||||
w->setWindowType(static_cast<D_XCB_WINDOW_TYPE>(_types));
|
||||
} else {
|
||||
qWarning() << "cast" << window << "to platform window failed";
|
||||
}
|
||||
#else
|
||||
QXcbWindowFunctions::setWmWindowType(window, static_cast<D_XCB_WINDOW_TYPE>(_types));
|
||||
#endif
|
||||
}
|
||||
|
||||
/*!
|
||||
|
|
@ -507,7 +512,7 @@ void DWindowManagerHelper::setWmWindowTypes(QWindow *window, WmWindowTypes types
|
|||
void DWindowManagerHelper::setWmClassName(const QByteArray &name)
|
||||
{
|
||||
typedef void (*SetWmNameType)(const QByteArray&);
|
||||
return QPlatformHeaderHelper::callPlatformFunction<void, SetWmNameType>(_setWMClassName, name);
|
||||
return callPlatformFunction<void, SetWmNameType>(_setWMClassName, name);
|
||||
}
|
||||
|
||||
/*!
|
||||
|
|
@ -519,15 +524,7 @@ void DWindowManagerHelper::setWmClassName(const QByteArray &name)
|
|||
*/
|
||||
void DWindowManagerHelper::popupSystemWindowMenu(const QWindow *window)
|
||||
{
|
||||
QFunctionPointer popupSystemWindowMenu = Q_NULLPTR;
|
||||
|
||||
#if QT_VERSION >= QT_VERSION_CHECK(5, 4, 0)
|
||||
popupSystemWindowMenu = qApp->platformFunction(_popupSystemWindowMenu);
|
||||
#endif
|
||||
|
||||
if (popupSystemWindowMenu && window->handle()) {
|
||||
reinterpret_cast<void(*)(quint32)>(popupSystemWindowMenu)(window->handle()->winId());
|
||||
}
|
||||
return callPlatformFunction<void, void(*)(quint32)>(_popupSystemWindowMenu, quint32(window->handle()->winId()));
|
||||
}
|
||||
|
||||
/*!
|
||||
|
|
@ -536,13 +533,12 @@ void DWindowManagerHelper::popupSystemWindowMenu(const QWindow *window)
|
|||
*/
|
||||
bool DWindowManagerHelper::hasBlurWindow() const
|
||||
{
|
||||
QFunctionPointer wmHasBlurWindow = Q_NULLPTR;
|
||||
|
||||
#if QT_VERSION >= QT_VERSION_CHECK(5, 4, 0)
|
||||
wmHasBlurWindow = qApp->platformFunction(_hasBlurWindow);
|
||||
#ifndef DTK_DISABLE_TREELAND
|
||||
if (DGuiApplicationHelper::testAttribute(DGuiApplicationHelper::IsWaylandPlatform)) {
|
||||
return treelandWMHGlobal->hasBlurWindow();
|
||||
}
|
||||
#endif
|
||||
|
||||
return wmHasBlurWindow && reinterpret_cast<bool(*)()>(wmHasBlurWindow)();
|
||||
return callPlatformFunction<bool, bool(*)()>(_hasBlurWindow);
|
||||
}
|
||||
|
||||
/*!
|
||||
|
|
@ -551,6 +547,12 @@ bool DWindowManagerHelper::hasBlurWindow() const
|
|||
*/
|
||||
bool DWindowManagerHelper::hasComposite() const
|
||||
{
|
||||
#ifndef DTK_DISABLE_TREELAND
|
||||
if (DGuiApplicationHelper::testAttribute(DGuiApplicationHelper::IsWaylandPlatform)) {
|
||||
return treelandWMHGlobal->hasComposite();
|
||||
}
|
||||
#endif
|
||||
|
||||
QFunctionPointer hasComposite = Q_NULLPTR;
|
||||
|
||||
#if QT_VERSION >= QT_VERSION_CHECK(5, 4, 0)
|
||||
|
|
@ -571,7 +573,7 @@ bool DWindowManagerHelper::hasComposite() const
|
|||
return true;
|
||||
}
|
||||
|
||||
return reinterpret_cast<bool(*)()>(hasComposite)();
|
||||
return callPlatformFunction<bool, bool(*)()>(_hasComposite);
|
||||
}
|
||||
|
||||
/*!
|
||||
|
|
@ -580,13 +582,12 @@ bool DWindowManagerHelper::hasComposite() const
|
|||
*/
|
||||
bool DWindowManagerHelper::hasNoTitlebar() const
|
||||
{
|
||||
QFunctionPointer hasNoTitlebar = Q_NULLPTR;
|
||||
|
||||
#if QT_VERSION >= QT_VERSION_CHECK(5, 4, 0)
|
||||
hasNoTitlebar = qApp->platformFunction(_hasNoTitlebar);
|
||||
#ifndef DTK_DISABLE_TREELAND
|
||||
if (DGuiApplicationHelper::testAttribute(DGuiApplicationHelper::IsWaylandPlatform)) {
|
||||
return treelandWMHGlobal->hasNoTitlebar();
|
||||
}
|
||||
#endif
|
||||
|
||||
return hasNoTitlebar && reinterpret_cast<bool(*)()>(hasNoTitlebar)();
|
||||
return callPlatformFunction<bool, bool(*)()>(_hasNoTitlebar);
|
||||
}
|
||||
|
||||
/*!
|
||||
|
|
@ -595,31 +596,19 @@ bool DWindowManagerHelper::hasNoTitlebar() const
|
|||
*/
|
||||
bool DWindowManagerHelper::hasWallpaperEffect() const
|
||||
{
|
||||
QFunctionPointer hasWallpaperEffect = Q_NULLPTR;
|
||||
|
||||
#if QT_VERSION >= QT_VERSION_CHECK(5, 4, 0)
|
||||
hasWallpaperEffect = qApp->platformFunction(_hasWallpaperEffect);
|
||||
#endif
|
||||
|
||||
return hasWallpaperEffect && reinterpret_cast<bool(*)()>(hasWallpaperEffect)();
|
||||
return callPlatformFunction<bool, bool(*)()>(_hasWallpaperEffect);
|
||||
}
|
||||
|
||||
/*!
|
||||
\brief DWindowManagerHelper::windowManagerNameString
|
||||
\return 返回窗口管理器名称。在X11平台上,此值为窗口管理器对应窗口的 _NET_WM_NAME
|
||||
的值
|
||||
\l {https://specifications.freedesktop.org/wm-spec/1.3/ar01s03.html}{_NET_SUPPORTING_WM_CHECK}
|
||||
\l {https://specifications.freedesktop.org/wm-spec/1.3/ar01s05.html}{_NET_WM_NAME}
|
||||
\ref {https://specifications.freedesktop.org/wm-spec/1.3/ar01s03.html}{_NET_SUPPORTING_WM_CHECK}
|
||||
\ref {https://specifications.freedesktop.org/wm-spec/1.3/ar01s05.html}{_NET_WM_NAME}
|
||||
*/
|
||||
QString DWindowManagerHelper::windowManagerNameString() const
|
||||
{
|
||||
QFunctionPointer windowManagerName = Q_NULLPTR;
|
||||
|
||||
#if QT_VERSION >= QT_VERSION_CHECK(5, 4, 0)
|
||||
windowManagerName = qApp->platformFunction(_windowManagerName);
|
||||
#endif
|
||||
|
||||
return windowManagerName ? reinterpret_cast<QString(*)()>(windowManagerName)() : QString();
|
||||
return callPlatformFunction<QString, QString(*)()>(_windowManagerName);
|
||||
}
|
||||
|
||||
/*!
|
||||
|
|
@ -650,15 +639,7 @@ DWindowManagerHelper::WMName DWindowManagerHelper::windowManagerName() const
|
|||
*/
|
||||
QVector<quint32> DWindowManagerHelper::allWindowIdList() const
|
||||
{
|
||||
QFunctionPointer wmClientList = Q_NULLPTR;
|
||||
|
||||
#if QT_VERSION >= QT_VERSION_CHECK(5, 4, 0)
|
||||
wmClientList = qApp->platformFunction(_getWindows);
|
||||
#endif
|
||||
|
||||
if (!wmClientList) return QVector<quint32>();
|
||||
|
||||
return reinterpret_cast<QVector<quint32>(*)()>(wmClientList)();
|
||||
return callPlatformFunction<QVector<quint32>, QVector<quint32>(*)()>(_getWindows);
|
||||
}
|
||||
|
||||
/*!
|
||||
|
|
@ -669,15 +650,7 @@ QVector<quint32> DWindowManagerHelper::allWindowIdList() const
|
|||
*/
|
||||
QVector<quint32> DWindowManagerHelper::currentWorkspaceWindowIdList() const
|
||||
{
|
||||
QFunctionPointer wmClientList = Q_NULLPTR;
|
||||
|
||||
#if QT_VERSION >= QT_VERSION_CHECK(5, 4, 0)
|
||||
wmClientList = qApp->platformFunction(_getCurrentWorkspaceWindows);
|
||||
#endif
|
||||
|
||||
if (!wmClientList) return QVector<quint32>();
|
||||
|
||||
return reinterpret_cast<QVector<quint32>(*)()>(wmClientList)();
|
||||
return callPlatformFunction<QVector<quint32>, QVector<quint32>(*)()>(_getCurrentWorkspaceWindows);
|
||||
}
|
||||
|
||||
/*!
|
||||
|
|
@ -732,16 +705,7 @@ QList<DForeignWindow *> DWindowManagerHelper::currentWorkspaceWindows() const
|
|||
*/
|
||||
quint32 DWindowManagerHelper::windowFromPoint(const QPoint &p)
|
||||
{
|
||||
QFunctionPointer winFromPoint = Q_NULLPTR;
|
||||
|
||||
#if QT_VERSION >= QT_VERSION_CHECK(5, 4, 0)
|
||||
winFromPoint = qApp->platformFunction(_windowFromPoint);
|
||||
#endif
|
||||
|
||||
if (!winFromPoint)
|
||||
return 0;
|
||||
|
||||
return reinterpret_cast<quint32 (*)(const QPoint &)>(winFromPoint)(p);
|
||||
return callPlatformFunction<quint32, quint32 (*)(const QPoint &)>(_windowFromPoint, p);
|
||||
}
|
||||
|
||||
/*!
|
||||
|
|
|
|||
|
|
@ -7,4 +7,5 @@ file(GLOB KERNEL_SOURCE
|
|||
set(kernel_SRC
|
||||
${KERNEL_HEADER}
|
||||
${KERNEL_SOURCE}
|
||||
${CMAKE_CURRENT_LIST_DIR}/orgdeepindtkpreference.hpp
|
||||
)
|
||||
|
|
|
|||
|
|
@ -0,0 +1,751 @@
|
|||
/**
|
||||
* This file is generated by dconfig2cpp.
|
||||
* Command line arguments: ./build5/tools/dconfig2cpp/dconfig2cpp -c OrgDeepinDTKPreference /usr/share/dsg/configs/org.deepin.dtk.preference.json
|
||||
* Generation time: 2025-05-08T17:31:56
|
||||
* JSON file version: 1.0
|
||||
*
|
||||
* WARNING: DO NOT MODIFY THIS FILE MANUALLY.
|
||||
* If you need to change the content, please modify the dconfig2cpp tool.
|
||||
*/
|
||||
|
||||
#ifndef ORGDEEPINDTKPREFERENCE_H
|
||||
#define ORGDEEPINDTKPREFERENCE_H
|
||||
|
||||
#include <QThread>
|
||||
#include <QVariant>
|
||||
#include <QPointer>
|
||||
#include <QDebug>
|
||||
#include <QAtomicPointer>
|
||||
#include <QAtomicInteger>
|
||||
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
|
||||
#include <QProperty>
|
||||
#endif
|
||||
#include <DSGApplication>
|
||||
#include <DConfig>
|
||||
|
||||
class OrgDeepinDTKPreference : public QObject {
|
||||
Q_OBJECT
|
||||
|
||||
Q_PROPERTY(bool autoDisplayFeature READ autoDisplayFeature WRITE setAutoDisplayFeature NOTIFY autoDisplayFeatureChanged RESET resetAutoDisplayFeature)
|
||||
Q_PROPERTY(bool enableDtkAnimations READ enableDtkAnimations WRITE setEnableDtkAnimations NOTIFY enableDtkAnimationsChanged RESET resetEnableDtkAnimations)
|
||||
Q_PROPERTY(bool featureUpdated READ featureUpdated WRITE setFeatureUpdated NOTIFY featureUpdatedChanged RESET resetFeatureUpdated)
|
||||
Q_PROPERTY(bool keyboardsearchDisabled READ keyboardsearchDisabled WRITE setKeyboardsearchDisabled NOTIFY keyboardsearchDisabledChanged RESET resetKeyboardsearchDisabled)
|
||||
Q_PROPERTY(QString rules READ rules WRITE setRules NOTIFY rulesChanged RESET resetRules)
|
||||
Q_PROPERTY(qlonglong scrollBarPolicy READ scrollBarPolicy WRITE setScrollBarPolicy NOTIFY scrollBarPolicyChanged RESET resetScrollBarPolicy)
|
||||
Q_PROPERTY(qlonglong sizeMode READ sizeMode WRITE setSizeMode NOTIFY sizeModeChanged RESET resetSizeMode)
|
||||
Q_PROPERTY(qlonglong themeType READ themeType WRITE setThemeType NOTIFY themeTypeChanged RESET resetThemeType)
|
||||
Q_PROPERTY(qlonglong titlebarHeight READ titlebarHeight WRITE setTitlebarHeight NOTIFY titlebarHeightChanged RESET resetTitlebarHeight)
|
||||
Q_PROPERTY(bool underlineShortcut READ underlineShortcut WRITE setUnderlineShortcut NOTIFY underlineShortcutChanged RESET resetUnderlineShortcut)
|
||||
Q_CLASSINFO("DConfigKeyList", "autoDisplayFeature;enableDtkAnimations;featureUpdated;keyboardsearchDisabled;rules;scrollBarPolicy;sizeMode;themeType;titlebarHeight;underlineShortcut")
|
||||
Q_CLASSINFO("DConfigFileName", "org.deepin.dtk.preference")
|
||||
Q_CLASSINFO("DConfigFileVersion", "1.0")
|
||||
|
||||
public:
|
||||
explicit OrgDeepinDTKPreference(QThread *thread, DTK_CORE_NAMESPACE::DConfigBackend *backend,
|
||||
const QString &name, const QString &appId, const QString &subpath,
|
||||
bool isGeneric, QObject *parent)
|
||||
: QObject(nullptr) {
|
||||
if (!thread->isRunning()) {
|
||||
qWarning() << QLatin1String("Warning: The provided thread is not running.");
|
||||
}
|
||||
Q_ASSERT(QThread::currentThread() != thread);
|
||||
auto worker = new QObject();
|
||||
worker->moveToThread(thread);
|
||||
QPointer<QObject> watcher(parent);
|
||||
QMetaObject::invokeMethod(worker, [=, this]() {
|
||||
DTK_CORE_NAMESPACE::DConfig *config = nullptr;
|
||||
if (isGeneric) {
|
||||
if (backend) {
|
||||
config = DTK_CORE_NAMESPACE::DConfig::createGeneric(backend, name, subpath, nullptr);
|
||||
} else {
|
||||
config = DTK_CORE_NAMESPACE::DConfig::createGeneric(name, subpath, nullptr);
|
||||
}
|
||||
} else {
|
||||
if (backend) {
|
||||
if (appId.isNull()) {
|
||||
config = DTK_CORE_NAMESPACE::DConfig::create(backend, DTK_CORE_NAMESPACE::DSGApplication::id(),
|
||||
name, subpath, nullptr);
|
||||
} else {
|
||||
config = DTK_CORE_NAMESPACE::DConfig::create(backend, appId, name, subpath, nullptr);
|
||||
}
|
||||
} else {
|
||||
if (appId.isNull()) {
|
||||
config = DTK_CORE_NAMESPACE::DConfig::create(DTK_CORE_NAMESPACE::DSGApplication::id(),
|
||||
name, subpath, nullptr);
|
||||
} else {
|
||||
config = DTK_CORE_NAMESPACE::DConfig::create(appId, name, subpath, nullptr);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!config) {
|
||||
qWarning() << QLatin1String("Failed to create DConfig instance.");
|
||||
worker->deleteLater();
|
||||
return;
|
||||
}
|
||||
config->moveToThread(QThread::currentThread());
|
||||
initializeInConfigThread(config);
|
||||
if (watcher != parent) {
|
||||
// delete this if watcher is changed to nullptr.
|
||||
deleteLater();
|
||||
} else if (!this->parent() && parent) {
|
||||
// !parent() means that parent is not changed.
|
||||
this->setParent(watcher);
|
||||
}
|
||||
worker->deleteLater();
|
||||
});
|
||||
}
|
||||
static OrgDeepinDTKPreference* create(const QString &appId = {}, const QString &subpath = {}, QObject *parent = nullptr, QThread *thread = DTK_CORE_NAMESPACE::DConfig::globalThread())
|
||||
{ return new OrgDeepinDTKPreference(thread, nullptr, QStringLiteral(u"\u006f\u0072\u0067\u002e\u0064\u0065\u0065\u0070\u0069\u006e\u002e\u0064\u0074\u006b\u002e\u0070\u0072\u0065\u0066\u0065\u0072\u0065\u006e\u0063\u0065"), appId, subpath, false, parent); }
|
||||
static OrgDeepinDTKPreference* create(DTK_CORE_NAMESPACE::DConfigBackend *backend, const QString &appId = {}, const QString &subpath = {}, QObject *parent = nullptr, QThread *thread = DTK_CORE_NAMESPACE::DConfig::globalThread())
|
||||
{ return new OrgDeepinDTKPreference(thread, backend, QStringLiteral(u"\u006f\u0072\u0067\u002e\u0064\u0065\u0065\u0070\u0069\u006e\u002e\u0064\u0074\u006b\u002e\u0070\u0072\u0065\u0066\u0065\u0072\u0065\u006e\u0063\u0065"), appId, subpath, false, parent); }
|
||||
static OrgDeepinDTKPreference* createByName(const QString &name, const QString &appId = {}, const QString &subpath = {}, QObject *parent = nullptr, QThread *thread = DTK_CORE_NAMESPACE::DConfig::globalThread())
|
||||
{ return new OrgDeepinDTKPreference(thread, nullptr, name, appId, subpath, false, parent); }
|
||||
static OrgDeepinDTKPreference* createByName(DTK_CORE_NAMESPACE::DConfigBackend *backend, const QString &name, const QString &appId = {}, const QString &subpath = {}, QObject *parent = nullptr, QThread *thread = DTK_CORE_NAMESPACE::DConfig::globalThread())
|
||||
{ return new OrgDeepinDTKPreference(thread, backend, name, appId, subpath, false, parent); }
|
||||
static OrgDeepinDTKPreference* createGeneric(const QString &subpath = {}, QObject *parent = nullptr, QThread *thread = DTK_CORE_NAMESPACE::DConfig::globalThread())
|
||||
{ return new OrgDeepinDTKPreference(thread, nullptr, QStringLiteral(u"\u006f\u0072\u0067\u002e\u0064\u0065\u0065\u0070\u0069\u006e\u002e\u0064\u0074\u006b\u002e\u0070\u0072\u0065\u0066\u0065\u0072\u0065\u006e\u0063\u0065"), {}, subpath, true, parent); }
|
||||
static OrgDeepinDTKPreference* create(DTK_CORE_NAMESPACE::DConfigBackend *backend, const QString &subpath = {}, QObject *parent = nullptr, QThread *thread = DTK_CORE_NAMESPACE::DConfig::globalThread())
|
||||
{ return new OrgDeepinDTKPreference(thread, backend, QStringLiteral(u"\u006f\u0072\u0067\u002e\u0064\u0065\u0065\u0070\u0069\u006e\u002e\u0064\u0074\u006b\u002e\u0070\u0072\u0065\u0066\u0065\u0072\u0065\u006e\u0063\u0065"), {}, subpath, true, parent); }
|
||||
static OrgDeepinDTKPreference* createGenericByName(const QString &name, const QString &subpath = {}, QObject *parent = nullptr, QThread *thread = DTK_CORE_NAMESPACE::DConfig::globalThread())
|
||||
{ return new OrgDeepinDTKPreference(thread, nullptr, name, {}, subpath, true, parent); }
|
||||
static OrgDeepinDTKPreference* createGenericByName(DTK_CORE_NAMESPACE::DConfigBackend *backend, const QString &name, const QString &subpath = {}, QObject *parent = nullptr, QThread *thread = DTK_CORE_NAMESPACE::DConfig::globalThread())
|
||||
{ return new OrgDeepinDTKPreference(thread, backend, name, {}, subpath, true, parent); }
|
||||
~OrgDeepinDTKPreference() {
|
||||
if (m_config.loadRelaxed()) {
|
||||
m_config.loadRelaxed()->deleteLater();
|
||||
}
|
||||
}
|
||||
|
||||
Q_INVOKABLE DTK_CORE_NAMESPACE::DConfig *config() const {
|
||||
return m_config.loadRelaxed();
|
||||
}
|
||||
|
||||
Q_INVOKABLE bool isInitializeSucceed() const {
|
||||
return m_status.loadRelaxed() == static_cast<int>(Status::Succeed);
|
||||
}
|
||||
|
||||
Q_INVOKABLE bool isInitializeFailed() const {
|
||||
return m_status.loadRelaxed() == static_cast<int>(Status::Failed);
|
||||
}
|
||||
|
||||
Q_INVOKABLE bool isInitializing() const {
|
||||
return m_status.loadRelaxed() == static_cast<int>(Status::Invalid);
|
||||
}
|
||||
|
||||
Q_INVOKABLE QStringList keyList() const {
|
||||
return { QStringLiteral("autoDisplayFeature"),
|
||||
QStringLiteral("enableDtkAnimations"),
|
||||
QStringLiteral("featureUpdated"),
|
||||
QStringLiteral("keyboardsearchDisabled"),
|
||||
QStringLiteral("rules"),
|
||||
QStringLiteral("scrollBarPolicy"),
|
||||
QStringLiteral("sizeMode"),
|
||||
QStringLiteral("themeType"),
|
||||
QStringLiteral("titlebarHeight"),
|
||||
QStringLiteral("underlineShortcut")};
|
||||
}
|
||||
|
||||
Q_INVOKABLE bool isDefaultValue(const QString &key) const {
|
||||
if (key == QStringLiteral("autoDisplayFeature"))
|
||||
return autoDisplayFeatureIsDefaultValue();
|
||||
if (key == QStringLiteral("enableDtkAnimations"))
|
||||
return enableDtkAnimationsIsDefaultValue();
|
||||
if (key == QStringLiteral("featureUpdated"))
|
||||
return featureUpdatedIsDefaultValue();
|
||||
if (key == QStringLiteral("keyboardsearchDisabled"))
|
||||
return keyboardsearchDisabledIsDefaultValue();
|
||||
if (key == QStringLiteral("rules"))
|
||||
return rulesIsDefaultValue();
|
||||
if (key == QStringLiteral("scrollBarPolicy"))
|
||||
return scrollBarPolicyIsDefaultValue();
|
||||
if (key == QStringLiteral("sizeMode"))
|
||||
return sizeModeIsDefaultValue();
|
||||
if (key == QStringLiteral("themeType"))
|
||||
return themeTypeIsDefaultValue();
|
||||
if (key == QStringLiteral("titlebarHeight"))
|
||||
return titlebarHeightIsDefaultValue();
|
||||
if (key == QStringLiteral("underlineShortcut"))
|
||||
return underlineShortcutIsDefaultValue();
|
||||
return false;
|
||||
}
|
||||
|
||||
bool autoDisplayFeature() const {
|
||||
return p_autoDisplayFeature;
|
||||
}
|
||||
void setAutoDisplayFeature(const bool &value) {
|
||||
auto oldValue = p_autoDisplayFeature;
|
||||
p_autoDisplayFeature = value;
|
||||
markPropertySet(0);
|
||||
if (auto config = m_config.loadRelaxed()) {
|
||||
QMetaObject::invokeMethod(config, [this, value]() {
|
||||
m_config.loadRelaxed()->setValue(QStringLiteral("autoDisplayFeature"), value);
|
||||
});
|
||||
}
|
||||
if (p_autoDisplayFeature != oldValue) {
|
||||
Q_EMIT autoDisplayFeatureChanged();
|
||||
Q_EMIT valueChanged(QStringLiteral("autoDisplayFeature"), value);
|
||||
}
|
||||
}
|
||||
void resetAutoDisplayFeature() {
|
||||
if (auto config = m_config.loadRelaxed()) {
|
||||
QMetaObject::invokeMethod(config, [this]() {
|
||||
m_config.loadRelaxed()->reset(QStringLiteral("autoDisplayFeature"));
|
||||
});
|
||||
}
|
||||
}
|
||||
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
|
||||
QBindable<bool> bindableAutoDisplayFeature() {
|
||||
return QBindable<bool>(this, "autoDisplayFeature");
|
||||
}
|
||||
#endif
|
||||
Q_INVOKABLE bool autoDisplayFeatureIsDefaultValue() const {
|
||||
return !testPropertySet(0);
|
||||
}
|
||||
bool enableDtkAnimations() const {
|
||||
return p_enableDtkAnimations;
|
||||
}
|
||||
void setEnableDtkAnimations(const bool &value) {
|
||||
auto oldValue = p_enableDtkAnimations;
|
||||
p_enableDtkAnimations = value;
|
||||
markPropertySet(1);
|
||||
if (auto config = m_config.loadRelaxed()) {
|
||||
QMetaObject::invokeMethod(config, [this, value]() {
|
||||
m_config.loadRelaxed()->setValue(QStringLiteral("enableDtkAnimations"), value);
|
||||
});
|
||||
}
|
||||
if (p_enableDtkAnimations != oldValue) {
|
||||
Q_EMIT enableDtkAnimationsChanged();
|
||||
Q_EMIT valueChanged(QStringLiteral("enableDtkAnimations"), value);
|
||||
}
|
||||
}
|
||||
void resetEnableDtkAnimations() {
|
||||
if (auto config = m_config.loadRelaxed()) {
|
||||
QMetaObject::invokeMethod(config, [this]() {
|
||||
m_config.loadRelaxed()->reset(QStringLiteral("enableDtkAnimations"));
|
||||
});
|
||||
}
|
||||
}
|
||||
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
|
||||
QBindable<bool> bindableEnableDtkAnimations() {
|
||||
return QBindable<bool>(this, "enableDtkAnimations");
|
||||
}
|
||||
#endif
|
||||
Q_INVOKABLE bool enableDtkAnimationsIsDefaultValue() const {
|
||||
return !testPropertySet(1);
|
||||
}
|
||||
bool featureUpdated() const {
|
||||
return p_featureUpdated;
|
||||
}
|
||||
void setFeatureUpdated(const bool &value) {
|
||||
auto oldValue = p_featureUpdated;
|
||||
p_featureUpdated = value;
|
||||
markPropertySet(2);
|
||||
if (auto config = m_config.loadRelaxed()) {
|
||||
QMetaObject::invokeMethod(config, [this, value]() {
|
||||
m_config.loadRelaxed()->setValue(QStringLiteral("featureUpdated"), value);
|
||||
});
|
||||
}
|
||||
if (p_featureUpdated != oldValue) {
|
||||
Q_EMIT featureUpdatedChanged();
|
||||
Q_EMIT valueChanged(QStringLiteral("featureUpdated"), value);
|
||||
}
|
||||
}
|
||||
void resetFeatureUpdated() {
|
||||
if (auto config = m_config.loadRelaxed()) {
|
||||
QMetaObject::invokeMethod(config, [this]() {
|
||||
m_config.loadRelaxed()->reset(QStringLiteral("featureUpdated"));
|
||||
});
|
||||
}
|
||||
}
|
||||
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
|
||||
QBindable<bool> bindableFeatureUpdated() {
|
||||
return QBindable<bool>(this, "featureUpdated");
|
||||
}
|
||||
#endif
|
||||
Q_INVOKABLE bool featureUpdatedIsDefaultValue() const {
|
||||
return !testPropertySet(2);
|
||||
}
|
||||
bool keyboardsearchDisabled() const {
|
||||
return p_keyboardsearchDisabled;
|
||||
}
|
||||
void setKeyboardsearchDisabled(const bool &value) {
|
||||
auto oldValue = p_keyboardsearchDisabled;
|
||||
p_keyboardsearchDisabled = value;
|
||||
markPropertySet(3);
|
||||
if (auto config = m_config.loadRelaxed()) {
|
||||
QMetaObject::invokeMethod(config, [this, value]() {
|
||||
m_config.loadRelaxed()->setValue(QStringLiteral("keyboardsearchDisabled"), value);
|
||||
});
|
||||
}
|
||||
if (p_keyboardsearchDisabled != oldValue) {
|
||||
Q_EMIT keyboardsearchDisabledChanged();
|
||||
Q_EMIT valueChanged(QStringLiteral("keyboardsearchDisabled"), value);
|
||||
}
|
||||
}
|
||||
void resetKeyboardsearchDisabled() {
|
||||
if (auto config = m_config.loadRelaxed()) {
|
||||
QMetaObject::invokeMethod(config, [this]() {
|
||||
m_config.loadRelaxed()->reset(QStringLiteral("keyboardsearchDisabled"));
|
||||
});
|
||||
}
|
||||
}
|
||||
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
|
||||
QBindable<bool> bindableKeyboardsearchDisabled() {
|
||||
return QBindable<bool>(this, "keyboardsearchDisabled");
|
||||
}
|
||||
#endif
|
||||
Q_INVOKABLE bool keyboardsearchDisabledIsDefaultValue() const {
|
||||
return !testPropertySet(3);
|
||||
}
|
||||
QString rules() const {
|
||||
return p_rules;
|
||||
}
|
||||
void setRules(const QString &value) {
|
||||
auto oldValue = p_rules;
|
||||
p_rules = value;
|
||||
markPropertySet(4);
|
||||
if (auto config = m_config.loadRelaxed()) {
|
||||
QMetaObject::invokeMethod(config, [this, value]() {
|
||||
m_config.loadRelaxed()->setValue(QStringLiteral("rules"), value);
|
||||
});
|
||||
}
|
||||
if (p_rules != oldValue) {
|
||||
Q_EMIT rulesChanged();
|
||||
Q_EMIT valueChanged(QStringLiteral("rules"), value);
|
||||
}
|
||||
}
|
||||
void resetRules() {
|
||||
if (auto config = m_config.loadRelaxed()) {
|
||||
QMetaObject::invokeMethod(config, [this]() {
|
||||
m_config.loadRelaxed()->reset(QStringLiteral("rules"));
|
||||
});
|
||||
}
|
||||
}
|
||||
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
|
||||
QBindable<QString> bindableRules() {
|
||||
return QBindable<QString>(this, "rules");
|
||||
}
|
||||
#endif
|
||||
Q_INVOKABLE bool rulesIsDefaultValue() const {
|
||||
return !testPropertySet(4);
|
||||
}
|
||||
qlonglong scrollBarPolicy() const {
|
||||
return p_scrollBarPolicy;
|
||||
}
|
||||
void setScrollBarPolicy(const qlonglong &value) {
|
||||
auto oldValue = p_scrollBarPolicy;
|
||||
p_scrollBarPolicy = value;
|
||||
markPropertySet(5);
|
||||
if (auto config = m_config.loadRelaxed()) {
|
||||
QMetaObject::invokeMethod(config, [this, value]() {
|
||||
m_config.loadRelaxed()->setValue(QStringLiteral("scrollBarPolicy"), value);
|
||||
});
|
||||
}
|
||||
if (p_scrollBarPolicy != oldValue) {
|
||||
Q_EMIT scrollBarPolicyChanged();
|
||||
Q_EMIT valueChanged(QStringLiteral("scrollBarPolicy"), value);
|
||||
}
|
||||
}
|
||||
void resetScrollBarPolicy() {
|
||||
if (auto config = m_config.loadRelaxed()) {
|
||||
QMetaObject::invokeMethod(config, [this]() {
|
||||
m_config.loadRelaxed()->reset(QStringLiteral("scrollBarPolicy"));
|
||||
});
|
||||
}
|
||||
}
|
||||
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
|
||||
QBindable<qlonglong> bindableScrollBarPolicy() {
|
||||
return QBindable<qlonglong>(this, "scrollBarPolicy");
|
||||
}
|
||||
#endif
|
||||
Q_INVOKABLE bool scrollBarPolicyIsDefaultValue() const {
|
||||
return !testPropertySet(5);
|
||||
}
|
||||
qlonglong sizeMode() const {
|
||||
return p_sizeMode;
|
||||
}
|
||||
void setSizeMode(const qlonglong &value) {
|
||||
auto oldValue = p_sizeMode;
|
||||
p_sizeMode = value;
|
||||
markPropertySet(6);
|
||||
if (auto config = m_config.loadRelaxed()) {
|
||||
QMetaObject::invokeMethod(config, [this, value]() {
|
||||
m_config.loadRelaxed()->setValue(QStringLiteral("sizeMode"), value);
|
||||
});
|
||||
}
|
||||
if (p_sizeMode != oldValue) {
|
||||
Q_EMIT sizeModeChanged();
|
||||
Q_EMIT valueChanged(QStringLiteral("sizeMode"), value);
|
||||
}
|
||||
}
|
||||
void resetSizeMode() {
|
||||
if (auto config = m_config.loadRelaxed()) {
|
||||
QMetaObject::invokeMethod(config, [this]() {
|
||||
m_config.loadRelaxed()->reset(QStringLiteral("sizeMode"));
|
||||
});
|
||||
}
|
||||
}
|
||||
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
|
||||
QBindable<qlonglong> bindableSizeMode() {
|
||||
return QBindable<qlonglong>(this, "sizeMode");
|
||||
}
|
||||
#endif
|
||||
Q_INVOKABLE bool sizeModeIsDefaultValue() const {
|
||||
return !testPropertySet(6);
|
||||
}
|
||||
qlonglong themeType() const {
|
||||
return p_themeType;
|
||||
}
|
||||
void setThemeType(const qlonglong &value) {
|
||||
auto oldValue = p_themeType;
|
||||
p_themeType = value;
|
||||
markPropertySet(7);
|
||||
if (auto config = m_config.loadRelaxed()) {
|
||||
QMetaObject::invokeMethod(config, [this, value]() {
|
||||
m_config.loadRelaxed()->setValue(QStringLiteral("themeType"), value);
|
||||
});
|
||||
}
|
||||
if (p_themeType != oldValue) {
|
||||
Q_EMIT themeTypeChanged();
|
||||
Q_EMIT valueChanged(QStringLiteral("themeType"), value);
|
||||
}
|
||||
}
|
||||
void resetThemeType() {
|
||||
if (auto config = m_config.loadRelaxed()) {
|
||||
QMetaObject::invokeMethod(config, [this]() {
|
||||
m_config.loadRelaxed()->reset(QStringLiteral("themeType"));
|
||||
});
|
||||
}
|
||||
}
|
||||
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
|
||||
QBindable<qlonglong> bindableThemeType() {
|
||||
return QBindable<qlonglong>(this, "themeType");
|
||||
}
|
||||
#endif
|
||||
Q_INVOKABLE bool themeTypeIsDefaultValue() const {
|
||||
return !testPropertySet(7);
|
||||
}
|
||||
qlonglong titlebarHeight() const {
|
||||
return p_titlebarHeight;
|
||||
}
|
||||
void setTitlebarHeight(const qlonglong &value) {
|
||||
auto oldValue = p_titlebarHeight;
|
||||
p_titlebarHeight = value;
|
||||
markPropertySet(8);
|
||||
if (auto config = m_config.loadRelaxed()) {
|
||||
QMetaObject::invokeMethod(config, [this, value]() {
|
||||
m_config.loadRelaxed()->setValue(QStringLiteral("titlebarHeight"), value);
|
||||
});
|
||||
}
|
||||
if (p_titlebarHeight != oldValue) {
|
||||
Q_EMIT titlebarHeightChanged();
|
||||
Q_EMIT valueChanged(QStringLiteral("titlebarHeight"), value);
|
||||
}
|
||||
}
|
||||
void resetTitlebarHeight() {
|
||||
if (auto config = m_config.loadRelaxed()) {
|
||||
QMetaObject::invokeMethod(config, [this]() {
|
||||
m_config.loadRelaxed()->reset(QStringLiteral("titlebarHeight"));
|
||||
});
|
||||
}
|
||||
}
|
||||
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
|
||||
QBindable<qlonglong> bindableTitlebarHeight() {
|
||||
return QBindable<qlonglong>(this, "titlebarHeight");
|
||||
}
|
||||
#endif
|
||||
Q_INVOKABLE bool titlebarHeightIsDefaultValue() const {
|
||||
return !testPropertySet(8);
|
||||
}
|
||||
bool underlineShortcut() const {
|
||||
return p_underlineShortcut;
|
||||
}
|
||||
void setUnderlineShortcut(const bool &value) {
|
||||
auto oldValue = p_underlineShortcut;
|
||||
p_underlineShortcut = value;
|
||||
markPropertySet(9);
|
||||
if (auto config = m_config.loadRelaxed()) {
|
||||
QMetaObject::invokeMethod(config, [this, value]() {
|
||||
m_config.loadRelaxed()->setValue(QStringLiteral("underlineShortcut"), value);
|
||||
});
|
||||
}
|
||||
if (p_underlineShortcut != oldValue) {
|
||||
Q_EMIT underlineShortcutChanged();
|
||||
Q_EMIT valueChanged(QStringLiteral("underlineShortcut"), value);
|
||||
}
|
||||
}
|
||||
void resetUnderlineShortcut() {
|
||||
if (auto config = m_config.loadRelaxed()) {
|
||||
QMetaObject::invokeMethod(config, [this]() {
|
||||
m_config.loadRelaxed()->reset(QStringLiteral("underlineShortcut"));
|
||||
});
|
||||
}
|
||||
}
|
||||
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
|
||||
QBindable<bool> bindableUnderlineShortcut() {
|
||||
return QBindable<bool>(this, "underlineShortcut");
|
||||
}
|
||||
#endif
|
||||
Q_INVOKABLE bool underlineShortcutIsDefaultValue() const {
|
||||
return !testPropertySet(9);
|
||||
}
|
||||
Q_SIGNALS:
|
||||
void configInitializeFailed(DTK_CORE_NAMESPACE::DConfig *config);
|
||||
void configInitializeSucceed(DTK_CORE_NAMESPACE::DConfig *config);
|
||||
void valueChanged(const QString &key, const QVariant &value);
|
||||
|
||||
void autoDisplayFeatureChanged();
|
||||
void enableDtkAnimationsChanged();
|
||||
void featureUpdatedChanged();
|
||||
void keyboardsearchDisabledChanged();
|
||||
void rulesChanged();
|
||||
void scrollBarPolicyChanged();
|
||||
void sizeModeChanged();
|
||||
void themeTypeChanged();
|
||||
void titlebarHeightChanged();
|
||||
void underlineShortcutChanged();
|
||||
private:
|
||||
void initializeInConfigThread(DTK_CORE_NAMESPACE::DConfig *config) {
|
||||
Q_ASSERT(!m_config.loadRelaxed());
|
||||
m_config.storeRelaxed(config);
|
||||
if (!config->isValid()) {
|
||||
m_status.storeRelaxed(static_cast<int>(Status::Failed));
|
||||
Q_EMIT configInitializeFailed(config);
|
||||
return;
|
||||
}
|
||||
|
||||
if (testPropertySet(0)) {
|
||||
config->setValue(QStringLiteral("autoDisplayFeature"), QVariant::fromValue(p_autoDisplayFeature));
|
||||
} else {
|
||||
updateValue(QStringLiteral("autoDisplayFeature"), QVariant::fromValue(p_autoDisplayFeature));
|
||||
}
|
||||
if (testPropertySet(1)) {
|
||||
config->setValue(QStringLiteral("enableDtkAnimations"), QVariant::fromValue(p_enableDtkAnimations));
|
||||
} else {
|
||||
updateValue(QStringLiteral("enableDtkAnimations"), QVariant::fromValue(p_enableDtkAnimations));
|
||||
}
|
||||
if (testPropertySet(2)) {
|
||||
config->setValue(QStringLiteral("featureUpdated"), QVariant::fromValue(p_featureUpdated));
|
||||
} else {
|
||||
updateValue(QStringLiteral("featureUpdated"), QVariant::fromValue(p_featureUpdated));
|
||||
}
|
||||
if (testPropertySet(3)) {
|
||||
config->setValue(QStringLiteral("keyboardsearchDisabled"), QVariant::fromValue(p_keyboardsearchDisabled));
|
||||
} else {
|
||||
updateValue(QStringLiteral("keyboardsearchDisabled"), QVariant::fromValue(p_keyboardsearchDisabled));
|
||||
}
|
||||
if (testPropertySet(4)) {
|
||||
config->setValue(QStringLiteral("rules"), QVariant::fromValue(p_rules));
|
||||
} else {
|
||||
updateValue(QStringLiteral("rules"), QVariant::fromValue(p_rules));
|
||||
}
|
||||
if (testPropertySet(5)) {
|
||||
config->setValue(QStringLiteral("scrollBarPolicy"), QVariant::fromValue(p_scrollBarPolicy));
|
||||
} else {
|
||||
updateValue(QStringLiteral("scrollBarPolicy"), QVariant::fromValue(p_scrollBarPolicy));
|
||||
}
|
||||
if (testPropertySet(6)) {
|
||||
config->setValue(QStringLiteral("sizeMode"), QVariant::fromValue(p_sizeMode));
|
||||
} else {
|
||||
updateValue(QStringLiteral("sizeMode"), QVariant::fromValue(p_sizeMode));
|
||||
}
|
||||
if (testPropertySet(7)) {
|
||||
config->setValue(QStringLiteral("themeType"), QVariant::fromValue(p_themeType));
|
||||
} else {
|
||||
updateValue(QStringLiteral("themeType"), QVariant::fromValue(p_themeType));
|
||||
}
|
||||
if (testPropertySet(8)) {
|
||||
config->setValue(QStringLiteral("titlebarHeight"), QVariant::fromValue(p_titlebarHeight));
|
||||
} else {
|
||||
updateValue(QStringLiteral("titlebarHeight"), QVariant::fromValue(p_titlebarHeight));
|
||||
}
|
||||
if (testPropertySet(9)) {
|
||||
config->setValue(QStringLiteral("underlineShortcut"), QVariant::fromValue(p_underlineShortcut));
|
||||
} else {
|
||||
updateValue(QStringLiteral("underlineShortcut"), QVariant::fromValue(p_underlineShortcut));
|
||||
}
|
||||
|
||||
connect(config, &DTK_CORE_NAMESPACE::DConfig::valueChanged, this, [this](const QString &key) {
|
||||
updateValue(key);
|
||||
}, Qt::DirectConnection);
|
||||
|
||||
m_status.storeRelaxed(static_cast<int>(Status::Succeed));
|
||||
Q_EMIT configInitializeSucceed(config);
|
||||
}
|
||||
void updateValue(const QString &key, const QVariant &fallback = QVariant()) {
|
||||
Q_ASSERT(QThread::currentThread() == m_config.loadRelaxed()->thread());
|
||||
const QVariant &value = m_config.loadRelaxed()->value(key, fallback);
|
||||
if (key == QStringLiteral("autoDisplayFeature")) {
|
||||
markPropertySet(0, !m_config.loadRelaxed()->isDefaultValue(key));
|
||||
auto newValue = qvariant_cast<bool>(value);
|
||||
QMetaObject::invokeMethod(this, [this, newValue, key, value]() {
|
||||
Q_ASSERT(QThread::currentThread() == this->thread());
|
||||
if (p_autoDisplayFeature != newValue) {
|
||||
p_autoDisplayFeature = newValue;
|
||||
Q_EMIT autoDisplayFeatureChanged();
|
||||
Q_EMIT valueChanged(key, value);
|
||||
}
|
||||
});
|
||||
return;
|
||||
}
|
||||
if (key == QStringLiteral("enableDtkAnimations")) {
|
||||
markPropertySet(1, !m_config.loadRelaxed()->isDefaultValue(key));
|
||||
auto newValue = qvariant_cast<bool>(value);
|
||||
QMetaObject::invokeMethod(this, [this, newValue, key, value]() {
|
||||
Q_ASSERT(QThread::currentThread() == this->thread());
|
||||
if (p_enableDtkAnimations != newValue) {
|
||||
p_enableDtkAnimations = newValue;
|
||||
Q_EMIT enableDtkAnimationsChanged();
|
||||
Q_EMIT valueChanged(key, value);
|
||||
}
|
||||
});
|
||||
return;
|
||||
}
|
||||
if (key == QStringLiteral("featureUpdated")) {
|
||||
markPropertySet(2, !m_config.loadRelaxed()->isDefaultValue(key));
|
||||
auto newValue = qvariant_cast<bool>(value);
|
||||
QMetaObject::invokeMethod(this, [this, newValue, key, value]() {
|
||||
Q_ASSERT(QThread::currentThread() == this->thread());
|
||||
if (p_featureUpdated != newValue) {
|
||||
p_featureUpdated = newValue;
|
||||
Q_EMIT featureUpdatedChanged();
|
||||
Q_EMIT valueChanged(key, value);
|
||||
}
|
||||
});
|
||||
return;
|
||||
}
|
||||
if (key == QStringLiteral("keyboardsearchDisabled")) {
|
||||
markPropertySet(3, !m_config.loadRelaxed()->isDefaultValue(key));
|
||||
auto newValue = qvariant_cast<bool>(value);
|
||||
QMetaObject::invokeMethod(this, [this, newValue, key, value]() {
|
||||
Q_ASSERT(QThread::currentThread() == this->thread());
|
||||
if (p_keyboardsearchDisabled != newValue) {
|
||||
p_keyboardsearchDisabled = newValue;
|
||||
Q_EMIT keyboardsearchDisabledChanged();
|
||||
Q_EMIT valueChanged(key, value);
|
||||
}
|
||||
});
|
||||
return;
|
||||
}
|
||||
if (key == QStringLiteral("rules")) {
|
||||
markPropertySet(4, !m_config.loadRelaxed()->isDefaultValue(key));
|
||||
auto newValue = qvariant_cast<QString>(value);
|
||||
QMetaObject::invokeMethod(this, [this, newValue, key, value]() {
|
||||
Q_ASSERT(QThread::currentThread() == this->thread());
|
||||
if (p_rules != newValue) {
|
||||
p_rules = newValue;
|
||||
Q_EMIT rulesChanged();
|
||||
Q_EMIT valueChanged(key, value);
|
||||
}
|
||||
});
|
||||
return;
|
||||
}
|
||||
if (key == QStringLiteral("scrollBarPolicy")) {
|
||||
markPropertySet(5, !m_config.loadRelaxed()->isDefaultValue(key));
|
||||
auto newValue = qvariant_cast<qlonglong>(value);
|
||||
QMetaObject::invokeMethod(this, [this, newValue, key, value]() {
|
||||
Q_ASSERT(QThread::currentThread() == this->thread());
|
||||
if (p_scrollBarPolicy != newValue) {
|
||||
p_scrollBarPolicy = newValue;
|
||||
Q_EMIT scrollBarPolicyChanged();
|
||||
Q_EMIT valueChanged(key, value);
|
||||
}
|
||||
});
|
||||
return;
|
||||
}
|
||||
if (key == QStringLiteral("sizeMode")) {
|
||||
markPropertySet(6, !m_config.loadRelaxed()->isDefaultValue(key));
|
||||
auto newValue = qvariant_cast<qlonglong>(value);
|
||||
QMetaObject::invokeMethod(this, [this, newValue, key, value]() {
|
||||
Q_ASSERT(QThread::currentThread() == this->thread());
|
||||
if (p_sizeMode != newValue) {
|
||||
p_sizeMode = newValue;
|
||||
Q_EMIT sizeModeChanged();
|
||||
Q_EMIT valueChanged(key, value);
|
||||
}
|
||||
});
|
||||
return;
|
||||
}
|
||||
if (key == QStringLiteral("themeType")) {
|
||||
markPropertySet(7, !m_config.loadRelaxed()->isDefaultValue(key));
|
||||
auto newValue = qvariant_cast<qlonglong>(value);
|
||||
QMetaObject::invokeMethod(this, [this, newValue, key, value]() {
|
||||
Q_ASSERT(QThread::currentThread() == this->thread());
|
||||
if (p_themeType != newValue) {
|
||||
p_themeType = newValue;
|
||||
Q_EMIT themeTypeChanged();
|
||||
Q_EMIT valueChanged(key, value);
|
||||
}
|
||||
});
|
||||
return;
|
||||
}
|
||||
if (key == QStringLiteral("titlebarHeight")) {
|
||||
markPropertySet(8, !m_config.loadRelaxed()->isDefaultValue(key));
|
||||
auto newValue = qvariant_cast<qlonglong>(value);
|
||||
QMetaObject::invokeMethod(this, [this, newValue, key, value]() {
|
||||
Q_ASSERT(QThread::currentThread() == this->thread());
|
||||
if (p_titlebarHeight != newValue) {
|
||||
p_titlebarHeight = newValue;
|
||||
Q_EMIT titlebarHeightChanged();
|
||||
Q_EMIT valueChanged(key, value);
|
||||
}
|
||||
});
|
||||
return;
|
||||
}
|
||||
if (key == QStringLiteral("underlineShortcut")) {
|
||||
markPropertySet(9, !m_config.loadRelaxed()->isDefaultValue(key));
|
||||
auto newValue = qvariant_cast<bool>(value);
|
||||
QMetaObject::invokeMethod(this, [this, newValue, key, value]() {
|
||||
Q_ASSERT(QThread::currentThread() == this->thread());
|
||||
if (p_underlineShortcut != newValue) {
|
||||
p_underlineShortcut = newValue;
|
||||
Q_EMIT underlineShortcutChanged();
|
||||
Q_EMIT valueChanged(key, value);
|
||||
}
|
||||
});
|
||||
return;
|
||||
}
|
||||
}
|
||||
inline void markPropertySet(const int index, bool on = true) {
|
||||
if (index < 32) {
|
||||
if (on)
|
||||
m_propertySetStatus0.fetchAndOrOrdered(1 << (index - 0));
|
||||
else
|
||||
m_propertySetStatus0.fetchAndAndOrdered(~(1 << (index - 0)));
|
||||
return;
|
||||
}
|
||||
Q_UNREACHABLE();
|
||||
}
|
||||
inline bool testPropertySet(const int index) const {
|
||||
if (index < 32) {
|
||||
return (m_propertySetStatus0.loadRelaxed() & (1 << (index - 0)));
|
||||
}
|
||||
Q_UNREACHABLE();
|
||||
}
|
||||
|
||||
QAtomicPointer<DTK_CORE_NAMESPACE::DConfig> m_config = nullptr;
|
||||
|
||||
public:
|
||||
enum class Status {
|
||||
Invalid = 0,
|
||||
Succeed = 1,
|
||||
Failed = 2
|
||||
};
|
||||
private:
|
||||
QAtomicInteger<int> m_status = static_cast<int>(Status::Invalid);
|
||||
|
||||
bool p_autoDisplayFeature { false };
|
||||
bool p_enableDtkAnimations { false };
|
||||
bool p_featureUpdated { false };
|
||||
bool p_keyboardsearchDisabled { false };
|
||||
// Default value: ""
|
||||
QString p_rules { QLatin1String("") };
|
||||
qlonglong p_scrollBarPolicy { 0 };
|
||||
qlonglong p_sizeMode { 0 };
|
||||
qlonglong p_themeType { 0 };
|
||||
qlonglong p_titlebarHeight { -1 };
|
||||
bool p_underlineShortcut { false };
|
||||
QAtomicInteger<quint32> m_propertySetStatus0 = 0;
|
||||
};
|
||||
|
||||
#endif // ORGDEEPINDTKPREFERENCE_H
|
||||
|
|
@ -0,0 +1,480 @@
|
|||
// SPDX-FileCopyrightText: 2024 UnionTech Software Technology Co., Ltd.
|
||||
//
|
||||
// SPDX-License-Identifier: LGPL-3.0-or-later
|
||||
|
||||
#include "dplatformtheme.h"
|
||||
#include "private/dplatforminterface_p.h"
|
||||
|
||||
DGUI_BEGIN_NAMESPACE
|
||||
|
||||
DPlatformInterface::DPlatformInterface(DPlatformTheme *platformTheme)
|
||||
: m_platformTheme(platformTheme)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
DPlatformInterface::~DPlatformInterface()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
int DPlatformInterface::cursorBlinkTime() const
|
||||
{
|
||||
return {};
|
||||
}
|
||||
|
||||
int DPlatformInterface::cursorBlinkTimeout() const
|
||||
{
|
||||
return {};
|
||||
}
|
||||
|
||||
bool DPlatformInterface::cursorBlink() const
|
||||
{
|
||||
return {};
|
||||
}
|
||||
|
||||
int DPlatformInterface::doubleClickDistance() const
|
||||
{
|
||||
return {};
|
||||
}
|
||||
|
||||
int DPlatformInterface::doubleClickTime() const
|
||||
{
|
||||
return {};
|
||||
}
|
||||
|
||||
int DPlatformInterface::dndDragThreshold() const
|
||||
{
|
||||
return {};
|
||||
}
|
||||
|
||||
int DPlatformInterface::windowRadius() const
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
int DPlatformInterface::windowRadius(int defaultValue) const
|
||||
{
|
||||
return defaultValue;
|
||||
}
|
||||
|
||||
QByteArray DPlatformInterface::themeName() const
|
||||
{
|
||||
return {};
|
||||
}
|
||||
|
||||
QByteArray DPlatformInterface::iconThemeName() const
|
||||
{
|
||||
return {};
|
||||
}
|
||||
|
||||
QByteArray DPlatformInterface::soundThemeName() const
|
||||
{
|
||||
return {};
|
||||
}
|
||||
|
||||
QByteArray DPlatformInterface::fontName() const
|
||||
{
|
||||
return {};
|
||||
}
|
||||
|
||||
QByteArray DPlatformInterface::monoFontName() const
|
||||
{
|
||||
return {};
|
||||
}
|
||||
|
||||
qreal DPlatformInterface::fontPointSize() const
|
||||
{
|
||||
return {};
|
||||
}
|
||||
|
||||
QByteArray DPlatformInterface::gtkFontName() const
|
||||
{
|
||||
return {};
|
||||
}
|
||||
|
||||
QColor DPlatformInterface::activeColor() const
|
||||
{
|
||||
return {};
|
||||
}
|
||||
|
||||
QColor DPlatformInterface::darkActiveColor() const
|
||||
{
|
||||
return {};
|
||||
}
|
||||
|
||||
#if DTK_VERSION < DTK_VERSION_CHECK(6, 0, 0, 0)
|
||||
QColor DPlatformInterface::window() const
|
||||
{
|
||||
return {};
|
||||
}
|
||||
|
||||
QColor DPlatformInterface::windowText() const
|
||||
{
|
||||
return {};
|
||||
}
|
||||
|
||||
QColor DPlatformInterface::base() const
|
||||
{
|
||||
return {};
|
||||
}
|
||||
|
||||
QColor DPlatformInterface::alternateBase() const
|
||||
{
|
||||
return {};
|
||||
}
|
||||
|
||||
QColor DPlatformInterface::toolTipBase() const
|
||||
{
|
||||
return {};
|
||||
}
|
||||
|
||||
QColor DPlatformInterface::toolTipText() const
|
||||
{
|
||||
return {};
|
||||
}
|
||||
|
||||
QColor DPlatformInterface::text() const
|
||||
{
|
||||
return {};
|
||||
}
|
||||
|
||||
QColor DPlatformInterface::button() const
|
||||
{
|
||||
return {};
|
||||
}
|
||||
|
||||
QColor DPlatformInterface::buttonText() const
|
||||
{
|
||||
return {};
|
||||
}
|
||||
|
||||
QColor DPlatformInterface::brightText() const
|
||||
{
|
||||
return {};
|
||||
}
|
||||
|
||||
QColor DPlatformInterface::light() const
|
||||
{
|
||||
return {};
|
||||
}
|
||||
|
||||
QColor DPlatformInterface::midlight() const
|
||||
{
|
||||
return {};
|
||||
}
|
||||
|
||||
QColor DPlatformInterface::dark() const
|
||||
{
|
||||
return {};
|
||||
}
|
||||
|
||||
QColor DPlatformInterface::mid() const
|
||||
{
|
||||
return {};
|
||||
}
|
||||
|
||||
QColor DPlatformInterface::shadow() const
|
||||
{
|
||||
return {};
|
||||
}
|
||||
|
||||
QColor DPlatformInterface::highlight() const
|
||||
{
|
||||
return {};
|
||||
}
|
||||
|
||||
QColor DPlatformInterface::highlightedText() const
|
||||
{
|
||||
return {};
|
||||
}
|
||||
|
||||
QColor DPlatformInterface::link() const
|
||||
{
|
||||
return {};
|
||||
}
|
||||
|
||||
QColor DPlatformInterface::linkVisited() const
|
||||
{
|
||||
return {};
|
||||
}
|
||||
|
||||
QColor DPlatformInterface::itemBackground() const
|
||||
{
|
||||
return {};
|
||||
}
|
||||
|
||||
QColor DPlatformInterface::textTitle() const
|
||||
{
|
||||
return {};
|
||||
}
|
||||
|
||||
QColor DPlatformInterface::textTips() const
|
||||
{
|
||||
return {};
|
||||
}
|
||||
|
||||
QColor DPlatformInterface::textWarning() const
|
||||
{
|
||||
return {};
|
||||
}
|
||||
|
||||
QColor DPlatformInterface::textLively() const
|
||||
{
|
||||
return {};
|
||||
}
|
||||
|
||||
QColor DPlatformInterface::lightLively() const
|
||||
{
|
||||
return {};
|
||||
}
|
||||
|
||||
QColor DPlatformInterface::darkLively() const
|
||||
{
|
||||
return {};
|
||||
}
|
||||
|
||||
QColor DPlatformInterface::frameBorder() const
|
||||
{
|
||||
return {};
|
||||
}
|
||||
#endif
|
||||
|
||||
int DPlatformInterface::dotsPerInch(const QString &) const
|
||||
{
|
||||
return {};
|
||||
}
|
||||
|
||||
int DPlatformInterface::sizeMode() const
|
||||
{
|
||||
return {};
|
||||
}
|
||||
|
||||
int DPlatformInterface::scrollBarPolicy() const
|
||||
{
|
||||
return {};
|
||||
}
|
||||
|
||||
void DPlatformInterface::setCursorBlinkTime(int)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void DPlatformInterface::setCursorBlinkTimeout(int)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void DPlatformInterface::setCursorBlink(bool)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void DPlatformInterface::setDoubleClickDistance(int)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void DPlatformInterface::setDoubleClickTime(int)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void DPlatformInterface::setDndDragThreshold(int)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void DPlatformInterface::setThemeName(const QByteArray &)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void DPlatformInterface::setIconThemeName(const QByteArray &)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void DPlatformInterface::setSoundThemeName(const QByteArray &)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void DPlatformInterface::setFontName(const QByteArray &)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void DPlatformInterface::setMonoFontName(const QByteArray &)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void DPlatformInterface::setFontPointSize(qreal)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void DPlatformInterface::setGtkFontName(const QByteArray &)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void DPlatformInterface::setActiveColor(const QColor)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void DPlatformInterface::setDarkActiveColor(const QColor &)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
#if DTK_VERSION < DTK_VERSION_CHECK(6, 0, 0, 0)
|
||||
void DPlatformInterface::setWindow(const QColor &)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void DPlatformInterface::setWindowText(const QColor &)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void DPlatformInterface::setBase(const QColor &)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void DPlatformInterface::setAlternateBase(const QColor &)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void DPlatformInterface::setToolTipBase(const QColor &)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void DPlatformInterface::setToolTipText(const QColor &)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void DPlatformInterface::setText(const QColor &)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void DPlatformInterface::setButton(const QColor &)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void DPlatformInterface::setButtonText(const QColor &)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void DPlatformInterface::setBrightText(const QColor &)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void DPlatformInterface::setLight(const QColor &)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void DPlatformInterface::setMidlight(const QColor &)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void DPlatformInterface::setDark(const QColor &)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void DPlatformInterface::setMid(const QColor &)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void DPlatformInterface::setShadow(const QColor &)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void DPlatformInterface::setHighlight(const QColor &)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void DPlatformInterface::setHighlightedText(const QColor &)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void DPlatformInterface::setLink(const QColor &)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void DPlatformInterface::setLinkVisited(const QColor &)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void DPlatformInterface::setItemBackground(const QColor &)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void DPlatformInterface::setTextTitle(const QColor &)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void DPlatformInterface::setTextTips(const QColor &)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void DPlatformInterface::setTextWarning(const QColor &)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void DPlatformInterface::setTextLively(const QColor &)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void DPlatformInterface::setLightLively(const QColor &)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void DPlatformInterface::setDarkLively(const QColor &)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void DPlatformInterface::setFrameBorder(const QColor &)
|
||||
{
|
||||
|
||||
}
|
||||
#endif
|
||||
|
||||
void DPlatformInterface::setDotsPerInch(const QString &, int)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void DPlatformInterface::setWindowRadius(int)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
DGUI_END_NAMESPACE
|
||||
|
|
@ -0,0 +1,196 @@
|
|||
// SPDX-FileCopyrightText: 2024 UnionTech Software Technology Co., Ltd.
|
||||
//
|
||||
// SPDX-License-Identifier: LGPL-3.0-or-later
|
||||
|
||||
#include "private/dplatformwindowinterface_p.h"
|
||||
|
||||
DGUI_BEGIN_NAMESPACE
|
||||
|
||||
DPlatformWindowInterface::DPlatformWindowInterface(QWindow *window, DPlatformHandle *platformHandle)
|
||||
: m_window(window)
|
||||
, m_platformHandle(platformHandle)
|
||||
{
|
||||
}
|
||||
|
||||
DPlatformWindowInterface::~DPlatformWindowInterface()
|
||||
{
|
||||
}
|
||||
|
||||
QWindow *DPlatformWindowInterface::window() const
|
||||
{
|
||||
return m_window;
|
||||
}
|
||||
|
||||
void DPlatformWindowInterface::setEnabled(bool enabled)
|
||||
{
|
||||
Q_UNUSED(enabled)
|
||||
}
|
||||
|
||||
bool DPlatformWindowInterface::isEnabled() const
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
bool DPlatformWindowInterface::isEnabledNoTitlebar() const
|
||||
{
|
||||
return {};
|
||||
}
|
||||
|
||||
bool DPlatformWindowInterface::setEnabledNoTitlebar(bool enable)
|
||||
{
|
||||
Q_UNUSED(enable)
|
||||
return {};
|
||||
}
|
||||
|
||||
void DPlatformWindowInterface::setDisableWindowOverrideCursor(bool disable)
|
||||
{
|
||||
Q_UNUSED(disable)
|
||||
}
|
||||
|
||||
int DPlatformWindowInterface::windowRadius() const
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
void DPlatformWindowInterface::setWindowRadius(int windowRadius)
|
||||
{
|
||||
Q_UNUSED(windowRadius)
|
||||
}
|
||||
|
||||
int DPlatformWindowInterface::borderWidth() const
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
void DPlatformWindowInterface::setBorderWidth(int borderWidth)
|
||||
{
|
||||
Q_UNUSED(borderWidth)
|
||||
}
|
||||
|
||||
QColor DPlatformWindowInterface::borderColor() const
|
||||
{
|
||||
return {};
|
||||
}
|
||||
|
||||
void DPlatformWindowInterface::setBorderColor(const QColor &borderColor)
|
||||
{
|
||||
Q_UNUSED(borderColor)
|
||||
}
|
||||
|
||||
int DPlatformWindowInterface::shadowRadius() const
|
||||
{
|
||||
return {};
|
||||
}
|
||||
|
||||
void DPlatformWindowInterface::setShadowRadius(int shadowRadius)
|
||||
{
|
||||
Q_UNUSED(shadowRadius)
|
||||
}
|
||||
|
||||
QPoint DPlatformWindowInterface::shadowOffset() const
|
||||
{
|
||||
return {};
|
||||
}
|
||||
|
||||
void DPlatformWindowInterface::setShadowOffset(const QPoint &shadowOffset)
|
||||
{
|
||||
Q_UNUSED(shadowOffset)
|
||||
}
|
||||
|
||||
QColor DPlatformWindowInterface::shadowColor() const
|
||||
{
|
||||
return {};
|
||||
}
|
||||
|
||||
void DPlatformWindowInterface::setShadowColor(const QColor &shadowColor)
|
||||
{
|
||||
Q_UNUSED(shadowColor)
|
||||
}
|
||||
|
||||
DPlatformHandle::EffectScene DPlatformWindowInterface::windowEffect()
|
||||
{
|
||||
return {};
|
||||
}
|
||||
|
||||
void DPlatformWindowInterface::setWindowEffect(DPlatformHandle::EffectScenes effectScene)
|
||||
{
|
||||
Q_UNUSED(effectScene)
|
||||
}
|
||||
|
||||
DPlatformHandle::EffectType DPlatformWindowInterface::windowStartUpEffect()
|
||||
{
|
||||
return {};
|
||||
}
|
||||
|
||||
void DPlatformWindowInterface::setWindowStartUpEffect(DPlatformHandle::EffectTypes effectType)
|
||||
{
|
||||
Q_UNUSED(effectType)
|
||||
}
|
||||
|
||||
QPainterPath DPlatformWindowInterface::clipPath() const
|
||||
{
|
||||
return {};
|
||||
}
|
||||
|
||||
void DPlatformWindowInterface::setClipPath(const QPainterPath &clipPath)
|
||||
{
|
||||
Q_UNUSED(clipPath)
|
||||
}
|
||||
|
||||
QRegion DPlatformWindowInterface::frameMask() const
|
||||
{
|
||||
return {};
|
||||
}
|
||||
|
||||
void DPlatformWindowInterface::setFrameMask(const QRegion &frameMask)
|
||||
{
|
||||
Q_UNUSED(frameMask)
|
||||
}
|
||||
|
||||
QMargins DPlatformWindowInterface::frameMargins() const
|
||||
{
|
||||
return {};
|
||||
}
|
||||
|
||||
bool DPlatformWindowInterface::translucentBackground() const
|
||||
{
|
||||
return {};
|
||||
}
|
||||
|
||||
void DPlatformWindowInterface::setTranslucentBackground(bool translucentBackground)
|
||||
{
|
||||
Q_UNUSED(translucentBackground)
|
||||
}
|
||||
|
||||
bool DPlatformWindowInterface::enableSystemResize() const
|
||||
{
|
||||
return {};
|
||||
}
|
||||
|
||||
void DPlatformWindowInterface::setEnableSystemResize(bool enableSystemResize)
|
||||
{
|
||||
Q_UNUSED(enableSystemResize)
|
||||
}
|
||||
|
||||
bool DPlatformWindowInterface::enableSystemMove() const
|
||||
{
|
||||
return {};
|
||||
}
|
||||
|
||||
void DPlatformWindowInterface::setEnableSystemMove(bool enableSystemMove)
|
||||
{
|
||||
Q_UNUSED(enableSystemMove)
|
||||
}
|
||||
|
||||
bool DPlatformWindowInterface::enableBlurWindow() const
|
||||
{
|
||||
return {};
|
||||
}
|
||||
|
||||
void DPlatformWindowInterface::setEnableBlurWindow(bool enableBlurWindow)
|
||||
{
|
||||
Q_UNUSED(enableBlurWindow)
|
||||
}
|
||||
|
||||
DGUI_END_NAMESPACE
|
||||
|
||||
|
|
@ -0,0 +1,59 @@
|
|||
# SPDX-FileCopyrightText: 2024 UnionTech Software Technology Co., Ltd.
|
||||
#
|
||||
# SPDX-License-Identifier: LGPL-3.0-or-later
|
||||
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
|
||||
project(wayland_test)
|
||||
|
||||
set(CMAKE_AUTOMOC ON)
|
||||
set(CMAKE_AUTORCC ON)
|
||||
set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
||||
set(AUTOMOC_COMPILER_PREDEFINES ON)
|
||||
|
||||
find_package(Qt${QT_VERSION_MAJOR} ${REQUIRED_QT_VERSION} REQUIRED COMPONENTS Core Gui WaylandClient)
|
||||
if(${QT_VERSION_MAJOR} STREQUAL "5")
|
||||
find_package(Qt5 REQUIRED COMPONENTS XkbCommonSupport)
|
||||
endif()
|
||||
|
||||
find_package(PkgConfig REQUIRED)
|
||||
pkg_check_modules(WAYLAND_CLIENT REQUIRED wayland-client)
|
||||
|
||||
find_package(TreelandProtocols)
|
||||
set(TreelandProtocols_FOUND ${TreelandProtocols_FOUND})
|
||||
|
||||
add_executable(${PROJECT_NAME} main.cpp)
|
||||
|
||||
if("${QT_VERSION_MAJOR}" STREQUAL "6")
|
||||
qt6_generate_wayland_protocol_client_sources(${PROJECT_NAME} FILES
|
||||
${TREELAND_PROTOCOLS_DATA_DIR}/treeland-personalization-manager-v1.xml
|
||||
)
|
||||
|
||||
if (${Qt6Core_VERSION} VERSION_GREATER_EQUAL "6.10.0")
|
||||
set(QT_NO_PRIVATE_MODULE_WARNING ON)
|
||||
find_package(Qt6 REQUIRED COMPONENTS GuiPrivate CorePrivate WaylandClientPrivate)
|
||||
endif()
|
||||
else()
|
||||
# ECM setup
|
||||
include(FeatureSummary)
|
||||
find_package(ECM REQUIRED NO_MODULE)
|
||||
set(CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH};${ECM_MODULE_PATH}")
|
||||
find_package(QtWaylandScanner)
|
||||
ecm_add_qtwayland_client_protocol(TABLET_SRCS
|
||||
PROTOCOL ${TREELAND_PROTOCOLS_DATA_DIR}/treeland-personalization-manager-v1.xml
|
||||
BASENAME treeland-personalization-manager-v1
|
||||
)
|
||||
target_sources(${PROJECT_NAME} PRIVATE ${TABLET_SRCS})
|
||||
|
||||
target_link_libraries(${PROJECT_NAME} PRIVATE
|
||||
Qt${QT_VERSION_MAJOR}::XkbCommonSupportPrivate
|
||||
)
|
||||
endif()
|
||||
|
||||
target_link_libraries(${PROJECT_NAME} PRIVATE
|
||||
Qt${QT_VERSION_MAJOR}::Gui
|
||||
Qt${QT_VERSION_MAJOR}::GuiPrivate
|
||||
Qt${QT_VERSION_MAJOR}::CorePrivate
|
||||
Qt${QT_VERSION_MAJOR}::WaylandClientPrivate
|
||||
${WAYLAND_CLIENT_LIBRARIES}
|
||||
)
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
// SPDX-FileCopyrightText: 2024 UnionTech Software Technology Co., Ltd.
|
||||
//
|
||||
// SPDX-License-Identifier: LGPL-3.0-or-later
|
||||
|
||||
#include <QGuiApplication>
|
||||
|
||||
#include <QtWaylandClient/QWaylandClientExtension>
|
||||
#include <QtWaylandClient/private/qwaylandsurface_p.h>
|
||||
#include <QtWaylandClient/private/qwaylandwindow_p.h>
|
||||
|
||||
#include <wayland-client-core.h>
|
||||
#include "qwayland-treeland-personalization-manager-v1.h"
|
||||
#include <qwaylandclientextension.h>
|
||||
|
||||
#include <private/qguiapplication_p.h>
|
||||
#include <private/qwaylandintegration_p.h>
|
||||
#include <private/qwaylandwindow_p.h>
|
||||
#include <private/qwaylanddisplay_p.h>
|
||||
|
||||
class PersonalizationWindowContext : public QWaylandClientExtensionTemplate<PersonalizationWindowContext>,
|
||||
public QtWayland::treeland_personalization_window_context_v1
|
||||
{
|
||||
public:
|
||||
PersonalizationWindowContext(struct ::treeland_personalization_window_context_v1 *context)
|
||||
: QWaylandClientExtensionTemplate<PersonalizationWindowContext>(1)
|
||||
, QtWayland::treeland_personalization_window_context_v1(context)
|
||||
{
|
||||
set_titlebar(enable_mode::enable_mode_disable);
|
||||
}
|
||||
};
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
QGuiApplication app(argc, argv);
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -0,0 +1,103 @@
|
|||
// SPDX-FileCopyrightText: 2024 UnionTech Software Technology Co., Ltd.
|
||||
//
|
||||
// SPDX-License-Identifier: LGPL-3.0-or-later
|
||||
|
||||
#include "dtreelandplatforminterface.h"
|
||||
|
||||
#include "dplatformtheme.h"
|
||||
#include "private/dplatforminterface_p.h"
|
||||
#include "personalizationwaylandclientextension.h"
|
||||
|
||||
#include <QtWaylandClient/private/qwaylandwindow_p.h>
|
||||
#include <QtWaylandClient/private/qwaylandsurface_p.h>
|
||||
#include <QWindow>
|
||||
|
||||
DGUI_BEGIN_NAMESPACE
|
||||
|
||||
DTreelandPlatformInterface::DTreelandPlatformInterface(DPlatformTheme *platformTheme)
|
||||
: DPlatformInterface(platformTheme)
|
||||
{
|
||||
m_manager = PersonalizationManager::instance();
|
||||
connect(m_manager, &PersonalizationManager::activeChanged, this, [this](){
|
||||
if (m_manager->isActive()) {
|
||||
initContext();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
void DTreelandPlatformInterface::initContext()
|
||||
{
|
||||
if (m_appearanceContext.isNull()) {
|
||||
m_appearanceContext.reset(new PersonalizationAppearanceContext(m_manager->get_appearance_context(), this));
|
||||
}
|
||||
if (m_fontContext.isNull()) {
|
||||
m_fontContext.reset(new PersonalizationFontContext(m_manager->get_font_context(), this));
|
||||
}
|
||||
}
|
||||
|
||||
QByteArray DTreelandPlatformInterface::iconThemeName() const
|
||||
{
|
||||
return m_iconThemeName;
|
||||
}
|
||||
|
||||
QByteArray DTreelandPlatformInterface::fontName() const
|
||||
{
|
||||
return m_fontName;
|
||||
}
|
||||
|
||||
QByteArray DTreelandPlatformInterface::monoFontName() const
|
||||
{
|
||||
return m_monoFontName;
|
||||
}
|
||||
|
||||
qreal DTreelandPlatformInterface::fontPointSize() const
|
||||
{
|
||||
return m_fontPointSize;
|
||||
}
|
||||
|
||||
QColor DTreelandPlatformInterface::activeColor() const
|
||||
{
|
||||
return m_activeColor;
|
||||
}
|
||||
|
||||
QByteArray DTreelandPlatformInterface::themeName() const
|
||||
{
|
||||
return m_themeName;
|
||||
}
|
||||
|
||||
void DTreelandPlatformInterface::setIconThemeName(const QByteArray &iconThemeName)
|
||||
{
|
||||
if (m_appearanceContext) {
|
||||
m_appearanceContext->set_icon_theme(iconThemeName);
|
||||
}
|
||||
}
|
||||
|
||||
void DTreelandPlatformInterface::setFontName(const QByteArray &fontName)
|
||||
{
|
||||
if (m_fontContext) {
|
||||
m_fontContext->set_font(fontName);
|
||||
}
|
||||
}
|
||||
|
||||
void DTreelandPlatformInterface::setMonoFontName(const QByteArray &monoFontName)
|
||||
{
|
||||
if (m_fontContext) {
|
||||
m_fontContext->set_monospace_font(monoFontName);
|
||||
}
|
||||
}
|
||||
|
||||
void DTreelandPlatformInterface::setFontPointSize(qreal fontPointSize)
|
||||
{
|
||||
if (m_fontContext) {
|
||||
m_fontContext->set_font_size(fontPointSize);
|
||||
}
|
||||
}
|
||||
|
||||
void DTreelandPlatformInterface::setActiveColor(const QColor activeColor)
|
||||
{
|
||||
if (m_appearanceContext) {
|
||||
m_appearanceContext->set_active_color(activeColor.name());
|
||||
}
|
||||
}
|
||||
|
||||
DGUI_END_NAMESPACE
|
||||
|
|
@ -0,0 +1,66 @@
|
|||
// SPDX-FileCopyrightText: 2024 UnionTech Software Technology Co., Ltd.
|
||||
//
|
||||
// SPDX-License-Identifier: LGPL-3.0-or-later
|
||||
|
||||
#ifndef DTREELANDPLATFORMINTERFACE_H
|
||||
#define DTREELANDPLATFORMINTERFACE_H
|
||||
|
||||
#include "private/dplatforminterface_p.h"
|
||||
|
||||
#include <QHash>
|
||||
#include <QQueue>
|
||||
#include <DObject>
|
||||
|
||||
DGUI_BEGIN_NAMESPACE
|
||||
|
||||
class DTreelandPlatformInterfacePrivate;
|
||||
class PersonalizationManager;
|
||||
class PersonalizationFontContext;
|
||||
class PersonalizationAppearanceContext;
|
||||
class PersonalizationWindowContext;
|
||||
|
||||
class DTreelandPlatformInterface : public QObject, public DPlatformInterface, public DCORE_NAMESPACE::DObject
|
||||
{
|
||||
Q_OBJECT
|
||||
friend PersonalizationFontContext;
|
||||
friend PersonalizationAppearanceContext;
|
||||
friend PersonalizationWindowContext;
|
||||
public:
|
||||
explicit DTreelandPlatformInterface(DPlatformTheme *platformTheme);
|
||||
|
||||
QByteArray iconThemeName() const override;
|
||||
QByteArray fontName() const override;
|
||||
QByteArray monoFontName() const override;
|
||||
qreal fontPointSize() const override;
|
||||
QColor activeColor() const override;
|
||||
QByteArray themeName() const override;
|
||||
|
||||
void setIconThemeName(const QByteArray &iconThemeName) override;
|
||||
void setFontName(const QByteArray &fontName) override;
|
||||
void setMonoFontName(const QByteArray &monoFontName) override;
|
||||
void setFontPointSize(qreal fontPointSize) override;
|
||||
void setActiveColor(const QColor activeColor) override;
|
||||
|
||||
private:
|
||||
void initContext();
|
||||
|
||||
private:
|
||||
PersonalizationManager *m_manager;
|
||||
QScopedPointer<PersonalizationAppearanceContext> m_appearanceContext;
|
||||
QScopedPointer<PersonalizationFontContext> m_fontContext;
|
||||
|
||||
QColor m_activeColor;
|
||||
int m_titleHeight;
|
||||
QByteArray m_fontName;
|
||||
QByteArray m_monoFontName;
|
||||
QByteArray m_iconThemeName;
|
||||
QByteArray m_cursorThemeName;
|
||||
qreal m_fontPointSize;
|
||||
int m_windowRadius;
|
||||
int m_scrollBarPolicy;
|
||||
QByteArray m_themeName;
|
||||
uint32_t m_blurOpacity;
|
||||
};
|
||||
|
||||
DGUI_END_NAMESPACE
|
||||
#endif
|
||||
|
|
@ -0,0 +1,398 @@
|
|||
// SPDX-FileCopyrightText: 2024 UnionTech Software Technology Co., Ltd.
|
||||
//
|
||||
// SPDX-License-Identifier: LGPL-3.0-or-later
|
||||
|
||||
#define protected public
|
||||
#include <QWindow>
|
||||
#undef protected
|
||||
|
||||
#include "dtreelandplatformwindowinterface.h"
|
||||
|
||||
#include <QWaylandClientExtension>
|
||||
#include <QStyleHints>
|
||||
#include <private/qwaylandintegration_p.h>
|
||||
#include <private/qguiapplication_p.h>
|
||||
#include <private/qwaylandwindow_p.h>
|
||||
#include <private/qwaylandsurface_p.h>
|
||||
|
||||
#include "dvtablehook.h"
|
||||
|
||||
#include "personalizationwaylandclientextension.h"
|
||||
|
||||
DCORE_USE_NAMESPACE
|
||||
|
||||
DGUI_BEGIN_NAMESPACE
|
||||
class Q_DECL_HIDDEN MoveWindowHelper : public QObject
|
||||
{
|
||||
public:
|
||||
explicit MoveWindowHelper(QWindow *w);
|
||||
~MoveWindowHelper();
|
||||
|
||||
static QHash<const QWindow*, MoveWindowHelper*> mapped;
|
||||
|
||||
private:
|
||||
static bool windowEvent(QWindow *w, QEvent *event);
|
||||
void updateEnableSystemMoveFromProperty();
|
||||
|
||||
QWindow *m_window;
|
||||
bool m_windowMoving;
|
||||
bool m_enableSystemMove;
|
||||
};
|
||||
|
||||
QHash<const QWindow*, MoveWindowHelper*> MoveWindowHelper::mapped;
|
||||
|
||||
MoveWindowHelper::MoveWindowHelper(QWindow *window)
|
||||
: QObject(window)
|
||||
, m_window(window)
|
||||
{
|
||||
mapped[window] = this;
|
||||
updateEnableSystemMoveFromProperty();
|
||||
}
|
||||
|
||||
MoveWindowHelper::~MoveWindowHelper()
|
||||
{
|
||||
mapped.remove(static_cast<QWindow*>(parent()));
|
||||
}
|
||||
|
||||
void MoveWindowHelper::updateEnableSystemMoveFromProperty()
|
||||
{
|
||||
if (!m_window) {
|
||||
return;
|
||||
}
|
||||
const QVariant &v = m_window->property("_d_enableSystemMove");
|
||||
|
||||
m_enableSystemMove = !v.isValid() || v.toBool();
|
||||
|
||||
if (m_enableSystemMove) {
|
||||
DVtableHook::overrideVfptrFun(m_window, &QWindow::event, &MoveWindowHelper::windowEvent);
|
||||
} else if (DVtableHook::hasVtable(m_window)) {
|
||||
DVtableHook::resetVfptrFun(m_window, &QWindow::event);
|
||||
}
|
||||
}
|
||||
|
||||
bool MoveWindowHelper::windowEvent(QWindow *w, QEvent *event)
|
||||
{
|
||||
MoveWindowHelper *self = mapped.value(w);
|
||||
|
||||
if (!self)
|
||||
return DVtableHook::callOriginalFun(w, &QWindow::event, event);
|
||||
|
||||
// TODO Crashed when delete by Vtable.
|
||||
if (event->type() == QEvent::DeferredDelete) {
|
||||
DVtableHook::resetVtable(w);
|
||||
return w->event(event);
|
||||
}
|
||||
|
||||
// m_window 的 event 被 override 以后,在 windowEvent 里面获取到的 this 就成 m_window 了,
|
||||
// 而不是 DNoTitlebarWlWindowHelper,所以此处 windowEvent 改为 static 并传 self 进来
|
||||
{
|
||||
static bool isTouchDown = false;
|
||||
static QPointF touchBeginPosition;
|
||||
if (event->type() == QEvent::TouchBegin) {
|
||||
isTouchDown = true;
|
||||
}
|
||||
if (event->type() == QEvent::TouchEnd || event->type() == QEvent::MouseButtonRelease) {
|
||||
isTouchDown = false;
|
||||
}
|
||||
if (isTouchDown && event->type() == QEvent::MouseButtonPress) {
|
||||
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
|
||||
touchBeginPosition = static_cast<QMouseEvent*>(event)->globalPosition();
|
||||
#else
|
||||
touchBeginPosition = static_cast<QMouseEvent*>(event)->globalPos();
|
||||
#endif
|
||||
}
|
||||
// add some redundancy to distinguish trigger between system menu and system move
|
||||
if (event->type() == QEvent::MouseMove) {
|
||||
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
|
||||
QPointF currentPos = static_cast<QMouseEvent*>(event)->globalPosition();
|
||||
#else
|
||||
QPointF currentPos = static_cast<QMouseEvent*>(event)->globalPos();
|
||||
#endif
|
||||
QPointF delta = touchBeginPosition - currentPos;
|
||||
if (delta.manhattanLength() < QGuiApplication::styleHints()->startDragDistance()) {
|
||||
return DVtableHook::callOriginalFun(w, &QWindow::event, event);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool is_mouse_move = event->type() == QEvent::MouseMove && static_cast<QMouseEvent*>(event)->buttons() == Qt::LeftButton;
|
||||
|
||||
if (event->type() == QEvent::MouseButtonRelease) {
|
||||
self->m_windowMoving = false;
|
||||
}
|
||||
|
||||
if (!DVtableHook::callOriginalFun(w, &QWindow::event, event))
|
||||
return false;
|
||||
|
||||
// workaround for kwin: Qt receives no release event when kwin finishes MOVE operation,
|
||||
// which makes app hang in windowMoving state. when a press happens, there's no sense of
|
||||
// keeping the moving state, we can just reset ti back to normal.
|
||||
if (event->type() == QEvent::MouseButtonPress) {
|
||||
self->m_windowMoving = false;
|
||||
}
|
||||
|
||||
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
|
||||
if (is_mouse_move && !event->isAccepted()
|
||||
&& w->geometry().contains(static_cast<QMouseEvent*>(event)->globalPosition().toPoint())) {
|
||||
#else
|
||||
if (is_mouse_move && !event->isAccepted()
|
||||
&& w->geometry().contains(static_cast<QMouseEvent*>(event)->globalPos())) {
|
||||
#endif
|
||||
if (!self->m_windowMoving && self->m_enableSystemMove) {
|
||||
self->m_windowMoving = true;
|
||||
|
||||
event->accept();
|
||||
if (w && w->handle()) {
|
||||
#if QT_VERSION < QT_VERSION_CHECK(5, 15, 0)
|
||||
static_cast<QPlatformWindow *>(w->handle())->startSystemMove(QCursor::pos());
|
||||
#else
|
||||
static_cast<QPlatformWindow *>(w->handle())->startSystemMove();
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
QMap<QWindow *, DTreeLandPlatformWindowHelper*> DTreeLandPlatformWindowHelper::windowMap;
|
||||
DTreeLandPlatformWindowHelper *DTreeLandPlatformWindowHelper::get(QWindow *window)
|
||||
{
|
||||
if (!PersonalizationManager::instance()->isSupported()) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
if (!window) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
if (auto helper = windowMap.value(window)) {
|
||||
return helper;
|
||||
}
|
||||
auto helper = new DTreeLandPlatformWindowHelper(window);
|
||||
windowMap[window] = helper;
|
||||
return helper;
|
||||
}
|
||||
|
||||
DTreeLandPlatformWindowHelper::DTreeLandPlatformWindowHelper(QWindow *window)
|
||||
: QObject(window)
|
||||
{
|
||||
window->installEventFilter(this);
|
||||
|
||||
if (!PersonalizationManager::instance()->isActive()) {
|
||||
qWarning() << "Personalization is not active" << window;
|
||||
connect(PersonalizationManager::instance(), &PersonalizationManager::activeChanged, this, &DTreeLandPlatformWindowHelper::onActiveChanged, Qt::QueuedConnection);
|
||||
}
|
||||
|
||||
if (window->handle()) {
|
||||
initWaylandWindow();
|
||||
}
|
||||
}
|
||||
|
||||
DTreeLandPlatformWindowHelper::~DTreeLandPlatformWindowHelper()
|
||||
{
|
||||
// see tst_qwindow.cpp tst_QWindow::qobject_castOnDestruction()
|
||||
windowMap.remove(static_cast<QWindow*>(parent()));
|
||||
}
|
||||
|
||||
bool DTreeLandPlatformWindowHelper::eventFilter(QObject *watched, QEvent *event) {
|
||||
if (event->type() == QEvent::PlatformSurface) {
|
||||
QPlatformSurfaceEvent *se = static_cast<QPlatformSurfaceEvent*>(event);
|
||||
if (se->surfaceEventType() == QPlatformSurfaceEvent::SurfaceCreated) {
|
||||
if (PersonalizationManager::instance()->isActive()) {
|
||||
initWaylandWindow();
|
||||
onSurfaceCreated();
|
||||
}
|
||||
}
|
||||
}
|
||||
return QObject::eventFilter(watched, event);
|
||||
}
|
||||
|
||||
void DTreeLandPlatformWindowHelper::initWaylandWindow()
|
||||
{
|
||||
auto waylandWindow = dynamic_cast<QtWaylandClient::QWaylandWindow *>(window()->handle());
|
||||
if (!waylandWindow) {
|
||||
qWarning() << "waylandWindow is nullptr!!!";
|
||||
return;
|
||||
}
|
||||
|
||||
connect(waylandWindow, &QtWaylandClient::QWaylandWindow::wlSurfaceCreated, this, &DTreeLandPlatformWindowHelper::onSurfaceCreated, Qt::UniqueConnection);
|
||||
connect(waylandWindow, &QtWaylandClient::QWaylandWindow::wlSurfaceDestroyed, this, &DTreeLandPlatformWindowHelper::onSurfaceDestroyed, Qt::UniqueConnection);
|
||||
}
|
||||
|
||||
void DTreeLandPlatformWindowHelper::onActiveChanged()
|
||||
{
|
||||
if (PersonalizationManager::instance()->isActive()) {
|
||||
qDebug() << "Personalization is actived, window" << window();
|
||||
if (window()->handle()) {
|
||||
onSurfaceCreated();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void DTreeLandPlatformWindowHelper::onSurfaceCreated()
|
||||
{
|
||||
if (m_isNoTitlebar) {
|
||||
doSetEnabledNoTitlebar();
|
||||
}
|
||||
if (m_radius > 0) {
|
||||
doSetWindowRadius();
|
||||
}
|
||||
if (m_isWindowBlur) {
|
||||
doSetEnabledBlurWindow();
|
||||
}
|
||||
}
|
||||
|
||||
void DTreeLandPlatformWindowHelper::onSurfaceDestroyed()
|
||||
{
|
||||
if (m_windowContext) {
|
||||
m_windowContext->deleteLater();
|
||||
m_windowContext = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
PersonalizationWindowContext *DTreeLandPlatformWindowHelper::windowContext() const
|
||||
{
|
||||
if (m_windowContext) {
|
||||
return m_windowContext;
|
||||
}
|
||||
|
||||
auto waylandWindow = dynamic_cast<QtWaylandClient::QWaylandWindow *>(window()->handle());
|
||||
if (!waylandWindow)
|
||||
return nullptr;
|
||||
|
||||
if (!waylandWindow->waylandSurface()) {
|
||||
qWarning() << "waylandSurface is nullptr!!!";
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
auto surface = waylandWindow->waylandSurface()->object();
|
||||
if (!surface) {
|
||||
qWarning() << "wl_surface is nullptr!!!";
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
if (!m_windowContext) {
|
||||
const_cast<DTreeLandPlatformWindowHelper *>(this)->m_windowContext = new PersonalizationWindowContext(PersonalizationManager::instance()->get_window_context(surface));
|
||||
}
|
||||
|
||||
return m_windowContext;
|
||||
}
|
||||
|
||||
void DTreeLandPlatformWindowHelper::setEnabledNoTitlebar(bool enable)
|
||||
{
|
||||
m_isNoTitlebar = enable;
|
||||
doSetEnabledNoTitlebar();
|
||||
}
|
||||
void DTreeLandPlatformWindowHelper::setWindowRadius(int windowRadius)
|
||||
{
|
||||
m_radius = windowRadius;
|
||||
doSetWindowRadius();
|
||||
}
|
||||
void DTreeLandPlatformWindowHelper::setEnableBlurWindow(bool enableBlurWindow)
|
||||
{
|
||||
m_isWindowBlur = enableBlurWindow;
|
||||
doSetEnabledBlurWindow();
|
||||
}
|
||||
|
||||
void DTreeLandPlatformWindowHelper::doSetEnabledNoTitlebar()
|
||||
{
|
||||
if (auto context = windowContext()) {
|
||||
context->set_titlebar(m_isNoTitlebar ? PersonalizationWindowContext::enable_mode_disable : PersonalizationWindowContext::enable_mode_enable);
|
||||
}
|
||||
}
|
||||
|
||||
void DTreeLandPlatformWindowHelper::doSetWindowRadius()
|
||||
{
|
||||
if (auto context = windowContext()) {
|
||||
context->set_round_corner_radius(m_radius);
|
||||
}
|
||||
}
|
||||
|
||||
void DTreeLandPlatformWindowHelper::doSetEnabledBlurWindow()
|
||||
{
|
||||
if (auto context = windowContext()) {
|
||||
context->set_blend_mode(m_isWindowBlur ? PersonalizationWindowContext::blend_mode_blur : PersonalizationWindowContext::blend_mode_transparent);
|
||||
}
|
||||
}
|
||||
|
||||
DTreeLandPlatformWindowInterface::DTreeLandPlatformWindowInterface(QWindow *window, DPlatformHandle *platformHandle, QObject *parent)
|
||||
: QObject(parent)
|
||||
, DPlatformWindowInterface(window, platformHandle)
|
||||
{
|
||||
if (!MoveWindowHelper::mapped.value(window)) {
|
||||
Q_UNUSED(new MoveWindowHelper(window))
|
||||
}
|
||||
}
|
||||
|
||||
DTreeLandPlatformWindowInterface::~DTreeLandPlatformWindowInterface()
|
||||
{
|
||||
}
|
||||
|
||||
void DTreeLandPlatformWindowInterface::setEnabled(bool enabled)
|
||||
{
|
||||
if (setEnabledNoTitlebar(enabled)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
bool DTreeLandPlatformWindowInterface::isEnabled() const
|
||||
{
|
||||
return isEnabledNoTitlebar();
|
||||
}
|
||||
|
||||
bool DTreeLandPlatformWindowInterface::isEnabledNoTitlebar() const
|
||||
{
|
||||
return m_isNoTitlebar;
|
||||
}
|
||||
|
||||
bool DTreeLandPlatformWindowInterface::setEnabledNoTitlebar(bool enable)
|
||||
{
|
||||
if (m_isNoTitlebar == enable) {
|
||||
return true;
|
||||
}
|
||||
m_isNoTitlebar = enable;
|
||||
if (auto helper = DTreeLandPlatformWindowHelper::get(m_window)) {
|
||||
helper->setEnabledNoTitlebar(enable);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
int DTreeLandPlatformWindowInterface::windowRadius() const
|
||||
{
|
||||
return m_radius;
|
||||
}
|
||||
|
||||
void DTreeLandPlatformWindowInterface::setWindowRadius(int windowRadius)
|
||||
{
|
||||
if (m_radius == windowRadius) {
|
||||
return;
|
||||
}
|
||||
m_radius = windowRadius;
|
||||
if (auto helper = DTreeLandPlatformWindowHelper::get(m_window)) {
|
||||
helper->setWindowRadius(m_radius);
|
||||
}
|
||||
if (m_platformHandle) {
|
||||
Q_EMIT m_platformHandle->windowRadiusChanged();
|
||||
}
|
||||
}
|
||||
|
||||
bool DTreeLandPlatformWindowInterface::enableBlurWindow() const
|
||||
{
|
||||
return m_isWindowBlur;
|
||||
}
|
||||
|
||||
void DTreeLandPlatformWindowInterface::setEnableBlurWindow(bool enable)
|
||||
{
|
||||
if (m_isWindowBlur == enable) {
|
||||
return;
|
||||
}
|
||||
m_isWindowBlur = enable;
|
||||
if (auto helper = DTreeLandPlatformWindowHelper::get(m_window)) {
|
||||
helper->setEnableBlurWindow(enable);
|
||||
}
|
||||
if (m_platformHandle) {
|
||||
Q_EMIT m_platformHandle->enableBlurWindowChanged();
|
||||
}
|
||||
}
|
||||
DGUI_END_NAMESPACE
|
||||
|
|
@ -0,0 +1,76 @@
|
|||
// SPDX-FileCopyrightText: 2024 UnionTech Software Technology Co., Ltd.
|
||||
//
|
||||
// SPDX-License-Identifier: LGPL-3.0-or-later
|
||||
|
||||
#ifndef DTREELANDPLATFORMWINDOWINTERFACE_H
|
||||
#define DTREELANDPLATFORMWINDOWINTERFACE_H
|
||||
|
||||
#include "dtkgui_global.h"
|
||||
#include "dtreelandplatforminterface.h"
|
||||
#include <QObject>
|
||||
#include <QtWaylandClient/private/qwaylandwindow_p.h>
|
||||
#include "private/dplatformwindowinterface_p.h"
|
||||
|
||||
DGUI_BEGIN_NAMESPACE
|
||||
class PersonalizationWindowContext;
|
||||
class DTreeLandPlatformWindowHelper : public QObject {
|
||||
Q_OBJECT
|
||||
public:
|
||||
static DTreeLandPlatformWindowHelper *get(QWindow *window);
|
||||
~DTreeLandPlatformWindowHelper() override;
|
||||
|
||||
QWindow *window() const { return qobject_cast<QWindow *>(parent()); }
|
||||
PersonalizationWindowContext *windowContext() const;
|
||||
|
||||
void setEnabledNoTitlebar(bool enable);
|
||||
void setWindowRadius(int windowRadius);
|
||||
void setEnableBlurWindow(bool enableBlurWindow);
|
||||
|
||||
private slots:
|
||||
void onActiveChanged();
|
||||
void onSurfaceCreated();
|
||||
void onSurfaceDestroyed();
|
||||
private:
|
||||
explicit DTreeLandPlatformWindowHelper(QWindow *window);
|
||||
bool eventFilter(QObject *watched, QEvent *event) override;
|
||||
void initWaylandWindow();
|
||||
|
||||
void doSetEnabledNoTitlebar();
|
||||
void doSetWindowRadius();
|
||||
void doSetEnabledBlurWindow();
|
||||
private:
|
||||
PersonalizationWindowContext *m_windowContext = nullptr;
|
||||
static QMap<QWindow *, DTreeLandPlatformWindowHelper*> windowMap;
|
||||
|
||||
bool m_isNoTitlebar = false;
|
||||
bool m_isWindowBlur = false;
|
||||
int m_radius = 0;
|
||||
};
|
||||
|
||||
class DTreeLandPlatformWindowInterface : public QObject, public DPlatformWindowInterface
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
DTreeLandPlatformWindowInterface(QWindow *window, DPlatformHandle *platformHandle, QObject *parent = nullptr);
|
||||
~DTreeLandPlatformWindowInterface() override;
|
||||
|
||||
void setEnabled(bool enabled) override;
|
||||
bool isEnabled() const override;
|
||||
|
||||
bool isEnabledNoTitlebar() const override;
|
||||
bool setEnabledNoTitlebar(bool enable) override;
|
||||
|
||||
int windowRadius() const override;
|
||||
void setWindowRadius(int windowRadius) override;
|
||||
|
||||
bool enableBlurWindow() const override;
|
||||
void setEnableBlurWindow(bool enableBlurWindow) override;
|
||||
|
||||
private:
|
||||
bool m_isNoTitlebar = false;
|
||||
bool m_isWindowBlur = false;
|
||||
int m_radius = 0;
|
||||
};
|
||||
|
||||
DGUI_END_NAMESPACE
|
||||
#endif // DTREELANDPLATFORMWINDOWINTERFACE_H
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
// SPDX-FileCopyrightText: 2024 UnionTech Software Technology Co., Ltd.
|
||||
//
|
||||
// SPDX-License-Identifier: LGPL-3.0-or-later
|
||||
|
||||
#include "dtreelandwindowmanagerhelper.h"
|
||||
#include "personalizationwaylandclientextension.h"
|
||||
|
||||
DGUI_BEGIN_NAMESPACE
|
||||
|
||||
TreelandWindowManagerHelper::TreelandWindowManagerHelper(QObject *parent)
|
||||
: DWindowManagerHelper(parent)
|
||||
{
|
||||
connect(PersonalizationManager::instance(), &PersonalizationManager::activeChanged, this, [this](){
|
||||
Q_EMIT hasBlurWindowChanged();
|
||||
Q_EMIT hasNoTitlebarChanged();
|
||||
});
|
||||
}
|
||||
|
||||
bool TreelandWindowManagerHelper::hasBlurWindow() const
|
||||
{
|
||||
return PersonalizationManager::instance()->isSupported();
|
||||
}
|
||||
|
||||
bool TreelandWindowManagerHelper::hasComposite() const
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
bool TreelandWindowManagerHelper::hasNoTitlebar() const
|
||||
{
|
||||
return PersonalizationManager::instance()->isSupported();
|
||||
}
|
||||
|
||||
DGUI_END_NAMESPACE
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
// SPDX-FileCopyrightText: 2024 UnionTech Software Technology Co., Ltd.
|
||||
//
|
||||
// SPDX-License-Identifier: LGPL-3.0-or-later
|
||||
|
||||
#ifndef DTREELANDWINDOWMANAGERHELPER_H
|
||||
#define DTREELANDWINDOWMANAGERHELPER_H
|
||||
|
||||
#include "dtkgui_global.h"
|
||||
#include "dwindowmanagerhelper.h"
|
||||
#include <QObject>
|
||||
|
||||
DGUI_BEGIN_NAMESPACE
|
||||
|
||||
class TreelandWindowManagerHelper : public DWindowManagerHelper
|
||||
{
|
||||
public:
|
||||
explicit TreelandWindowManagerHelper(QObject *parent = 0);
|
||||
bool hasBlurWindow() const;
|
||||
bool hasComposite() const;
|
||||
bool hasNoTitlebar() const;
|
||||
};
|
||||
|
||||
DGUI_END_NAMESPACE
|
||||
|
||||
#endif // DTREELANDWINDOWMANAGERHELPER_H
|
||||
|
|
@ -0,0 +1,152 @@
|
|||
// SPDX-FileCopyrightText: 2024 UnionTech Software Technology Co., Ltd.
|
||||
//
|
||||
// SPDX-License-Identifier: LGPL-3.0-or-later
|
||||
|
||||
#include "personalizationwaylandclientextension.h"
|
||||
|
||||
#include <private/qguiapplication_p.h>
|
||||
#include <private/qwaylandintegration_p.h>
|
||||
#include <private/qwaylandwindow_p.h>
|
||||
#include <qwaylandclientextension.h>
|
||||
#include "dplatformtheme.h"
|
||||
|
||||
#include <QtWaylandClient/private/qwaylandsurface_p.h>
|
||||
#include <QtWaylandClient/private/qwaylandwindow_p.h>
|
||||
#include <QGuiApplication>
|
||||
|
||||
DGUI_BEGIN_NAMESPACE
|
||||
|
||||
PersonalizationManager::PersonalizationManager()
|
||||
: QWaylandClientExtensionTemplate<PersonalizationManager>(treeland_personalization_manager_v1_interface.version)
|
||||
, m_isSupported(false)
|
||||
{
|
||||
QtWaylandClient::QWaylandIntegration *waylandIntegration = static_cast<QtWaylandClient::QWaylandIntegration *>(QGuiApplicationPrivate::platformIntegration());
|
||||
if (!waylandIntegration) {
|
||||
qWarning() << "waylandIntegration is nullptr!!!";
|
||||
return;
|
||||
}
|
||||
m_waylandDisplay = waylandIntegration->display();
|
||||
if (m_waylandDisplay == nullptr) {
|
||||
qWarning() << "waylandDisplay is nullptr!!!";
|
||||
return;
|
||||
}
|
||||
addListener();
|
||||
m_isSupported = m_waylandDisplay->hasRegistryGlobal(QString::fromUtf8(treeland_personalization_manager_v1_interface.name));
|
||||
if (!m_isSupported) {
|
||||
qWarning() << "PersonalizationManager is not support";
|
||||
}
|
||||
}
|
||||
|
||||
void PersonalizationManager::addListener()
|
||||
{
|
||||
m_waylandDisplay->addRegistryListener(&handleListenerGlobal, this);
|
||||
}
|
||||
|
||||
void PersonalizationManager::removeListener()
|
||||
{
|
||||
m_waylandDisplay->removeListener(&handleListenerGlobal, this);
|
||||
}
|
||||
|
||||
void PersonalizationManager::handleListenerGlobal(void *data, wl_registry *registry, uint32_t id, const QString &interface, uint32_t version)
|
||||
{
|
||||
if (interface == treeland_personalization_manager_v1_interface.name) {
|
||||
PersonalizationManager *integration = static_cast<PersonalizationManager *>(data);
|
||||
if (!integration) {
|
||||
qWarning() << "integration is nullptr!!!";
|
||||
return;
|
||||
}
|
||||
|
||||
integration->init(registry, id, version);
|
||||
}
|
||||
}
|
||||
|
||||
PersonalizationManager *PersonalizationManager::instance()
|
||||
{
|
||||
static PersonalizationManager instance;
|
||||
return &instance;
|
||||
}
|
||||
|
||||
PersonalizationWindowContext::PersonalizationWindowContext(struct ::treeland_personalization_window_context_v1 *context)
|
||||
: QWaylandClientExtensionTemplate<PersonalizationWindowContext>(treeland_personalization_window_context_v1_interface.version)
|
||||
, QtWayland::treeland_personalization_window_context_v1(context)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
PersonalizationAppearanceContext::PersonalizationAppearanceContext(struct ::treeland_personalization_appearance_context_v1 *context, DTreelandPlatformInterface *interface)
|
||||
: QWaylandClientExtensionTemplate<PersonalizationAppearanceContext>(treeland_personalization_appearance_context_v1_interface.version)
|
||||
, QtWayland::treeland_personalization_appearance_context_v1(context)
|
||||
, m_interface(interface)
|
||||
{
|
||||
get_round_corner_radius();
|
||||
get_icon_theme();
|
||||
get_active_color();
|
||||
get_window_theme_type();
|
||||
get_window_opacity();
|
||||
}
|
||||
|
||||
void PersonalizationAppearanceContext::treeland_personalization_appearance_context_v1_round_corner_radius(int32_t radius)
|
||||
{
|
||||
m_interface->m_windowRadius = radius;
|
||||
emit m_interface->m_platformTheme->windowRadiusChanged(radius);
|
||||
}
|
||||
|
||||
void PersonalizationAppearanceContext::treeland_personalization_appearance_context_v1_icon_theme(const QString &theme_name)
|
||||
{
|
||||
m_interface->m_iconThemeName = theme_name.toUtf8();
|
||||
emit m_interface->m_platformTheme->iconThemeNameChanged(theme_name.toUtf8());
|
||||
}
|
||||
|
||||
void PersonalizationAppearanceContext::treeland_personalization_appearance_context_v1_active_color(const QString &active_color)
|
||||
{
|
||||
m_interface->m_activeColor = active_color;
|
||||
emit m_interface->m_platformTheme->activeColorChanged(active_color);
|
||||
}
|
||||
|
||||
void PersonalizationAppearanceContext::treeland_personalization_appearance_context_v1_window_theme_type(uint32_t type)
|
||||
{
|
||||
QString theme = QStringLiteral("deepin");
|
||||
if (type == PersonalizationAppearanceContext::theme_type::theme_type_dark) {
|
||||
theme = theme + QStringLiteral("-dark");
|
||||
}
|
||||
m_interface->m_themeName = theme.toUtf8();
|
||||
emit m_interface->m_platformTheme->themeNameChanged(theme.toUtf8());
|
||||
}
|
||||
|
||||
void PersonalizationAppearanceContext::treeland_personalization_appearance_context_v1_window_opacity(uint32_t opacity)
|
||||
{
|
||||
m_interface->m_blurOpacity = opacity;
|
||||
}
|
||||
|
||||
PersonalizationFontContext::PersonalizationFontContext(struct ::treeland_personalization_font_context_v1 *context, DTreelandPlatformInterface *interface)
|
||||
: QWaylandClientExtensionTemplate<PersonalizationFontContext>(treeland_personalization_font_context_v1_interface.version)
|
||||
, QtWayland::treeland_personalization_font_context_v1(context)
|
||||
, m_interface(interface)
|
||||
{
|
||||
get_font();
|
||||
get_monospace_font();
|
||||
get_font_size();
|
||||
}
|
||||
|
||||
void PersonalizationFontContext::treeland_personalization_font_context_v1_font(const QString &font_name)
|
||||
{
|
||||
m_interface->m_fontName = font_name.toUtf8();
|
||||
emit m_interface->m_platformTheme->fontNameChanged(font_name.toUtf8());
|
||||
}
|
||||
|
||||
void PersonalizationFontContext::treeland_personalization_font_context_v1_monospace_font(const QString &font_name)
|
||||
{
|
||||
m_interface->m_monoFontName = font_name.toUtf8();
|
||||
emit m_interface->m_platformTheme->monoFontNameChanged(font_name.toUtf8());
|
||||
}
|
||||
|
||||
void PersonalizationFontContext::treeland_personalization_font_context_v1_font_size(uint32_t font_size)
|
||||
{
|
||||
// treeland侧无法存储浮点数,约定 font_size 为 10 倍的 pointSize
|
||||
qreal pointSize = font_size / 10.0;
|
||||
pointSize = qBound(8.25, pointSize, 15.00);
|
||||
m_interface->m_fontPointSize = pointSize;
|
||||
emit m_interface->m_platformTheme->fontPointSizeChanged(pointSize);
|
||||
}
|
||||
|
||||
DGUI_END_NAMESPACE
|
||||
|
|
@ -0,0 +1,87 @@
|
|||
// SPDX-FileCopyrightText: 2024 UnionTech Software Technology Co., Ltd.
|
||||
//
|
||||
// SPDX-License-Identifier: LGPL-3.0-or-later
|
||||
|
||||
#ifndef PERSONALIZATIONWAYLANDCLIENTEXTENSION_H
|
||||
#define PERSONALIZATIONWAYLANDCLIENTEXTENSION_H
|
||||
|
||||
#include "dtreelandplatforminterface.h"
|
||||
#include "qwayland-treeland-personalization-manager-v1.h"
|
||||
|
||||
#include <dtkgui_global.h>
|
||||
#include <private/qwaylanddisplay_p.h>
|
||||
|
||||
#include <QtWaylandClient/QWaylandClientExtension>
|
||||
#include <QWaylandClientExtensionTemplate>
|
||||
|
||||
DGUI_BEGIN_NAMESPACE
|
||||
|
||||
class PersonalizationAppearanceContext;
|
||||
class PersonalizationCursorContext;
|
||||
class PersonalizationFontContext;
|
||||
class DTreelandPlatformInterfacePrivate;
|
||||
|
||||
class PersonalizationManager: public QWaylandClientExtensionTemplate<PersonalizationManager>,
|
||||
public QtWayland::treeland_personalization_manager_v1
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
static PersonalizationManager *instance();
|
||||
|
||||
[[nodiscard]]inline bool isSupported() const { return m_isSupported; }
|
||||
|
||||
private:
|
||||
void addListener();
|
||||
void removeListener();
|
||||
|
||||
explicit PersonalizationManager();
|
||||
static void handleListenerGlobal(void *data, wl_registry *registry, uint32_t id, const QString &interface, uint32_t version);
|
||||
|
||||
private:
|
||||
QtWaylandClient::QWaylandDisplay *m_waylandDisplay;
|
||||
bool m_isSupported;
|
||||
};
|
||||
|
||||
class PersonalizationWindowContext : public QWaylandClientExtensionTemplate<PersonalizationWindowContext>,
|
||||
public QtWayland::treeland_personalization_window_context_v1
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit PersonalizationWindowContext(struct ::treeland_personalization_window_context_v1 *context);
|
||||
};
|
||||
|
||||
class PersonalizationAppearanceContext : public QWaylandClientExtensionTemplate<PersonalizationAppearanceContext>,
|
||||
public QtWayland::treeland_personalization_appearance_context_v1
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit PersonalizationAppearanceContext(struct ::treeland_personalization_appearance_context_v1 *context, DTreelandPlatformInterface *interface);
|
||||
|
||||
protected:
|
||||
void treeland_personalization_appearance_context_v1_round_corner_radius(int32_t radius) override;
|
||||
void treeland_personalization_appearance_context_v1_icon_theme(const QString &theme_name) override;
|
||||
void treeland_personalization_appearance_context_v1_active_color(const QString &active_color) override;
|
||||
void treeland_personalization_appearance_context_v1_window_theme_type(uint32_t type) override;
|
||||
void treeland_personalization_appearance_context_v1_window_opacity(uint32_t opacity) override;
|
||||
private:
|
||||
DTreelandPlatformInterface *m_interface;
|
||||
};
|
||||
|
||||
class PersonalizationFontContext : public QWaylandClientExtensionTemplate<PersonalizationFontContext>,
|
||||
public QtWayland::treeland_personalization_font_context_v1
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit PersonalizationFontContext(struct ::treeland_personalization_font_context_v1 *context, DTreelandPlatformInterface *interface);
|
||||
|
||||
protected:
|
||||
void treeland_personalization_font_context_v1_font(const QString &font_name) override;
|
||||
void treeland_personalization_font_context_v1_monospace_font(const QString &font_name) override;
|
||||
void treeland_personalization_font_context_v1_font_size(uint32_t font_size) override;
|
||||
private:
|
||||
DTreelandPlatformInterface *m_interface;
|
||||
};
|
||||
|
||||
DGUI_END_NAMESPACE
|
||||
|
||||
#endif // PERSONALIZATIONWAYLANDCLIENTEXTENSION_H
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
file(GLOB TREELAND_HEADER
|
||||
${CMAKE_CURRENT_LIST_DIR}/*.h
|
||||
)
|
||||
file(GLOB TREELAND_SOURCE
|
||||
${CMAKE_CURRENT_LIST_DIR}/*.cpp
|
||||
)
|
||||
set(treeland_SRC
|
||||
${TREELAND_HEADER}
|
||||
${TREELAND_SOURCE}
|
||||
)
|
||||
|
|
@ -0,0 +1,708 @@
|
|||
// SPDX-FileCopyrightText: 2024 UnionTech Software Technology Co., Ltd.
|
||||
//
|
||||
// SPDX-License-Identifier: LGPL-3.0-or-later
|
||||
|
||||
#include "dxcbplatforminterface.h"
|
||||
#include "dxcbplatforminterface_p.h"
|
||||
|
||||
#include <DNativeSettings>
|
||||
#include <QPlatformSurfaceEvent>
|
||||
#include <QGuiApplication>
|
||||
#include <QMetaObject>
|
||||
#include <QMetaProperty>
|
||||
|
||||
#include "dplatformtheme.h"
|
||||
#include "dguiapplicationhelper.h"
|
||||
#include <qpa/qplatformwindow.h>
|
||||
|
||||
DGUI_BEGIN_NAMESPACE
|
||||
|
||||
#define DEFINE_CONST_CHAR(Name) const char _##Name[] = "_d_" #Name
|
||||
|
||||
#define FETCH_PROPERTY(Name, Function) \
|
||||
D_DC(DXCBPlatformInterface); \
|
||||
QVariant value = d->theme->getSetting(QByteArrayLiteral(Name)); \
|
||||
if (d->fallbackProperty && !value.isValid() && d->parent) \
|
||||
return d->parent->Function(); \
|
||||
|
||||
#define FETCH_PROPERTY_WITH_ARGS(Name, Function, Args) \
|
||||
D_DC(DXCBPlatformInterface); \
|
||||
QVariant value = d->theme->getSetting(Name); \
|
||||
if (d->fallbackProperty && !value.isValid() && d->parent) \
|
||||
return d->parent->Function(Args); \
|
||||
|
||||
|
||||
DXCBPlatformInterfacePrivate::DXCBPlatformInterfacePrivate(DXCBPlatformInterface *qq)
|
||||
:DCORE_NAMESPACE::DObjectPrivate(qq)
|
||||
{
|
||||
}
|
||||
|
||||
void DXCBPlatformInterfacePrivate::_q_onThemePropertyChanged(const QByteArray &name, const QVariant &value)
|
||||
{
|
||||
D_Q(DXCBPlatformInterface);
|
||||
|
||||
// 转发属性变化的信号,此信号来源可能为parent theme或“非调色板”的属性变化。
|
||||
// 使用队列的形式转发,避免多次发出同样的信号
|
||||
// q->staticMetaObject.invokeMethod(q, "propertyChanged", Qt::QueuedConnection,
|
||||
// Q_ARG(const QByteArray&, name), Q_ARG(const QVariant&, value));
|
||||
|
||||
if (QByteArrayLiteral("Gtk/FontName") == name) {
|
||||
Q_EMIT q->m_platformTheme->gtkFontNameChanged(value.toByteArray());
|
||||
return;
|
||||
}
|
||||
|
||||
if (name.startsWith("Qt/DPI/")) {
|
||||
const QString &screen_name = QString::fromLocal8Bit(name.mid(7));
|
||||
|
||||
if (!screen_name.isEmpty()) {
|
||||
bool ok = false;
|
||||
int dpi = value.toInt(&ok);
|
||||
|
||||
Q_EMIT q->m_platformTheme->dotsPerInchChanged(screen_name, ok ? dpi : -1);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (QByteArrayLiteral("Xft/DPI") == name) {
|
||||
bool ok = false;
|
||||
int dpi = value.toInt(&ok);
|
||||
Q_EMIT q->m_platformTheme->dotsPerInchChanged(QString(), ok ? dpi : -1);
|
||||
}
|
||||
|
||||
const QByteArrayList &list = name.split('/');
|
||||
|
||||
if (list.count() != 2)
|
||||
return;
|
||||
|
||||
QByteArray pn = list.last();
|
||||
|
||||
if (pn.isEmpty())
|
||||
return;
|
||||
|
||||
|
||||
// 转换首字母为小写
|
||||
pn[0] = QChar(pn.at(0)).toLower().toLatin1();
|
||||
|
||||
// 直接使用静态的meta object,防止通过metaObject函数调用到dynamic metaobject
|
||||
const QMetaObject *mo = &DPlatformTheme::staticMetaObject;
|
||||
|
||||
int index = mo->indexOfProperty(pn.constData());
|
||||
|
||||
|
||||
if (index < 0)
|
||||
return;
|
||||
|
||||
const QMetaProperty &p = mo->property(index);
|
||||
bool is_parent_signal = q->sender() != theme;
|
||||
|
||||
// 当自己的属性有效时应该忽略父主题的属性变化信号,优先以自身的属性值为准。
|
||||
if (is_parent_signal && p.read(q).isValid()) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (p.hasNotifySignal()) {
|
||||
// invoke会做Q_ASSERT(mobj->cast(object))判断, DPlatformTheme的dynamic metaObject为
|
||||
// qt5platform-plugin插件的DNativeSettings. 导致崩溃.
|
||||
// invokeOnGadget与invoke代码逻辑一致, 只是少了异步支持.
|
||||
// return;
|
||||
|
||||
if (!p.notifySignal().invokeOnGadget(q->m_platformTheme, QGenericArgument(value.typeName(), value.constData())))
|
||||
qWarning() << "_q_onThemePropertyChanged() error when notify signal" << p.notifySignal().name();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
DXCBPlatformInterface::DXCBPlatformInterface(quint32 window, DPlatformTheme *platformTheme)
|
||||
: DPlatformInterface(platformTheme)
|
||||
, Core::DObject(*new DXCBPlatformInterfacePrivate(this))
|
||||
{
|
||||
D_D(DXCBPlatformInterface);
|
||||
|
||||
d->theme = new DNativeSettings(window, QByteArray(), platformTheme);
|
||||
|
||||
connect(d->theme, SIGNAL(propertyChanged(const QByteArray &, const QVariant &)),
|
||||
this, SLOT(_q_onThemePropertyChanged(const QByteArray &, const QVariant &)));
|
||||
}
|
||||
|
||||
int DXCBPlatformInterface::cursorBlinkTime() const
|
||||
{
|
||||
FETCH_PROPERTY("Net/CursorBlinkTime", cursorBlinkTime)
|
||||
|
||||
return value.toInt();
|
||||
}
|
||||
|
||||
int DXCBPlatformInterface::cursorBlinkTimeout() const
|
||||
{
|
||||
FETCH_PROPERTY("Net/CursorBlinkTimeout", cursorBlinkTimeout)
|
||||
|
||||
return value.toInt();
|
||||
}
|
||||
|
||||
bool DXCBPlatformInterface::cursorBlink() const
|
||||
{
|
||||
FETCH_PROPERTY("Net/CursorBlink", cursorBlink)
|
||||
|
||||
return value.toInt();
|
||||
}
|
||||
|
||||
int DXCBPlatformInterface::doubleClickDistance() const
|
||||
{
|
||||
FETCH_PROPERTY("Net/DoubleClickDistance", doubleClickDistance)
|
||||
|
||||
return value.toInt();
|
||||
}
|
||||
|
||||
int DXCBPlatformInterface::doubleClickTime() const
|
||||
{
|
||||
FETCH_PROPERTY("Net/DoubleClickTime", doubleClickTime)
|
||||
|
||||
return value.toInt();
|
||||
}
|
||||
|
||||
int DXCBPlatformInterface::dndDragThreshold() const
|
||||
{
|
||||
FETCH_PROPERTY("Net/DndDragThreshold", dndDragThreshold)
|
||||
|
||||
return value.toInt();
|
||||
}
|
||||
|
||||
int DXCBPlatformInterface::windowRadius() const
|
||||
{
|
||||
return windowRadius(-1);
|
||||
}
|
||||
|
||||
int DXCBPlatformInterface::windowRadius(int defaultValue) const
|
||||
{
|
||||
Q_D(const DXCBPlatformInterface);
|
||||
|
||||
QVariant value = d->theme->getSetting(QByteArrayLiteral("DTK/WindowRadius"));
|
||||
bool ok = false;
|
||||
|
||||
if (d->fallbackProperty && !value.isValid() && d->parent)
|
||||
return d->parent->windowRadius(defaultValue);
|
||||
|
||||
int radius = value.toInt(&ok);
|
||||
|
||||
return ok ? radius : defaultValue;
|
||||
}
|
||||
|
||||
QByteArray DXCBPlatformInterface::themeName() const
|
||||
{
|
||||
FETCH_PROPERTY("Net/ThemeName", themeName)
|
||||
|
||||
return value.toByteArray();
|
||||
}
|
||||
|
||||
QByteArray DXCBPlatformInterface::iconThemeName() const
|
||||
{
|
||||
FETCH_PROPERTY("Net/IconThemeName", iconThemeName)
|
||||
|
||||
return value.toByteArray();
|
||||
}
|
||||
|
||||
QByteArray DXCBPlatformInterface::soundThemeName() const
|
||||
{
|
||||
FETCH_PROPERTY("Net/SoundThemeName", soundThemeName)
|
||||
|
||||
return value.toByteArray();
|
||||
}
|
||||
|
||||
QByteArray DXCBPlatformInterface::fontName() const
|
||||
{
|
||||
FETCH_PROPERTY("Qt/FontName", fontName)
|
||||
|
||||
return value.toByteArray();
|
||||
}
|
||||
|
||||
QByteArray DXCBPlatformInterface::monoFontName() const
|
||||
{
|
||||
FETCH_PROPERTY("Qt/MonoFontName", monoFontName)
|
||||
|
||||
return value.toByteArray();
|
||||
}
|
||||
|
||||
qreal DXCBPlatformInterface::fontPointSize() const
|
||||
{
|
||||
FETCH_PROPERTY("Qt/FontPointSize", fontPointSize)
|
||||
|
||||
return value.toDouble();
|
||||
}
|
||||
|
||||
QByteArray DXCBPlatformInterface::gtkFontName() const
|
||||
{
|
||||
FETCH_PROPERTY("Gtk/FontName", gtkFontName)
|
||||
|
||||
return value.toByteArray();
|
||||
}
|
||||
|
||||
QColor DXCBPlatformInterface::activeColor() const
|
||||
{
|
||||
FETCH_PROPERTY("Qt/ActiveColor", activeColor)
|
||||
|
||||
return qvariant_cast<QColor>(value);
|
||||
}
|
||||
|
||||
QColor DXCBPlatformInterface::darkActiveColor() const
|
||||
{
|
||||
FETCH_PROPERTY("Qt/DarkActiveColor", darkActiveColor)
|
||||
|
||||
return qvariant_cast<QColor>(value);
|
||||
}
|
||||
|
||||
#if DTK_VERSION < DTK_VERSION_CHECK(6, 0, 0, 0)
|
||||
#define GET_COLOR(Role) qvariant_cast<QColor>(getSetting(QByteArrayLiteral(#Role)))
|
||||
static QColor getSetting(const QByteArray &key)
|
||||
{
|
||||
Q_UNUSED(key);
|
||||
qWarning() << "Not implemented, key:" << key;
|
||||
return {};
|
||||
}
|
||||
QColor DXCBPlatformInterface::window() const
|
||||
{
|
||||
return GET_COLOR(window);
|
||||
}
|
||||
|
||||
QColor DXCBPlatformInterface::windowText() const
|
||||
{
|
||||
return GET_COLOR(windowText);
|
||||
}
|
||||
|
||||
QColor DXCBPlatformInterface::base() const
|
||||
{
|
||||
return GET_COLOR(base);
|
||||
}
|
||||
|
||||
QColor DXCBPlatformInterface::alternateBase() const
|
||||
{
|
||||
return GET_COLOR(alternateBase);
|
||||
}
|
||||
|
||||
QColor DXCBPlatformInterface::toolTipBase() const
|
||||
{
|
||||
return GET_COLOR(toolTipBase);
|
||||
}
|
||||
|
||||
QColor DXCBPlatformInterface::toolTipText() const
|
||||
{
|
||||
return GET_COLOR(toolTipText);
|
||||
}
|
||||
|
||||
QColor DXCBPlatformInterface::text() const
|
||||
{
|
||||
return GET_COLOR(text);
|
||||
}
|
||||
|
||||
QColor DXCBPlatformInterface::button() const
|
||||
{
|
||||
return GET_COLOR(button);
|
||||
}
|
||||
|
||||
QColor DXCBPlatformInterface::buttonText() const
|
||||
{
|
||||
return GET_COLOR(buttonText);
|
||||
}
|
||||
|
||||
QColor DXCBPlatformInterface::brightText() const
|
||||
{
|
||||
return GET_COLOR(brightText);
|
||||
}
|
||||
|
||||
QColor DXCBPlatformInterface::light() const
|
||||
{
|
||||
return GET_COLOR(light);
|
||||
}
|
||||
|
||||
QColor DXCBPlatformInterface::midlight() const
|
||||
{
|
||||
return GET_COLOR(midlight);
|
||||
}
|
||||
|
||||
QColor DXCBPlatformInterface::dark() const
|
||||
{
|
||||
return GET_COLOR(dark);
|
||||
}
|
||||
|
||||
QColor DXCBPlatformInterface::mid() const
|
||||
{
|
||||
return GET_COLOR(mid);
|
||||
}
|
||||
|
||||
QColor DXCBPlatformInterface::shadow() const
|
||||
{
|
||||
return GET_COLOR(shadow);
|
||||
}
|
||||
|
||||
QColor DXCBPlatformInterface::highlight() const
|
||||
{
|
||||
return GET_COLOR(highlight);
|
||||
}
|
||||
|
||||
QColor DXCBPlatformInterface::highlightedText() const
|
||||
{
|
||||
return GET_COLOR(highlightedText);
|
||||
}
|
||||
|
||||
QColor DXCBPlatformInterface::link() const
|
||||
{
|
||||
return GET_COLOR(link);
|
||||
}
|
||||
|
||||
QColor DXCBPlatformInterface::linkVisited() const
|
||||
{
|
||||
return GET_COLOR(linkVisited);
|
||||
}
|
||||
|
||||
QColor DXCBPlatformInterface::itemBackground() const
|
||||
{
|
||||
return GET_COLOR(itemBackground);
|
||||
}
|
||||
|
||||
QColor DXCBPlatformInterface::textTitle() const
|
||||
{
|
||||
return GET_COLOR(textTitle);
|
||||
}
|
||||
|
||||
QColor DXCBPlatformInterface::textTips() const
|
||||
{
|
||||
return GET_COLOR(textTips);
|
||||
}
|
||||
|
||||
QColor DXCBPlatformInterface::textWarning() const
|
||||
{
|
||||
return GET_COLOR(textWarning);
|
||||
}
|
||||
|
||||
QColor DXCBPlatformInterface::textLively() const
|
||||
{
|
||||
return GET_COLOR(textLively);
|
||||
}
|
||||
|
||||
QColor DXCBPlatformInterface::lightLively() const
|
||||
{
|
||||
return GET_COLOR(lightLively);
|
||||
}
|
||||
|
||||
QColor DXCBPlatformInterface::darkLively() const
|
||||
{
|
||||
return GET_COLOR(darkLively);
|
||||
}
|
||||
|
||||
QColor DXCBPlatformInterface::frameBorder() const
|
||||
{
|
||||
return GET_COLOR(frameBorder);
|
||||
}
|
||||
#endif
|
||||
|
||||
int DXCBPlatformInterface::dotsPerInch(const QString &screenName) const
|
||||
{
|
||||
bool ok = false;
|
||||
|
||||
if (!screenName.isEmpty()) {
|
||||
FETCH_PROPERTY_WITH_ARGS("Qt/DPI/" + screenName.toLocal8Bit(), dotsPerInch, screenName);
|
||||
int dpi = value.toInt(&ok);
|
||||
|
||||
if (ok)
|
||||
return dpi;
|
||||
}
|
||||
|
||||
FETCH_PROPERTY_WITH_ARGS("Xft/DPI", dotsPerInch, screenName);
|
||||
int dpi = value.toInt(&ok);
|
||||
return ok ? dpi : -1;
|
||||
}
|
||||
|
||||
/*!
|
||||
\property DXCBPlatformInterface::sizeMode
|
||||
\brief This property holds the sizeMode of the system's SizeMode.
|
||||
*/
|
||||
int DXCBPlatformInterface::sizeMode() const
|
||||
{
|
||||
D_DC(DXCBPlatformInterface);
|
||||
QVariant value = d->theme->getSetting(QByteArrayLiteral("DTK/SizeMode"));
|
||||
return value.toInt();
|
||||
}
|
||||
|
||||
/*!
|
||||
\property DXCBPlatformInterface::scrollBarPolicy
|
||||
\brief This property holds the scrollBarPolicy of the system. same as Qt::ScrollBarPolicy
|
||||
\retval 0 show as needed auto hide, default
|
||||
\retval 1 always off
|
||||
\retval 2 always on
|
||||
*/
|
||||
int DXCBPlatformInterface::scrollBarPolicy() const
|
||||
{
|
||||
FETCH_PROPERTY("Qt/ScrollBarPolicy", scrollBarPolicy)
|
||||
|
||||
return qvariant_cast<int>(value);
|
||||
}
|
||||
|
||||
void DXCBPlatformInterface::setCursorBlinkTime(int cursorBlinkTime)
|
||||
{
|
||||
D_D(DXCBPlatformInterface);
|
||||
|
||||
d->theme->setSetting("Net/CursorBlinkTime", cursorBlinkTime);
|
||||
}
|
||||
|
||||
void DXCBPlatformInterface::setCursorBlinkTimeout(int cursorBlinkTimeout)
|
||||
{
|
||||
D_D(DXCBPlatformInterface);
|
||||
|
||||
d->theme->setSetting("Net/CursorBlinkTimeout", cursorBlinkTimeout);
|
||||
}
|
||||
|
||||
void DXCBPlatformInterface::setCursorBlink(bool cursorBlink)
|
||||
{
|
||||
D_D(DXCBPlatformInterface);
|
||||
|
||||
d->theme->setSetting("Net/CursorBlink", cursorBlink);
|
||||
}
|
||||
|
||||
void DXCBPlatformInterface::setDoubleClickDistance(int doubleClickDistance)
|
||||
{
|
||||
D_D(DXCBPlatformInterface);
|
||||
|
||||
d->theme->setSetting("Net/DoubleClickDistance", doubleClickDistance);
|
||||
}
|
||||
|
||||
void DXCBPlatformInterface::setDoubleClickTime(int doubleClickTime)
|
||||
{
|
||||
D_D(DXCBPlatformInterface);
|
||||
|
||||
d->theme->setSetting("Net/DoubleClickTime", doubleClickTime);
|
||||
}
|
||||
|
||||
void DXCBPlatformInterface::setDndDragThreshold(int dndDragThreshold)
|
||||
{
|
||||
D_D(DXCBPlatformInterface);
|
||||
|
||||
d->theme->setSetting("Net/DndDragThreshold", dndDragThreshold);
|
||||
}
|
||||
|
||||
void DXCBPlatformInterface::setThemeName(const QByteArray &themeName)
|
||||
{
|
||||
D_D(DXCBPlatformInterface);
|
||||
|
||||
d->theme->setSetting("Net/ThemeName", themeName);
|
||||
}
|
||||
|
||||
void DXCBPlatformInterface::setIconThemeName(const QByteArray &iconThemeName)
|
||||
{
|
||||
D_D(DXCBPlatformInterface);
|
||||
|
||||
d->theme->setSetting("Net/IconThemeName", iconThemeName);
|
||||
}
|
||||
|
||||
void DXCBPlatformInterface::setSoundThemeName(const QByteArray &soundThemeName)
|
||||
{
|
||||
D_D(DXCBPlatformInterface);
|
||||
|
||||
d->theme->setSetting("Net/SoundThemeName", soundThemeName);
|
||||
}
|
||||
|
||||
void DXCBPlatformInterface::setFontName(const QByteArray &fontName)
|
||||
{
|
||||
D_D(DXCBPlatformInterface);
|
||||
|
||||
d->theme->setSetting("Qt/FontName", fontName);
|
||||
}
|
||||
|
||||
void DXCBPlatformInterface::setMonoFontName(const QByteArray &monoFontName)
|
||||
{
|
||||
D_D(DXCBPlatformInterface);
|
||||
|
||||
d->theme->setSetting("Qt/MonoFontName", monoFontName);
|
||||
}
|
||||
|
||||
void DXCBPlatformInterface::setFontPointSize(qreal fontPointSize)
|
||||
{
|
||||
D_D(DXCBPlatformInterface);
|
||||
|
||||
d->theme->setSetting("Qt/FontPointSize", fontPointSize);
|
||||
}
|
||||
|
||||
void DXCBPlatformInterface::setGtkFontName(const QByteArray &fontName)
|
||||
{
|
||||
D_D(DXCBPlatformInterface);
|
||||
|
||||
d->theme->setSetting("Gtk/FontName", fontName);
|
||||
}
|
||||
|
||||
void DXCBPlatformInterface::setActiveColor(const QColor activeColor)
|
||||
{
|
||||
D_D(DXCBPlatformInterface);
|
||||
|
||||
d->theme->setSetting("Qt/ActiveColor", activeColor);
|
||||
}
|
||||
|
||||
void DXCBPlatformInterface::setDarkActiveColor(const QColor &activeColor)
|
||||
{
|
||||
D_D(DXCBPlatformInterface);
|
||||
|
||||
d->theme->setSetting("Qt/DarkActiveColor", activeColor);
|
||||
}
|
||||
|
||||
#if DTK_VERSION < DTK_VERSION_CHECK(6, 0, 0, 0)
|
||||
#define SET_COLOR(Role) setSetting(QByteArrayLiteral(#Role), Role)
|
||||
static void setSetting(const QByteArray &key, const QColor &color)
|
||||
{
|
||||
Q_UNUSED(key);
|
||||
Q_UNUSED(color);
|
||||
qWarning() << "Not implemented, key: " << key << "value: " << color;
|
||||
}
|
||||
void DXCBPlatformInterface::setWindow(const QColor &window)
|
||||
{
|
||||
SET_COLOR(window);
|
||||
}
|
||||
|
||||
void DXCBPlatformInterface::setWindowText(const QColor &windowText)
|
||||
{
|
||||
SET_COLOR(windowText);
|
||||
}
|
||||
|
||||
void DXCBPlatformInterface::setBase(const QColor &base)
|
||||
{
|
||||
SET_COLOR(base);
|
||||
}
|
||||
|
||||
void DXCBPlatformInterface::setAlternateBase(const QColor &alternateBase)
|
||||
{
|
||||
SET_COLOR(alternateBase);
|
||||
}
|
||||
|
||||
void DXCBPlatformInterface::setToolTipBase(const QColor &toolTipBase)
|
||||
{
|
||||
SET_COLOR(toolTipBase);
|
||||
}
|
||||
|
||||
void DXCBPlatformInterface::setToolTipText(const QColor &toolTipText)
|
||||
{
|
||||
SET_COLOR(toolTipText);
|
||||
}
|
||||
|
||||
void DXCBPlatformInterface::setText(const QColor &text)
|
||||
{
|
||||
SET_COLOR(text);
|
||||
}
|
||||
|
||||
void DXCBPlatformInterface::setButton(const QColor &button)
|
||||
{
|
||||
SET_COLOR(button);
|
||||
}
|
||||
|
||||
void DXCBPlatformInterface::setButtonText(const QColor &buttonText)
|
||||
{
|
||||
SET_COLOR(buttonText);
|
||||
}
|
||||
|
||||
void DXCBPlatformInterface::setBrightText(const QColor &brightText)
|
||||
{
|
||||
SET_COLOR(brightText);
|
||||
}
|
||||
|
||||
void DXCBPlatformInterface::setLight(const QColor &light)
|
||||
{
|
||||
SET_COLOR(light);
|
||||
}
|
||||
|
||||
void DXCBPlatformInterface::setMidlight(const QColor &midlight)
|
||||
{
|
||||
SET_COLOR(midlight);
|
||||
}
|
||||
|
||||
void DXCBPlatformInterface::setDark(const QColor &dark)
|
||||
{
|
||||
SET_COLOR(dark);
|
||||
}
|
||||
|
||||
void DXCBPlatformInterface::setMid(const QColor &mid)
|
||||
{
|
||||
SET_COLOR(mid);
|
||||
}
|
||||
|
||||
void DXCBPlatformInterface::setShadow(const QColor &shadow)
|
||||
{
|
||||
SET_COLOR(shadow);
|
||||
}
|
||||
|
||||
void DXCBPlatformInterface::setHighlight(const QColor &highlight)
|
||||
{
|
||||
SET_COLOR(highlight);
|
||||
}
|
||||
|
||||
void DXCBPlatformInterface::setHighlightedText(const QColor &highlightText)
|
||||
{
|
||||
SET_COLOR(highlightText);
|
||||
}
|
||||
|
||||
void DXCBPlatformInterface::setLink(const QColor &link)
|
||||
{
|
||||
SET_COLOR(link);
|
||||
}
|
||||
|
||||
void DXCBPlatformInterface::setLinkVisited(const QColor &linkVisited)
|
||||
{
|
||||
SET_COLOR(linkVisited);
|
||||
}
|
||||
|
||||
void DXCBPlatformInterface::setItemBackground(const QColor &itemBackground)
|
||||
{
|
||||
SET_COLOR(itemBackground);
|
||||
}
|
||||
|
||||
void DXCBPlatformInterface::setTextTitle(const QColor &textTitle)
|
||||
{
|
||||
SET_COLOR(textTitle);
|
||||
}
|
||||
|
||||
void DXCBPlatformInterface::setTextTips(const QColor &textTips)
|
||||
{
|
||||
SET_COLOR(textTips);
|
||||
}
|
||||
|
||||
void DXCBPlatformInterface::setTextWarning(const QColor &textWarning)
|
||||
{
|
||||
SET_COLOR(textWarning);
|
||||
}
|
||||
|
||||
void DXCBPlatformInterface::setTextLively(const QColor &textLively)
|
||||
{
|
||||
SET_COLOR(textLively);
|
||||
}
|
||||
|
||||
void DXCBPlatformInterface::setLightLively(const QColor &lightLively)
|
||||
{
|
||||
SET_COLOR(lightLively);
|
||||
}
|
||||
|
||||
void DXCBPlatformInterface::setDarkLively(const QColor &darkLively)
|
||||
{
|
||||
SET_COLOR(darkLively);
|
||||
}
|
||||
|
||||
void DXCBPlatformInterface::setFrameBorder(const QColor &frameBorder)
|
||||
{
|
||||
SET_COLOR(frameBorder);
|
||||
}
|
||||
#endif
|
||||
|
||||
void DXCBPlatformInterface::setDotsPerInch(const QString &screenName, int dpi)
|
||||
{
|
||||
D_D(DXCBPlatformInterface);
|
||||
|
||||
if (screenName.isEmpty()) {
|
||||
d->theme->setSetting("Xft/DPI", dpi);
|
||||
} else {
|
||||
d->theme->setSetting("Qt/DPI/" + screenName.toLocal8Bit(), dpi);
|
||||
}
|
||||
}
|
||||
|
||||
void DXCBPlatformInterface::setWindowRadius(int windowRadius)
|
||||
{
|
||||
D_D(DXCBPlatformInterface);
|
||||
|
||||
d->theme->setSetting("DTK/WindowRadius", windowRadius);
|
||||
}
|
||||
|
||||
DGUI_END_NAMESPACE
|
||||
|
||||
#include "moc_dxcbplatforminterface.cpp"
|
||||
|
|
@ -0,0 +1,131 @@
|
|||
// SPDX-FileCopyrightText: 2024 UnionTech Software Technology Co., Ltd.
|
||||
//
|
||||
// SPDX-License-Identifier: LGPL-3.0-or-later
|
||||
|
||||
#ifndef DXCBPLATFORMINTERFACE_H
|
||||
#define DXCBPLATFORMINTERFACE_H
|
||||
|
||||
#include "private/dplatforminterface_p.h"
|
||||
|
||||
#include <DObject>
|
||||
|
||||
DGUI_BEGIN_NAMESPACE
|
||||
|
||||
class DXCBPlatformInterfacePrivate;
|
||||
class DXCBPlatformInterface : public QObject, public DPlatformInterface, public DCORE_NAMESPACE::DObject
|
||||
{
|
||||
Q_OBJECT
|
||||
D_DECLARE_PRIVATE(DXCBPlatformInterface)
|
||||
public:
|
||||
explicit DXCBPlatformInterface(quint32 window, DPlatformTheme *platformTheme);
|
||||
|
||||
int cursorBlinkTime() const override;
|
||||
int cursorBlinkTimeout() const override;
|
||||
bool cursorBlink() const override;
|
||||
int doubleClickDistance() const override;
|
||||
int doubleClickTime() const override;
|
||||
int dndDragThreshold() const override;
|
||||
int windowRadius() const override;
|
||||
int windowRadius(int defaultValue) const override;
|
||||
QByteArray themeName() const override;
|
||||
QByteArray iconThemeName() const override;
|
||||
QByteArray soundThemeName() const override;
|
||||
|
||||
QByteArray fontName() const override;
|
||||
QByteArray monoFontName() const override;
|
||||
qreal fontPointSize() const override;
|
||||
QByteArray gtkFontName() const override;
|
||||
|
||||
QColor activeColor() const override;
|
||||
QColor darkActiveColor() const override;
|
||||
|
||||
#if DTK_VERSION < DTK_VERSION_CHECK(6, 0, 0, 0)
|
||||
QColor window() const override;
|
||||
QColor windowText() const override;
|
||||
QColor base() const override;
|
||||
QColor alternateBase() const override;
|
||||
QColor toolTipText() const override;
|
||||
QColor toolTipBase() const override;
|
||||
QColor text() const override;
|
||||
QColor button() const override;
|
||||
QColor buttonText() const override;
|
||||
QColor brightText() const override;
|
||||
QColor light() const override;
|
||||
QColor midlight() const override;
|
||||
QColor dark() const override;
|
||||
QColor mid() const override;
|
||||
QColor shadow() const override;
|
||||
QColor highlight() const override;
|
||||
QColor highlightedText() const override;
|
||||
QColor link() const override;
|
||||
QColor linkVisited() const override;
|
||||
QColor itemBackground() const override;
|
||||
QColor textTitle() const override;
|
||||
QColor textTips() const override;
|
||||
QColor textWarning() const override;
|
||||
QColor textLively() const override;
|
||||
QColor lightLively() const override;
|
||||
QColor darkLively() const override;
|
||||
QColor frameBorder() const override;
|
||||
#endif
|
||||
|
||||
int sizeMode() const override;
|
||||
int scrollBarPolicy() const override;
|
||||
|
||||
public Q_SLOTS:
|
||||
void setCursorBlinkTime(int cursorBlinkTime) override;
|
||||
void setCursorBlinkTimeout(int cursorBlinkTimeout) override;
|
||||
void setCursorBlink(bool cursorBlink) override;
|
||||
void setDoubleClickDistance(int doubleClickDistance) override;
|
||||
void setDoubleClickTime(int doubleClickTime) override;
|
||||
void setDndDragThreshold(int dndDragThreshold) override;
|
||||
void setThemeName(const QByteArray &themeName) override;
|
||||
void setIconThemeName(const QByteArray &iconThemeName) override;
|
||||
void setSoundThemeName(const QByteArray &soundThemeName) override;
|
||||
void setFontName(const QByteArray &fontName) override;
|
||||
void setMonoFontName(const QByteArray &monoFontName) override;
|
||||
void setFontPointSize(qreal fontPointSize) override;
|
||||
void setGtkFontName(const QByteArray &fontName) override;
|
||||
void setActiveColor(const QColor activeColor) override;
|
||||
void setDarkActiveColor(const QColor &activeColor) override;
|
||||
#if DTK_VERSION < DTK_VERSION_CHECK(6, 0, 0, 0)
|
||||
void setWindow(const QColor &window) override;
|
||||
void setWindowText(const QColor &windowText) override;
|
||||
void setBase(const QColor &base) override;
|
||||
void setAlternateBase(const QColor &alternateBase) override;
|
||||
void setToolTipBase(const QColor &toolTipBase) override;
|
||||
void setToolTipText(const QColor &toolTipText) override;
|
||||
void setText(const QColor &text) override;
|
||||
void setButton(const QColor &button) override;
|
||||
void setButtonText(const QColor &buttonText) override;
|
||||
void setBrightText(const QColor &brightText) override;
|
||||
void setLight(const QColor &light) override;
|
||||
void setMidlight(const QColor &midlight) override;
|
||||
void setDark(const QColor &dark) override;
|
||||
void setMid(const QColor &mid) override;
|
||||
void setShadow(const QColor &shadow) override;
|
||||
void setHighlight(const QColor &highlight) override;
|
||||
void setHighlightedText(const QColor &highlightedText) override;
|
||||
void setLink(const QColor &link) override;
|
||||
void setLinkVisited(const QColor &linkVisited) override;
|
||||
void setItemBackground(const QColor &itemBackground) override;
|
||||
void setTextTitle(const QColor &textTitle) override;
|
||||
void setTextTips(const QColor &textTips) override;
|
||||
void setTextWarning(const QColor &textWarning) override;
|
||||
void setTextLively(const QColor &textLively) override;
|
||||
void setLightLively(const QColor &lightLively) override;
|
||||
void setDarkLively(const QColor &darkLively) override;
|
||||
void setFrameBorder(const QColor &frameBorder) override;
|
||||
#endif
|
||||
|
||||
int dotsPerInch(const QString &screenName = QString()) const override;
|
||||
void setDotsPerInch(const QString &screenName, int dpi) override;
|
||||
void setWindowRadius(int windowRadius) override;
|
||||
|
||||
private:
|
||||
friend class DPlatformThemePrivate;
|
||||
D_PRIVATE_SLOT(void _q_onThemePropertyChanged(const QByteArray &name, const QVariant &value))
|
||||
};
|
||||
|
||||
DGUI_END_NAMESPACE
|
||||
#endif // DXCBPLATFORMINTERFACE_H
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
// SPDX-FileCopyrightText: 2024 UnionTech Software Technology Co., Ltd.
|
||||
//
|
||||
// SPDX-License-Identifier: LGPL-3.0-or-later
|
||||
|
||||
#ifndef DXCBPLATFORMINTERFACE_P_H
|
||||
#define DXCBPLATFORMINTERFACE_P_H
|
||||
|
||||
#include "dxcbplatforminterface.h"
|
||||
#include "private/dplatforminterface_p.h"
|
||||
|
||||
#include <QHash>
|
||||
#include <DObjectPrivate>
|
||||
|
||||
DGUI_BEGIN_NAMESPACE
|
||||
|
||||
class DNativeSettings;
|
||||
class DPlatformTheme;
|
||||
|
||||
class DXCBPlatformInterfacePrivate : public DCORE_NAMESPACE::DObjectPrivate
|
||||
{
|
||||
public:
|
||||
D_DECLARE_PUBLIC(DXCBPlatformInterface)
|
||||
DXCBPlatformInterfacePrivate(DXCBPlatformInterface *qq);
|
||||
|
||||
void _q_onThemePropertyChanged(const QByteArray &name, const QVariant &value);
|
||||
|
||||
public:
|
||||
DPlatformTheme *parent = nullptr;
|
||||
bool fallbackProperty = true;
|
||||
DNativeSettings *theme;
|
||||
QHash<QString, QString> m_properties;
|
||||
};
|
||||
|
||||
DGUI_END_NAMESPACE
|
||||
|
||||
#endif // DNATIVESETTINGS_P_H
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue