mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2026-06-08 04:09:15 -04:00
feat(control-center): add DiskUsage widget config overlay with showMountPath toggle and standardized tile sizing (#2507)
* feat(control-center): add widget config overlay with showMountPath toggle for DiskUsage Introduces WidgetConfigOverlay and DiskUsageWidgetConfigMenu components, allowing users to toggle mount path visibility per DiskUsage widget in edit mode * refactor(control-center): use Theme.iconSizeLarge and Theme.fontSizeLarge for small tiles Standardize SmallDiskUsageButton and SmallBatteryButton sizing with Theme.iconSizeLarge and Theme.fontSizeLarge, and unify font weight to Font.Bold on both tile widgets. * fix(control-center): adjust SmallDiskUsageButton font size based on showMountPath * refactor(control-center): simplify DiskUsage config menu i18n strings Remove the redundant "Disk Usage Widget" title and the toggle description to reduce translatable strings
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
import QtQuick
|
||||
import qs.Common
|
||||
import qs.Services
|
||||
|
||||
Item {
|
||||
id: root
|
||||
|
||||
property int widgetIndex: -1
|
||||
property real anchorX: 0
|
||||
property real anchorY: 0
|
||||
property real anchorWidth: 0
|
||||
property real anchorHeight: 0
|
||||
|
||||
readonly property var widgetData: {
|
||||
if (widgetIndex < 0)
|
||||
return null;
|
||||
const widgets = SettingsData.controlCenterWidgets || [];
|
||||
return widgets[widgetIndex] || null;
|
||||
}
|
||||
|
||||
visible: widgetIndex >= 0
|
||||
z: 10000
|
||||
|
||||
function open(index, data, anchorItem) {
|
||||
const pos = anchorItem.mapToItem(root, 0, 0);
|
||||
anchorX = pos.x;
|
||||
anchorY = pos.y;
|
||||
anchorWidth = anchorItem.width;
|
||||
anchorHeight = anchorItem.height;
|
||||
widgetIndex = index;
|
||||
}
|
||||
|
||||
function close() {
|
||||
widgetIndex = -1;
|
||||
}
|
||||
|
||||
function persistShowMountPath(show) {
|
||||
const widgets = (SettingsData.controlCenterWidgets || []).slice();
|
||||
if (root.widgetIndex < 0 || root.widgetIndex >= widgets.length)
|
||||
return;
|
||||
const updated = Object.assign({}, widgets[root.widgetIndex]);
|
||||
updated.showMountPath = show;
|
||||
widgets[root.widgetIndex] = updated;
|
||||
SettingsData.set("controlCenterWidgets", widgets);
|
||||
}
|
||||
|
||||
MouseArea {
|
||||
anchors.fill: parent
|
||||
enabled: root.visible
|
||||
onClicked: root.close()
|
||||
}
|
||||
|
||||
DiskUsageWidgetConfigMenu {
|
||||
id: diskMenu
|
||||
visible: root.visible && root.widgetData?.id === "diskUsage"
|
||||
widgetData: root.widgetData
|
||||
|
||||
x: {
|
||||
let nx = root.anchorX + root.anchorWidth - width;
|
||||
const maxX = root.width - width - Theme.spacingS;
|
||||
const minX = Theme.spacingS;
|
||||
if (nx < minX)
|
||||
nx = minX;
|
||||
if (nx > maxX)
|
||||
nx = maxX;
|
||||
return nx;
|
||||
}
|
||||
y: {
|
||||
let ny = root.anchorY - height - Theme.spacingS;
|
||||
if (ny < Theme.spacingS)
|
||||
ny = root.anchorY + root.anchorHeight + Theme.spacingS;
|
||||
return ny;
|
||||
}
|
||||
|
||||
onShowMountPathChanged: show => root.persistShowMountPath(show)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user