16 changed files with 279 additions and 23 deletions
			
			
		@ -0,0 +1,42 @@ | 
				
			|||||
 | 
					import QtQuick 2.10 | 
				
			||||
 | 
					import QtQuick.Controls 2.3 | 
				
			||||
 | 
					import QtQuick.Layouts 1.3 | 
				
			||||
 | 
					import de.skycoder42.QtMvvm.Core 1.0 | 
				
			||||
 | 
					import de.skycoder42.QtMvvm.Quick 1.0 | 
				
			||||
 | 
					import de.skycoder42.quickextras 2.0 | 
				
			||||
 | 
					import de.skycoder42.QtMvvm.Sample 1.0 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					AlertDialog { | 
				
			||||
 | 
						id: resultDialog | 
				
			||||
 | 
					
 | 
				
			||||
 | 
						property ResultViewModel viewModel: null | 
				
			||||
 | 
					
 | 
				
			||||
 | 
						title: qsTr("Enter something") | 
				
			||||
 | 
					
 | 
				
			||||
 | 
						ColumnLayout { | 
				
			||||
 | 
							anchors.fill: parent | 
				
			||||
 | 
					
 | 
				
			||||
 | 
							Label { | 
				
			||||
 | 
								text: qsTr("Enter a result to be reported as event to the main view:") | 
				
			||||
 | 
								wrapMode: Text.WordWrap | 
				
			||||
 | 
								Layout.fillWidth: true | 
				
			||||
 | 
							} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
							TextField { | 
				
			||||
 | 
								id: resultEdit | 
				
			||||
 | 
								Layout.fillWidth: true | 
				
			||||
 | 
								selectByMouse: true | 
				
			||||
 | 
					
 | 
				
			||||
 | 
								MvvmBinding { | 
				
			||||
 | 
									viewModel: resultDialog.viewModel | 
				
			||||
 | 
									viewModelProperty: "result" | 
				
			||||
 | 
									view: resultEdit | 
				
			||||
 | 
									viewProperty: "text" | 
				
			||||
 | 
								} | 
				
			||||
 | 
							} | 
				
			||||
 | 
						} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
						standardButtons: Dialog.Ok | Dialog.Cancel | 
				
			||||
 | 
					
 | 
				
			||||
 | 
						onAccepted: viewModel.done() | 
				
			||||
 | 
					} | 
				
			||||
@ -1,11 +1,114 @@ | 
				
			|||||
import QtQuick 2.10 | 
					import QtQuick 2.10 | 
				
			||||
 | 
					import QtQuick.Controls 2.3 | 
				
			||||
 | 
					import QtQuick.Layouts 1.3 | 
				
			||||
 | 
					import de.skycoder42.QtMvvm.Core 1.0 | 
				
			||||
 | 
					import de.skycoder42.QtMvvm.Quick 1.0 | 
				
			||||
 | 
					import de.skycoder42.quickextras 2.0 | 
				
			||||
 | 
					import de.skycoder42.QtMvvm.Sample 1.0 | 
				
			||||
 | 
					
 | 
				
			||||
Rectangle { | 
					Page { | 
				
			||||
	property QtObject viewModel: null | 
						id: sampleView | 
				
			||||
 | 
						property SampleViewModel viewModel: null | 
				
			||||
 | 
					
 | 
				
			||||
	anchors.fill: parent | 
						header: ActionBar { | 
				
			||||
 | 
							showMenuButton: false | 
				
			||||
 | 
							title: qsTr("Sample") | 
				
			||||
 | 
					
 | 
				
			||||
	color: "red" | 
							moreMenu: Menu { | 
				
			||||
 | 
								Action { | 
				
			||||
 | 
									text: qsTr("Another &Input") | 
				
			||||
 | 
									onTriggered: viewModel.getInput() | 
				
			||||
 | 
								} | 
				
			||||
 | 
								Action { | 
				
			||||
 | 
									text: qsTr("Add &Files") | 
				
			||||
 | 
									onTriggered: viewModel.getFiles() | 
				
			||||
 | 
								} | 
				
			||||
 | 
					
 | 
				
			||||
	Component.onCompleted: console.log(viewModel) | 
								MenuSeparator {} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
								Action { | 
				
			||||
 | 
									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 | 
				
			||||
 | 
									} | 
				
			||||
 | 
								} | 
				
			||||
 | 
							} | 
				
			||||
 | 
						} | 
				
			||||
} | 
					} | 
				
			||||
 | 
				
			|||||
@ -0,0 +1,20 @@ | 
				
			|||||
 | 
					{ | 
				
			||||
 | 
					    "dependencies": [ | 
				
			||||
 | 
					        { | 
				
			||||
 | 
					            "package": "de.skycoder42.quickextras", | 
				
			||||
 | 
					            "provider": "qpm", | 
				
			||||
 | 
					            "version": "2.1.0" | 
				
			||||
 | 
					        } | 
				
			||||
 | 
					    ], | 
				
			||||
 | 
					    "license": { | 
				
			||||
 | 
					        "file": "", | 
				
			||||
 | 
					        "name": "" | 
				
			||||
 | 
					    }, | 
				
			||||
 | 
					    "prcFile": "", | 
				
			||||
 | 
					    "priFile": "", | 
				
			||||
 | 
					    "priIncludes": [ | 
				
			||||
 | 
					    ], | 
				
			||||
 | 
					    "publishers": { | 
				
			||||
 | 
					    }, | 
				
			||||
 | 
					    "source": false | 
				
			||||
 | 
					} | 
				
			||||
@ -0,0 +1,30 @@ | 
				
			|||||
 | 
					import QtQuick 2.10 | 
				
			||||
 | 
					import QtQuick.Controls 2.3 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					QtObject { | 
				
			||||
 | 
						id: _popPresenter | 
				
			||||
 | 
					
 | 
				
			||||
 | 
						property var popups: [] | 
				
			||||
 | 
					
 | 
				
			||||
 | 
						function presentPopup(root, popup) { | 
				
			||||
 | 
							popup.parent = root; | 
				
			||||
 | 
							popup.closed.connect(function() { | 
				
			||||
 | 
								var index = popups.indexOf(popup); | 
				
			||||
 | 
								if(index > -1) { | 
				
			||||
 | 
									popup.destroy(); | 
				
			||||
 | 
									popups.splice(index, 1); | 
				
			||||
 | 
								} | 
				
			||||
 | 
							}); | 
				
			||||
 | 
							popup.open(); | 
				
			||||
 | 
							popups.push(popup); | 
				
			||||
 | 
							return true; | 
				
			||||
 | 
						} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
						function closeAction() { | 
				
			||||
 | 
							if(popups.length > 0) { | 
				
			||||
 | 
								popups[popups.length - 1].close(); | 
				
			||||
 | 
								return true; | 
				
			||||
 | 
							} else | 
				
			||||
 | 
								return false; | 
				
			||||
 | 
						} | 
				
			||||
 | 
					} | 
				
			||||
					Loading…
					
					
				
		Reference in new issue