// Version 5

import QtQuick 2.0
import QtQuick.Controls 2.5 as QQC2
import QtQuick.Layouts 1.0
import org.kde.kirigami 2.5 as Kirigami

/*
** Example:
**
import './libconfig' as LibConfig
LibConfig.Heading {
	text: i18n("SpinBox (Double)")
}
*/

// While the following Kirigami is very simple:
// Kirigami.Separator {
//     Kirigami.FormData.label: "Heading"
//     Kirigami.FormData.isSection: true
// }
//
// I want to be able to adjust the label size and make it bold.
// Kirigami's buddy Heading is level=3, which does not stand out
// very well. I also want to center the heading.
// Since we can't access the Heading in the buddy component, we
// need to make sure the Heading has no text, and draw our own.
ColumnLayout {
	id: heading
	spacing: 0

	property string text: ""
	property alias separator: separator
	property alias label: label
	property bool useThickTopMargin: true

	property Item __formLayout: {
		if (parent && typeof parent.wideMode === 'boolean') {
			return parent
		} else if (typeof formLayout !== 'undefined' && typeof formLayout.wideMode === 'boolean') {
			return formLayout
		} else if (typeof page !== 'undefined' && typeof page.wideMode === 'boolean') {
			return page
		} else {
			return null
		}
	}

	Layout.fillWidth: true
	// Kirigami.FormData.isSection: true
	Kirigami.MnemonicData.controlType: Kirigami.MnemonicData.FormLabel

	Kirigami.Separator {
		id: separator
		visible: false
		Layout.fillWidth: true
		Layout.topMargin: Kirigami.Units.largeSpacing
		Layout.bottomMargin: Kirigami.Units.largeSpacing
	}

	Kirigami.Heading {
		id: label
		Layout.topMargin: useThickTopMargin ? Kirigami.Units.largeSpacing * 3 : Kirigami.Units.largeSpacing
		Layout.bottomMargin: Kirigami.Units.smallSpacing
		Layout.fillWidth: true
		text: heading.text
		level: 1
		font.weight: Font.Bold
		// horizontalAlignment: (!__formLayout || __formLayout.wideMode) ? Text.AlignHCenter : Text.AlignLeft
		verticalAlignment: (!__formLayout || __formLayout.wideMode) ? Text.AlignVCenter : Text.AlignBottom
	}
}

//--- Test Default Kirigami Heading
// Kirigami.Separator {
// 	property string text: ""
// 	Kirigami.FormData.label: text
// 	Kirigami.FormData.isSection: true
// 	property alias separator: separator
// 	Item {
// 		id: separator
// 	}
// }