Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 20 additions & 21 deletions panels/dock/package/main.qml
Original file line number Diff line number Diff line change
Expand Up @@ -19,21 +19,30 @@ Window {
id: dock
property int positionForAnimation: Panel.position
property bool useColumnLayout: positionForAnimation % 2
// TODO: 临时溢出逻辑,待后面修改
property int dockLeftSpaceForCenter: useColumnLayout ?
(Screen.height - dockLeftPart.implicitHeight - dockRightPart.implicitHeight) :
(Screen.width - dockLeftPart.implicitWidth - dockRightPart.implicitWidth)
property int dockRemainingSpaceForCenter: useColumnLayout ?
(Screen.height / 1.8 - dockRightPart.implicitHeight) :
(Screen.width / 1.8 - dockRightPart.implicitWidth)
property int dockCenterPartCount: dockCenterPartModel.count

property int dockRemainingSpaceForCenter: {
const otherCount = dockCenterPartCount - 1; // not include taskmanager
const spacing = useColumnLayout ? gridLayout.rowSpacing : gridLayout.columnSpacing;

let otherOccupied = 0;
if (otherCount > 0) {
otherOccupied = otherCount * dockItemMaxSize + otherCount * spacing;
}

if (useColumnLayout) {
return Screen.height - dockLeftPart.implicitHeight - dockRightPart.implicitHeight - otherOccupied;
} else {
return Screen.width - dockLeftPart.implicitWidth - dockRightPart.implicitWidth - otherOccupied;
}
}

property int dockPartSpacing: gridLayout.columnSpacing
// TODO
signal dockCenterPartPosChanged()
signal pressedAndDragging(bool isDragging)
signal viewDeactivated()

property int dockCenterPartCount: dockCenterPartModel.count

property int dockSize: Applet.dockSize
property int dockItemMaxSize: dockSize
property int itemIconSizeBase: 0
Expand Down Expand Up @@ -527,18 +536,8 @@ Window {

Item {
id: dockCenterPart
property var taskmanagerRootObject: {
let applet = DS.applet("org.deepin.ds.dock.taskmanager")
return applet ? applet.rootObject : null
}

readonly property real taskmanagerImplicitWidth: taskmanagerRootObject ? taskmanagerRootObject.implicitWidth : 0
readonly property real taskmanagerImplicitHeight: taskmanagerRootObject ? taskmanagerRootObject.implicitHeight : 0
readonly property real taskmanagerAppContainerWidth: taskmanagerRootObject ? taskmanagerRootObject.appContainerWidth : 0
readonly property real taskmanagerAppContainerHeight: taskmanagerRootObject ? taskmanagerRootObject.appContainerHeight : 0

implicitWidth: centerLoader.implicitWidth - taskmanagerImplicitWidth + taskmanagerAppContainerWidth
implicitHeight: centerLoader.implicitHeight - taskmanagerImplicitHeight + taskmanagerAppContainerHeight
implicitWidth: centerLoader.implicitWidth
implicitHeight: centerLoader.implicitHeight
onXChanged: dockCenterPartPosChanged()
onYChanged: dockCenterPartPosChanged()
Layout.leftMargin: !useColumnLayout && Panel.itemAlignment === Dock.CenterAlignment ?
Expand Down
43 changes: 29 additions & 14 deletions panels/dock/taskmanager/package/TaskManager.qml
Original file line number Diff line number Diff line change
Expand Up @@ -14,18 +14,17 @@ ContainmentItem {
id: taskmanager
property bool useColumnLayout: Panel.rootObject.useColumnLayout
property int dockOrder: 16
property real remainingSpacesForTaskManager: Panel.itemAlignment === Dock.LeftAlignment ? Panel.rootObject.dockLeftSpaceForCenter : Panel.rootObject.dockRemainingSpaceForCenter

property real remainingSpacesForTaskManager: Panel.rootObject.dockRemainingSpaceForCenter
readonly property int appTitleSpacing: Math.max(10, Math.round(Panel.rootObject.dockItemMaxSize * 9 / 14) / 3)
property real remainingSpacesForSplitWindow: Panel.rootObject.dockLeftSpaceForCenter - (
(Panel.rootObject.dockCenterPartCount - 1) * (visualModel.cellWidth + appTitleSpacing) + (Panel.rootObject.dockCenterPartCount) * Panel.rootObject.dockPartSpacing)
// 用于居中计算的实际应用区域尺寸
property int appContainerWidth: useColumnLayout ? Panel.rootObject.dockSize : appContainer.implicitWidth
property int appContainerHeight: useColumnLayout ? appContainer.implicitHeight : Panel.rootObject.dockSize

implicitWidth: useColumnLayout ? Panel.rootObject.dockSize : Math.max(remainingSpacesForTaskManager, appContainer.implicitWidth)
implicitHeight: useColumnLayout ? Math.max(remainingSpacesForTaskManager, appContainer.implicitHeight) : Panel.rootObject.dockSize

implicitWidth: {
let maxW = Panel.itemAlignment === Dock.LeftAlignment ? Math.max(remainingSpacesForTaskManager, appContainer.implicitWidth) : Math.min(remainingSpacesForTaskManager, appContainer.implicitWidth)
return useColumnLayout ? Panel.rootObject.dockSize : maxW
}
implicitHeight: {
let maxH = Panel.itemAlignment === Dock.LeftAlignment ? Math.max(remainingSpacesForTaskManager, appContainer.implicitHeight) : Math.min(remainingSpacesForTaskManager, appContainer.implicitHeight)
return useColumnLayout ? maxH : Panel.rootObject.dockSize
}
// Helper function to find the current index of an app by its appId in the visualModel
function findAppIndex(appId) {
for (let i = 0; i < visualModel.items.count; i++) {
Expand Down Expand Up @@ -65,7 +64,7 @@ ContainmentItem {
spacing: appContainer.spacing
cellSize: visualModel.cellWidth
itemPadding: taskmanager.appTitleSpacing
remainingSpace: taskmanager.remainingSpacesForSplitWindow
remainingSpace: taskmanager.remainingSpacesForTaskManager
font.family: D.DTK.fontManager.t6.family
font.pixelSize: Math.max(10, Math.min(20, Math.round(textCalculator.iconSize * 0.35)))
}
Expand Down Expand Up @@ -133,8 +132,24 @@ ContainmentItem {
Behavior on opacity { NumberAnimation { duration: 200 } }
Behavior on scale { NumberAnimation { duration: 200 } }

implicitWidth: useColumnLayout ? taskmanager.implicitWidth : appItem.implicitWidth
implicitHeight: useColumnLayout ? visualModel.cellWidth : taskmanager.implicitHeight
implicitWidth: {
let targetW = useColumnLayout ? taskmanager.implicitWidth : appItem.implicitWidth;
if (useColumnLayout || visualModel.count <= 0) return targetW;

let totalSpacing = Math.max(0, visualModel.count - 1) * taskmanager.appTitleSpacing;
let availableW = taskmanager.remainingSpacesForTaskManager - totalSpacing;
let maxW = availableW / visualModel.count;
return Math.min(targetW, Math.max(1, maxW));
}
implicitHeight: {
let targetH = useColumnLayout ? visualModel.cellWidth : taskmanager.implicitHeight;
if (!useColumnLayout || visualModel.count <= 0) return targetH;

let totalSpacing = Math.max(0, visualModel.count - 1) * taskmanager.appTitleSpacing;
let availableH = taskmanager.remainingSpacesForTaskManager - totalSpacing;
let maxH = availableH / visualModel.count;
return Math.min(targetH, Math.max(1, maxH));
}

property int visualIndex: DelegateModel.itemsIndex
property var modelIndex: visualModel.modelIndex(index)
Expand Down Expand Up @@ -274,7 +289,7 @@ ContainmentItem {

Component.onCompleted: {
Panel.rootObject.dockItemMaxSize = Qt.binding(function(){
return Math.min(Panel.rootObject.dockSize, Panel.rootObject.dockLeftSpaceForCenter * 1.2 / (Panel.rootObject.dockCenterPartCount - 1 + visualModel.count) - 2)
return Math.min(Panel.rootObject.dockSize, Panel.rootObject.dockRemainingSpaceForCenter * 1.2 / (Panel.rootObject.dockCenterPartCount - 1 + visualModel.count) - 2)
})
}
}
Loading