import QtQuick
import QtQuick.Layouts
import qs.Components
import qs.Config
import qs.Helpers

CustomClippingRect {
	id: root

	default property alias contentData: clayout.data

	// Find and scroll to a section by its sectionId, then highlight a specific setting
	function scrollToSectionAndHighlight(sectionId: string, settingName: string): bool {
		// Find the section with matching sectionId
		for (let i = 0; i < clayout.children.length; i++) {
			const section = clayout.children[i];
			if (section.sectionId === sectionId) {
				// Scroll to the section with some padding
				const targetY = section.y - Appearance.padding.normal;
				flickable.contentY = Math.max(0, Math.min(targetY, flickable.contentHeight - flickable.height));

				// Use the singleton to highlight the setting
				SettingsHighlight.highlight(settingName);
				return true;
			}
		}
		return false;
	}

	radius: Appearance.rounding.normal - Appearance.padding.smaller

	CustomFlickable {
		id: flickable

		anchors.fill: parent
		clip: true
		contentHeight: clayout.implicitHeight

		TapHandler {
			acceptedButtons: Qt.LeftButton

			onTapped: function (eventPoint) {
				const menu = SettingsDropdowns.activeMenu;
				if (!menu)
					return;

				const p = eventPoint.scenePosition;

				if (SettingsDropdowns.hit(SettingsDropdowns.activeTrigger, p))
					return;

				if (SettingsDropdowns.hit(menu, p))
					return;

				SettingsDropdowns.closeActive();
			}
		}

		ColumnLayout {
			id: clayout

			anchors.left: parent.left
			anchors.right: parent.right
			spacing: Appearance.spacing.small
		}
	}
}
