import QtQuick 2.10
import QtQuick.Controls 2.3
import QtQuick.Layouts 1.3
import de.skycoder42.QtMvvm.Core 1.1
import de.skycoder42.QtMvvm.Quick 1.1
import de.skycoder42.QtMvvm.Sample 1.1

Page {
	id: sampleView
	property SampleViewModel viewModel: null
	readonly property bool presentAsRoot: true

	header: ContrastToolBar {
		RowLayout {
			anchors.fill: parent
			spacing: 0

			ActionButton {
				text: "≣"
				display: AbstractButton.TextOnly
				onClicked: QuickPresenter.toggleDrawer()
			}

			ToolBarLabel {
				text: qsTr("Sample")
				Layout.fillWidth: true
			}

			MenuButton {
				MenuItem {
					text: qsTr("Another Input")
					onTriggered: viewModel.getInput()
				}
				MenuItem {
					text: qsTr("Add Files")
					onTriggered: viewModel.getFiles()
				}
				MenuItem {
					text: qsTr("Add Color")
					onTriggered: viewModel.getColor()
				}
				MenuItem {
					text: qsTr("Show Progress")
					onTriggered: viewModel.showProgress()
				}

				MenuSeparator {}

				MenuItem {
					text: qsTr("About")
					onTriggered: viewModel.about()
				}
			}
		}
	}

	PresenterProgress {}

	Pane {
		anchors.fill: parent

		GridLayout {
			columns: 2
			anchors.fill: parent

			Label {
				text: qsTr("Name:")
			}

			TextField {
				id: nameEdit
				Layout.fillWidth: true
				selectByMouse: true

				MvvmBinding {
					viewModel: sampleView.viewModel
					view: nameEdit
					viewModelProperty: "name"
					viewProperty: "text"
				}
			}

			Label {
				text: qsTr("Active:")
			}

			Switch {
				id: activeSwitch
				Layout.alignment: Qt.AlignLeft

				MvvmBinding {
					viewModel: sampleView.viewModel
					view: activeSwitch
					viewModelProperty: "active"
					viewProperty: "checked"
				}
			}

			Label {
				text: qsTr("Events:")
			}

			RowLayout {
				Layout.fillWidth: true

				Button {
					text: qsTr("&Clear")
					onClicked: viewModel.clearEvents()
				}

				Button {
					text: qsTr("Get &Result")
					onClicked: viewModel.getResult()
				}
			}

			ListView {
				id: lView
				Layout.columnSpan: 2
				Layout.fillWidth: true
				Layout.fillHeight: true
				clip: true

				ScrollBar.vertical: ScrollBar {}

				model: viewModel.eventsModel

				delegate: ItemDelegate {
					width: parent.width
					text: viewModel.eventsModel.data(viewModel.eventsModel.index(index, 0))  //because "display" is not accessible
				}
			}
		}
	}
}