mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2026-01-28 23:42:51 -05:00
dankbar: fix even widget position
This commit is contained in:
@@ -32,12 +32,42 @@ Item {
|
|||||||
totalWidgets = 0
|
totalWidgets = 0
|
||||||
totalSize = 0
|
totalSize = 0
|
||||||
|
|
||||||
|
let configuredWidgets = 0
|
||||||
|
let configuredMiddleWidget = null
|
||||||
|
let configuredLeftWidget = null
|
||||||
|
let configuredRightWidget = null
|
||||||
|
|
||||||
for (var i = 0; i < centerRepeater.count; i++) {
|
for (var i = 0; i < centerRepeater.count; i++) {
|
||||||
const item = centerRepeater.itemAt(i)
|
const item = centerRepeater.itemAt(i)
|
||||||
if (item && getWidgetVisible(item.widgetId) && item.active && item.item) {
|
if (item && getWidgetVisible(item.widgetId)) {
|
||||||
centerWidgets.push(item.item)
|
configuredWidgets++
|
||||||
totalWidgets++
|
}
|
||||||
totalSize += isVertical ? item.item.height : item.item.width
|
}
|
||||||
|
|
||||||
|
const isOddConfigured = configuredWidgets % 2 === 1
|
||||||
|
const configuredMiddlePos = Math.floor(configuredWidgets / 2)
|
||||||
|
const configuredLeftPos = isOddConfigured ? -1 : ((configuredWidgets / 2) - 1)
|
||||||
|
const configuredRightPos = isOddConfigured ? -1 : (configuredWidgets / 2)
|
||||||
|
let currentConfigIndex = 0
|
||||||
|
|
||||||
|
for (var i = 0; i < centerRepeater.count; i++) {
|
||||||
|
const item = centerRepeater.itemAt(i)
|
||||||
|
if (item && getWidgetVisible(item.widgetId)) {
|
||||||
|
if (isOddConfigured && currentConfigIndex === configuredMiddlePos && item.active && item.item) {
|
||||||
|
configuredMiddleWidget = item.item
|
||||||
|
}
|
||||||
|
if (!isOddConfigured && currentConfigIndex === configuredLeftPos && item.active && item.item) {
|
||||||
|
configuredLeftWidget = item.item
|
||||||
|
}
|
||||||
|
if (!isOddConfigured && currentConfigIndex === configuredRightPos && item.active && item.item) {
|
||||||
|
configuredRightWidget = item.item
|
||||||
|
}
|
||||||
|
if (item.active && item.item) {
|
||||||
|
centerWidgets.push(item.item)
|
||||||
|
totalWidgets++
|
||||||
|
totalSize += isVertical ? item.item.height : item.item.width
|
||||||
|
}
|
||||||
|
currentConfigIndex++
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -49,11 +79,12 @@ Item {
|
|||||||
totalSize += spacing * (totalWidgets - 1)
|
totalSize += spacing * (totalWidgets - 1)
|
||||||
}
|
}
|
||||||
|
|
||||||
positionWidgets()
|
positionWidgets(configuredWidgets, configuredMiddleWidget, configuredLeftWidget, configuredRightWidget)
|
||||||
}
|
}
|
||||||
|
|
||||||
function positionWidgets() {
|
function positionWidgets(configuredWidgets, configuredMiddleWidget, configuredLeftWidget, configuredRightWidget) {
|
||||||
const parentCenter = (isVertical ? height : width) / 2
|
const parentCenter = (isVertical ? height : width) / 2
|
||||||
|
const isOddConfigured = configuredWidgets % 2 === 1
|
||||||
|
|
||||||
centerWidgets.forEach(widget => {
|
centerWidgets.forEach(widget => {
|
||||||
if (isVertical) {
|
if (isVertical) {
|
||||||
@@ -63,29 +94,12 @@ Item {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
if (totalWidgets === 1) {
|
if (isOddConfigured) {
|
||||||
const widget = centerWidgets[0]
|
if (!configuredMiddleWidget) {
|
||||||
const size = isVertical ? widget.height : widget.width
|
return
|
||||||
if (isVertical) {
|
|
||||||
widget.y = parentCenter - (size / 2)
|
|
||||||
} else {
|
|
||||||
widget.x = parentCenter - (size / 2)
|
|
||||||
}
|
}
|
||||||
} else if (totalWidgets === 2) {
|
const middleWidget = configuredMiddleWidget
|
||||||
const firstWidget = centerWidgets[0]
|
const middleIndex = centerWidgets.indexOf(middleWidget)
|
||||||
const secondWidget = centerWidgets[1]
|
|
||||||
const firstSize = isVertical ? firstWidget.height : firstWidget.width
|
|
||||||
|
|
||||||
if (isVertical) {
|
|
||||||
firstWidget.y = parentCenter - (firstSize / 2)
|
|
||||||
secondWidget.y = firstWidget.y + firstSize + spacing
|
|
||||||
} else {
|
|
||||||
firstWidget.x = parentCenter - (firstSize / 2)
|
|
||||||
secondWidget.x = firstWidget.x + firstSize + spacing
|
|
||||||
}
|
|
||||||
} else if (totalWidgets % 2 === 1) {
|
|
||||||
const middleIndex = Math.floor(totalWidgets / 2)
|
|
||||||
const middleWidget = centerWidgets[middleIndex]
|
|
||||||
const middleSize = isVertical ? middleWidget.height : middleWidget.width
|
const middleSize = isVertical ? middleWidget.height : middleWidget.width
|
||||||
|
|
||||||
if (isVertical) {
|
if (isVertical) {
|
||||||
@@ -116,12 +130,16 @@ Item {
|
|||||||
currentPos += isVertical ? centerWidgets[i].height : centerWidgets[i].width
|
currentPos += isVertical ? centerWidgets[i].height : centerWidgets[i].width
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
const leftIndex = (totalWidgets / 2) - 1
|
if (!configuredLeftWidget || !configuredRightWidget) {
|
||||||
const rightIndex = totalWidgets / 2
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
const leftWidget = configuredLeftWidget
|
||||||
|
const rightWidget = configuredRightWidget
|
||||||
|
const leftIndex = centerWidgets.indexOf(leftWidget)
|
||||||
|
const rightIndex = centerWidgets.indexOf(rightWidget)
|
||||||
const halfSpacing = spacing / 2
|
const halfSpacing = spacing / 2
|
||||||
|
|
||||||
const leftWidget = centerWidgets[leftIndex]
|
|
||||||
const rightWidget = centerWidgets[rightIndex]
|
|
||||||
const leftSize = isVertical ? leftWidget.height : leftWidget.width
|
const leftSize = isVertical ? leftWidget.height : leftWidget.width
|
||||||
|
|
||||||
if (isVertical) {
|
if (isVertical) {
|
||||||
|
|||||||
Reference in New Issue
Block a user