Compare commits

...

515 Commits

Author SHA1 Message Date
jingshenghao
a90f386ddc feat: Add files generated by qdbusXML2cpp and DCONG2cpp
Add files generated by qdbusXML2cpp and DCONG2cpp

Log: Add files generated by qdbusXML2cpp and DCONG2cpp
2025-01-14 19:32:23 +08:00
deepin-admin-bot
13c4162b5e chore: Sync by 3ab9683b84
sync by github workflow

Log: none
Influence: none
2024-06-19 07:24:54 +00:00
deepin-admin-bot
32140ccf26 chore: Sync by b7b12fd4a9
sync by github workflow

Log: none
Influence: none
2024-06-13 03:00:01 +00:00
Hillwood Yang
697e678587
fix: Need link Xcursor for shutdown plugin (#993)
Log: fix build error on openSUSE
2024-04-17 13:56:34 +08:00
ck
b2da5add21 chore: bump version to 6.0.37
release 6.0.37

Log: bump version to 6.0.37
2024-04-17 09:51:20 +08:00
ck
a15d92c7eb fix: wine app menu obscured by popup widget
remove ToolTip windowflag

Issue: https://github.com/linuxdeepin/developer-center/issues/7612
Bug: https://pms.uniontech.com/bug-view-239173.html
2024-03-28 12:05:23 +08:00
tsic404
00d0f13c1a fix: duplicate tray for some app
some gtk apps use libayatana-appindicator create tray will create xembed and sni duplicate tray
not show sni tray which path contains /org/ayatana/NotificationItem/ created by ayatana-appindicator

log: not show ayatana-appindicator sni tray on xorg
2024-03-26 10:58:44 +08:00
ck
32bd005492 chore: bump version 6.0.36
bump version 6.0.36
2024-03-12 13:10:46 +08:00
ck
3eb95284a0 fix: dcc-dock-plugin icon tweak
控制中心中dock的插件统一混合颜色
暗色主题时填充白色,浅色主题填充黑色

Issue: https://github.com/linuxdeepin/developer-center/issues/6454
2024-03-04 14:52:03 +08:00
ck
1653473ecc fix: bluetooth quick-trays item icon tweak
快捷面板中蓝牙图标和网络插件保持一致
- 大小一致 24x24
- 选中时高亮色填充
- 圆图标

Issue: https://github.com/linuxdeepin/developer-center/issues/7207
2024-02-22 09:34:32 +08:00
zsien
0f940b6579 fix: popup panel cannot be opened when clicking the labels
Issues: linuxdeepin/developer-center#7222
2024-02-02 13:00:44 +08:00
tsic404
72f4286f49 chore: bump version 6.0.35
bump version 6.0.35

log: as title
2024-02-02 10:54:42 +08:00
tsic404
e8e0f3c96f chore: adjust dock ui
1. adjust dock window space to 10
2. make traymainwindow contentsMagins to fixed value
3. make trycontrolpanel background color alpha
4. remove space between fullscreen and dock
5. set border for quick panel items
6. adjust standitem icon and text space
7. adjust sliderContainer icon background color

log: as title
2024-02-02 10:54:42 +08:00
tsic404
48cced00a9 chore: release version 6.0.34
log: as title
2024-01-30 17:34:46 +08:00
tsic404
edea9b860d fix: dock item indicator not update
update dock item position

log: as title
issue: https://github.com/linuxdeepin/developer-center/issues/7097
2024-01-30 08:39:06 +00:00
tsic404
710a9f562b fix: dock plugin unable to click when in keep hide
make dock not hide when click plugin and popup show even in keep hide mode

log: as title
issue: https://github.com/linuxdeepin/developer-center/issues/7132
2024-01-30 16:26:31 +08:00
chenhongtao
478f564631 fix: dock will not auto hide after set size
Issue: https://github.com/linuxdeepin/developer-center/issues/7129
Log:
2024-01-30 08:21:33 +00:00
chenhongtao
241e668ea2 fix: dock animation broken
Issue: https://github.com/linuxdeepin/developer-center/issues/7143
Log:
2024-01-30 16:08:38 +08:00
tsic404
e6e8995e51 fix: dock plugin calculated to an incorrect size
set minSize only for uosai

log: as title
issue: https://github.com/linuxdeepin/developer-center/issues/7127
2024-01-30 08:04:02 +00:00
tsic404
2b81011b7e chore: bump version 6.0.33
bump version 6.0.33

log: as title
2024-01-30 14:07:51 +08:00
tsic404
2bb5e49cac chore: bump version 6.0.32
bump version 6.0.32

log: as title
2024-01-26 14:29:51 +08:00
tsic404
b4ec458dd5 fix: tmp blocked uosai plugin in quickpanel
log: as title
2024-01-26 14:22:12 +08:00
tsic404
572c0c8aad fix: dock theme not follow system
reset dock dapplication palettetype to 0

log: as title
issue: https://github.com/linuxdeepin/developer-center/issues/7090
2024-01-25 08:01:44 +00:00
tsic404
c0c909f9e8 fix: dock get max size when positionChanged and KeepHide mode
no one update hideState properties in taskmanager and
not update dockSize when dock is in hide state by resetDragWindow call

log: as title
issue: https://github.com/linuxdeepin/developer-center/issues/7040
2024-01-25 14:23:18 +08:00
tsic404
8b04a51b51 fix: dock not remove plugin when fcitx exit
rowCountChanged signal not send

log: send rowCountChanged signal
issue: https://github.com/linuxdeepin/developer-center/issues/7080
2024-01-25 14:04:52 +08:00
tsic404
d1f61330f3 chore: release 6.0.31
release 6.0.31

log: as title
2024-01-24 07:28:21 +00:00
tsic404
7097ae7f3c fix: error datetime tooltip
issue: https://github.com/linuxdeepin/developer-center/issues/7056
log: correct longtimeformat and timeformat str
2024-01-23 09:43:02 +00:00
tsic404
3939ca9c12 fix: unable get docked entriy by soft link path
set canonicalFilePath instead of absoluteFilePath for deskfileinfo
and find it by canonicalFilePath instead of user input path

log: use canonicalFilePath instead of absoluteFilePath
2024-01-23 09:43:02 +00:00
chenhongtao
0300e28332 chore: bump version to 6.0.30
Log:
2024-01-23 07:49:39 +00:00
chenhongtao
13b1e661ea chore: update translations
Log:
2024-01-23 06:51:20 +00:00
chenhongtao
b5399bd0ec chore: bring back display setting button
Log:
2024-01-23 06:37:24 +00:00
chenhongtao
945bb03a27 chore: remove Cooperation in display plugin
Issue: linuxdeepin/developer-center#7023
Log:
2024-01-22 09:26:03 +00:00
chenhongtao
0f93647736 chore: bump version to 6.0.29
Log:
2024-01-22 05:48:38 +00:00
chenhongtao
ca4408c660 fix: when dconfig no value, use system format
Log:
2024-01-19 13:37:21 +00:00
tsic404
ee030a6505 chore: release 6.0.28
release 6.0.28

log: as title
2024-01-18 08:20:53 +00:00
Yixue Wang
326f510e4e fix: disable resize of dock popup window
Use setFixedSize instead of resize so that dock popup window is not
resizable.

Log: disable resize of dock popup window
Issue: https://github.com/linuxdeepin/developer-center/issues/6264
2024-01-18 13:09:15 +08:00
tsic404
27e1493982 fix: no one call bamf
try to call bamf

log: as title
2024-01-18 02:00:46 +00:00
wangfei
3a5438b399 fix: the item that removed is exist yet
undock items that removed

Issus: https://github.com/linuxdeepin/developer-center/issues/4631
2024-01-17 09:41:37 +08:00
Yixue Wang
e47a6dfb80 fix: dock wakeup area not changed
When dock is hidden, position change through DBus will not change
frontend rect, thus not update wakeup area. This is because position
in WindowManager is not changed. Emit positionChanged signal in
MultiScreenWorker.

Log: fix dock wakeup area not changed
Issue: https://github.com/linuxdeepin/developer-center/issues/5831
2024-01-16 16:47:11 +08:00
tsic404
b74544aa23 fix: onboard not to show on first click
tray to call show when onboard not launched

log: as title
issue: https://github.com/linuxdeepin/developer-center/issues/6675
2024-01-15 13:32:58 +08:00
Yixue Wang
3b567d096e feat: add dbus property window margin
Add dbus property WindowMargin for other application to calculate
the real exclusiveArea.

Log: add dbus property window margin
2024-01-12 17:56:26 +08:00
dengbo
6b0fec0426 fix: timedate tips show error
timedate tips should bind region format

Log:
2024-01-12 17:24:58 +08:00
chenhongtao
f4a40f36b8 fix: quickpanel icon not follow theme
update quickItem when theme changed

Log:
2024-01-12 06:01:25 +00:00
tsic404
556ea5acf8 chore: release 6.0.27
bump version 6.0.27

log: as title
2024-01-11 17:38:37 +08:00
tsic404
31e149d3d2 fix: dock get stucked when launching
org.ayatana.bamf dbus will get into stucked, so only call it when it's ready

log: only call org.ayatana.bamf when it's ready
issue: https://github.com/linuxdeepin/developer-center/issues/6657
2024-01-10 17:37:06 +08:00
Yixue Wang
a222173da6 fix: item menu may be empty due to error
Parsing item context menu may fail, always check context menu in
mousePressEvent.

Log: fix item menu may be empty due to error
2024-01-10 16:17:20 +08:00
Yixue Wang
01e2377d86 fix: notification tips label and context menu
Add notification settings action. Notification tips label will display
notification count.

Log: fix notification tips label and context menu
2024-01-10 14:01:36 +08:00
ck
263e5a4358 chore: uosai default show on dock (#6486)
Issue: https://github.com/linuxdeepin/developer-center/issues/6486
2024-01-09 17:31:30 +08:00
Yixue Wang
12d346a2c9 fix: cross-thread parenting failure
Cannot create a child in another thread. Do not use object tree, use
QScopedPointer to manage life scope.

Log: fix cross-thread parenting failure
2024-01-09 03:25:28 +00:00
tsic404
bce2a49971 feat: open deepin-calendar instead of dde-widgets when click timedate
call com.deepin.Calendar dbus instead org.deepin.dde.Widgets1

log: as title
2024-01-09 03:17:46 +00:00
Yixue Wang
2a5a1e0efb fix: item context menu not updated
Item context menu is not updated when plugin item request update.

Log: fix item context menu not updated
2024-01-08 16:01:15 +08:00
Yixue Wang
4eecd92395 feat: add plugin notification
Add plugin notification to show notification center. Notification is a
fixed plugin.

Log: add plugin notification
Issue: https://github.com/linuxdeepin/developer-center/issues/6695
2024-01-08 13:41:32 +08:00
Yixue Wang
cf909cd4d7 fix: mainwindow hide when popup opens
MainWindow should not hide when popup opens and the focus is still
on dock even if HideMode is AlwaysHide. Let popup block hiding of
mainwindow.

Log: fix mainwindow hide when popup opens
Issue: https://github.com/linuxdeepin/developer-center/issues/4970
2024-01-04 18:16:11 +08:00
Yixue Wang
107e7427d6 chore: correct indentation
Correct indentation to 4 spaces.

Log: correct indentation
2024-01-04 16:49:51 +08:00
Yixue Wang
79efd518a9 chore: correct typo
Correct typo founded to found.

Log: correct typo
2024-01-04 16:49:51 +08:00
Yixue Wang
6c492486a5 optimize: use invokeMethod instead of singleShot
Use invokeMethod to invoke method in event loop later.

Log: use invokeMethod instead of singleShot
2024-01-04 16:49:51 +08:00
ck
a3499fcf34 chore: bump version to 6.0.26
Relase 6.0.26
2024-01-04 14:29:18 +08:00
ck
e0ac1f9562 chore: update translations
unknown
2024-01-04 14:29:18 +08:00
ck
e02ff1ac53 chore: add fallback media info
如果没有提供默认专辑和歌手信息图标等返回一个默认的图标和文字
如 firefox 播放酷狗音乐只有一个title,其他歌曲信息都没的

Issue: https://github.com/linuxdeepin/developer-center/issues/5786,https://github.com/linuxdeepin/developer-center/issues/4331
2023-12-28 16:38:19 +08:00
ck
d765d60b22 fix: 任务栏媒体播放插件异常
关闭一个播放器后无法再次控制剩余的播放器
记录所有的播放器控制接口,退出一个后回退到上一个播放器控制

Issue: https://github.com/linuxdeepin/developer-center/issues/5719
2023-12-28 16:38:19 +08:00
ck
dab0083dcd fix: item hight error when turn off bluetooth
关闭蓝牙后还会收到上一个操作的设备扫描的新增信号
解决方案是关闭后不再响应这个信号

Issue: https://github.com/linuxdeepin/developer-center/issues/6033
2023-12-28 09:06:11 +08:00
chenhongtao
4e69cb7b68 chore: bump version to 6.0.25
Log:
2023-12-14 07:30:08 +00:00
ck
442a98cb70 fix: turn on bluetooth loading animation not start
change loading animation when bluetooth switch

Issue: https://github.com/linuxdeepin/developer-center/issues/6033
2023-12-12 16:33:37 +08:00
ck
971cd92007 fix: dcc dock plugin icon pixelated again
- 部分图片路径写错
- 资源图片直接加到qicon中,qicon.availableSizes[0]={0, 0}
- 部分插件没有适配主题颜色

Issue: https://github.com/linuxdeepin/developer-center/issues/5682
2023-12-08 16:42:36 +08:00
chenhongtao
c76dcb4361 chore: publish new tag 6.0.24
Log:
2023-11-30 11:43:03 +00:00
chenhongtao
2459613b69 chore: link to dtkgui
Log:
2023-11-28 09:41:08 +00:00
chenhongtao
d2e724b83e Revert "fix: dcc dock plugin icon pixelated"
This reverts commit 58547b091d4a5baea4352d88ff1ad21d8116a980.
2023-11-28 09:41:08 +00:00
chenhongtao
3365365b56 chore: fix use system icon first
Log:
2023-11-23 07:39:51 +00:00
ck
58547b091d fix: dcc dock plugin icon pixelated
use svg format instead of png to support scaling on DPR>1.0

Issue: https://github.com/linuxdeepin/developer-center/issues/5682
2023-11-22 13:06:34 +08:00
chenhongtao
85deffe309 chore: xid is drop in debug, cause coredump
it should use copy

Log:
2023-11-22 03:32:15 +00:00
chenhongtao
919a2b5a49 feat: use system battery icon first
Log:
2023-11-22 03:22:23 +00:00
ck
c2aedfe052 chore: get dconfig value with fallback value
Fallback to default value if dconfig::value failed
if not specify a fallback, default is QVariant()
2023-11-21 14:51:50 +08:00
chenhongtao
70d73662ec chore: when debug open this log
it fursh too much

Log:
2023-11-21 05:30:19 +00:00
chenhongtao
3573bb258b fix: brightness silder cannot scroll when is 28
double 0.29 * 100 then cast to init, it is 28

Log:
Issue: https://github.com/linuxdeepin/developer-center/issues/6077
2023-11-21 03:53:06 +00:00
wangfei
afa0494067 chore: update version to 6.0.23
bump version to 6.0.23

Log: update version to 6.0.23
2023-11-06 09:47:43 +08:00
wangfei
f771da5bdb chore: Adapt time format feature
Adapt time format feature from dcc

Issue: https://github.com/linuxdeepin/developer-center/issues/5902
2023-10-26 11:39:57 +08:00
tsic404
f6019f900d chore: remove unused dbus
log: as title
2023-10-09 16:33:11 +08:00
tsic404
7f148d257a fix: double tray show afeter drag into expandTray and drag back
tray show on dock signal name is quickTrayNameChanged

log: connect right signal name
2023-10-09 16:16:32 +08:00
tsic404
67df42b8a4 fix: tray disappear when drag finished
editor auto close when drag finished, but on one reopen

log: reopen editor when drag finished
2023-10-08 06:14:26 +00:00
tsic404
7cd0cddf44 fix: displayplugin disappear when monitor count changed
changedProps.vale get a empty monitors list, and BrightnessAdjWidget
not update  monitor SliderContainer count

log: fix displayplugin disappear
2023-10-07 05:11:56 +00:00
tsic404
f408bd89f4 chore: release version 6.0.22
log: as title
2023-09-14 05:24:18 +00:00
tsic404
25194dbf13 fix: tool appAreaWidget visible
layout->count() > 0 do not mean it contains tool plugins

log: call updateToolArea instead of using layout->count() > 0 when updateWidgetStatus
2023-09-11 05:12:20 +00:00
tsic404
00369b053b fix: datetime size error
datetimedisplayer get a wrong suitableSize during position changing,
when finished reupdate suitableSize

log: update suitableSize
2023-09-11 05:12:20 +00:00
YeShanShan
0f59177248 fix: Can't hide when DockPopupWindow deactivate
We hide the popupwindow when receiving QEvent::WindowDeactivate.

Issue: https://github.com/linuxdeepin/developer-center/issues/5405
2023-09-11 10:59:58 +08:00
tsic404
f6b2044bea fix: coredump empty tray when switch postion
Fashion mode and Efficent mode has same one tray, when tray is empty and
update orientation will cause endless reseize event which case dock stack boom

log: move TrayGridView Orientation update into TrayGridView
2023-09-11 01:56:27 +00:00
tsic404
111fb6c518 fix: tray get a wrong postion after displaymode changed
log: as title
2023-09-08 03:46:29 +00:00
tsic404
38871e8b0d fix: a space on tray without trash show
the m_mainBoxLayout last call addStretch, so tary show insert into second last

log: make tray insert into second last
2023-09-07 09:43:48 +00:00
tsic404
d24429904c chore: remove useless plugin
log: as title
2023-09-07 09:42:06 +00:00
tsic404
914ddce850 chore: bump version 6.0.21
log: as title
2023-09-07 09:41:32 +00:00
tsic404
7ed222aadb fix: datetime font size error
make font size adjusted by height or width not follow system font size

log: as title
2023-09-06 06:17:24 +00:00
tsic404
3cbb828863 feat: make unrecongnized application not dock on dde-dock
some unrecongnized app like electron app will unable to start when next click.
and custom desktopfile will not be supported by new applicationmanager1

log: not dock unrecongnized application
2023-09-06 05:04:50 +00:00
tsic404
4b9b283e5c fix: dock coredump when update recentApp invisible
itemRemove signal connect direct to taskmanager thread, and it will update recentApp visible status
which access qwidget in non-main thread.

log: make recentApp visible status update in main thread.
2023-09-06 05:04:50 +00:00
tsic404
e3c3dfe94d feat: when new am avaliable do not load custom desktopfile
log: as title
2023-09-06 05:04:50 +00:00
tsic404
75ebd8a0f2 feat: use new am dbus interface
log: as title
2023-09-06 05:04:50 +00:00
YeShanShan
e14b877696 feat: Remove dock-hotspot-plugin by Conflicts
To remove dock-hotspot-plugin.

Issue: https://github.com/linuxdeepin/developer-center/issues/5415
2023-09-06 10:07:53 +08:00
YeShanShan
406c5d8539 Revert "chore: update dependencies"
This reverts commit 9f092c2d01ad64ae6ee1458ae36f937f952034d7.
2023-09-06 10:07:53 +08:00
chenhongtao
5aa27ee40f fix: click preview container not active window
it connect to a empty signal

Log:
2023-09-05 07:59:21 +00:00
tsic404
e78be366bc chore: make trash not display in default
log: as title
2023-09-05 07:59:01 +00:00
chenhongtao
2ccf74dd35 chore: support qCDebug
Log:
2023-09-04 15:19:20 +08:00
chenhongtao
41d27c5ad7 chore: commit unused qdebug, and update log format
Log:
2023-09-04 15:19:20 +08:00
chenhongtao
bdb0dc3b86 fix: brightness update, update main view slider
Log:
2023-09-04 15:19:20 +08:00
tsic404
d1b37b045a fix: add lost windowSizeChanged Signal
log: as title
2023-08-29 02:04:27 +00:00
tsic404
811fc172d7 chore: bump version 6.0.20
log: as title
2023-08-25 09:55:02 +00:00
tsic404
e4b9d8e695 fix: no displayModeChanged signal
log: as title
2023-08-25 01:29:45 +00:00
tsic404
0e5aab95f5 fix: dock autohide even trayGridWidget show
log: prevent dock hide as dde-launcher show shen trayGridWIdget show
2023-08-24 05:13:40 +00:00
tsic404
5d87a44ac4 fix: adjust the slider to set the sound multiple times
log: add a timer to set once in 50 ms
2023-08-23 08:21:54 +00:00
tsic404
9f71814849 fix: add hideModeChanged signal
log: as title
2023-08-23 03:01:33 +00:00
tsic404
e169dcf4de fix: xebmbedtary click get no response in Efficient mode
The tray in fashion mode is not the same object as the tray in efficient
mode, and only one xembedtray is vaild, so there will be a contention
between the two. The latter xembedtray who call reparent() will be the vaild
one. So drag from expandiconwidget, the xembed tray click in the efficient
mode get no response while the tray click get response when switching from
the fashion mode.

log: make tray(both fashion and efficient mode) to be one object
2023-08-18 02:19:23 +00:00
tsic404
265cbbec13 chore: bump version 6.0.19
log: as title
2023-08-10 07:15:57 +00:00
Cloud
dfe4514981 feat: add bluetooth battery
add bluetooth battery
2023-08-09 02:52:35 +00:00
tsic404
7f554a1da5 fix: coredump when open jetbrains-toolbox
initMenu failed to create menu which make m_menu is still nullptr

log: as title
2023-08-07 04:27:49 +00:00
tsic404
3da8943417 fix: not show with launcher when hide
add lost launcherFront dbus signal

log: as title
2023-08-04 16:59:05 +08:00
tsic404
e4dde7b5a1 fix: click always activate application in TrayGridWidget
expandiconwidget get focus when click tray, so it will alway activate application because lost focus.

log: set WindowDoesNotAcceptFocus for TrayGridWidget
2023-08-04 08:55:21 +00:00
tsic404
3a5f29ca28 fix: applicationpreview scale not keep aspectratio
drawPixmap will scale pixmap to fit imageRect, but not KeepAspectRatio

log: as title
2023-08-04 05:22:20 +00:00
tsic404
9011e4a125 fix: plugin set show on dock more times, also need same times call unshow
Duplication was kept when saving the configuration, the same plugin was saved multiple times,
but only one was removed when it was removed

log: remove duplication when save dconfig
2023-08-02 02:02:40 +00:00
tsic404
9f14b5f0a8 fix: some app do not display
Current entryRemove and entryAdded connection is not thread-safe. Although entryRemove before entryAdded sended,
entryRemove slot do later than entryAdded slot, which make added entry (later signal) removed by previous entryRemove signal.

log: make entryRemove and entryAdded connecttion thread-safe.
2023-08-02 01:43:00 +00:00
tsic404
1f2d150792 fix: no positionModeChanged signal
add positionModeChanged signal to dbus

log: as title
2023-08-02 01:42:34 +00:00
tsic404
cce27c4d0c chore: bump version 6.0.18
log: as title
2023-07-26 01:41:38 +00:00
tsic404
d2164e99ec fix: official chrome unable to be identified
window_patterns.json used for app in store, and it return cn.google.chrome,
whcih is not installed. So, it means that identifyWindowByRule may return a invalid appinfo.
Return nullptr if it's invalid appinfo.

implement DesktopInfo::isInstalled, and use std::copy instead of raw loop

log: fix identifyWindowByRule return a invalid appinfo
2023-07-25 03:13:41 +00:00
tsic404
167a334142 fix: dock entries not update after displaymode changed
taskmanager not connect to display mode changed signal, so it not update entries

log: as title
2023-07-24 06:52:40 +00:00
tsic404
068f35e405 chore: remove std namespace
log: as title
2023-07-24 06:52:40 +00:00
tsic404
e1a734e030 chore: bump version 6.0.17
log: as title
2023-07-18 07:35:19 +00:00
tsic404
8ca5259c1e chore: update translate
log: as title
2023-07-18 07:35:19 +00:00
tsic404
7c897e6c96 fix: dock size error when dock positon changed
dockSize not right when position changing, height or width is current potion not changed into

log: correct dockSize when dock position changed
2023-07-18 07:35:19 +00:00
tsic404
668cea52fb chore: add libxres-dev in build-depends because of using libxres
add libxres-dev

log: as title
2023-07-18 07:35:19 +00:00
tsic404
67b6fe41b8 chore: fix reuse
add frame/taskmanager/window_patterns.json into .reuse and
download GPL-3.0-or-later.txt

log:
2023-07-18 07:35:19 +00:00
tsic404
9de057e2cc refactor: add taskmanager from dde-application-manager
1. taskmanager used to identify which entry should map to window
  in x11 environmrnt, listen to xevent in anohter thread, and handle those event
when window create, destory, changed. use some way to identify which entry(desktopfile)
should mapped to changed window.
  in wayland, connected plsamawindow signal(window created destoried.
2. use taskmanager instead of dbus in old dock code

log: as title
2023-07-18 07:35:19 +00:00
tsic404
9e364902bf chore: update .gitignore add debian and build ignore
update .gitignore

log: as title
2023-07-18 07:35:19 +00:00
tsic404
5f6cacdf2a refactor: Rewrite the calling method of dock settings
Rewrite the calling method of dock settings, using the new dconfig interface instead of AM's dbus interface

log: as title
2023-07-18 07:35:19 +00:00
tsic404
eb33819302 refactor: rewrite encapsulation of the dconfig
log: as title
2023-07-18 07:35:19 +00:00
deepin-admin-bot
fae8e4436f chore: Sync by 559e91167d
sync by github workflow

Log: none
Influence: none
2023-07-10 06:14:48 +00:00
kamiyadm
101dec15ca
fix: the name of sound device shouldn't be edited (#880)
We can edit the name of sound device in the dock, it should not
be happened. Just set the item uneditable.

Log:

Co-authored-by: kamiyadm <chenhuixing@deepin.org>
2023-07-05 10:28:18 +08:00
dengbo
fb3f888157
fix: 任务栏声音面板中出现异常的悬浮提示 (#876)
取消声音面板设备悬浮提示

Log: 修复任务栏声音面板中出现异常的悬浮提示的问题
Influence: 任务栏声音面板正常显示

Co-authored-by: dengbo <dengbo@deepin.org>
2023-07-05 09:53:48 +08:00
Zhang Dingyuan
42961e5092 fix: tips font size not follow system
Closed: https://github.com/linuxdeepin/developer-center/issues/4350
2023-06-29 10:44:13 +08:00
heyuming
9f092c2d01 chore: update dependencies
加入热点插件

Log: 更新依赖
2023-06-27 14:48:11 +08:00
李成刚
78d5bdfb27 chore: chore: update translate
update translate

Log:
2023-06-27 05:34:18 +00:00
李成刚
e245821f93 fix: 修复'Brightness' 文本裁切问题
修复文本裁切问题

Log: 调整标题栏高度解决显示不全的问题
Influence: 文本显示
Resolve: https://github.com/linuxdeepin/developer-center/issues/4759
2023-06-27 05:34:18 +00:00
李成刚
e5ce99533c fix: text missing translation
text missing translation

Log: 缺少文本翻译
Influence: 文本显示
Resolve: https://github.com/linuxdeepin/developer-center/issues/4384
2023-06-27 05:34:18 +00:00
李成刚
7a7b7d9235 fix: Fix the incomplete display of text when font 20 is scaled to 1.25
修复字体20缩放1.25时的文本显示不全

Log: 调整高度解决文本内容裁切问题
Influence: 电脑协同显示区域
Resolve: https://github.com/linuxdeepin/developer-center/issues/4382
2023-06-27 05:34:18 +00:00
heyuming
70683c4800 fix: imcomplete display when dock plugin's tips text is multi-line
note: rounded corner level is 'large'

Log: 修复当dock插件的提示文本是多行时, 文本显示不全的问题
2023-06-26 14:07:07 +08:00
tsic404
32f8fe02bf fix: DGuiApplicationHelper not found
DGuiApplicationHelper has been moved into DGui, so using Dtk::Gui instead of Dtk::Widget

log: as title
2023-06-20 01:47:37 +00:00
tsic404
ec4637a430 fix: qdbusxml2cpp-fix not generate cpp code after dtkcore update
use DtkTools and DTK_XML2CPP var instead of qdbusxml2cpp-fix binary direct

log:
2023-06-20 01:47:37 +00:00
tsic404
f48785876e chore: remove QAccessible
tests has been disabled, and QAccessible is not used in right ways

log: as title
2023-05-31 03:21:28 +00:00
tsic404
223a9df0d7 fix: incorrect trash status when deleting file in other partition
The old implementation only monitor the trash folder in user's partition
It will make other partition's recycle bin out of monitor,
Now use GIO to monitor all trash and empty trash

log: Fix the trash icon status might out-of-sync in some cases
2023-05-31 03:21:28 +00:00
tsic404
c1aa1cf13c fix: adjust tray icon size to 20
16 pixel size will make tray icon be cutted and
make it to 20 will reserve 2 pixels for each side

log: make tray icon size to 20
2023-05-29 01:55:30 +00:00
tsic404
7928cd6a2e fix: make keyboard layout plugin size fixed
indicator icon size shou be fixed same as other tray icon, should not changed follow system font size.
add text change info from sourceIndicatorWidget to display indicatorWidget

log:
2023-05-29 01:55:30 +00:00
YeShanShan
5894cc8a7d fix: DockPopupWindow losing active status
It causes that child widgets doesn't have focus even though
calling setFocus.
  It was introduced by ec5c447264087420d8ec80a18e7f2bcc4f683a74.
because that DArrowRectangle has activateWindow when show.

Issue: https://pms.uniontech.com/bug-view-172773.html
2023-05-24 16:50:36 +08:00
tsic404
ab58721930 fix: dock position changed from left to bottom no date display
update dateFont size when DateTimeDisplayer size changed.

log: fix no date display on dock when postion change from left to bottom
2023-05-22 16:00:58 +08:00
hudeng
e5f7833b6a chore(CI): Update obs tag build workflow
use obs unstable package directly

log:
2023-05-22 03:05:50 +00:00
tsic404
6697f4e8c6 chore(CI): fix PKGBUILD conflicts depends
remove deepin-qt-dbus-factory

log:
2023-05-16 08:46:12 +00:00
Tsic
fffda4d9ea
chore: bump version 6.0.16 (#869)
log: bump version 6.0.16
2023-05-11 17:42:49 +08:00
ck
07b4efd267 fix: blank in the plugin area after recorder screen
deepin-screen-recorder dock 插件有 Attribute_ForceDock flag
DockPluginController 判断是否需要存在dock上的逻辑判断了这个逻辑
在 valuechanged 时重新又把该插件加入到了dock上。没有录制中该插件没有图标

Issue: https://github.com/linuxdeepin/developer-center/issues/4215
2023-05-11 17:29:26 +08:00
tsic404
ccd2d3f586 chore: bump version 6.0.15
log: bump version 6.0.15
2023-05-11 16:29:17 +08:00
chenhongtao
a36ee58753 chore: use version from cmake
Log: use version from cmake
2023-05-11 15:44:40 +08:00
tsic404
f0108d1c41 fix: timedate size issue
when the sum of the pixel dimensions of the time font and the date font is the same as the height,
leave some space so the text doesn't look too crowded.

log: adjust timedate size
2023-05-11 14:03:29 +08:00
tsic404
83f264720c fix: popupwindow misjudgment
content should not more width than screen otherwise popupwindows must be out of bounds screen

log: as title
2023-05-11 13:50:17 +08:00
tsic404
79cab3fac8 chore: update translate
update translate

log:
2023-05-11 13:03:57 +08:00
tsic404
15e5a0fadb fix: popupwindow is out of bounds at the edge of the screen
set the minimum value of x of popupwindow to the current screen
and the maximum value to the maximum x of the current screen

log:
2023-05-11 05:03:37 +00:00
deepin-admin-bot
0a103e62bd chore: Sync by 2e5e092ba3
sync by github workflow

Log: none
Influence: none
2023-05-10 01:54:32 +00:00
tsic404
48a580117a chore: bump version 6.0.14
log: bump version 6.0.14
2023-05-09 01:47:04 +00:00
tsic404
579cf0afe9 fix: sound checked item highlight do not follow theme
1. update sound icon when theme changed
2. add built-in dci resources to prevent it become a white icon when changed into theme without dci resources

log: update sound icon when theme changed
2023-05-08 09:15:41 +00:00
chenhongtao
31958dfe1b feat: use bluetooth icon from theme
Log: use bluetooth icon from theme
2023-05-08 08:31:57 +00:00
tsic404
1be4bebe0a fix: trash do not display when dock hide and readded into dock
relayout after updateToolArea otherwise plugin item size will set to 0

log:  only relayout after update visiable
2023-05-06 17:20:32 +08:00
chenhongtao
24ff57eb70 fix: popupwindow need click destkop twice to hide
Log: only not hide it when focus widget is QLineEdit
2023-05-06 16:01:32 +08:00
wangyixue
69cec726c3 fix: wrong use of dci icon
DCI iconengine will automatically switch to correct icon when theme
type changes. Application should not do anything after getting the
pixmap.

Log: fix wrong use of dci icon
2023-05-06 06:12:56 +00:00
tsic404
af35000028 fix: add multitasking-view and show-desktop dcc icon
add multitasking-view and show-desktop dcc icon

log:
2023-05-06 14:12:09 +08:00
tsic404
119d72b0ea fix: adjust sound plugin
remove old v20 code, adjust sound devices widget style
run dbus call in another thread to prevent main thread get into wait.
make deviceList item undrageble, and sound setting clickable.

log:
2023-05-06 14:11:50 +08:00
tsic404
5908ee1605 fix: set radius for tray inner window
make m_platformWindowHandle protected so subclass can connect to windowRadiusChanged signal,
which make traymainwindow radius changed follow mainwindow

log: make trymainwindows radius changed follow mainwindow
2023-05-06 13:16:56 +08:00
Zhang Dingyuan
dc77b8904d fix: window radius is not set
as title
2023-05-05 14:52:31 +08:00
tsic404
50bbc3cf01 fix: after screen-recorder finished, dock will coredump
When screen-recorder finish recording, will notify dock update item, and dock
will clean all item and readded back. But m_dragInfo->dockItem still point to
old item which has been cleaned.
So dock will coredump, while using this pointer to judge item can drag or not.

log: update m_dragInfo->dockItem pointer when dock itemCountChanged.
2023-05-05 05:21:49 +00:00
Hillwood Yang
9bfcf4580e fix: add missing library links
add missing library links

Log: Need link these libraries to make sure the build will be successful
2023-05-05 10:44:39 +08:00
rewine
cda8e2c746 fix: must set CMAKE_INSTALL_PREFIX before GNUInstallDirs
Log:
Never modify the value of CMAKE_INSTALL_PREFIX after including GNUInstallDirs ,Otherwise incorrect CMAKE_INSTALL_FULL_XXXX values will be computed
2023-05-04 06:21:23 +00:00
Stwsyburg
a1af30c814 Fix: optimize QFile operation
Catch QFile open error and add qWarning when fail

Log: optimize QFile operation
2023-04-28 10:04:17 +08:00
zsien
1b5f9554d1 fix: fcitx5 keyboard tray icon blur
Choose the pixmap that fits best in size.
Fixes linuxdeepin/developer-center#4185
2023-04-27 17:13:18 +08:00
tsic404
a074108305 chore: bump version 6.0.13
log: bump version 6.0.13
2023-04-21 01:59:36 +00:00
tsic404
e6dbaa69bb fix: update appitem position when showing from hide
dock request to hide, set old position to appitem.
so need to update appitem position when show from hide state

log:
2023-04-21 01:36:08 +00:00
tsic404
8bf079219a fix: click undock menu which make fixed_plugin hide always
The removal will actually remove the plugin, which will make the removed plugin inaccessible,
making it impossible to set the plug-in to the dock in the dde-control-center.

Therefore, instead of calling the remove method, set the plugin to hide from the dock.

log: make fixed_plugin hide instead of removal when click ondock
2023-04-20 07:19:00 +00:00
tsic404
532350f48d fix: unable drag desktop into dock
RequestDock dbus call, only local path passed into

log: fix unable drag desktop info dock and make it docked
2023-04-20 05:52:34 +00:00
chenhongtao
82caae4c83 fix: not left mouse click will also trigger the command of plugin
Log: make only Left mouse click will trigger the command of plugin
2023-04-18 13:40:53 +08:00
chenhongtao
384fdc46ba chore: bad code fix
bad indentation of else and unused count value

Log: find some bad code and fix
2023-04-18 11:33:54 +08:00
tsic404
f90bd54c1f chore: bump version 6.0.12
log: bump version 6.0.12
2023-04-17 10:37:15 +08:00
York Lee
8bbccb27b9 docs: 修改了 dde-dock/plugins/plugin-guide/plugins-developer-guide.md 的几处问题
line:579 这一段话可以放在代码块外面
	line:744 拼写错误,应该是label而不是lable
	line:780 这一段注释可以作为正文放在代码块外面
	共3处修改。

Log: 修改了 dde-dock/plugins/plugin-guide/plugins-developer-guide.md 的几处问题
2023-04-17 02:36:02 +00:00
ck
67d098ed1e fix: dci icon size incorrect
由于 dci 图标殷勤不再乘以缩放,这里不需要再次处理了
见: https://github.com/linuxdeepin/qt5integration/pull/149

Change-Id: I88b9959be0ec88fb3e420b60d7badc5aef772f1d
2023-04-17 02:10:31 +00:00
justforlxz
430e92adbc
fix: tray background color not set alpha
as title
2023-04-14 16:40:09 +08:00
tsic404
b2efe239b6 fix: SNI tray menu unable to click
when first left click SNI tray menu and app without activate to show, will get a dbus error and recall right menu
this will case menu unable to click, move recall to another thread

log: fix SNI tray menu unable to click
2023-04-14 14:09:29 +08:00
tsic404
96dcb71fdd chore: bump version 6.0.11
log: bump version 6.0.11
2023-04-14 12:23:23 +08:00
tsic404
7abeebc7eb fix: fix timedate display widget size error
when font size changed, timedate widget need to update width and height.
call DFontSizeManager only when font size changed

log: fix timedate widget size erorr
2023-04-14 11:10:22 +08:00
chenhongtao
c2ba4e4971 fix: when there is focus on dockpopupwindow, it hide
Log: fix when there is focus and dockpopupwindow hide
2023-04-12 09:08:32 +00:00
tsic404
1bb0c628f3 fix: modify the color of the area not covered by the slider
paint two roundedRect one is slider background, another is slider has covered

log:
2023-04-12 13:08:07 +08:00
dengbo
b853cfa40e
fix: 任务栏快捷面板的电池插件图标显示异常 (#822)
蓝牙插件和电源插件属于快捷面板区域插件, 不应该返回空的图标

Log: 修复任务栏快捷面板的电池插件图标显示异常的问题
Resolve: https://github.com/linuxdeepin/developer-center/issues/4004
Influence: 任务栏快捷面板显示
2023-04-12 09:57:30 +08:00
Yutao Meng
ec5c447264 feat: DockPopupWindow改用DBlurEffectWidget实现
DockPopupWindow改为使用DBlurEffectWidget来实现新的设计,以及摆脱原来DArrowRectangle出现的侧边任务栏PopupWindow圆角显示不对称的问题.

Log: DockPopupWindow改用DBlurEffectWidget实现

Signed-off-by: Yutao Meng <mengyutao@uniontech.com>
2023-04-11 08:40:17 +00:00
tsic404
6242e642bc fix: when multiscreen connected non-primary display unable to click popupwindow
when devicePixelRatio > 1, there is a gap between multiple screens,
before currentPos multiplying by the devicePixelAatio need to subtract the topleft of the current screen
and then replus the current screen topleft

log: fix wrong multiScreen click pos
2023-04-11 13:25:56 +08:00
tsic404
59f462ff09 fix: fix xembed tray flew out
xcb create window must map to xembedtray widget, otherwise the window will fly out

log: fix xembed tray fly out
2023-04-07 18:11:04 +08:00
wineee
c89b3cce44 fix: dont hide all close button
Log: 由于相关接口被移除,暂时无法正确设置 m_closeAble 属性,暂改为默认 true
Task: https://github.com/linuxdeepin/developer-center/issues/3608
2023-04-07 02:11:11 +00:00
tsic404
5743806ad8 fix: fix timedate alway request timedate format
use local var to store format, update those when got changed signals

log:
2023-04-04 15:17:42 +08:00
tsic404
89cd24ad72 fix: fix multitasking no response sometime
fix multitasking no reponse after click sometime

log:
2023-04-04 13:09:58 +08:00
tsic404
fe75a3af39 fix: fix FixedLlugin disapprear after drag
after drag nothing deal with item update

log:
2023-04-04 13:09:58 +08:00
wangyixue
b69a220b05 fix: disk popup does not hide
Disk popup does hide after all disks are ejected. Hide popup of a
pluin in itemRemoved, and notify the DockPopupWindow to hide too.

Log: fix disk popup does not hide
Issue: 3813
2023-04-04 11:20:47 +08:00
tsic404
0781957e4e chore: bump version to 6.0.10
[ bugfix ]
  * fix: dock active color not follow dde-control-center
  * fix: tray overhanging text
  * fix: tray always reset while dragging quickItem to tray
  * fix: splash preview container
  * fix: unmute when changed volume
  * fix: expandwidget tray item can be selected
  * fix: plugin back button not support hiDPI
  * fix: bluetooth not refresh button
  * fix: Icon of trashs  is too large in small dock
  * fix: radius for tray background
  * fix: abnormal display of sound output device list
  * fix: launcher shown in a wrong location while multi screens connected
  * fix: multitasking unable to remove
  * fix: unable call selected app preview window

log:
2023-03-29 18:08:01 +08:00
tsic404
614588f630 chore(CI): add OBS workflows
add OBS workflows and modify PKGBUILD support OBS build

log:
2023-03-28 11:32:30 +08:00
dengbo
e4276da661 fix: 任务栏图标样式显示异常
任务栏图标的高亮色跟随系统主题高亮色变化

Log: 修复任务栏图标样式显示异常的问题
Resolve: https://github.com/linuxdeepin/developer-center/issues/3921
Influence: 任务栏图标显示
2023-03-26 19:16:20 +08:00
tsic404
4a67d10770 chore: fix build warning
fix package warning
1. replace deprecated QPalette::ColorRole Background and Foreground
2. replace deprecated Qt::SystemLocaleLongDate
3. replace deprecated QMouseEvent constructor
4. CMakeLists.txt rectification

log: remove build warnings
2023-03-26 19:16:00 +08:00
heyuming
32bdd7be5e fix: dock crashed while gragging sniItem
Log: 修复拖拽sni控件时引起的dock崩溃
2023-03-24 14:53:23 +08:00
heyuming
83865c93de fix: set limit width to textLabel to correct text elide behavior
Log: 设置宽度限制以纠正文本省略行为
2023-03-23 09:56:03 +08:00
heyuming
9661d3568f fix: tray always reset while dragging quickItem to trayDock
resolve: https://github.com/linuxdeepin/developer-center/issues/3915

Log: 修复拖动快捷插件到托盘上时托盘总被重置的问题
2023-03-22 11:03:46 +08:00
heyuming
2dcd8ce83e chore: update to C++17
Log: 升级到C++17
2023-03-22 10:13:44 +08:00
heyuming
102cd25748 fix: incorrect dbus xml parameter
Log: 修复不正确的dbus xml参数
2023-03-22 10:13:44 +08:00
heyuming
79d7fb9e0f fix: fix quick control panel display text incorrectly when fontSize set to 20
修复dde-dock的逻辑,但自定义插件需要各应用自己修复相关逻辑

Log: 修复当字体大小设置为20时控制面板字体显示错误
2023-03-21 13:49:28 +08:00
tsic404
e7b1bf420e fix: 修复预览花屏问题
更改传递tmp下文件描述符为管道文件描述符,使用管道传递预览图片数据

log: 修复预览花屏问题
2023-03-16 20:25:20 +08:00
heyuming
64fe544d0c fix: tray menu is hidden before function call
Log: 修复托盘在菜单中的行为被调用前被隐藏
2023-03-15 14:07:52 +08:00
Zhang Dingyuan
c65ddcdbc9 fix: mute icon not sync changed
add signal
2023-03-15 04:32:30 +00:00
Zhang Dingyuan
09b5434d3c fix: unmute when changed volume
Closed: https://github.com/linuxdeepin/developer-center/issues/3812
2023-03-15 04:32:30 +00:00
tsic404
c92497ce03 fix: remove tray item selected status
expandIcon can't be drag but can be selected,
selected status generated by undraggable expandIcon.
by removing selectable attr, selected status will
never generated.

log:
2023-03-15 02:54:24 +00:00
tsic404
8f88b6bec5 chore: use DDE for current desktop name
使用DDE作为当前桌面环境的名称

log:
2023-03-15 01:47:29 +00:00
tsic404
7a8f2c835a fix: fix some window preview crash
get a QImage copy data to prevent XDestroyImage clear image data which make a empty QImage

log:
2023-03-14 09:13:03 +00:00
Zhang Dingyuan
e8fc0b7735 fix: plugin back button not support hiDPI
Closed: https://github.com/linuxdeepin/developer-center/issues/3748
2023-03-14 06:19:03 +00:00
Zhang Dingyuan
6102475daf fix: bluetooth not refresh button
Closed: https://github.com/linuxdeepin/developer-center/issues/3809
2023-03-14 05:05:54 +00:00
Ye ShanShan
e9674ff8f5 fix: Trash's icon is too large in small dock
Modify Trash Icon's calculation way, which is flowing on LauncherItem.

Issue: https://github.com/linuxdeepin/developer-center/issues/3588
2023-03-14 09:48:22 +08:00
Ye ShanShan
2ff4a236a6 fix: Missing radius for tray's background
Add a common function to draw special background.
  Sub widget request a highlight background for parent.

Issue: https://github.com/linuxdeepin/developer-center/issues/3744
2023-03-14 09:03:34 +08:00
chenhongtao
cfa53d0b1e chore: remove some deprecated function
Log: remove deprecated function
2023-03-13 16:18:12 +08:00
chenhongtao
649dc72742 chore: chmod -x source files
Log: chmod -x
2023-03-10 16:04:32 +08:00
chenhongtao
cf14d9879f fix: layout parent
one widget should only have one layout,
others should not mark parent as this

Log: fix layout parent
2023-03-10 16:04:32 +08:00
zsien
53e68b9435 fix: abnormal display of sound output device list
Delete custom delegates and use the native DListView state.
* Fix abnormal display of checked icons
* Fix abnormal display of edit box.

Fixes linuxdeepin/developer-center#3793
Fixes linuxdeepin/developer-center#3741
2023-03-10 12:55:45 +08:00
zsien
36adcd8fc0 fix: 修复任务栏圆角跟随窗口圆角变化
Fixes linuxdeepin/developer-center#3601
2023-03-10 11:20:06 +08:00
tsic404
8f661d8d8b fix: AA_EnableHighDpiScaling setted after QGuiApplication constructed.
According to Qt's documentation https://doc.qt.io/qt-5/qt.html#ApplicationAttribute-enum
AA_EnableHighDpiScaling need to be set before QGuiApplication constructed.

log:
2023-03-09 13:01:54 +08:00
chenhongtao
724edd7514 chore: move configure to CMAKE_CURRENT_BINARY_DIR
Log: move configure location
2023-03-07 10:11:12 +08:00
tsic404
c7a02a8719 fix: fix launcher show at a worng postion when using multi screen
dock only set postion calculated by current screen
without curren screen x,y offset from top-left.

log: fix launcher appears in the wrong place
2023-03-03 12:27:06 +08:00
Felix Yan
2cb2a682c6 chore: correct typos in trashwidget.cpp
Correct typos in trashwidget.cpp
2023-02-23 14:43:03 +08:00
dengbo
7320406161
fix: 任务栏时间右键菜单时间格式显示错误 (#781)
当更改了时间显示格式后,需要更新下menu菜单的显示状态

Log: 修复任务栏时间右键菜单时间格式显示错误的问题
Resolve: https://github.com/linuxdeepin/developer-center/issues/3792
Influence: 任务栏时间插件右键菜单
2023-02-23 13:03:46 +08:00
hillwoodroc
ff7d85a556 fix: build failure
Fix reference to 'DRegionMonitor' is ambiguous

Log:
2023-02-22 10:32:39 +08:00
Felix Yan
3a6c41c1ea chore: correct a typo in popupcontrolwidget.cpp
Correct a typo in popupcontrolwidget.cpp
2023-02-21 21:40:52 +08:00
dengbo
4ebedb53d2
fix: 控制中心设置的电源选项任务栏未生效 (#779)
任务栏电源配置原来管理gsetting配置替换成dconfig配置

Log: 修复控制中心设置的电源选项任务栏未生效的问题
Bug: https://github.com/linuxdeepin/developer-center/issues/3768
Influence: 任务栏电池信息显示
2023-02-21 15:57:42 +08:00
dengbo
16ca6eaee9
fix: 任务栏多任务视图不能正常移除 (#771)
1.通过任务栏右键移除按钮时,移除对应插件
2.显示桌面和多任务视图需要加入到快捷插件显示中

Log: 修复任务栏多任务视图不能正常移除的问题
Bug: https://github.com/linuxdeepin/developer-center/issues/3599
Influence: 任务栏显示桌面合多任务视图插件的显示
2023-02-21 13:47:38 +08:00
dengbo
67c66658ee
fix: 任务栏窗口预览功能失效 (#774)
任务栏预览窗口的接口使用错误

Log: 修复任务栏窗口预览功能失效的问题
Bug: https://github.com/linuxdeepin/developer-center/issues/3779
Influence: 任务栏应用窗口预览
2023-02-20 17:40:07 +08:00
linxin
3f8593835d fix: 关闭窗口特效后,任务栏托盘窗口出现四个黑角
任务栏托盘窗口实现采用的是自定义绘制,与窗口特效不兼容,改用继承DBlurEffectWidget类的方式实现窗口

Log: 修改托盘窗口绘制方式
Bug: https://github.com/linuxdeepin/developer-center/issues/3615
2023-02-20 14:46:37 +08:00
Tsic
d57ec415cd
fix(build): fix CMakeLists merge error (#772)
fix CMakelists error and use find_pacakge Dwayland
fix archlinux build dep

log:
2023-02-20 02:36:55 +00:00
tsic404
2f185bf3ce chore: resolve v23 merge conflicts
log:
2023-02-16 15:08:28 +08:00
deepin-admin-bot
1191af61dd chore: Sync by
sync by github workflow

Log: none
Influence: none
2023-02-14 08:27:39 +00:00
donghualin
1049bfb1d9 fix: 修复任务栏位置发生变化提示消息没有跟着改变的问题
任务栏位置发生变化的时候,发送信号通知osd改变自己的位置

Log:
Influence: 调整任务栏位置,观察通知消息的位置是否跟着变化
Bug: https://pms.uniontech.com/bug-view-184231.html
Change-Id: I4f28d32fb6e57dd1a3fa929cd04dea8ec5d2816f
2023-02-03 17:35:16 +08:00
donghualin
b6002b55dc fix: 修复取消回收站显示后显示桌面失效的问题
取消回收站显示后,显示桌面组件不会隐藏

Log: 修复取消回收站显示后显示桌面失效的问题
Influence: 从控制中心取消回收站的显示,观察高效模式下是否可以显示桌面
Bug: https://pms.uniontech.com/bug-view-180859.html
Change-Id: Ic9ed03f0c94177dc06cd2b19cd5492454b07bd45
2023-02-02 16:59:35 +08:00
lvpeilong
7824dbc484 chore: update changelog
update changelog

Log: update changelog
Influence: null
Task: https://pms.uniontech.com/task-view-239643.html
Change-Id: I207a7ea3f1beb3623ee9040c46a397f5cc51658d
2023-02-02 13:40:43 +08:00
lvpeilong
97f513089a chore: update changelog
update changelog

Log: update changelog
Influence: null
Task: https://pms.uniontech.com/task-view-239643.html
Change-Id: I200f9f84d00e5a28f0e3f23dc5c37d84a0536ad3
2023-02-02 11:34:22 +08:00
donghualin
0a32983443 fix: 修复切换主题快捷面板插件主题颜色没有变化
响应主题变化的信号,在切换主题后实时获取快捷面板的图标

Log: 修复快捷面板插件图标在切换主题后颜色没有变化的问题
Influence: 打开快捷面板,切换主题,观察图标颜色显示是否正常
Bug: https://pms.uniontech.com/bug-view-184085.html
Change-Id: Iacffcacf63413ba8d85ae3edf28bf1ff58242036
2023-02-02 09:52:35 +08:00
donghualin
63c03f58a7 fix: 修复拖动插件到任务栏后所有插件都显示的问题
在保存所有插件的时候,判断该插件是否被移除,如果已经移除,则不保存到配置中

Log:
Influence: 默认所有的快捷面板中的插件都在任务栏显示,从控制中心取消所有插件的勾选,然后从快捷面板拖动一个插件到任务栏,观察任务栏插件显示情况
Bug: https://pms.uniontech.com/bug-view-181945.html
Change-Id: Ic523ff21107f8429c61db1abde6c8c97793bb59d
2023-02-01 15:36:21 +08:00
donghualin
7b5f164b26 fix: 更新翻译文案
更新翻译文案

Log: 更新翻译文案
Influence: 从笔记本上观察控制中心个性化中电池的文案
Task: https://pms.uniontech.com/task-view-226203.html
Change-Id: I5f524a9572ba2dfb9fbb052ef6655b8c3dc14ddf
2023-02-01 14:25:52 +08:00
donghualin
5652e2a49a fix: 修复系统主题变化后快捷面板电池颜色显示错误的问题
1、电池图标响应主题变化来重新设置图标
2、修改控制中心电池名称的文案

Log: 修改系统主题变化后快捷面板电池颜色显示错误的问题
Influence: 打开快捷面板,在控制中心更改系统颜色,观察快捷面板中系统电池图标是否跟随系统颜色变化
Bug: https://pms.uniontech.com/bug-view-184085.html
Change-Id: If02b8800b4d90696c2dc74ac43ebc230233f0f58
2023-02-01 13:29:58 +08:00
donghualin
da1b436796 fix: 修复高缩放率下图标显示异常的问题
1、高缩放率下计算图标任务栏尺寸需要乘以缩放率的数值
2、加载声音图标带上具体的后缀名,否则会出现图标显示异常
3、自定义图标的尺寸的显示,需要重新计算图标的宽度

Log: 修复高分屏下图标显示异常
Influence: 高分屏,高缩放率,观察任务栏插件区域的图标
Bug: https://pms.uniontech.com/bug-view-183543.html
Bug: https://pms.uniontech.com/bug-view-184089.html
Change-Id: Iaa8833b20608129e5c10c8614702a9e5afeae2d9
2023-01-31 21:27:52 +08:00
caixiangrong
50dad25442 fix: 修改插件区域出现重复的电池图标问题
1.修改电池图标状态刷新处理
2.将电池插件改到快捷面板内
3.快捷面板组合图标改为默认图标

Log: 修改插件区域出现重复的电池图标问题
Bug: https://pms.uniontech.com/bug-view-184085.html
Influence: 任务栏-电池图标状态刷新
Change-Id: I8af36acfd9a42efa186338c115f33255af5c1fa6
2023-01-31 11:26:09 +08:00
donghualin
a572f8a37d fix: 修复从托盘拖动图标到任务栏引起崩溃的问题
将static_cast修改为dynamic_cast,增加了类型判断

Log:
Influence: 将托盘图标拖动到任务栏
Bug: https://pms.uniontech.com/bug-view-181945.html
Change-Id: I5b23088b8b7508d9a7cf2683a3a8571a57b82e38
2023-01-17 11:03:12 +08:00
donghualin
4800acce2c fix: 修复从任务栏向上拖动插件引起任务栏崩溃的问题
遍历插件的时候,for循环中的容器错误

Log:
Influence: 从任务栏向上拖动插件,观察任务栏是否正常
Bug: https://pms.uniontech.com/bug-view-181945.html
Change-Id: Icf93d225680cd257e446855d03bb9434e07c27ea
2023-01-16 18:24:15 +08:00
donghualin
1be68d06b2 fix: 修复移除蓝牙设备后任务栏插件不消失的问题
1、任务栏插件显示区域移除对配置变化的响应,该功能已经在DockPluginController中实现
2、在配置变化的时候,判断插件是否可以加载的条件增加了判断该插件是否被加载
3、修复拖动快捷面板的问题

Log: 修复移除蓝牙设备后任务栏插件不消失的问题
Influence: 插上蓝牙,从控制中心勾选该插件,在任务栏显示,然后移除蓝牙设备,观察任务栏的蓝牙图标是否消失
Bug: https://pms.uniontech.com/bug-view-181945.html
Change-Id: Ib207f4f0e2ceeb4b100c57b1f3e3899a802b8ed7
2023-01-16 17:08:59 +08:00
zhaoyingzhen
c42340387e chore: 更新changelog
更新版本号为:6.0.8

Log:
Task: https://pms.uniontech.com/task-view-227573.html
Influence: 版本号
Change-Id: I7df0ea42812113288fa5b9d8c23acd5947085e75
2023-01-16 16:23:40 +08:00
donghualin
3e1d5c5551 fix: 修复高效模式下无法打开企业微信的问题
根因:高效模式和时尚模式分别创建了各自的XEmbedTrayItemWidget对象,时尚模式后创建这个对象,在创建这个对象的构造函数中会把QX11Info::connection与容器的id进行配对组合,导致后创建的对象替换了先创建对象的容器id与QX11Info::connection的映射,在点击先创建对象的时候,无法找到对应的匹配关系,导致无法打开XEmbedTrayItemWidget协议对应的窗口
修改:在构造函数不再创建映射,在当前窗口showEvent事件中再对容器id和QX11Info::connection进行映射,这样在点击窗口图标的时候可以打开正确的窗口

Log: 修复高效模式下无法打开企业微信的问题
Influence: 进入高效模式,打开企业微信和微信等应用,观察是否正常打开窗口
Bug: https://pms.uniontech.com/bug-view-182065.html
Change-Id: I41be68e5ac798f1f7dc34f71652e757247595e06
2023-01-14 22:09:27 +08:00
donghualin
f295b434f8 fix: 修复快捷面板插件子面板无法关闭主面板的问题
在子插件点击相应的功能按钮的时候,调用requestSetAppletVisible方法来隐藏面板

Log: 优化快捷面板插件功能
Influence: 进入快捷面板的蓝牙子界面点击设置,进入声音子界面点击设置,进入亮度调整子界面点击设置,在弹出对应的功能后,观察快捷面板是否隐藏
Task: https://pms.uniontech.com/task-view-222353.html
Change-Id: Ifeb450497c17220545fbda10c159f1e50b00c534
2023-01-14 19:45:12 +08:00
donghualin
b337d88dd4 fix: 修复任务栏适应不同的主题
1、不同的主题变化的时候,音乐播放,声音调节和亮度调整面板颜色发生变化
2、切换任务栏的位置,弹出窗口的箭头方向显示正确

Log: 任务栏插件适配不同的主题
Influence: 从控制中心修改主题颜色,观察任务栏快捷面板的主题颜色是否发生变化
Bug: https://pms.uniontech.com/bug-view-179377.html
Change-Id: Ic77858124d55dce149d8bd78fb8831038caed265
2023-01-14 17:57:49 +08:00
donghualin
c6b2257f15 fix: 根据设计图调整插件位置
修改json中插件的顺序,亮度调整最下方,声音中间,媒体播放最上方

Log: 调整插件显示位置
Influence: 声音、亮度调整和媒体播放的显示位置
Bug: https://pms.uniontech.com/bug-view-181251.html
Change-Id: I3a25fa659d63b35cddbfafe128a1fd0ba459434f
2023-01-14 16:41:51 +08:00
donghualin
9b6d09ffab fix: 修复图标异常问题
1、修复拖动过程中组合图标尺寸显示异常的问题
2、修复从控制中心设置插件显示隐藏引起的异常问题
3、修复高缩放率下的组合图标显示异常问题
4、修复蓝牙面板在不同的主题下颜色的显示的问题
5、社区版键盘布局默认在任务栏显示

Log: 修复图标显示的问题
Influence: 高缩放率下,观察组合图标显示是否正常
Bug: https://pms.uniontech.com/bug-view-181723.html
Change-Id: Id351063095a2290731876ce896c2cd05a32d4ec0
2023-01-14 16:41:51 +08:00
zhaoyingzhen
bdd4c4b722 fix: 解决任务栏时间日期文字显示异常的问题。
系统改变字体后,注销后时间日期显示异常;高效模式下,拉动高度时间字体无变化的问题。

Log:
Bug: https://pms.uniontech.com/bug-view-181387.html
Influence: 时间和日期显示。
Change-Id: I1d35d35afa54095ddd631775d7b9f190c53779fa
2023-01-13 22:34:36 +08:00
donghualin
46f01047a2 fix: 修复展开托盘无法通过菜单移除U盘的问题
原因:在鼠标点击托盘内右键菜单的时候,会隐藏托盘,导致菜单跟着隐藏,结果是菜单的相关功能不生效
解决方案:在点击托盘区域的时候,判断鼠标位置是否在托盘区域内,包括菜单区域,如果在托盘区域内,则不关闭托盘,等菜单点击完成后再关闭

Log: 修复托盘U盘图标右键不生效的问题
Influence: 插入U盘,打开托盘区,右键菜单,点击,观察功能是否生效
Bug: https://pms.uniontech.com/bug-view-182299.html
Change-Id: I7ba5cc65e2509d4a9dab6e21d73906e8894df0b8
2023-01-13 15:40:20 +08:00
donghualin
81edbf0000 fix: 修复高缩放率下插件图标显示异常的问题
高缩放率下,需要将图标按照缩放下的图标进行显示

Log: 优化高缩放率下插件图标显示异常
Influence: 高分屏,设置缩放率为最高,观察任务栏插件区域的图标显示是否正常
Bug: https://pms.uniontech.com/bug-view-183543.html
Change-Id: I3087c87737a8624b906f9076351a952a2dec8452
2023-01-13 09:41:24 +08:00
donghualin
ebd1522aea fix: 修复高缩放率下固定区域图标和回收站图标显示异常的问题
图标加载后,需要将图标缩放成合适的大小

Log: 修复高缩放率下图标显示异常
Influence: 1.25倍缩放率下,选择非默认主题,观察任务栏显示桌面、多任务试图和回收站的图标大小是否正常
Bug: https://pms.uniontech.com/bug-view-182673.html
Change-Id: I8d02cec5f990523acb9f75763fa1cb1e24c93e9c
2023-01-13 09:41:24 +08:00
donghualin
4ed9b915f9 feat: 高效模式下最右侧增加显示桌面区域
高效模式最右侧增加显示桌面区域

Log: 增加显示桌面按钮
Influence: 进入高效模式,鼠标进入最右侧,点击,观察是否可以正常显示桌面
Bug: https://pms.uniontech.com/bug-view-180859.html
Change-Id: I1565d0ad5a47bb3f99c9d51c74c6df67f7f7892c
2023-01-12 13:55:48 +08:00
donghualin
60e5e1b749 fix: 优化插件图标样式
鼠标进入的时候,图标显示底色

Log: 优化图标样式
Influence: 图标样式
Task: https://pms.uniontech.com/bug-view-181945.html
Change-Id: I9eb594119f0dbef36aee64ae4fd7a99fa12389c7
2023-01-12 13:55:48 +08:00
donghualin
f7812cfb66 fix: 修复移除蓝牙后弹框依然显示的问题
移除设备后弹窗不再显示

Log:
Influence: 点击任务栏的蓝牙图标,弹出蓝牙弹窗,然后移除蓝牙,观察蓝牙的弹窗是否存在
Bug: https://pms.uniontech.com/bug-view-181945.html
Change-Id: Idcef18077d9f822b2ea3aca93442a2d098ea146b
2023-01-12 13:54:07 +08:00
donghualin
a1748e3ca1 fix: 调整插件的尺寸
调整任务栏插件尺寸

Log: 调整插件尺寸
Influence: 观察任务栏插件是否对齐
Task: https://pms.uniontech.com/task-view-222353.html
Change-Id: I30b9e1b1862fd9ba5ff3a2a931cd73204ead4292
2023-01-12 13:54:06 +08:00
donghualin
0c414397e1 chore: 删除多余的文件
删除已经移到插件中的文件

Log:
Influence: 无
Task: https://pms.uniontech.com/task-view-222353.html
Change-Id: Ie4373902170defacebb9f6652b1b21121980ad18
2023-01-12 13:54:06 +08:00
donghualin
e7dbbb0140 fix: 点击插件弹出自己的列表
1、删除已经移到插件中的文件
2、点击插件图标,弹出当前插件对应的列表

Log:
Influence: 点击插件,观察是否弹出插件自己对应的列表,如果没有弹出列表,则触发这个插件的功能
Task: https://pms.uniontech.com/task-view-222353.html
Change-Id: Ia8797ccbe630d56d79ab9138d5aa982b66f74c57
2023-01-12 13:54:06 +08:00
donghualin
bc840d233d feat: 加载基本插件
加载pluginmanager插件,其他的插件由pluginmanager插件来加载

Log:
Influence: 插件加载
Task: https://pms.uniontech.com/task-view-222353.html
Change-Id: Ibe3cb59c5e3da27d7547d9bea8e05ebcd03c5a87
2023-01-12 13:51:25 +08:00
donghualin
4a2847f03f feat: 加载插件流程移动到插件里单独加载
将加载插件的流程和快捷面板的功能移动到单独的插件中,精简任务栏的代码

Log:
Influence: 加载插件
Task: https://pms.uniontech.com/task-view-222353.html
Change-Id: I9b2fbe4f32c852f6a3535daab87c63741bd8914a
2023-01-12 13:09:37 +08:00
donghualin
978d7fe738 fix: 修复键盘布局插件不响应键盘布局变化的问题
在布局变化信号发生变化后,增加响应布局变化的信号

Log:
Influence: 社区版,从控制中心不断新增和删除键盘布局,观察布局插件是否显示隐藏
Task: https://pms.uniontech.com/task-view-225011.html
Change-Id: I52af6b3d67836a4e55b280bba3c124adfee0a1c9
2023-01-11 18:24:55 +08:00
donghualin
1175b75aa5 style: 解决编译不通过的问题
1、gerrit上打包提示DRegionMonitor重复定义导致编译不过,此处加上命名空间
2、删除不用的头文件包含

Log:
Influence: gerrit打包
Task: https://pms.uniontech.com/task-view-96831.html
Change-Id: Ic5f5c88619193a2b49482c967fff1eca5b784608
2023-01-11 09:09:40 +08:00
lvpeilong
c3851717b5 chore: update changelog
update changelog

Log: update changelog
Influence: null
Task: https://pms.uniontech.com/task-view-235277.html
Change-Id: Ibcc7486e7d37a6503dc7cdc4c7b26ae11366291e
2023-01-06 16:33:12 +08:00
donghualin
2bfa6acb53 fix: 更新翻译文件
电源插件由使用电源改为电源

Log: 更新翻译文件
Influence: 任务栏-电源,观察电源的文本
Bug: https://pms.uniontech.com/bug-view-180959.html
Change-Id: I7db971d8433e08ce1921b20b487cf6ae32fc5aca
2023-01-05 11:19:13 +08:00
donghualin
d736fd0b49 fix: 修复文案显示错误
1、将原来的使用电源修改为电源
2、删除禁用和启动插件接口的响应
3、根据需求,电池不在控制中心显示

Log: 修复文案显示错误
Influence: 任务栏最右侧的电源按钮
Bug: https://pms.uniontech.com/bug-view-180959.html
Change-Id: I483619382bf59187c03dae25a1885d59bb5b865a
2023-01-05 11:19:13 +08:00
zhaoyingzhen
17c2ba71f0 fix: 任务栏协同不显示安卓设备。
添加设备时过滤安卓设备。

Log:
Task: https://pms.uniontech.com/task-view-233323.html
Influence: 设备列表不显示安卓设备。
Change-Id: I48bb91b69d8c5f2312f1c6cb961b66d684a2cbf7
2023-01-05 09:58:21 +08:00
donghualin
9612bf2e11 fix: 修复插件显示尺寸问题
在插件中绘制图像的时候,判断尺寸如果为自定义尺寸,则使用自定义尺寸来计算位置信息

Log: 修复插件的显示问题
Influence: 截图-查看截图计时插件是否正常显示
Bug: https://pms.uniontech.com/bug-view-179083.html
Change-Id: I76953a099d67f1a0abfee9afc63f4c1fae59696e
2023-01-04 19:56:26 +08:00
zhaoyingzhen
fe40557d5c chore: 更新changelog
更新版本号为:6.0.6

Log:
Task: https://pms.uniontech.com/task-view-227573.html
Influence: 版本号
Change-Id: Ibe80900e7b4b914561e0483e643e3d81b05d8b09
2023-01-04 12:37:44 +08:00
donghualin
4cf80b7f32 fix: 修复截图插件显示尺寸问题
判断插件的尺寸如果是自定义,则设置为插件自己的尺寸

Log: 修复截图插件的显示问题
Influence: 截图-查看截图计时插件是否正常显示
Bug: https://pms.uniontech.com/bug-view-179083.html
Change-Id: Ia7f08f78429df68b045c074c3054aca388ae7ce4
2023-01-04 11:13:30 +08:00
donghualin
05a98ac8b7 fix: 修复高缩放率下高效模式启动器位置错误
高效模式下,启动器使用自己计算的坐标来处理

Log: 修复高缩放率下高效模式启动器位置错误
Influence: 高缩放率下进入高效模式,观察启动器的位置
Task: https://pms.uniontech.com/task-view-232903.html
Change-Id: Ic0a40476e13f7d8fe83f5bf537388e0b4df339e0
2023-01-04 10:15:14 +08:00
donghualin
92bb6933eb fix: 解决SNI应用左键弹出菜单后卡死的问题
将显示菜单的操作移动到主线程中实现

Log:
Influence: 安装新版QQ,左键点击托盘区的QQ,弹出菜单,观察菜单是否可用
Bug: https://pms.uniontech.com/task-view-233111.html
2022-12-30 08:27:33 +00:00
zhaoyingzhen
4faedb08b8 fix: 解决协同服务崩溃后设备列表不清空和状态不改变的问题。
添加dbus服务watcher,当后台服务崩溃后,清空设备列表。

Log:
Bug: https://pms.uniontech.com/bug-view-179595.html
Influence: 协同服务崩溃后,设备列表显示及设备状态。
Change-Id: I8464aaac631eb2379475fbfb65eaba3ab063448e
2022-12-30 16:25:23 +08:00
ssk-wh
0bfd5f5543 chore: 修复编译失败问题
DRegionMonitor从dtk的widget移动到了gui模块,但为了兼容,widget模块中还存在,要避免项目同时加载了两个模块中的DRegionMonitor类

Log: 编译问题
Influence: 编译问题
Change-Id: I8bd5d7350f6bda3d21b32685d086c79e3781b766
2022-12-30 02:54:37 +00:00
ssk-wh
1c24751b8c fix: 修复插入U盘后导致的崩溃问题
指针异常

Log: 修复插入U盘后导致的崩溃问题
Influence: 反复插拔u盘任务栏崩溃
Bug: https://pms.uniontech.com/bug-view-180075.html
Bug: https://pms.uniontech.com/bug-view-180039.html
Change-Id: I0a6ec7c0c29e782ab5f9a7beaad1288a49072376
2022-12-30 02:54:37 +00:00
范朋程
9fd9fdac25 fix: 修复DBus属性变化时不能及时通知的问题
qt可能不支持属性变化时自动通知,采用手动触发的方式实现

Log: 修复DBus属性变化时不能及时通知的问题
Influence: DBus属性变化通知,对功能暂无实际影响
Change-Id: I72cffae2dcfe8f29bed40ff15c2bbcf699848975
2022-12-30 02:54:37 +00:00
donghualin
105df289cc fix: 修复高缩放率下显示问题
1、开始菜单位置显示错误问题
2、应用图标显示错误问题

Log: 修复高缩放率下的显示问题
Influence: 设置高缩放率,观察开始菜单的位置,任务栏图标占满区域,左右位置,观察任务栏图标是否拥挤
Bug: https://pms.uniontech.com/bug-view-176421.html
Change-Id: I038e28df2e9676fbfc8cf3732c6bee5c335f20d3
2022-12-27 15:31:03 +08:00
donghualin
253d0af770 fix: 增加强制在任务栏显示插件的接口
一些插件无需在控制中心设置,必须在任务栏显示,例如截图计时、快捷插件组合图标等,因此,增加该接口对这类插件的处理

Log: 增加任务栏显示插件的标记
Influence: 截图,观察任务栏是否有计时的图标
Task: https://pms.uniontech.com/task-view-226407.html
Bug: https://pms.uniontech.com/bug-view-179083.html
Change-Id: Ifaa71182ee1d19633460db76302dc1ad094ab91f
2022-12-27 11:24:21 +08:00
范朋程
9619df590c fix: 声音插件滚轮调节音量
未考虑音量增强的情况,以及修复音量在1时无法继续减少,在99时无法继续增加的问题

Log:
Influence: 将鼠标放在任务栏声音图标上,滚动滚轮,观察音量大小是否调节
Bug: https://pms.uniontech.com/bug-view-172417.html
Change-Id: I07878e9c967152698f4c72323b98f1ed19c9c41d
2022-12-27 09:59:20 +08:00
donghualin
cb620469e3 fix: 修复向上拖动图标引起任务栏崩溃的问题
增加对drag类型的强判断,如果不为空,则替换图标

Log: 修复向上拖动图标引起任务栏崩溃的问题
Influence: 从任务栏向上拖动快捷图标,观察任务栏是否正常
Bug: https://pms.uniontech.com/bug-view-179427.html
Change-Id: I7ec1dbf7403728b0ff1321a6f76dc05e9422868a
2022-12-26 16:30:20 +08:00
chenjun
76a77c7479
fix: 修复在1.5倍缩放时飞行模式图标显示过小问题 (#737)
修复在1.5倍缩放时飞行模式图标显示过小问题

Log: 修复在1.5倍缩放时飞行模式图标显示过小问题
Bug: https://pms.uniontech.com/bug-view-177345.html
Bug: https://pms.uniontech.com/bug-view-176473.html
Influence: 设置缩放后飞行模式图标正常显示
2022-12-23 11:13:08 +08:00
dengbo
be89d981d9 fix: wayland下最小化魔灯效果显示异常
在应用去驻留在任务栏或者驻留的应用在任务栏坐标有变化时,通过wayland协议去设置最小化窗口的位置

Log: 修复wayland下最小化魔灯效果显示异常的问题
Bug: https://pms.uniontech.com/bug-view-111637.html
Influence: wayland下应用窗口最小化显示效果
Change-Id: I56aef594ff0406f5d0bca42f0a4265ffac6398f4
2022-12-23 02:36:55 +00:00
zhaoyingzhen
b488d59047 chore: 更新changelog
更新版本号

Log:
Task: https://pms.uniontech.com/task-view-227573.html
Influence: 版本号
Change-Id: Ida227d92a71124a9be325ac19d739cbdb2cfecf0
2022-12-21 11:45:10 +08:00
donghualin
72a7265487 chore: 适配最新的dtkcore
最新的dtkcore中已经包含frame/qtdbusextended目录下的所有文件,删除原来的同名文件,同时修改引用的头文件的名称

Log:
Influence: 正常编译
Task: https://pms.uniontech.com/task-view-224841.html
Change-Id: I53c6ece52dad59874ca560fa63fbd1c456c6adb3
2022-12-21 11:05:58 +08:00
chenjun
fdd5f4cfe5
fix: 蓝牙设备不可用时使能开关按钮 (#735)
1、删除使用错误的调色板,直接使用系统默认调色板。
2、蓝牙设备不可用时使能开关按钮,不禁用整个界面,避免界面文字内容不清

Log: 控制中心-个性化内设置为深色,从任务栏打开蓝牙面板后,蓝牙设置字体未变成浅色
Bug: https://pms.uniontech.com/bug-view-176333.html
Influence: 蓝牙设置字体跟随系统主题变化
2022-12-19 16:32:05 +08:00
donghualin
35b4788180 fix: 修复高缩放率下图标显示异常的问题
设置qApp的Qt::AA_UseHighDpiPixmaps属性为true,设置高分屏支持

Log: 修复高缩放率下图标显示异常的问题
Influence: 设置高缩放率,观察任务栏图标显示
Bug: https://gerrit.uniontech.com/c/dde-network-core/+/180802
Change-Id: I76b6621c405c4a01d39b68817fe920f8e6671609
2022-12-19 15:05:53 +08:00
donghualin
8c03c2c768 fix: 默认显示电源按钮和回收站
配置中增加电源和回收站

Log:
Influence: 新安装系统,观察任务栏上是否有电源和回收站的显示
Task: https://pms.uniontech.com/task-view-216841.html
Change-Id: Icb0981a39c2ac27443e8784838f455f98775e87c
2022-12-16 10:54:45 +08:00
donghualin
80dfd4a2b8 fix: 修复无法通过点击插件图标隐藏快捷面板的问题
设置不检测的QWidget,当鼠标在不检测的QWidget内部点击的时候,无需关闭当前快捷面板

Log:
Influence: 从插件图标打开快捷面板,再次点击该插件图标,观察快捷面板是否隐藏
Bug: https://pms.uniontech.com/bug-view-175201.html
Change-Id: Ia523a7a414cdbd9cbd088ab0729e3b01414b8a93
2022-12-15 19:58:58 +08:00
donghualin
a88f5e6fa1 fix: 修复高缩放率下时尚模式显示异常
计算图标大小的时候,在不拖动的情况下,直接获取后端的大小,无需乘以缩放率

Log: 修复高缩放率下时尚模式的显示问题
Influence: 高缩放率下,进入时尚模式,观察任务栏是否显示异常
Bug: https://pms.uniontech.com/bug-view-176321.html
Change-Id: Ic1c59164f1495dc5e5cbf6f7600dda7aae995ae9
2022-12-15 14:40:14 +08:00
donghualin
7a8016abe5 fix: 修复高分辨率快捷面板显示异常的问题
1、高缩放率下,图标尺寸需要除以缩放率
2、拖动快捷面板图标到任务栏的时候,设置拖动图标

Log: 修复高分辨率快捷面板显示异常的问题
Influence: 高分辨率,任务栏快捷面板,观察全局搜索图标显示
Bug: https://pms.uniontech.com/bug-view-176421.html
Change-Id: Iddd5dfc6851a9d8a3f35be10cdfa780c11862a4c
2022-12-15 11:59:24 +08:00
donghualin
ef7d532008 feat: 更新翻译文件
更新翻译文件

Log: 更新翻译文件
Influence: 查看翻译内容是否为当前系统对应的语言
Task: https://pms.uniontech.com/task-view-226203.html
Change-Id: I87711c52e5575497bb531b86b00893f1653a3225
2022-12-14 01:37:02 +00:00
donghualin
d600d61ec6 fix: 更新翻译文案
更新翻译文案

Log: 更新翻译文案
Influence: 无
Task: https://pms.uniontech.com/task-view-226203.html
Change-Id: I02168491f07d3b5de839824d85faa733e2f55dfe
2022-12-14 01:33:00 +00:00
donghualin
bbc0ec5ea5 fix: 社区版加载键盘布局插件
1、修改键盘布局服务的接口
2、Indicator读取布局插件在所有的插件加载完成后进行,否则键盘布局插件对应的服务还未启动

Log: 加载键盘布局插件
Influence: 社区版-观察键盘布局插件
Task: https://pms.uniontech.com/task-view-225011.html
Change-Id: I924bd2fa0a8b189af7825546e712482d836ed276
2022-12-14 01:33:00 +00:00
donghualin
5e4c288cea fix: 修复智能隐藏下切换模式显示错乱的问题
原因:在切换模式的时候,需要重新计算任务栏的大小,但是由于时尚模式和高效模式下的尺寸不一样,所以在计算图标的时候会以切换之前的尺寸为参考来进行计算,导致计算的结果错误
修复:在切换模式的时候,提前设置任务栏的尺寸(上下为高度,左右为宽度),这样在下次计算图标的时候获取到的尺寸始终是以正确的尺寸进行计算,任务栏显示正常

Log: 修复智能隐藏下切换模式显示错乱
Influence: 任务栏设置为智能隐藏,从高效模式切换到时尚模式,观察任务栏显示是否正常
Bug: https://pms.uniontech.com/bug-view-176321.html
Change-Id: Ia66cb3e96d4f42c42acc921315e9457d582a82c1
2022-12-14 01:33:00 +00:00
donghualin
477bc09965 fix: 修复重启AM后任务栏崩溃的问题
1、重启AM后,需要重新更新每个子部件的dockInter,因为这些字部件的dockInter是从MultiScreenWorker类中获取的,而MultiScreenWorker类中的dockInter已经被释放重新获取了;
2、重新启动AM后,由于任务栏会重新执行positionChanged的方法,在这个过程中会执行300毫秒的动画,在动画执行完成后,会判断当前服务是否重启过,如果重启过服务,则重新刷新界面

Log: 修复重启AM后任务栏崩溃的问题
Influence: 重启AM服务,观察任务栏是否重启
Task: https://pms.uniontech.com/task-view-225201.html
Change-Id: I1d5337fe7a0101450dfce7338d32aad73c14f697
2022-12-14 01:33:00 +00:00
donghualin
541cdf60e7 feat: 支持从快捷面板拖动图标驻留到任务栏
增加从快捷面板拖动应用到任务栏的功能

Log:
Influence: 从快捷面板拖动图标到任务栏,观察是否驻留在任务栏
Bug: https://pms.uniontech.com/bug-view-171517.html
Change-Id: I3351be282ef8d3afbb55f227fc6ae8ce16c78a97
2022-12-14 01:30:20 +00:00
zhaoyingzhen
75a9312fcb fix: 适配协同后端接口变化修改。
协同后端修改导致问题。

Log:
Bug: https://pms.uniontech.com/bug-view-176323.html
Influence: 协同设备列表显示
Change-Id: I804ce4c3f8d8dab8f3c998664fa742b3f18aa67b
2022-12-13 21:02:55 +08:00
范朋程
3efc00ac29 fix: 修复控制中心调节透明度对任务栏无作用的问题
控制中心使用了Appearance的接口,任务栏需要适配

Log: 修复控制中心调节透明度对任务栏无作用的问题
Influence: 任务栏透明度调节
Task: https://pms.uniontech.com/task-view-226127.html
Change-Id: I3c2edcb82155bdc65220c25c9e139d34c0e92d34
2022-12-13 19:12:46 +08:00
范朋程
949c9eb9af fix: 修复反复开关蓝牙导致的崩溃问题
野指针问题

Log: 修复反复开关蓝牙导致的崩溃问题
Influence: 蓝牙开关功能
Task: https://pms.uniontech.com/task-view-226123.html
Change-Id: Id6c495ffa24aebbb15ad0bac8cdc5ed9aeef8f54
2022-12-13 17:15:49 +08:00
donghualin
460705c401 fix: 修复黑色背景下蓝牙列表名称颜色显示错误
蓝牙设备名称对应的DLabel增加主题变化后改变颜色

Log:
Influence: 改变主题,观察蓝牙列表设备名称的颜色是否改变
Bug: https://pms.uniontech.com/bug-view-167961.html
Change-Id: I7a22e77688aa8767eb6e3439d9885cd871945cde
2022-12-08 11:13:29 +08:00
donghualin
455402d640 fix: 修复无法通过蓝牙主面板开启关闭蓝牙的问题
开启和关闭蓝牙通过调用AdaptersManager类的setAdapterPowered接口来实现

Log: 修复开启关闭蓝牙失败的问题
Influence: 打开快捷面板,点击蓝牙图标,观察蓝牙是否正常开启和关闭
Bug: https://pms.uniontech.com/bug-view-171419.html
Change-Id: I6f2acfded7a90e3454f507118224e5179a726fb8
2022-12-07 21:16:31 +08:00
donghualin
9fbca27acc fix: 声音调整改成新接口
org.deepin.daemon.Audio1改成org.deepin.dde.Audio1

Log: 声音调整换新接口
Influence: 鼠标移动到任务栏的声音图标,滚动鼠标,声音跟着调整
Bug: https://pms.uniontech.com/bug-view-172417.html
Change-Id: I369b74beb8e5e2e7e95c83dc88eef98c2849efc4
2022-12-07 07:00:11 +00:00
donghualin
309d2508ca fix: 点击任务栏时间显示窗口呼出小组件面板
修改服务的路径

Log: 点击任务栏时间显示窗口呼出小组件面板
Influence: 点击任务栏时间窗口小组件是否显示。
Task: https://pms.uniontech.com/task-view-165407.html
Change-Id: Id521c10772a76d70f4a70253a0f087450f361288
2022-12-07 07:00:11 +00:00
范朋程
7b7f5c1f19 chore: 整理代码
整理代码缩进,减少代码量

Log: 无
Influence: 自动化标记功能
Task: https://pms.uniontech.com/task-view-124695.html
Change-Id: Icb22250683d5cd19ef328781e80cd5886da16c3c
2022-12-06 10:08:10 +00:00
范朋程
16d8ee9253 feat: 隐藏显示动画调整
任务栏智能隐藏或一直隐藏时,鼠标移动到屏幕边缘过一段时间再唤起任务栏
DConfig配置:delayIntervalOnHide,默认值0,单位毫秒

Log: 隐藏显示动画调整
Change-Id: I3a93a868e790566b6548f83ff740f5913db9bcc8
2022-12-06 10:05:28 +00:00
chenhongtao
dc03c4331c fix: remove the permission of +x in source
Log: remove the 'x' permission of source file
2022-12-06 09:08:41 +00:00
范朋程
2d958dd670 chore: V23接口改造适配
V23接口改造适配

Log: V23接口改造适配
Influence: 无
Task: https://pms.uniontech.com/task-view-207483.html
Change-Id: Ide530c023ea41f86fad2e8001ec67f1afaa897ab
2022-12-06 14:40:35 +08:00
shaojun
bc7f62efe4
feat: 调整屏幕键盘插件图标 (#731)
原图标不对,应该用20x20的图标,满足任务栏最小时的颜色变化策略

Log: 调整屏幕键盘插件图标
Task: https://pms.uniontech.com/task-view-224239.html
Change-Id: I38148c9f837d480d8df2a96aa560db787406b44a
2022-12-06 13:51:38 +08:00
donghualin
3d89a3d474 fix: 修复控制中心调整任务栏尺寸缓慢显示的问题
requestUpdate信号在手动调整的时候已经在合适的时机发出,重复发送会导致在控制中心调整任务栏尺寸的时候引起重复调整导致反应缓慢

Log: 修复控制中心调整任务栏尺寸缓慢显示的问题
Influence: 从控制中心个性化调整任务栏尺寸,观察任务栏的尺寸是否正常调整
Bug: https://pms.uniontech.com/bug-view-171799.html
Change-Id: If5692f8cf6569fd2d57c46173f3622c26c222c1f
2022-12-06 03:06:17 +00:00
donghualin
e08e86dbff fix: 修复调整任务栏位置后显示错误的问题
在调整窗口尺寸的时候,同时设置子窗口的尺寸,更新子窗口的布局,保证子窗口在调整位置后正确显示

Log:
Influence: 时尚模式下,将任务栏从下方调整在左侧,观察托盘面板显示是否正常
Task: https://pms.uniontech.com/task-view-218981.html
Change-Id: Iaa1f62c93b2ca705e212483eee2cdb5894a5a475
2022-12-06 02:05:31 +00:00
donghualin
5530675d05 fix: 修复U盘插件不显示的问题
老版本的U盘插件没有适配icon接口,需要根据实际情况将itemWidget显示

Log: 修复U盘插件不显示的问题
Influence: 系统中使用v20的U盘插件,插入U盘,查看U盘图标是否显示
Task: https://pms.uniontech.com/task-view-223159.html
Change-Id: I7d2e7867203962ced078087c66fbddb7020d30df
2022-12-05 15:00:43 +08:00
donghualin
13988c0b2a feat: 声音插件滚轮调节音量
适配插件接口的eventHandler事件,响应对滚轮的处理,让其来调节音量

Log:
Influence: 将鼠标放在任务栏声音图标上,滚动滚轮,观察音量大小是否调节
Bug: https://pms.uniontech.com/bug-view-172417.html
Change-Id: I82cf58f652568f4152083973ba8328a39f496656
2022-12-05 10:25:18 +08:00
范朋程
c35bee0c65 fix: 修复音量调节控件幅度不正确的问题
音量调节幅度为2%,这里的控件上次修改时漏掉了
亮度调节也有类似的问题,一并修复

Log: 修复音量调节控件幅度不正确的问题
Influence: 音量控件调节幅度
Bug: https://pms.uniontech.com/bug-view-172417.html
Change-Id: I945698a16b8ad19dee8d22e71cc639ca68204946
2022-12-05 09:57:52 +08:00
donghualin
b698b07dde fix: 修改插件接口
1、icon接口中增加主题参数默认值
2、删除以前的不带主题的icon接口
3、PluginStatus改为PluginMode
4、插件接口类中增加eventHandler虚函数

Log:
Influence: 无
Task: https://pms.uniontech.com/task-view-222025.html
Change-Id: I03c8ec09b96faf12f5ab15c8223da8dacae3e4ff
2022-12-02 15:59:35 +08:00
donghualin
077d6f056f fix: 修复从任务栏拖出托盘应用后托盘不弹出的问题
1.当图标只剩下一个的时候,遍历获取展开图标错误
2.在系统图标删除之前,需要将内置的插件返回的widget的parent设置为nullptr,防止在系统图标删除的时候把插件的widget给删除了
3、在拖动图标的过程中,不从原来的系统中删除原来的图标,再释放后,再将原来的图标删除

Log:
Influence: 从任务栏拖动微信或企业微信,观察托盘是否弹出
Bug: https://pms.uniontech.com/bug-view-171497.html
Change-Id: Iacbfe3406112e92a68d268beaaea3c1a3c3afe7c
2022-12-02 13:51:58 +08:00
donghualin
4c4d06310b fix: 去掉插件中读取禁用当前插件的配置
需求:在新的需求中,通过从控制中心中勾选或者取消勾选插件的显示功能,不再从系统中移除插件,插件中无需通过配置的功能来决定是否加载插件,而变成在插件内部根据当前插件是否需要加载来决定是否加载,例如蓝牙,只要系统中存在蓝牙,就始终加载蓝牙插件

Log: 插件始终都要加载
Influence: 插入蓝牙观察是否有蓝牙图标
Bug: https://pms.uniontech.com/bug-view-175085.html
Change-Id: I1a07ce0d6bd658a03e349e94283768082794684d
2022-12-02 13:51:58 +08:00
donghualin
7b11668d04 fix: 插件适配不同主题图标
实现根据主题返回不同图标的接口

Log:
Influence: 切换主题,观察任务栏的图标和控制中心个性化中的图标是否发生了变化
Task: https://pms.uniontech.com/task-view-222025.html
Change-Id: Ib5420a963da4d5f6b4ed7c3e4927890bd80118e4
2022-12-02 13:51:58 +08:00
donghualin
40d13df340 feat: 任务栏适配不同主题的插件图标
根据当前主题获取不同颜色的图标

Log:
Influence: 切换不同的主题,观察图标是否发生变化
Task: https://pms.uniontech.com/task-view-222025.html
Change-Id: I751218f21bda4052d0bc60a46895660a4f7aad8b
2022-12-02 13:51:58 +08:00
donghualin
d4522035cf docs: 更新插件开发文档
修改文档的最新接口的说明以及示例代码

Log:
Influence: 无
Task: https://pms.uniontech.com/task-view-221667.html
Change-Id: Ief0a7122727bfa3171a0b60ff86dc027013d9b4a
2022-12-02 13:51:58 +08:00
caixr23
3e26d6ca35
fix: 修复任务栏图标模糊问题 (#729)
高分屏支持设置错误

Log: 修复任务栏图标模糊问题
Bug: https://pms.uniontech.com/bug-view-174459.html
Influence: 缩放后任务栏-各插件图标,右键菜单图标
2022-11-30 08:46:54 +00:00
donghualin
bd9beca6ef fix: 修复wayland下高效模式设置任务栏struct失效的问题
在wayland环境下,如果任务栏状态为智能隐藏或者一直隐藏,那么在高效模式下,任务栏距离边缘的距离如果为0,会导致在WindowManager类中设置窗管_d_dwayland_dockstrut属性失效,因此,此处将动画位置距离边缘设置为1,此时就不会出现_d_dwayland_dockstrut属性失效的情况

Log: 修复wayland下高效模式任务栏执行动画过程中窗体大小变化的问题
Influence: 进入wayland-任务栏设置为一直隐藏或智能隐藏,窗体最大化,让任务栏显示隐藏,观察任务栏窗体是否发生变化
Bug: https://pms.uniontech.com/bug-view-150637.html
Change-Id: I4cb554f9ba0a1a4b8b481cdfa9fc6d4d1ccfbd75
2022-11-30 16:25:50 +08:00
donghualin
7a254eb8ea fix: 修复wayland下智能隐藏偶尔失效的问题
在改变隐藏模式的时候,无需检测鼠标位置即可

Log:
Influence: 进入wayland,任务栏设置为智能隐藏,从任务栏打开一个窗口,观察智能隐藏是否有效果
Bug: https://pms.uniontech.com/bug-view-154513.html
Change-Id: I959ba137ae383cd81fb4c5b6df0750a814372581
2022-11-30 13:40:40 +08:00
donghualin
8cb6cb89d7 feat: 增加回收站和电源插件在控制中心的显示和隐藏
响应DConfig配置文件的变化,根据当前新增或删除的配置来新增或删除插件

Log:
Influence: 从控制中心勾选或者取消勾选回收站和电源插件,观察任务栏的变化
Task: https://pms.uniontech.com/task-view-216841.html
Change-Id: Ia79ae924180d07e1b11f26bd119c83a8932cb80d
2022-11-30 13:08:19 +08:00
donghualin
224066836a fix: 修复控制中心显示多条重复控件的问题
原因:插件在多次调用itemAdded方法,导致条件到列表中的控件重复
修改:过滤掉重复加载的插件,保证同一个插件在控制中心只显示一次

Log:
Influence: 控制中心-个性化,观察蓝牙或者任务栏等插件是否只显示一次
Bug: https://pms.uniontech.com/bug-view-171581.html
Change-Id: I52912c0c51159df1f84ed16dcbe891c346a6bfaa
2022-11-30 12:21:41 +08:00
donghualin
f11366a27d fix: dock代码中移除音乐插件
从dock代码中移除音乐插件,适配不同插件的显示

Log:
Influence: 打开音乐播放器,任务栏快捷面板中显示音乐播放面板
Task: https://pms.uniontech.com/task-view-220489.html
Change-Id: Ib52383990489336bb6213b79963b151d4e1a7a14
2022-11-30 12:21:41 +08:00
donghualin
6d14fd1be7 feat: 将音乐播放功能提取为单独的插件
将dock中的音乐播放功能提取为音乐插件

Log:
Influence: 无
Task: https://pms.uniontech.com/task-view-220489.html
Change-Id: Ie58d1645fff08332a03398aa8ce9cb0e90f16ad2
2022-11-30 12:19:18 +08:00
范朋程
3edc83802b fix: 修复音量增强未响应的问题
初始化时,音量的最大值不应该固定为100,应该根据音量增强是否开启自动变更

Log: 修复音量增强未响应的问题
Influence: 任务栏-音量-音量增强
Bug: https://pms.uniontech.com/bug-view-171869.html
Change-Id: I4eaeb0a3ba571f798cd0d5d430f0388e66999955
2022-11-29 12:22:57 +08:00
donghualin
5ad52ae407 fix: 新增或移除显示屏插件自动添加或删除
增加显示屏变化的信号,当新增或删除显示屏的时候,根据信号来移除或新增插件

Log:
Influence: 拔出显示屏后再插入显示屏,观察任务栏快捷面板中的亮度设置插件是否发生变化
Task: https://pms.uniontech.com/task-view-220489.html
Change-Id: If093e8c2de7e6574be7cdecd5f44f7b379cfb886
2022-11-29 10:37:29 +08:00
chenjun
4dc7185e7c
fix: 按UI设计要求调整插件管理标题与说明文字间距 (#727)
按UI设计要求调整插件管理标题与说明文字间距

Log: 按UI设计要求调整插件管理标题与说明文字间距
Bug: https://pms.uniontech.com/bug-view-173635.html
Influence: 按UI设计要求调整插件管理标题与说明文字间距
2022-11-29 10:05:36 +08:00
donghualin
9ebbd85dde fix: 修复快捷面板没有自动刷新图标的问题
在快捷面板图标中增加updateShow方法,在插件更新的时候,调用该方法来更新界面

Log:
Influence: 执行快捷面板中的截图图标,观察图标是否发生变化
Task: https://pms.uniontech.com/task-view-220599.html
Change-Id: I252fdd4f562e7da4d6a8033ae0ce5ddbb5b233f3
2022-11-28 17:31:27 +08:00
donghualin
fe06c5c91a fix: 修复wayland下无法拖动任务栏的问题
调用系统的拖动光标的设置

Log:
Influence: 进入wayland,鼠标移动到任务栏边缘,观察鼠标形状是否改变,能否正常调整任务栏尺寸
Task: https://pms.uniontech.com/task-view-220523.html
Change-Id: Ife47a0d22b62342d10a4ee5113bceef5f0494328
2022-11-28 15:58:35 +08:00
donghualin
7ad0475c6d fix: 移除代码中对显示相关的插件的引用
删除亮度设置和相关的引用代码

Log:
Influence: 无
Task: https://pms.uniontech.com/task-view-220489.html
Change-Id: I7c8f0e93d6b69a92242f3809aca2f6d3ac74fac5
2022-11-28 15:31:01 +08:00
donghualin
4aed03f62b feat: 增加display插件
将原来在dde-dock中的显示相关的代码部分移动到display插件中,生成新的插件

Log:
Influence: 展开任务栏快捷面板,观察是否有亮度设置相关的功能
Task: https://pms.uniontech.com/task-view-220489.html
Change-Id: Ifc1bb2395c3f9ff449513078aba0e3c56ad66881
2022-11-28 15:31:01 +08:00
donghualin
4f3f7a0aed fix: 插件根据标记来决定插件的类型
在决定插件的位置的时候,根据插件的返回的标记来决定当前插件是属于固定插件、快捷插件、托盘插件、系统插件还是工具插件

Log:
Influence: 任务栏插件类型
Task: https://pms.uniontech.com/task-view-220099.html
Change-Id: I5dedc16fd7ccaac9d54dccf657e1a938bf3f2160
2022-11-28 15:31:01 +08:00
chenjun
b4cd7f51f1
feat: 修改屏幕键盘和回收站默认在任务栏不显示 (#726)
修改屏幕键盘和回收站默认在任务栏不显示

Log: 修改屏幕键盘和回收站默认在任务栏不显示
Task: https://pms.uniontech.com/task-view-212929.html
Influence: 屏幕键盘和回收站默认在任务栏不显示
2022-11-28 15:17:07 +08:00
donghualin
c7df15ce0e feat: 插件增加标记
插件接口类中增加flag接口,用于返回不同的插件的属性,在各插件的实现中实现这个接口

Log:
Influence: 任务栏插件
Task: https://pms.uniontech.com/task-view-220099.html
Change-Id: I9e8b8e0f5f9818856b70a76bbda9eb31dc4ebf65
2022-11-28 14:40:55 +08:00
donghualin
6bcaead473 fix: 完善音量功能
1、只要存在音量设备,就显示设备列表
2、当设备在控制中心被禁用后,快捷面板音量滑块不可调节,并且变灰显示

Log: 完善音量功能
Influence: 从控制中心关闭设备,观察任务栏设备状态是否发生变化
Bug: https://pms.uniontech.com/bug-view-172429.html
Change-Id: Ib98f77f49998d6f55f9ad69a18e7fbb30081acf1
2022-11-28 14:07:29 +08:00
donghualin
4386f13cd9 fix: 修复快捷面板蓝牙状态显示错误的问题
快捷面板界面,点击蓝牙图标快速打开蓝牙设备或关闭蓝牙设备,同时根据需要显示不同状态的图标

Log: 修复快捷面板蓝牙状态显示错误的问题
Influence: 点击蓝牙图标,观察快捷面板蓝牙的打开或者关闭的状态
Bug: https://pms.uniontech.com/bug-view-171419.html
Change-Id: I8aeb557463932ffa0cef0fc26fdb29a4799285bd
2022-11-28 13:54:29 +08:00
donghualin
ec092bb980 fix: 修复任务栏插件音量设备显示错误的问题
音量设备解析错误,没有和控制中心保持一致,参照之前的音量的解析逻辑重新来显示音量的功能即可

Log:
Influence: 从任务栏打开音量,进入音量的详情页面,观察是否和控制中心一致
Bug: https://pms.uniontech.com/bug-view-165853.html
Change-Id: I39a6b0664ac2adc40f2ea523d8e0693426640ae5
2022-11-24 09:53:05 +00:00
donghualin
5f4c199ccc fix: 修复快捷面板展开后点击任务栏应用无法打开的问题
快捷面板的Qt::Popup影响了该功能,删除设置该标记即可

Log:
Influence: 打开快捷面板,再打开任务栏应用,观察是否在关闭快捷面板的同时打开了任务栏的应用
Bug: https://pms.uniontech.com/bug-view-166029.html
Change-Id: I6fb374fa5c33b7242cb4e80beabde8017a7ef4f3
2022-11-24 03:49:06 +00:00
donghualin
7ed4de91b8 fix: 修复插入新的蓝牙设备后其他蓝牙设备自动关闭的问题
原来新增的类中接收到蓝牙新增信号的时候,会对所有的蓝牙设备进行关闭操作,该类为冗余的类,删除即可

Log:
Influence: 系统中已经存在一个蓝牙设备,且是打开状态,打开快捷面板,进入蓝牙详情页面,插入新的蓝牙设备,观察之前的蓝牙设备是否自动关闭
Bug: https://pms.uniontech.com/bug-view-171477.html
Change-Id: I6355496ca1be494ccba59921e82cc1921f1ebfff
2022-11-24 03:25:59 +00:00
donghualin
9033044f0a fix: 适配v20插件在任务栏的显示
对于V20的插件,由于没有实现Icon接口,因此在任务栏显示的时候依然将原来的itemWidget返回的内容显示在任务栏上

Log:
Influence: 任务栏显示v20插件
Task: https://pms.uniontech.com/task-view-112073.html
Change-Id: Ic820ace51b018447942b7deb92c9ca567eba00e8
2022-11-23 13:54:45 +00:00
donghualin
f14c19ba9e fix: 修复从控制中心第一次连接需要密码的网络没有弹出网络面板的问题
在任务栏插件区域接收到显示面板的请求的时候,先显示快捷面板,然后在快捷面板中显示请求的窗体

Log:
Influence: 从控制中心第一次连接需要密码的网络,观察任务栏是否显示网络列表
Bug: https://pms.uniontech.com/bug-view-150395.html
Change-Id: Idec2390a55a6236d336c52bf73a10448bc84615f
2022-11-23 12:36:28 +00:00
donghualin
4c324fe872 fix: 修复移除蓝牙设备后快捷面板依然显示的问题
记录子面板中当前显示的插件的指针,当移除插件时,回到主面板

Log:
Influence: 从电脑上移除蓝牙设备,观察快捷区域和快捷面板是否还有蓝牙图标
Bug: https://pms.uniontech.com/bug-view-171533.html
Change-Id: Ia4106d943d0f9df9788db1b87ef8d8fab31c6be3
2022-11-23 10:08:25 +00:00
caixiangrong
e011143bfa fix: 修改蓝牙刷新图标为空问题
刷新图标资源应为蓝牙资源内

Log: 修改蓝牙刷新图标为空问题
Bug: https://pms.uniontech.com/bug-view-172931.html
Influence: 任务栏-蓝牙列表-蓝牙刷新图标
2022-11-23 17:17:02 +08:00
donghualin
04756c8f38 fix: 去掉电池的右键菜单
删除电池右键菜单接口

Log:
Influence: 右键电池插件,观察是否存在菜单
Bug: https://pms.uniontech.com/bug-view-171753.html
Change-Id: I305fd4b48c4b89d8fbf92f109eb401a6d6223a41
2022-11-23 17:12:01 +08:00
donghualin
a41df224f6 fix: 增加对控制中心设置不同主题下图标的接口
1、任务栏插件接口中增加根据主题来获取不同图标的接口
2、声音、蓝牙、电源、虚拟键盘、回收站等插件完善控制中心的接口
3、任务栏图标的显示根据不同的主题来获取

Log: 完善对控制中心设置不同主题的接口
Influence: 在控制中心切换主题,观察图标是否发生变化
Bug: https://pms.uniontech.com/bug-view-172365.html
Change-Id: Ia02193c9ebcf10559195c6fb8fe6227f581e165b
2022-11-23 16:08:34 +08:00
donghualin
c27b9788dc fix: 从任务栏移除托盘图标后放入托盘区
1、根据需求,从任务栏将图标拖出后,释放需要回到托盘区
2、修复从托盘区将图标移动到任务栏上图标消失的问题
3、修复向上拖动图标,托盘出现的位置歪了的问题

Log:
Influence: 将图标从任务栏移出,松手后图标自动移到托盘区
Bug: https://pms.uniontech.com/bug-view-171497.html
Bug: https://pms.uniontech.com/bug-view-171539.html
Change-Id: Icfcd63afd60f46fece0b4f5ac5e267b3cb977ff1
2022-11-23 01:09:16 +00:00
zhaoyingzhen
a4be3f441d fix: 解決协同连接设备时关闭协同服务总开关导致任务栏崩溃的问题。
协同连接设备时关闭协同服务总开关,未清除正在连接设备缓存数据导致问题。
当连接请求被拒绝后,需清除连接状态。

Log:
Bug: https://pms.uniontech.com/bug-view-171741.html
Influence: 协同连接设备.
Change-Id: Ie89a3fa500ab78d0b01c24aff8b2f23ada58a1c9
2022-11-22 14:55:52 +08:00
范朋程
fa7a80b215 fix: 修复快捷面板中音量调节不响应音量增强设置的问题
代码中未处理音量增强的情况

Log: 修复快捷面板中音量调节不响应音量增强设置的问题
Influence: 任务栏-音量插件-音量增强时的交互
Bug: https://pms.uniontech.com/bug-view-171869.html
Change-Id: I92e8d5eed9ecba3418edd4d562176b07b0fe1ac6
2022-11-22 14:53:05 +08:00
donghualin
65d9cfa6ef fix: 修复插件展开列表名称显示错误的问题
在插件请求展示列表的时候,需要判断请求的插件是否为当前插件

Log:
Influence: 从快捷面板打开网络列表,观察标题是否为网络
Task: https://pms.uniontech.com/task-view-218733.html
Change-Id: Ie2c19d76561918fd9aa6fc464f2a1f1bd0c35d37
2022-11-22 06:32:55 +00:00
范朋程
2fcdf7a131 fix: 修复亮度插件无法调整到100的问题
qt的slider控件默认最大值为99,需要手动设定

Log: 修复亮度插件无法调整到100的问题
Influence: 任务栏-亮度插件调节
Bug: https://pms.uniontech.com/bug-view-171869.html
Change-Id: I1530ac0ae3b1b3fbf8f7bbe3236abe4a0b4f2b11
2022-11-22 14:29:37 +08:00
范朋程
224b0a9cb9 fix: 修复音量插件调节最小刻度不是%2的问题
原有的功能,新需求做的时候并没有考虑到继承

Log: 修复音量插件调节最小刻度不是%2的问题
Influence: 音量插件调节
Bug: https://pms.uniontech.com/bug-view-172417.html
Change-Id: Ia10448abb3e872ad47a46d34d1e179538c585c49
2022-11-22 14:29:33 +08:00
范朋程
58ed354c39 chore: 设置日志格式
镜像中打印日志不够详细

Log: 设置日志格式
Influence: 无
Task: https://pms.uniontech.com/task-view-124695.html
Change-Id: I287704241f9f1a19d2ed81a41dc22149727ae58d
2022-11-22 14:29:29 +08:00
donghualin
06bab9d640 fix: 修复蓝牙列表中设备顺序与控制中心不一致的问题
增加记录蓝牙设备顺序的列表,根据新增删除设备的顺序对设备进行排序

Log:
Influence: 打开快捷面板中的蓝牙列表,在多个设备同时存在的情况下,观察设备顺序是否和控制中心一致
Bug: https://pms.uniontech.com/bug-view-171513.html
Change-Id: I5c1017a30e0658022c61a053b9cd724312b37c40
2022-11-22 03:46:37 +00:00
donghualin
9b33a95fab fix: 修复高缩放率下无法点击快捷面板的问题
计算DockPopupWindow位置和大小的时候,需要考虑缩放率

Log:
Influence: 在1.25倍缩放率下,展开快捷面板,点击网络插件展开按钮,观察是否可以展开
Task: https://pms.uniontech.com/task-view-218215.html
Change-Id: I6c6c6dfe9a01ec65a80b93b5438b06fd3f97b050
2022-11-21 16:24:02 +08:00
donghualin
f28dd1ac2c fix: 电池插件不显示在快捷面板
1、新需求中,电池插件不显示在快捷面板上
2、在插入插件到快捷面板中的时候,判断快捷面板的图标或者显示在快捷面板的Widget为空的情况下,返回空
3、设置电池的快捷面板的图标返回为空图标

Log: 电池插件不显示在快捷面板
Influence: 从笔记本上,打开快捷面板,观察是否存在电池图标
Bug: https://pms.uniontech.com/bug-view-171713.html
Change-Id: I506865b7ac26637b28c8fd2d40f044f9061040c8
2022-11-21 05:31:28 +00:00
donghualin
a8d44db60f fix: 修复快捷面板弹出位置不准确的问题
快捷面板的弹出位置根据当前选中的插件位置来计算

Log:
Influence: 从任务栏不同的插件图标点击,观察弹出快捷面板的位置
Bug: https://pms.uniontech.com/bug-view-172213.html
Change-Id: Id229e0028221dd5ed10407d0054228aae0066ef0
2022-11-21 00:45:43 +00:00
donghualin
b3a989b070 fix: 修复关闭窗口特效下启动器按钮被遮挡的问题
关闭窗口特效模式下,多任务视图插件会自动移除,但是依然显示,会遮挡启动器按钮

Log: 修复关闭窗口特效下启动器按钮被遮挡的问题
Influence: 关闭窗口特效的时候,观察启动器按钮是否正常显示
Task: https://pms.uniontech.com/task-view-216977.html
Change-Id: I8f2f7b3ca38de8dd201e4bda0869b939ed545fa9
2022-11-18 09:22:57 +00:00
donghualin
16a8cf7d3e fix: 修复移除插件后快捷面板显示异常的问题
1、在插件移除后,除了从面板上将该插件的Widget移除外,删除该插件创建出来的QWidget
2、在插件对应的QWidget尺寸发生变化后,重新设置面板尺寸
3、在释放任务栏图标后,恢复ToolTip的parent

Log: 修复移除插件后快捷面板显示异常的问题
Influence: 不断插入或者移除蓝牙设备,观察快捷面板是否显示正常
Bug: https://pms.uniontech.com/bug-view-171579.html
Change-Id: I8168b49ad9eb047155efbd609be65f3dd263b6bc
2022-11-18 09:22:57 +00:00
donghualin
e6a73fe3c3 feat: 增加返回给控制中心设置插件和托盘应用的接口
增加plugins接口,用于给控制中心提供在任务栏上显示的插件或托盘区域,提供setItemOnDock接口,用于在控制中心设置哪些项在任务栏上面显示

Log: 给控制中心提供任务栏插件和托盘显示的接口
Influence: 无
Task: https://pms.uniontech.com/task-view-216841.html
Change-Id: Id6abde586915e5827188156222804914a9edf7c9
2022-11-18 03:29:14 +00:00
deepin-admin-bot
7a8e870d36 chore: Sync by 6aa579e31c
sync by github workflow

Log: none
Influence: none
2022-11-18 02:02:09 +00:00
donghualin
e98f1df2f5 fix: 修复从托盘拖动应用到任务栏上面图标显示异常的问题
将图标从托盘拖动到任务栏上面的时候,会将信息保存到DConfig配置,触发任务栏上多次添加图标的功能,引起图标重复

Log: 修复从托盘拖动应用到任务栏上图标显示异常
Influence: 将安全中心等图标从托盘拖动到任务栏,观察图标是否重复
Bug: https://pms.uniontech.com/bug-view-171493.html
Change-Id: I15b85b8192e7e7cca0f563f9ecc6381cd616f0ee
2022-11-18 09:33:55 +08:00
songwentao
9abab8ed1b fix: 同步启动器的修改
启动器修改了拖拽时的MimeData中的特征字段信息, 任务栏同步修改

Log:
Influence: 从启动器应用列表-拖拽到任务栏-回收站-卸载应用功能正常
Bug: https://pms.uniontech.com/bug-view-147753.html
Change-Id: Ic8ab1ed87d40807b0a74e7db0cc84d06c8dabcb0
2022-11-18 09:05:43 +08:00
donghualin
8e241834e0 style: 修改函数接口调用
将获取主屏幕的函数从qApp->primaryScreen()修改为内部封装好的接口

Log:
Influence: 无
Task: https://pms.uniontech.com/task-view-96831.html
Change-Id: I25f7c4dfd76bd32b37a24de68bd4778132a38b15
2022-11-17 08:56:52 +00:00
donghualin
1236ae5b87 fix: 修复任务栏中拖拽图标到桌面区域图标消失的问题
在拖拽图标结束后,自动调用TrayView的onUpdateEditorView方法来重新生成图标

Log:
Influence: 将托盘图标从任务栏快速向上拖动,观察任务栏托盘的图标是否还存在
Bug: https://pms.uniontech.com/bug-view-171539.html
Change-Id: Ib2dc99742349f06ee27726073916464e7a5769b2
2022-11-17 16:08:42 +08:00
donghualin
47f8581788 fix: 去掉部分插件的右键菜单
除了电池插件保留右键菜单,其他在快捷区域的插件不显示右键菜单

Log: 去掉插件的右键菜单
Influence: 右键蓝牙、声音等插件,观察是否有右键菜单
Bug: https://pms.uniontech.com/bug-view-171753.html
Change-Id: Ied821bb2f2e1b6e6e6fe7952ee15745d793e7e7d
2022-11-17 16:08:42 +08:00
donghualin
ac9de7ef51 fix: 修复点击快捷面板之外的区域快捷面板不关闭的问题
将DockPopupWindow中的DRegionMonitor换成XEventMonitor,监控它的鼠标点击和释放鼠标的事件

Log:
Influence: 进入wayland,打开快捷面板,点击快捷面板之外的其他区域,观察快捷面板是否关闭
Bug: https://pms.uniontech.com/bug-view-171545.html
Bug: https://pms.uniontech.com/bug-view-171583.html
Change-Id: I5dda27170316132812c546d8c362d3dc4546e35a
2022-11-17 16:08:42 +08:00
donghualin
a406ebb68a fix: 修复wayland下打开快捷面板tooltip没有隐藏的问题
在打开快捷面板的时候,依次调用任务栏的插件图标的隐藏toolTip的功能将其隐藏

Log:
Influence: 进入wayland,鼠标放在任务栏的插件上,点击应用弹出快捷面板,观察toolTip是否消失
Bug: https://pms.uniontech.com/bug-view-171551.html
Change-Id: Iac6a7c1d55787a73d0f91952c7ca0585f41fd23a
2022-11-17 16:08:42 +08:00
donghualin
b3172ccc96 fix: 修复拖动无打开窗口触发分屏后自动打开应用的问题
原来的逻辑为在应用没有打开窗口的时候,需要自动打开一个窗口然后来触发分屏的操作;
根据和产品详细讨论,现该逻辑改为:在应用没有打开窗口的时候,无需触发分屏

Log:
Influence: 从任务栏拖动一个没有打开窗口的应用,观察是否打开应用(正常情况下不会打开应用),释放鼠标,观察应用图标是否回到任务栏上
Bug: https://pms.uniontech.com/bug-view-154349.html
Change-Id: I6d07097a85912caf15ce63952d6b84225b3aeaad
2022-11-17 16:08:42 +08:00
dengbo
a764b9f3e9 fix: 点击任务栏蓝牙设置不能正常唤起控制中心
当开启飞行模式后,只禁用(置灰)蓝牙适配器列表一栏,而不是置灰整个蓝牙面板

Log: 修复点击任务栏蓝牙设置不能正常唤起控制中心的问题
Bug: https://pms.uniontech.com/bug-view-171999.html
Influence: 任务栏蓝牙面板正常显示/正常使用
Change-Id: Ib1549cf28736ce2dc780b9b0427a7a472dbd4ab8
2022-11-17 01:53:00 +00:00
donghualin
ea75c2e00d fix: 修复任务栏点击时间设置崩溃的问题
path和interface参数和顺序错误引起崩溃

Log: 修复任务栏时间设置崩溃的问题
Influence: 任务栏右键时间区域,打开时间设置,观察是否正常打开控制中心的时间设置
Bug: https://pms.uniontech.com/bug-view-171511.html
Change-Id: If91629dcb45c2663d2bcf9a29adffcbf6ac20043
2022-11-16 06:43:05 +00:00
donghualin
9aa23d8960 fix: 修复插件右键菜单不响应的问题
增加插件区域右键菜单的信号的响应函数

Log: 修复插件区域菜单失效的问题
Influence: 右键菜单区域,点击某个菜单项,观察是否正常响应
Bug: https://pms.uniontech.com/bug-view-164381.html
Change-Id: I4e0044e2f629ff0e2a1a23dc157915175b34b144
2022-11-16 06:43:05 +00:00
donghualin
1bf372f2d0 fix: 修复右键插件区域再单击弹出菜单的问题
在插件区域右键弹出菜单后,无需将事件传给基类,因此不会再触发主窗口的菜单的弹出操作

Log: 修复插件区域交互的问题
Influence: 右键插件区域,再左键,观察插件区域菜单是否正常显示
Bug: https://pms.uniontech.com/bug-view-171559.html
Change-Id: I6fd4c974c10b89e4921c15e8bf0bb8aecef3eeca
2022-11-16 05:39:26 +00:00
donghualin
305f1ba8fb fix: 修复已打开应用缩略图显示位置偏差
原来的逻辑中将显示位置进行了偏移导致显示位置与实际位置有偏差,将偏移相关部分移除即可

Log: 修复应用打开窗口预览图显示错误
Influence: 鼠标放入到已经打开的应用的上方,观察预览图的位置显示是否正常
Bug: https://pms.uniontech.com/bug-view-165775.html
Change-Id: I14fbd7cfd7dc54f76371f1bdfe49cc651ac85d97
2022-11-14 02:37:20 +00:00
donghualin
8a01a93424 Revert "fix: 修改任务栏加载老版本插件的方式"
This reverts commit 7658f813f69b96f8ba79b546208d0a7da3a27ff4.

Change-Id: I7678bf40141d86e956111c57a85dfda7c19197f7
2022-11-11 10:29:41 +08:00
donghualin
62c0802ae6 fix: 修复wayland下部分托盘的tooltips显示异常
wayland下,将DockPopupWindow设置为Qt::FramelessWindowHint可以避免这个问题

Log: 修复wayland下托盘图标显示异常的问题
Influence: 进入wayland,打开音乐,鼠标放入到音乐图标上,观察是否正常显示提示消息
Bug: https://pms.uniontech.com/bug-view-157821.html
Change-Id: I925e6403c7bea3352ef82220f04f8c3bc5a84e0e
2022-11-10 12:58:59 +00:00
donghualin
ad56764f49 fix: 修复部分命令无法执行的问题
调用QProcess::startDetached异步执行的时候,需要将命令和参数分隔,保证该命令正确执行

Log: 修复部分命令无法执行的问题
Influence: 任务栏关机命令观察是否正常执行
Task: https://pms.uniontech.com/task-view-213403.html
Change-Id: I63d3a9629dce9becdfc4dcbe476b438070def5bf
2022-11-10 01:11:28 +00:00
donghualin
7c2f2b38ea fix: 修复托盘图标显示异常的问题
1、新增托盘图标后,自动调整顺序
2、托盘在调整位置之前先调整尺寸
3、删除多余的函数调用

Log: 修复托盘图标显示异常
Influence: 观察输入法是否正常显示,将托盘图标从托盘拖动到任务栏,观察该图标是否在展开托盘图标和输入法中间
Task: https://pms.uniontech.com/task-view-213361.html
Change-Id: I6c87ba89c6fb44a33c32f9252cc2b00b1e828e76
2022-11-10 00:57:32 +00:00
donghualin
719fea0c64 fix: 修复高效模式下关机按钮显示文本的问题
高效模式和时尚模式的插件是两个对象,在设置模式的时候用的是静态变量,导致两边识别到的模式始终为时尚模式,引起是否显示文字的判断错误

Log: 修复高效模式下关机按钮的显示问题
Influence: 高效模式下,调整任务栏到最高,观察关机按钮的显示
Task: https://pms.uniontech.com/task-view-112073.html
Change-Id: I6161fbdf0a5d052ce6e422b2490f1281922f9510
2022-11-09 10:17:33 +00:00
shaojun
4abc8ae385
feat: keyboard交互调整 (#717)
keyboard的显示方式和其他托盘颜色格格不入,修改成统一风格;
浅色模式且任务栏高度最小时显示黑色,其他情况显示白色;

Log: keyboard交互调整
Change-Id: I6c56d9cb08872caac7b3614bb0117e5a5427a17d
2022-11-09 18:08:25 +08:00
donghualin
e011333e5a fix: 修复关机图标与插件区域间距过大的问题
高效模式下,关机插件不显示文本,在计算尺寸的时候,不考虑文本的尺寸

Log: 修复高效模式间距过大的问题
Influence: 高效模式下,观察关机图标与左右侧插件和时间的距离
Task: https://pms.uniontech.com/task-view-112073.html
Change-Id: I50c80880b811e7bb06b917891045d462628a8ee4
2022-11-09 05:36:03 +00:00
chenjun
d24d69d41e
fix: 修改预览界面关闭按钮样式 (#715)
按UI设计要求修改预览界面关闭按钮样式

Log: 修复应用预览图关闭按钮样式错误问题
Bug: https://pms.uniontech.com/bug-view-167311.html
Influence: 按设计要求样式显示预览图关闭按钮
2022-11-09 11:31:30 +06:00
donghualin
091ed36a88 fix: 修复鼠标放到任务栏上拖动区域尺寸错误的问题
修改拖动区域的高度为定义好的拖拽尺寸

Log: 修复任务栏拖拽区域的高度
Influence: 任务栏在下方的时候,鼠标放入任务栏上方的位置,观察鼠标形状是否正常
Task: https://pms.uniontech.com/task-view-213103.html
Change-Id: I4b5864c88960681bf51a8d86a7fd11ed9a59035b
2022-11-09 03:53:31 +00:00
chenjun
35e32e3c05
fix: 修复在显示其他插件的Tips时无法弹出网络列表输入密码问题 (#713)
修复在显示其他插件的Tips时无法弹出网络列表输入密码问题

Log: 修复在显示其他插件的Tips时无法弹出网络列表输入密码问题
Task: https://pms.uniontech.com/task-view-212979.html
Influence: 在显示其他插件的TIps或控制面板时,网络列表正常弹出
2022-11-09 09:36:00 +06:00
donghualin
b882272d32 fix: 修复声音设置错误
后端返回的声音数值范围是0-1,前端设置的范围是0-100,两者之间需要按照相应的转换关系进行转换

Log: 修复声音设置错误
Influence: 打开快捷设置面板,通过滑动条来调整声音,观察声音是否在设置的范围内,同时观察主面板和子面板两边的声音滑动条是否同步
Task: https://pms.uniontech.com/task-view-210309.html
Change-Id: I5a567317ae68b18e4d423830d6f52352d21dabe1
2022-11-09 03:23:09 +00:00
donghualin
28cc1b440c fix: 适配最新版本的dtk
dtk的路径名称发生了变化,先删除这个路径,由各个项目自己来添加

Log: 适配最新版本的dtk
Influence: 无
Task: https://pms.uniontech.com/task-view-213083.html
Change-Id: I700f5c47796a8cc3a24449594db5b0269d8ac084
2022-11-09 03:23:09 +00:00
donghualin
1e87fd5122 fix: 修复时尚模型下图标铺满任务栏的显示问题
时尚模式下,计算任务栏的图标的尺寸和任务栏应用区域尺寸的时候,没有考虑托盘区域的尺寸,导致应用区域的尺寸过大,当图标铺满任务栏的时候,将整个任务栏挤出到屏幕外

Log: 修复任务栏时尚模式下的图标的显示问题
Influence: 时尚模式下,不断向任务栏添加图标,知道铺满,观察任务栏是否在屏幕可见区域内
Task: https://pms.uniontech.com/task-view-150049.html
Change-Id: Ie3a3a459df7dd4fb127f6e7daa2e8b1c60a88c30
2022-11-09 02:31:37 +00:00
donghualin
e663e4ac16 feat: 完善onboard插件的接口
适配v23并完善接口内容

Log: 完善onboard插件接口
Influence: 快捷面板观察onboard插件是否正常显示
Task: https://pms.uniontech.com/task-view-212611.html
Change-Id: Ic3db0b0b880b20327a210ac103f116e58d7ffd6d
2022-11-09 02:31:37 +00:00
donghualin
6ab996ded9 fix: 优化快捷面板显示插件区域的方式
将快捷面板区域单列、两列和下方显示的插件区域提取公共的基类,这三种插件的显示区域分别继承自这个基类,在面板显示区域按照统一的接口来显示不同类型的插件

Log: 优化快捷面板插件显示方式
Influence: 打开快捷面板,观察插件是否正常显示
Task: https://pms.uniontech.com/task-view-189527.html
Change-Id: I5a3c1e0fd38f618fd342a13c738406b281ab3a52
2022-11-08 09:17:36 +00:00
donghualin
7658f813f6 fix: 修改任务栏加载老版本插件的方式
老版本插件的加载通过插件的版本号进行判断,若插件版本不在版本列表中,则无需加载

Log: 优化任务栏加载老版本插件的方式
Influence: 任务栏启动的时候,观察老版本的插件(例如U盘插件等其他v20插件)是否正常加载
Task: https://pms.uniontech.com/task-view-112073.html
Change-Id: I57b56276ee0cef14b59ff4b8bb8e223e0177f3bd
2022-11-08 02:27:20 +00:00
donghualin
ec894f286a fix: 修复快捷面板没有刷新最新状态图的问题
当插件调用updateDockInfo接口的时候,快捷面板重新最新状态的插件图标的显示

Log: 修复快捷面板没有实时显示图标变化的问题
Influence: 笔记本上打开快捷面板,拔掉电源或插上电源,观察电池状态是否发生变化
Task: https://pms.uniontech.com/task-view-208069.html
Change-Id: I81f97d69d3acbcd2a0a8e540274702b21ecde6b5
2022-11-07 07:23:15 +00:00
donghualin
e67b016b27 style: 枚举变量的信号传递去掉引用
枚举变量无需使用引用传递

Log:
Influence: 无
Task: https://pms.uniontech.com/task-view-96831.html
Change-Id: Ic699c4c5fc0b495f614085306e9b473db493a86a
2022-11-07 07:23:15 +00:00
zhaoyingzhen
e6dd4cff31 fix: 解决任务栏跨端协同在paired状态变化后主动请求协同连接的问题。
其他地方操作跨端协同连接导致设备paired状态变化,任务栏跨端协同功能主动请求协同连接后续操作,会导致其他地方操作pair后直接设备共享的问题。

Log: 解决任务栏跨端协同在paired状态变化后主动请求协同连接的问题。
Influence: 任务栏设备协同连接功能。
Change-Id: Ie821de0cb36ad43476c860d5b3721be5a77b0699
2022-11-07 13:39:37 +08:00
donghualin
3e84154462 fix: 修复快捷面板应用打开详细页面位置错误的问题
快捷面板点击到了非展开区域的情况下,直接打开快捷面板的弹出窗口,导致隐藏了快捷面板窗口

Log: 优化快捷面板交互问题
Influence: 从快捷面板展开蓝牙或者网络右侧的展开按钮,观察是否显示正常
Task: https://pms.uniontech.com/task-view-211641.html
Change-Id: I52a3a74d035aed28465d82c5efb680f9ddb9ded8
2022-11-04 06:29:16 +00:00
donghualin
3a5e8c1ec6 style: 修改快捷区域key值
修改快捷区域key值

Log: 修改快捷区域获取数据的key值
Influence: 无
Task: https://pms.uniontech.com/task-view-96831.html
Change-Id: Ie405a9b45c173092f5c32a06d85f44ec88a1f54e
2022-11-04 06:29:16 +00:00
donghualin
9e60447a4d fix: 删除编译警告
删除CMakeLists.txt中多余的包含文件,防止编译的时候找不到对应的包引起报错或者警告

Log: 消除编译警告
Influence: 无
Task: https://pms.uniontech.com/task-view-96831.html
Change-Id: I0b432916718ef1d3e46b6840513640ab9007982a
2022-11-04 06:29:16 +00:00
donghualin
cf376ebb3f style: 消除编译警告信息
将代码中的过期的不建议使用的函数或类替换成建议使用的函数或类

Log: 消除编译警告
Influence: 无
Task: https://pms.uniontech.com/task-view-96831.html
Change-Id: Ie42a3eed97013adb047105bcf75e07ff8e0277a0
2022-11-04 06:29:16 +00:00
donghualin
9985c9b239 feat: 声音插件适配v23
将声音的相关功能移到sound插件中,方便扩展,并适配v23的接口

Log: 声音插件适配v23
Influence: 观察任务栏是否存在声音插件
Task: https://pms.uniontech.com/task-view-210309.html
Change-Id: I7f782af6955a017af940e639a02eedab8f459905
2022-11-04 05:09:03 +00:00
donghualin
dd1ed1c0d4 feat: 快捷面板支持插件控制区域的显示
目前将声音的功能移到插件中实现,支持声音插件的面板的展示

Log: 简化任务栏代码,优化插件加载逻辑
Influence: 快捷面板,观察声音、亮度调整和音乐播放等功能是否显示正常
Task: https://pms.uniontech.com/task-view-208579.html
Change-Id: I8fd7917e06dd7505da65dc36767166a779ffb0e6
2022-11-04 05:09:03 +00:00
donghualin
ae74a6133f fix: 实现高效模式下托盘和快捷插件拖动功能
高效模式下和时尚模式下托盘区域共用一个TrayModel,在拖动图标的时候,时尚模式和高效模式保持相同的状态

Log: 实现高效模式下图标的拖动功能
Influence: 高效模式,从托盘或快捷面板拖动图标到任务栏
Task: https://pms.uniontech.com/task-view-112073.html
Change-Id: I279b572231ea8efc9bd7f1ee0e628e9ee3eb064e
2022-11-02 06:58:03 +00:00
donghualin
db3e5f79da feat: 图标增加toolTip和菜单
分别在QuickDockItem类,SystemPluginItem类和SystemPluginItem类中增加如下处理
1、增加toolTip功能
2、增加右键菜单功能

Log: 图标增加toolTip和菜单
Influence: 鼠标放入到托盘区域、快捷插件区域,关机区域,观察是否存在toolTip,右键,观察是否弹出菜单
Task: https://pms.uniontech.com/task-view-112073.html
Change-Id: I7a700d9b9e4ee3c0681ae0de39712f3f5ae83224
2022-11-02 06:35:30 +00:00
donghualin
91d5bfbf07 fix: 修复任务栏没有加载显示桌面和多任务视图的问题
1、修改DBUS接口中获取当前已加载插件的接口
2、重新定义插件类型:快捷区域插件Quick, 工具插件(回收站等)Tool,托盘插件(U盘图标)Tray,系统插件(开机关机图标)System,固定区域插件(显示桌面和多任务视图)Fixed
3、加载固定区域插件(显示桌面和多任务视图)

Log:
Influence: 任务栏查看是否存在显示桌面和多任务栏视图的插件
Task: https://pms.uniontech.com/task-view-112073.html
Change-Id: Ia7ee8f94ae89ebc93b239f1d078c44e37b50b8ac
2022-11-02 06:35:30 +00:00
Felix Yan
1571d3099b fix: remove redundant dependency on dde-network-utils
Remove redundant dependency on dde-network-utils.

Log: Remove redundant dependency on dde-network-utils
2022-11-02 05:07:39 +00:00
donghualin
b670c15d1d fix: 托盘跟随高效模式调整任务栏位置
1、DockTrayWindow类增加调整位置接口,在改变任务栏位置的时候,调整高效模式下托盘区域的尺寸,让其适应任务栏
2、根据需求,删除任务栏右侧的显示桌面区域,该区域留给窗管做活动角

Log:
Influence: 高效模式下,调整任务栏位置,观察托盘区域是否正常
Task: https://pms.uniontech.com/task-view-112073.html
Change-Id: If3ad21c12abfe67e6eff8be713ef20905d03e637
2022-11-01 10:04:58 +00:00
donghualin
b2633a5f50 fix: 加载系统托盘插件
1、systemTray目录下的插件由QuickItemController类来统一加载,托盘区域增加系统插件的展示
2、蓝牙、飞行模式等插件修改为普通插件,用于在快捷面板显示

Log: 托盘区显示系统托盘插件
Influence: 插入U盘,查看托盘区域是否有U盘图标
Task: https://pms.uniontech.com/task-view-112073.html
Change-Id: I57e1321fcc59dfc7cfad1c21aca343203e3fad00
2022-11-01 16:08:21 +08:00
donghualin
ee248287d3 feat: 适配v20插件加载
增加适配器,适配v20插件为v23接口,保证能正常加载v20插件

Log: 增加对v20插件的正常适配
Influence: 加载v20插件
Task: https://pms.uniontech.com/task-view-112073.html
Change-Id: If0b3c83cc808f62c0b15554fe6d58f90dc376175
2022-11-01 16:08:21 +08:00
donghualin
9e2e8fb18d feat: 高效模式增加加载插件的功能
删除原来的tray插件,高效模式下,加载插件使用时尚模式相同的加载插件的方式

Log: 增加高效模式加载插件的功能
Influence: 高效模式下加载插件
Task: https://pms.uniontech.com/task-view-112073.html
Change-Id: I5766382fb64bd544b3c7a9c40d1ce4668613d508
2022-11-01 16:08:21 +08:00
zhaoyingzhen
a8b8e6bd00 fix: 修复跨端协同设备数量变化时列表页面显示不全的问题。
当跨端协同列表数量变化的时候,没有将子页面高度变化通知父窗口从而更新整个页面高度导致的问题。

Log: 修复跨端协同设备数量变化时列表页面显示不全的问题
But: https://pms.uniontech.com/bug-view-165835.html
Influence: 跨端协同设备变化时,页面显示。
Change-Id: I3a0ac51ea7f412cc530a075ad55b4cc710a5df90
2022-10-31 13:10:19 +08:00
范朋程
c73ef98002 fix: 修复部分托盘无图标的问题
未在初始化时获取图标信息

Log: 修复部分托盘无图标的问题
Influence: 安全中心、授权管理等应用的托盘图标
Bug: https://pms.uniontech.com/bug-view-160761.html
Change-Id: I5b4a3a2d7b688ad0275e3acfe2bd72841a75e92a
2022-10-28 15:18:37 +08:00
donghualin
fabfe1846f fix: 修复从任务栏拖动图标分屏后鼠标回到任务栏遮罩不消失的问题
在releaseSplit中增加隐藏遮罩的处理

Log: 优化任务栏分屏功能
Influence: 从任务栏拖动图标到桌面,不松手,然后再回到任务栏,观察遮罩是否消失
Task: https://pms.uniontech.com/task-view-181523.html
Change-Id: I9ec2a3ca62cd830cc6b4f7079d2550e9d21a36c1
2022-10-27 10:31:31 +00:00
donghualin
e02ce4f03b fix: 修复高缩放率下启动器位置显示错误和无法设置智能隐藏的问题
向后端发送任务栏尺寸的时候,无需计算分辨率相关,此处去掉分辨率的设置

Log: 优化高缩放率下任务栏的数据错误
Influence: 前提:屏幕分辨率设置为1.25;1、任务栏设置为智能隐藏,将窗口拖动到任务栏下方,观察任务栏是否隐藏;2、观察启动器的位置是否正确
Bug: https://pms.uniontech.com/bug-view-154513.html
Bug: https://pms.uniontech.com/bug-view-157413.html
Change-Id: Iebd9f31b9207852425d5215bb3b92152ec4ab46c
2022-10-27 10:31:31 +00:00
donghualin
c474ae7b23 feat: 蓝牙插件适应快捷插件接口
蓝牙插件增加PluginsItemInterface的新增接口,适应快捷面板的功能

Log:
Influence: 任务栏-快捷设置-蓝牙
Task: https://pms.uniontech.com/task-view-121387.html
Change-Id: I324233d5b2a4dae3b7ede2ad10ccf9afb7cfd401
2022-10-27 10:31:31 +00:00
baodi
a213f09616 chore: 更新changelog
更新版本号

Log:
Task: https://pms.uniontech.com/task-view-204765.html
Influence: 版本号
Change-Id: Iad1f011369217791fdccfaae42dde7581618680f
2022-10-19 12:59:19 +08:00
zhaoyingzhen
4d27965224 fix: 修复时尚模式下快捷设置面板显示设置子页面显示不全,导致跨端协同设备列表显示异常问题。
显示设置子页面获取页面的高度错误导致显示不全的问题。

Log: 修复时尚模式下快捷设置面板显示设置子页面显示不全的问题。
Bug: https://pms.uniontech.com/bug-view-160587.html
Bug: https://pms.uniontech.com/bug-view-160599.html
Influence: 时尚模式下显示设置子页面显示问题。
Change-Id: I52fa0d279f3ded73a2630b20f3b08dc2fb7d85c9
2022-10-18 14:27:03 +08:00
zhaoyingzhen
7ffb1e0188 fix: 修复跨端协同设备列表数量显示不对的问题。
1.原有获取设备数错误,已修复。
2.修改设备列表以设备uuid为标识一台设备方案,改为使用MachinePath,避免服务挂掉重启后,设备列表不更新导致设备连接异常。
3.增加页面显示判断后端服务valid,如果invalid,则清空设备列表数据。
4.去掉自动扫描功能,后端已提供定时发送扫描的全量设备。

Log: 修复跨端协同设备列表数量显示不对的问题。
Bug: https://pms.uniontech.com/task-view-203831.html
Influence: 跨端协同设备数量,及设备协同连接。
Change-Id: I3a2cb2f5f77f36df89db53e135838c79df8498ed
2022-10-18 13:25:56 +08:00
donghualin
480f621fbf fix: 修复任务栏在右侧智能隐藏失败
计算任务栏右侧位置的时候,x坐标设置错误导致窗口向右移动后,任务栏计算重合区域错误,将x坐标修改为正确的位置即可解决

Log: 修复任务栏在右侧智能隐藏失败的问题
Influence: 任务栏右侧智能隐藏,将窗口拖动到任务栏的右侧,观察任务栏是否隐藏
Bug: https://pms.uniontech.com/bug-view-154513.html
Change-Id: Ia4357c60872acf502295d9339160339a33626bcc
2022-10-13 05:58:05 +00:00
donghualin
cb96a7bab8 fix: 修复wayland下窗口预览为空的问题
将获取窗口预览图的接口修改为CaptureWindow接口来获取,在wayland和x11下接口统一

Log: 修复wayland下窗口预览图为空的问题
Influence: 进入wayland,鼠标放入任务栏已经打开的窗口图标上,观察预览图是否显示
Bug: https://pms.uniontech.com/bug-view-140919.html
Bug: https://pms.uniontech.com/bug-view-150475.html
Change-Id: Idc18a356c8df19a73130362e839a61ed26108d23
2022-10-12 02:21:41 +00:00
donghualin
ebccd73378 fix: 修复开启启动器后鼠标再次点击无法关闭启动器的问题
接口调用从Show改成Toggle

Log:
Influence: 从任务栏点击鼠标开启启动器,再次点击鼠标,观察启动器是否收缩
Task: https://pms.uniontech.com/task-view-198183.html
Change-Id: I956270a1f601e913385ee334d4f240bf3f85c349
2022-09-28 07:05:17 +00:00
donghualin
3f4ff0d292 style: 优化CMakeList.txt文件
CMakeList.txt文件中从GLOB改成GLOB_RECURSE,删除重复的包含

Log: 优化CMakeList.txt文件
Influence: 无
Task: https://pms.uniontech.com/task-view-96831.html
Change-Id: I2ca603eed4704f2d2c6eb87a027836e768084c7f
2022-09-27 02:58:33 +00:00
donghualin
386e18634e fix: 修复高效模式下托盘入口图标没有跟随位置变化而变化
将ProxyPluginController的eventFilter函数默认返回值设置为AbstractPluginsController的默认返回值

Log: 修复高效模式下托盘入口图标没有跟随位置变化而变化
Influence: 时尚模式下改变任务栏位置,观察托盘入口是否发生变化
Bug: https://pms.uniontech.com/bug-view-147743.html
Change-Id: I81ccfb3add3de93b9e9cd418c446d81fc765b199
2022-09-26 05:42:57 +00:00
donghualin
c9aca4f728 fix: 修复wayland环境时尚模式下打开企业微信崩溃的问题
wayland下时尚模式的xcb_connection_t的值为nullptr,构造函数中传入一个可用的值

Log: 修复wayland环境时尚模式下打开企业微信崩溃的问题
Influence: 进入wayland桌面,进入时尚模式,打开企业微信,双击,观察企业微信是否正常打开
Task: https://pms.uniontech.com/task-view-196629.html
Change-Id: Ib0a5ebdadbce672474db9dab57f27da263b8096b
2022-09-26 03:16:55 +00:00
范朋程
279ff63e41 feat: 支持通过环境变量的形式指定插件的路径
插件路径优先由DOCK_PLUGIN_PATH指定

Log:
Influence: 影响插件加载,对旧插件保持兼容
Issue: https://github.com/linuxdeepin/developer-center/issues/3402
Change-Id: I9f499bff59767b7993e94d14bd3fa52f4c27c734
2022-09-26 09:38:09 +08:00
donghualin
9b9bdc2286 fix: 时尚模式增加阴影
在切换模式根据当前模式判断是否增加阴影

Log: UI优化
Influence: 时尚模式观察阴影
Bug: https://pms.uniontech.com/bug-view-137267.html
Change-Id: I510fa4c2a66ed144cf97c88592c52d2b66d93a78
2022-09-22 08:56:24 +00:00
donghualin
54596580fb feat: 删除任务栏中控制中心设置插件
控制中心设置任务栏插件已经移动到dde-control-center中,此处不再需要,删除

Log: 个性化任务栏插件移动到控制中心
Influence: 无
Task: https://pms.uniontech.com/task-view-130353.html
Change-Id: I4d94f46fb1c6d6ad61f46334742f736dd7291245
2022-09-22 05:29:20 +00:00
donghualin
fba15f118a fix: 修复任务栏在副屏上方鼠标跟随未移动到左侧的问题
原因:任务栏修改位置从下到上方的时候,未更新XEventMonitor监听的位置,所以在鼠标移入主屏幕的时候没有响应cursorMove信号,导致任务栏没有移动

Log: 修复任务栏在副屏上方鼠标跟随未移动到左侧的问题
Influence: 开启鼠标跟随,任务栏默认在主屏,鼠标移动到副屏幕,任务栏跟随到副屏幕,改变任务栏位置为上,此时任务栏在副屏幕的上方,将鼠标移动到主屏幕的上方,观察任务栏是否移动到主屏幕的上方
Bug: https://pms.uniontech.com/bug-view-147641.html
Change-Id: Ie1265f14509b582325adca2f542c4dc0af1fc53c
2022-09-22 04:48:04 +00:00
zyz
18fdbcd838 feat: 添加任务栏跨端协同操作功能。
添加任务栏跨端协同操作(连接设备,请求协同)功能。

Log: 添加任务栏跨端协同操作功能。
Influence: 任务栏跨端协同功能。
Task: https://pms.uniontech.com/task-view-119639.html
Change-Id: I706310ee16bcde899f6106375fbb911b3062ab3f
2022-09-20 11:48:20 +08:00
范朋程
7ac4592ebb fix: 修复部分托盘服务对应进程状态异常时导致任务栏卡死问题
fcitx进程异常时,其statusnotifieritem服务被任务栏调用会导致任务栏卡死

Log: 解决部分情况下任务栏卡死问题
Influence: 托盘服务
Bug: https://pms.uniontech.com/bug-view-121947.html
Change-Id: Ia7bc9cf077b3b707677a5fe5388b483600ba0de8
2022-09-19 13:42:42 +00:00
donghualin
c7826edd46 fix: 删除任务栏对libdframeworkdbus-dev库的依赖
1、删除项目中对libdframeworkdbus-dev库的依赖,通过使用xml2cpp的工具来自动生成dbus接口文件,在使用到dbus库的项目中包含生成文件的目录
2、修改相关服务中v20的接口(com.deepin...)为v23的接口(org.deepin...)

Log:
Influence: 打开控制中心,鼠标移动唤醒任务栏、加载插件等,观察相关功能是否正常
Task: https://pms.uniontech.com/task-view-182009.html
Change-Id: I960c849d06ed271ebbb9f8e479d9879967523581
2022-09-19 11:41:31 +00:00
donghualin
29647bf7a1 fix: 修改v20的接口为v23的接口
将所有用到的com.deepin相关的接口改成org.deepin相关的接口

Log:
Influence: 打开控制中心,鼠标移动唤醒任务栏等操作
Task: https://pms.uniontech.com/task-view-182009.html
Change-Id: I3c56dfaa0e95d03fc75468e0a7a5d2ce217a6e63
2022-08-26 13:55:14 +00:00
donghualin
282e933225 feat: 删除插件基类的isPrimary接口
删除isPrimary()接口,插件继承的时候无需实现该接口,任务栏读取是否主插件的时候从json中读取配置即可

Log: 优化任务栏插件的接口
Influence: 安装网络插件,查看网络插件是否在快捷设置面板中显示两列图标
Task: https://pms.uniontech.com/task-view-121387.html
Change-Id: I1d47e6c7b4162f4fdc36bf4879bbd85c0caaff69
2022-08-25 19:31:44 +00:00
donghualin
1691e7188c fix: 任务栏代码结构优化解耦
原来的TrayManagerWindow的类是放到MainPanelWindow类里面作为它的一部分,导致窗管在显示的时候有很多问题
修改方案:
1、将左右侧区域拆分成两个窗体,让它们继承自相同的基类MainWindowBase。
2、左右区域公共的部分,例如圆角、展示区域、动画获取等,都在基类中实现或者通过接口返回
3、增加WindowManager类,管理所有的界面,WindowManager类无需知道具体子类的指针,只需要根据相应的接口来获取即可
4、所有的界面类在main.cpp中创建,调用WindowManager对象设置
5、拆分MultiScreenWorker类,使MultiScreenWorker类只关心任务栏相关的逻辑,无需关心窗体或界面

Log: 优化任务栏的显示问题
Influence: 打开任务栏,观察时尚模式下圆角,左右侧区域中间是否连接在一起等
Bug: https://pms.uniontech.com/bug-view-137267.html
Bug: https://pms.uniontech.com/bug-view-140029.html
Bug: https://pms.uniontech.com/bug-view-134527.html
Bug: https://pms.uniontech.com/bug-view-146743.html
Bug: https://pms.uniontech.com/bug-view-150293.html
Change-Id: I4266f6f8c983f61258b92834d93cdacd0221d7de
2022-08-25 19:31:44 +00:00
donghualin
fc8294c46c fix: 修复wayland环境下应用打开窗口无法显示预览的问题
wayland环境下,窗管无法提供windowId,原来通过windowID的方式获取截图的方式失效,因此窗管增加了通过窗体的UUID的方式来获取截图的接口,前端通过传入UUID的方式来获取截图

Log: 修复wayland环境下无法显示预览图的问题
Influence: wayland-任务栏打开一个应用窗口,鼠标放入到窗口上,查看预览图
Bug: https://pms.uniontech.com/bug-view-140919.html
Change-Id: I3506e8edb8f875ba7c5d7b3d3471ad51a3170f58
2022-08-18 15:41:57 +00:00
donghualin
d6f0860fcf feat: 任务栏应用拖动到移除驻留
判断鼠标拖动的位置是否在回收站区域,如果在回收站区域,则执行移除驻留的功能

Log: 增加任务栏应用到回收站移除驻留的功能
Influence: 拖动任务栏应用到回收站,观察是否可以移除驻留
Bug: https://pms.uniontech.com/bug-view-147699.html
Change-Id: Ib0a17f0f4647827b2c2a0e70d98a86c1b9135c11
2022-08-18 15:41:57 +00:00
donghualin
56c3019a5c feat: 增加窗口多开的功能
增加窗口多开的窗口类,用于绘制应用图标和打开窗口的图标,根据实际情况让其显示到正确的位置

Log: 增加窗口多开的功能
Influence: 控制中心开启多开窗口显示,观察应用打开的窗口是否在对应的位置显示
Task: https://pms.uniontech.com/task-view-170977.html
Change-Id: I96371b1304f5373f17dad95893ee656056e5f457
2022-08-18 15:41:57 +00:00
donghualin
90a076a043 feat: 增加适配控制中心设置是否使用最近区域的功能
增加获取是否显示最近使用应用的接口,相应相关的功能

Log:
Influence: 开关是否显示最近使用应用,时尚模式下观察最近使用应用是否显示或隐藏
Bug: https://pms.uniontech.com/bug-view-147717.html
Change-Id: I5de2f978da6f5911a8c873b903095ef9f7bbd14e
2022-08-16 13:19:05 +00:00
donghualin
766d6dfcfd fix: 修复从最近使用区域移除驻留后应用图标没有驻留到应用区域最末尾
在AM端处理移除驻留的时候,将需要移除的应用放到列表的最后面,前端在处理应用app发生变化的时候,从后端获取应用的排序,并按照正确的顺序进行排序

Log: 修复驻留最近使用图标无法添加到末尾的问题
Influence: 任务栏时尚模式下,在最近使用区域移除驻留,观察移除的驻留是否在区域的末尾
Bug: https://pms.uniontech.com/bug-view-147643.html
Change-Id: I127aea93d9ff5718aa6bd1989a328b11dbd95a2f
2022-08-16 13:19:05 +00:00
donghualin
028762a5b6 fix: 时尚模式下日期时间增加右键菜单
时尚模式下的日期时间增加右键菜单,并且响应对应的功能

Log:
Influence: 任务栏-时尚模式,右键查看日期时间是否存在时间日期菜单
Task: https://pms.uniontech.com/task-view-162235.html
Change-Id: I7a7cb951647d8fcba85087e8baec54f41d9f9226
2022-08-16 10:29:26 +00:00
donghualin
c78f101e84 fix: 修复从任务栏无法打开控制中心问题
由于控制中心适配了v23的接口,所以需要在任务栏增加USE_AM宏的控制,未使用USE_AM宏的调用com.deepin.dde.ControlCenter接口,使用USE_AM宏的使用org.deepin.dde.ControlCenter1接口。

Log: 优化任务栏打开控制中心的问题
Influence: 任务栏-任务栏设置-打开控制中心 任务栏-蓝牙-蓝牙设置 任务栏-日期-日期时间设置 任务栏-电源-电源设置 任务栏-关机-关机设置 任务栏-声音-声音设置 观察是否正常打开控制中心
Bug: https://pms.uniontech.com/bug-view-149189.html
Change-Id: I3373fc641c35e7589730a7cd595f2f55929ad2ec
2022-08-16 10:29:26 +00:00
songwentao
830e0a7b2f feat: 开启AM宏
开启AM宏定义
清除一个未定义的变量,解决编译报错

Log:
Influence: 无
Task: https://pms.uniontech.com/task-view-162227.html
Change-Id: I5d94d7d6176a2bac663d5bedf07429fdbbd85279
2022-08-15 16:46:31 +08:00
donghualin
9c1eb32e24 feat: 拖动任务栏图标实现分屏效果
拖动任务栏图标到屏幕中间,如果在左侧,显示左分屏效果,在右侧,显示右分屏效果

Log: 完成任务栏图标分屏效果的功能
Influence: 从任务栏拖动图标到屏幕上方,查看是否有分屏功能
Task: https://pms.uniontech.com/task-view-163465.html
Change-Id: I1a7a33646edb6f55972b8e5fa2c5f39ce026fe8e
2022-08-12 08:13:12 +00:00
范朋程
f938f66bb5 fix: 修复多任务视图界面点击任意处均导致任务栏显示右键菜单的问题
任务栏错误收到了一次点击事件,
在显示之前判断一下当前的位置是否在任务栏之上即可

Log: 修复多任务视图界面点击任意处均导致任务栏显示右键菜单的问题
Influence: 任务栏右键菜单显示的时机
Bug: https://pms.uniontech.com/bug-view-150507.html
Change-Id: Iec1764213ce8ae314a8d2a97537cb05ebf48a694
2022-08-02 09:13:26 +08:00
lvpeilong
2194af2f6b fix: 时尚模式时间日期tips有wayland默认tittle
时尚模式时间日期tips窗口wayland下未设置无边框属性

Log: 任务栏时尚模式时间日期tips窗口wayland下添加置无边框属性
Bug: https://pms.uniontech.com/bug-view-149173.html
Influence: 任务栏时尚模式下时间日期tips是否显示正常
Change-Id: Id35ee366e0ad9f75d0b2f2e48fa12ea5e78a0845
2022-08-01 17:20:02 +08:00
范朋程
a13a4f3b84 fix: 修复托盘图标提示信息显示异常的问题
对提示的窗体设置无边框属性,避免在wayland下显示窗口标题

Log: 修复托盘图标提示信息显示异常的问题
Influence: 托盘提示信息显示
Bug: https://pms.uniontech.com/bug-view-150521.html
Change-Id: I50c67ebf555b590bd5ecf2554eb845c7a85ef360
2022-07-29 11:48:06 +08:00
caixiangrong
9aa5dd4639 chore: 更新changelog
更新版本号为6.0.3

Log:
Task: https://pms.uniontech.com/task-view-160471.html
Influence: 版本号
Change-Id: I414a87175c1ecab38982f89bc20191b24ac72d69
2022-07-25 13:11:00 +08:00
donghualin
d97ce8c67a fix: 修复从任务栏或其他应用打开控制中心卡死的问题
控制中心的接口已从com.deepin.dde.ControlCenter改成org.deepin.dde.ControlCenter,对应的任务栏的相关接口也要做相应的修改

Log: 优化任务栏打开控制中心的问题
Influence: 任务栏-任务栏设置-打开控制中心,观察打开的时间
Bug: https://pms.uniontech.com/bug-view-149189.html
Change-Id: I30f50b9b824ca819884f31ddf1671f40e813486a
2022-07-22 02:28:43 +00:00
zyz
51915b44a1 chore: 优化有关slider等相关的操作代码
优化局部代码。

Log: 优化代码。
Influence: 快捷设置面板slider操作。
Change-Id: I48e9ae9ba55d18133fd66b6327cd5d9c835858c3
2022-07-20 15:34:02 +08:00
zyz
7502b87e06 fix: 修复拖拽托盘窗口图标至任务栏托盘区域经常失败的问题。
修复拖拽托盘窗口图标至任务栏托盘区域经常失败的问题。原因:现有实现只在任务栏托盘一小块区域实现,导致拖拽经常不能被捕获,已修改为托盘父窗口区域捕获传递给任务栏托盘区域处理,实现每次拖拽都能捕获。

Log: 修复拖拽托盘窗口图标至任务栏托盘区域经常失败的问题。
Bug: https://pms.uniontech.com/bug-view-147789.html
Influence: 拖拽托盘窗口图标至任务栏托盘区域。
Change-Id: I310916160fe1dc0e05b134a45a018c81766fe8cf
2022-07-15 18:15:29 +08:00
zyz
16cb904058 feat: 点击任务栏时间显示窗口呼出小组件面板。
点击任务栏时间显示窗口呼出小组件面板。

Log: 点击任务栏时间显示窗口呼出小组件面板。
Influence: 点击任务栏时间窗口小组件是否显示。
Task: https://pms.uniontech.com/task-view-165407.html
Change-Id: I6ca10644a6b15338a79240f2d7d3c37127f1f42a
2022-07-15 15:05:31 +08:00
lvpeilong
a2b4a11617 feat: recompile
recompile

Log: recompile
Influence: recompile
Change-Id: I810ad03852cd5d386f1bc2ec33d193ba1857bf92
2022-07-11 14:32:24 +08:00
donghualin
301e515319 feat: 增加工具区域的使用
时尚模式下,在最近使用区域右侧增加工具区域的功能,时尚模式切换到高效模式后,高效模式依然显示原来的区域

Log: 时尚模式下增加工具区域
Influence: 时尚模式下,查看最近打开区域右侧是否显示回收站,来回切换时尚模式与高效模式,查看回收站位置是否发生变化
Task: https://pms.uniontech.com/task-view-152867.html
Change-Id: Icaf77f09b737ca9473767fa876883ac0fdddb1ad
2022-07-11 03:18:34 +00:00
donghualin
a4172e6763 feat: 增加最近使用应用的功能
在MainPanelControl面板中增加一块区域,用来存放最近打开应用

Log: 增加最近使用应用功能
Influence: 控制中心最近使用区域开启情况下,时尚模式,打开一个没有驻留在任务栏的应用,查看新打开的应用是否在最近打开应用区域
Task: https://pms.uniontech.com/task-view-158441.html
Change-Id: Ibd28d16b08fcacf7ace23158725dd5dd2eae8d37
2022-07-08 09:06:12 +00:00
donghualin
0dfb004ac0 feat: 暂时取消使用AM宏
适配启动器,先暂时取消使用AM宏,保证先正常使用

Log:
Influence: 无
Task: https://pms.uniontech.com/task-view-162227.html
Change-Id: I9dcf089bf361f932cd82e40bc19892d9a74b70e7
2022-07-08 11:38:45 +08:00
donghualin
71a12bb770 fix: 删除任务栏启动时候用ldd检测libdtk库
v23版本无须检测,删除dtk库的检测,防止在启动的时候出现错误信息

Log: 优化任务栏启动
Influence: 任务栏启动的时候检测是否有ldd报错信息
Task: https://pms.uniontech.com/task-view-157235.html
Change-Id: I51e229a46a46c8a745e5db59b4e1902fb74c15f2
2022-06-30 16:04:31 +08:00
donghualin
399a8d7620 fix: 修复任务栏在高缩放率下防呆位置错误
调用当前类内部的接口来获取当前任务栏所在屏幕的尺寸,来设置区域值,这样保证设置的值是正确的

Log: 修复任务栏在高缩放率下防呆位置错误
Influence: 高缩放率下,查看防呆区域
Change-Id: I1a54b23649c22d8e77ea184ecc03a5917fd1a837
2022-06-29 17:39:43 +00:00
donghualin
d6df41f3be fix: 修复wayland环境下任务栏右键菜单带有标题栏的问题
原因:原来的QMenu类是在头文件中直接定义的,没有指定parent
解决方案:头文件中定义指针,在cpp文件中创建,并指定parent

Log: 修复wayland环境下任务栏菜单显示异常
Influence: wayland下查看任务栏图表的右键菜单
Bug: https://pms.uniontech.com/bug-view-140873.html
Change-Id: Ib2792a47877040eed1ad1bae611ebfd79e13b38f
2022-06-29 16:04:15 +00:00
donghualin
5f4429b3f8 fix: 修复debian打包使用AM宏不生效的问题
原因:rule中定义的宏只在CMakeLists.txt文件中生效,在c++代码中不生效
解决方案:在CMakeLists.txt文件中直接定义一个宏来判断是否使用AM,这样c++代码中就可以使用CMakeLists.txt文件中的宏

Log:
Influence: 任务栏是否使用AM服务
Task: https://pms.uniontech.com/task-view-133075.html
Change-Id: Icea6ac1ac4d86dfc4f4aab040deabe99a9d1d83c
2022-06-28 11:33:53 +00:00
Fan PengCheng
c3b956d0dc chore: update changelog
update changelog

Log: update changelog
Influence: 无
Change-Id: I7bc1250403060466875d32e2b9e36fd98c8ec063
2022-06-27 16:01:15 +08:00
donghualin
82da556471 fix: 修复控制中心无法取消任务栏插件显示隐藏的问题
原因:获取以加载插件接口错误,导致无法获取到正确的插件,引起无法移除
修复:获取正确的插件对象指针,保证插件正确移除

Log:
Influence: 从控制中心移除任务栏插件,观察任务栏插件是否正常移除
Bug: https://pms.uniontech.com/task-view-121387.html
Change-Id: I0bf44d91de74acba277f76c412955f40b0a7efba
2022-06-24 15:31:07 +08:00
Fan PengCheng
1b179edc55 chore: update changelog
update changelog

Log: update changelog
Influence: 无
Change-Id: I557c15afb78563900287f91346030d3b0a4df8e3
2022-06-23 14:39:52 +08:00
donghualin
c717a96455 fix: 修复任务栏拖动到最小尺寸后图标显示异常
原因:在任务栏变到最小尺寸的时候处理了插件区域的尺寸,重新设置了高度为获取到的最大高度引起任务栏高度设置错误
修改方案:在重新设置任务栏尺寸的时候,根据当前任务栏的位置,只处理宽度(任务栏在屏幕上下方向)或高度(任务栏在屏幕左右方向)

Log: 优化任务栏拖动处理逻辑
Influence: 任务栏,拖动任务栏高度发生变化
Task: https://pms.uniontech.com/task-view-154167.html
Change-Id: I23529000ce32ef9f3ce0a358cb560f6aae5e1eeb
2022-06-22 21:26:34 +08:00
donghualin
bbfe4ff26c feat: 增加插件区域对任务栏的AM访问
托盘插件对任务栏的增加AM的访问方式

Log:
Influence: 任务栏
Task: https://pms.uniontech.com/task-view-133075.html
Change-Id: I91a918a4fe5c495b075e5dff7f528a623be8dc89
2022-06-22 11:18:59 +08:00
donghualin
0aba7ba0db feat: 修改托盘展开图标对AM接口的访问
托盘图标需要通过AM接口来获取透明度,增加该接口对AM服务的访问

Log:
Influence: 任务栏
Task: https://pms.uniontech.com/task-view-133075.html
Change-Id: If4c981e23254776ea73b45834910899f39913ae8
2022-06-22 11:18:59 +08:00
donghualin
7fc1ec3ae5 feat: 修改控制器中对AM接口的访问
修改插件加载相关的类对AM接口的访问

Log:
Influence: 任务栏
Task: https://pms.uniontech.com/task-view-133075.html
Change-Id: Ifbf3ce3b8d9fc3098f1a0a5e3ff4a8bc97e68d67
2022-06-22 11:18:59 +08:00
donghualin
03d7942b2f feat: 修改屏幕管理的相关类中对AM接口的访问
多屏幕管理类、菜单管理类中改成AM来访问后端接口

Log:
Influence: 任务栏
Task: https://pms.uniontech.com/task-view-133075.html
Change-Id: I1d7cccbc58b7c5883c4946a2f92510c98e144692
2022-06-22 11:18:59 +08:00
donghualin
7091b32239 feat: 增加桌面应用图标的AM访问
修复DockItemManager和AppItem类中对AM接口的访问

Log:
Influence: 任务栏
Task: https://pms.uniontech.com/task-view-133075.html
Change-Id: I93a656f5437a24fb2d964b337b793d4759375dc2
2022-06-22 10:06:30 +08:00
donghualin
241dd68d30 feat: 增加任务栏的AM接口
增加任务栏的AM接口的访问模块

Log:
Influence: 任务栏
Task: https://pms.uniontech.com/task-view-133075.html
Change-Id: Ic5570bbae6fa4ff3ecc3d529b49200f7bcb1d63c
2022-06-22 10:06:30 +08:00
donghualin
7b31b5e107 fix: 优化防呆区域的处理
1、修复多屏情况下屏幕位置计算错误导致任务栏无法鼠标跟随
2、纠正多屏情况下的防呆区域

Log: 修复防呆区域错误
Influence: 1、任务栏为跟随鼠标,在多屏情况下检测任务栏是否跟随鼠标 2、将窗口拖动到任务栏下方,观察是否可以拖动,正常情况下是无法拖动到下方
Bug: https://pms.uniontech.com/bug-view-134075.html
Change-Id: I16b3e24eac5acfca781f7f466b9ebc894153634a
2022-06-20 15:03:47 +08:00
donghualin
a9987a6c2a fix: 修复时尚模式下无法移除电源插件的问题
原因:在判断该插件是否可移除之前已经将内存中该插件的数据清除,找不到该插件的信息导致无法移除
修改方案:在判断该插件是否可移除之前不清空该插件的内存,等确定该插件可移除后再清空内存,保证插件获取到的数据始终正确

Log: 修复时尚模式下无法移除电源插件的问题
Influence: 任务栏时尚模式下,打开控制中心-个性化-任务栏-插件区域,去掉电源勾选,查看电源按钮是否消失
Task: https://pms.uniontech.com/task-view-121387.html
Change-Id: I0a9f214dab64e6b81b71d8cf50a969979c69c1ac
2022-06-20 15:03:47 +08:00
donghualin
2ee2fe9eca fix: 修复任务栏图标数量过多的情况下超出屏幕区域的问题
1.计算当前任务栏的尺寸,和屏幕的尺寸取最小值,将这个最小值作为任务栏的实际尺寸
2.当任务栏插件区域行数发生变化的时候,通知任务栏调整尺寸,保证在任务栏调整位置的时候显示的尺寸始终是正确的

Log:
Influence: 1、任务栏图标超过比较多的情况下,查看任务栏是否超出屏幕 2、任务栏从下调整到上方,查看插件区域是否显示异常
Bug: https://pms.uniontech.com/task-view-150049.html
Change-Id: Ic3acd480c7f9deda7e8dfce8b7d7858c76a215e8
2022-06-20 15:03:47 +08:00
donghualin
0a35f5b5e0 fix: 修改时尚模式下分割应用区域和插件区域的方式
原来调用的是dtk的setMaskPath方法,现换成Qt的setMask方法,实现更彻底

Log:
Influence: 任务栏-时尚模式下查看左右区域的显示
Bug: https://pms.uniontech.com/bug-view-134527.html
Change-Id: Ibd5e7db440ae359a59c73e77f5f08951f8571e7a
2022-06-20 13:41:10 +08:00
donghualin
3824e9d9bb fix: 修复快捷设置面板的图标在高缩放率下显示模糊
带背景的圆底图标不再通过自动创建,因为无法控制周边的锯齿,统一在paintEvent函数中进行绘制。修改滑动条统一通过代理来进行绘制

Log:
Influence: 屏幕设置高缩放率,任务栏特效模式下,查看快捷面板图标是否正常显示
Bug: https://pms.uniontech.com/task-view-149623.html
Change-Id: I825e38a9ae8c5a4252be840193e44393ac129201
2022-06-20 13:41:10 +08:00
donghualin
fc181973ce fix: 修复高屏幕缩放下图标显示模糊的问题
增加对屏幕缩放的处理,保证图标正常显示

Log:
Influence: 将缩放设置为大于1,查看任务栏电源图标、网络等图标的展示情况
Task: https://pms.uniontech.com/task-view-149623.html
Change-Id: Ie4be9d0644b5be1f961ee70ee8472cab9dec9377
2022-06-15 13:36:06 +00:00
donghualin
0340166430 fix: 修复任务栏无法打开控制中心对应模块的问题
控制中心的接口名称从ShowModule换成ShowPage

Log:
Influence: 任务栏所有需要打开控制中心的地方
Task: https://pms.uniontech.com/task-view-110311.html
Change-Id: I20b133c55896d6afbf712f767a6688976f080cf0
2022-06-14 13:34:37 +00:00
donghualin
2055820d30 fix: 修复dock在时尚模式下防呆位置错误
时尚模式下由于任务栏没有铺满整个屏幕区域,因此在处理任务栏struct的时候,让其选择整个区域

Log:
Influence: 任务栏-拖动窗口到最下方的区域
Bug: https://pms.uniontech.com/bug-view-134075.html
Change-Id: I4eb3357c01637b6e1cdfc25a0b4f0c5e316ad290
2022-06-14 13:23:17 +00:00
donghualin
44b92d90f5 fix: 修复任务栏关机按钮右键菜单无法响应的问题
完善菜单项的点击接口,保证其能正确触发对应的菜单功能

Log:
Influence: 任务栏-时尚模式下右键菜单功能
Task: https://pms.uniontech.com/task-view-110311.html
Change-Id: Id8d7d767534543d15eda79f77012e21ccdb2527d
2022-06-14 12:50:23 +00:00
donghualin
322623427d feat: 高效模式下加载快捷插件
高效模式下增加读取快捷插件并显示

Log: 高效模式显示快捷插件
Influence: 高效模式显示快捷设置插件
Task: https://pms.uniontech.com/task-view-110311.html
Change-Id: I308e963b4816737b3f596bc9d4b93db06851f447
2022-06-10 16:18:24 +00:00
donghualin
396f8153be chore: 将新增的纯虚接口改成非纯虚接口
保证单元测试正常编译通过

Log:
Influence: 单元测试和其他任务栏插件的调用
Task: https://pms.uniontech.com/task-view-110309.html
Change-Id: Ib4f3780ef14233136fe8680cc8f0bcd64a7e0861
2022-06-09 17:17:50 +00:00
donghualin
8bd51673bc fix: 修复任务栏无法响应插件状态变化引起图标变化的问题
当快捷设置区域的图标发生变化的时候,外部插件需要响应对应的图标变化接口,修改插件区域图标

Log:
Influence: 快捷设置区域-查看图标变化
Task: https://pms.uniontech.com/task-view-110311.html
Change-Id: I19be98ec53145d45db3ee7023c4a0d4012e68a93
2022-06-09 17:17:50 +00:00
donghualin
f25258ca20 fix: 修复蓝牙插件无法打开控制中心的问题
控制中心接口名称已调整,此处修改接口名称

Log:
Influence: 任务栏-蓝牙-右键-蓝牙设置,查看是否能打开控制中心
Bug: https://pms.uniontech.com/bug-view-133829.html
Change-Id: I4954868fe561a03d6faa51a5ad5e9f496a15e233
2022-06-09 17:17:50 +00:00
donghualin
a81c3faf4b fix: 修复在智能隐藏模式下切换显示模式后尺寸显示错误
切换模式后,应该立即设置主窗体的显示模式值,后续在调整任务栏尺寸的时候,保证获取到的尺寸始终是正确的

Log:
Influence: 任务栏-智能隐藏,启动后调整任务栏显示模式,观察尺寸是否发生变化
Task: https://pms.uniontech.com/task-view-112073.html
Change-Id: I04c897fb81126a8d6b21ad4bc950834604629d3a
2022-06-06 15:01:54 +08:00
donghualin
e714c7e44e fix: 修改对老插件的兼容性问题
所有插件的api版本都改成2.0.0,PluginProxyInterface新增的接口放到最后的位置,保证老插件在加载的时候能调用到正确的函数

Log: 修改老插件的兼容性问题
Influence: 任务栏加载老插件
Bug: https://pms.uniontech.com/bug-view-132961.html
Change-Id: I0c2714db6a21f2d246126ce2d9cec96e8c706d80
2022-06-01 21:34:40 +08:00
donghualin
461ece4bd7 fix: 修复任务栏在特效模式下的UI
1、在特效模式下,固定区域、应用区域和托盘区域的分割线是不可见的,因此在绘制颜色的时候判断其是否可见
2、调整关机按钮同时显示文字的最小高度
3、特效模式下任务栏中间扣出来的部分透明

Log:
Influence: 任务栏-特效模式,查看左侧的线条是否可见
Bug: https://pms.uniontech.com/bug-view-134527.html
Bug: https://pms.uniontech.com/bug-view-134489.html
Change-Id: I4ee89702fb409293b8652d6aa71c50a2dd18a7ee
2022-06-01 18:07:35 +08:00
donghualin
2461310ba2 feat: 转测修改changlog版本号
修改changelog版本号

Log: 修改changelog版本号
Influence: 无
Task: https://pms.uniontech.com/task-view-140999.html
Change-Id: Ieb705cdd7373020935f7317473f6639ab2d2c24c
2022-06-01 13:03:49 +08:00
donghualin
0bdc1eb1a2 refactor: 调整插件接口,删除指针引用
去掉插件的指针接口,同时插件根据任务栏图标类别返回不同类型的图标,修改所有已实现的插件接口

Log:
Influence: 任务栏-查看快捷设置图标、快捷区域可点击的图标、系统电源图标是否显示正常
Task: https://pms.uniontech.com/task-view-110309.html
Change-Id: I9ffc42189471bb6183f264b366434d9be77275a4
2022-06-01 11:34:34 +08:00
donghualin
752bf51379 refactor: 重置快捷设置面板所有插件的布局
快捷设置面板中用QGridLayout的方式将所有的插件进行重新布局

Log: 重置快捷设置面板所有插件的布局
Influence: 任务栏-快捷设置面板
Task: https://pms.uniontech.com/task-view-110309.html
Change-Id: I747c30b541a81b1d7c3e5378d842b272427bb963
2022-05-30 14:34:56 +08:00
donghualin
6f2d8b6da6 fix: 修复任务栏无法打开控制中心的问题
控制中心的ShowPage参数做了调整,此处根据需要修改后即可打开

Log:
Influence: 任务栏-右键-任务栏设置,观察控制中心是否正常打开
Bug: https://pms.uniontech.com/bug-view-134291.html
Change-Id: I5dc69119c2dc7ce051fa672d08261e94b6b36fc7
2022-05-27 21:34:02 +08:00
donghualin
4f7704ad6f fix: 修复隐藏模式下无法唤醒任务栏的问题
原因:隐藏模式下会持续发送sizeChanged信号,导致频繁触发隐藏任务栏的函数
修改:接受到sizeChanged信号后,让其显示正常尺寸即可

Log:
Influence: 任务栏-隐藏模式-鼠标唤醒
Task: https://pms.uniontech.com/task-view-112073.html
Change-Id: I1b813d2a3f1d1d96d9e162d4f19cc2579ee26f98
2022-05-27 17:34:21 +08:00
donghualin
9a81886b6a fix: 修复时尚模式下无法显示电源按钮的问题
原因:电源按钮只会加载一次,在时尚模式下已经加载过,导致在高效模式下没有加载到任务栏的controller中
解决方案:将加载电源按钮的controller用一个单例的代理类来实现,FixedPluginController和DockPluginsController同时引用这个类来加载同一个插件

Log: 解决时尚模式下无法显示电源按钮的问题
Influence: 任务栏-查看高效模式下电源插件是否加载
Bug: https://pms.uniontech.com/bug-view-132733.html
Change-Id: I80d0cb9c87e6e1a478410f53a35ccfce344677ea
2022-05-27 15:09:31 +08:00
donghualin
7c3db6c9be fix: 调整快捷设置声音、亮度滚动条样式
1、滚动条样式和设计图保持一致
2、滚动条右侧的图标增加阴影

Log:
Influence: 滚动条-快捷设置面板
Task: https://pms.uniontech.com/task-view-110309.html
Change-Id: I3b4680c94efeb433d22cd3a1ab5d5745d456c3aa
2022-05-27 09:37:15 +08:00
donghualin
e9db102f26 refactor: 优化任务栏电源按钮的展示
调整右侧固定区域的插件的展示方式,通过读取插件的图标和文本的方式来自绘实现

Log:
Influence: 任务栏右侧电源按钮,调整任务栏尺寸
Task: https://pms.uniontech.com/task-view-110311.html
Change-Id: Iee19bd8af12506124bd4ef37805c68671a09651f
2022-05-26 18:08:05 +08:00
donghualin
5fac561991 feat: 关机插件适配任务栏最新接口
增加icon接口,外部收到该接口后会进行展示

Log:
Influence: 任务栏-关机插件图标
Task: https://pms.uniontech.com/task-view-110309.html
Change-Id: I399153e05fa182ffc431aae0574ff66c813ce198
2022-05-26 13:21:39 +08:00
donghualin
751fef14be feat: 电池插件适配任务栏最新接口
增加icon接口,外部收到该接口后会进行展示

Log:
Influence: 任务栏-快捷设置区域电池插件图标
Task: https://pms.uniontech.com/task-view-110309.html
Change-Id: Ibf6f482a54266aaf48c70c0849133da7af49945c
2022-05-25 13:10:33 +08:00
donghualin
43efa10cd9 fix: 调整电源按钮的尺寸
优化电源按钮的尺寸

Log:
Influence: 任务栏-电源按钮
Task: https://pms.uniontech.com/task-view-110311.html
Change-Id: I872db293d93b5b16cf96eea3ed76f02c10b73067
2022-05-25 10:59:16 +08:00
donghualin
b1143e91ce fix: 修复托盘和快捷设置区域行数变化的时候边框显示问题
1.在单行和多行的时候分别获取圆角区域并显示
2.在任务栏调整大小的时候,圆角大小根据实际情况动态计算生成

Log: 优化界面显示
Influence: 任务栏拖动改变大小,查看单行和多行的显示效果
Task: https://pms.uniontech.com/task-view-112073.html
Change-Id: I2f595bb8304c23e95672d953bd53d6d74072ed7b
2022-05-25 10:59:16 +08:00
donghualin
73ad24a682 test: 测试插件适配新的任务栏插件接口
在homemonitor插件中新增插件新的接口,匹配新的任务栏插件

Log:
Influence: 无
Task: https://pms.uniontech.com/task-view-110309.html
Change-Id: Idd9907d55b839939d52121934bd5c28ea349392c
2022-05-25 10:59:16 +08:00
donghualin
1172b54b9f fix: 修复托盘区域调整尺寸的时候托盘图标不居中的问题
修改delegate类的sizeHint方法的返回值,在主窗体尺寸发生变化的时候,发送delegate的sizeHintChanged信号来保证sizeHint方法能实时调用

Log:
Influence: 任务栏上下调整尺寸的时候观察托盘图标的位置变化
Task: https://pms.uniontech.com/task-view-110311.html
Change-Id: I86b6bdc0fb991ff0a2674b0fa799add4b536a6bf
2022-05-25 09:46:10 +08:00
donghualin
75cb4e8160 fix: 修复快捷设置窗体上下不同方向的位置显示不正确
1.在任务栏方向变化后,重新给DArrowRectangle调用setContent方法确保内容窗体显示正确
2.调整快捷设置面板的部件的高度
3.任务栏左右显示的时候,调整快捷设置插件居中显示

Log:
Influence: 任务栏-快捷设置面板位置和尺寸
Task: https://pms.uniontech.com/task-view-110309.html
Change-Id: I3a58070b723bc89c26af07a09e1cbb665d79cbe8
2022-05-25 09:46:10 +08:00
donghualin
fdfe0ba05c feat: 修复任务栏鼠标放到日期时间控件上不显示当前时间的问题
1、增加当前时间的显示
2、实时更新任务栏的时间显示

Log:
Influence: 任务栏V23,查看插件区域时间的显示
Task: https://pms.uniontech.com/task-view-110311.html
Change-Id: I5cb1eb778c2351555cd736fb62525e130a13e3ff
2022-05-20 14:50:22 +08:00
donghualin
6d209d8ddb fix: 修复任务栏bug,优化代码
1.增加license
2.修复bug
3.UI调整

Log: 优化任务栏代码
Influence: v23任务栏
Task: https://pms.uniontech.com/task-view-112073.html
Change-Id: Ic66428699f6060d8b0baefa3dbc2d3603d320242
2022-05-17 20:57:22 +08:00
donghualin
4e7b27a395 feat: 任务栏特效模式集成托盘区域和快捷设置的功能
去掉原来的插件设置区域,将最新的托盘和快捷设置的功能集成进来

Log: 任务栏特效模式集成托盘区域和快捷设置的功能
Influence: v23任务栏特效模式
Task: https://pms.uniontech.com/task-view-112073.html
Change-Id: I985f43d2da28464641fa159c8c6b5040c97e7a49
2022-05-12 17:36:19 +08:00
donghualin
728b700dba feat: 特效模式下右侧插件区域功能
完成插件区域的引用图标加载、快捷设置的展示、老插件的加载等功能

Log: 完成特效模式下右侧插件区域的功能
Influence: v23任务栏右侧插件区域
Task: https://pms.uniontech.com/task-view-110311.html
Change-Id: I1599907d4529c57070ee2e21b70cc0c17f132e5e
2022-05-12 17:36:19 +08:00
donghualin
f3ad519535 feat: 快捷设置面板功能
完成快捷设置面板加载插件,显示插件,完成快捷设置的插件的接口

Log: 完成快捷设置面板的基本功能
Influence: v23任务栏快捷设置面板
Task: https://pms.uniontech.com/task-view-110309.html
Change-Id: Idaf5c50f8f447d684646afd3ed0fa3e42a94f83c
2022-05-12 17:36:19 +08:00
Fan PengCheng
d00f484408 fix: 修复日历图标显示异常的问题
某些情况下,日历图标中的3月会显示错位,这部分是因为3月在svg图片中信息和其他月份不一样,当前已修改

Log: 修复部分情况下日历图标显示异常的问题
Influence: 日历图标显示
Task: https://pms.uniontech.com/task-view-122601.html
Change-Id: I0bb098e22402c163323f7b89cf0ffd3de25bb044
2022-05-09 17:55:04 +08:00
donghualin
40c2d7ead0 chore: 删除无用依赖
删除无用运行依赖,直接使用shlibs:Depends即可

Log: 删除无用运行依赖
Influence: 无
Task: https://pms.uniontech.com/task-view-119973.html
Change-Id: I57ba8e567d39f0e785a4e3d6ff60e5192697f481
2022-05-06 22:14:25 +08:00
donghualin
3f09aabf21 feat: 删除对dde-control-center-dev包的引用
删除项目中对dde-control-center-dev包的引用和其他相关的内容

Log: 删除对dde-control-center-dev包的引用
Influence: 无
Task: https://pms.uniontech.com/task-view-114411.html
Change-Id: Ide84fd08089a2631492a97836761fdd90762c94c
2022-04-27 10:18:10 +08:00
donghualin
9d811ac826 feat: 删除对dde-control-center-dev包的引用
删除项目中对dde-control-center-dev包的引用和其他相关的内容

Log: 删除对dde-control-center-dev包的引用
Influence: 无
Task: https://pms.uniontech.com/task-view-114411.html
Change-Id: I38323556c35fb5c5ec870207f6fceac082c13099
2022-04-25 12:55:25 +08:00
945 changed files with 68109 additions and 39601 deletions

View File

@ -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

12
.github/workflows/call-api-check.yml vendored Normal file
View File

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

View File

@ -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 }}

View File

@ -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

View File

@ -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

View File

@ -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

20
.github/workflows/call-debian-check.yml vendored Normal file
View File

@ -0,0 +1,20 @@
name: debianCheck
on:
pull_request_target:
types: [opened, synchronize, reopened]
permissions:
pull-requests: write
contents: read
checks: read
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
debian-check:
uses: linuxdeepin/.github/.github/workflows/debian-check.yml@master
with:
job_name: "debian-check"

17
.github/workflows/call-static-check.yml vendored Normal file
View File

@ -0,0 +1,17 @@
name: staticCheck
on:
pull_request_target:
types: [opened, synchronize, reopened]
permissions:
contents: read
pull-requests: read
checks: write
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
static-check:
uses: linuxdeepin/.github/.github/workflows/static-check.yml@master

View File

@ -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/build-tag.yml@master
secrets: inherit

View File

@ -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

17
.gitignore vendored
View File

@ -13,6 +13,7 @@
*.a
build*/
obj-*-linux-gnu/
*.pro.user*
CMakeLists.txt.user*
*.DS_Store
@ -22,3 +23,19 @@ CMakeLists.txt.user*
# binary file
dde-dock
.vscode
*/dbusinterface/generation_dbus_interface/
*/*/dbusinterface/generation_dbus_interface/
.transifexrc
.cache
# debain
debian/.debhelper/
debian/dde-dock/
debian/dde-dock-dev/
debian/dde-dock-onboard-plugin/
debian/tmp/
debian/*.log
debian/*.substvars
debian/debhelper-build-stamp
debian/files

50
.obs/workflows.yml Normal file
View File

@ -0,0 +1,50 @@
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:
- trigger_services:
project: deepin:Unstable:dde
package: %{SCM_REPOSITORY_NAME}
filters:
event: tag_push
commit_build:
steps:
- trigger_services:
project: deepin:Develop:dde
package: %{SCM_REPOSITORY_NAME}
filters:
event: push

View File

@ -2,6 +2,5 @@
"type": "homebrew" | "opensource",
"3rdparty: ["*.xml"],
"ignore": ["CHANGELOG.md", "./debian", "README.md", "./cmake", "technology-overview.md", "CMakeLists.txt", "CMakeLists.txt.user", "./plugins/plugin-guide", "./.tx", "*.qrc", "*.svg", "*.png", "*.qm", "*.ts"],
"license": ["LICENSE"],
"importantFile": ["gschema/com.deepin.dde.dock.module.gschema.xml", "interfaces/constants.h", "interfaces/pluginproxyinterface.h", "interfaces/pluginsiteminterface.h"]
"license": ["LICENSE"]
}

View File

@ -4,7 +4,7 @@ Upstream-Contact: UnionTech Software Technology Co., Ltd. <>
Source: https://github.com/linuxdeepin/dde-dock
# ci
Files: .github/* .gitlab-ci.yml
Files: .github/* .gitlab-ci.yml .obs/*
Copyright: None
License: CC0-1.0
@ -24,7 +24,7 @@ Copyright: UnionTech Software Technology Co., Ltd.
License: LGPL-3.0-or-later
# png svg
Files: plugins/*.png plugins/*.svg frame/*.svg tests/*.png tests/*.svg
Files: plugins/*.png plugins/*.svg frame/*.svg tests/*.png tests/*.svg plugins/*.dci
Copyright: UnionTech Software Technology Co., Ltd.
License: LGPL-3.0-or-later
@ -39,7 +39,8 @@ Copyright: None
License: CC0-1.0
# xml toml json policy yaml
Files: gschema/*.xml plugins/*.xml frame/*.xml .clog.toml plugins/*.json configs/*.json .packit.yaml .tx/config plugins/overlay-warning/com.deepin.dde.dock.overlay.policy plugins/dcc-dock-plugin/.tx/config
Files: gschema/*.xml plugins/*.xml frame/*.xml .clog.toml plugins/*.json configs/*.json .packit.yaml .tx/config .tx/deepin.conf plugins/overlay-warning/com.deepin.dde.dock.overlay.policy plugins/dcc-dock-plugin/.tx/config
frame/taskmanager/window_patterns.json
Copyright: None
License: CC0-1.0
@ -56,4 +57,14 @@ License: CC0-1.0
# xml2cpp
Files: frame/dbus/* plugins/disk-mount/dbus/dbusdiskmount.* plugins/power/dbus/dbuspower.* plugins/shutdown/dbus/dbuspowermanager.* plugins/tray/dbus/dbustraymanager.*
Copyright: The Qt Company Ltd.
License: CC0-1.0
License: CC0-1.0
# policy kit
Files: plugins/overlay-warning/org.deepin.dde.dock.overlay.policy
Copyright: UnionTech Software Technology Co., Ltd.
License: LGPL-3.0-or-later
Files: toolGenerate/**/*
Copyright: None
License: CC0-1.0

View File

@ -1,10 +1,10 @@
[main]
host = https://www.transifex.com
minimum_perc = 80
mode = developer
[deepin-desktop-environment.dde-dock]
[o:linuxdeepin:p:deepin-desktop-environment:r:dde-dock]
file_filter = translations/dde-dock_<lang>.ts
minimum_perc = 0
source_file = translations/dde-dock.ts
source_lang = en
type = QT

2
.tx/deepin.conf Normal file
View File

@ -0,0 +1,2 @@
[transifex]
branch = m23

View File

@ -1,13 +1,20 @@
cmake_minimum_required(VERSION 3.7)
cmake_minimum_required(VERSION 3.16)
if (NOT DEFINED VERSION)
set(VERSION 4.0)
set(VERSION 6.0.37)
endif()
project(dde-dock)
find_package(DtkTools REQUIRED)
set(CMAKE_THREAD_LIBS_INIT "-lpthread")
set(CMAKE_HAVE_THREADS_LIBRARY 1)
set(CMAKE_USE_PTHREADS_INIT 1)
set(CMAKE_PREFER_PTHREAD_FLAG ON)
#set(CMAKE_VERBOSE_MAKEFILE ON)
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
@ -26,6 +33,10 @@ endif()
# generate a compile commands file as complete database for vim-YouCompleteMe or some other similar tools
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
# Install settings
if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
set(CMAKE_INSTALL_PREFIX /usr)
endif ()
include(GNUInstallDirs)
if (NOT (${CMAKE_BUILD_TYPE} MATCHES "Debug"))
@ -45,8 +56,27 @@ if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "sw_64")
add_definitions(-DDISABLE_SHOW_ANIMATION)
endif()
file(GLOB INTERFACES "interfaces/*.h")
function(generation_dbus_interface xmldir outdir)
IF(EXISTS ${outdir})
file(REMOVE_RECURSE ${outdir})
ENDIF()
execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory ${outdir})
file(GLOB_RECURSE allXmls ${xmldir}/*.xml)
foreach(XMLFILE ${allXmls})
string(FIND ${XMLFILE} "/" INDEX REVERSE)
string(SUBSTRING ${XMLFILE} ${INDEX} -1 classname)
string(REPLACE "/" "" classname ${classname})
string(REPLACE ".xml" "" classname ${classname})
string(REPLACE "." "_" classname ${classname})
string(TOLOWER ${classname} filename)
execute_process(COMMAND ${DTK_XML2CPP} -c ${classname} -p ${outdir}/${filename} ${XMLFILE}
WORKING_DIRECTORY ${outdir})
endforeach()
endfunction(generation_dbus_interface)
file(GLOB INTERFACES "interfaces/*.h")
add_definitions(-DCVERSION="${VERSION}")
#include使
#CMakeListsCMakeLists
#
@ -59,9 +89,12 @@ include_directories(
frame/item
frame/item/components
frame/item/resources
frame/model
frame/util
frame/window
frame/window/components
frame/window/tray
frame/window/tray/widgets
frame/xcb
../widgets
../interfaces
@ -72,11 +105,14 @@ aux_source_directory(frame/dbus DBUS)
aux_source_directory(frame/dbus/sni SNI)
aux_source_directory(frame/display DISPLAY)
aux_source_directory(frame/item ITEM)
aux_source_directory(frame/model MODEL)
aux_source_directory(frame/item/components ITEMCOMPONENTS)
aux_source_directory(frame/item/resources RESOURCES)
aux_source_directory(frame/util UTIL)
aux_source_directory(frame/window WINDOW)
aux_source_directory(frame/window/components WINDOWCOMPONENTS)
aux_source_directory(frame/window/tray WINDOWTRAY)
aux_source_directory(frame/window/tray/widgets WINDOWTRAYWIDGET)
aux_source_directory(frame/xcb XCB)
file(GLOB SRC_PATH
@ -86,21 +122,19 @@ file(GLOB SRC_PATH
${SNI}
${DISPLAY}
${ITEM}
${MODEL}
${ITEMCOMPONENTS}
${UTIL}
${WINDOW}
${WINDOWCOMPONENTS}
${WINDOWTRAY}
${WINDOWTRAYWIDGET}
${XCB}
)
add_subdirectory("frame")
add_subdirectory("plugins")
add_subdirectory("tests")
# Install settings
if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
set(CMAKE_INSTALL_PREFIX /usr)
endif ()
#add_subdirectory("tests")
## qm files
file(GLOB QM_FILES "translations/*.qm")
@ -116,15 +150,19 @@ install(FILES ${CMAKE_BINARY_DIR}/dde-dock.pc
DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
configure_file(
${CMAKE_SOURCE_DIR}/cmake/DdeDock/DdeDockConfig.cmake.in
${CMAKE_SOURCE_DIR}/cmake/DdeDock/DdeDockConfig.cmake
${CMAKE_SOURCE_DIR}/cmake/DdeDock/DdeDockConfig.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/DdeDockConfig.cmake
@ONLY)
install(FILES "cmake/DdeDock/DdeDockConfig.cmake"
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/DdeDockConfig.cmake
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/DdeDock)
install(FILES gschema/com.deepin.dde.dock.module.gschema.xml
DESTINATION ${CMAKE_INSTALL_DATADIR}/glib-2.0/schemas)
#dconfig
file(GLOB DCONFIG_FILES "configs/*.json")
install(FILES ${DCONFIG_FILES} DESTINATION ${CMAKE_INSTALL_DATADIR}/dsg/configs/dde-dock/)
# Address Sanitizer ,
#set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -fsanitize=address -O2")
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -fsanitize=address -O2")

View File

@ -0,0 +1,232 @@
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright © 2007 Free Software Foundation, Inc. <https://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
Preamble
The GNU General Public License is a free, copyleft license for software and other kinds of works.
The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too.
When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things.
To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others.
For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights.
Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it.
For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions.
Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users.
Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free.
The precise terms and conditions for copying, distribution and modification follow.
TERMS AND CONDITIONS
0. Definitions.
“This License” refers to version 3 of the GNU General Public License.
“Copyright” also means copyright-like laws that apply to other kinds of works, such as semiconductor masks.
“The Program” refers to any copyrightable work licensed under this License. Each licensee is addressed as “you”. “Licensees” and “recipients” may be individuals or organizations.
To “modify” a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a “modified version” of the earlier work or a work “based on” the earlier work.
A “covered work” means either the unmodified Program or a work based on the Program.
To “propagate” a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well.
To “convey” a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays “Appropriate Legal Notices” to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion.
1. Source Code.
The “source code” for a work means the preferred form of the work for making modifications to it. “Object code” means any non-source form of a work.
A “Standard Interface” means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language.
The “System Libraries” of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A “Major Component”, in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it.
The “Corresponding Source” for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work.
The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source.
The Corresponding Source for a work in source code form is that same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures.
When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified it, and giving a relevant date.
b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to “keep intact all notices”.
c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so.
A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an “aggregate” if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways:
a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b.
d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d.
A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work.
A “User Product” is either (1) a “consumer product”, which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, “normally used” refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product.
“Installation Information” for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made.
If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM).
The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying.
7. Additional Terms.
“Additional permissions” are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or authors of the material; or
e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors.
All other non-permissive additional terms are considered “further restrictions” within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11).
However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice.
Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License.
An “entity transaction” is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it.
11. Patents.
A “contributor” is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's “contributor version”.
A contributor's “essential patent claims” are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, “control” includes the right to grant patent sublicenses in a manner consistent with the requirements of this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version.
In the following three paragraphs, a “patent license” is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To “grant” such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party.
If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. “Knowingly relying” means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it.
A patent license is “discriminatory” if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program.
13. Use with the GNU Affero General Public License.
Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License “or any later version” applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation.
If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program.
Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the “copyright” line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see <https://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode:
<program> Copyright (C) <year> <name of author>
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an “about box”.
You should also get your employer (if you work as a programmer) or school, if any, to sign a “copyright disclaimer” for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see <https://www.gnu.org/licenses/>.
The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read <https://www.gnu.org/philosophy/why-not-lgpl.html>.

View File

@ -2,34 +2,36 @@
pkgname=deepin-dock-git
pkgver=5.5.9.r54.g49d37a6c0
pkgrel=1
sourcename=dde-dock
sourcetars=("$sourcename"_"$pkgver".tar.xz)
sourcedir="$sourcename"
pkgdesc='Deepin desktop-environment - dock module'
arch=('x86_64' 'aarch64')
url="https://github.com/linuxdeepin/dde-dock"
license=('LGPL-3.0-or-later')
depends=('qt5-svg' 'deepin-daemon-git' 'deepin-qt5integration-git'
'deepin-qt-dbus-factory-git' 'libdbusmenu-qt5')
makedepends=('git' 'cmake' 'ninja' 'qt5-tools' 'gtest' 'gmock'
'dtkcommon-git' 'dtkcore-git' 'deepin-qt5integration-git'
'deepin-qt-dbus-factory' 'libdbusmenu-qt5'
'deepin-control-center-git')
'deepin-qt-dbus-factory-git' 'libdbusmenu-qt5' 'dtkcommon-git'
'dtkcore-git' 'deepin-qt5integration-git'
'libdbusmenu-qt5' 'deepin-control-center-git' 'dwayland-git')
makedepends=('git' 'cmake' 'ninja' 'qt5-tools' 'gtest' 'gmock' 'extra-cmake-modules')
conflicts=('deepin-dock')
provides=('deepin-dock')
optdepends=('deepin-network-core-git')
groups=('deepin-git')
source=('source.tar.gz')
source=("${sourcetars[@]}")
sha512sums=('SKIP')
prepare() {
cd $deepin_source_name
cd $sourcedir
}
build() {
cd $deepin_source_name
cd $sourcedir
cmake . -GNinja -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=lib -DDOCK_TRAY_USE_NATIVE_POPUP=YES
ninja
}
package() {
cd $deepin_source_name
cd $sourcedir
DESTDIR="$pkgdir" ninja install
}

View File

@ -1,2 +0,0 @@
set(DDE_DOCK_INCLUDE_DIR /usr/local/include/dde-dock)
include_directories("${DDE_DOCK_INCLUDE_DIR}")

View File

@ -0,0 +1,197 @@
{
"magic": "dsg.config.meta",
"version": "1.0",
"contents": {
"Window_Size_Fashion": {
"value": 48,
"serial": 0,
"flags": [],
"name": "Window_Size_Fashion",
"name[zh_CN]": "*****",
"description": "",
"permissions": "readwrite",
"visibility": "private"
},
"Icon_Size": {
"value": 36,
"serial": 0,
"flags": [],
"name": "Icon_Size",
"name[zh_CN]": "*****",
"description": "",
"permissions": "readwrite",
"visibility": "private"
},
"Position": {
"value": "bottom",
"serial": 0,
"flags": [],
"name": "Position",
"name[zh_CN]": "*****",
"description": "",
"permissions": "readwrite",
"visibility": "private"
},
"Hide_Timeout": {
"value": 0,
"serial": 0,
"flags": [],
"name": "Hide_Timeout",
"name[zh_CN]": "*****",
"description": "",
"permissions": "readwrite",
"visibility": "private"
},
"Hide_Mode": {
"value": "keep-showing",
"serial": 0,
"flags": [],
"name": "Hide_Mode",
"name[zh_CN]": "*****",
"description": "The value will influence when the dock is shown or hidden.",
"permissions": "readwrite",
"visibility": "private"
},
"Show_Timeout": {
"value": 100,
"serial": 0,
"flags": [],
"name": "Show_Timeout",
"name[zh_CN]": "*****",
"description": "",
"permissions": "readwrite",
"visibility": "private"
},
"Window_Size_Efficient": {
"value": 40,
"serial": 0,
"flags": [],
"name": "Window_Size_Efficient",
"name[zh_CN]": "*****",
"description": "",
"permissions": "readwrite",
"visibility": "private"
},
"Plugin_Settings": {
"value": "{}",
"serial": 0,
"flags": [],
"name": "Plugin_Settings",
"name[zh_CN]": "*****",
"description": "",
"permissions": "readwrite",
"visibility": "private"
},
"Docked_Apps": {
"value": ["/usr/share/applications/dde-file-manager", "/usr/share/applications/uos-browser", "/usr/share/applications/org.deepin.browser", "/usr/share/applications/deepin-appstore", "/usr/share/applications/deepin-app-store", "/usr/share/applications/com.deepin.store.intranet", "/usr/share/applications/deepin-album", "/usr/share/applications/deepin-music", "/usr/share/applications/deepin-contacts", "/usr/share/applications/dde-calendar", "/usr/share/applications/dde-control-center"],
"serial": 0,
"flags": [],
"name": "Docked_Apps",
"name[zh_CN]": "*****",
"description": "The default apps which is docked when dock is started.",
"permissions": "readwrite",
"visibility": "private"
},
"Win_Icon_Preferred_Apps": {
"value": ["apps.com.qq.im", "deepin.com.qq.im", "apps.com.qq.im.light", "apps.com.qq.b.eim", "apps.com.qq.rtxclient"],
"serial": 0,
"flags": [],
"name": "Win_Icon_Preferred_Apps",
"name[zh_CN]": "*****",
"description": "",
"permissions": "readwrite",
"visibility": "private"
},
"Delay_Plugins_Time": {
"value": 0,
"serial": 0,
"flags": [],
"name": "Delay_Plugins_Time",
"name[zh_CN]": "*****",
"description": "",
"permissions": "readwrite",
"visibility": "private"
},
"Force_Quit_App": {
"value": "enabled",
"serial": 0,
"flags": [],
"name": "Force_Quit_App",
"name[zh_CN]": "*****",
"description": "",
"permissions": "readwrite",
"visibility": "private"
},
"Display_Mode": {
"value": "fashion",
"serial": 0,
"flags": [],
"name": "Display_Mode",
"name[zh_CN]": "*****",
"description": "The dock gets different display mode, for instance, dock looks like win7 taskbar on classic mode.",
"permissions": "readwrite",
"visibility": "private"
},
"Recent_App": {
"value": [],
"serial": 0,
"flags": [],
"name": "Recent_App",
"name[zh_CN]": "*****",
"description": "The apps which has been opened recently when dock is started",
"permissions": "readwrite",
"visibility": "private"
},
"Show_Recent": {
"value": false,
"serial": 0,
"flags": [],
"name": "Show_Recent",
"name[zh_CN]": "*****",
"description": "show or hide recent app in dock",
"permissions": "readwrite",
"visibility": "private"
},
"Show_MultiWindow": {
"value": false,
"serial": 0,
"flags": [],
"name": "Show_MultiWindow",
"name[zh_CN]": "*****",
"description": "show or hide Multi Window in dock when the Entry has subWindow",
"permissions": "readwrite",
"visibility": "private"
},
"Dock_Show_Window_name":{
"value":0,
"serial":0,
"flags":"",
"name":"小窗口显示窗口名称",
"name[zh_CN]":"小窗口显示窗口名称",
"description[zh_CN]": "提供鼠标悬停小窗口标题显示配置,默认为悬停显示: \n 当配置为全部显示时,鼠标悬停在任务栏图标位置时所有预览窗口显示标题信息; \n 当配置为悬停显示时,鼠标仅在悬停在预览小窗口时在当前窗口显示标题信息; \n当配置为不显示时鼠标悬停应用位置和预览小窗口位置时都不显示标题信息",
"description":"0 Mouse over show;1 Always show; 2 Always hide",
"permissions":"readwrite",
"visibility":"public"
},
"Dock_Quick_Plugins": {
"value": ["power", "network", "shutdown", "show-desktop", "multitasking", "notification", "uosai"],
"serial": 0,
"flags": [],
"name": "Quick Plugins show on dock",
"name[zh_CN]": "显示在任务栏上的快捷插件",
"description": "记录哪些插件的图标在任务栏启动的时候显示在任务栏上",
"permissions": "readwrite",
"visibility": "private"
},
"Dock_Quick_Tray_Name": {
"value": ["fcitx", "indicator:keybord_layout"],
"serial": 0,
"flags": [],
"name": "Tray icons show on dock",
"name[zh_CN]": "任务栏上固定的托盘图标",
"description": "记录哪些托盘的图标在任务栏启动的时候显示在任务栏上",
"permissions": "readwrite",
"visibility": "private"
}
}
}

View File

@ -1,42 +0,0 @@
{
"magic":"dsg.config.meta",
"version":"1.0",
"contents":{
"showWindowName":{
"value":0,
"serial":0,
"flags":[],
"name":"小窗口显示窗口名称",
"name[zh_CN]":"小窗口显示窗口名称",
"description[zh_CN]":" \
\
\
",
"description":"0 Mouse over show;1 Always show; 2 Always hide",
"permissions":"readwrite",
"visibility":"private"
},
"alwaysHideDock":{
"value": false,
"serial": 0,
"flags":[],
"name":"alwaysHideDock",
"name[zh_CN]":"一直隐藏",
"description[zh_CN]":"当设置为true时即使鼠标放在任务栏区域也不会显示任务栏配置即时生效",
"description":"ture: Dock is hidden all the time, false: Depend on other settings of dock",
"permissions":"readwrite",
"visibility":"private"
},
"toggleDesktopInterval":{
"value": 0,
"serial": 0,
"flags":[],
"name":"toggleDesktopInterval",
"name[zh_CN]":"显示(或恢复)桌面的悬浮时间间隔",
"description[zh_CN]":"显示(或恢复)桌面将在悬停间隔后切换(以毫秒为单位)",
"description":"show(or restore) desktop will toggle after the hover interval (in milliseconds)",
"permissions":"readwrite",
"visibility":"private"
}
}
}

View File

@ -1,17 +0,0 @@
{
"magic":"dsg.config.meta",
"version":"1.0",
"contents":{
"contextMenu":{
"value": ["Shutdown", "Reboot", "Suspend", "Hibernate", "Lock", "Logout", "SwitchUser", "PowerSettings"],
"serial": 0,
"flags": [],
"name": "ContextMenu",
"name[zh_CN]": "电源按钮右键菜单",
"description[zh_CN]": "电源界面的右键菜单内容,如需不显示某个选项,移除即可;默认值:\"Shutdown\", \"Reboot\", \"Suspend\", \"Hibernate\", \"Lock\", \"Logout\", \"SwitchUser\", \"PowerSettings\"",
"description":"",
"permissions":"readwrite",
"visibility":"private"
}
}
}

View File

@ -0,0 +1,46 @@
{
"magic": "dsg.config.meta",
"version": "1.0",
"contents": {
"control": {
"value": false,
"serial": 0,
"flags": [],
"name": "contorl",
"name[zh_CN]": "控制",
"description": "阻止鼠标事件",
"permissions": "readwrite",
"visibility": "private"
},
"enable": {
"value": true,
"serial": 0,
"flags": [],
"name": "enable",
"name[zh_CN]": "使能",
"description": "使能电源管理模块。",
"permissions": "readwrite",
"visibility": "private"
},
"showtimetofull":{
"value": true,
"serial": 0,
"flags": [],
"name": "showtimetofull",
"name[zh_CN]": "显示完整时间",
"description": "是否显示电池使用时间/剩余充电时间。",
"permissions": "readwrite",
"visibility": "public"
},
"menu-enable":{
"value": true,
"serial": 0,
"flags": [],
"name": "menu-enable",
"name[zh_CN]": "使能菜单",
"description": "使能菜单。",
"permissions": "readwrite",
"visibility": "private"
}
}
}

536
debian/changelog vendored
View File

@ -1,4 +1,536 @@
dde-dock (3.0.12) unstable; urgency=low
dde-dock (6.0.37) unstable; urgency=medium
* release 6.0.37
* fix linuxdeepin/developer-center#7612
-- Mike Chen <chenke@deepin.org> Wed, 03 Apr 2024 10:22:29 +0800
dde-dock (6.0.36) unstable; urgency=medium
* release 6.0.36
* fix linuxdeepin/developer-center#7222
* fix linuxdeepin/developer-center#7207
* fix linuxdeepin/developer-center#6454
-- Mike Chen <chenke@deepin.org> Wed, 06 Mar 2024 16:50:36 +0800
dde-dock (6.0.35) unstable; urgency=medium
* feat: adjust dock ui
-- tsic404 <liuheng@deepin.org> Thu, 01 Feb 2024 10:58:27 +0800
dde-dock (6.0.34) unstable; urgency=medium
* fix: dock animation broken (https://github.com/linuxdeepin/developer-center/issues/7143)
* fix: dock plugin calculated to an incorrect size (https://github.com/linuxdeepin/developer-center/issues/7127)
* fix: dock will not auto hide after set size (https://github.com/linuxdeepin/developer-center/issues/7129)
* fix: dock plugin unable to click when in keep hide (https://github.com/linuxdeepin/developer-center/issues/7132)
* fix: dock item indicator not update (https://github.com/linuxdeepin/developer-center/issues/7097)
-- tsic404 <liuheng@deepin.org> Tue, 30 Jan 2024 16:17:59 +0800
dde-dock (6.0.33) unstable; urgency=medium
* fix: tmp block uosai in quickpanel
-- tsic404 <liuheng@deepin.org> Fri, 26 Jan 2024 14:38:06 +0800
dde-dock (6.0.32) unstable; urgency=medium
* fix: dock get max size when positionChanged and KeepHide mode (https://github.com/linuxdeepin/developer-center/issues/7040)
* fix: dock not remove plugin when fcitx exit (https://github.com/linuxdeepin/developer-center/issues/7080)
* fix: dock theme not follow system (https://github.com/linuxdeepin/developer-center/issues/7090)
-- tsic404 <liuheng@deepin.org> Thu, 25 Jan 2024 14:30:26 +0800
dde-dock (6.0.31) unstable; urgency=medium
* fix: error datetime tooltip (https://github.com/linuxdeepin/developer-center/issues/7056)
* fix: unable get docked entriy by soft link path (https://github.com/linuxdeepin/developer-center/issues/7033)
-- tsic404 <liuheng@deepin.org> Tue, 23 Jan 2024 17:43:44 +0800
dde-dock (6.0.30) unstable; urgency=medium
* chore: remove Cooperation in display plugin (https://github.com/linuxdeepin/developer-center/issues/7023)
-- chenhongtao <chenhongtao@deepin.org> Mon, 22 Jan 2024 17:27:34 +0800
dde-dock (6.0.29) unstable; urgency=medium
* fix: when no timeformat, tooltip is empty
-- chenhongtao <chenhongtao@deepin.org> Mon, 22 Jan 2024 09:47:21 +0800
dde-dock (6.0.28) unstable; urgency=medium
* fix: the item that removed is exist yet (https://github.com/linuxdeepin/developer-center/issues/4631)
* fix: dock wakeup area not changed (https://github.com/linuxdeepin/developer-center/issues/5831)
* fix: onboard not to show on first click (https://github.com/linuxdeepin/developer-center/issues/6675)
* fix: timedate tips show error (https://github.com/linuxdeepin/developer-center/issues/6674)
* fix: quickpanel icon not follow theme (https://github.com/linuxdeepin/developer-center/issues/6263)
* fix: disable resize of dock popup window (https://github.com/linuxdeepin/developer-center/issues/6264)
* feat: add dbus property window margin
-- tsic404 <liuheng@deepin.org> Thu, 18 Jan 2024 09:57:27 +0800
dde-dock (6.0.27) unstable; urgency=medium
* fix: dock get stucked when launching (https://github.com/linuxdeepin/developer-center/issues/6657)
* chore: make uosai default on dock (https://github.com/linuxdeepin/developer-center/issues/6486)
* chore: open deepin-calendar instead of dde-widgets when click timedate (https://github.com/linuxdeepin/developer-center/issues/6696)
* fix: item context menu not updated
* feat: add plugin notification (https://github.com/linuxdeepin/developer-center/issues/6695)
* fix: mainwindow hide when popup opens (https://github.com/linuxdeepin/developer-center/issues/4970)
-- tsic404 <liuheng@deepin.org> Tue, 09 Jan 2024 13:33:18 +0800
dde-dock (6.0.26) unstable; urgency=medium
* release 6.0.26
* fix #6033 #5719 #5786 #4331
-- mike <chenke@deepin.org> Fri, 29 Dec 2023 11:27:59 +0800
dde-dock (6.0.25) unstable; urgency=medium
* chore: turn on bluetooth loading animation when not start
* fix: fix again set dcc dock plugin icon pixelated
-- chenhongtao <chenhongtao@deepin.org> Wed, 13 Dec 2023 15:31:57 +0800
dde-dock (6.0.24) unstable; urgency=medium
* chore: use system icon first
* fix: dcc dock plugin icon pixelated
* fix some coredump issue
* fix: brightness silder cannot sroll when is 28
* tidy up some log
-- chenhongtao <chenhongtao@deepin.org> Tue, 28 Nov 2023 10:51:52 +0800
dde-dock (6.0.23) unstable; urgency=medium
* fix: displayplugin disappear when monitor count changed
* fix: tray disappear when drag finished
* fix: double tray show afeter drag into expandTray and drag back
* chore: remove unused dbus
* chore: Adapt time format feature(Issue: https://github.com/linuxdeepin/developer-center/issues/5902)
-- Deepin Packages Builder <packages@deepin.org> Thu, 26 Oct 2023 17:25:38 +0800
dde-dock (6.0.22) unstable; urgency=medium
* fix: a space on tray without trash show
* fix: coredump empty tray when switch postion
* fix: Can't hide when DockPopupWindow deactivate(Issue: https://github.com/linuxdeepin/developer-center/issues/5405)
* fix: datetime size error
* fix: tool appAreaWidget visible
-- tsic404 <liuheng@deepin.org> Mon, 11 Sep 2023 13:14:25 +0800
dde-dock (6.0.21) unstable; urgency=medium
* fix: add lost windowSizeChanged Signal
* fix: brightness update, update main view slider
* chore: make trash not display in default
* fix: click preview container not active window
* feat: Remove dock-hotspot-plugin by Conflicts
* feat: use new am dbus interface
* feat: when new am avaliable do not load custom desktopfile
* fix: dock coredump when update recentApp invisible
* feat: make unrecongnized application not dock on dde-dock
* fix: datetime font size error
-- tsic404 <liuheng@deepin.org> Wed, 06 Sep 2023 14:20:11 +0800
dde-dock (6.0.20) unstable; urgency=medium
* fix: xebmbedtary click get no response in Efficient mode
* fix: add hideModeChanged signal
* fix: adjust the slider to set the sound multiple times
* fix: dock autohide even trayGridWidget show
-- tsic404 <liuheng@deepin.org> Thu, 24 Aug 2023 15:30:37 +0800
dde-dock (6.0.19) unstable; urgency=medium
* fix: no positionModeChanged signal
* fix: some app do not display
* fix: plugin set show on dock more times, also need same times call unshow
* fix: applicationpreview scale not keep aspectratio
* fix: click always activate application in TrayGridWidget
* fix: not show with launcher when hide
* fix: coredump when open jetbrains-toolbox
-- Tsic404 <liuheng@deepin.org> Mon, 07 Aug 2023 17:08:30 +0800
dde-dock (6.0.18) unstable; urgency=medium
* fix: dock entries not update after displaymode changed
* fix: official chrome unable to be identified
-- Deepin Packages Builder <liuheng@deepin.org> Mon, 24 Jul 2023 16:20:32 +0800
dde-dock (6.0.17) unstable; urgency=medium
* fix: dock position changed from left to bottom no date display
* fix: DockPopupWindow losing active status(Issue: #172773)
* fix: make keyboard layout plugin size fixed
* fix: adjust tray icon size to 20
* fix: incorrect trash status when deleting file in other partition
* fix: imcomplete display when dock plugin's tips text is multi-line
* fix: Fix the incomplete display of text when font 20 is scaled to 1.25(Influence: 电脑协同显示区域)
* fix: text missing translation(Influence: 文本显示)
* fix: 修复'Brightness' 文本裁切问题(Influence: 文本显示)
* chore: chore: update translate
* chore: update dependencies
* fix: tips font size not follow system
* fix: 任务栏声音面板中出现异常的悬浮提示 (#876)
* fix: the name of sound device shouldn't be edited (#880)
* refactor: rewrite encapsulation of the dconfig
* refactor: Rewrite the calling method of dock settings
* chore: update .gitignore add debian and build ignore
* feat: add taskmanager from dde-application-manager
* fix: dock size error when dock positon changed
-- Deepin Packages Builder <packages@deepin.org> Tue, 11 Jul 2023 09:50:13 +0800
dde-dock (6.0.16) unstable; urgency=medium
* fix: blank in the plugin area after recorder screen
-- tsic404 <liuheng@deepin.org> Thu, 11 May 2023 17:30:39 +0800
dde-dock (6.0.15) unstable; urgency=medium
* update translate
* fix: timedate size is too full
* fix: popupwindow is out of bounds at the edge of the screen
-- Tsic404 <liuheng@deepin.org> Thu, 11 May 2023 15:02:33 +0800
dde-dock (6.0.14) unstable; urgency=medium
* fix: trash do not display when dock hide and trash readded into dock
* fix: popupwindow need click destkop twice to hide
* fix: sound plugin style adjust
* fix: window radius
* fix: coredump after screen recorder finished, when drag something
* fix: fcitx5 keyboard tray icon blur
-- Tsic404 <liuheng@deepin.org> Sat, 06 May 2023 16:59:15 +0800
dde-dock (6.0.13) unstable; urgency=medium
* fix appitem indicator wrong position
* fix fixed_plugin unable to show after click undock
* fix desktopfile unable drag into dock and make it docked
-- Tsic404 <liuheng@deepin.org> Fri, 21 Apr 2023 09:39:23 +0800
dde-dock (6.0.12) unstable; urgency=medium
* fix sni tray unable to click after first left click
* adjust contol panel style
* do not handle dci scale
-- Tsic404 <liuheng@deepin.org> Mon, 17 Apr 2023 10:01:13 +0800
dde-dock (6.0.11) unstable; urgency=medium
* fix: timedate display widget size error
* fix: when there is focus on dockpopupwindow, it hide
* fix: modify the color of the area not covered by the slider
* fix: dont hide all close button(Task: 3608)
* fix: abnormally display battery plug-in in the quick-trays
* fix: when multiscreen connected non-primary display unable to click popupwindow
* fix: xembed tray flew out
* fix: dont hide all close button
* fix: timedate alway request timedate format
* fix: multitasking no response sometime
* fix: FixedLlugin disapprear after drag
* fix: disk popup does not hide(Issue: 3813)
feat: DockPopupWindow reimplemeted by DBlurEffectWidget
-- Tsic404 <liuheng@deepin.org> Fri, 14 Apr 2023 11:30:52 +0800
dde-dock (6.0.10) unstable; urgency=medium
[ bugfix ]
* fix: dock active color not follow dde-control-center
* fix: tray overhanging text
* fix: tray always reset while dragging quickItem to tray
* fix: splash preview container
* fix: unmute when changed volume
* fix: expandwidget tray item can be selected
* fix: plugin back button not support hiDPI
* fix: bluetooth not refresh button
* fix: Icon of trashs is too large in small dock
* fix: radius for tray background
* fix: abnormal display of sound output device list
* fix: launcher shown in a wrong location while multi screens connected
* fix: multitasking unable to remove
* fix: unable call selected app preview window
-- Tsic404 <liuheng@deepin.org> Wed, 29 Mar 2023 13:19:37 +0800
dde-dock (6.0.9.2) unstable; urgency=medium
[ TagBuilder ]
* fix: 修复拖动插件到任务栏后所有插件都显示的问题(Bug: 181945)(Influence: 默认所有的快捷面板中的插件都在任务栏显示,从控制中心取消所有插件的勾选,然后从快捷面板拖动一个插件到任务栏,观察任务栏插件显示情况)
* fix: 修复切换主题快捷面板插件主题颜色没有变化(Bug: 184085)(Influence: 打开快捷面板,切换主题,观察图标颜色显示是否正常)
-- lvpeilong <lvpeilong@uniontech.com> Thu, 02 Feb 2023 13:30:36 +0800
dde-dock (6.0.9.1) unstable; urgency=medium
[ TagBuilder ]
* chore: 更新changelog(Task: 227573)(Influence: 版本号)
* fix: 修复移除蓝牙设备后任务栏插件不消失的问题(Bug: 181945)(Influence: 插上蓝牙,从控制中心勾选该插件,在任务栏显示,然后移除蓝牙设备,观察任务栏的蓝牙图标是否消失)
* fix: 修复从任务栏向上拖动插件引起任务栏崩溃的问题(Bug: 181945)(Influence: 从任务栏向上拖动插件,观察任务栏是否正常)
* fix: 修复从托盘拖动图标到任务栏引起崩溃的问题(Bug: 181945)(Influence: 将托盘图标拖动到任务栏)
* fix: 修改插件区域出现重复的电池图标问题(Bug: 184085)(Influence: 任务栏-电池图标状态刷新)
* fix: 修复高缩放率下图标显示异常的问题(Bug: 183543, 184089)(Influence: 高分屏,高缩放率,观察任务栏插件区域的图标)
* fix: 修复系统主题变化后快捷面板电池颜色显示错误的问题(Bug: 184085)(Influence: 打开快捷面板,在控制中心更改系统颜色,观察快捷面板中系统电池图标是否跟随系统颜色变化)
* fix: 更新翻译文案(Task: 226203)(Influence: 从笔记本上观察控制中心个性化中电池的文案)
-- lvpeilong <lvpeilong@uniontech.com> Wed, 01 Feb 2023 15:26:25 +0800
dde-dock (6.0.8.1) unstable; urgency=medium
[ TagBuilder ]
* style: 解决编译不通过的问题(Task: 96831)(Influence: gerrit打包)
* fix: 修复键盘布局插件不响应键盘布局变化的问题(Task: 225011)(Influence: 社区版,从控制中心不断新增和删除键盘布局,观察布局插件是否显示隐藏)
* feat: 加载插件流程移动到插件里单独加载(Task: 222353)(Influence: 加载插件)
* feat: 加载基本插件(Task: 222353)(Influence: 插件加载)
* fix: 点击插件弹出自己的列表(Task: 222353)(Influence: 点击插件,观察是否弹出插件自己对应的列表,如果没有弹出列表,则触发这个插件的功能)
* chore: 删除多余的文件(Task: 222353)(Influence: 无)
* fix: 调整插件的尺寸(Task: 222353)(Influence: 观察任务栏插件是否对齐)
* fix: 修复移除蓝牙后弹框依然显示的问题(Bug: 181945)(Influence: 点击任务栏的蓝牙图标,弹出蓝牙弹窗,然后移除蓝牙,观察蓝牙的弹窗是否存在)
* fix: 优化插件图标样式(Task: 181945)(Influence: 图标样式)
* feat: 高效模式下最右侧增加显示桌面区域(Bug: 180859)(Influence: 进入高效模式,鼠标进入最右侧,点击,观察是否可以正常显示桌面)
* fix: 修复高缩放率下固定区域图标和回收站图标显示异常的问题(Bug: 182673)(Influence: 1.25倍缩放率下,选择非默认主题,观察任务栏显示桌面、多任务试图和回收站的图标大小是否正常)
* fix: 修复高缩放率下插件图标显示异常的问题(Bug: 183543)(Influence: 高分屏,设置缩放率为最高,观察任务栏插件区域的图标显示是否正常)
* fix: 修复展开托盘无法通过菜单移除U盘的问题(Bug: 182299)(Influence: 插入U盘打开托盘区右键菜单点击观察功能是否生效)
* fix: 解决任务栏时间日期文字显示异常的问题(Bug: 181387)(Influence: 时间和日期显示)
* fix: 修复图标异常问题(Bug: 181723)(Influence: 高缩放率下,观察组合图标显示是否正常)
* fix: 根据设计图调整插件位置(Bug: 181251)(Influence: 声音、亮度调整和媒体播放的显示位置)
* fix: 修复任务栏适应不同的主题(Bug: 179377)(Influence: 从控制中心修改主题颜色,观察任务栏快捷面板的主题颜色是否发生变化)
* fix: 修复快捷面板插件子面板无法关闭主面板的问题(Bug: 222353)(Influence: 进入快捷面板的蓝牙子界面点击设置,进入声音子界面点击设置,进入亮度调整子界面点击设置,在弹出对应的功能后,观察快捷面板是否隐藏)
* fix: 修复高效模式下无法打开企业微信的问题(Bug: 182065)(Influence: 进入高效模式,打开企业微信和微信等应用,观察是否正常打开窗口)
-- zhaoyingzhen <zhaoyingzhen@uniontech.com> Fri, 13 Jan 2023 11:37:21 +0800
dde-dock (6.0.7) unstable; urgency=medium
[ TagBuilder ]
* fix: 修复插件显示尺寸问题(Bug: 179083)(Influence: 截图-查看截图计时插件是否正常显示)
* fix: 任务栏协同不显示安卓设备。(Task: 233323)(Influence: 设备列表不显示安卓设备。)
* fix: 修复文案显示错误(Bug: 180959)(Influence: 任务栏最右侧的电源按钮)
* fix: 更新翻译文件(Bug: 180959)(Influence: 任务栏-电源,观察电源的文本)
-- lvpeilong <lvpeilong@uniontech.com> Fri, 06 Jan 2023 16:32:53 +0800
dde-dock (6.0.6.1) unstable; urgency=medium
[ TagBuilder ]
* fix: 修复向上拖动图标引起任务栏崩溃的问题(Bug: 179427)(Influence: 从任务栏向上拖动快捷图标,观察任务栏是否正常)
* fix: 声音插件滚轮调节音量(Bug: 172417)(Influence: 将鼠标放在任务栏声音图标上,滚动滚轮,观察音量大小是否调节)
* fix: 增加强制在任务栏显示插件的接口(Task: 226407)(Bug: 179083)(Influence: 截图,观察任务栏是否有计时的图标)
* fix: 修复高缩放率下显示问题(Bug: 176421)(Influence: 设置高缩放率,观察开始菜单的位置,任务栏图标占满区域,左右位置,观察任务栏图标是否拥挤)
-- zhaoyingzhen <zhaoyingzhen@uniontech.com> Thu, 29 Dec 2022 15:13:58 +0800
dde-dock (6.0.5.1) unstable; urgency=medium
[ TagBuilder ]
* feat: 蓝牙插件适应快捷插件接口(Task: 121387)(Influence: 任务栏-快捷设置-蓝牙)
* fix: 修复高缩放率下启动器位置显示错误和无法设置智能隐藏的问题(Bug: 154513, 157413)(Influence: 前提屏幕分辨率设置为1.251、任务栏设置为智能隐藏将窗口拖动到任务栏下方观察任务栏是否隐藏2、观察启动器的位置是否正确)
* fix: 修复从任务栏拖动图标分屏后鼠标回到任务栏遮罩不消失的问题(Task: 181523)(Influence: 从任务栏拖动图标到桌面,不松手,然后再回到任务栏,观察遮罩是否消失)
* fix: 修复部分托盘无图标的问题(Bug: 160761)(Influence: 安全中心、授权管理等应用的托盘图标)
* fix: 修复跨端协同设备数量变化时列表页面显示不全的问题。(Influence: 跨端协同设备变化时,页面显示。)
* feat: 高效模式增加加载插件的功能(Task: 112073)(Influence: 高效模式下加载插件)
* feat: 适配v20插件加载(Task: 112073)(Influence: 加载v20插件)
* fix: 加载系统托盘插件(Task: 112073)(Influence: 插入U盘查看托盘区域是否有U盘图标)
* fix: 托盘跟随高效模式调整任务栏位置(Task: 112073)(Influence: 高效模式下,调整任务栏位置,观察托盘区域是否正常)
* fix: 修复任务栏没有加载显示桌面和多任务视图的问题(Task: 112073)(Influence: 任务栏查看是否存在显示桌面和多任务栏视图的插件)
* feat: 图标增加toolTip和菜单(Task: 112073)(Influence: 鼠标放入到托盘区域、快捷插件区域关机区域观察是否存在toolTip右键观察是否弹出菜单)
* fix: 实现高效模式下托盘和快捷插件拖动功能(Task: 112073)(Influence: 高效模式,从托盘或快捷面板拖动图标到任务栏)
* feat: 快捷面板支持插件控制区域的显示(Task: 208579)(Influence: 快捷面板,观察声音、亮度调整和音乐播放等功能是否显示正常)
* feat: 声音插件适配v23(Task: 210309)(Influence: 观察任务栏是否存在声音插件)
* style: 消除编译警告信息(Task: 96831)(Influence: 无)
* fix: 删除编译警告(Task: 96831)(Influence: 无)
* style: 修改快捷区域key值(Task: 96831)(Influence: 无)
* fix: 修复快捷面板应用打开详细页面位置错误的问题(Task: 211641)(Influence: 从快捷面板展开蓝牙或者网络右侧的展开按钮,观察是否显示正常)
* fix: 解决任务栏跨端协同在paired状态变化后主动请求协同连接的问题。(Influence: 任务栏设备协同连接功能。)
* style: 枚举变量的信号传递去掉引用(Task: 96831)(Influence: 无)
* fix: 修复快捷面板没有刷新最新状态图的问题(Task: 208069)(Influence: 笔记本上打开快捷面板,拔掉电源或插上电源,观察电池状态是否发生变化)
* fix: 修改任务栏加载老版本插件的方式(Task: 112073)(Influence: 任务栏启动的时候观察老版本的插件例如U盘插件等其他v20插件是否正常加载)
* fix: 优化快捷面板显示插件区域的方式(Task: 189527)(Influence: 打开快捷面板,观察插件是否正常显示)
* feat: 完善onboard插件的接口(Task: 212611)(Influence: 快捷面板观察onboard插件是否正常显示)
* fix: 修复时尚模型下图标铺满任务栏的显示问题(Task: 150049)(Influence: 时尚模式下,不断向任务栏添加图标,知道铺满,观察任务栏是否在屏幕可见区域内)
* fix: 适配最新版本的dtk(Task: 213083)(Influence: 无)
* fix: 修复声音设置错误(Task: 210309)(Influence: 打开快捷设置面板,通过滑动条来调整声音,观察声音是否在设置的范围内,同时观察主面板和子面板两边的声音滑动条是否同步)
* fix: 修复鼠标放到任务栏上拖动区域尺寸错误的问题(Task: 213103)(Influence: 任务栏在下方的时候,鼠标放入任务栏上方的位置,观察鼠标形状是否正常)
* fix: 修复关机图标与插件区域间距过大的问题(Task: 112073)(Influence: 高效模式下,观察关机图标与左右侧插件和时间的距离)
* fix: 修复高效模式下关机按钮显示文本的问题(Task: 112073)(Influence: 高效模式下,调整任务栏到最高,观察关机按钮的显示)
* fix: 修复托盘图标显示异常的问题(Task: 213361)(Influence: 观察输入法是否正常显示,将托盘图标从托盘拖动到任务栏,观察该图标是否在展开托盘图标和输入法中间)
* fix: 修复部分命令无法执行的问题(Task: 213403)(Influence: 任务栏关机命令观察是否正常执行)
* fix: 修复wayland下部分托盘的tooltips显示异常(Bug: 157821)(Influence: 进入wayland,打开音乐,鼠标放入到音乐图标上,观察是否正常显示提示消息)
* fix: 修复已打开应用缩略图显示位置偏差(Bug: 165775)(Influence: 鼠标放入到已经打开的应用的上方,观察预览图的位置显示是否正常)
* fix: 修复右键插件区域再单击弹出菜单的问题(Bug: 171559)(Influence: 右键插件区域,再左键,观察插件区域菜单是否正常显示)
* fix: 修复插件右键菜单不响应的问题(Bug: 164381)(Influence: 右键菜单区域,点击某个菜单项,观察是否正常响应)
* fix: 修复任务栏点击时间设置崩溃的问题(Bug: 171511)(Influence: 任务栏右键时间区域,打开时间设置,观察是否正常打开控制中心的时间设置)
* fix: 修复拖动无打开窗口触发分屏后自动打开应用的问题(Bug: 154349)(Influence: 从任务栏拖动一个没有打开窗口的应用,观察是否打开应用(正常情况下不会打开应用),释放鼠标,观察应用图标是否回到任务栏上)
* fix: 修复wayland下打开快捷面板tooltip没有隐藏的问题(Bug: 171551)(Influence: 进入wayland鼠标放在任务栏的插件上点击应用弹出快捷面板观察toolTip是否消失)
* fix: 修复点击快捷面板之外的区域快捷面板不关闭的问题(Bug: 171545, 171583)(Influence: 进入wayland打开快捷面板点击快捷面板之外的其他区域观察快捷面板是否关闭)
* fix: 去掉部分插件的右键菜单(Bug: 171753)(Influence: 右键蓝牙、声音等插件,观察是否有右键菜单)
* fix: 修复任务栏中拖拽图标到桌面区域图标消失的问题(Bug: 171539)(Influence: 将托盘图标从任务栏快速向上拖动,观察任务栏托盘的图标是否还存在)
* style: 修改函数接口调用(Task: 96831)(Influence: 无)
* fix: 同步启动器的修改(Bug: 147753)(Influence: 从启动器应用列表-拖拽到任务栏-回收站-卸载应用功能正常)
* fix: 修复从托盘拖动应用到任务栏上面图标显示异常的问题(Bug: 171493)(Influence: 将安全中心等图标从托盘拖动到任务栏,观察图标是否重复)
* feat: 增加返回给控制中心设置插件和托盘应用的接口(Task: 216841)(Influence: 无)
* fix: 修复移除插件后快捷面板显示异常的问题(Bug: 171579)(Influence: 不断插入或者移除蓝牙设备,观察快捷面板是否显示正常)
* fix: 修复关闭窗口特效下启动器按钮被遮挡的问题(Task: 216977)(Influence: 关闭窗口特效的时候,观察启动器按钮是否正常显示)
* fix: 修复快捷面板弹出位置不准确的问题(Bug: 172213)(Influence: 从任务栏不同的插件图标点击,观察弹出快捷面板的位置)
* fix: 电池插件不显示在快捷面板(Bug: 171713)(Influence: 从笔记本上,打开快捷面板,观察是否存在电池图标)
* fix: 修复高缩放率下无法点击快捷面板的问题(Task: 218215)(Influence: 在1.25倍缩放率下,展开快捷面板,点击网络插件展开按钮,观察是否可以展开)
* fix: 修复蓝牙列表中设备顺序与控制中心不一致的问题(Bug: 171513)(Influence: 打开快捷面板中的蓝牙列表,在多个设备同时存在的情况下,观察设备顺序是否和控制中心一致)
* chore: 设置日志格式(Task: 124695)(Influence: 无)
* fix: 修复音量插件调节最小刻度不是%2的问题(Bug: 172417)(Influence: 音量插件调节)
* fix: 修复亮度插件无法调整到100的问题(Bug: 171869)(Influence: 任务栏-亮度插件调节)
* fix: 修复插件展开列表名称显示错误的问题(Task: 218733)(Influence: 从快捷面板打开网络列表,观察标题是否为网络)
* fix: 修复快捷面板中音量调节不响应音量增强设置的问题(Bug: 171869)(Influence: 任务栏-音量插件-音量增强时的交互)
* fix: 解決协同连接设备时关闭协同服务总开关导致任务栏崩溃的问题。(Bug: 171741)(Influence: 协同连接设备.)
* fix: 从任务栏移除托盘图标后放入托盘区(Bug: 171497, 171539)(Influence: 将图标从任务栏移出,松手后图标自动移到托盘区)
* fix: 增加对控制中心设置不同主题下图标的接口(Bug: 172365)(Influence: 在控制中心切换主题,观察图标是否发生变化)
* fix: 去掉电池的右键菜单(Bug: 171753)(Influence: 右键电池插件,观察是否存在菜单)
* fix: 修复移除蓝牙设备后快捷面板依然显示的问题(Bug: 171533)(Influence: 从电脑上移除蓝牙设备,观察快捷区域和快捷面板是否还有蓝牙图标)
* fix: 修复从控制中心第一次连接需要密码的网络没有弹出网络面板的问题(Bug: 150395)(Influence: 从控制中心第一次连接需要密码的网络,观察任务栏是否显示网络列表)
* fix: 适配v20插件在任务栏的显示(Task: 112073)(Influence: 任务栏显示v20插件)
* fix: 修复插入新的蓝牙设备后其他蓝牙设备自动关闭的问题(Bug: 171477)(Influence: 系统中已经存在一个蓝牙设备,且是打开状态,打开快捷面板,进入蓝牙详情页面,插入新的蓝牙设备,观察之前的蓝牙设备是否自动关闭)
* fix: 修复快捷面板展开后点击任务栏应用无法打开的问题(Bug: 166029)(Influence: 打开快捷面板,再打开任务栏应用,观察是否在关闭快捷面板的同时打开了任务栏的应用)
* fix: 修复任务栏插件音量设备显示错误的问题(Bug: 165853)(Influence: 从任务栏打开音量,进入音量的详情页面,观察是否和控制中心一致)
* fix: 修复快捷面板蓝牙状态显示错误的问题(Bug: 171419)(Influence: 点击蓝牙图标,观察快捷面板蓝牙的打开或者关闭的状态)
* fix: 完善音量功能(Bug: 172429)(Influence: 从控制中心关闭设备,观察任务栏设备状态是否发生变化)
* feat: 插件增加标记(Task: 220099)(Influence: 任务栏插件)
* fix: 插件根据标记来决定插件的类型(Task: 220099)(Influence: 任务栏插件类型)
* feat: 增加display插件(Task: 220489)(Influence: 展开任务栏快捷面板,观察是否有亮度设置相关的功能)
* fix: 移除代码中对显示相关的插件的引用(Task: 220489)(Influence: 无)
* fix: 修复wayland下无法拖动任务栏的问题(Task: 220523)(Influence: 进入wayland,鼠标移动到任务栏边缘,观察鼠标形状是否改变,能否正常调整任务栏尺寸)
* fix: 修复快捷面板没有自动刷新图标的问题(Task: 220599)(Influence: 执行快捷面板中的截图图标,观察图标是否发生变化)
* fix: 新增或移除显示屏插件自动添加或删除(Task: 220489)(Influence: 拔出显示屏后再插入显示屏,观察任务栏快捷面板中的亮度设置插件是否发生变化)
* fix: 修复音量增强未响应的问题(Bug: 171869)(Influence: 任务栏-音量-音量增强)
* feat: 将音乐播放功能提取为单独的插件(Task: 220489)(Influence: 无)
* fix: dock代码中移除音乐插件(Task: 220489)(Influence: 打开音乐播放器,任务栏快捷面板中显示音乐播放面板)
* fix: 修复控制中心显示多条重复控件的问题(Bug: 171581)(Influence: 控制中心-个性化,观察蓝牙或者任务栏等插件是否只显示一次)
* feat: 增加回收站和电源插件在控制中心的显示和隐藏(Task: 216841)(Influence: 从控制中心勾选或者取消勾选回收站和电源插件,观察任务栏的变化)
* fix: 修复wayland下智能隐藏偶尔失效的问题(Bug: 154513)(Influence: 进入wayland,任务栏设置为智能隐藏,从任务栏打开一个窗口,观察智能隐藏是否有效果)
* fix: 修复wayland下高效模式设置任务栏struct失效的问题(Bug: 150637)(Influence: 进入wayland-任务栏设置为一直隐藏或智能隐藏,窗体最大化,让任务栏显示隐藏,观察任务栏窗体是否发生变化)
* docs: 更新插件开发文档(Task: 221667)(Influence: 无)
* feat: 任务栏适配不同主题的插件图标(Task: 222025)(Influence: 切换不同的主题,观察图标是否发生变化)
* fix: 插件适配不同主题图标(Task: 222025)(Influence: 切换主题,观察任务栏的图标和控制中心个性化中的图标是否发生了变化)
* fix: 去掉插件中读取禁用当前插件的配置(Bug: 175085)(Influence: 插入蓝牙观察是否有蓝牙图标)
* fix: 修复从任务栏拖出托盘应用后托盘不弹出的问题(Bug: 171497)(Influence: 从任务栏拖动微信或企业微信,观察托盘是否弹出)
* fix: 修改插件接口(Task: 222025)(Influence: 无)
* fix: 修复音量调节控件幅度不正确的问题(Bug: 172417)(Influence: 音量控件调节幅度)
* feat: 声音插件滚轮调节音量(Bug: 172417)(Influence: 将鼠标放在任务栏声音图标上,滚动滚轮,观察音量大小是否调节)
* fix: 修复U盘插件不显示的问题(Task: 223159)(Influence: 系统中使用v20的U盘插件插入U盘查看U盘图标是否显示)
* fix: 修复调整任务栏位置后显示错误的问题(Task: 218981)(Influence: 时尚模式下,将任务栏从下方调整在左侧,观察托盘面板显示是否正常)
* fix: 修复控制中心调整任务栏尺寸缓慢显示的问题(Bug: 171799)(Influence: 从控制中心个性化调整任务栏尺寸,观察任务栏的尺寸是否正常调整)
* chore: V23接口改造适配(Task: 207483)(Influence: 无)
* fix: 点击任务栏时间显示窗口呼出小组件面板(Task: 165407)(Influence: 点击任务栏时间窗口小组件是否显示。)
* fix: 声音调整改成新接口(Bug: 172417)(Influence: 鼠标移动到任务栏的声音图标,滚动鼠标,声音跟着调整)
* fix: 修复无法通过蓝牙主面板开启关闭蓝牙的问题(Bug: 171419)(Influence: 打开快捷面板,点击蓝牙图标,观察蓝牙是否正常开启和关闭)
* fix: 修复黑色背景下蓝牙列表名称颜色显示错误(Bug: 167961)(Influence: 改变主题,观察蓝牙列表设备名称的颜色是否改变)
* fix: 修复反复开关蓝牙导致的崩溃问题(Task: 226123)(Influence: 蓝牙开关功能)
* fix: 修复控制中心调节透明度对任务栏无作用的问题(Task: 226127)(Influence: 任务栏透明度调节)
* fix: 适配协同后端接口变化修改。(Bug: 176323)(Influence: 协同设备列表显示)
-- zhaoyingzhen <zhaoyingzhen@uniontech.com> Tue, 13 Dec 2022 21:15:48 +0800
dde-dock (6.0.4) unstable; urgency=medium
[ Deepin Packages Builder ]
* fix: 修复托盘图标提示信息显示异常的问题(Bug: 150521)(Influence: 托盘提示信息显示)
* fix: 时尚模式时间日期tips有wayland默认tittle(Bug: 149173)(Influence: 任务栏时尚模式下时间日期tips是否显示正常)
* fix: 修复多任务视图界面点击任意处均导致任务栏显示右键菜单的问题(Bug: 150507)(Influence: 任务栏右键菜单显示的时机)
* feat: 拖动任务栏图标实现分屏效果(Task: 163465)(Influence: 从任务栏拖动图标到屏幕上方,查看是否有分屏功能)
* feat: 开启AM宏(Task: 162227)(Influence: 无)
* fix: 修复从任务栏无法打开控制中心问题(Bug: 149189)(Influence: 任务栏-任务栏设置-打开控制中心 任务栏-蓝牙-蓝牙设置 任务栏-日期-日期时间设置 任务栏-电源-电源设置 任务栏-关机-关机设置 任务栏-声音-声音设置 观察是否正常打开控制中心)
* fix: 时尚模式下日期时间增加右键菜单(Task: 162235)(Influence: 任务栏-时尚模式,右键查看日期时间是否存在时间日期菜单)
* fix: 修复从最近使用区域移除驻留后应用图标没有驻留到应用区域最末尾(Bug: 147643)(Influence: 任务栏时尚模式下,在最近使用区域移除驻留,观察移除的驻留是否在区域的末尾)
* feat: 增加适配控制中心设置是否使用最近区域的功能(Bug: 147717)(Influence: 开关是否显示最近使用应用,时尚模式下观察最近使用应用是否显示或隐藏)
* feat: 增加窗口多开的功能(Task: 170977)(Influence: 控制中心开启多开窗口显示,观察应用打开的窗口是否在对应的位置显示)
* feat: 任务栏应用拖动到移除驻留(Bug: 147699)(Influence: 拖动任务栏应用到回收站,观察是否可以移除驻留)
* fix: 修复wayland环境下应用打开窗口无法显示预览的问题(Bug: 140919)(Influence: wayland-任务栏打开一个应用窗口,鼠标放入到窗口上,查看预览图)
* fix: 任务栏代码结构优化解耦(Bug: 137267, 140029, 134527, 146743, 150293)(Influence: 打开任务栏,观察时尚模式下圆角,左右侧区域中间是否连接在一起等)
* feat: 删除插件基类的isPrimary接口(Task: 121387)(Influence: 安装网络插件,查看网络插件是否在快捷设置面板中显示两列图标)
* fix: 修改v20的接口为v23的接口(Task: 182009)(Influence: 打开控制中心,鼠标移动唤醒任务栏等操作)
* fix: 删除任务栏对libdframeworkdbus-dev库的依赖(Task: 182009)(Influence: 打开控制中心,鼠标移动唤醒任务栏、加载插件等,观察相关功能是否正常)
* fix: 修复部分托盘服务对应进程状态异常时导致任务栏卡死问题(Bug: 121947)(Influence: 托盘服务)
* feat: 添加任务栏跨端协同操作功能。(Task: 119639)(Influence: 任务栏跨端协同功能。)
* fix: 修复任务栏在副屏上方鼠标跟随未移动到左侧的问题(Bug: 147641)(Influence: 开启鼠标跟随,任务栏默认在主屏,鼠标移动到副屏幕,任务栏跟随到副屏幕,改变任务栏位置为上,此时任务栏在副屏幕的上方,将鼠标移动到主屏幕的上方,观察任务栏是否移动到主屏幕的上方)
* feat: 删除任务栏中控制中心设置插件(Task: 130353)(Influence: 无)
* fix: 时尚模式增加阴影(Bug: 137267)(Influence: 时尚模式观察阴影)
* feat: 支持通过环境变量的形式指定插件的路径(Issue: 3402)(Influence: 影响插件加载,对旧插件保持兼容)
* fix: 修复wayland环境时尚模式下打开企业微信崩溃的问题(Task: 196629)(Influence: 进入wayland桌面进入时尚模式打开企业微信双击观察企业微信是否正常打开)
* fix: 修复高效模式下托盘入口图标没有跟随位置变化而变化(Bug: 147743)(Influence: 时尚模式下改变任务栏位置,观察托盘入口是否发生变化)
* style: 优化CMakeList.txt文件(Task: 96831)(Influence: 无)
* fix: 修复开启启动器后鼠标再次点击无法关闭启动器的问题(Task: 198183)(Influence: 从任务栏点击鼠标开启启动器,再次点击鼠标,观察启动器是否收缩)
* fix: 修复wayland下窗口预览为空的问题(Bug: 140919, 150475)(Influence: 进入wayland鼠标放入任务栏已经打开的窗口图标上观察预览图是否显示)
* fix: 修复任务栏在右侧智能隐藏失败(Bug: 154513)(Influence: 任务栏右侧智能隐藏,将窗口拖动到任务栏的右侧,观察任务栏是否隐藏)
* fix: 修复跨端协同设备列表数量显示不对的问题。(Bug: 203831)(Influence: 跨端协同设备数量,及设备协同连接。)
* fix: 修复时尚模式下快捷设置面板显示设置子页面显示不全,导致跨端协同设备列表显示异常问题。(Bug: 160587, 160599)(Influence: 时尚模式下显示设置子页面显示问题。)
-- baodi <baodi@uniontech.com> Wed, 19 Oct 2022 12:57:31 +0800
dde-dock (6.0.3) unstable; urgency=medium
[ TagBuilder ]
* fix: 修复debian打包使用AM宏不生效的问题(Task: 133075)(Influence: 任务栏是否使用AM服务)
* fix: 修复wayland环境下任务栏右键菜单带有标题栏的问题(Bug: 140873)(Influence: wayland下查看任务栏图表的右键菜单)
* fix: 修复任务栏在高缩放率下防呆位置错误(Influence: 高缩放率下,查看防呆区域)
* fix: 删除任务栏启动时候用ldd检测libdtk库(Task: 157235)(Influence: 任务栏启动的时候检测是否有ldd报错信息)
* feat: 暂时取消使用AM宏(Task: 162227)(Influence: 无)
* feat: 增加最近使用应用的功能(Task: 158441)(Influence: 控制中心最近使用区域开启情况下,时尚模式,打开一个没有驻留在任务栏的应用,查看新打开的应用是否在最近打开应用区域)
* feat: 增加工具区域的使用(Task: 152867)(Influence: 时尚模式下,查看最近打开区域右侧是否显示回收站,来回切换时尚模式与高效模式,查看回收站位置是否发生变化)
* feat: recompile(Influence: recompile)
* feat: 点击任务栏时间显示窗口呼出小组件面板。(Task: 165407)(Influence: 点击任务栏时间窗口小组件是否显示。)
* fix: 修复拖拽托盘窗口图标至任务栏托盘区域经常失败的问题。(Bug: 147789)(Influence: 拖拽托盘窗口图标至任务栏托盘区域。)
* chore: 优化有关slider等相关的操作代码(Influence: 快捷设置面板slider操作。)
* fix: 修复从任务栏或其他应用打开控制中心卡死的问题(Bug: 149189)(Influence: 任务栏-任务栏设置-打开控制中心,观察打开的时间)
-- caixiangrong <caixiangrong@uniontech.com> Mon, 25 Jul 2022 13:10:23 +0800
dde-dock (6.0.2) unstable; urgency=low
* release 6.0.2
-- fanpengcheng <fanpengcheng@uniontech.com> Tue, 21 Jun 2022 16:55:39 +0800
dde-dock (6.0.1) unstable; urgency=low
* release Tag 6.0.1
-- fanpengcheng <fanpengcheng@uniontech.com> Tue, 21 Jun 2022 16:24:49 +0800
dde-dock (6.0.0.1) unstable; urgency=low
* release Tag 6.0.0.1
-- donghualin <donghualin@uniontech.com> Wed, 1 Jun 2022 21:34:29 +0800
dde-dock (6.0.0.0) unstable; urgency=low
* release Tag 6.0.0.0
-- donghualin <donghualin@uniontech.com> Wed, 1 Jun 2022 10:11:29 +0800
dde-dock (3.0.12-1) unstable; urgency=low
* Autobuild Tag 3.0.12
@ -134,4 +666,4 @@ dde-dock (0.0~git20150824-1) unstable; urgency=low
* Initial release
-- Deepin Packages Builder <packages@linuxdeepin.com> Mon, 24 Aug 2015 19:03:01 +0800
-- Deepin Packages Builder <packages@linuxdeepin.com> Mon, 24 Aug 2015 19:03:01 +0000

1
debian/compat vendored
View File

@ -1 +0,0 @@
9

86
debian/control vendored
View File

@ -2,78 +2,80 @@ Source: dde-dock
Section: x11
Priority: optional
Maintainer: Deepin Packages Builder <packages@deepin.com>
Build-Depends: debhelper (>= 8.0.0),
pkg-config,
Build-Depends:
cmake,
qt5-qmake,
libxcb-image0-dev,
libxcb-composite0-dev,
libxcb-ewmh-dev,
libxtst-dev,
qttools5-dev-tools,
qtbase5-private-dev,
libxcb-icccm4-dev,
libqt5x11extras5-dev,
libxcb-damage0-dev,
libqt5svg5-dev,
libdtkwidget-dev (>=5.4.19),
debhelper-compat (= 10),
extra-cmake-modules,
libdbusmenu-qt5-dev,
libdtkcore-dev (>=5.4.14),
libdtkcore5-bin (>=5.4.14),
libdtkgui-dev (>=5.4.13),
libdframeworkdbus-dev (>=5.4.6),
libgsettings-qt-dev,
libdbusmenu-qt5-dev,
libgtest-dev,
libdtkwidget-dev (>=5.4.19),
libdwayland-dev,
libgmock-dev,
libgsettings-qt-dev,
libgtest-dev,
libqt5svg5-dev,
libqt5waylandclient5-dev,
libqt5x11extras5-dev,
libxcb-composite0-dev,
libxcb-damage0-dev,
libxcb-ewmh-dev,
libxcb-icccm4-dev,
libxcb-image0-dev,
libxcursor-dev,
libxdamage-dev,
libxres-dev,
libxtst-dev,
pkg-config,
qt5-qmake,
qtbase5-private-dev,
qttools5-dev,
dde-control-center-dev,
libxcursor-dev
qttools5-dev-tools,
qtwayland5-private-dev,
Standards-Version: 3.9.8
Homepage: http://www.deepin.org/
Package: dde-dock
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends},
deepin-desktop-schemas (>=5.9.14),
libdtkwidget5 (>=5.4.19),
libdtkcore5 (>=5.4.14),
libdtkgui5 (>=5.4.13),
libdframeworkdbus2 (>=5.4.6),
dde-qt5xcb-plugin (>=5.0.25),
Depends:
dbus-bin,
dde-daemon (>=5.13.12),
startdde (>=5.8.9),
dde-qt5xcb-plugin (>=5.0.25),
deepin-desktop-schemas (>=5.9.14),
lastore-daemon (>=5.2.9),
qtxdg-dev-tools
qtxdg-dev-tools,
startdde (>=5.8.9),
${misc:Depends},
${shlibs:Depends},
Recommends:
dde-disk-mount-plugin,
dde-dock-onboard-plugin,
dde-network-dialog,
dock-network-plugin,
dcc-dock-plugin,
dde-network-dialog
Conflicts:
dde-workspace (<< 2.90.5),
dde-dock-applets,
dde-trash-plugin
dde-trash-plugin,
dde-workspace (<< 2.90.5),
dock-hotspot-plugin,
Replaces:
dde-dock-applets,
dde-trash-plugin
dde-trash-plugin,
Description: deepin desktop-environment - dock module
Dock module of deepin desktop-environment
Package: dde-dock-dev
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}
Depends:
${misc:Depends},
Description: deepin desktop-environment - dock module development files
Dock module development files of deepin desktop-environment
Package: dde-dock-onboard-plugin
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}, onboard
Depends:
onboard,
${misc:Depends},
${shlibs:Depends},
Description: deepin desktop-environment - dock plugin for onboard
Dock plugin for onboard of deepin desktop-environment
Package: dcc-dock-plugin
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}, onboard
Description: deepin desktop-environment - dcc plugin for dock settings
Dcc plugin for dock settings of deepin desktop-environment

2
debian/copyright vendored
View File

@ -3,7 +3,7 @@ Upstream-Name: dde-dock
Files: *
Copyright: 2015 Deepin Technology Co., Ltd.
License: LGPL-3.0-or-later
License: GPL-3+
This package is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or

View File

@ -1 +0,0 @@
usr/lib/dde-control-center/modules/libdcc-dock-plugin.so

View File

@ -1,12 +1,13 @@
usr/share
usr/bin
etc/dde-dock
usr/lib/dde-dock/plugins/libdatetime.so
usr/lib/dde-dock/plugins/loader/libpluginmanager.so
usr/lib/dde-dock/plugins/libshutdown.so
usr/lib/dde-dock/plugins/libtrash.so
usr/lib/dde-dock/plugins/libtray.so
usr/lib/dde-dock/plugins/liboverlay-warning.so
usr/lib/dde-dock/plugins/system-trays
usr/lib/dde-dock/plugins/quick-trays
usr/lib/dde-dock/plugins/libmultitasking.so
usr/lib/dde-dock/plugins/libshow-desktop.so
usr/lib/dde-dock/plugins/system-trays/libkeyboard-layout.so
usr/lib/dde-dock/plugins/libkeyboard-layout.so
usr/lib/dde-dock/plugins/libnotification.so
usr/share/dsg/configs/dde-dock/

View File

@ -1,16 +1,18 @@
cmake_minimum_required(VERSION 3.7)
cmake_minimum_required(VERSION 3.16)
set(BIN_NAME dde-dock)
configure_file(environments.h.in environments.h @ONLY)
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -fsanitize=address -O2")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -fsanitize=address -O2")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -fsanitize=address -O0")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -fsanitize=address -O0")
endif()
generation_dbus_interface(${CMAKE_CURRENT_SOURCE_DIR}/dbusinterface/xml ${CMAKE_CURRENT_SOURCE_DIR}/dbusinterface/generation_dbus_interface)
# Sources files
file(GLOB_RECURSE SRCS "*.h" "*.cpp" "../widgets/*.h" "../widgets/*.cpp")
file(GLOB_RECURSE SRCS "*.h" "*.cpp" "../widgets/*.h" "../widgets/*.cpp" "../interfaces/*.h")
# Find the library
find_package(PkgConfig REQUIRED)
@ -19,13 +21,22 @@ find_package(Qt5Concurrent REQUIRED)
find_package(Qt5X11Extras REQUIRED)
find_package(Qt5DBus REQUIRED)
find_package(Qt5Svg REQUIRED)
find_package(Qt5WaylandClient REQUIRED)
find_package(Qt5XkbCommonSupport REQUIRED)
find_package(DtkGui REQUIRED)
find_package(DtkWidget REQUIRED)
find_package(DtkCMake REQUIRED)
find_package(dbusmenu-qt5 REQUIRED)
find_package(ECM REQUIRED NO_MODULE)
set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH})
find_package(DWayland REQUIRED)
pkg_check_modules(XCB_EWMH REQUIRED xcb-ewmh x11 xcursor)
pkg_check_modules(DFrameworkDBus REQUIRED dframeworkdbus)
pkg_check_modules(QGSettings REQUIRED gsettings-qt)
pkg_check_modules(DtkGUI REQUIRED dtkgui)
set(THREADS_PREFER_PTHREAD_FLAG ON)
find_package(Threads REQUIRED)
pkg_check_modules(XCB_EWMH REQUIRED IMPORTED_TARGET x11 xcb xcb-icccm xcb-image xcb-ewmh xcb-composite xtst dbusmenu-qt5 xext xcursor xkbcommon xres)
pkg_check_modules(QGSettings REQUIRED IMPORTED_TARGET gsettings-qt)
pkg_check_modules(WAYLAND REQUIRED IMPORTED_TARGET wayland-client wayland-cursor wayland-egl)
# driver-manager
add_executable(${BIN_NAME}
@ -36,24 +47,28 @@ add_executable(${BIN_NAME}
target_include_directories(${BIN_NAME} PUBLIC
${DtkWidget_INCLUDE_DIRS}
${XCB_EWMH_INCLUDE_DIRS}
${DFrameworkDBus_INCLUDE_DIRS}
${Qt5Gui_PRIVATE_INCLUDE_DIRS}
${PROJECT_BINARY_DIR}
${QGSettings_INCLUDE_DIRS}
${DtkGUI_INCLUDE_DIRS}
${Qt5Svg_INCLUDE_DIRS}
${Qt5WaylandClient_PRIVATE_INCLUDE_DIRS}
../interfaces
../widgets
./dbusinterface/generation_dbus_interface
./qtdbusextended/
./dbusinterface
accessible
controller
dbus
display
item
item/components
model
pluginadapter
screenspliter
util
window
window/components
window/tray
window/tray/widgets
drag
xcb
../plugins/tray
../plugins/show-desktop
@ -66,17 +81,22 @@ target_include_directories(${BIN_NAME} PUBLIC
)
target_link_libraries(${BIN_NAME} PRIVATE
${XCB_EWMH_LIBRARIES}
${DFrameworkDBus_LIBRARIES}
${DtkWidget_LIBRARIES}
${Qt5Widgets_LIBRARIES}
${Qt5Gui_LIBRARIES}
${Qt5Concurrent_LIBRARIES}
${Qt5X11Extras_LIBRARIES}
${Qt5DBus_LIBRARIES}
${QGSettings_LIBRARIES}
${DtkGUI_LIBRARIES}
${Qt5Svg_LIBRARIES}
PkgConfig::QGSettings
PkgConfig::XCB_EWMH
PkgConfig::WAYLAND
Dtk::Gui
Qt5::Widgets
Qt5::Gui
Qt5::Concurrent
Qt5::X11Extras
Qt5::DBus
Qt5::Svg
Qt5::WaylandClient
Qt5::XkbCommonSupport
DWaylandClient
Threads::Threads
-lm
)
if (${CMAKE_SYSTEM_PROCESSOR} STREQUAL "sw_64")
@ -93,5 +113,5 @@ endif()
# bin
install(TARGETS ${BIN_NAME} DESTINATION ${CMAKE_INSTALL_BINDIR})
dconfig_meta_files(APPID org.deepin.dde.dock FILES ../configs/org.deepin.dde.dock.json)
# window_patterns
install(FILES taskmanager/window_patterns.json DESTINATION ${CMAKE_INSTALL_DATADIR}/dde-dock/)

View File

@ -1,194 +0,0 @@
// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd.
//
// SPDX-License-Identifier: LGPL-3.0-or-later
#include "accessibledefine.h"
#include "mainwindow.h"
#include "mainpanelcontrol.h"
#include "desktop_widget.h"
#include "tipswidget.h"
#include "dockpopupwindow.h"
#include "launcheritem.h"
#include "appitem.h"
#include "components/previewcontainer.h"
#include "pluginsitem.h"
#include "traypluginitem.h"
#include "placeholderitem.h"
#include "components/appdragwidget.h"
#include "components/appsnapshot.h"
#include "components/floatingpreview.h"
#include "snitraywidget.h"
#include "abstracttraywidget.h"
#include "indicatortraywidget.h"
#include "xembedtraywidget.h"
#include "system-trays/systemtrayitem.h"
#include "fashiontray/fashiontrayitem.h"
#include "fashiontray/fashiontraywidgetwrapper.h"
#include "fashiontray/fashiontraycontrolwidget.h"
#include "fashiontray/containers/attentioncontainer.h"
#include "fashiontray/containers/holdcontainer.h"
#include "fashiontray/containers/normalcontainer.h"
#include "fashiontray/containers/spliteranimated.h"
// 这部分由sound插件单独维护,这样做是因为在标记volumeslider这个类时,需要用到其setValue的实现,
// 但插件的源文件dock这边并没有包含,不想引入复杂的包含关系,其实最好的做法就是像sound插件这样,谁维护谁的
//#include "../plugins/sound/sounditem.h"
//#include "../plugins/sound/soundapplet.h"
//#include "../plugins/sound/sinkinputwidget.h"
//#include "../plugins/sound/componments/volumeslider.h"
//#include "../plugins/sound/componments/horizontalseparator.h"
#include "showdesktopwidget.h"
#include "datetimewidget.h"
#include "onboarditem.h"
#include "trashwidget.h"
#include "popupcontrolwidget.h"
#include "shutdownwidget.h"
#include "multitaskingwidget.h"
#include "overlaywarningwidget.h"
#include "horizontalseperator.h"
#include <DIconButton>
#include <DSwitchButton>
#include <DPushButton>
#include <DListView>
#include <DSwitchButton>
#include <DSpinner>
#include <dloadingindicator.h>
#include <QScrollBar>
DWIDGET_USE_NAMESPACE
using namespace Dock;
// 添加accessible
SET_FORM_ACCESSIBLE(MainWindow, "mainwindow")
SET_BUTTON_ACCESSIBLE(MainPanelControl, "mainpanelcontrol")
SET_LABEL_ACCESSIBLE(TipsWidget, "tips")
SET_FORM_ACCESSIBLE(DockPopupWindow, "popupwindow")
SET_BUTTON_ACCESSIBLE(LauncherItem, "launcheritem")
SET_BUTTON_ACCESSIBLE(AppItem, "appitem")
SET_BUTTON_ACCESSIBLE(PreviewContainer, "previewcontainer")
SET_BUTTON_ACCESSIBLE(PluginsItem, m_w->pluginName())
SET_BUTTON_ACCESSIBLE(TrayPluginItem, m_w->pluginName())
SET_BUTTON_ACCESSIBLE(PlaceholderItem, "placeholderitem")
SET_BUTTON_ACCESSIBLE(AppDragWidget, "appdragwidget")
SET_BUTTON_ACCESSIBLE(AppSnapshot, "appsnapshot")
SET_BUTTON_ACCESSIBLE(FloatingPreview, "floatingpreview")
SET_BUTTON_ACCESSIBLE(XEmbedTrayWidget, m_w->itemKeyForConfig().replace("sni:", ""))
SET_BUTTON_ACCESSIBLE(IndicatorTrayWidget, m_w->itemKeyForConfig().replace("sni:", ""))
SET_BUTTON_ACCESSIBLE(SNITrayWidget, m_w->itemKeyForConfig().replace("sni:", ""))
SET_BUTTON_ACCESSIBLE(AbstractTrayWidget, m_w->itemKeyForConfig().replace("sni:", ""))
SET_BUTTON_ACCESSIBLE(SystemTrayItem, m_w->itemKeyForConfig().replace("sni:", ""))
SET_FORM_ACCESSIBLE(FashionTrayItem, "fashiontrayitem")
SET_FORM_ACCESSIBLE(FashionTrayWidgetWrapper, "fashiontraywrapper")
SET_BUTTON_ACCESSIBLE(FashionTrayControlWidget, "fashiontraycontrolwidget")
SET_FORM_ACCESSIBLE(AttentionContainer, "attentioncontainer")
SET_FORM_ACCESSIBLE(HoldContainer, "holdcontainer")
SET_FORM_ACCESSIBLE(NormalContainer, "normalcontainer")
SET_FORM_ACCESSIBLE(SpliterAnimated, "spliteranimated")
SET_FORM_ACCESSIBLE(DatetimeWidget, "plugin-datetime")
SET_FORM_ACCESSIBLE(OnboardItem, "plugin-onboard")
SET_FORM_ACCESSIBLE(TrashWidget, "plugin-trash")
SET_BUTTON_ACCESSIBLE(PopupControlWidget, "popupcontrolwidget")
SET_FORM_ACCESSIBLE(ShutdownWidget, "plugin-shutdown")
SET_FORM_ACCESSIBLE(MultitaskingWidget, "plugin-multitasking")
SET_FORM_ACCESSIBLE(ShowDesktopWidget, "plugin-showdesktop")
SET_FORM_ACCESSIBLE(OverlayWarningWidget, "plugin-overlaywarningwidget")
SET_FORM_ACCESSIBLE(QWidget, m_w->objectName().isEmpty() ? "widget" : m_w->objectName())
SET_LABEL_ACCESSIBLE(QLabel, m_w->objectName() == "notifications" ? m_w->objectName() : m_w->text().isEmpty() ? m_w->objectName().isEmpty() ? "text" : m_w->objectName() : m_w->text())
SET_BUTTON_ACCESSIBLE(DIconButton, m_w->objectName().isEmpty() ? "imagebutton" : m_w->objectName())
SET_BUTTON_ACCESSIBLE(DSwitchButton, m_w->text().isEmpty() ? "switchbutton" : m_w->text())
SET_BUTTON_ACCESSIBLE(DesktopWidget, "desktopWidget");
SET_FORM_ACCESSIBLE(HorizontalSeperator, "HorizontalSeperator");
// 几个没什么用的标记,但为了提醒大家不要遗漏标记控件,还是不要去掉
SET_FORM_ACCESSIBLE(DBlurEffectWidget, "DBlurEffectWidget")
SET_FORM_ACCESSIBLE(DListView, "DListView")
SET_FORM_ACCESSIBLE(DLoadingIndicator, "DLoadingIndicator")
SET_FORM_ACCESSIBLE(DSpinner, "DSpinner")
SET_FORM_ACCESSIBLE(QMenu, "QMenu")
SET_FORM_ACCESSIBLE(QPushButton, "QPushButton")
SET_FORM_ACCESSIBLE(QSlider, "QSlider")
SET_FORM_ACCESSIBLE(QScrollBar, "QScrollBar")
SET_FORM_ACCESSIBLE(QScrollArea, "QScrollArea")
SET_FORM_ACCESSIBLE(QFrame, "QFrame")
SET_FORM_ACCESSIBLE(QGraphicsView, "QGraphicsView")
SET_FORM_ACCESSIBLE(DragWidget, "DragWidget")
QAccessibleInterface *accessibleFactory(const QString &classname, QObject *object)
{
// 自动化标记确定不需要的控件,方可加入忽略列表
const static QStringList ignoreLst = {"WirelessItem", "WiredItem", "SsidButton", "WirelessList", "AccessPointWidget"};
QAccessibleInterface *interface = nullptr;
USE_ACCESSIBLE(classname, MainWindow)
ELSE_USE_ACCESSIBLE(classname, MainPanelControl)
ELSE_USE_ACCESSIBLE(QString(classname).replace("Dock::", ""), TipsWidget)
ELSE_USE_ACCESSIBLE(classname, DockPopupWindow)
ELSE_USE_ACCESSIBLE(classname, LauncherItem)
ELSE_USE_ACCESSIBLE(classname, AppItem)
ELSE_USE_ACCESSIBLE(classname, PreviewContainer)
ELSE_USE_ACCESSIBLE(classname, PluginsItem)
ELSE_USE_ACCESSIBLE(classname, TrayPluginItem)
ELSE_USE_ACCESSIBLE(classname, PlaceholderItem)
ELSE_USE_ACCESSIBLE(classname, AppDragWidget)
ELSE_USE_ACCESSIBLE(classname, AppSnapshot)
ELSE_USE_ACCESSIBLE(classname, FloatingPreview)
ELSE_USE_ACCESSIBLE(classname, SNITrayWidget)
ELSE_USE_ACCESSIBLE(classname, AbstractTrayWidget)
ELSE_USE_ACCESSIBLE(classname, SystemTrayItem)
ELSE_USE_ACCESSIBLE(classname, FashionTrayItem)
ELSE_USE_ACCESSIBLE(classname, FashionTrayWidgetWrapper)
ELSE_USE_ACCESSIBLE(classname, FashionTrayControlWidget)
ELSE_USE_ACCESSIBLE(classname, AttentionContainer)
ELSE_USE_ACCESSIBLE(classname, HoldContainer)
ELSE_USE_ACCESSIBLE(classname, NormalContainer)
ELSE_USE_ACCESSIBLE(classname, SpliterAnimated)
ELSE_USE_ACCESSIBLE(classname, IndicatorTrayWidget)
ELSE_USE_ACCESSIBLE(classname, XEmbedTrayWidget)
ELSE_USE_ACCESSIBLE(classname, DesktopWidget)
ELSE_USE_ACCESSIBLE(classname, DatetimeWidget)
ELSE_USE_ACCESSIBLE(classname, OnboardItem)
ELSE_USE_ACCESSIBLE(classname, TrashWidget)
ELSE_USE_ACCESSIBLE(classname, PopupControlWidget)
ELSE_USE_ACCESSIBLE(classname, ShutdownWidget)
ELSE_USE_ACCESSIBLE(classname, MultitaskingWidget)
ELSE_USE_ACCESSIBLE(classname, ShowDesktopWidget)
ELSE_USE_ACCESSIBLE(classname, OverlayWarningWidget)
ELSE_USE_ACCESSIBLE(classname, QWidget)
ELSE_USE_ACCESSIBLE_BY_OBJECTNAME(classname, QLabel, "spliter_fix")
ELSE_USE_ACCESSIBLE_BY_OBJECTNAME(classname, QLabel, "spliter_app")
ELSE_USE_ACCESSIBLE_BY_OBJECTNAME(classname, QLabel, "spliter_tray")
ELSE_USE_ACCESSIBLE(classname, QLabel)
ELSE_USE_ACCESSIBLE_BY_OBJECTNAME(QString(classname).replace("Dtk::Widget::", ""), DIconButton, "closebutton-2d")
ELSE_USE_ACCESSIBLE_BY_OBJECTNAME(QString(classname).replace("Dtk::Widget::", ""), DIconButton, "closebutton-3d")
ELSE_USE_ACCESSIBLE_BY_OBJECTNAME(QString(classname).replace("Dtk::Widget::", ""), DSwitchButton, "")
ELSE_USE_ACCESSIBLE(QString(classname).replace("Dtk::Widget::", ""), DBlurEffectWidget)
ELSE_USE_ACCESSIBLE(QString(classname).replace("Dtk::Widget::", ""), DListView)
ELSE_USE_ACCESSIBLE(QString(classname).replace("Dtk::Widget::", ""), DLoadingIndicator)
ELSE_USE_ACCESSIBLE(QString(classname).replace("Dtk::Widget::", ""), DSpinner)
ELSE_USE_ACCESSIBLE(QString(classname).replace("Dtk::Widget::", ""), DSwitchButton)
ELSE_USE_ACCESSIBLE(QString(classname).replace("Dtk::Widget::", ""), DIconButton)
ELSE_USE_ACCESSIBLE(classname, QMenu)
ELSE_USE_ACCESSIBLE(classname, QPushButton)
ELSE_USE_ACCESSIBLE(classname, QSlider)
ELSE_USE_ACCESSIBLE(classname, QScrollBar)
ELSE_USE_ACCESSIBLE(classname, QScrollArea)
ELSE_USE_ACCESSIBLE(classname, QFrame)
ELSE_USE_ACCESSIBLE(classname, QGraphicsView)
ELSE_USE_ACCESSIBLE(classname, DragWidget)
ELSE_USE_ACCESSIBLE(classname, HorizontalSeperator);
if (!interface && object->inherits("QWidget") && !ignoreLst.contains(classname)) {
QWidget *w = static_cast<QWidget *>(object);
// 如果你看到这里的输出说明代码中仍有控件未兼顾到accessible功能请帮忙添加
if (w->accessibleName().isEmpty())
qWarning() << "accessibleFactory()" + QString("Class: " + classname + " cannot access");
}
return interface;
}

View File

@ -1,400 +0,0 @@
// SPDX-FileCopyrightText: 2018 - 2022 UnionTech Software Technology Co., Ltd.
//
// SPDX-License-Identifier: LGPL-3.0-or-later
#ifndef ACCESSIBLEINTERFACE_H
#define ACCESSIBLEINTERFACE_H
#include <QAccessible>
#include <QAccessibleWidget>
#include <QEvent>
#include <QMap>
#include <QString>
#include <QWidget>
#include <QObject>
#include <QMetaEnum>
#include <QMouseEvent>
#include <QApplication>
#define SEPARATOR "_"
inline QString getAccessibleName(QWidget *w, QAccessible::Role r, const QString &fallback)
{
const QString lowerFallback = fallback.toLower();
// 避免重复生成
static QMap< QObject *, QString > objnameMap;
if (!objnameMap[w].isEmpty())
return objnameMap[w];
static QMap< QAccessible::Role, QList< QString > > accessibleMap;
QString oldAccessName = w->accessibleName().toLower();
oldAccessName.replace(SEPARATOR, "");
// 按照类型添加固定前缀
QMetaEnum metaEnum = QMetaEnum::fromType<QAccessible::Role>();
QByteArray prefix = metaEnum.valueToKeys(r);
switch (r) {
case QAccessible::Button: prefix = "Btn"; break;
case QAccessible::StaticText: prefix = "Label"; break;
default: break;
}
// 再加上标识
QString accessibleName = QString::fromLatin1(prefix) + SEPARATOR;
QString objectName = w->objectName().toLower();
accessibleName += oldAccessName.isEmpty() ? (objectName.isEmpty() ?lowerFallback : objectName) : oldAccessName;
// 检查名称是否唯一
if (accessibleMap[r].contains(accessibleName)) {
if (!objnameMap.key(accessibleName)) {
objnameMap.remove(objnameMap.key(accessibleName));
objnameMap.insert(w, accessibleName);
return accessibleName;
}
// 获取编号,然后+1
int pos = accessibleName.indexOf(SEPARATOR);
int id = accessibleName.mid(pos + 1).toInt();
QString newAccessibleName;
do {
// 一直找到一个不重复的名字
newAccessibleName = accessibleName + SEPARATOR + QString::number(++id);
} while (accessibleMap[r].contains(newAccessibleName));
accessibleMap[r].append(newAccessibleName);
objnameMap.insert(w, newAccessibleName);
// 对象销毁后移除占用名称
QObject::connect(w, &QWidget::destroyed, [ = ] (QObject *obj) {
objnameMap.remove(obj);
accessibleMap[r].removeOne(newAccessibleName);
});
return newAccessibleName;
} else {
accessibleMap[r].append(accessibleName);
objnameMap.insert(w, accessibleName);
// 对象销毁后移除占用名称
QObject::connect(w, &QWidget::destroyed, [ = ] (QObject *obj) {
objnameMap.remove(obj);
accessibleMap[r].removeOne(accessibleName);
});
return accessibleName;
}
}
// 公共的功能
#define FUNC_CREATE(classname,accessibletype,accessdescription) explicit Accessible##classname(classname *w) \
: QAccessibleWidget(w,accessibletype,#classname)\
, m_w(w)\
, m_description(accessdescription)\
{}\
#define FUNC_TEXT(classname,accessiblename) QString Accessible##classname::text(QAccessible::Text t) const{\
switch (t) {\
case QAccessible::Name:\
return getAccessibleName(m_w, this->role(), accessiblename);\
case QAccessible::Description:\
return m_description;\
default:\
return QString();\
}\
}\
// button控件特有功能
#define FUNC_ACTIONNAMES(classname) QStringList Accessible##classname::actionNames() const{\
if(!m_w->isEnabled())\
return QStringList();\
return QStringList() << pressAction()<< showMenuAction();\
}\
#define FUNC_DOACTION(classname) void Accessible##classname::doAction(const QString &actionName){\
if(actionName == pressAction())\
{\
QPointF localPos = m_w->geometry().center();\
QMouseEvent event(QEvent::MouseButtonPress,localPos,Qt::LeftButton,Qt::LeftButton,Qt::NoModifier);\
qApp->sendEvent(m_w,&event);\
}\
else if(actionName == showMenuAction())\
{\
QPointF localPos = m_w->geometry().center();\
QMouseEvent event(QEvent::MouseButtonPress,localPos,Qt::RightButton,Qt::RightButton,Qt::NoModifier);\
qApp->sendEvent(m_w,&event);\
}\
}\
// Label控件特有功能
#define FUNC_TEXT_(classname) QString Accessible##classname::text(int startOffset, int endOffset) const{\
Q_UNUSED(startOffset)\
Q_UNUSED(endOffset)\
return m_w->text();\
}\
// Slider控件特有功能
#define FUNC_CURRENTVALUE(classname) QVariant Accessible##classname::currentValue() const{\
return m_w->value();\
}\
#define FUNC_SETCURRENTVALUE(classname) void Accessible##classname::setCurrentValue(const QVariant &value){\
return m_w->setValue(value.toInt());\
}\
#define FUNC_MAXMUMVALUE(classname) QVariant Accessible##classname::maximumValue() const{\
return QVariant(m_w->maximum());\
}\
#define FUNC_FUNC_MINIMUMVALUE(classname) QVariant Accessible##classname::minimumValue() const{\
return QVariant(m_w->minimum());\
}\
// DSlider控件特有功能函数
#define FUNC_FUNC_MINIMUMSTEPSIZE(classname) QVariant Accessible##classname::minimumStepSize() const{\
return QVariant(m_w->pageStep());\
}\
#define SET_FORM_ACCESSIBLE_WITH_DESCRIPTION(classname,accessiblename,accessdescription) class Accessible##classname : public QAccessibleWidget\
{\
public:\
FUNC_CREATE(classname,QAccessible::Form,accessdescription)\
QString text(QAccessible::Text t) const override;\
void *interface_cast(QAccessible::InterfaceType t) override{\
switch (t) {\
case QAccessible::ActionInterface:\
return static_cast<QAccessibleActionInterface*>(this);\
default:\
return nullptr;\
}\
}\
private:\
classname *m_w;\
QString m_description;\
};\
FUNC_TEXT(classname,accessiblename)\
#define SET_BUTTON_ACCESSIBLE_WITH_DESCRIPTION(classname,accessiblename,accessdescription) class Accessible##classname : public QAccessibleWidget\
{\
public:\
FUNC_CREATE(classname,QAccessible::Button,accessdescription)\
QString text(QAccessible::Text t) const override;\
void *interface_cast(QAccessible::InterfaceType t) override{\
switch (t) {\
case QAccessible::ActionInterface:\
return static_cast<QAccessibleActionInterface*>(this);\
default:\
return nullptr;\
}\
}\
QStringList actionNames() const override;\
void doAction(const QString &actionName) override;\
private:\
classname *m_w;\
QString m_description;\
};\
FUNC_TEXT(classname,accessiblename)\
FUNC_ACTIONNAMES(classname)\
FUNC_DOACTION(classname)\
#define SET_LABEL_ACCESSIBLE_WITH_DESCRIPTION(classname,accessiblename,accessdescription) class Accessible##classname : public QAccessibleWidget, public QAccessibleTextInterface\
{\
public:\
FUNC_CREATE(classname,QAccessible::StaticText,accessdescription)\
QString text(QAccessible::Text t) const override;\
void *interface_cast(QAccessible::InterfaceType t) override{\
switch (t) {\
case QAccessible::ActionInterface:\
return static_cast<QAccessibleActionInterface*>(this);\
case QAccessible::TextInterface:\
return static_cast<QAccessibleTextInterface*>(this);\
default:\
return nullptr;\
}\
}\
QString text(int startOffset, int endOffset) const override;\
void selection(int selectionIndex, int *startOffset, int *endOffset) const override {\
Q_UNUSED(selectionIndex)\
Q_UNUSED(startOffset)\
Q_UNUSED(endOffset)\
}\
int selectionCount() const override { return 0; }\
void addSelection(int startOffset, int endOffset) override {\
Q_UNUSED(startOffset)\
Q_UNUSED(endOffset)\
}\
void removeSelection(int selectionIndex) override {\
Q_UNUSED(selectionIndex)\
}\
void setSelection(int selectionIndex, int startOffset, int endOffset) override {\
Q_UNUSED(selectionIndex)\
Q_UNUSED(startOffset)\
Q_UNUSED(endOffset)\
}\
int cursorPosition() const override { return 0; }\
void setCursorPosition(int position) override {\
Q_UNUSED(position)\
}\
int characterCount() const override { return 0; }\
QRect characterRect(int offset) const override {\
Q_UNUSED(offset)\
return QRect();\
}\
int offsetAtPoint(const QPoint &point) const override {\
Q_UNUSED(point)\
return 0;\
}\
void scrollToSubstring(int startIndex, int endIndex) override {\
Q_UNUSED(startIndex)\
Q_UNUSED(endIndex)\
}\
QString attributes(int offset, int *startOffset, int *endOffset) const override {\
Q_UNUSED(offset)\
Q_UNUSED(startOffset)\
Q_UNUSED(endOffset)\
return QString();\
}\
private:\
classname *m_w;\
QString m_description;\
};\
FUNC_TEXT(classname,accessiblename)\
FUNC_TEXT_(classname)\
#define SET_SLIDER_ACCESSIBLE_WITH_DESCRIPTION(classname,accessiblename,accessdescription) class Accessible##classname : public QAccessibleWidget, public QAccessibleValueInterface\
{\
public:\
FUNC_CREATE(classname,QAccessible::Slider,accessdescription)\
QString text(QAccessible::Text t) const override;\
void *interface_cast(QAccessible::InterfaceType t) override{\
switch (t) {\
case QAccessible::ActionInterface:\
return static_cast<QAccessibleActionInterface*>(this);\
case QAccessible::ValueInterface:\
return static_cast<QAccessibleValueInterface*>(this);\
default:\
return nullptr;\
}\
}\
QVariant currentValue() const override;\
void setCurrentValue(const QVariant &value) override;\
QVariant maximumValue() const override;\
QVariant minimumValue() const override;\
QVariant minimumStepSize() const override;\
private:\
classname *m_w;\
QString m_description;\
};\
FUNC_TEXT(classname,accessiblename)\
FUNC_CURRENTVALUE(classname)\
FUNC_SETCURRENTVALUE(classname)\
FUNC_MAXMUMVALUE(classname)\
FUNC_FUNC_MINIMUMVALUE(classname)\
FUNC_FUNC_MINIMUMSTEPSIZE(classname)\
#define SET_EDITABLE_ACCESSIBLE_WITH_DESCRIPTION(classname,accessiblename,accessdescription) class Accessible##classname : public QAccessibleWidget, public QAccessibleEditableTextInterface, public QAccessibleTextInterface\
{\
public:\
FUNC_CREATE(classname,QAccessible::EditableText,accessdescription)\
QString text(QAccessible::Text t) const override;\
QAccessibleInterface *child(int index) const override { Q_UNUSED(index); return nullptr; }\
void *interface_cast(QAccessible::InterfaceType t) override{\
switch (t) {\
case QAccessible::ActionInterface:\
return static_cast<QAccessibleActionInterface*>(this);\
case QAccessible::TextInterface:\
return static_cast<QAccessibleTextInterface*>(this);\
case QAccessible::EditableTextInterface:\
return static_cast<QAccessibleEditableTextInterface*>(this);\
default:\
return nullptr;\
}\
}\
QString text(int startOffset, int endOffset) const override;\
void selection(int selectionIndex, int *startOffset, int *endOffset) const override {\
Q_UNUSED(selectionIndex)\
Q_UNUSED(startOffset)\
Q_UNUSED(endOffset)\
}\
int selectionCount() const override { return 0; }\
void addSelection(int startOffset, int endOffset) override {\
Q_UNUSED(startOffset)\
Q_UNUSED(endOffset)\
}\
void removeSelection(int selectionIndex) override { Q_UNUSED(selectionIndex);}\
void setSelection(int selectionIndex, int startOffset, int endOffset) override {\
Q_UNUSED(selectionIndex)\
Q_UNUSED(startOffset)\
Q_UNUSED(endOffset)\
}\
int cursorPosition() const override { return 0; }\
void setCursorPosition(int position) override {\
Q_UNUSED(position)\
}\
int characterCount() const override { return 0; }\
QRect characterRect(int offset) const override { \
Q_UNUSED(offset)\
return QRect(); }\
int offsetAtPoint(const QPoint &point) const override {\
Q_UNUSED(point)\
return 0; }\
void scrollToSubstring(int startIndex, int endIndex) override {\
Q_UNUSED(startIndex)\
Q_UNUSED(endIndex)\
}\
QString attributes(int offset, int *startOffset, int *endOffset) const override {\
Q_UNUSED(offset)\
Q_UNUSED(startOffset)\
Q_UNUSED(endOffset)\
return QString(); }\
void insertText(int offset, const QString &text) override {\
Q_UNUSED(offset)\
Q_UNUSED(text)\
}\
void deleteText(int startOffset, int endOffset) override {\
Q_UNUSED(startOffset)\
Q_UNUSED(endOffset)\
}\
void replaceText(int startOffset, int endOffset, const QString &text) override {\
Q_UNUSED(startOffset)\
Q_UNUSED(endOffset)\
Q_UNUSED(text)\
}\
private:\
classname *m_w;\
QString m_description;\
};\
FUNC_TEXT(classname,accessiblename)\
FUNC_TEXT_(classname)\
#define USE_ACCESSIBLE(classnamestring,classname) if (classnamestring == QLatin1String(#classname) && object && object->isWidgetType())\
{\
interface = new Accessible##classname(static_cast<classname *>(object));\
}\
#define ELSE_USE_ACCESSIBLE(classnamestring,classname) else if (classnamestring == QLatin1String(#classname) && object && object->isWidgetType())\
{\
interface = new Accessible##classname(static_cast<classname *>(object));\
}\
// [指定objectname]---适用同一个类但objectname不同的情况
#define USE_ACCESSIBLE_BY_OBJECTNAME(classnamestring,classname,objectname) if (classnamestring == QLatin1String(#classname) && object && (object->objectName() == objectname) && object->isWidgetType())\
{\
interface = new Accessible##classname(static_cast<classname *>(object));\
}\
#define ELSE_USE_ACCESSIBLE_BY_OBJECTNAME(classnamestring,classname,objectname) else if (classnamestring == QLatin1String(#classname) && object && (object->objectName() == objectname) && object->isWidgetType())\
{\
interface = new Accessible##classname(static_cast<classname *>(object));\
}\
/*******************************************简化使用*******************************************/
#define SET_FORM_ACCESSIBLE(classname,accessiblename) SET_FORM_ACCESSIBLE_WITH_DESCRIPTION(classname,accessiblename,"")
#define SET_BUTTON_ACCESSIBLE(classname,accessiblename) SET_BUTTON_ACCESSIBLE_WITH_DESCRIPTION(classname,accessiblename,"")
#define SET_LABEL_ACCESSIBLE(classname,accessiblename) SET_LABEL_ACCESSIBLE_WITH_DESCRIPTION(classname,accessiblename,"")
#define SET_SLIDER_ACCESSIBLE(classname,accessiblename) SET_SLIDER_ACCESSIBLE_WITH_DESCRIPTION(classname,accessiblename,"")
#define SET_EDITABLE_ACCESSIBLE(classname,accessiblename) SET_EDITABLE_ACCESSIBLE_WITH_DESCRIPTION(classname,accessiblename,"")
/************************************************************************************************/
#endif // ACCESSIBLEINTERFACE_H

View File

@ -1,4 +1,5 @@
// SPDX-FileCopyrightText: 2019 - 2022 UnionTech Software Technology Co., Ltd.
// Copyright (C) 2019 ~ 2019 Deepin Technology Co., Ltd.
// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd.
//
// SPDX-License-Identifier: LGPL-3.0-or-later
@ -6,8 +7,14 @@
#include "appitem.h"
#include "launcheritem.h"
#include "pluginsitem.h"
#include "taskmanager/entry.h"
#include "taskmanager/taskmanager.h"
#include "taskmanager/windowinfobase.h"
#include "traypluginitem.h"
#include "utils.h"
#include "docksettings.h"
#include "appmultiitem.h"
#include "quicksettingcontroller.h"
#include <QDebug>
#include <QGSettings>
@ -21,39 +28,46 @@ const QGSettings *DockItemManager::m_dockedSettings = Utils::ModuleSettingsPtr("
DockItemManager::DockItemManager(QObject *parent)
: QObject(parent)
, m_appInter(new DBusDock("com.deepin.dde.daemon.Dock", "/com/deepin/dde/daemon/Dock", QDBusConnection::sessionBus(), this))
, m_pluginsInter(new DockPluginsController(this))
, m_taskmanager(TaskManager::instance())
, m_loadFinished(false)
{
//固定区域:启动器
m_itemList.append(new LauncherItem);
// 应用区域
for (auto entry : m_appInter->entries()) {
for (auto entry : m_taskmanager->getEntries()) {
AppItem *it = new AppItem(m_appSettings, m_activeSettings, m_dockedSettings, entry);
manageItem(it);
connect(it, &AppItem::requestActivateWindow, m_appInter, &DBusDock::ActivateWindow, Qt::QueuedConnection);
connect(it, &AppItem::requestPreviewWindow, m_appInter, &DBusDock::PreviewWindow);
connect(it, &AppItem::requestCancelPreview, m_appInter, &DBusDock::CancelPreviewWindow);
connect(it, &AppItem::requestPreviewWindow, m_taskmanager, &TaskManager::previewWindow);
connect(it, &AppItem::requestCancelPreview, m_taskmanager, &TaskManager::cancelPreviewWindow);
connect(it, &AppItem::windowCountChanged, this, &DockItemManager::onAppWindowCountChanged);
connect(this, &DockItemManager::requestUpdateDockItem, it, &AppItem::requestUpdateEntryGeometries);
m_itemList.append(it);
m_appIDist.append(it->appId());
updateMultiItems(it);
}
// 托盘区域和插件区域 由DockPluginsController获取
QuickSettingController *quickController = QuickSettingController::instance();
connect(quickController, &QuickSettingController::pluginInserted, this, [ = ](PluginsItemInterface *itemInter, const QuickSettingController::PluginAttribute pluginAttr) {
if (pluginAttr != QuickSettingController::PluginAttribute::Fixed)
return;
m_pluginItems << itemInter;
pluginItemInserted(quickController->pluginItemWidget(itemInter));
});
connect(quickController, &QuickSettingController::pluginRemoved, this, &DockItemManager::onPluginItemRemoved);
connect(quickController, &QuickSettingController::pluginUpdated, this, &DockItemManager::onPluginUpdate);
connect(quickController, &QuickSettingController::pluginLoaderFinished, this, &DockItemManager::onPluginLoadFinished, Qt::QueuedConnection);
// 应用信号
connect(m_appInter, &DBusDock::EntryAdded, this, &DockItemManager::appItemAdded);
connect(m_appInter, &DBusDock::EntryRemoved, this, static_cast<void (DockItemManager::*)(const QString &)>(&DockItemManager::appItemRemoved), Qt::QueuedConnection);
connect(m_appInter, &DBusDock::ServiceRestarted, this, &DockItemManager::reloadAppItems);
// 插件信号
connect(m_pluginsInter, &DockPluginsController::pluginItemInserted, this, &DockItemManager::pluginItemInserted, Qt::QueuedConnection);
connect(m_pluginsInter, &DockPluginsController::pluginItemRemoved, this, &DockItemManager::pluginItemRemoved, Qt::QueuedConnection);
connect(m_pluginsInter, &DockPluginsController::pluginItemUpdated, this, &DockItemManager::itemUpdated, Qt::QueuedConnection);
connect(m_pluginsInter, &DockPluginsController::trayVisableCountChanged, this, &DockItemManager::trayVisableCountChanged, Qt::QueuedConnection);
connect(m_pluginsInter, &DockPluginsController::pluginLoaderFinished, this, &DockItemManager::onPluginLoadFinished, Qt::QueuedConnection);
connect(m_taskmanager, &TaskManager::entryAdded, this, &DockItemManager::appItemAdded, Qt::DirectConnection);
connect(m_taskmanager, &TaskManager::entryRemoved, this, static_cast<void (DockItemManager::*)(const QString &)>(&DockItemManager::appItemRemoved), Qt::DirectConnection);
connect(m_taskmanager, &TaskManager::serviceRestarted, this, &DockItemManager::reloadAppItems);
connect(DockSettings::instance(), &DockSettings::showMultiWindowChanged, this, &DockItemManager::onShowMultiWindowChanged);
DApplication *app = qobject_cast<DApplication *>(qApp);
if (app) {
@ -62,8 +76,15 @@ DockItemManager::DockItemManager(QObject *parent)
connect(qApp, &QApplication::aboutToQuit, this, &QObject::deleteLater);
// 读取已经加载的固定区域插件
QList<PluginsItemInterface *> plugins = quickController->pluginItems(QuickSettingController::PluginAttribute::Fixed);
for (PluginsItemInterface *plugin : plugins) {
m_pluginItems << plugin;
pluginItemInserted(quickController->pluginItemWidget(plugin));
}
// 刷新图标
QMetaObject::invokeMethod(this, "refreshItemsIcon", Qt::QueuedConnection);
QMetaObject::invokeMethod(this, &DockItemManager::refreshItemsIcon, Qt::QueuedConnection);
}
DockItemManager *DockItemManager::instance(QObject *parent)
@ -79,20 +100,9 @@ const QList<QPointer<DockItem>> DockItemManager::itemList() const
return m_itemList;
}
const QList<PluginsItemInterface *> DockItemManager::pluginList() const
{
return m_pluginsInter->pluginsMap().keys();
}
bool DockItemManager::appIsOnDock(const QString &appDesktop) const
{
return m_appInter->IsOnDock(appDesktop);
}
void DockItemManager::startLoadPlugins() const
{
int delay = Utils::SettingValue("com.deepin.dde.dock", "/com/deepin/dde/dock/", "delay-plugins-time", 0).toInt();
QTimer::singleShot(delay, m_pluginsInter, &DockPluginsController::startLoader);
return m_taskmanager->isOnDock(appDesktop);
}
void DockItemManager::refreshItemsIcon()
@ -160,15 +170,15 @@ void DockItemManager::itemMoved(DockItem *const sourceItem, DockItem *const targ
// for app move, index 0 is launcher item, need to pass it.
if (moveType == DockItem::App && replaceType == DockItem::App)
m_appInter->MoveEntry(moveIndex - 1, replaceIndex - 1);
m_taskmanager->moveEntry(moveIndex - 1, replaceIndex - 1);
}
void DockItemManager::itemAdded(const QString &appDesktop, int idx)
{
m_appInter->RequestDock(appDesktop, idx);
m_taskmanager->requestDock(appDesktop, idx);
}
void DockItemManager::appItemAdded(const QDBusObjectPath &path, const int index)
void DockItemManager::appItemAdded(const Entry *entry, const int index)
{
// 第一个是启动器
int insertIndex = 1;
@ -182,29 +192,31 @@ void DockItemManager::appItemAdded(const QDBusObjectPath &path, const int index)
++insertIndex;
}
AppItem *item = new AppItem(m_appSettings, m_activeSettings, m_dockedSettings, path);
AppItem *item = new AppItem(m_appSettings, m_activeSettings, m_dockedSettings, entry);
if (m_appIDist.contains(item->appId())) {
delete item;
item->deleteLater();
return;
}
manageItem(item);
connect(item, &AppItem::requestActivateWindow, m_appInter, &DBusDock::ActivateWindow, Qt::QueuedConnection);
connect(item, &AppItem::requestPreviewWindow, m_appInter, &DBusDock::PreviewWindow);
connect(item, &AppItem::requestCancelPreview, m_appInter, &DBusDock::CancelPreviewWindow);
connect(item, &AppItem::requestPreviewWindow, m_taskmanager, &TaskManager::previewWindow);
connect(item, &AppItem::requestCancelPreview, m_taskmanager, &TaskManager::cancelPreviewWindow);
connect(item, &AppItem::windowCountChanged, this, &DockItemManager::onAppWindowCountChanged);
connect(this, &DockItemManager::requestUpdateDockItem, item, &AppItem::requestUpdateEntryGeometries);
m_itemList.insert(insertIndex, item);
m_appIDist.append(item->appId());
if (index != -1) {
emit itemInserted(insertIndex - 1, item);
return;
}
int itemIndex = insertIndex;
if (index != -1)
itemIndex = insertIndex - 1;
emit itemInserted(insertIndex, item);
// 插入dockItem
emit itemInserted(itemIndex, item);
// 向后插入多开窗口
updateMultiItems(item, true);
}
void DockItemManager::appItemRemoved(const QString &appId)
@ -238,6 +250,24 @@ void DockItemManager::appItemRemoved(AppItem *appItem)
appItem->deleteLater();
}
void DockItemManager::reloadAppItems()
{
// remove old item
for (auto item : m_itemList)
if (item->itemType() == DockItem::App)
appItemRemoved(static_cast<AppItem *>(item.data()));
// append new item
for (Entry* entry : m_taskmanager->getEntries())
appItemAdded(entry, -1);
}
void DockItemManager::manageItem(DockItem *item)
{
connect(item, &DockItem::requestRefreshWindowVisible, this, &DockItemManager::requestRefershWindowVisible, Qt::UniqueConnection);
connect(item, &DockItem::requestWindowAutoHide, this, &DockItemManager::requestWindowAutoHide, Qt::UniqueConnection);
}
void DockItemManager::pluginItemInserted(PluginsItem *item)
{
manageItem(item);
@ -287,44 +317,155 @@ void DockItemManager::pluginItemInserted(PluginsItem *item)
m_itemList.insert(insertIndex, item);
if(pluginType == DockItem::FixedPlugin)
{
insertIndex ++;
}
if (!Utils::SettingValue(QString("com.deepin.dde.dock.module.") + item->pluginName(), QByteArray(), "enable", true).toBool())
item->setVisible(false);
else
item->setVisible(true);
emit itemInserted(insertIndex - firstPluginPosition, item);
}
void DockItemManager::pluginItemRemoved(PluginsItem *item)
void DockItemManager::onPluginItemRemoved(PluginsItemInterface *itemInter)
{
if (!m_pluginItems.contains(itemInter))
return;
PluginsItem *item = QuickSettingController::instance()->pluginItemWidget(itemInter);
item->hidePopup();
item->hide();
emit itemRemoved(item);
m_itemList.removeOne(item);
if (m_loadFinished) {
updatePluginsItemOrderKey();
}
}
void DockItemManager::reloadAppItems()
void DockItemManager::onPluginUpdate(PluginsItemInterface *itemInter)
{
// remove old item
for (auto item : m_itemList)
if (item->itemType() == DockItem::App)
appItemRemoved(static_cast<AppItem *>(item.data()));
if (!m_pluginItems.contains(itemInter))
return;
// append new item
for (auto path : m_appInter->entries())
appItemAdded(path, -1);
}
void DockItemManager::manageItem(DockItem *item)
{
connect(item, &DockItem::requestRefreshWindowVisible, this, &DockItemManager::requestRefershWindowVisible, Qt::UniqueConnection);
connect(item, &DockItem::requestWindowAutoHide, this, &DockItemManager::requestWindowAutoHide, Qt::UniqueConnection);
Q_EMIT itemUpdated(QuickSettingController::instance()->pluginItemWidget(itemInter));
}
void DockItemManager::onPluginLoadFinished()
{
updatePluginsItemOrderKey();
m_loadFinished = true;
}
void DockItemManager::onAppWindowCountChanged()
{
AppItem *appItem = static_cast<AppItem *>(sender());
updateMultiItems(appItem, true);
}
void DockItemManager::updateMultiItems(AppItem *appItem, bool emitSignal)
{
// 如果系统设置不开启应用多窗口拆分,则无需之后的操作
if (!m_taskmanager->showMultiWindow())
return;
// 如果开启了多窗口拆分,则同步窗口和多窗口应用的信息
const WindowInfoMap &windowInfoMap = appItem->windowsInfos();
QList<AppMultiItem *> removeItems;
// 同步当前已经存在的多开窗口的列表,删除不存在的多开窗口
for (int i = 0; i < m_itemList.size(); i++) {
QPointer<DockItem> dockItem = m_itemList[i];
AppMultiItem *multiItem = qobject_cast<AppMultiItem *>(dockItem.data());
if (!multiItem || multiItem->appItem() != appItem)
continue;
// 如果查找到的当前的应用的窗口不需要移除,则继续下一个循环
if (!needRemoveMultiWindow(multiItem))
continue;
removeItems << multiItem;
}
// 从itemList中移除多开窗口
for (AppMultiItem *dockItem : removeItems)
m_itemList.removeOne(dockItem);
if (emitSignal) {
// 移除发送每个多开窗口的移除信号
for (AppMultiItem *dockItem : removeItems)
Q_EMIT itemRemoved(dockItem);
}
qDeleteAll(removeItems);
// 遍历当前APP打开的所有窗口的列表如果不存在多开窗口的应用则新增同时发送信号
for (auto it = windowInfoMap.begin(); it != windowInfoMap.end(); it++) {
if (multiWindowExist(it.key()))
continue;
const WindowInfo &windowInfo = it.value();
// 如果不存在这个窗口对应的多开窗口,则新建一个窗口,同时发送窗口新增的信号
AppMultiItem *multiItem = new AppMultiItem(appItem, it.key(), windowInfo);
m_itemList << multiItem;
if (emitSignal)
Q_EMIT itemInserted(-1, multiItem);
}
}
// 检查对应的窗口是否存在多开窗口
bool DockItemManager::multiWindowExist(quint32 winId) const
{
for (QPointer<DockItem> dockItem : m_itemList) {
AppMultiItem *multiItem = qobject_cast<AppMultiItem *>(dockItem.data());
if (!multiItem)
continue;
if (multiItem->winId() == winId)
return true;
}
return false;
}
// 检查当前多开窗口是否需要移除
// 如果当前多开窗口图标对应的窗口在这个窗口所属的APP中所有打开窗口中不存在那么则认为该多窗口已经被关闭
bool DockItemManager::needRemoveMultiWindow(AppMultiItem *multiItem) const
{
// 查找多分窗口对应的窗口在应用所有的打开的窗口中是否存在,只要它对应的窗口存在,就无需删除
// 只要不存在,就需要删除
AppItem *appItem = multiItem->appItem();
const WindowInfoMap &windowInfoMap = appItem->windowsInfos();
for (auto it = windowInfoMap.begin(); it != windowInfoMap.end(); it++) {
if (it.key() == multiItem->winId())
return false;
}
return true;
}
void DockItemManager::onShowMultiWindowChanged()
{
if (m_taskmanager->showMultiWindow()) {
// 如果当前设置支持窗口多开那么就依次对每个APPItem加载多开窗口
for (int i = 0; i < m_itemList.size(); i++) {
const QPointer<DockItem> &dockItem = m_itemList[i];
if (dockItem->itemType() != DockItem::ItemType::App)
continue;
updateMultiItems(static_cast<AppItem *>(dockItem.data()), true);
}
} else {
// 如果当前设置不支持窗口多开,则删除所有的多开窗口
QList<DockItem *> multiWindows;
for (const QPointer<DockItem> &dockItem : m_itemList) {
if (dockItem->itemType() != DockItem::AppMultiWindow)
continue;
multiWindows << dockItem.data();
}
for (DockItem *multiItem : multiWindows) {
m_itemList.removeOne(multiItem);
Q_EMIT itemRemoved(multiItem);
multiItem->deleteLater();
}
}
}

View File

@ -1,21 +1,24 @@
// SPDX-FileCopyrightText: 2019 - 2022 UnionTech Software Technology Co., Ltd.
// Copyright (C) 2019 ~ 2019 Deepin Technology Co., Ltd.
// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd.
//
// SPDX-License-Identifier: LGPL-3.0-or-later
#ifndef DOCKITEMMANAGER_H
#define DOCKITEMMANAGER_H
#include "dockpluginscontroller.h"
#include "pluginsiteminterface.h"
#include "dockitem.h"
#include "appitem.h"
#include "placeholderitem.h"
#include <com_deepin_dde_daemon_dock.h>
#include "dbusutil.h"
#include "taskmanager/taskmanager.h"
#include "taskmanager/windowinfobase.h"
#include <QObject>
using DBusDock = com::deepin::dde::daemon::Dock;
class AppMultiItem;
class PluginsItem;
/**
* @brief The DockItemManager class
*
@ -28,9 +31,7 @@ public:
static DockItemManager *instance(QObject *parent = nullptr);
const QList<QPointer<DockItem> > itemList() const;
const QList<PluginsItemInterface *> pluginList() const;
bool appIsOnDock(const QString &appDesktop) const;
void startLoadPlugins() const;
signals:
void itemInserted(const int index, DockItem *item) const;
@ -49,26 +50,36 @@ public slots:
private Q_SLOTS:
void onPluginLoadFinished();
void onPluginItemRemoved(PluginsItemInterface *itemInter);
void onPluginUpdate(PluginsItemInterface *itemInter);
void onAppWindowCountChanged();
void onShowMultiWindowChanged();
private:
explicit DockItemManager(QObject *parent = nullptr);
void appItemAdded(const QDBusObjectPath &path, const int index);
void appItemAdded(const Entry *entry, const int index);
void appItemRemoved(const QString &appId);
void appItemRemoved(AppItem *appItem);
void pluginItemInserted(PluginsItem *item);
void pluginItemRemoved(PluginsItem *item);
void updatePluginsItemOrderKey();
void reloadAppItems();
void manageItem(DockItem *item);
void pluginItemInserted(PluginsItem *item);
void updateMultiItems(AppItem *appItem, bool emitSignal = false);
bool multiWindowExist(quint32 winId) const;
bool needRemoveMultiWindow(AppMultiItem *multiItem) const;
private:
DBusDock *m_appInter;
DockPluginsController *m_pluginsInter;
TaskManager *m_taskmanager;
static DockItemManager *INSTANCE;
QList<QPointer<DockItem>> m_itemList;
QList<QString> m_appIDist;
QList<PluginsItemInterface *> m_pluginItems;
bool m_loadFinished; // 记录所有插件是否加载完成
static const QGSettings *m_appSettings;
static const QGSettings *m_activeSettings;

View File

@ -1,147 +0,0 @@
// SPDX-FileCopyrightText: 2011 - 2022 UnionTech Software Technology Co., Ltd.
//
// SPDX-License-Identifier: LGPL-3.0-or-later
#include "dockpluginscontroller.h"
#include "pluginsiteminterface.h"
#include "traypluginitem.h"
#include <QDebug>
#include <QDir>
#include <QDrag>
DockPluginsController::DockPluginsController(QObject *parent)
: AbstractPluginsController(parent)
{
setObjectName("DockPlugin");
}
void DockPluginsController::itemAdded(PluginsItemInterface *const itemInter, const QString &itemKey)
{
QMap<PluginsItemInterface *, QMap<QString, QObject *>> &mPluginsMap = pluginsMap();
// check if same item added
if (mPluginsMap.contains(itemInter))
if (mPluginsMap[itemInter].contains(itemKey))
return;
// 取 plugin api
QPluginLoader *pluginLoader = qobject_cast<QPluginLoader*>(mPluginsMap[itemInter].value("pluginloader"));
if (!pluginLoader) {
return;
}
const QJsonObject &meta = pluginLoader->metaData().value("MetaData").toObject();
const QString &pluginApi = meta.value("api").toString();
PluginsItem *item = nullptr;
if (itemInter->pluginName() == "tray") {
item = new TrayPluginItem(itemInter, itemKey, pluginApi);
if (item->graphicsEffect()) {
item->graphicsEffect()->setEnabled(false);
}
connect(static_cast<TrayPluginItem *>(item), &TrayPluginItem::trayVisableCountChanged,
this, &DockPluginsController::trayVisableCountChanged, Qt::UniqueConnection);
} else {
item = new PluginsItem(itemInter, itemKey, pluginApi);
}
mPluginsMap[itemInter][itemKey] = item;
emit pluginItemInserted(item);
}
void DockPluginsController::itemUpdate(PluginsItemInterface *const itemInter, const QString &itemKey)
{
PluginsItem *item = static_cast<PluginsItem *>(pluginItemAt(itemInter, itemKey));
if (!item)
return;
item->update();
emit pluginItemUpdated(item);
}
void DockPluginsController::itemRemoved(PluginsItemInterface *const itemInter, const QString &itemKey)
{
PluginsItem *item = static_cast<PluginsItem *>(pluginItemAt(itemInter, itemKey));
if (!item)
return;
item->detachPluginWidget();
emit pluginItemRemoved(item);
QMap<PluginsItemInterface *, QMap<QString, QObject *>> &mPluginsMap = pluginsMap();
mPluginsMap[itemInter].remove(itemKey);
// do not delete the itemWidget object(specified in the plugin interface)
item->centralWidget()->setParent(nullptr);
if (item->isDragging()) {
QDrag::cancel();
}
// just delete our wrapper object(PluginsItem)
item->deleteLater();
}
void DockPluginsController::requestWindowAutoHide(PluginsItemInterface *const itemInter, const QString &itemKey, const bool autoHide)
{
PluginsItem *item = static_cast<PluginsItem *>(pluginItemAt(itemInter, itemKey));
if (!item)
return;
Q_EMIT item->requestWindowAutoHide(autoHide);
}
void DockPluginsController::requestRefreshWindowVisible(PluginsItemInterface *const itemInter, const QString &itemKey)
{
PluginsItem *item = static_cast<PluginsItem *>(pluginItemAt(itemInter, itemKey));
if (!item)
return;
Q_EMIT item->requestRefreshWindowVisible();
}
void DockPluginsController::requestSetAppletVisible(PluginsItemInterface *const itemInter, const QString &itemKey, const bool visible)
{
PluginsItem *item = static_cast<PluginsItem *>(pluginItemAt(itemInter, itemKey));
if (!item)
return;
if (visible) {
item->showPopupApplet(itemInter->itemPopupApplet(itemKey));
} else {
item->hidePopup();
}
}
void DockPluginsController::startLoader()
{
loadLocalPlugins();
loadSystemPlugins();
}
void DockPluginsController::loadLocalPlugins()
{
QString pluginsDir(QString("%1/.local/lib/dde-dock/plugins/").arg(QDir::homePath()));
if (!QDir(pluginsDir).exists()) {
return;
}
qDebug() << "using dock local plugins dir:" << pluginsDir;
AbstractPluginsController::startLoader(new PluginLoader(pluginsDir, this));
}
void DockPluginsController::loadSystemPlugins()
{
QString pluginsDir(qApp->applicationDirPath() + "/../plugins");
#ifndef QT_DEBUG
pluginsDir = "/usr/lib/dde-dock/plugins";
#endif
qDebug() << "using dock plugins dir:" << pluginsDir;
AbstractPluginsController::startLoader(new PluginLoader(pluginsDir, this));
}

View File

@ -1,51 +0,0 @@
// SPDX-FileCopyrightText: 2011 - 2022 UnionTech Software Technology Co., Ltd.
//
// SPDX-License-Identifier: LGPL-3.0-or-later
#ifndef DOCKPLUGINSCONTROLLER_H
#define DOCKPLUGINSCONTROLLER_H
#include "pluginsitem.h"
#include "pluginproxyinterface.h"
#include "abstractpluginscontroller.h"
#include <com_deepin_dde_daemon_dock.h>
#include <QPluginLoader>
#include <QList>
#include <QMap>
#include <QDBusConnectionInterface>
class PluginsItemInterface;
class DockPluginsController : public AbstractPluginsController
{
Q_OBJECT
friend class DockItemController;
friend class DockItemManager;
public:
explicit DockPluginsController(QObject *parent = nullptr);
// implements PluginProxyInterface
void itemAdded(PluginsItemInterface * const itemInter, const QString &itemKey) override;
void itemUpdate(PluginsItemInterface * const itemInter, const QString &itemKey) override;
void itemRemoved(PluginsItemInterface * const itemInter, const QString &itemKey) override;
void requestWindowAutoHide(PluginsItemInterface * const itemInter, const QString &itemKey, const bool autoHide) override;
void requestRefreshWindowVisible(PluginsItemInterface * const itemInter, const QString &itemKey) override;
void requestSetAppletVisible(PluginsItemInterface * const itemInter, const QString &itemKey, const bool visible) override;
void startLoader();
signals:
void pluginItemInserted(PluginsItem *pluginItem) const;
void pluginItemRemoved(PluginsItem *pluginItem) const;
void pluginItemUpdated(PluginsItem *pluginItem) const;
void trayVisableCountChanged(const int &count) const;
private:
void loadLocalPlugins();
void loadSystemPlugins();
};
#endif // DOCKPLUGINSCONTROLLER_H

View File

@ -0,0 +1,139 @@
// Copyright (C) 2022 ~ 2022 Deepin Technology Co., Ltd.
// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd.
//
// SPDX-License-Identifier: LGPL-3.0-or-later
#include "multiwindowhelper.h"
#include "appmultiitem.h"
#include "appitem.h"
MultiWindowHelper::MultiWindowHelper(QWidget *appWidget, QWidget *multiWindowWidget, QObject *parent)
: QObject(parent)
, m_appWidget(appWidget)
, m_multiWindowWidget(multiWindowWidget)
, m_displayMode(Dock::DisplayMode::Efficient)
{
m_appWidget->installEventFilter(this);
m_multiWindowWidget->installEventFilter(this);
}
void MultiWindowHelper::setDisplayMode(Dock::DisplayMode displayMode)
{
if (m_displayMode == displayMode)
return;
m_displayMode = displayMode;
resetMultiItemPosition();
}
void MultiWindowHelper::addMultiWindow(int, AppMultiItem *item)
{
int index = itemIndex(item);
if (m_displayMode == Dock::DisplayMode::Efficient) {
// 将多开窗口项目插入到对应的APP的后面
insertChildWidget(m_appWidget, index, item);
} else {
// 将多开窗口插入到工具区域的前面
insertChildWidget(m_multiWindowWidget, index, item);
}
}
void MultiWindowHelper::removeMultiWindow(AppMultiItem *item)
{
if (m_appWidget->children().contains(item))
m_appWidget->layout()->removeWidget(item);
else
m_multiWindowWidget->layout()->removeWidget(item);
}
bool MultiWindowHelper::eventFilter(QObject *watched, QEvent *event)
{
if (watched == m_appWidget || watched == m_multiWindowWidget) {
switch(event->type()) {
case QEvent::ChildAdded:
case QEvent::ChildRemoved: {
/* 这里用异步的方式因为收到QEvent::ChildAdded信号的时候
Widget中QEvent::ChildRemoved信号的时候
*/
QMetaObject::invokeMethod(this, &MultiWindowHelper::requestUpdate, Qt::QueuedConnection);
break;
}
default:
break;
}
}
return QObject::eventFilter(watched, event);
}
int MultiWindowHelper::itemIndex(AppMultiItem *item)
{
if (m_displayMode != Dock::DisplayMode::Efficient)
return -1;
// 高效模式,查找对应的应用或者这个应用所有的子窗口所在的位置,然后插入到最大的值的后面
int lastIndex = -1;
for (int i = 0; i < m_appWidget->layout()->count(); i++) {
DockItem *dockItem = qobject_cast<DockItem *>(m_appWidget->layout()->itemAt(i)->widget());
if (!dockItem)
continue;
if (dockItem != item->appItem()) {
AppMultiItem *multiItem = qobject_cast<AppMultiItem *>(dockItem);
if (!multiItem || multiItem->appItem() != item->appItem())
continue;
}
lastIndex = i;
}
if (lastIndex >= 0)
return ++lastIndex;
return -1;
}
void MultiWindowHelper::insertChildWidget(QWidget *parentWidget, int index, AppMultiItem *item)
{
QBoxLayout *layout = static_cast<QBoxLayout *>(parentWidget->layout());
if (index >= 0)
layout->insertWidget(index, item);
else
layout->addWidget(item);
}
void MultiWindowHelper::resetMultiItemPosition()
{
QWidget *fromWidget = nullptr;
QWidget *toWidget = nullptr;
if (m_displayMode == Dock::DisplayMode::Efficient) {
// 从时尚模式变换为高效模式
fromWidget = m_multiWindowWidget;
toWidget = m_appWidget;
} else {
// 从高效模式变换到时尚模式
fromWidget = m_appWidget;
toWidget = m_multiWindowWidget;
}
QList<AppMultiItem *> moveWidgetItem;
for (int i = 0; i < fromWidget->layout()->count(); i++) {
AppMultiItem *multiItem = qobject_cast<AppMultiItem *>(fromWidget->layout()->itemAt(i)->widget());
if (!multiItem)
continue;
moveWidgetItem << multiItem;
}
QBoxLayout *toLayout = static_cast<QBoxLayout *>(toWidget->layout());
for (AppMultiItem *item : moveWidgetItem) {
fromWidget->layout()->removeWidget(item);
int index = itemIndex(item);
if (index >= 0)
toLayout->insertWidget(index, item);
else
toLayout->addWidget(item);
}
}

View File

@ -0,0 +1,43 @@
// Copyright (C) 2022 ~ 2022 Deepin Technology Co., Ltd.
// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd.
//
// SPDX-License-Identifier: LGPL-3.0-or-later
#ifndef MULTIWINDOWHELPER_H
#define MULTIWINDOWHELPER_H
#include "constants.h"
#include <QObject>
class AppMultiItem;
class MultiWindowHelper : public QObject
{
Q_OBJECT
public:
explicit MultiWindowHelper(QWidget *appWidget, QWidget *multiWindowWidget, QObject *parent = nullptr);
void setDisplayMode(Dock::DisplayMode displayMode);
void addMultiWindow(int, AppMultiItem *item);
void removeMultiWindow(AppMultiItem *item);
Q_SIGNALS:
void requestUpdate();
protected:
bool eventFilter(QObject *watched, QEvent *event) override;
private:
int itemIndex(AppMultiItem *item);
void insertChildWidget(QWidget *parentWidget, int index, AppMultiItem *item);
void resetMultiItemPosition();
private:
QWidget *m_appWidget;
QWidget *m_multiWindowWidget;
Dock::DisplayMode m_displayMode;
};
#endif // MULTIWINDOWHELPER_H

View File

@ -0,0 +1,164 @@
// Copyright (C) 2022 ~ 2022 Deepin Technology Co., Ltd.
// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd.
//
// SPDX-License-Identifier: LGPL-3.0-or-later
#include "quicksettingcontroller.h"
#include "pluginsitem.h"
#include "pluginmanagerinterface.h"
#include <QMetaObject>
#include <customevent.h>
QuickSettingController::QuickSettingController(QObject *parent)
: AbstractPluginsController(parent)
{
qApp->installEventFilter(this);
// 只有在非安全模式下才加载插件,安全模式会在等退出安全模式后通过接受事件的方式来加载插件
if (!qApp->property("safeMode").toBool())
QMetaObject::invokeMethod(this, &QuickSettingController::startLoader, Qt::QueuedConnection);
}
QuickSettingController::~QuickSettingController()
{
}
bool QuickSettingController::eventFilter(QObject *watched, QEvent *event)
{
if (watched == qApp && event->type() == PluginLoadEvent::eventType()) {
// 如果收到的是重新加载插件的消息(一般是在退出安全模式后),则直接加载插件即可
startLoader();
}
return AbstractPluginsController::eventFilter(watched, event);
}
void QuickSettingController::startLoader()
{
#ifdef QT_DEBUG
AbstractPluginsController::startLoader(new PluginLoader(QString("%1/..%2").arg(qApp->applicationDirPath()).arg("/plugins/loader"), this));
#else
AbstractPluginsController::startLoader(new PluginLoader("/usr/lib/dde-dock/plugins/loader", this));
#endif
}
void QuickSettingController::itemAdded(PluginsItemInterface * const itemInter, const QString &itemKey)
{
// 根据读取到的metaData数据获取当前插件的类型提供给外部
PluginAttribute pluginAttr = pluginAttribute(itemInter);
m_quickPlugins[pluginAttr] << itemInter;
emit pluginInserted(itemInter, pluginAttr);
}
void QuickSettingController::itemUpdate(PluginsItemInterface * const itemInter, const QString &)
{
updateDockInfo(itemInter, DockPart::QuickPanel);
updateDockInfo(itemInter, DockPart::QuickShow);
updateDockInfo(itemInter, DockPart::SystemPanel);
}
void QuickSettingController::itemRemoved(PluginsItemInterface * const itemInter, const QString &)
{
for (auto it = m_quickPlugins.begin(); it != m_quickPlugins.end(); it++) {
QList<PluginsItemInterface *> &plugins = m_quickPlugins[it.key()];
if (!plugins.contains(itemInter))
continue;
plugins.removeOne(itemInter);
if (plugins.isEmpty()) {
QuickSettingController::PluginAttribute pluginclass = it.key();
m_quickPlugins.remove(pluginclass);
}
break;
}
Q_EMIT pluginRemoved(itemInter);
}
void QuickSettingController::requestSetAppletVisible(PluginsItemInterface * const itemInter, const QString &itemKey, const bool visible)
{
// 设置插件列表可见事件
Q_EMIT requestAppletVisible(itemInter, itemKey, visible);
}
void QuickSettingController::updateDockInfo(PluginsItemInterface * const itemInter, const DockPart &part)
{
Q_EMIT pluginUpdated(itemInter, part);
}
QuickSettingController::PluginAttribute QuickSettingController::pluginAttribute(PluginsItemInterface * const itemInter) const
{
// 工具插件,例如回收站
if (itemInter->flags() & PluginFlag::Type_Tool)
return PluginAttribute::Tool;
// 系统插件,例如关机按钮
if (itemInter->flags() & PluginFlag::Type_System)
return PluginAttribute::System;
// 托盘插件,例如磁盘图标
if (itemInter->flags() & PluginFlag::Type_Tray)
return PluginAttribute::Tray;
// 固定插件,例如显示桌面和多任务试图
if (itemInter->flags() & PluginFlag::Type_Fixed)
return PluginAttribute::Fixed;
// 通用插件,一般的插件都是通用插件,就是放在快捷插件区域的那些插件
if (itemInter->flags() & PluginFlag::Type_Common)
return PluginAttribute::Quick;
// 基本插件,不在任务栏上显示的插件
return PluginAttribute::None;
}
QString QuickSettingController::itemKey(PluginsItemInterface *pluginItem) const
{
PluginManagerInterface *pManager = pluginManager();
if (pManager)
return pManager->itemKey(pluginItem);
return QString();
}
QuickSettingController *QuickSettingController::instance()
{
static QuickSettingController instance;
return &instance;
}
QList<PluginsItemInterface *> QuickSettingController::pluginItems(const PluginAttribute &pluginClass) const
{
return m_quickPlugins.value(pluginClass);
}
QJsonObject QuickSettingController::metaData(PluginsItemInterface *pluginItem)
{
PluginManagerInterface *pManager = pluginManager();
if (pManager)
return pManager->metaData(pluginItem);
return QJsonObject();
}
PluginsItem *QuickSettingController::pluginItemWidget(PluginsItemInterface *pluginItem)
{
if (m_pluginItemWidgetMap.contains(pluginItem))
return m_pluginItemWidgetMap[pluginItem];
PluginsItem *widget = new PluginsItem(pluginItem, itemKey(pluginItem), metaData(pluginItem));
m_pluginItemWidgetMap[pluginItem] = widget;
return widget;
}
QList<PluginsItemInterface *> QuickSettingController::pluginInSettings()
{
PluginManagerInterface *pManager = pluginManager();
if (!pManager)
return QList<PluginsItemInterface *>();
// 返回可用于在控制中心显示的插件
return pManager->pluginsInSetting();
}

View File

@ -0,0 +1,64 @@
// Copyright (C) 2022 ~ 2022 Deepin Technology Co., Ltd.
// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd.
//
// SPDX-License-Identifier: LGPL-3.0-or-later
#ifndef QUICKSETTINGCONTROLLER_H
#define QUICKSETTINGCONTROLLER_H
#include "abstractpluginscontroller.h"
#include "pluginsiteminterface.h"
class QuickSettingItem;
class PluginsItem;
class QuickSettingController : public AbstractPluginsController
{
Q_OBJECT
public:
enum class PluginAttribute {
None = 0, // 不在任何区域显示的插件
Quick, // 快捷区域插件
Tool, // 工具插件(回收站和窗管开发的另一套插件)
System, // 系统插件(关机插件)
Tray, // 托盘插件U盘图标等
Fixed // 固定区域插件(显示桌面和多任务视图)
};
public:
static QuickSettingController *instance();
QList<PluginsItemInterface *> pluginItems(const PluginAttribute &pluginClass) const;
QJsonObject metaData(PluginsItemInterface *pluginItem);
PluginsItem *pluginItemWidget(PluginsItemInterface *pluginItem);
QList<PluginsItemInterface *> pluginInSettings();
PluginAttribute pluginAttribute(PluginsItemInterface * const itemInter) const;
QString itemKey(PluginsItemInterface *pluginItem) const;
Q_SIGNALS:
void pluginInserted(PluginsItemInterface *itemInter, const PluginAttribute);
void pluginRemoved(PluginsItemInterface *itemInter);
void pluginUpdated(PluginsItemInterface *, const DockPart);
void requestAppletVisible(PluginsItemInterface * itemInter, const QString &itemKey, bool visible);
protected:
explicit QuickSettingController(QObject *parent = Q_NULLPTR);
~QuickSettingController() override;
bool eventFilter(QObject *watched, QEvent *event) override;
void startLoader();
protected:
void itemAdded(PluginsItemInterface * const itemInter, const QString &itemKey) override;
void itemUpdate(PluginsItemInterface * const itemInter, const QString &) override;
void itemRemoved(PluginsItemInterface * const itemInter, const QString &) override;
void requestSetAppletVisible(PluginsItemInterface * const itemInter, const QString &itemKey, const bool visible) override;
void updateDockInfo(PluginsItemInterface * const itemInter, const DockPart &part) override;
private:
QMap<PluginAttribute, QList<PluginsItemInterface *>> m_quickPlugins;
QMap<PluginsItemInterface *, PluginsItem *> m_pluginItemWidgetMap;
};
#endif // CONTAINERPLUGINSCONTROLLER_H

View File

@ -0,0 +1,230 @@
// Copyright (C) 2022 ~ 2022 Deepin Technology Co., Ltd.
// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd.
//
// SPDX-License-Identifier: LGPL-3.0-or-later
#include "recentapphelper.h"
#include "dockitemmanager.h"
#include "appitem.h"
#include <QWidget>
#define ENTRY_NONE 0
#define ENTRY_NORMAL 1
#define ENTRY_RECENT 2
RecentAppHelper::RecentAppHelper(QWidget *appWidget, QWidget *recentWidget, QObject *parent)
: QObject(parent)
, m_appWidget(appWidget)
, m_recentWidget(recentWidget)
{
m_appWidget->installEventFilter(this);
m_recentWidget->installEventFilter(this);
connect(this, &RecentAppHelper::requestUpdateRecentVisible, this, &RecentAppHelper::updateRecentVisible, Qt::QueuedConnection);
}
void RecentAppHelper::setDisplayMode(Dock::DisplayMode displayMode)
{
bool lastVisible = dockAppIsVisible();
m_displayMode = displayMode;
updateRecentVisible();
updateDockAppVisible(lastVisible);
}
// 当在应用区域调整位置的时候,需要重新设置索引
void RecentAppHelper::resetAppInfo()
{
}
void RecentAppHelper::addAppItem(int index, DockItem *dockItem)
{
if (appInRecent(dockItem)) {
addRecentAreaItem(index, dockItem);
updateRecentVisible();
} else {
bool lastVisible = dockAppIsVisible();
addAppAreaItem(index, dockItem);
updateDockAppVisible(lastVisible);
}
AppItem *appItem = qobject_cast<AppItem *>(dockItem);
connect(appItem, &AppItem::modeChanged, this, &RecentAppHelper::onModeChanged);
}
void RecentAppHelper::removeAppItem(DockItem *dockItem)
{
if (m_recentWidget->children().contains(dockItem))
removeRecentAreaItem(dockItem);
else
removeAppAreaItem(dockItem);
}
bool RecentAppHelper::recentIsVisible() const
{
return m_recentWidget->isVisible();
}
bool RecentAppHelper::dockAppIsVisible() const
{
return (m_displayMode == Dock::DisplayMode::Efficient
|| m_appWidget->layout()->count() > 0);
}
bool RecentAppHelper::eventFilter(QObject *watched, QEvent *event)
{
if (watched == m_appWidget || watched == m_recentWidget) {
switch(event->type()) {
case QEvent::ChildAdded:
case QEvent::ChildRemoved: {
QMetaObject::invokeMethod(this, [ this ] {
/* 这里用异步的方式因为收到QEvent::ChildAdded信号的时候
Widget中QEvent::ChildRemoved信号的时候
*/
Q_EMIT requestUpdate();
}, Qt::QueuedConnection);
}
break;
default:
break;
}
}
return QObject::eventFilter(watched, event);
}
void RecentAppHelper::onModeChanged(int mode)
{
AppItem *appItem = qobject_cast<AppItem *>(sender());
if (!appItem)
return;
auto moveItemToWidget = [ = ](QWidget *widget) {
int index = getEntryIndex(appItem, widget);
removeAppItem(appItem);
QBoxLayout *layout = static_cast<QBoxLayout *>(widget->layout());
layout->insertWidget(index, appItem);
};
if (mode == ENTRY_NORMAL) {
// 添加到应用区域
moveItemToWidget(m_appWidget);
} else if (mode == ENTRY_RECENT) {
// 添加到最近打开应用区域
moveItemToWidget(m_recentWidget);
}
updateRecentVisible();
}
bool RecentAppHelper::appInRecent(DockItem *item) const
{
AppItem *appItem = qobject_cast<AppItem *>(item);
if (!appItem)
return false;
return (appItem->mode() == ENTRY_RECENT);
}
void RecentAppHelper::addAppAreaItem(int index, DockItem *wdg)
{
QBoxLayout *boxLayout = static_cast<QBoxLayout *>(m_appWidget->layout());
boxLayout->insertWidget(index, wdg);
}
void RecentAppHelper::addRecentAreaItem(int index, DockItem *wdg)
{
QBoxLayout *recentLayout = static_cast<QBoxLayout *>(m_recentWidget->layout());
recentLayout->insertWidget(index, wdg);
}
void RecentAppHelper::updateRecentVisible()
{
bool lastRecentVisible = m_recentWidget->isVisible();
bool recentVisible = lastRecentVisible;
if (m_displayMode == Dock::DisplayMode::Efficient) {
// 如果是高效模式,不显示最近打开应用区域
m_recentWidget->setVisible(false);
recentVisible = false;
} else {
QBoxLayout *recentLayout = static_cast<QBoxLayout *>(m_recentWidget->layout());
qInfo() << "recent Widget count:" << recentLayout->count() << ", app Widget count" << m_appWidget->layout()->count();
// 如果是时尚模式则判断当前打开应用数量是否为0为0则不显示否则显示
recentVisible = (recentLayout->count() > 0);
m_recentWidget->setVisible(recentVisible);
}
if (lastRecentVisible != recentVisible)
Q_EMIT recentVisibleChanged(recentVisible);
}
void RecentAppHelper::updateDockAppVisible(bool lastVisible)
{
bool visible = dockAppIsVisible();
if (lastVisible != visible)
Q_EMIT dockAppVisibleChanged(visible);
}
void RecentAppHelper::removeRecentAreaItem(DockItem *wdg)
{
QBoxLayout *recentLayout = static_cast<QBoxLayout *>(m_recentWidget->layout());
recentLayout->removeWidget(wdg);
Q_EMIT requestUpdateRecentVisible();
}
void RecentAppHelper::removeAppAreaItem(DockItem *wdg)
{
QBoxLayout *boxLayout = static_cast<QBoxLayout *>(m_appWidget->layout());
bool lastVisible = dockAppIsVisible();
boxLayout->removeWidget(wdg);
updateDockAppVisible(lastVisible);
}
int RecentAppHelper::getEntryIndex(DockItem *dockItem, QWidget *widget) const
{
AppItem *appItem = qobject_cast<AppItem *>(dockItem);
if (!appItem)
return -1;
// 查找当前的应用在所有的应用中的排序
QStringList entryIds = TaskManager::instance()->getEntryIDs();
int index = entryIds.indexOf(appItem->appId());
if (index < 0)
return -1;
QList<AppItem *> filterAppItems = appItems(widget);
// 获取当前在最近应用中的所有的APP并计算它的位置
int lastIndex = -1;
// 从后面向前面遍历,找到对应的位置,插入
for (int i = filterAppItems.size() - 1; i >= 0; i--) {
AppItem *item = filterAppItems[i];
// 如果所在的索引在要查找的APP索引的后面说明当前的索引在要查找的索引之后跳过即可
// 如果所在索引不在列表中(一般情况下不存在,这里是容错处理),也跳过
int curIndex = entryIds.indexOf(item->appId());
if (item == appItem || curIndex < 0 || curIndex >= index)
continue;
if (lastIndex < curIndex)
lastIndex = curIndex;
}
return ++lastIndex;
}
QList<AppItem *> RecentAppHelper::appItems(QWidget *widget) const
{
QLayout *layout = widget->layout();
QList<AppItem *> dockItems;
for (int i = 0; i < layout->count(); i++) {
AppItem *dockItem = qobject_cast<AppItem *>(layout->itemAt(i)->widget());
if (!dockItem)
continue;
dockItems << dockItem;
}
return dockItems;
}

View File

@ -0,0 +1,67 @@
// Copyright (C) 2022 ~ 2022 Deepin Technology Co., Ltd.
// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd.
//
// SPDX-License-Identifier: LGPL-3.0-or-later
#ifndef RECENTAPPHELPER_H
#define RECENTAPPHELPER_H
#include "constants.h"
#include "dbusutil.h"
#include <QObject>
class DockItem;
class AppItem;
class QWidget;
/** 用来管理最近打开区域和APP应用区域交互的类
* @brief The RecentAppManager class
*/
class RecentAppHelper : public QObject
{
Q_OBJECT
public:
explicit RecentAppHelper(QWidget *appWidget, QWidget *recentWidget, QObject *parent = nullptr);
void setDisplayMode(Dock::DisplayMode displayMode);
void resetAppInfo();
void addAppItem(int index, DockItem *appItem);
void removeAppItem(DockItem *dockItem);
bool recentIsVisible() const;
bool dockAppIsVisible() const;
Q_SIGNALS:
void requestUpdate();
void recentVisibleChanged(bool); // 最近区域是否可见发生变化的信号
void dockAppVisibleChanged(bool); // 驻留应用区域是否可见发生变化的信号
void requestUpdateRecentVisible();
protected:
bool eventFilter(QObject *watched, QEvent *event) override;
private:
bool appInRecent(DockItem *item) const;
void addAppAreaItem(int index, DockItem *wdg);
void addRecentAreaItem(int index, DockItem *wdg);
void updateDockAppVisible(bool lastVisible);
void removeRecentAreaItem(DockItem *wdg);
void removeAppAreaItem(DockItem *wdg);
int getEntryIndex(DockItem *dockItem, QWidget *widget) const;
QList<AppItem *> appItems(QWidget *widget) const;
private Q_SLOTS:
void onModeChanged(int mode);
void updateRecentVisible();
private:
QWidget *m_appWidget;
QWidget *m_recentWidget;
Dock::DisplayMode m_displayMode;
};
#endif // RECENTAPPHELPER_H

View File

@ -0,0 +1,202 @@
// Copyright (C) 2022 ~ 2022 Deepin Technology Co., Ltd.
// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd.
//
// SPDX-License-Identifier: LGPL-3.0-or-later
#include "toolapphelper.h"
#include "dockitem.h"
#include "pluginsitem.h"
#include "quicksettingcontroller.h"
#include <QWidget>
#include <QBoxLayout>
ToolAppHelper::ToolAppHelper(QWidget *toolAreaWidget, QObject *parent)
: QObject(parent)
, m_toolAreaWidget(toolAreaWidget)
, m_displayMode(DisplayMode::Efficient)
, m_position(Dock::Position::Bottom)
{
connect(QuickSettingController::instance(), &QuickSettingController::pluginInserted, this, [ = ](PluginsItemInterface *itemInter, const QuickSettingController::PluginAttribute pluginAttr) {
if (pluginAttr != QuickSettingController::PluginAttribute::Tool)
return;
pluginItemAdded(itemInter);
});
connect(QuickSettingController::instance(), &QuickSettingController::pluginRemoved, this, [ = ](PluginsItemInterface *itemInter) {
pluginItemRemoved(itemInter);
});
QList<PluginsItemInterface *> pluginItems = QuickSettingController::instance()->pluginItems(QuickSettingController::PluginAttribute::Tool);
for (PluginsItemInterface *pluginItem : pluginItems)
pluginItemAdded(pluginItem);
updateToolArea();
}
void ToolAppHelper::setDisplayMode(DisplayMode displayMode)
{
m_displayMode = displayMode;
moveToolWidget();
updateWidgetStatus();
}
void ToolAppHelper::setPosition(Position position)
{
m_toolAreaWidget->setFixedSize(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX);
m_position = position;
updateWidgetStatus();
}
bool ToolAppHelper::toolIsVisible() const
{
return m_toolAreaWidget->isVisible();
}
void ToolAppHelper::appendToToolArea(int index, DockItem *dockItem)
{
dockItem->setParent(m_toolAreaWidget);
QBoxLayout *boxLayout = static_cast<QBoxLayout *>(m_toolAreaWidget->layout());
if (index >= 0)
boxLayout->insertWidget(index, dockItem);
else
boxLayout->addWidget(dockItem);
}
bool ToolAppHelper::removeToolArea(PluginsItemInterface *itemInter)
{
QBoxLayout *boxLayout = static_cast<QBoxLayout *>(m_toolAreaWidget->layout());
for (int i = 0; i < boxLayout->count(); i++) {
PluginsItem *dockItem = qobject_cast<PluginsItem *>(boxLayout->itemAt(i)->widget());
if (dockItem && dockItem->pluginItem() == itemInter) {
boxLayout->removeWidget(dockItem);
return true;
}
}
return false;
}
void ToolAppHelper::moveToolWidget()
{
for (int i = m_toolAreaWidget->layout()->count() - 1; i >= 0; i--) {
QLayoutItem *layoutItem = m_toolAreaWidget->layout()->itemAt(i);
if (!layoutItem)
continue;
PluginsItem *pluginWidget = qobject_cast<PluginsItem *>(layoutItem->widget());
if (!pluginWidget)
continue;
m_toolAreaWidget->layout()->removeWidget(pluginWidget);
}
if (m_displayMode == Dock::DisplayMode::Fashion) {
QuickSettingController *quickController = QuickSettingController::instance();
QList<PluginsItemInterface *> plugins = quickController->pluginItems(QuickSettingController::PluginAttribute::Tool);
for (PluginsItemInterface *plugin : plugins) {
PluginsItem *pluginWidget = quickController->pluginItemWidget(plugin);
m_toolAreaWidget->layout()->addWidget(pluginWidget);
}
}
}
void ToolAppHelper::updateToolArea()
{
bool oldVisible = m_toolAreaWidget->isVisible();
QLayout *layout = m_toolAreaWidget->layout();
if (m_position == Dock::Position::Bottom || m_position == Dock::Position::Top) {
int size = 0;
for (int i = 0; i < layout->count(); i++) {
PluginsItem *dockItem = qobject_cast<PluginsItem *>(layout->itemAt(i)->widget());
if (!dockItem)
continue;
size += dockItem->width();
}
m_toolAreaWidget->setFixedWidth(size);
m_toolAreaWidget->setVisible(size > 0);
} else {
int size = 0;
for (int i = 0; i < layout->count(); i++) {
PluginsItem *dockItem = qobject_cast<PluginsItem *>(layout->itemAt(i)->widget());
if (!dockItem)
continue;
size += dockItem->height();
}
m_toolAreaWidget->setFixedHeight(size);
m_toolAreaWidget->setVisible(size > 0);
}
bool isVisible = m_toolAreaWidget->isVisible();
if (oldVisible != isVisible)
Q_EMIT toolVisibleChanged(isVisible);
}
void ToolAppHelper::updateWidgetStatus()
{
bool oldVisible = toolIsVisible();
if (m_displayMode == DisplayMode::Efficient) {
// 高效模式
m_toolAreaWidget->setVisible(false);
} else {
// 时尚模式
updateToolArea();
}
bool visible = toolIsVisible();
if (oldVisible != visible)
Q_EMIT toolVisibleChanged(visible);
}
bool ToolAppHelper::pluginInTool(PluginsItemInterface *itemInter) const
{
return (QuickSettingController::instance()->pluginAttribute(itemInter) == QuickSettingController::PluginAttribute::Tool);
}
void ToolAppHelper::pluginItemAdded(PluginsItemInterface *itemInter)
{
if (m_displayMode != Dock::DisplayMode::Fashion || pluginExists(itemInter))
return;
QuickSettingController *quickController = QuickSettingController::instance();
if (pluginInTool(itemInter)) {
PluginsItem *pluginItem = quickController->pluginItemWidget(itemInter);
appendToToolArea(0, pluginItem);
updateToolArea();
Q_EMIT requestUpdate();
}
}
void ToolAppHelper::pluginItemRemoved(PluginsItemInterface *itemInter)
{
QuickSettingController *quickController = QuickSettingController::instance();
if (pluginInTool(itemInter)) {
PluginsItem *pluginItem = quickController->pluginItemWidget(itemInter);
removeToolArea(pluginItem->pluginItem());
updateToolArea();
Q_EMIT requestUpdate();
}
}
bool ToolAppHelper::pluginExists(PluginsItemInterface *itemInter) const
{
QBoxLayout *boxLayout = static_cast<QBoxLayout *>(m_toolAreaWidget->layout());
if (!boxLayout)
return false;
for (int i = 0; i < boxLayout->count() ; i++) {
QLayoutItem *layoutItem = boxLayout->itemAt(i);
if (!layoutItem)
continue;
PluginsItem *pluginItem = qobject_cast<PluginsItem *>(layoutItem->widget());
if (!pluginItem)
continue;
// 如果当前的插件的接口已经存在,则无需再次插入
if (pluginItem->pluginItem() == itemInter)
return true;
}
return false;
}

View File

@ -0,0 +1,54 @@
// Copyright (C) 2022 ~ 2022 Deepin Technology Co., Ltd.
// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd.
//
// SPDX-License-Identifier: LGPL-3.0-or-later
#ifndef TOOLAPPHELPER_H
#define TOOLAPPHELPER_H
#include "constants.h"
#include <QObject>
class QWidget;
class DockItem;
class PluginsItem;
class PluginsItemInterface;
using namespace Dock;
class ToolAppHelper : public QObject
{
Q_OBJECT
public:
explicit ToolAppHelper(QWidget *toolAreaWidget, QObject *parent = nullptr);
void setDisplayMode(DisplayMode displayMode);
void setPosition(Dock::Position position);
bool toolIsVisible() const;
Q_SIGNALS:
void requestUpdate();
void toolVisibleChanged(bool);
private:
void appendToToolArea(int index, DockItem *dockItem);
bool removeToolArea(PluginsItemInterface *itemInter);
void moveToolWidget();
void updateToolArea();
void updateWidgetStatus();
bool pluginInTool(PluginsItemInterface *itemInter) const;
void pluginItemAdded(PluginsItemInterface *itemInter);
void pluginItemRemoved(PluginsItemInterface *itemInter);
bool pluginExists(PluginsItemInterface *itemInter) const;
private:
QWidget *m_toolAreaWidget;
DisplayMode m_displayMode;
Dock::Position m_position;
QList<DockItem *> m_sequentPluginItems;
};
#endif // TOOLAPPHELPER_H

View File

@ -1,31 +0,0 @@
<interface name="com.deepin.dde.daemon.Dock">
<method name="ActivateWindow">
<arg type="u" direction="in"></arg>
</method>
<method name="CloseWindow">
<arg type="u" direction="in"></arg>
</method>
<method name="GetEntryIDs">
<arg type="as" direction="out"></arg>
</method>
<method name="ReorderEntries">
<arg type="as" direction="in"></arg>
</method>
<method name="SetFrontendWindow">
<arg type="u" direction="in"></arg>
</method>
<signal name="ServiceRestarted"></signal>
<signal name="EntryAdded">
<arg type="o"></arg>
</signal>
<signal name="EntryRemoved">
<arg type="s"></arg>
</signal>
<property name="Entries" type="ao" access="read"></property>
<property name="HideMode" type="i" access="readwrite"></property>
<property name="DisplayMode" type="i" access="readwrite"></property>
<property name="Position" type="i" access="readwrite"></property>
<property name="ActiveWindow" type="u" access="read"></property>
<property name="HideState" type="i" access="read"></property>
</interface>

View File

@ -1,28 +0,0 @@
/*
* This file was generated by qdbusxml2cpp version 0.8
* Command line was: qdbusxml2cpp -c DBusClientManager -p dbusclientmanager dde-dock-ClientManager.xml
*
* qdbusxml2cpp is Copyright (C) 2015 Digia Plc and/or its subsidiary(-ies).
*
* This is an auto-generated file.
* This file may have been hand-edited. Look for HAND-EDIT comments
* before re-generating it.
*/
#include "dbusclientmanager.h"
/*
* Implementation of interface class DBusClientManager
*/
DBusClientManager::DBusClientManager(QObject *parent)
: QDBusAbstractInterface("com.deepin.daemon.Dock", "/dde/dock/ClientManager", staticInterfaceName(), QDBusConnection::sessionBus(), parent)
{
QDBusConnection::sessionBus().connect(this->service(), this->path(), "org.freedesktop.DBus.Properties", "PropertiesChanged","sa{sv}as", this, SLOT(__propertyChanged__(QDBusMessage)));
}
DBusClientManager::~DBusClientManager()
{
QDBusConnection::sessionBus().disconnect(service(), path(), "org.freedesktop.DBus.Properties", "PropertiesChanged", "sa{sv}as", this, SLOT(propertyChanged(QDBusMessage)));
}

View File

@ -1,89 +0,0 @@
/*
* This file was generated by qdbusxml2cpp version 0.8
* Command line was: qdbusxml2cpp -c DBusClientManager -p dbusclientmanager dde-dock-ClientManager.xml
*
* qdbusxml2cpp is Copyright (C) 2015 Digia Plc and/or its subsidiary(-ies).
*
* This is an auto-generated file.
* Do not edit! All changes made to it will be lost.
*/
#ifndef DBUSCLIENTMANAGER_H_1465195317
#define DBUSCLIENTMANAGER_H_1465195317
#include <QtCore/QObject>
#include <QtCore/QByteArray>
#include <QtCore/QList>
#include <QtCore/QMap>
#include <QtCore/QString>
#include <QtCore/QStringList>
#include <QtCore/QVariant>
#include <QtDBus/QtDBus>
/*
* Proxy class for interface dde.dock.ClientManager
*/
class DBusClientManager: public QDBusAbstractInterface
{
Q_OBJECT
Q_SLOT void __propertyChanged__(const QDBusMessage& msg)
{
QList<QVariant> arguments = msg.arguments();
if (3 != arguments.count())
return;
QString interfaceName = msg.arguments().at(0).toString();
if (interfaceName !="dde.dock.ClientManager")
return;
QVariantMap changedProps = qdbus_cast<QVariantMap>(arguments.at(1).value<QDBusArgument>());
foreach(const QString &prop, changedProps.keys()) {
const QMetaObject* self = metaObject();
for (int i=self->propertyOffset(); i < self->propertyCount(); ++i) {
QMetaProperty p = self->property(i);
if (p.name() == prop) {
Q_EMIT p.notifySignal().invoke(this);
}
}
}
}
public:
static inline const char *staticInterfaceName()
{ return "dde.dock.ClientManager"; }
public:
explicit DBusClientManager(QObject *parent = 0);
~DBusClientManager();
public Q_SLOTS: // METHODS
inline QDBusPendingReply<bool> ActivateWindow(uint in0)
{
QList<QVariant> argumentList;
argumentList << QVariant::fromValue(in0);
return asyncCallWithArgumentList(QStringLiteral("ActivateWindow"), argumentList);
}
inline QDBusPendingReply<bool> CloseWindow(uint in0)
{
QList<QVariant> argumentList;
argumentList << QVariant::fromValue(in0);
return asyncCallWithArgumentList(QStringLiteral("CloseWindow"), argumentList);
}
inline QDBusPendingReply<uint> CurrentActiveWindow()
{
QList<QVariant> argumentList;
return asyncCallWithArgumentList(QStringLiteral("CurrentActiveWindow"), argumentList);
}
Q_SIGNALS: // SIGNALS
void ActiveWindowChanged(uint activeWinId);
// begin property changed signals
};
namespace dde {
namespace dock {
typedef ::DBusClientManager ClientManager;
}
}
#endif

View File

@ -1,6 +1,6 @@
/*
* This file was generated by qdbusxml2cpp version 0.8
* Command line was: qdbusxml2cpp -p DBusDisplay -c DBusDisplay com.deepin.daemon.Display.xml
* Command line was: qdbusxml2cpp -p DBusDisplay -c DBusDisplay org.deepin.dde.Display1.xml
*
* qdbusxml2cpp is Copyright (C) 2015 Digia Plc and/or its subsidiary(-ies).
*

View File

@ -1,6 +1,6 @@
/*
* This file was generated by qdbusxml2cpp version 0.8
* Command line was: qdbusxml2cpp -p DBusDisplay -c DBusDisplay com.deepin.daemon.Display.xml
* Command line was: qdbusxml2cpp -p DBusDisplay -c DBusDisplay org.deepin.dde.Display1.xml
*
* qdbusxml2cpp is Copyright (C) 2015 Digia Plc and/or its subsidiary(-ies).
*
@ -44,7 +44,7 @@ const QDBusArgument &operator>>(const QDBusArgument &argument, DisplayRect &rect
QDebug operator<<(QDebug deg, const DisplayRect &rect);
/*
* Proxy class for interface com.deepin.daemon.Display
* Proxy class for interface org.deepin.dde.Display1
*/
class DBusDisplay: public QDBusAbstractInterface
{
@ -56,7 +56,7 @@ class DBusDisplay: public QDBusAbstractInterface
if (3 != arguments.count())
return;
QString interfaceName = msg.arguments().at(0).toString();
if (interfaceName !="com.deepin.daemon.Display")
if (interfaceName !="org.deepin.dde.Display1")
return;
QVariantMap changedProps = qdbus_cast<QVariantMap>(arguments.at(1).value<QDBusArgument>());
QStringList keys = changedProps.keys();
@ -72,11 +72,11 @@ class DBusDisplay: public QDBusAbstractInterface
}
public:
static inline const char *staticInterfaceName()
{ return "com.deepin.daemon.Display"; }
{ return "org.deepin.dde.Display1"; }
static inline const char *staticServiceName()
{ return "com.deepin.daemon.Display"; }
{ return "org.deepin.dde.Display1"; }
static inline const char *staticObjectPath()
{ return "/com/deepin/daemon/Display"; }
{ return "/org/deepin/dde/Display1"; }
public:
explicit DBusDisplay(QObject *parent = 0);

View File

@ -1,20 +1,81 @@
// SPDX-FileCopyrightText: 2016 - 2022 UnionTech Software Technology Co., Ltd.
//
// SPDX-License-Identifier: LGPL-3.0-or-later
/*
* Copyright (C) 2016 ~ 2018 Deepin Technology Co., Ltd.
*
* Author: sbw <sbw@sbw.so>
*
* Maintainer: sbw <sbw@sbw.so>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "dbusdockadaptors.h"
#include "utils.h"
#include "dockitemmanager.h"
#include "windowmanager.h"
#include "quicksettingcontroller.h"
#include "pluginsitem.h"
#include "docksettings.h"
#include "common.h"
#include "customevent.h"
#include <DGuiApplicationHelper>
#include <QScreen>
#include <QDebug>
#include <QGSettings>
#include <QDBusMetaType>
DBusDockAdaptors::DBusDockAdaptors(MainWindow* parent)
const QSize defaultIconSize = QSize(20, 20);
QDebug operator<<(QDebug argument, const DockItemInfo &info)
{
argument << "name:" << info.name << ", displayName:" << info.displayName
<< "itemKey:" << info.itemKey << "SettingKey:" << info.settingKey
<< "icon_light:" << info.iconLight << "icon_dark:" << info.iconDark << "visible:" << info.visible;
return argument;
}
QDBusArgument &operator<<(QDBusArgument &arg, const DockItemInfo &info)
{
arg.beginStructure();
arg << info.name << info.displayName << info.itemKey << info.settingKey << info.iconLight << info.iconDark << info.visible;
arg.endStructure();
return arg;
}
const QDBusArgument &operator>>(const QDBusArgument &arg, DockItemInfo &info)
{
arg.beginStructure();
arg >> info.name >> info.displayName >> info.itemKey >> info.settingKey >> info.iconLight >> info.iconDark >> info.visible;
arg.endStructure();
return arg;
}
void registerPluginInfoMetaType()
{
qRegisterMetaType<DockItemInfo>("DockItemInfo");
qDBusRegisterMetaType<DockItemInfo>();
qRegisterMetaType<DockItemInfos>("DockItemInfos");
qDBusRegisterMetaType<DockItemInfos>();
}
DBusDockAdaptors::DBusDockAdaptors(WindowManager* parent)
: QDBusAbstractAdaptor(parent)
, m_gsettings(Utils::SettingsPtr("com.deepin.dde.dock.mainwindow", QByteArray(), this))
, m_windowManager(parent)
{
connect(parent, &MainWindow::panelGeometryChanged, this, [=] {
connect(parent, &WindowManager::panelGeometryChanged, this, [ = ] {
emit DBusDockAdaptors::geometryChanged(geometry());
});
@ -26,12 +87,13 @@ DBusDockAdaptors::DBusDockAdaptors(MainWindow* parent)
});
}
QList<PluginsItemInterface *> allPlugin = localPlugins();
connect(DockItemManager::instance(), &DockItemManager::itemInserted, this, [ = ] (const int index, DockItem *item) {
Q_UNUSED(index);
if (item->itemType() == DockItem::Plugins
|| item->itemType() == DockItem::FixedPlugin) {
PluginsItem *pluginItem = static_cast<PluginsItem *>(item);
for (auto *p : DockItemManager::instance()->pluginList()) {
for (auto *p : allPlugin) {
if (p->pluginName() == pluginItem->pluginName()) {
Q_EMIT pluginVisibleChanged(p->pluginDisplayName(), getPluginVisible(p->pluginDisplayName()));
}
@ -43,13 +105,15 @@ DBusDockAdaptors::DBusDockAdaptors(MainWindow* parent)
if (item->itemType() == DockItem::Plugins
|| item->itemType() == DockItem::FixedPlugin) {
PluginsItem *pluginItem = static_cast<PluginsItem *>(item);
for (auto *p : DockItemManager::instance()->pluginList()) {
for (auto *p : allPlugin) {
if (p->pluginName() == pluginItem->pluginName()) {
Q_EMIT pluginVisibleChanged(p->pluginDisplayName(), getPluginVisible(p->pluginDisplayName()));
}
}
}
});
registerPluginInfoMetaType();
}
DBusDockAdaptors::~DBusDockAdaptors()
@ -57,27 +121,31 @@ DBusDockAdaptors::~DBusDockAdaptors()
}
MainWindow *DBusDockAdaptors::parent() const
{
return static_cast<MainWindow *>(QObject::parent());
}
void DBusDockAdaptors::callShow()
{
return parent()->callShow();
m_windowManager->callShow();
}
void DBusDockAdaptors::ReloadPlugins()
{
return parent()->relaodPlugins();
if (qApp->property("PLUGINSLOADED").toBool())
return;
// 发送事件,通知代理来加载插件
PluginLoadEvent event;
QCoreApplication::sendEvent(qApp, &event);
qApp->setProperty("PLUGINSLOADED", true);
// 退出安全模式
qApp->setProperty("safeMode", false);
}
QStringList DBusDockAdaptors::GetLoadedPlugins()
{
auto pluginList = DockItemManager::instance()->pluginList();
QList<PluginsItemInterface *> allPlugin = localPlugins();
QStringList nameList;
QMap<QString, QString> map;
for (auto plugin : pluginList) {
for (auto plugin : allPlugin) {
// 托盘本身也是一个插件,这里去除掉这个特殊的插件,还有一些没有实际名字的插件
if (plugin->pluginName() == "tray"
|| plugin->pluginDisplayName().isEmpty()
@ -89,7 +157,7 @@ QStringList DBusDockAdaptors::GetLoadedPlugins()
}
// 排序,保持和原先任务栏右键菜单中的插件列表顺序一致
qSort(nameList.begin(), nameList.end(), [ = ] (const QString &name1, const QString &name2) {
std::sort(nameList.begin(), nameList.end(), [ = ] (const QString &name1, const QString &name2) {
return name1 > name2;
});
@ -101,15 +169,53 @@ QStringList DBusDockAdaptors::GetLoadedPlugins()
return newList;
}
DockItemInfos DBusDockAdaptors::plugins()
{
#define DOCK_QUICK_PLUGINS "Dock_Quick_Plugins"
// 获取本地加载的插件
QList<PluginsItemInterface *> allPlugin = localPlugins();
DockItemInfos pluginInfos;
QStringList quickSettingKeys = DockSettings::instance()->getQuickPlugins();
for (PluginsItemInterface *plugin : allPlugin) {
DockItemInfo info;
info.name = plugin->pluginName();
info.displayName = plugin->pluginDisplayName();
info.itemKey = plugin->pluginName();
info.settingKey = DOCK_QUICK_PLUGINS;
info.visible = quickSettingKeys.contains(info.itemKey);
QSize pixmapSize;
QIcon lightIcon = getSettingIcon(plugin, pixmapSize, DGuiApplicationHelper::ColorType::LightType);
if (!lightIcon.isNull()) {
QBuffer buffer(&info.iconLight);
if (buffer.open(QIODevice::WriteOnly)) {
QPixmap pixmap = lightIcon.pixmap(pixmapSize);
pixmap.save(&buffer, "png");
}
}
QIcon darkIcon = getSettingIcon(plugin, pixmapSize, DGuiApplicationHelper::ColorType::DarkType);
if (!darkIcon.isNull()) {
QBuffer buffer(&info.iconDark);
if (buffer.open(QIODevice::WriteOnly)) {
QPixmap pixmap = darkIcon.pixmap(pixmapSize);
pixmap.save(&buffer, "png");
}
}
pluginInfos << info;
}
return pluginInfos;
}
void DBusDockAdaptors::resizeDock(int offset, bool dragging)
{
parent()->resizeDock(offset, dragging);
m_windowManager->resizeDock(offset, dragging);
}
// 返回每个插件的识别Key(所以此值应始终不变)供个性化插件根据key去匹配每个插件对应的图标
QString DBusDockAdaptors::getPluginKey(const QString &pluginName)
{
for (auto plugin : DockItemManager::instance()->pluginList()) {
QList<PluginsItemInterface *> allPlugin = localPlugins();
for (auto plugin : allPlugin) {
if (plugin->pluginDisplayName() == pluginName)
return plugin->pluginName();
}
@ -119,7 +225,8 @@ QString DBusDockAdaptors::getPluginKey(const QString &pluginName)
bool DBusDockAdaptors::getPluginVisible(const QString &pluginName)
{
for (auto *p : DockItemManager::instance()->pluginList()) {
QList<PluginsItemInterface *> allPlugin = localPlugins();
for (auto *p : allPlugin) {
if (!p->pluginIsAllowDisable())
continue;
@ -140,7 +247,8 @@ bool DBusDockAdaptors::getPluginVisible(const QString &pluginName)
void DBusDockAdaptors::setPluginVisible(const QString &pluginName, bool visible)
{
for (auto *p : DockItemManager::instance()->pluginList()) {
QList<PluginsItemInterface *> allPlugin = localPlugins();
for (auto *p : allPlugin) {
if (!p->pluginIsAllowDisable())
continue;
@ -162,9 +270,19 @@ void DBusDockAdaptors::setPluginVisible(const QString &pluginName, bool visible)
qInfo() << "Unable to set information for this plugin";
}
void DBusDockAdaptors::setItemOnDock(const QString settingKey, const QString &itemKey, bool visible)
{
DockSettings *settings = DockSettings::instance();
if ( keyQuickTrayName == settingKey) {
visible? settings->setTrayItemOnDock(itemKey) : settings->removeTrayItemOnDock(itemKey);
} else if (keyQuickPlugins == settingKey) {
visible? settings->setQuickPlugin(itemKey) : settings->removeQuickPlugin(itemKey);
}
}
QRect DBusDockAdaptors::geometry() const
{
return parent()->geometry();
return m_windowManager->geometry();
}
bool DBusDockAdaptors::showInPrimary() const
@ -188,17 +306,74 @@ bool DBusDockAdaptors::isPluginValid(const QString &name)
if (!Utils::SettingValue("com.deepin.dde.dock.module." + name, QByteArray(), "enable", true).toBool())
return false;
// 在非wayland环境下未开启窗口特效时,不显示多任务视图插件
if (name == "multitasking" && !DWindowManagerHelper::instance()->hasComposite() && !Utils::IS_WAYLAND_DISPLAY)
// 未开启窗口特效时,不显示多任务视图插件
if (name == "multitasking" && !DWindowManagerHelper::instance()->hasComposite())
return false;
// 录屏插件不显示,插件名如果有变化,建议发需求,避免任务栏反复适配
if (name == "deepin-screen-recorder-plugin")
return false;
// 远程助手只有在启动时才会加载在任务栏,不需要在控制中心加载
if (name == "uos-remote-assistance")
return false;
return true;
}
QList<PluginsItemInterface *> DBusDockAdaptors::localPlugins() const
{
return QuickSettingController::instance()->pluginInSettings();
}
QIcon DBusDockAdaptors::getSettingIcon(PluginsItemInterface *plugin, QSize &pixmapSize, DGuiApplicationHelper::ColorType colorType) const
{
auto iconSize = [](const QIcon &icon) {
QList<QSize> iconSizes = icon.availableSizes();
if (iconSizes.size() > 0 && !iconSizes[0].isNull() )
return iconSizes[0];
return defaultIconSize;
};
// 先获取控制中心的设置图标
QIcon icon = plugin->icon(DockPart::DCCSetting, colorType);
if (!icon.isNull()) {
pixmapSize = iconSize(icon);
QColor c = colorType == DGuiApplicationHelper::LightType ? Qt::black :Qt::white;
QPixmap pixmap = icon.pixmap(pixmapSize);
QPainter pa(&pixmap);
pa.setCompositionMode(QPainter::CompositionMode_SourceIn);
pa.fillRect(pixmap.rect(), c);
return pixmap;
}
// 如果插件中没有设置图标,则根据插件的类型,获取其他的图标
QuickSettingController::PluginAttribute pluginAttr = QuickSettingController::instance()->pluginAttribute(plugin);
switch(pluginAttr) {
case QuickSettingController::PluginAttribute::System: {
icon = plugin->icon(DockPart::SystemPanel, colorType);
pixmapSize = defaultIconSize;
QList<QSize> iconSizes = icon.availableSizes();
if (iconSizes.size() > 0)
pixmapSize = iconSizes[0];
break;
}
case QuickSettingController::PluginAttribute::Quick: {
icon = plugin->icon(DockPart::QuickShow, colorType);
if (icon.isNull())
icon = plugin->icon(DockPart::QuickPanel, colorType);
pixmapSize = defaultIconSize;
QList<QSize> iconSizes = icon.availableSizes();
if (iconSizes.size() > 0)
pixmapSize = iconSizes[0];
break;
}
default:
break;
}
if (icon.isNull()) {
icon = QIcon(":/icons/resources/dcc_dock_plug_in.svg");
pixmapSize = QSize(20, 20);
}
return icon;
}

View File

@ -1,24 +1,68 @@
// SPDX-FileCopyrightText: 2016 - 2022 UnionTech Software Technology Co., Ltd.
//
// SPDX-License-Identifier: LGPL-3.0-or-later
/*
* Copyright (C) 2016 ~ 2018 Deepin Technology Co., Ltd.
*
* Author: sbw <sbw@sbw.so>
*
* Maintainer: sbw <sbw@sbw.so>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef DBUSDOCKADAPTORS_H
#define DBUSDOCKADAPTORS_H
#include <QtDBus/QtDBus>
#include "mainwindow.h"
#include <QtDBus/QtDBus>
#include <QDBusArgument>
/*
* Adaptor class for interface com.deepin.dde.Dock
* Adaptor class for interface org.deepin.dde.Dock1
*/
class QGSettings;
class WindowManager;
class PluginsItemInterface;
struct DockItemInfo
{
QString name;
QString displayName;
QString itemKey;
QString settingKey;
QByteArray iconLight;
QByteArray iconDark;
bool visible;
};
QDebug operator<<(QDebug argument, const DockItemInfo &info);
QDBusArgument &operator<<(QDBusArgument &arg, const DockItemInfo &info);
const QDBusArgument &operator>>(const QDBusArgument &arg, DockItemInfo &info);
Q_DECLARE_METATYPE(DockItemInfo)
typedef QList<DockItemInfo> DockItemInfos;
Q_DECLARE_METATYPE(DockItemInfos)
void registerPluginInfoMetaType();
class DBusDockAdaptors: public QDBusAbstractAdaptor
{
Q_OBJECT
Q_CLASSINFO("D-Bus Interface", "com.deepin.dde.Dock")
Q_CLASSINFO("D-Bus Interface", "org.deepin.dde.Dock1")
Q_CLASSINFO("D-Bus Introspection", ""
" <interface name=\"com.deepin.dde.Dock\">\n"
" <interface name=\"org.deepin.dde.Dock1\">\n"
" <property access=\"read\" type=\"(iiii)\" name=\"geometry\"/>\n"
" <property access=\"readwrite\" type=\"b\" name=\"showInPrimary\"/>\n"
" <method name=\"callShow\"/>"
@ -26,6 +70,10 @@ class DBusDockAdaptors: public QDBusAbstractAdaptor
" <method name=\"GetLoadedPlugins\">"
" <arg name=\"list\" type=\"as\" direction=\"out\"/>"
" </method>"
" <method name=\"plugins\">>"
" <arg type=\"a(sssssb)\" direction=\"out\"/>"
" <annotation value=\"PluginInfos\" name=\"org.qtproject.QtDBus.QtTypeName.Out0\"/>\n"
" </method>"
" <method name=\"resizeDock\">"
" <arg name=\"offset\" type=\"i\" direction=\"in\"/>"
" <arg name=\"dragging\" type=\"b\" direction=\"in\"/>"
@ -42,6 +90,11 @@ class DBusDockAdaptors: public QDBusAbstractAdaptor
" <arg name=\"pluginName\" type=\"s\" direction=\"in\"/>"
" <arg name=\"visible\" type=\"b\" direction=\"in\"/>"
" </method>"
" <method name=\"setItemOnDock\">"
" <arg name=\"settingKey\" type=\"s\" direction=\"in\"/>"
" <arg name=\"itemKey\" type=\"s\" direction=\"in\"/>"
" <arg name=\"visible\" type=\"b\" direction=\"in\"/>"
" </method>"
" <signal name=\"pluginVisibleChanged\">"
" <arg type=\"s\"/>"
" <arg type=\"b\"/>"
@ -52,16 +105,15 @@ class DBusDockAdaptors: public QDBusAbstractAdaptor
Q_PROPERTY(bool showInPrimary READ showInPrimary WRITE setShowInPrimary NOTIFY showInPrimaryChanged)
public:
explicit DBusDockAdaptors(MainWindow *parent);
explicit DBusDockAdaptors(WindowManager *parent);
virtual ~DBusDockAdaptors();
MainWindow *parent() const;
public Q_SLOTS: // METHODS
void callShow();
void ReloadPlugins();
QStringList GetLoadedPlugins();
DockItemInfos plugins();
void resizeDock(int offset, bool dragging);
@ -69,6 +121,7 @@ public Q_SLOTS: // METHODS
bool getPluginVisible(const QString &pluginName);
void setPluginVisible(const QString &pluginName, bool visible);
void setItemOnDock(const QString settingKey, const QString &itemKey, bool visible);
public: // PROPERTIES
QRect geometry() const;
@ -83,9 +136,12 @@ signals:
private:
bool isPluginValid(const QString &name);
QList<PluginsItemInterface *> localPlugins() const;
QIcon getSettingIcon(PluginsItemInterface *plugin, QSize &pixmapSize, DGuiApplicationHelper::ColorType colorType) const;
private:
QGSettings *m_gsettings;
WindowManager *m_windowManager;
};
#endif //DBUSDOCKADAPTORS

View File

@ -1,19 +0,0 @@
// SPDX-FileCopyrightText: 2015 - 2022 UnionTech Software Technology Co., Ltd.
//
// SPDX-License-Identifier: LGPL-3.0-or-later
#include "dbusmenu.h"
/*
* Implementation of interface class DBusMenu
*/
DBusMenu::DBusMenu(const QString &path, QObject *parent)
: QDBusAbstractInterface(staticServerPath(), path, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
{
}
DBusMenu::~DBusMenu()
{
}

View File

@ -1,75 +0,0 @@
// SPDX-FileCopyrightText: 2015 - 2022 UnionTech Software Technology Co., Ltd.
//
// SPDX-License-Identifier: LGPL-3.0-or-later
#ifndef DBUSMENU_H_1436158836
#define DBUSMENU_H_1436158836
#include <QtCore/QObject>
#include <QtCore/QByteArray>
#include <QtCore/QList>
#include <QtCore/QMap>
#include <QtCore/QString>
#include <QtCore/QStringList>
#include <QtCore/QVariant>
#include <QtDBus/QtDBus>
/*
* Proxy class for interface com.deepin.menu.Menu
*/
class DBusMenu: public QDBusAbstractInterface
{
Q_OBJECT
public:
static inline const char *staticServerPath()
{ return "com.deepin.menu"; }
static inline const char *staticInterfaceName()
{ return "com.deepin.menu.Menu"; }
public:
DBusMenu(const QString &path,QObject *parent = 0);
~DBusMenu();
public Q_SLOTS: // METHODS
inline QDBusPendingReply<> SetItemActivity(const QString &itemId, bool isActive)
{
QList<QVariant> argumentList;
argumentList << QVariant::fromValue(itemId) << QVariant::fromValue(isActive);
return asyncCallWithArgumentList(QStringLiteral("SetItemActivity"), argumentList);
}
inline QDBusPendingReply<> SetItemChecked(const QString &itemId, bool checked)
{
QList<QVariant> argumentList;
argumentList << QVariant::fromValue(itemId) << QVariant::fromValue(checked);
return asyncCallWithArgumentList(QStringLiteral("SetItemChecked"), argumentList);
}
inline QDBusPendingReply<> SetItemText(const QString &itemId, const QString &text)
{
QList<QVariant> argumentList;
argumentList << QVariant::fromValue(itemId) << QVariant::fromValue(text);
return asyncCallWithArgumentList(QStringLiteral("SetItemText"), argumentList);
}
inline QDBusPendingReply<> ShowMenu(const QString &menuJsonContent)
{
QList<QVariant> argumentList;
argumentList << QVariant::fromValue(menuJsonContent);
return asyncCallWithArgumentList(QStringLiteral("ShowMenu"), argumentList);
}
Q_SIGNALS: // SIGNALS
void ItemInvoked(const QString &itemId, bool checked);
void MenuUnregistered();
};
namespace com {
namespace deepin {
namespace menu {
typedef ::DBusMenu Menu;
}
}
}
#endif

View File

@ -1,19 +0,0 @@
// SPDX-FileCopyrightText: 2015 - 2022 UnionTech Software Technology Co., Ltd.
//
// SPDX-License-Identifier: LGPL-3.0-or-later
#include "dbusmenumanager.h"
/*
* Implementation of interface class DBusMenuManager
*/
DBusMenuManager::DBusMenuManager(QObject *parent)
: QDBusAbstractInterface(staticServerPath(), staticInterfacePath(), staticInterfaceName(), QDBusConnection::sessionBus(), parent)
{
}
DBusMenuManager::~DBusMenuManager()
{
}

View File

@ -1,60 +0,0 @@
// SPDX-FileCopyrightText: 2015 - 2022 UnionTech Software Technology Co., Ltd.
//
// SPDX-License-Identifier: LGPL-3.0-or-later
#ifndef DBUSMENUMANAGER_H_1436158928
#define DBUSMENUMANAGER_H_1436158928
#include <QtCore/QObject>
#include <QtCore/QByteArray>
#include <QtCore/QList>
#include <QtCore/QMap>
#include <QtCore/QString>
#include <QtCore/QStringList>
#include <QtCore/QVariant>
#include <QtDBus/QtDBus>
/*
* Proxy class for interface com.deepin.menu.Manager
*/
class DBusMenuManager: public QDBusAbstractInterface
{
Q_OBJECT
public:
static inline const char *staticServerPath()
{ return "com.deepin.menu"; }
static inline const char *staticInterfacePath()
{ return "/com/deepin/menu"; }
static inline const char *staticInterfaceName()
{ return "com.deepin.menu.Manager"; }
public:
explicit DBusMenuManager(QObject *parent = 0);
~DBusMenuManager();
public Q_SLOTS: // METHODS
inline QDBusPendingReply<QDBusObjectPath> RegisterMenu()
{
QList<QVariant> argumentList;
return asyncCallWithArgumentList(QStringLiteral("RegisterMenu"), argumentList);
}
inline QDBusPendingReply<> UnregisterMenu(const QString &menuObjectPath)
{
QList<QVariant> argumentList;
argumentList << QVariant::fromValue(menuObjectPath);
return asyncCallWithArgumentList(QStringLiteral("UnregisterMenu"), argumentList);
}
Q_SIGNALS: // SIGNALS
};
namespace com {
namespace deepin {
namespace menu {
typedef ::DBusMenuManager Manager;
}
}
}
#endif

View File

@ -1,16 +0,0 @@
<interface name="dde.dock.ClientManager">
<method name="ActivateWindow">
<arg type="u" direction="in"></arg>
<arg type="b" direction="out"></arg>
</method>
<method name="CloseWindow">
<arg type="u" direction="in"></arg>
<arg type="b" direction="out"></arg>
</method>
<method name="CurrentActiveWindow">
<arg type="u" direction="out"></arg>
</method>
<signal name="ActiveWindowChanged">
<arg type="u"></arg>
</signal>
</interface>

View File

@ -1,13 +0,0 @@
<interface name="dde.dock.Entry">
<method name="Activate">
</method>
<signal name="DataChanged">
<arg type="s"></arg>
<arg type="s"></arg>
</signal>
<property name="Id" type="s" access="read"></property>
<property name="Type" type="s" access="read"></property>
<property name="Data" type="a{ss}" access="read">
<annotation name="org.qtproject.QtDBus.QtTypeName" value="Dict"/>
</property>
</interface>

View File

@ -0,0 +1,246 @@
// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd.
//
// SPDX-License-Identifier: GPL-3.0-or-later
#include "dockdaemonadaptors.h"
#include "docksettings.h"
#include "taskmanager/taskmanager.h"
DockDaemonDBusAdaptor::DockDaemonDBusAdaptor(QObject *parent)
: QDBusAbstractAdaptor(parent)
{
// constructor
setAutoRelaySignals(true);
connect(TaskManager::instance(), &TaskManager::entryAdded, this, &DockDaemonDBusAdaptor::EntryAdded);
connect(TaskManager::instance(), &TaskManager::entryRemoved, this, &DockDaemonDBusAdaptor::EntryRemoved);
connect(TaskManager::instance(), &TaskManager::hideStateChanged, this, &DockDaemonDBusAdaptor::HideStateChanged);
connect(TaskManager::instance(), &TaskManager::frontendWindowRectChanged, this, &DockDaemonDBusAdaptor::FrontendWindowRectChanged);
connect(TaskManager::instance(), &TaskManager::showRecentChanged, this, &DockDaemonDBusAdaptor::showRecentChanged);
connect(TaskManager::instance(), &TaskManager::showMultiWindowChanged, this, &DockDaemonDBusAdaptor::ShowMultiWindowChanged);
connect(TaskManager::instance(), &TaskManager::windowMarginChanged, this, &DockDaemonDBusAdaptor::WindowMarginChanged);
connect(DockSettings::instance(), &DockSettings::positionModeChanged, this, &DockDaemonDBusAdaptor::PositionChanged);
connect(DockSettings::instance(), &DockSettings::hideModeChanged, this, &DockDaemonDBusAdaptor::HideModeChanged);
connect(DockSettings::instance(), &DockSettings::displayModeChanged, this, &DockDaemonDBusAdaptor::DisplayModeChanged);
connect(DockSettings::instance(), &DockSettings::windowSizeEfficientChanged, this, &DockDaemonDBusAdaptor::WindowSizeEfficientChanged);
connect(DockSettings::instance(), &DockSettings::windowSizeFashionChanged, this, &DockDaemonDBusAdaptor::WindowSizeFashionChanged);
}
DockDaemonDBusAdaptor::~DockDaemonDBusAdaptor()
{
// destructor
}
int DockDaemonDBusAdaptor::displayMode() const
{
return TaskManager::instance()->getDisplayMode();
}
void DockDaemonDBusAdaptor::setDisplayMode(int value)
{
if (displayMode() != value) {
TaskManager::instance()->setDisplayMode(value);
Q_EMIT DisplayModeChanged(value);
}
}
QStringList DockDaemonDBusAdaptor::dockedApps() const
{
return TaskManager::instance()->getDockedApps();
}
int DockDaemonDBusAdaptor::hideMode() const
{
return TaskManager::instance()->getHideMode();
}
void DockDaemonDBusAdaptor::setHideMode(int value)
{
if (hideMode() != value) {
TaskManager::instance()->setHideMode(static_cast<HideMode>(value));
Q_EMIT HideModeChanged(value);
}
}
int DockDaemonDBusAdaptor::hideState() const
{
return TaskManager::instance()->getHideState();
}
uint DockDaemonDBusAdaptor::hideTimeout() const
{
return TaskManager::instance()->getHideTimeout();
}
void DockDaemonDBusAdaptor::setHideTimeout(uint value)
{
if (hideTimeout() != value) {
TaskManager::instance()->setHideTimeout(value);
Q_EMIT HideTimeoutChanged(value);
}
}
uint DockDaemonDBusAdaptor::windowSizeEfficient() const
{
return TaskManager::instance()->getWindowSizeEfficient();
}
void DockDaemonDBusAdaptor::setWindowSizeEfficient(uint value)
{
if (windowSizeEfficient() != value) {
TaskManager::instance()->setWindowSizeEfficient(value);
Q_EMIT WindowSizeEfficientChanged(value);
}
}
uint DockDaemonDBusAdaptor::windowSizeFashion() const
{
return TaskManager::instance()->getWindowSizeFashion();
}
void DockDaemonDBusAdaptor::setWindowSizeFashion(uint value)
{
if (windowSizeFashion() != value) {
TaskManager::instance()->setWindowSizeFashion(value);
Q_EMIT WindowSizeFashionChanged(value);
}
}
uint DockDaemonDBusAdaptor::windowMargin() const
{
return TaskManager::instance()->windowMargin();
}
QRect DockDaemonDBusAdaptor::frontendWindowRect() const
{
return TaskManager::instance()->getFrontendWindowRect();
}
uint DockDaemonDBusAdaptor::iconSize() const
{
return TaskManager::instance()->getIconSize();
}
void DockDaemonDBusAdaptor::setIconSize(uint value)
{
if (iconSize() != value) {
TaskManager::instance()->setIconSize(value);
Q_EMIT IconSizeChanged(value);
}
}
int DockDaemonDBusAdaptor::position() const
{
return TaskManager::instance()->getPosition();
}
void DockDaemonDBusAdaptor::setPosition(int value)
{
if (position() != value) {
TaskManager::instance()->setPosition(value);
Q_EMIT PositionChanged(value);
}
}
uint DockDaemonDBusAdaptor::showTimeout() const
{
return TaskManager::instance()->getShowTimeout();
}
void DockDaemonDBusAdaptor::setShowTimeout(uint value)
{
if (showTimeout() != value) {
TaskManager::instance()->setShowTimeout(value);
Q_EMIT ShowTimeoutChanged(value);
}
}
bool DockDaemonDBusAdaptor::showRecent() const
{
return DockSettings::instance()->showRecent();
}
bool DockDaemonDBusAdaptor::showMultiWindow() const
{
return TaskManager::instance()->showMultiWindow();
}
void DockDaemonDBusAdaptor::CloseWindow(uint win)
{
TaskManager::instance()->closeWindow(win);
}
// for debug
QStringList DockDaemonDBusAdaptor::GetEntryIDs()
{
return TaskManager::instance()->getEntryIDs();
}
bool DockDaemonDBusAdaptor::IsDocked(const QString &desktopFile)
{
return TaskManager::instance()->isDocked(desktopFile);
}
bool DockDaemonDBusAdaptor::IsOnDock(const QString &desktopFile)
{
return TaskManager::instance()->isOnDock(desktopFile);
}
void DockDaemonDBusAdaptor::MoveEntry(int index, int newIndex)
{
TaskManager::instance()->moveEntry(index, newIndex);
}
QString DockDaemonDBusAdaptor::QueryWindowIdentifyMethod(uint win)
{
return TaskManager::instance()->queryWindowIdentifyMethod(win);
}
QStringList DockDaemonDBusAdaptor::GetDockedAppsDesktopFiles()
{
return TaskManager::instance()->getDockedAppsDesktopFiles();
}
QString DockDaemonDBusAdaptor::GetPluginSettings()
{
return TaskManager::instance()->getPluginSettings();
}
void DockDaemonDBusAdaptor::SetPluginSettings(QString jsonStr)
{
TaskManager::instance()->setPluginSettings(jsonStr);
}
void DockDaemonDBusAdaptor::MergePluginSettings(QString jsonStr)
{
TaskManager::instance()->mergePluginSettings(jsonStr);
}
void DockDaemonDBusAdaptor::RemovePluginSettings(QString key1, QStringList key2List)
{
TaskManager::instance()->removePluginSettings(key1, key2List);
}
bool DockDaemonDBusAdaptor::RequestDock(const QString &desktopFile, int index)
{
return TaskManager::instance()->requestDock(desktopFile, index);
}
bool DockDaemonDBusAdaptor::RequestUndock(const QString &desktopFile)
{
return TaskManager::instance()->requestUndock(desktopFile);
}
void DockDaemonDBusAdaptor::SetShowRecent(bool visible)
{
DockSettings::instance()->setShowRecent(visible);
}
void DockDaemonDBusAdaptor::SetShowMultiWindow(bool showMultiWindow)
{
TaskManager::instance()->setShowMultiWindow(showMultiWindow);
}
void DockDaemonDBusAdaptor::SetFrontendWindowRect(int x, int y, uint width, uint height)
{
TaskManager::instance()->setFrontendWindowRect(x, y, width, height);
}

View File

@ -0,0 +1,208 @@
// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd.
//
// SPDX-License-Identifier: GPL-3.0-or-later
#pragma once
#include "taskmanager/entry.h"
#include <QtCore/QObject>
#include <QtCore/QMetaObject>
#include <QtCore/QVariant>
#include <QtDBus/QtDBus>
#include <QtCore/QByteArray>
#include <QtCore/QList>
#include <QtCore/QMap>
#include <QtCore/QString>
#include <QtCore/QStringList>
#include <QtCore/QVariant>
#include <QDBusObjectPath>
#include <QRect>
/*
* Adaptor class for interface org.deepin.dde.daemon.Dock1
*/
class Entry;
class DockDaemonDBusAdaptor: public QDBusAbstractAdaptor
{
Q_OBJECT
Q_CLASSINFO("D-Bus Interface", "org.deepin.dde.daemon.Dock1")
Q_CLASSINFO("D-Bus Introspection", ""
" <interface name=\"org.deepin.dde.daemon.Dock1\">\n"
" <method name=\"CloseWindow\">\n"
" <arg direction=\"in\" type=\"u\" name=\"win\"/>\n"
" </method>\n"
" <method name=\"GetEntryIDs\">\n"
" <arg direction=\"out\" type=\"as\" name=\"list\"/>\n"
" </method>\n"
" <method name=\"IsDocked\">\n"
" <arg direction=\"in\" type=\"s\" name=\"desktopFile\"/>\n"
" <arg direction=\"out\" type=\"b\" name=\"value\"/>\n"
" </method>\n"
" <method name=\"IsOnDock\">\n"
" <arg direction=\"in\" type=\"s\" name=\"desktopFile\"/>\n"
" <arg direction=\"out\" type=\"b\" name=\"value\"/>\n"
" </method>\n"
" <method name=\"MoveEntry\">\n"
" <arg direction=\"in\" type=\"i\" name=\"index\"/>\n"
" <arg direction=\"in\" type=\"i\" name=\"newIndex\"/>\n"
" </method>\n"
" <method name=\"QueryWindowIdentifyMethod\">\n"
" <arg direction=\"in\" type=\"u\" name=\"win\"/>\n"
" <arg direction=\"out\" type=\"s\" name=\"identifyMethod\"/>\n"
" </method>\n"
" <method name=\"GetDockedAppsDesktopFiles\">\n"
" <arg direction=\"out\" type=\"as\" name=\"desktopFiles\"/>\n"
" </method>\n"
" <method name=\"GetPluginSettings\">\n"
" <arg direction=\"out\" type=\"s\" name=\"jsonStr\"/>\n"
" </method>\n"
" <method name=\"SetPluginSettings\">\n"
" <arg direction=\"in\" type=\"s\" name=\"jsonStr\"/>\n"
" </method>\n"
" <method name=\"MergePluginSettings\">\n"
" <arg direction=\"in\" type=\"s\" name=\"jsonStr\"/>\n"
" </method>\n"
" <method name=\"RemovePluginSettings\">\n"
" <arg direction=\"in\" type=\"s\" name=\"key1\"/>\n"
" <arg direction=\"in\" type=\"as\" name=\"key2List\"/>\n"
" </method>\n"
" <method name=\"RequestDock\">\n"
" <arg direction=\"in\" type=\"s\" name=\"desktopFile\"/>\n"
" <arg direction=\"in\" type=\"i\" name=\"index\"/>\n"
" <arg direction=\"out\" type=\"b\" name=\"ok\"/>\n"
" </method>\n"
" <method name=\"RequestUndock\">\n"
" <arg direction=\"in\" type=\"s\" name=\"desktopFile\"/>\n"
" <arg direction=\"out\" type=\"b\" name=\"ok\"/>\n"
" </method>\n"
" <method name=\"SetShowRecent\">\n"
" <arg direction=\"in\" type=\"b\" name=\"visible\"/>\n"
" </method>\n"
" <method name=\"SetShowMultiWindow\">\n"
" <arg direction=\"in\" type=\"b\" name=\"visible\"/>\n"
" </method>\n"
" <method name=\"SetFrontendWindowRect\">\n"
" <arg direction=\"in\" type=\"i\" name=\"x\"/>\n"
" <arg direction=\"in\" type=\"i\" name=\"y\"/>\n"
" <arg direction=\"in\" type=\"u\" name=\"width\"/>\n"
" <arg direction=\"in\" type=\"u\" name=\"height\"/>\n"
" </method>\n"
" <signal name=\"ServiceRestarted\"/>\n"
" <signal name=\"EntryAdded\">\n"
" <arg type=\"o\" name=\"path\"/>\n"
" <arg type=\"i\" name=\"index\"/>\n"
" </signal>\n"
" <signal name=\"EntryRemoved\">\n"
" <arg type=\"s\" name=\"entryId\"/>\n"
" </signal>\n"
" <property access=\"readwrite\" type=\"u\" name=\"ShowTimeout\"/>\n"
" <property access=\"readwrite\" type=\"u\" name=\"HideTimeout\"/>\n"
" <property access=\"readwrite\" type=\"u\" name=\"WindowSizeEfficient\"/>\n"
" <property access=\"readwrite\" type=\"u\" name=\"WindowSizeFashion\"/>\n"
" <property access=\"read\" type=\"u\" name=\"WindowMargin\"/>\n"
" <property access=\"read\" type=\"(iiii)\" name=\"FrontendWindowRect\"/>\n"
" <property access=\"readwrite\" type=\"i\" name=\"HideMode\"/>\n"
" <property access=\"readwrite\" type=\"i\" name=\"DisplayMode\"/>\n"
" <property access=\"read\" type=\"i\" name=\"HideState\"/>\n"
" <property access=\"readwrite\" type=\"i\" name=\"Position\"/>\n"
" <property access=\"readwrite\" type=\"u\" name=\"IconSize\"/>\n"
" <property access=\"read\" type=\"as\" name=\"DockedApps\"/>\n"
" <property access=\"read\" type=\"b\" name=\"ShowRecent\"/>\n"
" <property access=\"read\" type=\"b\" name=\"ShowMultiWindow\"/>\n"
" </interface>\n"
"")
public:
DockDaemonDBusAdaptor(QObject *parent);
virtual ~DockDaemonDBusAdaptor();
public: // PROPERTIES
Q_PROPERTY(int DisplayMode READ displayMode WRITE setDisplayMode NOTIFY DisplayModeChanged)
int displayMode() const;
void setDisplayMode(int value);
Q_PROPERTY(QStringList DockedApps READ dockedApps NOTIFY DockedAppsChanged)
QStringList dockedApps() const;
Q_PROPERTY(int HideMode READ hideMode WRITE setHideMode NOTIFY HideModeChanged)
int hideMode() const;
void setHideMode(int value);
Q_PROPERTY(int HideState READ hideState NOTIFY HideStateChanged)
int hideState() const;
Q_PROPERTY(uint HideTimeout READ hideTimeout WRITE setHideTimeout NOTIFY HideTimeoutChanged)
uint hideTimeout() const;
void setHideTimeout(uint value);
Q_PROPERTY(uint WindowSizeEfficient READ windowSizeEfficient WRITE setWindowSizeEfficient NOTIFY WindowSizeEfficientChanged)
uint windowSizeEfficient() const;
void setWindowSizeEfficient(uint value);
Q_PROPERTY(uint WindowSizeFashion READ windowSizeFashion WRITE setWindowSizeFashion NOTIFY WindowSizeFashionChanged)
uint windowSizeFashion() const;
void setWindowSizeFashion(uint value);
Q_PROPERTY(uint WindowMargin READ windowMargin NOTIFY WindowMarginChanged)
uint windowMargin() const;
Q_PROPERTY(QRect FrontendWindowRect READ frontendWindowRect NOTIFY FrontendWindowRectChanged)
QRect frontendWindowRect() const;
Q_PROPERTY(uint IconSize READ iconSize WRITE setIconSize NOTIFY IconSizeChanged)
uint iconSize() const;
void setIconSize(uint value);
Q_PROPERTY(int Position READ position WRITE setPosition NOTIFY PositionChanged)
int position() const;
void setPosition(int value);
Q_PROPERTY(uint ShowTimeout READ showTimeout WRITE setShowTimeout NOTIFY ShowTimeoutChanged)
uint showTimeout() const;
void setShowTimeout(uint value);
Q_PROPERTY(bool ShowRecent READ showRecent NOTIFY showRecentChanged)
bool showRecent() const;
Q_PROPERTY(bool ShowMultiWindow READ showMultiWindow NOTIFY ShowMultiWindowChanged)
bool showMultiWindow() const;
public Q_SLOTS: // METHODS
void CloseWindow(uint win);
QStringList GetEntryIDs();
bool IsDocked(const QString &desktopFile);
bool IsOnDock(const QString &desktopFile);
void MoveEntry(int index, int newIndex);
QString QueryWindowIdentifyMethod(uint win);
QStringList GetDockedAppsDesktopFiles();
QString GetPluginSettings();
void SetPluginSettings(QString jsonStr);
void MergePluginSettings(QString jsonStr);
void RemovePluginSettings(QString key1, QStringList key2List);
bool RequestDock(const QString &desktopFile, int index);
bool RequestUndock(const QString &desktopFile);
void SetShowRecent(bool visible);
void SetShowMultiWindow(bool showMultiWindow);
void SetFrontendWindowRect(int x, int y, uint width, uint height);
Q_SIGNALS: // SIGNALS
void ServiceRestarted();
void EntryAdded(const Entry *entry, int index);
void EntryRemoved(const QString &entryId);
void DisplayModeChanged(int value) const;
void DockedAppsChanged(const QStringList &value) const;
void EntriesChanged(const QList<QDBusObjectPath> &value) const;
void FrontendWindowRectChanged(const QRect &dockRect) const;
void HideModeChanged(int value) const;
void HideStateChanged(int value) const;
void HideTimeoutChanged(uint value) const;
void IconSizeChanged(uint value) const;
void PositionChanged(int value) const;
void ShowTimeoutChanged(uint value) const;
void WindowSizeEfficientChanged(uint value) const;
void WindowSizeFashionChanged(uint value) const;
void WindowMarginChanged(uint value) const;
void showRecentChanged(bool) const;
void ShowMultiWindowChanged(bool) const;
};

View File

@ -0,0 +1,38 @@
// Copyright (C) 2011 ~ 2017 Deepin Technology Co., Ltd.
// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd.
//
// SPDX-License-Identifier: LGPL-3.0-or-later
#include "arealist.h"
bool MonitRect::operator ==(const MonitRect &rect)
{
return x1 == rect.x1 && y1 == rect.y1 && x2 == rect.x2 && y2 == rect.y2;
}
QDBusArgument &operator<<(QDBusArgument &arg, const MonitRect &rect)
{
arg.beginStructure();
arg << rect.x1 << rect.y1 << rect.x2 << rect.y2;
arg.endStructure();
return arg;
}
const QDBusArgument &operator>>(const QDBusArgument &arg, MonitRect &rect)
{
arg.beginStructure();
arg >> rect.x1 >> rect.y1 >> rect.x2 >> rect.y2;
arg.endStructure();
return arg;
}
void registerAreaListMetaType()
{
qRegisterMetaType<MonitRect>("MonitRect");
qDBusRegisterMetaType<MonitRect>();
qRegisterMetaType<AreaList>("AreaList");
qDBusRegisterMetaType<AreaList>();
}

View File

@ -0,0 +1,32 @@
// Copyright (C) 2011 ~ 2017 Deepin Technology Co., Ltd.
// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd.
//
// SPDX-License-Identifier: LGPL-3.0-or-later
#ifndef AREALIST_H
#define AREALIST_H
#include <QDBusMetaType>
#include <QRect>
#include <QList>
struct MonitRect {
int x1;
int y1;
int x2;
int y2;
bool operator ==(const MonitRect& rect);
};
typedef QList<MonitRect> AreaList;
Q_DECLARE_METATYPE(MonitRect)
Q_DECLARE_METATYPE(AreaList)
QDBusArgument &operator<<(QDBusArgument &arg, const MonitRect &rect);
const QDBusArgument &operator>>(const QDBusArgument &arg, MonitRect &rect);
void registerAreaListMetaType();
#endif // AREALIST_H

View File

@ -0,0 +1,14 @@
// Copyright (C) 2011 ~ 2017 Deepin Technology Co., Ltd.
// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd.
//
// SPDX-License-Identifier: LGPL-3.0-or-later
#include <QDBusMetaType>
#include "audioport.h"
void registerAudioPortMetaType()
{
qRegisterMetaType<AudioPort>("AudioPort");
qDBusRegisterMetaType<AudioPort>();
}

View File

@ -0,0 +1,56 @@
// Copyright (C) 2016 ~ 2017 Deepin Technology Co., Ltd.
// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd.
//
// SPDX-License-Identifier: LGPL-3.0-or-later
#ifndef AUDIOPORT_H
#define AUDIOPORT_H
#include <QDBusMetaType>
#include <QString>
#include <QDBusArgument>
#include <QDebug>
class AudioPort
{
public:
QString name;
QString description;
uchar availability; // 0 for Unknown, 1 for Not Available, 2 for Available.
friend QDebug operator<<(QDebug argument, const AudioPort &port) {
argument << port.description;
return argument;
}
friend QDBusArgument &operator<<(QDBusArgument &argument, const AudioPort &port) {
argument.beginStructure();
argument << port.name << port.description << port.availability;
argument.endStructure();
return argument;
}
friend const QDBusArgument &operator>>(const QDBusArgument &argument, AudioPort &port) {
argument.beginStructure();
argument >> port.name >> port.description >> port.availability;
argument.endStructure();
return argument;
}
bool operator==(const AudioPort what) const {
return what.name == name && what.description == description && what.availability == availability;
}
bool operator!=(const AudioPort what) const {
return what.name != name || what.description != description || what.availability != availability;
}
};
Q_DECLARE_METATYPE(AudioPort)
void registerAudioPortMetaType();
#endif // AUDIOPORT_H

View File

@ -0,0 +1,12 @@
// Copyright (C) 2011 ~ 2017 Deepin Technology Co., Ltd.
// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd.
//
// SPDX-License-Identifier: LGPL-3.0-or-later
#include "audioportlist.h"
void registerAudioPortListMetaType()
{
qRegisterMetaType<AudioPortList>("AudioPortList");
qDBusRegisterMetaType<AudioPortList>();
}

View File

@ -0,0 +1,20 @@
// Copyright (C) 2016 ~ 2017 Deepin Technology Co., Ltd.
// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd.
//
// SPDX-License-Identifier: LGPL-3.0-or-later
#ifndef AUDIOPORTLIST_H
#define AUDIOPORTLIST_H
#include <QDBusMetaType>
#include <QList>
#include "audioport.h"
typedef QList<AudioPort> AudioPortList;
Q_DECLARE_METATYPE(AudioPortList)
void registerAudioPortListMetaType();
#endif // AUDIOPORTLIST_H

View File

@ -0,0 +1,12 @@
// Copyright (C) 2011 ~ 2017 Deepin Technology Co., Ltd.
// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd.
//
// SPDX-License-Identifier: LGPL-3.0-or-later
#include "brightnessmap.h"
void registerBrightnessMapMetaType()
{
qRegisterMetaType<BrightnessMap>("BrightnessMap");
qDBusRegisterMetaType<BrightnessMap>();
}

View File

@ -0,0 +1,16 @@
// Copyright (C) 2011 ~ 2017 Deepin Technology Co., Ltd.
// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd.
//
// SPDX-License-Identifier: LGPL-3.0-or-later
#ifndef BRIGHTNESSMAP_H
#define BRIGHTNESSMAP_H
#include <QMap>
#include <QDBusMetaType>
typedef QMap<QString, double> BrightnessMap;
void registerBrightnessMapMetaType();
#endif // BRIGHTNESSMAP_H

View File

@ -0,0 +1,43 @@
// Copyright (C) 2011 ~ 2017 Deepin Technology Co., Ltd.
// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd.
//
// SPDX-License-Identifier: LGPL-3.0-or-later
#include "dbusimagelist.h"
QDBusArgument &operator<<(QDBusArgument &argument, const DBusImage &image)
{
argument.beginStructure();
argument << image.width << image.height << image.pixels;
argument.endStructure();
return argument;
}
const QDBusArgument &operator>>(const QDBusArgument &argument, DBusImage &image)
{
argument.beginStructure();
argument >> image.width >> image.height >> image.pixels;
argument.endStructure();
return argument;
}
void registerDBusImageListMetaType()
{
qRegisterMetaType<DBusImage>("DBusImage");
qDBusRegisterMetaType<DBusImage>();
qRegisterMetaType<DBusImageList>("DBusImageList");
qDBusRegisterMetaType<DBusImageList>();
}
bool operator ==(const DBusImage &a, const DBusImage &b)
{
return a.width == b.width
&& a.height == b.height
&& a.pixels == b.pixels;
}
bool operator !=(const DBusImage &a, const DBusImage &b)
{
return !(a == b);
}

View File

@ -0,0 +1,32 @@
// Copyright (C) 2011 ~ 2017 Deepin Technology Co., Ltd.
// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd.
//
// SPDX-License-Identifier: LGPL-3.0-or-later
#ifndef DBUSIMAGELIST_H
#define DBUSIMAGELIST_H
#include <QDBusMetaType>
#include <QRect>
#include <QList>
struct DBusImage
{
int width;
int height;
QByteArray pixels;
};
Q_DECLARE_METATYPE(DBusImage)
typedef QList<DBusImage> DBusImageList;
Q_DECLARE_METATYPE(DBusImageList)
QDBusArgument &operator<<(QDBusArgument&, const DBusImage&);
const QDBusArgument &operator>>(const QDBusArgument&, DBusImage&);
bool operator ==(const DBusImage&, const DBusImage&);
bool operator !=(const DBusImage&, const DBusImage&);
void registerDBusImageListMetaType();
#endif // DBUSIMAGELIST_H

View File

@ -0,0 +1,41 @@
// Copyright (C) 2011 ~ 2017 Deepin Technology Co., Ltd.
// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd.
//
// SPDX-License-Identifier: LGPL-3.0-or-later
#include "dbustooltip.h"
QDBusArgument &operator<<(QDBusArgument &argument, const DBusToolTip &tip)
{
argument.beginStructure();
argument << tip.iconName << tip.iconPixmap << tip.title << tip.description;
argument.endStructure();
return argument;
}
const QDBusArgument &operator>>(const QDBusArgument &argument, DBusToolTip &tip)
{
argument.beginStructure();
argument >> tip.iconName >> tip.iconPixmap >> tip.title >> tip.description;
argument.endStructure();
return argument;
}
bool operator ==(const DBusToolTip &a, const DBusToolTip &b)
{
return a.iconName == b.iconName
&& a.iconPixmap == b.iconPixmap
&& a.title == b.title
&& a.description == b.description;
}
bool operator !=(const DBusToolTip &a, const DBusToolTip &b)
{
return !(a == b);
}
void registerDBusToolTipMetaType()
{
qRegisterMetaType<DBusToolTip>("DBusToolTip");
qDBusRegisterMetaType<DBusToolTip>();
}

View File

@ -0,0 +1,32 @@
// Copyright (C) 2011 ~ 2017 Deepin Technology Co., Ltd.
// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd.
//
// SPDX-License-Identifier: LGPL-3.0-or-later
#ifndef DBUSTOOLTIP_H
#define DBUSTOOLTIP_H
#include "dbusimagelist.h"
#include <QDBusMetaType>
#include <QRect>
#include <QList>
struct DBusToolTip
{
QString iconName;
DBusImageList iconPixmap;
QString title;
QString description;
};
Q_DECLARE_METATYPE(DBusToolTip)
QDBusArgument &operator<<(QDBusArgument&, const DBusToolTip&);
const QDBusArgument &operator>>(const QDBusArgument&, DBusToolTip&);
bool operator ==(const DBusToolTip&, const DBusToolTip&);
bool operator !=(const DBusToolTip&, const DBusToolTip&);
void registerDBusToolTipMetaType();
#endif // DBUSTOOLTIP_H

View File

@ -0,0 +1,54 @@
// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd.
//
// SPDX-License-Identifier: LGPL-3.0-or-later
#include "dockrect.h"
#include <QDebug>
DockRect::DockRect()
: x(0)
, y(0)
, w(0)
, h(0)
{
}
QDebug operator<<(QDebug debug, const DockRect &rect)
{
debug << QString("DockRect(%1, %2, %3, %4)").arg(rect.x)
.arg(rect.y)
.arg(rect.w)
.arg(rect.h);
return debug;
}
DockRect::operator QRect() const
{
return QRect(x, y, w, h);
}
QDBusArgument &operator<<(QDBusArgument &arg, const DockRect &rect)
{
arg.beginStructure();
arg << rect.x << rect.y << rect.w << rect.h;
arg.endStructure();
return arg;
}
const QDBusArgument &operator>>(const QDBusArgument &arg, DockRect &rect)
{
arg.beginStructure();
arg >> rect.x >> rect.y >> rect.w >> rect.h;
arg.endStructure();
return arg;
}
void registerDockRectMetaType()
{
qRegisterMetaType<DockRect>("DockRect");
qDBusRegisterMetaType<DockRect>();
}

View File

@ -0,0 +1,31 @@
// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd.
//
// SPDX-License-Identifier: LGPL-3.0-or-later
#ifndef DOCKRECT_H
#define DOCKRECT_H
#include <QRect>
#include <QDBusMetaType>
struct DockRect
{
public:
DockRect();
operator QRect() const;
friend QDebug operator<<(QDebug debug, const DockRect &rect);
friend const QDBusArgument &operator>>(const QDBusArgument &arg, DockRect &rect);
friend QDBusArgument &operator<<(QDBusArgument &arg, const DockRect &rect);
int x;
int y;
uint w;
uint h;
};
Q_DECLARE_METATYPE(DockRect)
void registerDockRectMetaType();
#endif // DOCKRECT_H

View File

@ -0,0 +1,12 @@
// Copyright (C) 2011 ~ 2017 Deepin Technology Co., Ltd.
// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd.
//
// SPDX-License-Identifier: LGPL-3.0-or-later
#include "keyboardlayoutlist.h"
void registerKeyboardLayoutListMetaType()
{
qRegisterMetaType<KeyboardLayoutList>("KeyboardLayoutList");
qDBusRegisterMetaType<KeyboardLayoutList>();
}

View File

@ -0,0 +1,18 @@
// Copyright (C) 2011 ~ 2017 Deepin Technology Co., Ltd.
// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd.
//
// SPDX-License-Identifier: LGPL-3.0-or-later
#ifndef KEYBOARDLAYOUTLIST_H
#define KEYBOARDLAYOUTLIST_H
#include <QMap>
#include <QString>
#include <QObject>
#include <QDBusMetaType>
typedef QMap<QString, QString> KeyboardLayoutList;
void registerKeyboardLayoutListMetaType();
#endif // KEYBOARDLAYOUTLIST_H

View File

@ -0,0 +1,56 @@
// Copyright (C) 2011 ~ 2017 Deepin Technology Co., Ltd.
// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd.
//
// SPDX-License-Identifier: LGPL-3.0-or-later
#include "resolution.h"
#include <QDebug>
void registerResolutionMetaType()
{
qRegisterMetaType<Resolution>("Resolution");
qDBusRegisterMetaType<Resolution>();
}
Resolution::Resolution()
{
}
bool Resolution::operator!=(const Resolution &other) const
{
return m_width != other.m_width || m_height != other.m_height || m_rate != other.m_rate;
}
bool Resolution::operator==(const Resolution &other) const
{
return !(other != *this);
}
QDBusArgument &operator<<(QDBusArgument &arg, const Resolution &value)
{
arg.beginStructure();
arg << quint32(value.id()) << quint16(value.width()) << quint16(value.height()) << value.rate();
arg.endStructure();
return arg;
}
const QDBusArgument &operator>>(const QDBusArgument &arg, Resolution &value)
{
quint32 id;
quint16 w, h;
double rate;
arg.beginStructure();
arg >> id >> w >> h >> rate;
arg.endStructure();
value.setId(id);
value.setWidth(w);
value.setHeight(h);
value.setRate(rate);
return arg;
}

View File

@ -0,0 +1,45 @@
// Copyright (C) 2011 ~ 2017 Deepin Technology Co., Ltd.
// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd.
//
// SPDX-License-Identifier: LGPL-3.0-or-later
#ifndef RESOLUTION_H
#define RESOLUTION_H
#include <QDBusMetaType>
class Resolution
{
public:
friend QDBusArgument &operator<<(QDBusArgument &arg, const Resolution &value);
friend const QDBusArgument &operator>>(const QDBusArgument &arg, Resolution &value);
explicit Resolution();
bool operator!=(const Resolution &other) const;
bool operator==(const Resolution &other) const;
int id() const { return m_id; }
int width() const { return m_width; }
int height() const { return m_height; }
double rate() const { return m_rate; }
private:
void setId(const int id) { m_id = id; }
void setWidth(const int w) { m_width = w; }
void setHeight(const int h) { m_height = h; }
void setRate(const double rate) { m_rate = rate; }
private:
int m_id;
int m_width;
int m_height;
double m_rate;
};
Q_DECLARE_METATYPE(Resolution)
void registerResolutionMetaType();
#endif // RESOLUTION_H

View File

@ -0,0 +1,14 @@
// Copyright (C) 2011 ~ 2017 Deepin Technology Co., Ltd.
// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd.
//
// SPDX-License-Identifier: LGPL-3.0-or-later
#include "resolutionlist.h"
void registerResolutionListMetaType()
{
registerResolutionMetaType();
qRegisterMetaType<ResolutionList>("ResolutionList");
qDBusRegisterMetaType<ResolutionList>();
}

View File

@ -0,0 +1,17 @@
// Copyright (C) 2011 ~ 2017 Deepin Technology Co., Ltd.
// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd.
//
// SPDX-License-Identifier: LGPL-3.0-or-later
#ifndef RESOLUTIONLIST_H
#define RESOLUTIONLIST_H
#include "resolution.h"
#include <QList>
typedef QList<Resolution> ResolutionList;
void registerResolutionListMetaType();
#endif // RESOLUTIONLIST_H

View File

@ -0,0 +1,54 @@
// Copyright (C) 2011 ~ 2017 Deepin Technology Co., Ltd.
// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd.
//
// SPDX-License-Identifier: LGPL-3.0-or-later
#include "screenrect.h"
ScreenRect::ScreenRect()
: x(0),
y(0),
w(0),
h(0)
{
}
QDebug operator<<(QDebug debug, const ScreenRect &rect)
{
debug << QString("ScreenRect(%1, %2, %3, %4)").arg(rect.x)
.arg(rect.y)
.arg(rect.w)
.arg(rect.h);
return debug;
}
ScreenRect::operator QRect() const
{
return QRect(x, y, w, h);
}
QDBusArgument &operator<<(QDBusArgument &arg, const ScreenRect &rect)
{
arg.beginStructure();
arg << rect.x << rect.y << rect.w << rect.h;
arg.endStructure();
return arg;
}
const QDBusArgument &operator>>(const QDBusArgument &arg, ScreenRect &rect)
{
arg.beginStructure();
arg >> rect.x >> rect.y >> rect.w >> rect.h;
arg.endStructure();
return arg;
}
void registerScreenRectMetaType()
{
qRegisterMetaType<ScreenRect>("ScreenRect");
qDBusRegisterMetaType<ScreenRect>();
}

View File

@ -0,0 +1,35 @@
// Copyright (C) 2011 ~ 2017 Deepin Technology Co., Ltd.
// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd.
//
// SPDX-License-Identifier: LGPL-3.0-or-later
#ifndef SCREENRECT_H
#define SCREENRECT_H
#include <QRect>
#include <QDBusArgument>
#include <QDebug>
#include <QDBusMetaType>
struct ScreenRect
{
public:
ScreenRect();
operator QRect() const;
friend QDebug operator<<(QDebug debug, const ScreenRect &rect);
friend const QDBusArgument &operator>>(const QDBusArgument &arg, ScreenRect &rect);
friend QDBusArgument &operator<<(QDBusArgument &arg, const ScreenRect &rect);
private:
qint16 x;
qint16 y;
quint16 w;
quint16 h;
};
Q_DECLARE_METATYPE(ScreenRect)
void registerScreenRectMetaType();
#endif // SCREENRECT_H

View File

@ -0,0 +1,43 @@
// Copyright (C) 2011 ~ 2017 Deepin Technology Co., Ltd.
// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd.
//
// SPDX-License-Identifier: LGPL-3.0-or-later
#include "touchscreeninfolist.h"
QDBusArgument &operator<<(QDBusArgument &arg, const TouchscreenInfo &info)
{
arg.beginStructure();
arg << info.id << info.name << info.deviceNode << info.serialNumber;
arg.endStructure();
return arg;
}
const QDBusArgument &operator>>(const QDBusArgument &arg, TouchscreenInfo &info)
{
arg.beginStructure();
arg >> info.id >> info.name >> info.deviceNode >> info.serialNumber;
arg.endStructure();
return arg;
}
bool TouchscreenInfo::operator==(const TouchscreenInfo &info)
{
return id == info.id && name == info.name && deviceNode == info.deviceNode && serialNumber == info.serialNumber;
}
void registerTouchscreenInfoMetaType()
{
qRegisterMetaType<TouchscreenInfo>("TouchscreenInfo");
qDBusRegisterMetaType<TouchscreenInfo>();
}
void registerTouchscreenInfoListMetaType()
{
registerTouchscreenInfoMetaType();
qRegisterMetaType<TouchscreenInfoList>("TouchscreenInfoList");
qDBusRegisterMetaType<TouchscreenInfoList>();
}

View File

@ -0,0 +1,32 @@
// Copyright (C) 2011 ~ 2017 Deepin Technology Co., Ltd.
// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd.
//
// SPDX-License-Identifier: LGPL-3.0-or-later
#ifndef TOUCHSCREENINFOLIST_H
#define TOUCHSCREENINFOLIST_H
#include <QString>
#include <QList>
#include <QDBusMetaType>
struct TouchscreenInfo {
qint32 id;
QString name;
QString deviceNode;
QString serialNumber;
bool operator ==(const TouchscreenInfo& info);
};
typedef QList<TouchscreenInfo> TouchscreenInfoList;
Q_DECLARE_METATYPE(TouchscreenInfo)
Q_DECLARE_METATYPE(TouchscreenInfoList)
QDBusArgument &operator<<(QDBusArgument &arg, const TouchscreenInfo &info);
const QDBusArgument &operator>>(const QDBusArgument &arg, TouchscreenInfo &info);
void registerTouchscreenInfoListMetaType();
#endif // !TOUCHSCREENINFOLIST_H

View File

@ -0,0 +1,43 @@
// Copyright (C) 2011 ~ 2017 Deepin Technology Co., Ltd.
// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd.
//
// SPDX-License-Identifier: LGPL-3.0-or-later
#include "touchscreeninfolist_v2.h"
QDBusArgument &operator<<(QDBusArgument &arg, const TouchscreenInfo_V2 &info)
{
arg.beginStructure();
arg << info.id << info.name << info.deviceNode << info.serialNumber << info.UUID;
arg.endStructure();
return arg;
}
const QDBusArgument &operator>>(const QDBusArgument &arg, TouchscreenInfo_V2 &info)
{
arg.beginStructure();
arg >> info.id >> info.name >> info.deviceNode >> info.serialNumber >> info.UUID;
arg.endStructure();
return arg;
}
bool TouchscreenInfo_V2::operator==(const TouchscreenInfo_V2 &info)
{
return id == info.id && name == info.name && deviceNode == info.deviceNode && serialNumber == info.serialNumber && UUID == info.UUID;
}
void registerTouchscreenInfoV2MetaType()
{
qRegisterMetaType<TouchscreenInfo_V2>("TouchscreenInfo_V2");
qDBusRegisterMetaType<TouchscreenInfo_V2>();
}
void registerTouchscreenInfoList_V2MetaType()
{
registerTouchscreenInfoV2MetaType();
qRegisterMetaType<TouchscreenInfoList_V2>("TouchscreenInfoList_V2");
qDBusRegisterMetaType<TouchscreenInfoList_V2>();
}

View File

@ -0,0 +1,33 @@
// Copyright (C) 2011 ~ 2017 Deepin Technology Co., Ltd.
// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd.
//
// SPDX-License-Identifier: LGPL-3.0-or-later
#ifndef TOUCHSCREENINFOLISTV2_H
#define TOUCHSCREENINFOLISTV2_H
#include <QString>
#include <QList>
#include <QDBusMetaType>
struct TouchscreenInfo_V2 {
qint32 id;
QString name;
QString deviceNode;
QString serialNumber;
QString UUID;
bool operator ==(const TouchscreenInfo_V2& info);
};
typedef QList<TouchscreenInfo_V2> TouchscreenInfoList_V2;
Q_DECLARE_METATYPE(TouchscreenInfo_V2)
Q_DECLARE_METATYPE(TouchscreenInfoList_V2)
QDBusArgument &operator<<(QDBusArgument &arg, const TouchscreenInfo_V2 &info);
const QDBusArgument &operator>>(const QDBusArgument &arg, TouchscreenInfo_V2 &info);
void registerTouchscreenInfoList_V2MetaType();
#endif // !TOUCHSCREENINFOLISTV2_H

View File

@ -0,0 +1,12 @@
// Copyright (C) 2011 ~ 2017 Deepin Technology Co., Ltd.
// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd.
//
// SPDX-License-Identifier: LGPL-3.0-or-later
#include "touchscreenmap.h"
void registerTouchscreenMapMetaType()
{
qRegisterMetaType<TouchscreenMap>("TouchscreenMap");
qDBusRegisterMetaType<TouchscreenMap>();
}

View File

@ -0,0 +1,16 @@
// Copyright (C) 2011 ~ 2017 Deepin Technology Co., Ltd.
// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd.
//
// SPDX-License-Identifier: LGPL-3.0-or-later
#ifndef TOUCHSCREENMAP_H
#define TOUCHSCREENMAP_H
#include <QMap>
#include <QDBusMetaType>
typedef QMap<QString, QString> TouchscreenMap;
void registerTouchscreenMapMetaType();
#endif // TOUCHSCREENMAP_H

View File

@ -0,0 +1,72 @@
// Copyright (C) 2011 ~ 2017 Deepin Technology Co., Ltd.
// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd.
//
// SPDX-License-Identifier: LGPL-3.0-or-later
#include "zoneinfo.h"
ZoneInfo::ZoneInfo()
{
}
bool ZoneInfo::operator ==(const ZoneInfo &what) const
{
// TODO: 这里只判断这两个成员应该就可以了
return m_zoneName == what.m_zoneName &&
m_utcOffset == what.m_utcOffset;
}
QDebug operator<<(QDebug argument, const ZoneInfo & info)
{
argument << info.m_zoneName << ',' << info.m_zoneCity << ',' << info.m_utcOffset << ',';
argument << info.i2 << ',' << info.i3 << ',' << info.i4 << Qt::endl;
return argument;
}
QDBusArgument &operator<<(QDBusArgument & argument, const ZoneInfo & info)
{
argument.beginStructure();
argument << info.m_zoneName << info.m_zoneCity << info.m_utcOffset;
argument.beginStructure();
argument << info.i2 << info.i3 << info.i4;
argument.endStructure();
argument.endStructure();
return argument;
}
QDataStream &operator<<(QDataStream & argument, const ZoneInfo & info)
{
argument << info.m_zoneName << info.m_zoneCity << info.m_utcOffset;
argument << info.i2 << info.i3 << info.i4;
return argument;
}
const QDBusArgument &operator>>(const QDBusArgument & argument, ZoneInfo & info)
{
argument.beginStructure();
argument >> info.m_zoneName >> info.m_zoneCity >> info.m_utcOffset;
argument.beginStructure();
argument >> info.i2 >> info.i3 >> info.i4;
argument.endStructure();
argument.endStructure();
return argument;
}
const QDataStream &operator>>(QDataStream & argument, ZoneInfo & info)
{
argument >> info.m_zoneName >> info.m_zoneCity >> info.m_utcOffset;
argument >> info.i2 >> info.i3 >> info.i4;
return argument;
}
void registerZoneInfoMetaType()
{
qRegisterMetaType<ZoneInfo>("ZoneInfo");
qDBusRegisterMetaType<ZoneInfo>();
}

View File

@ -0,0 +1,46 @@
// Copyright (C) 2011 ~ 2017 Deepin Technology Co., Ltd.
// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd.
//
// SPDX-License-Identifier: LGPL-3.0-or-later
#ifndef ZONEINFO_H
#define ZONEINFO_H
#include <QDebug>
#include <QDataStream>
#include <QString>
#include <QDBusArgument>
#include <QDBusMetaType>
class ZoneInfo
{
public:
ZoneInfo();
friend QDebug operator<<(QDebug argument, const ZoneInfo &info);
friend QDBusArgument &operator<<(QDBusArgument &argument, const ZoneInfo &info);
friend QDataStream &operator<<(QDataStream &argument, const ZoneInfo &info);
friend const QDBusArgument &operator>>(const QDBusArgument &argument, ZoneInfo &info);
friend const QDataStream &operator>>(QDataStream &argument, ZoneInfo &info);
bool operator==(const ZoneInfo &what) const;
public:
inline QString getZoneName() const {return m_zoneName;}
inline QString getZoneCity() const {return m_zoneCity;}
inline int getUTCOffset() const {return m_utcOffset;}
private:
QString m_zoneName;
QString m_zoneCity;
int m_utcOffset;
qint64 i2;
qint64 i3;
int i4;
};
Q_DECLARE_METATYPE(ZoneInfo)
void registerZoneInfoMetaType();
#endif // ZONEINFO_H

View File

@ -0,0 +1,166 @@
<interface name="com.deepin.wm">
<property access="readwrite" type="b" name="compositingEnabled"/>
<property access="read" type="b" name="compositingPossible"/>
<property access="read" type="b" name="compositingAllowSwitch"/>
<property access="readwrite" type="b" name="zoneEnabled"/>
<property access="readwrite" type="s" name="cursorTheme"/>
<property access="readwrite" type="i" name="cursorSize"/>
<method name="SwitchApplication">
<arg direction="in" type="b" name="backward"/>
</method>
<method name="TileActiveWindow">
<arg direction="in" type="u" name="side"/>
</method>
<method name="BeginToMoveActiveWindow"/>
<method name="ToggleActiveWindowMaximize"/>
<method name="MinimizeActiveWindow"/>
<method name="ShowWorkspace"/>
<method name="ShowWindow"/>
<method name="ShowAllWindow"/>
<method name="PerformAction">
<arg direction="in" type="i" name="type"/>
</method>
<method name="PreviewWindow">
<arg direction="in" type="u" name="xid"/>
</method>
<method name="CancelPreviewWindow"/>
<method name="GetCurrentWorkspaceBackground">
<arg direction="out" type="s" name="result"/>
</method>
<method name="SetCurrentWorkspaceBackground">
<arg direction="in" type="s" name="uri"/>
</method>
<method name="GetWorkspaceBackground">
<arg direction="in" type="i" name="index"/>
<arg direction="out" type="s" name="result"/>
</method>
<method name="SetWorkspaceBackground">
<arg direction="in" type="i" name="index"/>
<arg direction="in" type="s" name="uri"/>
</method>
<method name="SetTransientBackground">
<arg direction="in" type="s"/>
</method>
<method name="GetCurrentWorkspaceBackgroundForMonitor">
<arg direction="in" type="s" name="strMonitorName"/>
<arg direction="out" type="s" name="result"/>
</method>
<method name="SetCurrentWorkspaceBackgroundForMonitor">
<arg direction="in" type="s" name="uri"/>
<arg direction="in" type="s" name="strMonitorName"/>
</method>
<method name="GetWorkspaceBackgroundForMonitor">
<arg direction="in" type="i" name="index"/>
<arg direction="in" type="s" name="strMonitorName"/>
<arg direction="out" type="s" name="result"/>
</method>
<method name="SetWorkspaceBackgroundForMonitor">
<arg direction="in" type="i" name="index"/>
<arg direction="in" type="s" name="strMonitorName"/>
<arg direction="in" type="s" name="uri"/>
</method>
<method name="SetTransientBackgroundForMonitor">
<arg direction="in" type="s" name="uri"/>
<arg direction="in" type="s" name="strMonitorName"/>
</method>
<method name="GetCurrentWorkspace">
<arg direction="out" type="i" name="index"/>
</method>
<method name="WorkspaceCount">
<arg direction="out" type="i" name="count"/>
</method>
<method name="SetCurrentWorkspace">
<arg direction="in" type="i" name="index"/>
</method>
<method name="PreviousWorkspace"/>
<method name="NextWorkspace"/>
<method name="GetAllAccels">
<arg direction="out" type="s" name="data"/>
</method>
<method name="GetAccel">
<arg direction="in" type="s" name="id"/>
<arg direction="out" type="as" name="data"/>
</method>
<method name="GetDefaultAccel">
<arg direction="in" type="s" name="id"/>
<arg direction="out" type="as" name="data"/>
</method>
<method name="SetAccel">
<arg direction="in" type="s" name="data"/>
<arg direction="out" type="b" name="result"/>
</method>
<method name="RemoveAccel">
<arg direction="in" type="s" name="id"/>\
</method>
<method name="SetDecorationTheme">
<arg direction="in" type="s" name="themeType"/>
<arg direction="in" type="s" name="themeName"/>
</method>
<method name="SetDecorationDeepinTheme">
<arg direction="in" type="s" name="deepinThemeName"/>
</method>
<signal name="WorkspaceBackgroundChanged">
<arg type="i" name="index"/>
<arg type="s" name="newUri"/>
</signal>
<signal name="WorkspaceBackgroundChangedForMonitor">
<arg type="i" name="index"/>
<arg type="s" name="strMonitorName"/>
<arg type="s" name="uri"/>
</signal>
<signal name="compositingEnabledChanged">
<arg type="b" name="enabled"/>
</signal>
<signal name="wmCompositingEnabledChanged">
<arg type="b" name="enabled"/>
</signal>
<signal name="workspaceCountChanged">
<arg type="i" name="count"/>
</signal>
<signal name="BeginToMoveActiveWindowChanged"/>
<signal name="SwitchApplicationChanged">
<arg type="b" name="backward"/>
</signal>
<signal name="TileActiveWindowChanged">
<arg type="i" name="side"/>
</signal>
<signal name="ToggleActiveWindowMaximizeChanged"/>
<signal name="ShowAllWindowChanged"/>
<signal name="ShowWindowChanged"/>
<signal name="ShowWorkspaceChanged"/>
<signal name="ResumeCompositorChanged">
<arg type="i" name="reason"/>
</signal>
<signal name="SuspendCompositorChanged">
<arg type="i" name="reason"/>
</signal>
<method name="ChangeCurrentWorkspaceBackground">
<arg direction="in" type="s" name="uri"/>
</method>
<method name="SwitchToWorkspace">
<arg direction="in" type="b" name="backward"/>
</method>
<method name="PresentWindows">
<arg direction="in" type="au" name="xids"/>
<annotation value="QList&lt;uint&gt;" name="org.qtproject.QtDBus.QtTypeName.In0"/>
</method>
<method name="EnableZoneDetected">
<arg direction="in" type="b" name="enabled"/>
</method>
<signal name="WorkspaceSwitched">
<arg type="i" name="from"/>
<arg type="i" name="to"/>
</signal>
<method name="GetMultiTaskingStatus">
<arg direction="out" type="b" name="isActive"/>
</method>
<method name="SetMultiTaskingStatus">
<arg direction="in" type="b" name="isActive"/>
</method>
<method name="GetIsShowDesktop">
<arg direction="out" type="b" name="isShowDesktop"/>
</method>
<method name="SetShowDesktop">
<arg direction="in" type="b" name="isShowDesktop"/>
</method>
</interface>

View File

@ -0,0 +1,101 @@
<interface name="org.deepin.dde.Appearance1">
<!--
<method name="Delete">
<arg direction="in" type="s" name="ty"/>
<arg direction="in" type="s" name="name"/>
</method>
<method name="GetScaleFactor">
<arg direction="out" type="d" name="scaleFactor"/>
</method>
<method name="GetScreenScaleFactors">
<arg direction="out" type="a{sd}" name="scaleFactor"/>
<annotation value="ScaleFactors"
name="org.qtproject.QtDBus.QtTypeName.Out0"/>
</method>
<method name="GetWallpaperSlideShow">
<arg direction="in" type="s" name="monitorName"/>
<arg direction="out" type="s" name="slideShow"/>
</method>
<method name="List">
<arg direction="in" type="s" name="ty"/>
<arg direction="out" type="s" name="list"/>
</method>
<method name="Reset"/>
<method name="Set">
<arg direction="in" type="s" name="ty"/>
<arg direction="in" type="s" name="value"/>
</method>
<method name="SetMonitorBackground">
<arg direction="in" type="s" name="monitorName"/>
<arg direction="in" type="s" name="imageGile"/>
</method>
<method name="SetScaleFactor">
<arg direction="in" type="d" name="scale"/>
</method>
<method name="SetScreenScaleFactors">
<arg direction="in" type="a{sd}" name="scaleFactor"/>
<annotation value="ScaleFactors"
name="org.qtproject.QtDBus.QtTypeName.In0"/>
</method>
<method name="SetWallpaperSlideShow">
<arg direction="in" type="s" name="monitorName"/>
<arg direction="in" type="s" name="slideShow"/>
</method>
<method name="Show">
<arg direction="in" type="s" name="ty"/>
<arg direction="in" type="as" name="names"/>
<arg direction="out" type="s" name="detail"/>
</method>
<method name="Thumbnail">
<arg direction="in" type="s" name="ty"/>
<arg direction="in" type="s" name="name"/>
<arg direction="out" type="s" name="file"/>
</method>
<method name="SetCurrentWorkspaceBackground">
<arg direction="in" type="s" name="uri"/>
</method>
<method name="GetCurrentWorkspaceBackground">
<arg direction="out" type="s" name="uri"/>
</method>
<method name="SetCurrentWorkspaceBackgroundForMonitor">
<arg direction="in" type="s" name="uri"/>
<arg direction="in" type="s" name="strMonitorName"/>
</method>
<method name="GetCurrentWorkspaceBackgroundForMonitor">
<arg direction="in" type="s" name="strMonitorName"/>
<arg direction="out" type="s" name="uri"/>
</method>
<method name="SetWorkspaceBackgroundForMonitor">
<arg direction="in" type="i" name="index"/>
<arg direction="in" type="s" name="strMonitorName"/>
<arg direction="in" type="s" name="uri"/>
</method>
<method name="GetWorkspaceBackgroundForMonitor">
<arg direction="in" type="i" name="index"/>
<arg direction="in" type="s" name="strMonitorName"/>
<arg direction="out" type="s" name="uri"/>
</method>
-->
<property access="readwrite" type="d" name="FontSize"/>
<property access="readwrite" type="d" name="Opacity"/>
<property access="readwrite" type="i" name="WindowRadius"/>
<property access="read" type="s" name="Background"/>
<property access="read" type="s" name="GlobalTheme"/>
<property access="read" type="s" name="GtkTheme"/>
<property access="read" type="s" name="IconTheme"/>
<property access="read" type="s" name="CursorTheme"/>
<property access="read" type="s" name="MonospaceFont"/>
<property access="readwrite" type="s" name="QtActiveColor"/>
<property access="read" type="s" name="StandardFont"/>
<property access="readwrite" type="s" name="WallpaperSlideShow"/>
<property access="read" type="s" name="WallpaperURls"/>
<signal name="Changed">
<arg type="s" name="ty"/>
<arg type="s" name="value"/>
</signal>
<signal name="Refreshed">
<arg type="s" name="type"/>
</signal>
</interface>

View File

@ -0,0 +1,38 @@
<interface name="org.deepin.dde.Audio1.Sink">
<method name="GetMeter">
<arg type="o" direction="out"/>
</method>
<method name="SetBalance">
<arg type="d" direction="in"/>
<arg type="b" direction="in"/>
</method>
<method name="SetFade">
<arg type="d" direction="in"/>
</method>
<method name="SetMute">
<arg type="b" direction="in"/>
</method>
<method name="SetPort">
<arg type="s" direction="in"/>
</method>
<method name="SetVolume">
<arg type="d" direction="in"/>
<arg type="b" direction="in"/>
</method>
<property name="Name" type="s" access="read"/>\n
<property name="Description" type="s" access="read"/>
<property name="BaseVolume" type="d" access="read"/>
<property name="Mute" type="b" access="read"/>
<property name="Volume" type="d" access="read"/>
<property name="Balance" type="d" access="read"/>
<property name="SupportBalance" type="b" access="read"/>
<property name="Fade" type="d" access="read"/>
<property name="SupportFade" type="b" access="read"/>
<property name="Ports" type="a(ssy)" access="read">
<annotation name="org.qtproject.QtDBus.QtTypeName" value="AudioPortList"/>
</property>
<property name="ActivePort" type="(ssy)" access="read">
<annotation name="org.qtproject.QtDBus.QtTypeName" value="AudioPort"/>
</property>
<property name="Card" type="u" access="read"/>
</interface>

View File

@ -0,0 +1,46 @@
<interface name="org.deepin.dde.Audio1">
<method name="Reset"/>
<method name="SetDefaultSink">
<arg type="s" direction="in"/>
</method>
<method name="SetDefaultSource">
<arg type="s" direction="in"/>
</method>
<method name="SetBluetoothAudioMode">
<arg type="s" direction="in"/>
</method>
<method name="SetPort">
<arg type="u" direction="in"/>
<arg type="s" direction="in"/>
<arg type="i" direction="in"/>
</method>
<method name="SetPortEnabled">
<arg type="u" direction="in"/>
<arg type="s" direction="in"/>
<arg type="b" direction="in"/>
</method>
<method name="IsPortEnabled">
<arg type="u" direction="in"/>
<arg type="s" direction="in"/>
<arg type="b" direction="out"/>
</method>
<signal name="PortEnabledChanged">
<arg type="u"></arg>
<arg type="s"></arg>
<arg type="b"></arg>
</signal>
<property name="SinkInputs" type="ao" access="read"/>
<property name="Sinks" type="ao" access="read"/>
<property name="Sources" type="ao" access="read"/>
<property name="BluetoothAudioModeOpts" type="as" access="read">
<annotation name="org.qtproject.QtDBus.QtTypeName" value="QStringList"/>
</property>
<property name="BluetoothAudioMode" type="s" access="read"/>
<property name="Cards" type="s" access="read"/>
<property name="CardsWithoutUnavailable" type="s" access="read"/>
<property name="DefaultSink" type="o" access="read"/>
<property name="DefaultSource" type="o" access="read"/>
<property name="MaxUIVolume" type="d" access="read"/>
<property name="IncreaseVolume" type="b" access="readwrite"/>
<property name="ReduceNoise" type="b" access="readwrite"/>
</interface>

View File

@ -0,0 +1,83 @@
<interface name="org.deepin.dde.Display1">
<method name="ApplyChanges"></method>
<method name="AssociateTouch">
<arg type="s" direction="in"></arg>
<arg type="s" direction="in"></arg>
</method>
<method name="AssociateTouchByUUID">
<arg type="s" direction="in"></arg>
<arg type="s" direction="in"></arg>
</method>
<method name="ChangeBrightness">
<arg type="b" direction="in"></arg>
</method>
<method name="DeleteCustomMode">
<arg type="s" direction="in"></arg>
</method>
<method name="GetRealDisplayMode">
<arg type="y" direction="out"></arg>
</method>
<method name="ListOutputNames">
<arg type="as" direction="out"></arg>
</method>
<method name="ListOutputsCommonModes">
<arg type="a(uqqd)" direction="out"></arg>
<annotation name="org.qtproject.QtDBus.QtTypeName.Out0" value="ResolutionList"/>
</method>
<method name="ModifyConfigName">
<arg type="s" direction="in"></arg>
<arg type="s" direction="in"></arg>
</method>
<method name="RefreshBrightness"></method>
<method name="Reset"></method>
<method name="ResetChanges"></method>
<method name="Save"></method>
<method name="SetAndSaveBrightness">
<arg type="s" direction="in"></arg>
<arg type="d" direction="in"></arg>
</method>
<method name="SetBrightness">
<arg type="s" direction="in"></arg>
<arg type="d" direction="in"></arg>
</method>
<method name="SetPrimary">
<arg type="s" direction="in"></arg>
</method>
<method name="SwitchMode">
<arg type="y" direction="in"></arg>
<arg type="s" direction="in"></arg>
</method>
<method name="SetMethodAdjustCCT">
<arg type="i" direction="in"></arg>
</method>
<method name="SetColorTemperature">
<arg type="i" direction="in"></arg>
</method>
<property name="HasChanged" type="b" access="read"></property>
<property name="DisplayMode" type="y" access="read"></property>
<property name="ScreenWidth" type="q" access="read"></property>
<property name="ScreenHeight" type="q" access="read"></property>
<property name="Primary" type="s" access="read"></property>
<property name="CurrentCustomId" type="s" access="read"></property>
<property name="CustomIdList" type="as" access="read"></property>
<property name="MaxBacklightBrightness" type="u" access="read"></property>
<property name="PrimaryRect" type="(nnqq)" access="read">
<annotation name="org.qtproject.QtDBus.QtTypeName" value="ScreenRect"/>
</property>
<property name="Monitors" type="ao" access="read"></property>
<property name="Brightness" type="a{sd}" access="read">
<annotation name="org.qtproject.QtDBus.QtTypeName" value="BrightnessMap"/>
</property>
<property name="Touchscreens" type="a(isss)" access="read">
<annotation name="org.qtproject.QtDBus.QtTypeName" value="TouchscreenInfoList"/>
</property>
<property name="TouchscreensV2" type="a(issss)" access="read">
<annotation name="org.qtproject.QtDBus.QtTypeName" value="TouchscreenInfoList_V2"/>
</property>
<property name="TouchMap" type="a{ss}" access="read">
<annotation name="org.qtproject.QtDBus.QtTypeName" value="TouchscreenMap"/>
</property>
<property name="ColorTemperatureMode" type="i" access="read"></property>
<property name="ColorTemperatureManual" type="i" access="read"></property>
</interface>

View File

@ -0,0 +1,27 @@
<interface name="org.deepin.dde.Gesture1">
<signal name="TouchSinglePressTimeout">
<arg name="time" type="i"></arg>
<arg name="scalex" type="d"></arg>
<arg name="scaley" type="d"></arg>
</signal>
<signal name="TouchUpOrCancel">
<arg name="scalex" type="d"></arg>
<arg name="scaley" type="d"></arg>
</signal>
<signal name="TouchMoving">
<arg name="scalex" type="d"></arg>
<arg name="scaley" type="d"></arg>
</signal>
<signal name="TouchPressTimeout">
<arg name="fingers" type="i"></arg>
<arg name="time" type="i"></arg>
<arg name="scalex" type="d"></arg>
<arg name="scaley" type="d"></arg>
</signal>
<signal name="TouchEdgeEvent">
<arg name="direction" type="s"></arg>
<arg name="scalex" type="d"></arg>
<arg name="scaley" type="d"></arg>
</signal>
</interface>

View File

@ -0,0 +1,21 @@
<interface name="org.deepin.dde.Launcher1">
<property name="Visible" type="b" access="read"/>
<signal name="Closed"></signal>
<signal name="Shown"></signal>
<signal name="VisibleChanged">
<arg name="visible" type="b" direction="out"/>
</signal>
<method name="Exit"></method>
<method name="Hide"></method>
<method name="Show"></method>
<method name="ShowByMode">
<arg name="in0" type="x" direction="in"/>
</method>
<method name="UninstallApp">
<arg name="appKey" type="s" direction="in"/>
</method>
<method name="Toggle"></method>
<method name="IsVisible">
<arg type="b" direction="out"/>
</method>
</interface>

View File

@ -0,0 +1,62 @@
<interface name="org.deepin.dde.Timedate1">
<signal name="TimeUpdate">
</signal>
<method name="AddUserTimezone">
<arg type="s" direction="in"></arg>
</method>
<method name="DeleteUserTimezone">
<arg type="s" direction="in"></arg>
</method>
<method name="GetZoneInfo">
<arg type="s" direction="in"></arg>
<arg type="(ssi(xxi))" direction="out"></arg>
<annotation name="org.qtproject.QtDBus.QtTypeName.Out0" value ="ZoneInfo"/>
</method>
<method name="GetZoneList">
<arg type="as" direction="out"></arg>
</method>
<method name="GetSampleNTPServers">
<arg type="as" direction="out"></arg>
</method>
<method name="SetDate">
<arg type="i" direction="in"></arg>
<arg type="i" direction="in"></arg>
<arg type="i" direction="in"></arg>
<arg type="i" direction="in"></arg>
<arg type="i" direction="in"></arg>
<arg type="i" direction="in"></arg>
<arg type="i" direction="in"></arg>
</method>
<method name="SetLocalRTC">
<arg type="b" direction="in"></arg>
<arg type="b" direction="in"></arg>
</method>
<method name="SetNTP">
<arg type="b" direction="in"></arg>
</method>
<method name="SetNTPServer">
<arg type="s" direction="in"></arg>
</method>
<method name="SetTime">
<arg type="x" direction="in"></arg>
<arg type="b" direction="in"></arg>
</method>
<method name="SetTimezone">
<arg type="s" direction="in"></arg>
</method>
<property name="CanNTP" type="b" access="read"></property>
<property name="NTP" type="b" access="read"></property>
<property name="LocalRTC" type="b" access="read"></property>
<property name="Timezone" type="s" access="read"></property>
<property name="Use24HourFormat" type="b" access="readwrite"></property>
<property name="DSTOffset" type="i" access="readwrite"></property>
<property name="UserTimezones" type="as" access="read"></property>
<property name="NTPServer" type="s" access="read"></property>
<property name="WeekdayFormat" type="i" access="readwrite"></property>
<property name="ShortDateFormat" type="i" access="readwrite"></property>
<property name="LongDateFormat" type="i" access="readwrite"></property>
<property name="ShortTimeFormat" type="i" access="readwrite"></property>
<property name="LongTimeFormat" type="i" access="readwrite"></property>
<property name="WeekBegins" type="i" access="readwrite"></property>
</interface>

View File

@ -0,0 +1,12 @@
<interface name="org.deepin.dde.WMSwitcher1">
<method name="AllowSwitch">
<arg direction="out" type="b" name="outArg0"/>
</method>
<method name="CurrentWM">
<arg direction="out" type="s" name="outArg0"/>
</method>
<method name="RequestSwitchWM"/>
<signal name="WMChanged">
<arg type="s" name="wmName"/>
</signal>
</interface>

View File

@ -0,0 +1,63 @@
<interface name="org.deepin.dde.XEventMonitor1">
<method name="RegisterArea">
<arg type="i" direction="in"/>
<arg type="i" direction="in"/>
<arg type="i" direction="in"/>
<arg type="i" direction="in"/>
<arg type="i" direction="in"/>
<arg type="s" direction="out"/>
</method>
<method name="RegisterAreas">
<arg type="a(iiii)" direction="in"/>
<arg type="i" direction="in"/>
<arg type="s" direction="out"/>
<annotation name="org.qtproject.QtDBus.QtTypeName.In0" value="AreaList"/>
</method>
<method name="RegisterFullScreen">
<arg type="s" direction="out"/>
</method>
<method name="UnregisterArea">
<arg type="s" direction="in"/>
<arg type="b" direction="out"/>
</method>
<signal name="CursorInto">
<arg type="i"/>
<arg type="i"/>
<arg type="s"/>
</signal>
<signal name="CursorOut">
<arg type="i"/>
<arg type="i"/>
<arg type="s"/>
</signal>
<signal name="CursorMove">
<arg type="i"/>
<arg type="i"/>
<arg type="s"/>
</signal>
<signal name="ButtonPress">
<arg type="i"/>
<arg type="i"/>
<arg type="i"/>
<arg type="s"/>
</signal>
<signal name="ButtonRelease">
<arg type="i"/>
<arg type="i"/>
<arg type="i"/>
<arg type="s"/>
</signal>
<signal name="KeyPress">
<arg type="s"/>
<arg type="i"/>
<arg type="i"/>
<arg type="s"/>
</signal>
<signal name="KeyRelease">
<arg type="s"/>
<arg type="i"/>
<arg type="i"/>
<arg type="s"/>
</signal>
<signal name="CancelAllArea"/>
</interface>

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