import QtQuick
import Quickshell
import Quickshell.Wayland
import qs.Commons
import qs.Services.UI
import qs.Modules.Bar


/**
 * BarContentWindow - Separate transparent PanelWindow for bar content
 *
 * This window contains only the bar widgets (content), while the background
 * is rendered in MainScreen's unified Shape system. This separation prevents
 * fullscreen redraws when bar widgets redraw.
 *
 * This component should be instantiated once per screen by AllScreens.qml
 */
PanelWindow {
  id: barWindow

  // Note: screen property is inherited from PanelWindow and should be set by parent
  color: Color.transparent // Transparent - background is in MainScreen below

  Component.onCompleted: {
    Logger.d("BarContentWindow", "Bar content window created for screen:", barWindow.screen?.name)
  }

  // Wayland layer configuration
  WlrLayershell.namespace: "noctalia-bar-content-" + (barWindow.screen?.name || "unknown")
  WlrLayershell.layer: WlrLayer.Top
  WlrLayershell.exclusionMode: ExclusionMode.Ignore // Don't reserve space - BarExclusionZone in MainScreen handles that

  // Position and size to match bar location
  readonly property string barPosition: Settings.data.bar.position || "top"
  readonly property bool barIsVertical: barPosition === "left" || barPosition === "right"
  readonly property bool barFloating: Settings.data.bar.floating || false
  readonly property real barMarginH: Math.round(barFloating ? Settings.data.bar.marginHorizontal * Style.marginXL : 0)
  readonly property real barMarginV: Math.round(barFloating ? Settings.data.bar.marginVertical * Style.marginXL : 0)

  // Anchor to the bar's edge
  anchors {
    top: barPosition === "top" || barIsVertical
    bottom: barPosition === "bottom" || barIsVertical
    left: barPosition === "left" || !barIsVertical
    right: barPosition === "right" || !barIsVertical
  }

  // Handle floating margins
  margins {
    top: barPosition === "top" || barIsVertical ? barMarginV : 0
    bottom: barPosition === "bottom" || barIsVertical ? barMarginV : 0
    left: barPosition === "left" || !barIsVertical ? barMarginH : 0
    right: barPosition === "right" || !barIsVertical ? barMarginH : 0
  }

  // Set a tight window size
  implicitWidth: barIsVertical ? Style.barHeight : barWindow.screen.width
  implicitHeight: barIsVertical ? barWindow.screen.height : Style.barHeight

  // Bar content - just the widgets, no background
  Bar {
    anchors.fill: parent
    screen: barWindow.screen
  }
}
